Merge pull request #1 from LCTT/master

update from LCTT
This commit is contained in:
Figaro Cao 2023-01-06 21:40:27 +08:00 committed by GitHub
commit 8e5b7db606
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2322 changed files with 236284 additions and 116312 deletions

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1 @@
blank_issues_enabled: true

18
.github/ISSUE_TEMPLATE/questions.yml vendored Normal file
View File

@ -0,0 +1,18 @@
name: Ask Questions | 提问
description: Please describe your problem. | 请描述您的问题。
labels: ["question"]
assignees: []
body:
- type: markdown
attributes:
value: |
Please answer these questions before you submit the desired feature. | 请在您提交期望的功能之前,回答以下这些问题
- type: textarea
attributes:
label: Your Questions
description: Please describe your problem. | 请描述您的问题。
placeholder: I have a question...
validations:
required: true

67
.github/ISSUE_TEMPLATE/topics.yml vendored Normal file
View File

@ -0,0 +1,67 @@
name: 推荐选题
description: 推荐一个选题
title: "[推荐类型] 文章日期 文章标题"
labels: []
assignees:
- lkxed
body:
- type: markdown
attributes:
value: |
标题请使用 **`[推荐类型] 文章日期 文章标题`** 格式,选题类型、文章日期和文章标题中间有一个 **空格**。
完整示例:
- [推荐选题] 20220823 The Lost Art of the Makefile
- [推荐选题] 20220905 Linus Torvalds Uses Apple MacBook Hardware to Release Linux Kernel 5.19
- type: input
id: url
attributes:
label: 原文链接地址
description: 填写原文章的链接地址
placeholder: https://......
validations:
required: true
- type: dropdown
id: terms
attributes:
label: 版权协议
description: 填写原文章的版权协议
multiple: false
options:
- CC-SA-BY
- 其它公域许可证
- 已获取作者授权
validations:
required: true
- type: dropdown
id: difficulty
attributes:
label: 文章难度
description: 选择文章的难度
multiple: false
options:
- 困难
- 一般
- 容易
validations:
required: true
- type: dropdown
id: category
attributes:
label: 文章分类
description: 选择文章的分类
multiple: false
options:
- 新闻news
- 观点talk
- 技术tech
validations:
required: true
- type: textarea
id: reason
attributes:
label: 推荐理由
description: 填写你的推荐理由
placeholder:
validations:
required: false

42
lctt2022.md Normal file
View File

@ -0,0 +1,42 @@
开源贡献者翻译组 LCTT 九岁啦
======
九年前,也是这个上午,我创建了 LCTT 及其第一个项目 [TranslateProject](https://github.com/LCTT/TranslateProject/)。从最初只是有感于 Unix/Linux 上的中文手册页实在太糟糕,希望做一些事情;到最后变成了一个以翻译国外各个开源社区的技术文章和开源资讯/讨论的“流水”式项目LCTT 已经走过了令我自己都非常吃惊的九年。
人的一生几十年而已能在一件事上持续投入九年时光这是我从未想过的事情。驻足回望LCTT 其实并没有完成我最初的想法,这是缺憾;但是 LCTT 就这样变成了另外一种并非在我计划中的样子或许也有其必然性。现在看来LCTT 做了一些事情,也有一些存在的意义。我试着总结一下:
LCTT 的主项目 TranslateProject选题广泛参与门槛低从某种意义上为初识开源的小伙伴提供一种成为开源贡献者的方式。一些人就是通过这个项目迈出了成为开源贡献者的第一步并在日后的学习和工作中成为了开源爱好者、专业技术人员。
LCTT 持续翻译了数千篇(截至今日,已经翻译发布了 6395 篇文章),这些文章的专业程度横跨了入门到精通等不同难度,内容方向涉猎了开发、运维、使用和文化等各个方面。虽然,有些文章仅堪一读,但也有不少文章值得收藏、一再细读。我屡屡能从读者那里得到反馈,这些文章对他们提供了很大的帮助,我想这就是 LCTT 的存世价值之一吧。唯独可惜的是,这些文章,没有以很好的方式组织起来,甚憾。
LCTT 有数百成员(截至今日,成功地在仓库中进行了贡献的贡献者有 311 位),他们的年龄不等,最年轻的有初中的学生、最老的,嗯这个不需要说了;他们的职业各异,比较多的是大学生,也有很多从事技术工作的专业人员,甚至还有完全不从事技术工作的贡献者。但是,他们都有一个共同的身份就是 LCTT 贡献者,因此,他们都有很多开源兄弟姐妹。
按照惯例,每两年,我会写一篇 LCTT 总结。今年又快到这个时间了我却有些不知道该如何下笔。恍惚间我突然想到LCTT 是一个贡献者组织,是大家的 LCTT那么为什么不让大家来为 LCTT 写两句话呢?于是,我在 LCTT 群内发起了号召,请诸位成员写写自己参与 LCTT 的经历、感受或收获,也可以是祝愿、建议。下面,是我收集到的其中一些成员的留言(以留言时的顺序列出):
- **译者-acyanbird**Linux 中国是我的开源引路人,让我有机会从零开始参与开源社区,认识到了开源精神,见到了世界的另一个可能性。也借此机会参与不少活动,认识了很多开源人士。目前在组长的帮助下,我也开始自己建立社区,十分感谢您给我这个机会~希望我们都越来越好,有更多的人也来一起参与开源
- **译者-mandeler**LCTT community forever
- **译者-Kira-Pgr**For a better open source world!
- **译者-mengxinayan**LCTT 不仅可以用来锻炼翻译能力同时有专人进行校对能有效找到自身不足。此外还可以用来接触新知新方向最重要的是可以培养自身英文阅读的习惯。Thanks LCTT
- **译者-aftermath0703**:从 LCTT 我收获到了许多知识,有时间我就会去 GitHub 上读读新的文章,有更多时间我就会去翻译一篇。翻译过程中先自己翻译一遍,再用翻译网站翻译一遍,有偏差的地方相互比对,我觉得这对我的各项英语能力都有很大的帮助。希望 LCTT 蓬勃发展,越办越好!
- **译者-MFGJT**:虽然因为工作原因很久没有翻译了,但是还是每天在看微信公众号。感觉到大家都很努力,希望今年有机会继续参加翻译 🌹
- **译者-stevending1st**:加入 LCTT 最大的惊叹是核心贡献者能够做到维护一个几百人的贡献者群体,背后是他们巨大的努力。希望能在 LCTT 不断学习,努力提升自己的能力。也祝愿 LCTT 越来越好。
- **译者-aREversez**:作为一个学翻译的学生,能参与到 LCTT 这样一个项目,了解更多关于开源与技术的知识,见识更宽阔的世界和更深远的历史,让自己能尽己所能为开源贡献一份力量,实属荣幸之至。希望咱们社区能够一直繁荣下去,传播更加丰富多彩的开源技术与思想!
- **译者-mcfd**LCTT 翻译的许多实用的技术文章,能够简明、易懂地为广大小白答疑解惑,扫除学习、日常中遇到的坑,间接且不断地为开源社区注入生机。清风不解凌云志,明月无声照九州​。
- **核心-lkxed**:在裸辞考研失败之后,我曾一度陷入迷茫。偶然间读到老王写的《如何以翻译贡献参与开源社区》,决心加入进来。自此,我从一个连 Git 和 GitHub 都搞不大懂的小白,成长为一名熟练的译者,又成长为一名熟练的选题。踏踏实实地做好一件小事,每天如此,不正是对抗焦虑和迷茫的好办法吗?感谢开源,给了我这个成长的机会;感谢 LCTT领着我敲开了开源的大门感谢老王在我困惑时指点迷津。祝愿 LCTT 越办越好,我们一路与你同行!
- **核心-bestony**:刚刚专门回到网站上看了一下,我参与 LCTT 已经 8 年了8 年来LCTT 见证了我从小透明到半透明,也经历了我人生的三分之一。希望在未来的时间里,我可以和 LCTT 共成长,也可以与 LCTT 共人生。
- **核心-Locez**:今天是 LCTT 的生日也是我的生日一种奇妙的缘分。LCTT 是我接触 LC接触开源以后第一个比较正式贡献的项目对我来说意义比较非凡重要的是通过这个项目在 LC 以及 LCTT 结识到了热爱分享的大家特别是老王vizbestony 等人,很感谢大家在我学生时代起,就对我的一些耐心引导与帮助。
- **译者-robsean**:科教兴国,实干兴邦
- **译者-TravinDreek**:作为一位自由软件活动者,我主要从事技术伦理相关文章的翻译。我在 LCTT 的翻译动机,不止在于增进自己对当今技术伦理问题的认识,更在于让人们有机会了解到并利用自由(和开源)软件来应对这些问题。希望 LCTT 今后能在传播 FLOSS 方面起到更大的作用。Happy hacking.
- **译者-Wlzzzz-del**:之前备考考研时,偶然接触到 LCTT。为了多了解一些 Linux 知识,同时提高自己的英语水平,因此选择加入了 LCTT这也是我第一次参与开源项目。虽然因为很多原因翻译的文章不多但是 LCTT 发布的文章我都会认真阅读。在未来我希望能多抽出时间来,参与到翻译活动中来。
- **译者-Veryzzj**:今年年初在朋友的介绍下认识了 LCTT 并参与到了其中,仔细回想 LCTT 的意义于我是什么?是打破开源项目于我的神秘面纱,是从申领到翻译每一篇收获的成就感,是发布了文章感受到的正反馈,是在翻译群中和大家交流时的友好气氛。正是这些点滴,是我对抗生命无意义感的武器。我们用语言打破边界,也用语言拓宽世界。预祝 LCTT 越来越好!
- **译者-Chao-zhi**:加入 LCTT 已经六年了,我已经不记得自己是怎么加入 LCTT 了。但我一直记得我是通过 LCTT 的 wiki 学会使用 GitHub 的。也是通过 LCTT 慢慢了解开源世界的。希望能继续和 LCTT 一起成长。
- **核心-MjSeven**:但愿 LCTT 长久,千里共婵娟
- **译者-mudongliang**LCTT 是早期我参与的开源项目,通过这个项目我学会了很多开源知识,熟练使用 Git 使用,为后期在内核项目贡献,奠定了坚实基础 😁
- **译者-Northurland**:感谢 LC 治好了我的网友见面恐惧症(笑)。这是我在校园外参与的第一个项目,很感谢组长和 LC 的大家给予我这个机会。希望我们珍视的这个社区在未来能让更多人了解开源、参与开源。
说实话LCTT 和 Linux 中国能走到今天,全赖这些贡献者的支持,这让我每每感觉吃力时,都有了不能放弃的理由。
那么,你是不是也想加入 LCTT 呢?很简单,访问 LCTT 官网https://linux.cn/lctt/ 即可了解如何成为一名 LCTT 贡献者了。
最后,感谢大家九年来的支持和信任!顺祝大家中秋节、教师节快乐!

View File

@ -0,0 +1,176 @@
[#]: collector: (lujun9972)
[#]: translator: (FigaroCao)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-14011-1.html)
[#]: subject: (Using Powershell to automate Linux, macOS, and Windows processes)
[#]: via: (https://opensource.com/article/20/2/devops-automation)
[#]: author: (Willy-Peter Schaub https://opensource.com/users/wpschaub)
使用 Powershell 来自动化 Linux、macOS 以及 Windows 流程
======
> 自动化是 DevOps 的关键,但是,是否任何事都可以自动化?
![](https://img.linux.net.cn/data/attachment/album/202111/23/123000eexe7iez7wsew72e.jpg)
自动化控制了那些手工的、费力的和容易出错的过程,用运行自动化脚本的计算机代替了执行手工任务的工程师。每个人都认同手工流程是健康的 DevOps 模式的敌人。一些人认为自动化不是一件好事,因为它取代了辛勤工作的工程师,而另一些人则意识到它提高了一致性、可靠性和效率,节省了时间,(最重要的是)使工程师能够聪明地工作。
> “DevOps 并不只是自动化或者基础架构即代码。” — [Donovan Brown][2]
自从上个世纪 80 年代早期开始使用自动化流程和工具链以来,每当我听到或读到“自动化一切”的建议时,我总是会激动不已。虽然在技术上可以实现一切自动化,但自动化是复杂的,并且需要付出开发、调试和维护方面的代价。如果你曾经重新启用一个许久不用的 Azure 资源管理器ARM模板或很久以前编写的宝贵维护脚本并期望它在几个月或几年之后仍然能够完美地执行那么你就会明白自动化就像任何其他代码一样是脆弱的需要持续的维护和培养。
所以,你应该对什么进行自动化并在何时进行自动化?
* 当你手动执行自动化流程超过一两次
* 当你需要经常地持续地执行自动化流程
* 自动化任何可被自动化的
更重要的是,什么是你不应该自动化的?
* 不要自动化一次性的流程,因为不值得投入,除非你会重新使用它作为参考文档,并定期验证它的可用性
* 不要自动化高度不稳定的流程,因为太复杂且昂贵
* 不要自动化有问题的流程,在自动化前先修复它们
举例来说,我的团队使用我们通用的协作和工程系统来不断的监控数百个用户活动。如果一个用户在三个月或者更长时间处于非活动状态,并且这个用户被分配了一个昂贵的许可证,我们就会重分配这个用户一个功能少一些但是免费的许可证。
如图 1 所示,这是一个没有技术挑战性的流程。这是一个令人费解且容易出错的过程,尤其是在执行上下文时与其他开发和运维任务切换时。
![Manual process to switch user license][3]
*图 1 手工流程切换用户许可证*
顺带的,这里有一个用简单三步创建的价值流图的例子:
1. 可视化所有活动: 列出用户、过滤用户、重置许可证。
2. 确定利益相关者,即运营和授权团队。
3. 措施:
* 总交货时间TLT= 13 小时
* 总周期时间TCT = 1.5 小时
* 总效率百分比 = TLT/TCT*100 = 11.5%
如果你在人群流量大和容易看到的区域挂一个这些可视化的副本,比如在你的团队的讨论区、餐厅,或在去洗手间的路上,你将引发大量的讨论和主动反馈。例如,从视觉上看,很明显,手工任务是一种浪费,主要是由于漫长的流程等待时间造成的。
让我们研究一个简单的 PowerShell 脚本,它可以自动化该流程,如图 2 所示,将总交付时间从 13 小时减少到 4 小时加 60 秒,并将总体效率从 11.5 提高到 12.75%。
![Semi-automated PowerShell-based process to switch user license][4]
*图 2 半自动化的 PowerShell 脚本切换用户许可*
[PowerShell][5] 是一种开源的基于任务的脚本语言。它可以在 [GitHub][6] 上找到。它构建在 .NET 上,允许你自动化 Linux、macOS 和 Windows 流程。具有开发背景的用户,特别是 C# 用户,将享受到 PowerShell 的全部好处。
下面的 PowerShell 脚本示例通过它的服务 [REST API][8] 与 [Azure DevOps][7] 进行通信。脚本结合了在图 1 中的手动列表用户和过滤用户任务,识别了 Demo 组织中的所有两个月没有活动的、使用基本许可证或更昂贵的基本+测试许可证的用户,并将用户的详细信息输出到控制台。很简单!
首先,设置认证标头和其他变量,这些变量将在稍后的初始化脚本中使用:
```
param(
[string] $orgName = "DEMO",
[int] $months = "-2",
[string] $patToken = "<PAT>"
)
# Basic authentication header using the personal access token (PAT)
$basicAuth = ("{0}:{1}" -f "",$patToken)
$basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth)
$basicAuth = [System.Convert]::ToBase64String($basicAuth)
$headers = @{Authorization=("Basic {0}" -f $basicAuth)}
# REST API Request to get all entitlements
$request_GetEntitlements = "https://vsaex.dev.azure.com/" + $orgName + "/_apis/userentitlements?top=10000&api-version=5.1-preview.2";
# Initialize data variables
$members = New-Object System.Collections.ArrayList
[int] $count = 0;
[string] $basic = "Basic";
[string] $basicTest = "Basic + Test Plans";
```
接下来,使用此脚本查询所有授权,以识别不活动用户:
```
# Send the REST API request and initialize the members array list.
$response = Invoke-RestMethod -Uri $request_GetEntitlements -headers $headers -Method Get
$response.items | ForEach-Object { $members.add($_.id) | out-null }
# Iterate through all user entitlements
$response.items | ForEach-Object {
$name = [string]$_.user.displayName;
$date = [DateTime]$_.lastAccessedDate;
$expired = Get-Date;
$expired = $expired.AddMonths($months);
$license = [string]$_.accessLevel.AccountLicenseType;
$licenseName = [string]$_.accessLevel.LicenseDisplayName;
$count++;
if ( $expired -gt $date ) {
# Ignore users who have NEVER or NOT YET ACTIVATED their license
if ( $date.Year -eq 1 ) {
Write-Host " **INACTIVE** " " Name: " $name " Last Access: " $date "License: " $licenseName
}
# Look for BASIC license
elseif ( $licenseName -eq $basic ) {
Write-Host " **INACTIVE** " " Name: " $name " Last Access: " $date "License: " $licenseName
}
# Look for BASIC + TEST license
elseif ( $licenseName -eq $basicTest ) {
Write-Host " **INACTIVE** " " Name: " $name " Last Access: " $date "License: " $licenseName
}
}
}
```
当你运行脚本时,你将得到以下输出,你可以将其转发给授权团队,以重置用户许可证:
```
**INACTIVE** Name: Demo1 Last Access: 2019/09/06 11:01:26 AM License: Basic
**INACTIVE** Name: Demo2 Last Access: 2019/06/04 08:53:15 AM License: Basic
**INACTIVE** Name: Demo3 Last Access: 2019/09/26 12:54:57 PM License: Basic
**INACTIVE** Name: Demo4 Last Access: 2019/06/07 12:03:18 PM License: Basic
**INACTIVE** Name: Demo5 Last Access: 2019/07/18 10:35:11 AM License: Basic
**INACTIVE** Name: Demo6 Last Access: 2019/10/03 09:21:20 AM License: Basic
**INACTIVE** Name: Demo7 Last Access: 2019/10/02 11:45:55 AM License: Basic
**INACTIVE** Name: Demo8 Last Access: 2019/09/20 01:36:29 PM License: Basic + Test Plans
**INACTIVE** Name: Demo9 Last Access: 2019/08/28 10:58:22 AM License: Basic
```
如果你将最后一步自动化自动将用户许可设置为一个自由的利益相关方许可如图3所示你可以进一步将总体交付时间减少到65秒并将总体效率提高到77%。
![Fully automated PowerShell-based process to switch user license][9]
*图 3 完全自动化的基于 Powershell 的流程来切换用户许可证。*
这个 PowerShell 脚本的核心价值不仅在于能够实现 _自动化_,还在于能够 _定期_、_持续_ 和 _快速地_ 执行这个流程。进一步的改进是使用 Azure 管道等调度器每周或每天触发脚本,但我将把程序化的许可证重置和脚本调度保留在未来的文章中。
这里有一个图表,可以直观地看到进展情况:
![Graph to visualize progress][10]
*图 4措施措施措施*
我希望你能喜欢这个简短的关于自动化、PowerShell、REST API 和价值流图的介绍。请在评论中分享你的想法和反馈。
------
via: https://opensource.com/article/20/2/devops-automation
作者:[Willy-Peter Schaub][a]
选题:[lujun9972][b]
译者:[FigaroCao](https://github.com/FigaroCao)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/wpschaub
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/cicd_continuous_delivery_deployment_gears.png?itok=kVlhiEkc (CICD with gears)
[2]: http://www.donovanbrown.com/post/what-is-devops
[3]: https://opensource.com/sites/default/files/uploads/devops_quest_to_automate_1.png (Manual process to switch user license)
[4]: https://opensource.com/sites/default/files/uploads/the_devops_quest_to_automate_everything_automatable_using_powershell_picture_2.png (Semi-automated PowerShell-based process to switch user license)
[5]: https://opensource.com/article/19/8/variables-powershell
[6]: https://github.com/powershell/powershell
[7]: https://docs.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops?view=azure-devops
[8]: https://docs.microsoft.com/en-us/rest/api/azure/devops/?view=azure-devops-rest-5.1
[9]: https://opensource.com/sites/default/files/uploads/devops_quest_to_automate_3.png (Fully automated PowerShell-based process to switch user license)
[10]: https://opensource.com/sites/default/files/uploads/devops_quest_to_automate_4.png (Graph to visualize progress)

View File

@ -0,0 +1,99 @@
[#]: subject: (Set and use environment variables in FreeDOS)
[#]: via: (https://opensource.com/article/21/6/freedos-environment-variables)
[#]: author: (Jim Hall https://opensource.com/users/jim-hall)
[#]: collector: (lujun9972)
[#]: translator: (robsean)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-13995-1.html)
在 FreeDOS 中设置和使用环境变量
======
> 环境变量几乎在每种命令行环境中都是很有帮助的,自然包括 FreeDOS 。
![](https://img.linux.net.cn/data/attachment/album/202111/18/152155twzasgwwrzsmmvs2.jpg)
几乎在每个命令行环境中的一个有用的功能是 _环境变量_。其中的一些变量允许你控制命令行的行为或功能,其它的变量仅允许你存储可能稍后需要的数据,在 FreeDOS 中也使用了环境变量。
### 在 Linux 上的变量
在 Linux 上,你可能已经熟悉其中的一些重要的环境变量。在 Linux 上的 [Bash][2] shell 中,`PATH` 变量标示着 shell 可以在哪里找到程序和命令。例如,在我的 Linux 系统上,我的  `PATH` 值如下:
```
bash$ echo $PATH
/home/jhall/bin:/usr/lib64/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
```
这意味着,当我输入一个像 `cat` 这样的命令的名称时Bash 将会按顺序检查我在 `PATH` 变量中所列出的每个目录:
1. `/home/jhall/bin`
2. `/usr/lib64/ccache`
3. `/usr/local/bin`
4. `/usr/local/sbin`
5. `/usr/bin`
6. `/usr/sbin`
在我的实例中,`cat` 命令位于 `/usr/bin` 目录,因此,完整的路径是 `/usr/bin/cat`
为在 Linux 上设置一个环境变量,你可以输入一个变量的名称,接着输入一个等于符号(`=`),接着输入一个要存储在变量中的值。为了随后使用 Bash 引用这个值,你需要在变量的名称前输入一个美元符号(`$`)。
```
bash$ var=Hello
bash$ echo $var
Hello
```
### 在 FreeDOS 上的变量
在 FreeDOS 上,环境变量提供一种类似的功能。一些变量控制 DOS 系统的行为,另一些变量用于存储一些临时值。
为在 FreeDOS 上设置一个环境变量,你需要使用 `SET` 关键字。FreeDOS 是 _不区分大小写的_ ,因此你可以输入大写字母也可以使用小写字母。接下来,像你在 Linux 上一样设置变量,使用变量名称,一个等于符号(`=`),你想要存储的值。
不过,在 FreeDOS 中引用或 _扩展_ 一个环境变量的值的方法,与你在 Linux 上所使用的方法是完全不同的。在 FreeDOS 中,你不能使用美元符号(`$`)来引用一个变量。你反而需要使用百分符号 `%`)来包围变量的名称。
![Use % (not $) to reference a variable's value][3]
在名称前后使用百分符号是非常重要,因为这就是 FreeDOS 知悉变量名称在哪里开始和结束的方式。这是非常有用的,因为它会允许你引用一个变量的值,与此同时,它会立即附加(或预置)其它的文本到值中。让我通过设置一个新的名称为 `reply` 的值为 `yes` 的变量,然后在 “11” 之前和 “22” 之后引用这个值来演示这一点:
![Set and reference an environment variable][5]
因为 FreeDOS 是不区分大小写的,所以你可以使用大写字母称或小写字母的变量名称以及 `SET` 关键字。不过,变量的值将使用你在命令行中所输入的字母。
最后,你可以看到当前在 FreeDOS 中定义的所有的环境变量。不使用任何参数的 `SET` 关键字将显示所有的变量,因此你可以一目了然:
![Show all variables at once with SET][6]
环境变量是一个有用的基本的命令行环境,同样适用于 FreeDOS 。你可以设置你自己的变量以满足你自己的需要,但是要仔细地更改 FreeDOS 使用的一些变量。这些变量会更改你正在运行的 FreeDOS 系统的行为:
* `DOSDIR`FreeDOS 安装目录的位置,通常是 `C:\FDOS`
* `COMSPEC`FreeDOS 的 shell 的当前实例,通常是 `C:\COMMAND.COM` 或 `%DOSDIR%\BIN\COMMAND.COM`
* `LANG`:用户的首选语言
* `NLSPATH`:系统语言文件的位置,通常是 `%DOSDIR%\NLS` 
* `TZ`:系统的时区
* `PATH`一个目录列表FreeDOS 可以在其中找到要运行的程序,例如 `%DOSDIR%\BIN`
* `HELPPATH`:系统文档文件的位置,通常是 `%DOSDIR%\HELP`
* `TEMP`一个临时目录FreeDOS 在其中存储来自每个命令的输出,如同它在命令行上的程序之间的 “管道” 数据
* `DIRCMD`:一个控制 `DIR` 命令如何显示文件和目录的变量,通常设置 `/OGNE` 来排序(`O`)内容,先通过分组(`G`)目录,接下来按照名称(`N` 、扩展名(`E`)来排序条目
如果你偶然间更改了任意的 FreeDOS 的 “内部” 变量,你可能会阻碍 FreeDOS 的一些部分的正常工作。在这种情况下只需要简单地重新启动你的计算机FreeDOS 将会按照系统默认值重新设置变量。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/6/freedos-environment-variables
作者:[Jim Hall][a]
选题:[lujun9972][b]
译者:[robsean](https://github.com/robsean)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/jim-hall
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/career_journey_road_gps_path_map_520.png?itok=PpL6jJgY
[2]: https://opensource.com/article/19/8/using-variables-bash
[3]: https://opensource.com/sites/default/files/uploads/env-path.png
[4]: https://creativecommons.org/licenses/by-sa/4.0/
[5]: https://opensource.com/sites/default/files/uploads/env-vars.png
[6]: https://opensource.com/sites/default/files/uploads/env-set.png

View File

@ -0,0 +1,106 @@
[#]: subject: (Install and remove software packages on FreeDOS)
[#]: via: (https://opensource.com/article/21/6/freedos-package-manager)
[#]: author: (Jim Hall https://opensource.com/users/jim-hall)
[#]: collector: (lujun9972)
[#]: translator: (robsean)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-14031-1.html)
在 FreeDOS 上安装和移除软件包
======
> 熟悉 FreeDOS 软件包管理器 FDIMPLES 。
![](https://img.linux.net.cn/data/attachment/album/202111/29/122823yhv0mg03v3mhr0cc.jpg)
在 Linux 上,你可能已经使用过 “软件包管理器” 来安装或移除软件包。例如,在 Debian Linux 上的默认软件包管理器是 `deb` 命令,在 Fedora Linux 上的默认软件包管理器是 `dnf` 命令。 但是你知道 FreeDOS 也有一个软件包管理器吗?
### 安装软件包
FreeDOS 1.3 RC4 发行版包含了很多极好的你可以使用的程序和应用程序。不过,我们不会默认安装其中的全部的程序 —— 我们不想过度地填充你的硬盘驱动器空间,尤其是在一个较老的系统上,可能仅有几百兆字节容量的硬盘驱动器。当你安装 FreeDOS 时,如果你选择 “Plain DOS system” 选项,你将发现你的 FreeDOS 系统是非常小的(大约 20 MB 大小)。
不过,要安装新的软件包很容易。在命令行中运行 `FDIMPLES` 程序。因为 DOS 是 _不区分大小写_ 的,所以,你可以使用大写字母或小写字母来输入这个命令: `fdimples` 。(`fdimples` 与 `FDIMPLES` 或 `FDImples` 等同)
![fdimples][2]
*在 FreeDOS 1.3 RC4 上的 FDIMPLES 软件包管理器(运行在 QEMU 之中Jim Hall, [CC-BY SA 4.0][3]*
FDIMPLES 是 "**F**ree**D**OS **I**nstaller - **M**y **P**ackage **L**ist **E**ditor **S**oftware" 的首字母缩略词是一个交互式软件包管理器。FDIMPLES 读取安装介质来识别可以安装或移除的软件包。如果你看到一个不同的菜单,它显示 “Installed!” ,但是,不让你安装其它的软件的话,请检查你系统中是否有 FreeDOS 的 CD-ROM 的安装介质。在物理机器上,你将需要将 CD-ROM 插入 CD-ROM 驱动器;在诸如 QEMU 或 VirtualBox 之类的虚拟机器上,你需要将安装 FreeDOS 的 CD-ROM 的安装介质与虚拟机器关联在一起。
![fdimples installed][4]
*如果你仅看到一条 “Installed!” 的信息,检查 CD-ROM 是否已经加载Jim Hall, [CC-BY SA 4.0][3]*
让我们假设你想安装一些可以让你听音乐文件或其它声音文件的软件。使用向上箭头和向下箭头按键来导航到菜单中的 **声音工具** 项。这是一个针对声音和音乐程序的 _软件包组_ 。
![fdimples sound][5]
*在 FDIMPLES 中突出显示声音软件包组Jim Hall, [CC-BY SA 4.0][3]*
要选择这个组中的所有软件包,在你的键盘上按下空格键。如果你决定安装这个组中的某个软件包,按下 `Tab` 按键来移动到 _软件包列表_ 方框面板,接下来使用空格键来选择每个软件包。
![fdimples sound select][6]
*通过按下空格键来选择一个组中的所有的软件包Jim Hall, [CC-BY SA 4.0][3]*
你可以继续选择你想要安装的其它的软件包或软件包组。当你选择好一切的东西后使用 “Tab” 按键来高亮显示 “OK” 按键,并按下空格键按键。
![fdimples sound select ok][7]
*当你准备好安装时,突出显示 “Ok” 按钮Jim Hall, [CC-BY SA 4.0][3]*
`FDIMPLES` 接下来会安装你所选择的所有的软件包。如果你仅选择几个小型的软件包,这可能只需要花费片刻的时间,或者,如果你要求安装很多大型的软件包,它可能会花费数分钟的时间。当 `FDIMPLES` 安装每个软件包时,`FDIMPLES` 会输出安装状态。在安装完后,`FDIMPLES` 退出到命令行之中,以便你可以回去继续工作。
![fdimples sound install done][8]
*当 FDIMPLES 安装软件包时FDIMPLES 会显示安装过程并在完成安装后自动地退出Jim Hall, [CC-BY SA 4.0][3]*
### 移除软件包
如果你安装了一个软件包,但是后来发现你不想要它了怎么办?在 `FDIMPLES` 中移除软件包也同样容易。
就像安装软件包一样,启动 `FDIMPLES` ,使用箭头键导航到包含你想要移除的软件包的组。例如,如果我想卸载一些我先前安装的音乐播放器软件包,我将导航到 “Sound Tools” 软件包组。
![fdimples sound select][9]
*导航到你想要移除的软件包组Jim Hall, [CC-BY SA 4.0][3]*
为一次移除整个软件包组,你可以在你想要移除的软件包组上按下空格键来取消选择它们。但是,在这里让我们假设我只是想移除几个我不需要的软件包,像音频 CD 播放器 “CDP”。我没有任何的真实的音乐 CD 光盘)。为移除 CDP ,敲击 `Tab` 按键来移动到软件包列表方框面板,接下来使用空格键来取消选择 CDP 软件包。这会在该软件包上移除 “X” 标志。
![fdimples unselect cdp][10]
*取消选择一个软件包来移除它Jim Hall, [CC-BY SA 4.0][3]*
你可以继续取消选择你想要移除的其它的软件包或软件包组。当你选择一切的东西后,使用 `Tab` 按键来突出显示 “OK” 按钮,并按下空格键按键。`FDIMPLES` 将移除你取消选择的软件包,然后自动地返回到命令行之中。
![fdimples cdp removed][11]
*FDIMPLES 移除软件包然后返回到命令行之中Jim Hall, [CC-BY SA 4.0][3]*
在 FreeDOS 中。我们包含很多的软件包,遍及各种各样的软件包组。使用 `FDIMPLES` 来安装你需要的软件。请随意实验!如果你决定你不想要保留一个软件包了,你可以移除它,并为其它的软件包来释放所占用的磁盘空间。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/6/freedos-package-manager
作者:[Jim Hall][a]
选题:[lujun9972][b]
译者:[robsean](https://github.com/robsean)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/jim-hall
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/brown-package-red-bow.jpg?itok=oxZYQzH-
[2]: https://opensource.com/sites/default/files/uploads/fdimples.png
[3]: https://creativecommons.org/licenses/by-sa/4.0/
[4]: https://opensource.com/sites/default/files/uploads/fdimples-installed.png
[5]: https://opensource.com/sites/default/files/uploads/fdimples-sound.png
[6]: https://opensource.com/sites/default/files/uploads/fdimples-sound-select.png
[7]: https://opensource.com/sites/default/files/uploads/fdimples-sound-select-ok.png
[8]: https://opensource.com/sites/default/files/uploads/fdimples-sound-select-ok-install4.png
[9]: https://opensource.com/sites/default/files/uploads/fdimples-sound-select_0.png
[10]: https://opensource.com/sites/default/files/uploads/fdimples-unselect-cdp.png
[11]: https://opensource.com/sites/default/files/uploads/fdimples-unselect-cdp-removed.png

View File

@ -0,0 +1,145 @@
[#]: subject: (Install FreeDOS without the installer)
[#]: via: (https://opensource.com/article/21/6/install-freedos-without-installer)
[#]: author: (Jim Hall https://opensource.com/users/jim-hall)
[#]: collector: (lujun9972)
[#]: translator: (robsean)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-14022-1.html)
不使用安装程序安装 FreeDOS
======
> 这里是如何在不使用安装程序的情况下来手动设置你的 FreeDOS 系统。
![](https://img.linux.net.cn/data/attachment/album/202111/25/235643wvmciyy2f8y3mi73.jpg)
大多数的人应该能够使用安装程序来非常容易地安装 FreeDOS 1.3 RC4 。FreeDOS 安装程序会先询问几个问题,然后处理剩余的工作,包括为 FreeDOS 制作安装空间和使系统可启动。
但是,如果安装程序不适合你怎么办?或者,你更喜欢 _手动_ 设置你的 FreeDOS 系统,而不喜欢使用安装程序怎么办?使用 FreeDOS ,你也可以做到这些!让我们在不使用安装程序的情况下逐步走完安装 FreeDOS 的步骤。我将使用 QEMU 虚拟机的一个空白的硬盘驱动器镜像来完成所有的步骤。我使用这个 Linux 命令来创建了一个 100 MB 的硬盘驱动器镜像:
```
$ qemu-img create freedos.img 100M
```
我下载了 FreeDOS 1.3 RC4 的 LiveCD ,并将其命名为 `FD13LIVE.iso` ,它提供了一个 “身临其境” 的环境,我可以在其中运行 FreeDOS ,包括所有的标准工具。大多数用户也使用 LiveCD 自带的常规安装程序来安装 FreeDOS 。但是,在这里我将仅使用 LiveCD ,并从其命令行中使用某些类型的命令来安装 FreeDOS 。
我使用这个相当长的 QEMU 命令来启动虚拟机,并选择 “Use FreeDOS 1.3 in Live Environment mode” 启动菜单项:
```
$ qemu-system-x86_64 -name FreeDOS -machine pc-i440fx-4.2,accel=kvm,usb=off,dump-guest-core=off -enable-kvm -cpu host -m 8 -overcommit mem-lock=off -no-user-config -nodefaults -rtc base=utc,driftfix=slew -no-hpet -boot menu=on,strict=on -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=on -hda freedos.img -cdrom FD13LIVE.iso -device sb16 -device adlib -soundhw pcspk -vga cirrus -display sdl -usbdevice mouse
```
![manual install][2]
*选择 "Use FreeDOS 1.3 in Live Environment mode" 来启动 LiveCDJim Hall, [CC-BY SA 4.0][3]*
这个 QEMU 命令行包含大量的选项,乍看可能会让你迷糊。因为你完全使用命令行选项配置 QEMU ,所以在这里有很多东西需要审查。但是,我将简单地重点说明几个重要的选项:
* `-m 8`设置系统存储器RAM为 8 MB
* `-boot menu=on,strict=on`:使用一个启动菜单,这样,我可以选择从 CD-ROM 镜像或硬盘驱动器镜像启动
* `-hda freedos.img`:使用 `freedos.img` 作为硬盘驱动器镜像
* `-cdrom FD13LIVE.iso`:使用 `FD13LIVE.iso` 作为 CD-ROM 镜像
* `-device sb16 -device adlib -soundhw pcspk`:定义计算机带有一个 SoundBlaster16 声卡、AdLib 数字音乐卡、PC 扬声器模拟器(如果你想玩 DOS 游戏的话,这些模拟器很有用)
* `-usbdevice mouse`:将用户的鼠标识别为一个 USB 鼠标(在 QEMU 窗口中单击以使用鼠标)
### 对硬盘驱动器进行分区
你可以从 LiveCD 使用 FreeDOS 1.3 RC4 ,但是,如果你想安装 FreeDOS 到你的计算机中,你需要先在硬盘驱动器上制作安装空间。这需要使用 FDISK 程序来创建一个 _分区_ 。
从 DOS 命令行中,输入 `FDISK` 来运行 _分区_ 设置程序。FDISK 是一个全屏交互式程序,你只需要输入数字来选择菜单项。从 FDISK 的主菜单中,输入 `1` 来在驱动器上创建一个 DOS 分区,然后在接下来的屏幕上输入 `1` 来创建一个 “主” DOS 分区。
![using fdisk][4]
*选择 `1` 来创建一个分区Jim Hall, [CC-BY SA 4.0][3]*
![using fdisk][5]
*在接下来的菜单上选择 `1` 来制作一个主分区Jim Hall, [CC-BY SA 4.0][3]*
`FDISK` 会询问你是否想要使用全部的硬盘空间大小来创建分区。除非你需要在这个硬盘驱动器上和另外一个操作系统(例如 Linux共享硬盘空间否则对于这个提示你应该回答 `Y`
`FDISK` 创建新的分区后,在 DOS 能够识别新的分区信息前,你将需要重新启动 DOS 。像所有的 DOS 操作系统一样FreeDOS 仅在其启动时识别硬盘驱动器信息。因此,如果你创建或删除任何的磁盘分区的话,你都将需要重新启动 FreeDOS 只有这样做FreeDOS 才能识别到更改的分区信息。`FDISK` 会提醒你重新启动,因此,你是不会忘记的。
![using fdisk][6]
*你需要重新启动以识别新的分区Jim Hall, [CC-BY SA 4.0][3]*
你可以通过停止或重新启动 QEMU 虚拟机来重新启动 FreeDOS但是我更喜欢在 FreeDOS 命令行中使用 FreeDOS 的高级电源管理(`FDADPM`)工具来重新启动 FreeDOS 。为了重新启动,输入命令 `FDADPM /WARMBOOT` FreeDOS 将自动重新启动。
### 对硬盘驱动器进行格式化
在 FreeDOS 重新启动后,你可以继续设置硬盘驱动器。创建磁盘分区是这个过程的“第一步”;现在你需要在分区上创建一个 DOS _文件系统_ ,以便 FreeDOS 可以使用它。
DOS 系统使用字母 `A` 到 `Z` 来识别“驱动器”。FreeDOS 将识别第一个硬盘驱动器的第一个分区为 `C` 驱动器,依此论推。你经常使用字母和一个冒号(`:`)来表示驱动器,因此我们在上面创建的新分区实际上是 `C:` 驱动器。
你可以在新的分区上使用 `FORMAT` 命令来创建一个 DOS 文件系统。这个命令带有一些选项,但是,我们将仅使用 `/S` 选项来告诉 `FORMAT` 来使新的文件系统可启动: `S` 意味着安装 FreeDOS “系统” 文件。输入 `FORMAT /S C:` 来在 `C:` 驱动器上制作一个新的 DOS 文件系统。
![formatting the disk][7]
*格式化分区来创建 DOS 文件系统Jim Hall, [CC-BY SA 4.0][3]*
使用 `/S` 选项,`FORMAT` 将运行 `SYS` 程序来传输系统文件。你将看到这是从 `FORMAT` 输出的一部分:
![formatting the disk][8]
*`FORMAT /S` 将使用 SYS 来使磁盘可启动Jim Hall, [CC-BY SA 4.0][3]*
### 安装软件
在使用 `FDISK` 创建了一个新的分区,并使用 `FORMAT` 创建了一个新的文件系统后, 新的 `C:` 驱动器基本上是空的。此时,`C:` 驱动器仅包含一份内核和 `COMMAND.COM` 命令行 shell 的副本。为使新的磁盘可以执行一些有用的操作,我们需要在其上安装软件。这是手动安装过程的最后步骤。
FreeDOS 1.3 RC4 LiveCD 包含所有的你可能希望在新的系统上所要安装的软件。每个 FreeDOS 程序都是一个单独的 “软件包” ,它实际上只是一个 Zip 档案文件。建立标准 DOS 环境的软件包存储在 LiveCD 上 `PACKAGES` 目录下的 `BASE` 目录之中。
你可以一次一个的将其中的每一个软件包都 “解压缩” 到硬盘驱动器来完成安装。在 `Base` 组中有 62 个单独的软件包,如果每次安装一个软件包,这可能会花费非常多的时间。不过,你可以运行一个只有一行的 `FOR` “循环” 命令来 `UNZIP` 每个程序。接下来 FreeDOS 可以为你 “解压缩” 所有的软件包。
`FOR` 循环的基本用法中提及的一个单个字母变量(让我们使用 `%F`稍后FreeDOS 将使用该字母变量来 “填充” 文件名称。`FOR` 还需要括号中的一个文件列表,这个命令会对每个文件都运行一次。用来解压一系列的 Zip 文件的语法看起来像这样:
```
FOR %F IN (*.ZIP) DO UNZIP %F
```
这将提取所有的 Zip 文件到当前目录之中。为提取或 `UNZIP` 文件到一个不同的位置,在 `UNZIP` 命令行结尾处使用 `-d` (“目的地”) 选项。对于大多数的 FreeDOS 系统来说,你应该安装软件包到 `C:\FDOS` 目录中:
![installing the software][9]
*解压缩所有的基本软件包来完成安装 FreeDOSJim Hall, [CC-BY SA 4.0][3]*
FreeDOS 会处理剩余的工作,安装所有的 62 个软件包到你的系统之中。这可能会花费几分钟的时间,因为 DOS 在处理很多单个的文件时会很慢,这个命令需要提取 62 个 Zip 文件。如果我们使用单个的 `BASE.ZIP` 档案文件的话,安装过程可能会运行地更快,但是使用软件包的话,在你选择想要安装或不安装软件包时会提供更多的灵活性。
![installing the software][10]
*在安装所有的基本软件包后Jim Hall, [CC-BY SA 4.0][3]*
在我们安装完所有的东西后,使用 `FDADPM /WARMBOOT` 来重新启动你的系统。手动安装意味着你的新 FreeDOS 系统没有常见的 `FDCONFIG.SYS` 配置文件,因此,当 FreeDOS 在启动时,它将假设一些典型的默认值。因为没有 `AUTOXEC.BAT` 文件FreeDOS 也会提示你时间和日期。
![rebooting FreeDOS][11]
*在手动安装后,重新启动 FreeDOSJim Hall, [CC-BY SA 4.0][3]*
大多数的用户应该能够使用比较用户友好的过程来在一台新的计算机上安装 FreeDOS 。但是如果你想自己使用“古老的”方法来安装它,那么你可以手动运行安装步骤。这会提供一些额外的灵活性和控制权,因为是你自己安装的一切。现在你知道如何安装它了。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/6/install-freedos-without-installer
作者:[Jim Hall][a]
选题:[lujun9972][b]
译者:[robsean](https://github.com/robsean)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/jim-hall
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/freedos-fish-laptop-color.png?itok=vfv_Lpph (FreeDOS fish logo and command prompt on computer)
[2]: https://opensource.com/sites/default/files/uploads/manual-install3.png (Select "Use FreeDOS 1.3 in Live Environment mode" to boot the LiveCD)
[3]: https://creativecommons.org/licenses/by-sa/4.0/
[4]: https://opensource.com/sites/default/files/uploads/manual-install6.png (Select "1" to create a partition)
[5]: https://opensource.com/sites/default/files/uploads/manual-install7.png (Select "1" on the next menu to make a primary partition)
[6]: https://opensource.com/sites/default/files/uploads/manual-install10.png (You need to reboot to recognize the new partition)
[7]: https://opensource.com/sites/default/files/uploads/manual-install13.png (Format the partition to create the DOS filesystem)
[8]: https://opensource.com/sites/default/files/uploads/manual-install14.png (FORMAT /S will use SYS to make the disk bootable)
[9]: https://opensource.com/sites/default/files/uploads/manual-install18.png (Unzip all of the Base packages to finish installing FreeDOS)
[10]: https://opensource.com/sites/default/files/uploads/manual-install24.png (After installing all the Base packages)
[11]: https://opensource.com/sites/default/files/uploads/manual-install28.png (Rebooting FreeDOS after a manual install)

View File

@ -0,0 +1,143 @@
[#]: subject: (How to use FreeDOS as an embedded system)
[#]: via: (https://opensource.com/article/21/6/freedos-embedded-system)
[#]: author: (Jim Hall https://opensource.com/users/jim-hall)
[#]: collector: (lujun9972)
[#]: translator: (robsean)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-14014-1.html)
如何将 FreeDOS 作为嵌入式系统使用
======
> 现在,很多嵌入式系统都是在 Linux 上运行的。但是,在很久很久以前,嵌入式系统要么在一个定制的专有的平台上运行,要么在 DOS 上运行。
![](https://img.linux.net.cn/data/attachment/album/202111/24/134734s6zuftzjgtt8herp.jpg)
[FreeDOS 网站][2] 宣称,大多数人使用 FreeDOS 来完成三项主要任务:
1. 玩经典的 DOS 游戏
2. 运行老式的 DOS 软件
3. 运行一款嵌入式系统
但是,运行一个“嵌入式”系统的意义是什么呢?
嵌入式系统基本上是一款非常小的系统,专用于运行一个特定的任务。你可以把现在的嵌入式系统当作是 _物联网_IoT的一部分这包括传感器、恒温器和门铃摄像头。现在很多嵌入式系统都是在 Linux 上运行的。
但是,在很久很久以前,嵌入式系统要么在一个定制的专有的平台上运行,要么在 DOS 系统上运行。在现在,一些基于 DOS 的嵌入式系统仍然在运行例如收银机或电话专用交换机PBX系统。举个例子来说在 2017 年,酷爱列车的人发现一个正在运行 FreeDOS 的俄罗斯的电动列车控制系统 (俄语: _САВПЭ_),它使用特殊的软件来控制和监控郊区列车的线路,并发布乘客通告。
在 DOS 上建立一个嵌入式系统需要定义一个最小化的 DOS 环境来运行单个应用程序。幸运的是,设置一个最小化的 FreeDOS 环境是非常容易的。从技术上来说,启动 FreeDOS 并运行 DOS 应用程序仅需要内核和一个 `FDCONFIG.SYS` 配置文件。
### 安装一款最小化的系统
我们可以使用 QEMU 仿真器来模拟一个专用的、最小化的 FreeDOS 系统,并给它分配很少的资源。为了更准确地反映一个嵌入式系统,我将定义一个只有 8 MB 的存储器和仅仅有 2 MB 的硬盘驱动器的虚拟机。
为创建这个微小的虚拟硬盘,我将使用这个 `qemu-img` 命令来定义一个 2M 的文件:
```
$ qemu-img create tiny.img 2M
Formatting 'tiny.img', fmt=raw size=2097152
```
下面的这行命令定义了一个 32 位的 “i386” CPU、8MB 的存储器,使用 2MB 的 `tiny.img` 文件作为硬盘驱动器镜像,使用 FreeDOS 1.3 RC4 LiveCD 作为 CD-ROM 介质。我们也将机器设置为从 CD-ROM 驱动器启动(`-boot order=d`),尽管我们只需要用它来安装系统。在我们完成所有的设置后,我们将从该硬盘启动完成的嵌入式系统:
```
qemu-system-i386 -m 8 -hda tiny.img -cdrom FD13LIVE.iso -boot order=d
```
使用 “<ruby>现场环境模式<rt>Live Environment mode</rt></ruby>” 来启动系统,这将为我们提供一个正在运行的 FreeDOS 系统,我们可以使用它来将一个最小化的 FreeDOS 转移到硬盘上。
![embedded setup][3]
*启动到 LiveCD 环境之中Jim Hall, [CC-BY SA 4.0][4]*
我们需要在虚拟硬盘驱动器上为我们的程序创建一个分区。为此,从命令行中运行 `FDISK` 程序。`FDISK` 是 FreeDOS 上的一个标准的 _磁盘分区_ 实用程序。使用 `FDISK` 来创建一个单个硬盘驱动器分区占用整个2 MB硬盘驱动器。
![embedded setup][5]
*FDISK在创建 2 MB 分区后Jim Hall, [CC-BY SA 4.0][4]*
但是,在你重新启动 FreeDOS 之前FreeDOS 不会看到新的硬盘驱动器分区 — FreeDOS 仅在启动时读取硬盘详细信息。退出 `FDISK` ,并重新启动 FreeDOS 。
在重新启动后,你需要在新的硬盘驱动器上创建一个 DOS 文件系统。因为这里只有一个虚拟硬盘FreeDOS 将识别其为 `C:` 驱动器。你可以使用 `FORMAT` 命令来在 `C:` 驱动器上创建一个 DOS 文件系统。使用 `/S` 选项将把操作系统文件(内核,外加一个 `COMMAND.COM` shell 的副本)转移到新的驱动器上。
![embedded setup][6]
*格式化新的驱动器来创建一个 DOS 文件系统Jim Hall, [CC-BY SA 4.0][4]*
 
你已经创建了硬盘驱动器并将其格式化,现在,你可以安装应用程序,这些应用程序是将会在新安装的嵌入式系统上运行的。
### 安装专用的应用程序
嵌入式系统实际上只是一个运行在一个专用系统上的单一用途的应用程序。这些应用程序通常是为其将要控制的系统而自定义构建的,例如,一台收银机、显示终端、或控制环境。在这个演示中,让我们使用一个来自 FreeDOS 1.3 RC4 安装光盘中的程序。它需要足够小,以适应我们为其创建的 2 MB 微型硬盘驱动器。这可以是任何东西,所以,为了好玩,让我们把它变成一个游戏。
FreeDOS 1.3 RC4 包含一些有趣的游戏。我喜欢的一个游戏是一个名称为 “Simple Senet” 的棋类游戏。它是一个基于 Senet 的古埃及棋类游戏。游戏的细节对这个演示并不重要,我们将安装它,并将其设置为嵌入式系统的专业应用程序。
为安装应用程序,在 FreeDOS 1.3 RC4 LiveCD 上,进入 `\PACKAGES\GAMES` 目录。你将在其中看到一个很长的软件包列表,而我们想要的 `SENET.ZIP`
![embedded setup][7]
*来自 FreeDOS 1.3 RC4 的一个游戏软件包列表Jim Hall, [CC-BY SA 4.0][4]*
为解压缩 “Simple Senet” 软件包到虚拟硬盘上,使用 `UNZIP` 命令。所有的 FreeDOS 软件包都是 Zip 文件,因此,你可以使用任意与 Zip 兼容的档案实用程序来管理它们。FreeeDOS 1.3 RC4 包含创建 Zip 档案文件的 `ZIP` 和提取 Zip 档案文件的 `UNZIP` 。它们都来自 [Info-Zip 项目][8] 。
```
UNZIP SENET.ZIP -d C:\FDOS
```
通常,使用 `UNZIP` 来提取 Zip 文件到当前目录中。在命令行结尾的 `-d C:\FDOS` 选项将告诉 `UNZIP` 来提取 Zip 文件到 `C:\FDOS` 目录之中。(`-d` 指的是“目的地”)
![embedded setup][9]
*解压缩 Simple Senet 游戏Jim Hall, [CC-BY SA 4.0][4]*
为了让嵌入式系统启动时运行 “Simple Senet” 游戏,我们需要告诉 FreeDOS 来使用 Senet 作为系统的 “shell” 。 默认的 FreeDOS 的 shell 是 `COMMAND.COM` 程序,但是,你可以在 `FDCONFIG.SYS` 内核配置文件中使用 `SHELL=` 指令来定义一个不同的 shell 程序。我们可以使用 FreeDOS 的 Edit 来创建新的 `C:\FDCONFIG.SYS` 文件。
![Embedded edit senet][10]
*Jim Hall, [CC-BY SA 4.0][4]*
如果你需要定义其它的参数来支持嵌入式系统,你可以将其添加到 `FDCONFIG.SYS` 文件之中。例如,你可能需要使用 `SET` 动作来设置环境变量,或者使用 `FILES=` 或 `BUFFERS=` 语句来调整 FreeDOS 内核。
### 运行嵌入式系统
在全面地完成嵌入式系统的定义之后,现在,我们可以重新启动计算机来运行嵌入式应用程序。运行一个嵌入式系统通常仅需要有限的资源,因此,在这个演示中,我们需要调整 QEMU 命令行来只从硬盘驱动器(`-boot order=c`)中启动,而不再定义一个 CD-ROM 驱动器:
```
qemu-system-i386 -m 8 -hda tiny.img -boot order=c
```
当 FreeDOS 内核启动时,它将读取 `FDCONFIG.SYS` 文件以获取启动参数。然后,它将使用 `SHELL=` 行的定义来运行 shell 。这将自动地运行 “Simple Senet” 游戏。
![embedded setup][11]
*作为一个嵌入式系统运行 Simple SenetJim Hall, [CC-BY SA 4.0][4]*
我们已经使用了 “Simple Senet” 来演示如何在 FreeDOS 上设置一个嵌入式系统。根据你的需要,你可以使用任何你喜欢的独立应用程序。在 `FDCONFIG.SYS` 中使用 `SHELL=` 行将其定义为 DOS 的 shell FreeDOS 将在启动时自动地启动该应用程序。
不过,在这里有一个限制。嵌入式系统通常不需要退回到一个命令行提示符之中,因此这些专用应用程序通常不允许用户退出到 DOS 之中。如果你设法退出了嵌入式应用程序,你可能会看到一个 “Bad or missing Command Interpreter” 的提示,你将需要在其中输入一个新的 shell 的完整路径。对于一个以用户为中心的桌面系统来说,这将是一个问题。但是在一个嵌入式系统上,它只专注执行一种工作的,那么,你也永远不需要退出嵌入式应用程序。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/6/freedos-embedded-system
作者:[Jim Hall][a]
选题:[lujun9972][b]
译者:[robsean](https://github.com/robsean)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/jim-hall
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_space_graphic_cosmic.png?itok=wu493YbB (Computer laptop in space)
[2]: https://www.freedos.org/
[3]: https://opensource.com/sites/default/files/uploads/embedded-setup02.png (Boot into the LiveCD environment)
[4]: https://creativecommons.org/licenses/by-sa/4.0/
[5]: https://opensource.com/sites/default/files/uploads/embedded-setup09.png (FDISK, after creating the 2 megabyte partition)
[6]: https://opensource.com/sites/default/files/uploads/embedded-setup19.png (Format the new drive to create a DOS filesystem)
[7]: https://opensource.com/sites/default/files/uploads/games-dir.png (A list of game packages from FreeDOS 1.3 RC4)
[8]: http://infozip.sourceforge.net/
[9]: https://opensource.com/sites/default/files/uploads/senet-unzip.png (Unzipping the Simple Senet game)
[10]: https://opensource.com/sites/default/files/pictures/embedded-edit-senet.png (Embedded edit senet)
[11]: https://opensource.com/sites/default/files/uploads/senet.png (Running Simple Senet as an embedded system)

View File

@ -0,0 +1,182 @@
[#]: subject: "7 handy tricks for using the Linux wget command"
[#]: via: "https://opensource.com/article/21/10/linux-wget-command"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
[#]: translator: "zengyi1001"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14007-1.html"
七个使用 wget 命令的技巧
======
> 用你的 Linux 终端中从互联网上下载文件。
![](https://img.linux.net.cn/data/attachment/album/202111/22/102927pjuji5juxzuikkg6.jpg)
`wget` 是一个下载网页文件的免费工具。它将互联网上的数据保存到一个文件或展示在终端上。实际上这也是像 Firefox 或 Chromium 这样的网页浏览器的工作原理。有一个区别是,网页浏览器默认将网页 <ruby>渲染<rt>render</rt></ruby>在图形窗口中,并且通常需要用户主动来操作它们。而 `wget` 工具是无交互的使用方式,也就是说你可以使用脚本或定期使用 `wget` 来下载文件,不论你人是否在电脑面前。
### 使用 wget 下载文件
你可以通过提供一个特定 URL 的链接,用 `wget` 下载一个文件。如果你提供一个默认为 `index.html` 的 URL那么就会下载该索引页。默认情况下文件会被下载到你当前的工作目录并保持原来的名字。
```
$ wget http://example.com
--2021-09-20 17:23:47-- http://example.com/
Resolving example.com... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946
Connecting to example.com|93.184.216.34|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1256 (1.2K) [text/html]
Saving to: 'index.html'
```
通过使用 `--output-document``-` 符号,你可以指示 `wget` 将数据发送到 <ruby>标准输出<rt>stdout</rt></ruby>
```
$ wget http://example.com --output-document - | head -n4
<!doctype html>
<html>
<head>
<title>Example Domain</title>
```
你可以使用 `--output-document` 选项(简写为 `-O`)将下载文件命名为任何你想要的名称:
```
$ wget http://example.com --output-document foo.html
```
### 断点续传
如果你正在下载一个超大文件,你可能会遇到中断下载的情况。使用 `--continue`(简写为 `-c``wget` 可以确定从文件的哪个位置开始继续下载。也就是说,下次你在下载一个 4 GB 的 Linux 发行版 ISO 时,如果出现了错误导致中断,你不必重新从头开始。
```
$ wget --continue https://example.com/linux-distro.iso
```
### 下载一系列的文件
如果你要下载的不是单个大文件,而是一系列的文件,`wget` 也能提供很好的帮助。假如你知道要下载文件的路径以及文件名的通用范式,你可以使用 Bash 语法指示一个数字范围的起始和终点来表示这一系列文件名:
```
$ wget http://example.com/file_{1..4}.webp
```
### 镜像整个站点
使用 `--mirror` 选项你可以下载整个站点,包括它的目录结构。这与使用选项 `--recursive --level inf --timestamping --no-remove-listing` 的效果是一样的,该选项表明可以进行无限制的递归,得到你指定域下的所有内容。但你也可能会得到比预期多得多的内容,这取决于站点本身的老旧程度。
如果你正在使用 `wget` 来打包整个站点,选项 `--no-cookies --page-requisites --convert-links` 非常有用,它可以确保打包的站点是全新且完整的,站点副本或多或少是<ruby>自包含的<rt>self-contained</rt></ruby>
### 修改 HTML 标头
在计算机发送的通信报文里含有大量用于数据交换的<ruby>元数据<rt>metadata</rt></ruby>。HTTP 标头是初始数据的组成部分。当你浏览某个站点时,你的浏览器会发送 HTTP 请求标头。使用 `--debug` 选项可以查看 `wget` 为每个请求发送了什么样的标头信息:
```
$ wget --debug example.com
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.19.5 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: example.com
Connection: Keep-Alive
---request end---
```
你可以使用 `--header` 选项修改请求标头。实际上经常使用这种方式来模仿某特定浏览器,来测试或兼容某些编码糟糕、只能与特定代理通信的站点。
让请求被识别为来自 Windows 系统的 Microsoft Edge
```
$ wget --debug --header="User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59" http://example.com
```
你也可以假装为某个移动设备:
```
$ wget --debug --header="User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1" http://example.com
```
### 查看响应标头
与浏览器发送请求标头的方式一样,响应也包含有标头信息。你可以使用 `--debug` 选项来查看响应中的标头信息:
```
$ wget --debug example.com
[...]
---response begin---
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 188102
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Etag: "3147526947"
Server: ECS (sab/574F)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256
---response end---
200 OK
Registered socket 3 for persistent reuse.
URI content encoding = 'UTF-8'
Length: 1256 (1.2K) [text/html]
Saving to: 'index.html'
```
### 处理 301 响应
200 响应码意味着一切都在预料之中。而 301 响应则表示 URL 已经被永久迁移到了另外一个地方。这是站点管理员的一种常用手段,内容迁移后,为访问旧地址的用户留下寻找新地址的“线索”。`wget` 会默认跟随<ruby>重定向<rt>redirect</rt></ruby>,这也是大部分情况下用户所希望的。
当然,你可以使用 `--max-redirect` 选项,用于控制 `wget` 默认处理 301 响应重定向的次数。设置为 `0` 意味着不会自动重定向到新的地址:
```
$ wget --max-redirect 0 http://iana.org
--2021-09-21 11:01:35-- http://iana.org/
Resolving iana.org... 192.0.43.8, 2001:500:88:200::8
Connecting to iana.org|192.0.43.8|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://www.iana.org/ [following]
0 redirections exceeded.
```
同时,你也可以设置为其他的数值来控制 `wget` 能重定向多少次。
### 展开 URL 缩写
使用`--max-redirect` 选项用于在实际访问之前查看 <ruby>URL 缩写<rt>shortened URL</rt></ruby>非常有用。缩写 URL 可用于用户无法完整拷贝和粘贴一个长 URL 时的<ruby>印刷媒体<rt>print media</rt></ruby>,或是具有字数限制的社交网络(在类似 [Mastondon][2] 这种现代开源的社交网络上这并不是一个问题)。这种缩写具有一定的风险,因为本质上这些目的地是隐藏的。组合使用 `--head` 选项和 `--location` 选项来来查看 HTTP 头部并解开最终的目的地,你可以在不加载整个资源的情况下查看到缩写 URL 的完整内容:
```
$ wget --max-redirect 0 "https://bit.ly/2yDyS4T"
--2021-09-21 11:32:04-- https://bit.ly/2yDyS4T
Resolving bit.ly... 67.199.248.10, 67.199.248.11
Connecting to bit.ly|67.199.248.10|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://example.com/ [following]
0 redirections exceeded.
```
`Location` 开始的倒数第二行输出,展示了实际的目的地。
### 使用 wget
若你开始考虑使用单个命令来实现整个网站访问的过程,`wget` 可以快速高效的帮你获取互联网上的信息,而不用在图形界面上耗费精力。为了帮你将它构造在你平常的工作流中,我们创建了一个 `wget` 常用使用方式和语法清单,包括使用它来查询 API 的概述。[在这里下载 Linux wget 速查表][3]。
--------------------------------------------------------------------------------
来源: https://opensource.com/article/21/10/linux-wget-command
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[zengyi1001](https://github.com/zengyi1001)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_screen_windows_files.png?itok=kLTeQUbY (Computer screen with files or windows open)
[2]: https://opensource.com/article/17/4/guide-to-mastodon
[3]: https://opensource.com/downloads/linux-wget-cheat-sheet

View File

@ -0,0 +1,206 @@
[#]: subject: "What you need to know about Kubernetes NetworkPolicy"
[#]: via: "https://opensource.com/article/21/10/kubernetes-networkpolicy"
[#]: author: "Mike Calizo https://opensource.com/users/mcalizo"
[#]: collector: "lujun9972"
[#]: translator: "perfiffer"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14005-1.html"
Kubernetes 网络策略基础
======
> 在你通过 Kubernetes 部署一个应用之前,了解 Kubernetes 的网络策略是一个基本的要求。
![](https://img.linux.net.cn/data/attachment/album/202111/21/130217ocykri3zbv37i6ou.jpg)
随着越来越多的云原生应用程序通过 Kubernetes 部署到生产环境,安全性是你必须在早期就需要考虑的一个重要检查项。在设计云原生应用程序时,预先嵌入安全策略非常重要。不这样做会导致后续的安全问题,从而导致项目延迟,并最终给你带来不必要的压力和金钱投入。
这么多年来,人们总是把安全留到最后,直到他们的部署即将发布到生产环境时才考虑安全。这种做法会导致项目交付的延迟,因为每个组织都有要遵守的安全标准,这些规定被绕过或不遵守,并承受大量的风险才得以实现可交付成果。
对于刚开始学习 Kubernetes 实施的人来说,理解 Kubernetes <ruby>网络策略<rt>NetworkPolicy</rt></ruby> 可能会令人生畏。但这是在将应用程序部署到 Kubernetes 集群之前必须了解的基本要求之一。在学习 Kubernetes 和云原生应用程序时,请把“不要把安全抛在脑后!”定为你的口号。
### 网络策略概念
<ruby>[网络策略][2]<rt>NetworkPolicy</rt></ruby> 取代了你所知道的数据中心环境中的防火墙设备 —— 如<ruby>吊舱<rt>Pod</rt></ruby>之于计算实例、网络插件之于路由器和交换机以及卷之于存储区域网络SAN
默认情况下Kubernetes 网络策略允许 <ruby>[吊舱][3]<rt>Pod</rt></ruby> 从任何地方接收流量。如果你不担心吊舱的安全性,那么这可能没问题。但是,如果你正在运行关键工作负载,则需要保护吊舱。控制集群内的流量(包括入口和出口流量),可以通过网络策略来实现。
要启用网络策略,你需要一个支持网络策略的网络插件。否则,你应用的任何规则都将变得毫无用处。
[Kubernetes.io][4] 上列出了不同的网络插件:
* CNI 插件:遵循 <ruby>[容器网络接口][5]<rt>Container Network Interface</rt></ruby>CNI规范旨在实现互操作性。
* Kubernetes 遵循 CNI 规范的 [v0.4.0][6] 版本。
* Kubernetes 插件:使用桥接器和主机本地 CNI 插件实现基本的 `cbr0`
### 应用网络策略
要应用网络策略,你需要一个工作中的 Kubernetes 集群,并有支持网络策略的网络插件。
但首先,你需要了解如何在 Kubernetes 的环境使用网络策略。Kubernetes 网络策略允许 [吊舱][3] 从任何地方接收流量。这并不是理想情况。为了吊舱安全,你必须了解吊舱是可以在 Kubernetes 架构内进行通信的端点。
1、使用 `podSelector` 进行吊舱间的通信:
```
- namespaceSelector:
    matchLabels:
      project: myproject
```
2、使用 `namespaceSelector` 和/或 `podSelector``namespaceSelector` 的组合进行命名空间之间的通信和命名空间到吊舱的通信。:
```
- namespaceSelector:
    matchLabels:
      project: myproject
- podSelector:
    matchLabels:
      role: frontend
```
3、对于吊舱的 IP 块通信,使用 `ipBlock` 定义哪些 IP CIDR 块决定源和目的。
```
- ipBlock:
        cidr: 172.17.0.0/16
        except:
        - 172.17.1.0/24
```
注意吊舱、命名空间和基于 IP 的策略之间的区别。对于基于吊舱和命名空间的网络策略,使用选择器来控制流量,而对基于 IP 的网络策略,使用 IP 块CIDR 范围)来定义控制。
把它们放在一起,一个网络策略应如下所示:
```
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - ipBlock:
        cidr: 172.17.0.0/16
        except:
        - 192.168.1.0/24
    - namespaceSelector:
        matchLabels:
          project: myproject
    - podSelector:
        matchLabels:
          role: frontend
    ports:
    - protocol: TCP
      port: 6379
  egress:
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24
    ports:
    - protocol: TCP
      port: 5978
```
参考上面的网络策略,请注意 `spec` 部分。在此部分下,带有标签 `app=backend``podSelector` 是我们的网络策略的目标。简而言之,网络策略保护给定命名空间内称为 `backend` 的应用程序。
此部分也有 `policyTypes` 定义。此字段指示给定策略是否适用于选定吊舱的入口流量、选定吊舱的出口流量,或两者皆有。
```
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Ingress
  - Egress
```
现在,请看 `Ingress`(入口)和 `Egress`(出口)部分。该定义规定了网络策略的控制。
首先,检查 `ingress from` 部分。
此实例中,网络策略允许从以下位置进行吊舱连接:
* `ipBlock`
* 允许 172.17.0.0/16
* 拒绝 192.168.1.0/24
* `namespaceSelector`
* `myproject`: 允许来自此命名空间并具有相同标签 project=myproject 的所有吊舱。
* `podSelector`
* `frontend`: 允许与标签 `role=frontend` 匹配的吊舱。
```
ingress:
- from:
  - ipBlock:
      cidr: 172.17.0.0/16
      except:
      - 192.168.1.0/24
  - namespaceSelector:
      matchLabels:
        project: myproject
  - podSelector:
      matchLabels:
        role: frontend
```
现在,检查 `egress to` 部分。这决定了从吊舱出去的连接:
* `ipBlock`
* 10.0.0.0/24: 允许连接到此 CIDR
* Ports: 允许使用 TCP 和端口 5978 进行连接
```
egress:
- to:
  - ipBlock:
      cidr: 10.0.0.0/24
  ports:
  - protocol: TCP
    port: 5978
```
### 网络策略的限制
仅靠网络策略无法完全保护你的 Kubernetes 集群。你可以使用操作系统组件或 7 层网络技术来克服已知限制。你需要记住,网络策略只能解决 IP 地址和端口级别的安全问题 —— 即开放系统互联OSI中的第 3 层或第 4 层。
为了解决网络策略无法处理的安全要求,你需要使用其它安全解决方案。以下是你需要知道的一些 [用例][7],在这些用例中,网络策略需要其他技术的增强。
### 总结
了解 Kubernetes 的网络策略很重要,因为它是实现(但不是替代)你通常在数据中心设置中使用的防火墙角色的一种方式,但适用于 Kubernetes。将此视为容器安全的第一层仅仅依靠网络策略并不是一个完整的安全解决方案。
网络策略使用选择器和标签在吊舱和命名空间上实现安全性。此外,网络策略还可以通过 IP 范围实施安全性。
充分理解网络策略是在 Kubernetes 环境中安全采用容器化的一项重要技能。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/10/kubernetes-networkpolicy
作者:[Mike Calizo][a]
选题:[lujun9972][b]
译者:[perfiffer](https://github.com/perfiffer)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/mcalizo
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/containers_modules_networking_hardware_parts.png?itok=rPpVj92- (Parts, modules, containers for software)
[2]: https://kubernetes.io/docs/concepts/services-networking/network-policies/
[3]: https://kubernetes.io/docs/concepts/workloads/pods/
[4]: https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/
[5]: https://github.com/containernetworking/cni
[6]: https://github.com/containernetworking/cni/blob/spec-v0.4.0/SPEC.md
[7]: https://kubernetes.io/docs/concepts/services-networking/network-policies/#what-you-can-t-do-with-network-policies-at-least-not-yet

View File

@ -0,0 +1,130 @@
[#]: subject: "How the Kubernetes ReplicationController works"
[#]: via: "https://opensource.com/article/21/11/kubernetes-replicationcontroller"
[#]: author: "Mike Calizo https://opensource.com/users/mcalizo"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14018-1.html"
Kubernetes 复制控制器如何工作
======
> 复制控制器负责管理吊舱的生命周期并确保在任何时候运行着所需的指定数量的吊舱。
![](https://img.linux.net.cn/data/attachment/album/202111/25/131052ltjaz53jqkfamthh.jpg)
你有没有想过,谁负责监督和管理 Kubernetes 集群内运行的“<ruby>吊舱<rt>pod</rt></ruby>”的确切数量Kubernetes 可以通过多种方式做到这一点,但一个常见的方法是使用 “<ruby>复制控制器<rt>ReplicationController</rt></ruby>RC”。RC 负责管理吊舱的生命周期并确保在任何时候运行着所需的指定数量的吊舱。但另一方面它不负责高级的集群能力如执行自动扩展、准备度和活跃探测以及其他高级的复制能力。Kubernetes 集群中的其他组件可以更好地执行这些功能。
简而言之RC 的职责有限通常用于不需要复杂逻辑就能达到某些要求的具体实现例如确保所需的吊舱数量总是与指定的数量相符。如果超过了所需的数量RC 会删除多余的,并确保即使在节点故障或吊舱终止的情况下,也有相同数量的存在。
简单的事情不需要复杂的解决方案,对我来说,这就是 RC 如何被使用的一个完美的比喻。
### 如何创建一个 RC
像大多数 Kubernetes 资源一样,你可以使用 YAML 或 JSON 格式创建一个 RC然后将其发布到 Kubernetes API 端点。
```
$ kubectl create -f rcexample.yaml
replicationcontroller/rcexample created
```
现在,我将深入一下 `rcexample.yaml` 的样子。
```
apiVersion: v1
kind: ReplicationController → RC 描述符
metadata:
name: rcexample → 复制控制器名字
spec:
replicas: 3 → 预期的吊舱数量
selector: → 这个 RC 的吊舱选择器
app: nginx
template: → 用于创建新吊舱的模板
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
```
进一步解释,这个文件在执行时创建了一个名为 `rcexample` 的 RC确保三个名为 `nginx` 的吊舱实例一直在运行。如果一个或所有的 `app=nginx` 吊舱没有运行,新的吊舱将根据定义的吊舱模板创建。
一个 RC 有三个部分:
* 复制品:`3`
* 吊舱模板:`app=nginx`
* 吊舱选择器:`app=nginx`
注意,吊舱模板要与吊舱选择器相匹配,以防止 RC 一直创建吊舱。如果你创建的 RC 的吊舱选择器与模板不匹配Kubernetes API 服务器会给你一个错误。
为了验证 RC `rcexample` 是否被创建:
```
$ kubectl get po
NAME READY STATUS RESTARTS AGE
rcexample-53thy 0/1 Running 0 10s
rcexample-k0xz6 0/1 Running 0 10s
rcexample-q3vkg 0/1 Running 0 10s
```
要删除 RC
```
$ kubectl delete rc rcexample
replicationcontroller "rcexample" deleted
```
注意,你可以对 RC 中的服务使用 [滚动更新][2] 策略,逐个替换吊舱。
### 其他复制容器的方法
在 Kubernetes 部署中有多种方法可以实现容器的复制。Kubernetes 成为容器平台的主要选择的主要原因之一是复制容器以获得可靠性、负载平衡和扩展的原生能力。
我在上面展示了你如何轻松地创建一个 RC以确保在任何时候都有一定数量的吊舱可用。你可以通过更新副本的数量来手动扩展吊舱。
另一种可能的方法是通过使用 “<ruby>[复制集][3]<rt>ReplicaSet</rt></ruby>RS”来达到复制的目的。
```
(kind: ReplicaSet)
```
RS 的功能几乎与 RC 相同。主要区别在于RS 不允许滚动更新策略。
另一种实现复制的方法是通过使用 “<ruby>[部署][4]<rt>Deployments</rt></ruby>”。
```
(kind: Deployment)
```
部署是一种更高级的容器复制方法。从功能上讲,部署提供了相同的功能,但在需要时可以推出和回滚变化。这种功能之所以能够实现,是因为部署有 “<ruby>策略类型<rt>StrategyType</rt></ruby>” 规范来用新的吊舱替换旧的吊舱。你可以定义两种类型的部署策略:“<ruby>重新创建<rt>Recreate</rt></ruby>” 和 “<ruby>滚动更新<rt>RollingUpdate</rt></ruby>”。你可以如下指定部署策略:
```
StrategyType: RollingUpdate
```
### 总结
容器的复制功能是大多数企业考虑采用 Kubernetes 的主要原因之一。复制可以让你达到大多数关键应用程序需要的可靠性和可扩展性,作为生产的最低要求。
了解在 Kubernetes 集群中使用哪些方法来实现复制,对于决定哪种方法最适合你的应用架构考虑非常重要。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/11/kubernetes-replicationcontroller
作者:[Mike Calizo][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/mcalizo
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/kubernetes_containers_ship_lead.png?itok=9EUnSwci (Ships at sea on the web)
[2]: https://kubernetes.io/docs/tutorials/kubernetes-basics/update/update-intro/
[3]: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/
[4]: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

View File

@ -0,0 +1,94 @@
[#]: subject: "LibreWolf: An Open-Source Firefox Fork Without the Telemetry"
[#]: via: "https://itsfoss.com/librewolf/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14004-1.html"
自由之狼:一个没有遥测的开源火狐复刻
======
> LibreWolf 是一个火狐浏览器的复刻,它关注于隐私和安全,消除了遥测并增加了其他好处。让我们来了解一下它。
![](https://img.linux.net.cn/data/attachment/album/202111/21/121135e2mmb6ym53hxzlmj.jpg)
<ruby>火狐<rt>Firefox</rt></ruby> 是 Linux 上最好的网页浏览器之一。然而,一些用户并不喜欢其中的遥测机制。
除此之外,有些人更喜欢一个开箱即用的、为最佳隐私和安全而调整过的浏览器,即使火狐浏览器是提供了最好的定制功能的浏览器之一。
如果你不想要火狐浏览器的干扰功能想要一个无需你亲自调整的私密网络体验LibreWolf自由之狼或许就是答案。
### LibreWolf更好的火狐
![][1]
假设你想使用火狐,而不使用火狐的帐户同步的能力和其他一些火狐特有的功能,如 “添加到 Pocket” 按钮。在这种情况下LibreWolf 可以是一个不错的选择。
不同于其他火狐浏览器的复刻(例如,[Basilisk 浏览器][2]),它是定期更新的。而且,它只专注于提供私密的网页浏览体验,而不影响你在火狐中所希望得到的用户体验。
![][3]
### LibreWolf 的特点
LibreWolf 为安全的网页浏览体验提供了一套相当有用的开箱即用的功能。让我强调其中的一些特点:
* 移除遥测功能
* 不使用火狐账户进行云同步
* 私密搜索供应商,如 Searx、QwantDuckDuckGo 被设置为默认)
* 包含 uBlock Origin 以阻止脚本/广告
* 没有 “添加到 Pocket” 按钮
* 主页上默认没有赞助/推荐的内容
* 从设置中删除火狐<ruby>状态条<rt>snippets</rt></ruby>,它用于在新标签中添加新闻/提示
* 没有赞助的快捷提示
* 追踪保护默认设置为“严格”模式
* Cookies 和历史记录设置为关闭浏览器时删除
* 默认启用 HTTPS-only 模式
正如你所注意到的LibreWolf 的目标是提供一个更清洁和有利于隐私的体验,而不需要调整任何东西。
![][4]
如果你不想反复登录网络服务和浏览历史记录来回忆你的浏览活动,一些选项如退出时清除 cookies/历史记录可能会很不方便。
所以,如果你想从火狐切换到 LibreWolf你可能想在决定之前测试一下网页浏览体验。
![][5]
### 在 Linux 中安装 LibreWolf
对于任何 Linux 发行版,你可以使用 AppImage 文件或 Flathub 的 Flatpak 包。
如果你不知道,你可以参考我们关于 [使用 AppImage][6] 的指南和 [Flatpak 的资源][7] 。
对于 Arch Linux 用户,它也可以在 [Arch 用户仓库AUR][8] 中找到。
也可以在他们的 [官方网站][9] 或 [GitLab 页面][10] 中找到其他安装说明。
你试过 LibreWolf 吗?你喜欢用什么作为你的网页浏览器?请在下面的评论中分享你的想法!
--------------------------------------------------------------------------------
via: https://itsfoss.com/librewolf/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/librewolf-about.png?resize=800%2C566&ssl=1
[2]: https://itsfoss.com/basilisk-browser/
[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/librewolf-firefox.png?resize=800%2C572&ssl=1
[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/librewolf-tracking.png?resize=800%2C565&ssl=1
[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/librewolf-addon.png?resize=800%2C340&ssl=1
[6]: https://itsfoss.com/use-appimage-linux/
[7]: https://itsfoss.com/flatpak-guide/
[8]: https://itsfoss.com/aur-arch-linux/
[9]: https://librewolf-community.gitlab.io/install/
[10]: https://gitlab.com/librewolf-community
[11]: https://librewolf-community.gitlab.io/

View File

@ -0,0 +1,172 @@
[#]: subject: "Transfer files between your phone and Linux with this open source tool"
[#]: via: "https://opensource.com/article/21/11/transfer-files-phone-linux"
[#]: author: "Don Watkins https://opensource.com/users/don-watkins"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-13999-1.html"
使用 qrcp 在你的手机和 Linux 之间传输文件
======
> qrcp 项目提供了一种快速地从你的 iPhone 或 Android 设备中复制文件到你的 Linux 电脑的方法,反之也可。
![](https://img.linux.net.cn/data/attachment/album/202111/19/114121wt40ilipix1oo1zh.jpg)
你是否在寻找一种快速复制文件的方法,从你的 iPhone 或 Android 移动设备到你的 Linux 电脑,或者从你的 Linux 电脑到你的设备?我最近发现了一个开源的应用,它很容易安装,并且传输文件只需一个二维码。
`qrcp` 项目提供了一个命令,可以在你的终端生成一个二维码,让你通过网络向你的电脑发送或接收文件。
### 在 Linux、Windows 或 Mac 上安装 qrcp
开发者 Claudio d'Angelis 以 MIT 许可证发布了 `qrcp` 应用。我发现它很容易安装,也很容易使用。它适用于 Linux、Windows 和 macOS可以作为 RPM、DEB 或 tarball 下载。它为几乎所有的平台做了构建,包括树莓派。
如果你想在 Linux 上安装它,下载 RPM 或 DEB并使用你的包管理器进行本地安装。例如在 Fedora、CentOS 或 Mageia或类似的平台上
```
$ sudo dnf install ./qrcp*rpm
```
如果你只是想试试,你可以下载 tar.gz 压缩包并在本地运行它:
```
$ tar --extract --file qrcp*tar.gz
$ ./qrcp version
qrcp 0.x.y
```
### 设置 qrcp
你可以通过使用 `--help` 选项查看所有可用的 `qrcp` 选项:
```
$ qrcp --help
$ ./qrcp --help
Usage:
qrcp [flags]
qrcp [command]
Available Commands:
completion Generate completion script
config Configure qrcp
help Help about any command
receive Receive one or more files
send Send a file(s) or directories from this host
version Print version number and build information.
[...]
```
默认配置文件位于 `~/.config/qrcp/config.json` ,你可以使用你喜欢的编辑器编辑,或从命令行调用配置向导来配置应用。
```
$ qrcp config
```
第一步是创建一个配置文件。`qrcp config` 命令将带你完成这个过程,但会问你几个问题。
第一个问题是要求你提供一个“完全限定域名”。如果你在一个不使用完全限定域名的本地网络上使用 `qrcp`(或者你不知道哪种方式),那么就把这个留空。`qrcp` 命令将使用你的本地 IP 地址代替。
下一个问题是提示你选择端口。大多数防火墙会阻止非标准的端口,但会将 8080 端口作为互联网流量的情况并不少见。如果你的防火墙屏蔽了 8080 端口,那么你还是要添加一个例外。假设你的系统使用 `firewalld`,你可以用这个命令允许 8080 端口的流量:
```
$ sudo firewall-cmd --add-port 8080/tcp --permanent
```
拒绝在“传输完成后保持网络连接”的选项,让 `qrcp` 生成一个随机路径。
假设你在一个可信的网络上,使用 HTTP而不是 HTTPS连接那么你不必配置 TLS。
配置保存在 `~/.config/qrcp/config.json` 中,并且之后可以编辑,所以如果你想改变设置,它很容易更新。
更新后的配置看起来像这样:
```
{
"fqdn": "",
"interface": "wlp0s20f3",
"port": 8080,
"keepAlive": false,
"path": "",
"secure": false,
"tls-key": "",
"tls-cert": "",
"output": "/home/don"
}
```
### 用 qrcp 传输文件
现在你已经准备好从你的 Linux 电脑向你的移动设备发送一个文件。在这个例子中,我使用了我的 iPhone它完全不支持 Linux这是臭名昭著的。这个过程在安卓设备上是完全一样的。
我是这样做的。首先,我在我的电脑上创建一个示例文件:
```
$ echo "Hello world"> ~/example.txt
```
接下来,我使用 `send` 子命令将文件从我的 Linux 电脑发送到我的手机:
```
Linux~$ qrcp send example.txt
```
![example of sending a file][2]
*使用 `qrcp send example.txt` 发送文件的例子CC BY-SA 4.0*
我打开我的相机应用(在 Android 上我使用一个保护隐私的专用二维码扫描器iPhone 扫描二维码并在我的手机上启动 Safari 浏览器。最后,我点击“下载”按钮。
![example download][3]
*下载示例 .txt 文件CC BY-SA 4.0*
### 用 qrcp 接收文件
接收文件也一样简单,只是命令略有不同:
```
$ qrcp receive
```
![example of receiving a file][4]
*使用 `qrcp receive` 命令接收一个文件CC BY-SA 4.0*
我扫描了二维码,它再次启动了我手机上的 Safari 浏览器,但这次出现了一些不同,因为我正在将文件从我的 iPhone 发送到 Linux 电脑上。
![example of selecting a file][5]
*选择一个要传输的文件CC BY-SA 4.0*
我点击“选择文件”,它让我选择想发送的文件。
![file appears in default location][6]
*文件被下载到默认位置CC BY-SA 4.0*
发送文件后,是在我的配置中指定的默认位置找到了文件。
### 尝试 qrcp
项目文档很简短但已足够,除了最初提出这个想法的 Claudio d'Angelis 之外,它还有开发者社区的支持。社区欢迎你加入他们,该应用将改变你对移动设备之间文件传输的看法。试试吧!
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/11/transfer-files-phone-linux
作者:[Don Watkins][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/don-watkins
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/idea_innovation_mobile_phone.png?itok=RqVtvxkd (A person looking at a phone)
[2]: https://opensource.com/sites/default/files/send-example.png
[3]: https://opensource.com/sites/default/files/download-example.png
[4]: https://opensource.com/sites/default/files/receive-file.png
[5]: https://opensource.com/sites/default/files/select-file.jpg
[6]: https://opensource.com/sites/default/files/default-location.png

View File

@ -0,0 +1,172 @@
[#]: subject: "How to Mount Bitlocker Encrypted Windows Partition in Linux"
[#]: via: "https://itsfoss.com/mount-encrypted-windows-partition-linux/"
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14008-1.html"
如何在 Linux 中挂载 Bitlocker 加密的 Windows 分区
======
> 情况是这样的。我的系统自带 Windows 10 Pro并且带有 BitLocker 加密功能。我 [甚至在 Windows 启用了 BitLocker 加密的情况下,以双启动模式安装了 Ubuntu][1]。
![](https://img.linux.net.cn/data/attachment/album/202111/22/144133k6n9xsnnt46t0z94.jpg)
你可以轻松地从 Linux 中访问 Windows 文件。没有什么高科技的东西。只要进入文件管理器,点击通常位于“<ruby>其他位置<rt>Other Locations</rt></ruby>”标签下的 Windows 分区。
![Mounting Windows partition through the file manager in Linux desktop][2]
对于 BitLocker 加密的 Windows 分区来说,这个过程也不是太复杂。只是当你试图挂载 Windows 分区时,它会要求你输入密码。
![Password required for encrypted Windows drive mount in Linux][3]
这是能工作的。在我的情况中,我输入了 48 位 BitLocker 恢复密码,它解密了 Windows 分区,并在带有 GNOME 40 的 Ubuntu 21.10 中毫无问题地挂载了它。
试试你的 BitLocker 密码。如果这不起作用,试试恢复密码。对于普通的 Windows 10 Pro 用户,恢复密码存储在你的微软账户中。
[BitLocker Recovery Password in Micrsoft Account][4]
输入恢复密码,你会看到 Windows 分区和它的文件现在可以访问。勾选“<ruby>记住密码<rt>Remember Password</rt></ruby>”框也是为了进一步使用而节省时间。
![Encrypted Windows partition now mounted in Linux][5]
如果上述方法对你不起作用,或者你不熟悉命令行,还有一个替代方法。
这个方法包括使用一个叫做 [Dislocker][6] 的工具。
### 使用 Dislocker 在 Linux 中挂载 BotLocker 加密的 Windows 分区(命令行方法)
使用 Dislocker 分为两部分。第一部分是解开 BitLocker 的加密,并给出一个名为 `dislocker-file` 的文件。这基本上是一个虚拟的 NTFS 分区。第二部分是挂载你刚刚得到的虚拟 NTFS 分区。
你需要 BitLocker 密码或恢复密码来解密加密的驱动器。
让我们来看看详细的步骤。
#### 步骤 1安装 Disclocker
大多数 Linux 发行版的仓库中都有 Dislocker。请使用你的发行版的包管理器来安装它。
在基于 Ubuntu 和 Debian 的发行版上,使用这个命令:
```
sudo apt install dislocker
```
![Installing Dislocker in Ubuntu][7]
#### 步骤 2创建挂载点
你需要创建两个挂载点。一个是 Dislocker 生成 `dislocker-file` 的地方,另一个是将这个 `dislocker-file`(虚拟文件系统)作为一个回环设备挂载。
没有命名限制,你可以给这些挂载目录起任何你想要的名字。
逐一使用这些命令:
```
sudo mkdir -p /media/decrypt
sudo mkdir -p /media/windows-mount
```
![Creating mount points for dislocker][8]
#### 步骤 3获取需要解密的分区信息
你需要 Windows 分区的名称。你可以使用文件资源管理器或像 Gparted 这样的 GUI 工具。
![Get the partition name][9]
在我的例子中Windows 分区是 `/dev/nvme0n1p3`。对你的系统来说,这将是不同的。你也可以使用命令行来达到这个目的。
```
sudo lsblk
```
#### 步骤 4解密分区并挂载
你已经设置好了一切。现在是真正的部分。
**如果你有 BitLocker 密码**,以这种方式使用 `dislocker` 命令(用实际值替换 `<partition_name>``<password>`
```
sudo dislocker <partition_name> -u<password> -- /media/decrypt
```
如果你只有恢复密码,请以这种方式使用该命令用实际值替换 `<partition_name>``<password>`
```
sudo dislocker <partition_name> -p<recovery_password> -- /media/decrypt
```
在解密该分区时,应该不会花很长时间。你应该在指定的挂载点看到 `dislocker-file`,在我们的例子中是 `/media/decrypt`。现在挂载这个 dislocker-file
```
sudo mount -o loop /media/decrypt/dislocker-file /media/windows-mount
```
![][10]
完成了。你的 BitLocker 加密的 Windows 分区已经被解密并挂载到 Linux 中。你也可以从文件资源管理器中访问它。
![Mounting Dislocker decrypted Windows partition with file manager][11]
#### 文件系统类型错误的故障排除提示
如果你遇到这样的错误:
```
mount: /media/windows-mount: wrong fs type, bad option, bad superblock on /dev/loop35, missing codepage or helper program, or other error.
```
你应该在挂载时指定文件系统。
对于NTFS使用
```
sudo mount -t ntfs-3g -o loop /media/decrypt/dislocker-file /media/windows-mount
```
对于 exFAT使用
```
sudo mount -t exFAT-fuse -o loop /media/decrypt/dislocker-file /media/windows-mount
```
#### 解除对 Windows 分区的挂载
你可以从文件管理器中取消挂载的分区。只要**点击名为 windows-mount 的分区旁边的卸载符号**。
或者,你可以使用卸载命令:
```
sudo umount /media/decrypt
sudo umount /media/windows-mount
```
我希望这对你有帮助。如果你还有问题或建议,请在评论中告诉我。
--------------------------------------------------------------------------------
via: https://itsfoss.com/mount-encrypted-windows-partition-linux/
作者:[Abhishek Prakash][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/abhishek/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/dual-boot-ubuntu-windows-bitlocker/
[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/mount-encrypted-windows-partition-in-linux.png?resize=800%2C476&ssl=1
[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/password-needed-for-encrypted-windows-drive-mount-in-Linux.png?resize=788%2C380&ssl=1
[4]: https://account.microsoft.com/devices/recoverykey?refd=support.microsoft.com
[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/encrypted-windows-partition-mounted-in-Linux.png?resize=800%2C491&ssl=1
[6]: https://github.com/Aorimn/dislocker
[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/install-dislocker-ubuntu.png?resize=786%2C386&ssl=1
[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/creating-mount-points-for-dislocker.png?resize=777%2C367&ssl=1
[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/show-device-name-gparted.png?resize=800%2C416&ssl=1
[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/mount-dislocker-decrypted-windows-partition.png?resize=777%2C253&ssl=1
[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/discloker-mount-encrypted-windows-partition.png?resize=800%2C483&ssl=1

View File

@ -0,0 +1,98 @@
[#]: subject: "How to Switch to Dark Mode in Fedora Linux [Beginners Tip]"
[#]: via: "https://itsfoss.com/fedora-dark-mode/"
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14002-1.html"
入门:如何在 Fedora Linux 中切换到深色模式
======
![](https://img.linux.net.cn/data/attachment/album/202111/20/114412oqqw4mdnxbwfbprb.jpg)
与 Ubuntu 不同Fedora 提供的是真正的、原生般的 GNOME 体验,而且体验很好,横向布局、三指滑动,一切都很好。
我不喜欢的一点是默认的标准主题,它是 Adwaita Light默认主题和深色的 GNOME Shell 的混合体。
因此,虽然通知和通知区是深色的,但系统和应用的其他部分是浅色主题。老实说,对我来说,这看起来很不协调。
![Fedora GNOME standard theme][1]
另一方面,深色主题让它看起来更好。
![Fedora GNOME dark theme][2]
让我告诉你如何在 Fedora 或其他任何使用 GNOME 桌面环境的发行版中开启深色模式。
### 在 Fedora 中切换到深色模式
好了!我将分享命令行的方法,因为它更快。打开一个终端,使用这个命令:
```
gsettings set org.gnome.desktop.interface gtk-theme Adwaita-dark
```
完成了。这很容易,对吗?但我也要展示一下 GUI 的方法。
因为我主要使用 Ubuntu所以我始终参照 Ubuntu。Ubuntu 在系统设置中本身就提供了在浅色和深色主题之间切换的选项。
然而,在原生 GNOME 中却没有这样的设置。你必须先 [在 Fedora 上安装 GNOME Tweaks 工具][3],然后用它来切换主题。
你可以在软件中心搜索它并点击“<ruby>安装<rt>Install</rt></ruby>”按钮:
![Install GNOME Tweaks from the software center in Fedora][4]
或者,你在终端输入以下命令:
```
sudo dnf install gnome-tweaks
```
安装完成后,按 `Super` 键(`Windows` 键)在系统菜单中搜索它:
![Start GNOME Tweaks][5]
点击左侧边栏的“<ruby>外观<rt>Appearance</rt></ruby>”标签,点击主题部分下的应用。
![Changing theme in Fedora][6]
你会看到这里有几个可用的主题。你应该在这里选择 “Adwaita-dark”。当你选择了它应用就会切换到深色主题。
![Selecting the Adwaita-dark theme][7]
就是你在 Fedora 中切换到深色模式所需要做的一切。由于 GNOME Shell 已经在使用深色主题,你不需要明确地将它设置为深色模式。所有的通知、信息栏等都是在深色模式下的。
### 总结
你可以找到各种深色 GTK 主题并安装它们来给你的 Fedora 带来不同的深色外观。然而,我注意到,只有系统自己的深色主题才能被网页浏览器识别。
所以,如果你访问一个根据你的系统主题自动启用深色模式的网站,它将与 Adwaita-dark 兼容,但可能与其他深色 GTK 主题不兼容。
这就是使用系统提供的深色主题的一个优势。
如你所见,在 Fedora 中启用深色模式并不是什么火箭科学。它只是一个了解和发现的过程。
享受深色色彩吧!
--------------------------------------------------------------------------------
via: https://itsfoss.com/fedora-dark-mode/
作者:[Abhishek Prakash][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/abhishek/
[b]: https://github.com/lujun9972
[1]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/fedora-gnome-standard-theme.webp?resize=800%2C450&ssl=1
[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/fedora-gnome-dark-theme.webp?resize=800%2C450&ssl=1
[3]: https://itsfoss.com/install-gnome-tweaks-fedora/
[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/install-gnome-tweaks-fedora.webp?resize=800%2C448&ssl=1
[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/start-gnome-tweaks-tool-in-Fedora.png?resize=800%2C271&ssl=1
[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/change-GTK-theme-Fedora.webp?resize=800%2C532&ssl=1
[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/switching-dark-mode-fedora.png?resize=800%2C515&ssl=1

View File

@ -0,0 +1,172 @@
[#]: subject: "3 interesting ways to use the Linux cowsay command"
[#]: via: "https://opensource.com/article/21/11/linux-cowsay-command"
[#]: author: "Don Watkins https://opensource.com/users/don-watkins"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14021-1.html"
使用 cowsay 命令的 3 种有趣方式
======
> 想试一个只是好玩的应用吗?试试 cowsay。
![](https://img.linux.net.cn/data/attachment/album/202111/25/232451f6v8fnne2np8e22e.jpg)
大多数时候,终端是一个生产力的动力源。但是,终端的作用不止是命令和配置。在所有杰出的开源软件中,有些是 [为了好玩而写的][2]。我以前介绍过一些 [有趣的命令][3],但这篇文章只讲一个:古老的 `cowsay` 命令。
`cowsay` 是一只可配置的会说话(或思考)的牛。它接受一个文本字符串,并输出一个牛说话的图形。下面是一头牛在说它喜欢 Linux
```
< I love Linux >
--------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
```
要得到这个结果,我只需输入:
```
$ cowsay "I love Linux"
```
### 在 Linux 上安装 cowsay
你可以用你的包管理器安装 `cowsay`。在 Debian、Mint、Elementary 和类似的发行版上:
```
$ sudo apt install cowsay
```
在 Fedora 上:
```
$ sudo apt install cowsay-beefymiracle
```
### Cowsay 命令选项
`cowsay` 是一个简单又有点傻的应用。除了为你的终端机提供一些不同样式外,它并没有什么实际用途。例如,与其让一头普通的牛说一个有趣短语,你可以让一头长着古怪眼睛的牛说一个有趣的短语。输入:
```
$ cowsay -e @@ Hello
```
你会看到:
```
< Hello >
-------
\ ^__^
\ (@@)\_______
(__)\ )\/\
||----w |
|| ||
```
或者你可以让它伸出舌头。输入:
```
$ cowsay -T U Hello
```
你会看到:
```
< Hello >
-------
\ ^__^
\ (oo)\_______
(__)\ )\/\
U ||----w |
|| ||
```
更好的是,你可以将 `fortune` 命令与 `cowsay` 结合起来:
```
$ fortune | cowsay
```
现在你有了一头特别睿智的牛:
```
_______________________________________
/ we: \
| |
| The single most important word in the |
\ world. /
---------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
```
### “结实的奇迹”
在 Fedora 上,有一个额外的 `cowsay` 选项也是一个非官方的项目吉祥物。多年来Fedora 安装程序一直在展示宣传开源贡献的幻灯片。因为它们是根据汽车电影院的插曲设计的,所以幻灯片中常见的卡通人物是拟人化的热狗。
为了与这个主题保持一致,你可以用 Fedora 版本的 `cowsay` 调用一个所谓的“<ruby>结实的奇迹<rt>beefy miracle</rt></ruby>”。LCTT 译注Fedora 17 的开发代号。)
```
$ cowsay -f beefymiracle Hello Fedora
```
你会得到一个非常傻的输出:
```
< Hello Fedora >
-------------- .---. __
, \ / \ \ ||||
\\\\ |O___O | | \\||||
\ // | \_/ | | \ /
'--/----/| / | |-'
// // / -----'
// \\ / /
// // / /
// \\ / /
// // / /
/| ' / /
//\___/ /
// ||\ /
\\_ || '---'
/' / \\_.-
/ / --| |
'-' | |
'-'
```
### 图形化的 cowsay
如果你发现自己需要用图形化的牛来传递信息,可以使用 `xcowsay` 命令。这是一个类似于 `cowsay` 的图形程序,它接受一个由用户输入的文本字符串,或从另一个应用(如 Fortune输送过来的文本字符串。
![A cartoon cow has a speech bubble that reads "I love Linux"][4]
### 有趣的 Linux 命令
虽然 `cowsay` 不是一个有用的命令,但它是一个有趣的命令,相当于你终端的桌面小工具。它很适合用来分散注意力和进行有趣的管道命令实验(尝试将 `ifconfig` 管道到 `cowsay`,或 `lsblk``mount`,或任何东西!)。如果你想让你的终端更有趣,试试 `cowsay`
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/11/linux-cowsay-command
作者:[Don Watkins][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/don-watkins
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LIFE_CowParade_osdc.png?itok=6GD1Wnbm (Cow on parade.)
[2]: https://opensource.com/life/16/6/fun-and-semi-useless-toys-linux
[3]: https://opensource.com/article/21/11/fun-linux-commands
[4]: https://opensource.com/sites/default/files/uploads/graphical_cowsay.png (graphical cowsay)
[5]: https://creativecommons.org/licenses/by-sa/4.0/

View File

@ -0,0 +1,161 @@
[#]: subject: "Create Windows, macOS, and Linux Virtual Machines Easily With QEMU-based Quickgui"
[#]: via: "https://itsfoss.com/quickgui/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-13998-1.html"
利用基于 QEMU 的 Quickgui 轻松创建虚拟机
======
![](https://img.linux.net.cn/data/attachment/album/202111/19/104431xwh8h8hw228e77hh.jpg)
> Quickgui 旨在成为 VirtualBox 的一个更简单的替代品,帮助你快速创建虚拟机。让我们来看看它。
目前,借助 VirtualBox、VMware 和其他一些程序,创建虚拟机相当容易。
你当然可以 [在你的 Linux 系统中安装 VirtualBox][1] 来创建虚拟机。但是,在这篇文章中,我把重点放在一个令人兴奋的工具上,即 Quickgui它使用简单运行速度快能帮助你快速启动虚拟机。
### QuickguiQuickemu 的图形用户界面前端
![][2]
Quickemu 是一个基于终端的工具,可以让你创建优化的桌面虚拟机并轻松地管理它们。该工具专注于消除配置虚拟机的所有细微差别。相反,它根据虚拟机的可用系统资源选择最佳配置以使其正常工作。
不仅限于配置,它还会下载操作系统的镜像(使用 quickget 包)。
因此,你所要做的就是像通常那样安装操作系统,然后开始工作。
Quickemu 以 [QEMU][3] 为核心,旨在用 Bash 和 QEMU 取代 VirtualBox。
QEMU 是一个开源的机器仿真器和虚拟化器。
Quickemu 是一个有趣的项目,由 [Martin Wimpress][4]Ubuntu MATE 负责人)在一些贡献者的帮助下完成。
作为对这个工具的补充Quickgui 是一个使用 [Flutter][5] 开发的前端,由另一组开发人员开发,以帮助在没有终端的情况下使用 Quickemu。
在此,我们重点介绍使用 Quickemu 创建和管理虚拟机的前端 Quickgui。
### Quickgui 的特点
![在 Zorin OS 16 上使用 Quickgui 运行虚拟机][6]
如上所述Quickgui 作为一个前端,其核心利用的是 Quickemu。因此你可以期待其具有同样的功能。
你可以用它做的一些事情包括:
* 搜索操作系统并下载它们以创建虚拟机。
* 管理你现有的虚拟机。
* 当你建立一个虚拟机时,创建默认配置。
* 提供黑暗模式。
* 开箱即用地创建 Windows 和 macOS 虚拟机。
* 支持各种 Linux 发行版,包括 elementaryOS、ZorinOS、Ubuntu 等。
* 支持 FreeBSD 和 OpenBSD。
* 支持 EFI 和传统的 BIOS。
* 不需要提升权限就能工作。
* 默认情况下,宿主机/访客机共享剪贴板。
* 可以选择镜像压缩方法。
* 能够禁用输入。
* 能够切换虚拟机中宿主机/访客机的可用 USB 设备。
* 包括对 [SPICE 连接][7] 的支持。
* 网络端口转发。
* Samba 文件共享。
* VirGL 加速。
* 智能卡直通。
鉴于它是如此简单和容易使用,其功能集令人印象深刻。让我给你提供一些使用的技巧。
### Quickgui 入门
用户界面非常简单,你可以选择 “<ruby>管理现有机器<rt>Manage existing machines</rt></ruby>” 和 “<ruby>创建新机器<rt>Create new machines</rt></ruby>”。
你需要点击“<ruby>创建<rt>Create</rt></ruby>”来开始制作虚拟机。
![Quickgui VM Creation][8]
选择操作系统,你应该看到一个列表。如果你找不到目标操作系统,只需搜索一下,它应该会出现。
![][9]
你会看到各种各样的操作系统。在接下来的选择中,选择所需的操作系统及其版本。然后,点击 “<ruby>下载<rt>Download</rt></ruby>”。
它应该会下载恢复镜像或 ISO这取决于你正在尝试的操作系统。下载将取决于你的互联网连接但它工作得很完美。
如果你想自己下载 ISO你将就得为它创建配置并进行设置。看看 [Quickemu 的 GitHub 页面][10],了解一下它的说明。
![][11]
你只需要在下载完成后点击 “<ruby>去除<rt>Dismiss</rt></ruby>”。
在这篇文章中,我测试了启动一个 Linux 虚拟机([elementary OS 6][12])、一个 macOS 实例,以及一个 Windows 虚拟机。
我成功地以虚拟机方式运行了 Linux 和 macOS 。然而,我在快速建立一个 Windows 虚拟机时遇到了一些问题。我在 Quickemu 的 GitHub 页面上找不到任何相关信息,所以我没有费心去排除故障。
如果你需要使用 Windows 虚拟机,可以自己试试,并在他们的 [Discord 服务器][13] 中联系他们寻求帮助。
你不一定需要改变虚拟机的配置来使其工作。因此,它变成了一个节省时间的工具。
### 在 Linux 中安装 Quickgui
要使用 Quickgui你需要先安装 Quickemu。
对于基于 Ubuntu 的发行版,你可以使用 PPA 来安装它:
```
sudo apt-add-repository ppa:flexiondotorg/quickemu
sudo apt update
sudo apt install quickemu
```
它应该安装了你需要的所有东西(连同 quickget 包),使其发挥作用。
完成后,你可以使用另一个 PPA 继续安装 Quickgui
```
sudo add-apt-repository ppa:yannick-mauray/quickgui
sudo apt update
sudo apt install quickgui
```
如果你使用的是其他 Linux 发行版,你可以参考 [Quickemu 的 GitHub 页面][10] 和查看 [Quickgui 的 GitHub 页面][14],以获得更多说明。
### 总结
Quickgui 使人们能够方便地利用 Quickemu 的能力,快速创建和管理多个虚拟机,而不需要进行任何配置。
更有好的是,你不需要提升权限就能让它工作。
因此,如果你正在寻找 VirtualBox 的替代品,这可能就是答案。或者,你也可以试试 [GNOME Boxes][15] 作为一个更简单的替代品。
你对 Quickgui 有什么看法?请在下面的评论中告诉我你的想法。
--------------------------------------------------------------------------------
via: https://itsfoss.com/quickgui/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/install-virtualbox-ubuntu/
[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/quickgui-emu.png?resize=800%2C547&ssl=1
[3]: https://www.qemu.org/
[4]: https://twitter.com/m_wimpress
[5]: https://itsfoss.com/install-flutter-linux/
[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/quickgui-vms.png?resize=800%2C450&ssl=1
[7]: https://www.spice-space.org/index.html
[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/quickgui-select.png?resize=800%2C534&ssl=1
[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/quickgui-quickemu-selection.png?resize=800%2C559&ssl=1
[10]: https://github.com/wimpysworld/quickemu
[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/quickemu-gui-mac.png?resize=800%2C552&ssl=1
[12]: https://news.itsfoss.com/elementary-os-6-features/
[13]: https://discord.com/invite/sNmz3uw
[14]: https://github.com/quickgui/quickgui
[15]: https://help.gnome.org/users/gnome-boxes/stable/

View File

@ -0,0 +1,95 @@
[#]: subject: "A Notion like Open-Source App is in Development"
[#]: via: "https://news.itsfoss.com/appflowy-development/"
[#]: author: "Rishabh Moharir https://news.itsfoss.com/author/rishabh/"
[#]: collector: "lujun9972"
[#]: translator: "zengyi1001"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14012-1.html"
一个正在开发中的类似 Notion 的开源 APP
======
> 它被称为“Notion 的开源替代品”AppFlowy 旨在让你可以完全控制你的数据和定制选项。
![](https://img.linux.net.cn/data/attachment/album/202111/23/162933pedqtdm73tk7tp49.jpg)
Notion 是深受团队和个人欢迎的生产力应用之一,而现在我们似乎有希望获得一个有前途的开源替代品。
这里为还没用过 Notion 的人介绍一下Notion 是一个多功能合一的生产力应用,可以用于创建/管理任务、笔记、项目、数据,以及组建维基。
换句话说,它能让你自由组织你的<ruby>工作流<rt>workflow</rt></ruby>让你在一个地方就能集中完成所有事情。更进一步Notion 还支持连接团队或邀请他人的协作功能。
那么,如果有一个可以提供类似 UI 和功能的开源应用会怎么样?
这就是 AppFlowy。
![](https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/AppFlowy-ft.png?w=1200&ssl=1)
### 什么是 AppFlowy
![Source: AppFlowy.io][1]
AppFlowy 和 Notion 非常相像,但有一个巨大的区别,那就是它是 100% 开源的。
虽然它还处在一个积极开发中的状态,但已经吸引到了不少的关注。至少可以说,尽管它是一个全新的东西,但任何开源替代项目都是令人兴奋的!
正如他们 GitHub 页面的表述,说明了为什么开发者们想要创造一个 Notion 的替代品:
> 我们都知道 Notion 有其局限性。比如说脆弱的数据安全性和糟糕的移动设备端兼容性。同样,其它一些协作工作管理工具替代品也具有各自的局限性。
因此,他们希望他们的的用户既拥有 Notion 的功能特性,又具备良好的数据安全性和由社区驱动的良好的原生体验。
他们也明确表示不想在功能特性和设计上与 Notion 相竞争。
> 坦率的讲,我们并没有声称在功能和设计上要优于 Notion至少现在还是如此。此外我们当前的首要任务也不在于提供更多的功能。相反我们期望培养一个社区使制作复杂工作场所管理工具的知识和设施民主化同时通过为个人和企业配备一个多功能积木工具箱使他们能够自己创造美好的事物。
听起来很吸引我!
继续关于 **AppFlowy** 的更多信息:
AppFlowy 的首个 macOS 版本已经在几天前发布了。它是用 Flutter 和 Rust 构建的。
它的目标是让用户和团队能够完整控制他们的数据和定制。他们还表示,他们希望提供包括移动设备在内的跨平台的原生体验。除此之外,你还可以离线访问你的工作区,这一点是与 Notion 不同的。
别忘了,社区可以发布定制主题和模板给他人使用,你可以按照你的需求任意定制。用户对它的发展能产生直接的影响。
它还将支持插件以扩展应用的功能。因此,即使你不具有任何编程经验,你也仍然可以选择使用这些插件来增强你工作空间的功能。并且,由于它的 UI 和 Notion 本身非常相似,如果你以后想要在两者之间切换,也不会让你感觉有太大的改变。
### 是否仅支持 macOS
到目前为止只有 macOS 的用户可以尝鲜使用 AppFlowy。但 Linux 和 Windows 客户端也在开发之中。你可以持续关注它的 [GitHub 主页][2] 或订阅官网的最新通知。
开发者还希望能带来更多视觉上的改变和优化。
当然,它仍然处在开发阶段。所以也别期望它现在就能替代 Notion。一些类似于<ruby>拖放模式<rt>drag/drop</rt><ruby>和离线模式的功能仍然还在它的 [路线图][3] 之中。
如果你有兴趣的话,可以访问它的官方网站或 GitHub 页面获取更多的信息,以及为其发展做出贡献。
- [AppFlowy][4]
### 总而言之
有了社区的支持AppFlowy 可能是 Notion 的可靠替代品。基于免费和开源的事实让它一开始就吸引大量个人和团队来试用它。
我也开始期待它尽快增加对 Linux 的支持,我知道它已经在开发中了。
你如何看待 AppFlowy? 你会计划试用它吗?
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/appflowy-development/
作者:[Rishabh Moharir][a]
选题:[lujun9972][b]
译者:[zengyi1001](https://github.com/zengyi1001)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/rishabh/
[b]: https://github.com/lujun9972
[1]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/welcome.png?resize=1568%2C1117&ssl=1
[2]: https://github.com/AppFlowy-IO/appflowy
[3]: https://trello.com/b/NCyXCXXh/appflowy-roadmap
[4]: https://www.appflowy.io

View File

@ -0,0 +1,141 @@
[#]: subject: "Raspberry Pi 3 vs 4: Which One Should You Get?"
[#]: via: "https://itsfoss.com/raspberry-pi-3-vs-4/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-13997-1.html"
树莓派 3 还是 4你应该买哪一个
======
![](https://img.linux.net.cn/data/attachment/album/202111/18/171924sg0bk3iu43bwi3x4.jpg)
树莓派是一种物美价廉的单板计算机,在很多场景都很有用。不过,在树莓派 4 之前,它作为快速的桌面替代品并不是一个特别合适的选择。
所以,树莓派 4 以其新的功能改变了游戏规则。但是,它与树莓派 3 相比如何?
树莓派 3 仍然值得考虑吗?或者,你应该去买最新和更强大的树莓派 4
在这篇文章中,我们试图通过强调两者之间的一些关键差异来为你提供一些答案。
首先,让我们看一下两者提供的规格:
### 树莓派 3 的规格
![][1]
树莓派 3 满足了一个基本入门 DIY 项目的所有要求。如果 [树莓派 Zero 或 树莓派 Zero W][2] 不符合你的要求,那么树莓派 3 是一个物美价廉的选择:
* 四核 1.2GHz 博通 BCM2837 64 位 CPU
* 1GB 内存
* 无线局域网和低功耗蓝牙BLE
* 以太网
* 40 针扩展 GPIO
* 4 个 USB 2 端口
* 4 极立体声输出和复合视频端口
* 全尺寸的 HDMI
* CSI 摄像机端口
* DSI 显示端口
* 用于操作系统和存储数据的微型 SD 端口
* 升级后的开关式微型 USB 电源,最高可达 2.5A 电流
### 树莓派 4 的规格
![][3]
* 博通 BCM2711四核 Cortex-A72ARM v864 位 SoC @ 1.5GHz
* 2GB、4GB 或 8GB LPDDR4-3200
* 2.4 GHz 和 5.0 GHz IEEE 802.11ac 无线,蓝牙 5.0BLE
* 千兆位以太网
* 2 个 USB 3.0 端口
* 2 个 USB 2.0 端口
* 40 针 GPIO 接头(向后兼容)
* 2 个微型 HDMI 端口(最多可支持 4kp60
* 2 线 MIPI DSI 显示端口
* 2 线 MIPI CSI 摄像头端口
* 4 极立体声音频和复合视频端口
* H.2654kp60 解码H2641080p60 解码1080p30 编码)
* OpenGL ES 3.1Vulkan 1.0
* 用于操作系统和存储数据的 MicroSD 卡插槽
* 通过 USB-C 接口的 5V 直流电
* 通过 GPIO 接头的 5V 直流电
* 通过以太网供电
### 内存RAM选项
对于树莓派机型,通常情况下,你会得到一个包括 1 或 2GB 内存的单一产品阵容。
树莓派 3B+ 就是这种情况。如果你不需要更多的内存,树莓派 3 可以就是一个不错的解决方案,可以满足所有常规 DIY 项目的需求。
然而,对于树莓派 4你可以选择 2GB、4GB 和 8GB 的版本。所以,如果你想完成更多的事情,或者在你的树莓派板上实现多个任务,树莓派 4 应该是一个不错的选择。
### 性能差异
尽管这两块板子都采用了博通公司的芯片,但树莓派 4 的性能明显更快。
如果你想把它作为你的迷你桌面的替代品,或者想为你的任务获得更好的计算能力,树莓派 4 将是明显的选择。
说到树莓派 3它配备了一个四核 1.2GHz 的博通 BCM2837 64 位 CPU。它是一个能够完成各种任务的芯片。
#### 连接能力
两块树莓派板都提供了一个 40 针的扩展 GPIO 接头。
然而,说到 USB 连接时,树莓派 4 提供了两个 USB 3.0 端口以及另外两个 USB 2 端口。而树莓派 3 只限于两个 USB 2 端口。
因此如果你需要更快的数据传输速度USB 3.0 端口应该会有帮助。例如,如果你要使用任何 [媒体服务器软件][4],这可以派上用场。
除此之外,树莓派 4 上还有 USB-C 的存在,如果 USB 配件需要它可以用来给电路板供电5V DC
#### 双显示器与相机支持
虽然树莓派 3 提供了一个全尺寸的 HDMI 端口、DSI 端口和 CS 端口,但它并不具有双显示器支持。
有了树莓派 4你可以得到两个微型 HDMI 端口,一个双通道 DSI 端口和一个双通道 CSI 摄像头端口。
### 你应该买哪一个?
规格 | 树莓派 3 | 树莓派 4
---|---|---
**处理器** | 四核 1.2GHz 博通 BCM2837 | 四核 1.5GHz 博通BCM2711
**RAM** | 1 GB | 高达 8 GB
**蓝牙** | BLE | 蓝牙 5.0
**USB端口** | 4 x USB 2.0 | 2 x USB 3.02 x USB 2.0
**无线连接** | 是 | 是2.4 GHz & 5 GHz 频段支持
**显示端口** | 1 x HDMI1 x DSI | 2 x micro-HDMI1 个 DSI
**电源** | microUSB 和 GPIO高达 2.5 A | 5V DC通过 USB-C 和GPIO3 A
**MicroSD 插槽** | 是 | 是
**价格** | 35 美元 | 35 美元1 GB 内存、45 美元2 GB 内存、55 美元4 GB 内存、75 美元8 GB 内存)
如果你想要更快的数据传输,支持双显示器,以及更好的性能,树莓派 4 是一个很好的选择。
考虑到 2GB 内存的树莓派 4 基本型号的价格约为 35 美元。以几乎相同的价格选择 1GB 的树莓派 3 型号,实在是毫无意义。
当然,除非你能得到一个更便宜的价格,并且有特定的要求。树莓派 4 总体上是一个明确的选择。
然而,有一些事情,如板子发热和其他潜在的问题,你可能想在决定之前探讨一下。树莓派 3 已被证明能在许多项目中发挥作用,而树莓派 4 是相当新的,可能还没有经过各种项目的测试。
一旦你确定了这一点,你就可以继续得到它们中的任何一个。
你喜欢用什么?你都试过了吗?请在下面的评论中告诉我们。
--------------------------------------------------------------------------------
via: https://itsfoss.com/raspberry-pi-3-vs-4/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/raspberry-pi-3.jpg?resize=800%2C534&ssl=1
[2]: https://itsfoss.com/raspberry-pi-zero-vs-zero-w/
[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/raspberry-pi-4.jpg?resize=583%2C340&ssl=1
[4]: https://itsfoss.com/best-linux-media-server/
[5]: https://itsfoss.com/raspberry-pi-projects/

View File

@ -0,0 +1,104 @@
[#]: subject: "How to Install Brave Browser on Fedora, Red Hat & CentOS"
[#]: via: "https://itsfoss.com/install-brave-browser-fedora/"
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14028-1.html"
如何在 Fedora Linux 上安装 Brave 浏览器
======
![](https://img.linux.net.cn/data/attachment/album/202111/28/102349idh316xz3bslr6ps.jpg)
[Brave][1] 是一个越来越 [流行于 Linux][2] 和其他操作系统的网页浏览器。对默认情况下阻止广告和跟踪的关注,以及对 Chrome 扩展的支持,使 Brave 成为 Linux 用户的热门选择。
在本教程中,你将学习如何在 Fedora Linux 上安装 Brave。你还将学习如何更新和删除它。
本教程已经在 Fedora 上进行了测试,但它也应该适用于基于 Red Hat 的其他发行版,如 CentOS、Alma Linux 和 Rocky Linux。
### 在 Fedora Linux 上安装 Brave 浏览器
你需要在这里用命令行的方式来安装 Brave。
作为先决条件,请确保 `dnf-plugin-core` 已经安装。
```
sudo dnf install dnf-plugins-core
```
下一步是将 Brave 仓库添加到你的系统中:
```
sudo dnf config-manager --add-repo https://brave-browser-rpm-release.s3.brave.com/x86_64/
```
你还应该导入并添加仓库密钥,这样你的系统就会信任来自这个新添加的仓库的软件包:
```
sudo rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc
```
![Adding Brave Browser repository in Fedora Linux][3]
现在可以开始了。用这个命令安装 Brave
```
sudo dnf install brave-browser
```
**当被要求确认你的选择时按 `Y`**。根据你的网速,这应该需要几秒钟或几分钟的时间。如果 DNF 的缓存最近没有更新,甚至可能需要更长时间。
![Installing Brave Browser in Fedora][4]
安装完成后,在系统菜单中寻找 Brave 并从那里启动。
![Start Brave browser in Fedora Linux][5]
### 在 Fedora Linux 上更新 Brave 浏览器
你已经为浏览器添加了一个仓库,并且导入了它的密钥。你的系统信任来自这个仓库的软件包。
因此,当有新的 Brave 浏览器发布并提供给这个仓库时,你会通过常规的系统升级得到它。
换句话说,你不需要做任何特别的事情。只要保持你的 Fedora 系统更新,如果有 Brave 的新版本,它应该会随着系统更新自动安装。
### 从 Fedora Linux 中删除 Brave 浏览器
![Brave Browser in Fedora Linux][6]
如果你因为某些原因不喜欢 Brave你可以从你的系统中删除它。只需使用 `dnf remove` 命令:
```
sudo dnf remove brave-browser
```
当询问时按 `Y`
![Removing Brave browser from Fedora Linux][7]
你也可以选择禁用 `brave-browser-rpm-release.s3.brave.com_x86_64_.repo` 或者从 `/etc/yum/repos.d` 中完全删除这个文件,虽然这并不是必须的。
我希望这个快速提示对你有帮助。如果你有任何问题或建议,请让我知道。
--------------------------------------------------------------------------------
via: https://itsfoss.com/install-brave-browser-fedora/
作者:[Abhishek Prakash][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/abhishek/
[b]: https://github.com/lujun9972
[1]: https://brave.com/
[2]: https://itsfoss.com/best-browsers-ubuntu-linux/
[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/adding-Brave-browser-repository-in-Fedora.png?resize=800%2C300&ssl=1
[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/Installing-Brave-Browser-Fedora.png?resize=800%2C428&ssl=1
[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/start-brave-fedora-linux.png?resize=759%2C219&ssl=1
[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/Brave-Browser-in-Fedora-Linux.png?resize=800%2C530&ssl=1
[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/removing-Brave-browser-Fedora-Linux.png?resize=800%2C399&ssl=1

View File

@ -0,0 +1,118 @@
[#]: subject: "How to Install Discord on Fedora Linux"
[#]: via: "https://itsfoss.com/install-discord-fedora/"
[#]: author: "Pranav Krishna https://itsfoss.com/author/pranav/"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14025-1.html"
如何在 Fedora Linux 上安装 Discord
======
![](https://img.linux.net.cn/data/attachment/album/202111/27/115501g3oiuirvzk4nvu3k.jpg)
[Discord][1] 是一个流行的消息收发应用,可用于文字和语音信息传递。
它是一些社区的福音,可以帮助他们扩大项目,接触更多的人,并维持一个粉丝和关注者的社区。而 Discord 最初是为游戏玩家设计的,这很令人惊讶。
Discord 可用于各种平台,包括 Linux。在本教程中我将引导你完成在 Fedora 中安装 Discord 的步骤。
* 使用 DNF 和 RPM Fusion 仓库安装 Discord
* 通过 Flatpak 安装Discord
Flatpak 软件包是沙盒的,因此需要更多的磁盘空间和时间来启动。然而,他们会相当快地更新到新的版本。
无论你想使用 Flatpak 还是 DNF选择权在你手上。我将向你展示这两种方法。
> 非 FOSS 警报!
>
> Discord 并不是开源的。但由于他们提供了一个 Linux 客户端,而且许多 Linux 用户都依赖它,所以我们会在这里介绍它。
### 方法 1通过 RPM Fusion 仓库安装 Discord
Discord 可以通过添加非自由的 RPM Fusion 仓库来安装,这是大多数 Fedora 用户的首选方法,因为更新很容易,而且应用的启动速度比 Flatpak 版本快。
打开终端,使用下面的命令来添加 RPM-fusion 非自由仓库:
```
sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
```
完成后,更新仓库列表(应该不需要,但只是为了它):
```
sudo dnf update
```
然后通过 `dnf` 命令安装 Discord像这样
```
sudo dnf install discord
```
![Installing Discord using DNF][2]
如果被要求导入 GPG 密钥,只要按 `Y` 就可以授权了。
![Authorize GPG key][3]
这就完成了!现在你可以从应用菜单中启动 Discord。你的登录页面将看起来像这样
![Launch Discord application][4]
#### 通过 DNF 删除 Discord
如果你不想再使用 Discord你可以从你的系统中删除它。要做到这一点在终端运行以下命令
```
sudo dnf remove discord
```
这真的很简单,不是吗?还有一种简单的安装 Discord 的方法,那就是使用 Flatpak 软件包。
### 方法 2通过 Flatpak 安装 Discord
Discord 可以使用 Flatpak 轻松安装,因为它在 Fedora 中是默认可用的。
首先,你需要在 Fedora 中启用 Flatpak 仓库:
```
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
```
接下来,通过这个命令安装 Discord
```
flatpak install discord
```
![Install Discord via Flatpak][5]
如果你想删除 Discord那么只需运行
```
flatpak remove discord
```
这就超级简单了。如果你在 Fedora Linux 上安装 Discord 需要任何帮助,请告诉我。
--------------------------------------------------------------------------------
via: https://itsfoss.com/install-discord-fedora/
作者:[Pranav Krishna][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/pranav/
[b]: https://github.com/lujun9972
[1]: https://discord.com/
[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/install-discord-dnf.png?resize=800%2C525&ssl=1
[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/authorize-gpg-key-1.png?resize=800%2C573&ssl=1
[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/Discord-2.png?resize=800%2C432&ssl=1
[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/install-discord-flatpak.png?resize=800%2C545&ssl=1

View File

@ -0,0 +1,132 @@
[#]: subject: "vifm: A Terminal File Browser for Hardcore Vim Lovers"
[#]: via: "https://itsfoss.com/vifm-terminal-file-manger/"
[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14001-1.html"
vifm为铁杆 Vim 爱好者提供的终端文件浏览器
======
> 让我们探索一个基于终端的文件浏览器,可以使用 Vim 风格的键绑定。
![](https://img.linux.net.cn/data/attachment/album/202111/20/103256stau7uhetccj7uun.png)
当在命令行中浏览 [Linux 目录结构][1] 时,人们经常依赖 [cd 命令][2]。
这也没什么不好,因为你登录到任何一个 Linux 系统上都有 `cd` 命令。
然而,如果系统是由你维护的,你想更直观地看到目录,那么文件管理器比 `cd``tree` 命令要好得多。
是的,你也可以在终端中找到文件管理器。它们可能不如 Nautilus 这样的图形界面应用,但仍然比普通的老命令好。
有几个 [TUI][3] 文件浏览器,我们已经介绍了其中的几个。今天,我们来看看 `vifm`
### vifm 简介
![][4]
[vifm][5] 是一个命令行工具,它是一个文件管理器,导航和操作文件系统对象的键绑定与 Vim 类似。如果你不清楚我所说的“文件系统对象”是什么意思,它们是文件、目录、符号链接、硬链接等。
除了非常直观的 Vim 交互键绑定外,下面是 `vifm` 为你提供的一系列功能:
* 一个就在你的终端中的快速文件管理器
* 从文件管理器内编辑文本文件
* `vifm` 使用 curses 界面
* `vifm` 是跨平台的(在 Cygwin 的帮助下甚至可以在 Windows 上工作;它应该可以,但我没有测试过)
* 支持 Vim 风格的键绑定输入,如 `dd`、`j`、`k`、`h`、`l` 等
* [vifm 插件][6] 可以在 Vim 中使用,这样就可以通过 Vim 打开文件
* 支持 Vim 命令的自动补完
* 支持多个面板
* 可以使用 [或不使用] 正则表达式进行批量重命名
### 在 Linux 上安装 vifm
`vifm` 软件包并不算新,因此在默认情况下,即使是“稳定”发行版(如 Debian的软件库中也很容易找到它。
在 Debian 和基于 Debian 的发行版(如 Ubuntu、Pop!_OS、Mint 等)之上,你可以 [使用 apt 软件包管理器][7] 来安装 `vifm`
```
sudo apt install vifm
```
使用 [pacman 软件包管理器][8] 在 [基于 Arch 的 Linux 发行版][9]上安装 `vifm`
```
sudo pacman -S vifm
```
`vifm` 在 Fedora 和 RHEL 仓库中也有;用 DNF 软件包管理器安装它:
```
sudo dnf install vifm
```
安装好了 `vifm`,你可以简单地在终端输入 `vifm`,像下面这样,然后启动它:
```
vifm
```
### vifm 的用户界面
当你第一次启动 `vifm` 时,默认情况下,它启动时显示你当前所在的目录的概览。你还会注意到,`vifm` 默认使用两个窗格。
![默认的 vifm 界面,包括一个正常的视图(隐藏的文件不可见)和两个默认打开的窗格][10]
如果你对界面感到困惑,只需尝试按 `j` 键将光标向下移动一行,按 `k` 键将光标向上移动一行。你可以通过按 `h` 键向上移动一级目录。就像 Vim 中一样!
如果你的光标目前在一个文件上,按 `l` 键将在 Vim 中打开该文件(如果没有另外说明的话)。但如果你的光标在一个目录上,按 `l` 键将导航到该目录并显示其内容。
你也可以通过按 `Ctrl + g` 键绑定,从文件管理器中获得关于文件或目录的详细信息。
![`Ctrl + g` 键绑定如何显示目录/文件信息的屏幕截图][11]
你可以按 `za` 键来显示被隐藏的文件和目录(开头有 `.` 的文件和目录默认是隐藏的)。如果这些特殊的文件和目录没有被隐藏,按 `za` 键将会隐藏它们。
你可以用 `zo` 键绑定一直显示隐藏的文件和目录,或用 `zm` 键绑定使这些项目一直不可见。
![举例说明,当你按下 `zo` 键绑定时的情况][12]
### 总结
由于它是基于 Vim 的,你可以用 vifmrc 文件来配置它。在 [vifm wiki][15] 上有最新的默认绑定键的速查表,在 [这里][16]。这个项目的文档非常好。
![vifm 默认按键绑定][17]
`vifm` 是一个了不起的文件管理器,特别是对于 Vim 用户来说,因为它与 Vim 生态系统整合得非常好。它将许多 Vim 的功能和按键绑定整合到一个文件管理器中。默认的双窗格布局使其更具生产力。
不要犹豫,尝试一下 `vifm`。它真的是一个了不起的命令行工具。
--------------------------------------------------------------------------------
via: https://itsfoss.com/vifm-terminal-file-manger/
作者:[Pratham Patel][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/pratham/
[b]: https://github.com/lujun9972
[1]: https://linuxhandbook.com/linux-directory-structure/
[2]: https://linuxhandbook.com/cd-command-examples/
[3]: https://itsfoss.com/gui-cli-tui/
[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/vifm-screenshot.png?resize=800%2C309&ssl=1
[5]: https://github.com/vifm/vifm
[6]: https://github.com/vifm/vifm.vim
[7]: https://itsfoss.com/apt-command-guide/
[8]: https://itsfoss.com/pacman-command/
[9]: https://itsfoss.com/arch-based-linux-distros/
[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/01_two_panes-1.webp?resize=800%2C600&ssl=1
[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/02_ctrl_g_info.webp?resize=800%2C600&ssl=1
[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/03_toggle_dotfile_visibility.webp?resize=800%2C600&ssl=1
[13]: https://itsfoss.com/nnn-file-browser-linux/
[14]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2017/04/nnn-file-browser.jpg?fit=800%2C450&ssl=1
[15]: https://wiki.vifm.info/index.php/Main_Page
[16]: https://vifm.info/cheatsheets.shtml
[17]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/vifm-key-binding-cheatsheet.webp?resize=800%2C561&ssl=1

View File

@ -0,0 +1,98 @@
[#]: subject: "KDE Plasma 5.24 To Add a GNOME-Style Overview and Will Prevent You From Uninstalling Plasma"
[#]: via: "https://news.itsfoss.com/kde-plasma-5-24-dev/"
[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14015-1.html"
开发中的 KDE Plasma 5.24 新变化:增加 GNOME 式概览、防删功能
======
> KDE Plasma 正在升级中,以改善类似于 GNOME shell 的概览,并为非技术用户提供更多的可用性改进。
![](https://i1.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/kde-plasma-5-24-dev-ft.png?w=1200&ssl=1)
自从 2011 年 GNOME 3 以来,活动概览在与 GNOME 的互动中起到了关键作用。尽管它在发布时受到了严厉的批评,但许多用户现在已经爱上了它,导致其他一些桌面环境也在考虑实现类似的功能。
而且,看起来 KDE Plasma 正在添加类似的东西,它就像是一个全新的类似 GNOME 的概览。让我们来仔细了解一下。
### 新的 Plasma 概览
![Image: Vlad Zahorodnii / KDE Developer][1]
当我偶然看到 KDE 开发者 [Nate Graham 的博文][2] 时,我注意到了一个与 GNOME 活动概览非常相似的东西。
如上面的截图所示,当你在 KDE 上按 `Windows`/`Super` 键进入概览界面时,你就会看到它。
然而,值得注意的是,它仍然处在开发版本中。而且,它已经被合并到 KDE Plasma 5.24 中去了。
但是它和 GNOME 活动概览相似吗?
它看起来确实相似,但有一些关键的区别,其中包括:
* 在概览中,你可以完全访问底部面板。
* 搜索功能是由 KRunner 提供的,用来寻找应用程序和活动窗口。
#### 可以完全访问底部面板
如果你正在使用 KDE你肯定知道底部面板。到目前为止它与 GNOME 的概览效果最显著的区别是有任务栏。这使得用户可以访问一个统一的地方来打开应用程序,访问快速设置,并查看通知。
作为一个拥有任务栏的传统桌面理念的粉丝,这对于 Plasma 这样的传统桌面环境来说感觉非常完美。
#### 使用 KRunner 进行强大的搜索(新增加的功能)
![][1]
多年来KRunner 无疑是 Linux 中最强大的应用程序启动器之一。它的一些神奇功能包括可以搜索:
* 文件
* 设置
* 应用程序
* 打开浏览器标签
* 打开现有窗口
因此KRunner 已被整合到 KWin 的概览效果中,可以让你搜索现有窗口或启动新的应用程序。
我相信很多用户会非常高兴地看到这个整合,特别是那些已经使用 KRunner 的用户。
### 防止用户卸载 KDE
为了改善非技术用户的用户体验DiscoverKDE 的软件中心)现在会阻止任何删除任何关键软件包的行为,比如桌面环境。
![来自 PointiestStick 博客][3]
你可能知道,这个问题是由 Linus SebastianLinus Tech Tips强调的当他在 Pop!_OS 上安装 Steam 时,结果却删除了 GNOME、Xorg 和其他重要软件包。
所以,接下来的改进是为了解决这个问题,这对 KDE Plasma 5.24 来说是一个很好的补充。
### 其他改进
除了关键的亮点之外KDE Plasma 5.24 旨在提高性能、响应速度和用户体验。
此外,也有一些细微的用户界面调整和小程序改进。要想了解更多,你应该浏览一下 [Nate 的博文][2] 以及与上述功能相关的 [合并请求][4]。
### 总结
根据我对 KDE Plasma 的体验它是一个非常注重生产力的桌面。KDE 在改善桌面环境的概览效果和可用性的同时,将包括一个同样具有生产力和专注性的用户界面,这是很有意义的。
如果你想尝试新的改进,恐怕你必须等待 Plasma 5.24 发布。虽然这对现在来说是要等待相当长的时间2022 年 2 月),但我相信这将是值得的。
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/kde-plasma-5-24-dev/
作者:[Jacob Crume][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/jacob/
[b]: https://github.com/lujun9972
[1]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/kwin-kde-gnome-overview-effect.png?w=1200&ssl=1
[2]: https://pointieststick.com/2021/11/19/this-week-in-kde-most-of-gnome-shell-in-the-overview-effect/
[3]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/cant-remove-plasma-1.png?w=1022&ssl=1
[4]: https://invent.kde.org/plasma/kwin/-/merge_requests/1688

View File

@ -0,0 +1,57 @@
[#]: subject: "Amazons Own Linux Distribution is Now Completely Based on Fedora"
[#]: via: "https://news.itsfoss.com/amazon-linux-2022-preview/"
[#]: author: "Abhishek https://news.itsfoss.com/author/root/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14019-1.html"
亚马逊自己的 Linux 发行版现在完全基于 Fedora 了
======
> 亚马逊已经发布了 Amazon Linux 2022 的公开预览版,并有了新的发布模式。
![](https://i1.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/amazon-linux-2022.png?w=1200&ssl=1)
如果你还不知道,亚马逊有自己的通用 Linux 发行版,自然而然,它被称为 Amazon Linux。
它的目的是在 AWS 服务器上使用。当你部署服务器时,你可以选择使用 Amazon Linux或其他流行的选择如 Ubuntu、Debian 等。由于它来自亚马逊,所以没有许可费,而且亚马逊对软件库和软件包进行控制。你可以期待它与 AWS 工具紧密结合,并通过它获得新的 AWS 创新。
Amazon Linux 2022AL2022是其版本 1 和 2 之后的下一个版本,它将在 2022 年发布(你可以从版本号上猜到)。
### 即将发布的 Amazon Linux 2022 只基于 Fedora
到目前为止Amazon Linux 的发布是基于红帽 Linux 和 Fedora 两者的组合。从 AL2022 开始,它将明确使用 Fedora 作为上游。
此举意在为 AWS 客户“提供各种最新软件,如更新的语言运行时,作为季度发布的一部分”。
为了提高安全性减少攻击面AL2022 还将启用 [SELinux][1] 并默认执行。
### 与 Ubuntu 相似的新发布模式
Amazon Linux 还选择了一个更可预测的发布时间表。每两年将发布一个新的 Amazon Linux 主要版本,并将支持五年。这样,用户就会知道何时以及如何升级他们的操作系统。
这种“每两年一个新的 LTS 版本和 5 年的支持”与 Ubuntu 如今的特点非常相似。
### 还有什么?
AL2022 也能锁定到亚马逊 Linux 软件包库的特定版本。这使得用户可以控制如何以及何时吸收更新。
Amazon Linux 2022 在所有的地理区域都可以作为预览版(即 beta 版)体验。你可以访问他们的 GitHub 页面了解更多关于 AL2022 的信息。
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/amazon-linux-2022-preview/
作者:[Abhishek][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/root/
[b]: https://github.com/lujun9972
[1]: https://linuxhandbook.com/selinux/

View File

@ -0,0 +1,86 @@
[#]: subject: "Manage Flatpak Permissions Graphically With Flatseal"
[#]: via: "https://itsfoss.com/flatseal/"
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14034-1.html"
用 Flatseal 图形化管理 Flatpak 应用的权限
======
![](https://img.linux.net.cn/data/attachment/album/202111/30/135209fbcvqnvnzidvg2hw.jpg)
新版本的安卓系统让你对单个应用的访问和权限有了更精细的控制。这一点至关重要,因为许多应用曾经(正在)滥用系统权限。下载一个天气应用,它将要求访问你的通话记录,好像这与天气有什么关系一样。
为什么我在说安卓应用的权限?因为这可能与此应用的功能有关。
你可能已经知道 [什么是 Flatpak][1]。这些都是沙盒应用,可以选择访问系统资源,如文件存储、网络接口等。
就像 Android 一样,你可以控制 Flatpak 应用对系统资源的访问。默认情况下,这要用 [Flatpak 命令][2],不是每个人都能适应它。
因此,有一个叫做 Flatseal 的小工具,可以让你在应用层面上管理和控制 Flatpak 的权限。
### Flatseal
![Flatseal][3]
[Flatseal][4] 是一个图形化的工具,用于审查和修改你的 Flatpak 应用的权限。这使得事情比通过命令要容易得多。
Flatseal 会列出所有已安装的 Flatpak 应用。当你选择一个应用,你可以看到所有的权限。很容易发现已启用的权限,如果你愿意,你可以禁用它。
例如Ksnip 是一个屏幕截图工具,但它也有联网权限,可以用 Imgur 等在线服务分享截图。如果你不需要它,你可以禁用它。
![Control permissions of individual Flatpak apps][5]
如果不出意外,看看一个应用有什么样的权限是很有趣的。例如,你可以看到 ksnip 有在后台运行的能力(这样你就可以用键盘快捷键进行截图)。
![][6]
### 安装 Flatseal
既然管理的都是 Flatpak那么 Flatseal 作为一个 Flatpak 包来使用也是合理的。
在 Fedora 上,如果已经添加 Flathub 仓库,你可以从软件中心安装它。
![Installing Flatseal from the software center][7]
否则,命令行总是可以帮助你。
```
flatpak install flathub com.github.tchx84.Flatseal
```
### 你真的需要控制权限吗?
这是一个主观的问题,完全取决于你。值得庆幸的是,到目前为止,桌面 Linux 应用并不像 Android 应用那样滥用权限。
一个普通用户通常不会去管这些事情,这完全没问题。
然而如果你对这些事情过于谨慎或者你找到一个很好的理由Flatseal 提供了一个简单的选择。
你还应该小心你所改变的权限。如果你禁用了对应用的运作至关重要的权限,在使用应用时肯定会造成麻烦。
所以,总的来说,这不是一个普通用户要使用的东西。
--------------------------------------------------------------------------------
via: https://itsfoss.com/flatseal/
作者:[Abhishek Prakash][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/abhishek/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/what-is-flatpak/
[2]: https://itsfoss.com/flatpak-guide/
[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/flatseal.png?resize=800%2C474&ssl=1
[4]: https://flathub.org/apps/details/com.github.tchx84.Flatseal
[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/flatpak-permission-control-flatseal.png?resize=800%2C503&ssl=1
[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/flatpak-permissions-with-flatseal.png?resize=800%2C441&ssl=1
[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/install-flatseal.png?resize=800%2C467&ssl=1

View File

@ -0,0 +1,89 @@
[#]: subject: "Endless OS 4.0 is a Long-Term Support Version with Usability Improvements"
[#]: via: "https://news.itsfoss.com/endless-os-4-0-lts/"
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14024-1.html"
没有终点的操作系统 Endless OS 发布 4.0 LTS
======
> Endless OS 4.0 是一个长期支持版本,带有大量必要的改进,默认的应用程序以 Flatpak 包的形式提供。
![](https://i1.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/endless-os-4.0.jpg?w=1200&ssl=1)
Endless OS 是一个基于 Debian 的 Linux 发行版重点捆绑提供几个重要的应用程序和资源以帮助充分利用你的计算机而不需要互联网连接。LCTT 译注:因此,在互联网的“终点”之外也可使用。)
它主要是为教育和不能经常访问互联网的用户定制的。而如果你连接到互联网,也有一些工具可以帮助你浏览网页并与朋友/家人保持联系。
他们最新发布的 Endless OS 4.0 是一个长期支持的版本,带有一些改进。让我们简单了解一下。
### Endless OS 4.0 的新内容
澄清一下,这是一个 LTS 版本,将被维护若干年(具体不清楚),即使是在 Endless OS 5.0 版本发布之后,它也会得到更新。
除了 LTS 的好处之外,其他变化还包括:
#### 改进的应用程序网格导航
![来源Endlessos.org][1]
在以前的版本中,列出的应用程序散落在多个页面之间。由于这个原因,用户可能不会注意到它们。
因此,在 Endless OS 4.0 中,增加了额外的箭头和图标,以突出多页面和应用程序网格的存在。你应该看到,如果你在桌面上切换页面,可以探索到更多的应用程序。
#### 快速切换用户
在一个用户已经登录时,你现在有两种不同的方式来快速切换到另一个用户。
![来源Endlessos.org][2]
传统上,你可以在用户菜单中找到它(和注销选项一起)。或者,你也可以使用新的多用户图标从锁屏上直接切换。
![来源Endlessos.org][3]
#### 新的默认墙纸
每当有重大的版本升级时,新的墙纸总是让人耳目一新。
如果你想在任何其他系统中尝试它们,你可以在 [Unsplash][4] 上找到列出的这些壁纸。
#### 免驱动打印
你不再需要依靠讨厌的打印机驱动程序来检测连接的打印设备。有了 Endless OS 4.0,任何在本地网络中支持 [互联网打印协议][5]IPP的设备都可以自动检测并连接。
当你升级时,会删除任何已配置的打印机。然而,如果需要的话,你可以手动将它们添加回来。
### 其他改进措施
除了基本的变化之外,你还会发现更新的图形驱动、升级的 Linux 内核等等。其中一些包括:
* [Linux 内核 5.11][6]
* NVIDIA 驱动程序 460.91.03
* 支持 8GB 版树莓派 4B
* 一些默认的应用程序,如 Rythmbox以 Flatpak 软件包的方式安装
你还会注意到,作为升级的一部分,移除了一些功能。关于全部细节,你可以参考 [官方发布说明][7]。
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/endless-os-4-0-lts/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/endless-os-4-app-grid.png?w=1200&ssl=1
[2]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/release-notes-4.0-switch-user-menu.png?w=328&ssl=1
[3]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/release-notes-4.0-switch-user-lock-screen.png?w=188&ssl=1
[4]: https://unsplash.com/photos/WeYamle9fDM
[5]: https://en.wikipedia.org/wiki/Internet_Printing_Protocol
[6]: https://news.itsfoss.com/linux-kernel-5-11-release/
[7]: https://support.endlessos.org/en/endless-os/release-notes/4-0

View File

@ -0,0 +1,326 @@
[#]: subject: "Tips for formatting when printing to console from C++"
[#]: via: "https://opensource.com/article/21/11/c-stdcout-cheat-sheet"
[#]: author: "Stephan Avenwedde https://opensource.com/users/hansic99"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14027-1.html"
C++ 控制台格式化打印技巧
======
> 下次当你为控制台输出的格式而苦恼时,请参考这篇文章及其速查表。
![](https://img.linux.net.cn/data/attachment/album/202111/28/100548utbax4o4ttwcgyjz.jpg)
我写文章主要是为了给自己写文档。我在编程时非常健忘,所以我经常会写下有用的代码片段、特殊的特性,以及我使用的编程语言中的常见错误。这篇文章完全切合我最初的想法,因为它涵盖了从 C++ 控制台格式化打印时的常见用例。
像往常一样,这篇文章带有大量的例子。除非另有说明,代码片段中显示的所有类型和类都是 `std` 命名空间的一部分。所以当你阅读这段代码时,你必须在类型和类的前面加上`using namespace std;`。当然,该示例代码也可以在 [GitHub][3] 上找到。
### 面向对象的流
如果你曾经用过 C++ 编程,你肯定使用过 [cout][4]。当你包含 `<iostream>` 时,[ostream][5] 类型的 `cout` 对象就进入了作用域。这篇文章的重点是 `cout`,它可以让你打印到控制台,但这里描述的一般格式化对所有 [ostream][5] 类型的流对象都有效。`ostream` 对象是 `basic_ostream` 的一个实例,其模板参数为 `char` 类型。头文件 `<iosfwd>``<iostream>` 的包含层次结构的一部分,包含了常见类型的前向声明。
`basic_ostream` 继承于 `basic_ios`,该类型又继承于 `ios_base`。在 [cppreference.com][6] 上你可以找到一个显示不同类之间关系的类图。
`ios_base` 类是所有 I/O 流类的基类。`basic_ios` 类是一个模板类,它对常见的字符类型进行了<ruby>模板特化<rt>specialization</rt></ruby>,称为 `ios`。因此,当你在标准 I/O 的上下文中读到 `ios` 时,它是 `basic_ios``char` 类型的模板特化。
### 格式化流
一般来说,基于 `ostream` 的流有三种格式化的方法。
1. 使用 `ios_base` 提供的格式标志。
2. 在头文件 `<omanip>``<ios>` 中定义的流修改函数。
3. 通过调用 `<<` 操作符的 [特定重载][7]。
所有这些方法都有其优点和缺点,通常取决于使用哪种方法的情况。下面显示的例子混合使用所有这些方法。
#### 右对齐
默认情况下,`cout` 占用的空间与要打印的数据所需的空间一样大。为了使这种右对齐的输出生效,你必须定义一个行允许占用的最大宽度。我使用格式标志来达到这个目的。
右对齐输出的标志和宽度调整只适用于其后的行。
```
cout.setf(ios::right, ios::adjustfield);
cout.width(50);
cout << "This text is right justified" << endl;
cout << "This text is left justified again" << endl;
```
在上面的代码中,我使用 `setf` 配置了右对齐的输出。我建议你将位掩码 `ios::adjustfield` 应用于 `setf`,这将使位掩码指定的所有标志在实际的 `ios::right` 标志被设置之前被重置,以防止发生组合碰撞。
#### 填充空白
当使用右对齐输出时,默认情况下,空的地方会用空白字符填充。你可以通过使用 `setfill` 指定填充字符来改变它:
```
cout << right << setfill('.') << setw(30) << 500 << " pcs" << endl;
cout << right << setfill('.') << setw(30) << 3000 << " pcs" << endl;
cout << right << setfill('.') << setw(30) << 24500 << " pcs" << endl;
```
代码输出如下:
```
...........................500 pcs
..........................3000 pcs
.........................24500 pcs
```
#### 组合 
想象一下,你的 C++ 程序记录了你的储藏室库存。不时地,你想打印一份当前库存的清单。要做到这一点,你可以使用以下格式。
下面的代码是左对齐和右对齐输出的组合,使用点作为填充字符,可以得到一个漂亮的列表:
```
cout << left << setfill('.') << setw(20) << "Flour" << right << setfill('.') << setw(20) << 0.7 << " kg" << endl;
cout << left << setfill('.') << setw(20) << "Honey" << right << setfill('.') << setw(20) << 2 << " Glasses" << endl;
cout << left << setfill('.') << setw(20) << "Noodles" << right << setfill('.') << setw(20) << 800 << " g" << endl;
cout << left << setfill('.') << setw(20) << "Beer" << right << setfill('.') << setw(20) << 20 << " Bottles" << endl;
```
输出:
```
Flour...............................0.70 kg
Honey..................................2 Glasses
Noodles..............................800 g
Beer..................................20 Bottles
```
### 打印数值
当然,基于流的输出也能让你输出各种变量类型。
#### 布尔型
`boolalpha` 开关可以让你把布尔型的二进制解释转换为字符串:
```
Flour...............................0.70 kg
Honey..................................2 Glasses
Noodles..............................800 g
Beer..................................20 Bottles
```
以上几行产生的输出结果如下:
```
Boolean output without using boolalpha: 1 / 0
Boolean output using boolalpha: true / false
```
#### 地址
如果一个整数的值应该被看作是一个地址,那么只需要把它投到 `void*` 就可以了,以便调用正确的重载。下面是一个例子:
```
cout << "Boolean output without using boolalpha: " << true << " / " << false << endl;
cout << "Boolean output using boolalpha: " << boolalpha << true << " / " << false << endl;
```
该代码产生了以下输出:
```
Treat as unsigned long: 43981
Treat as address: 0000ABCD
```
该代码打印出了具有正确长度的地址。一个 32 位的可执行文件产生了上述输出。
#### 整数
打印整数是很简单的。为了演示,我使用 `setf``setiosflags` 来指定数字的基数。应用流修改器 `hex`/`oct` 也有同样的效果。
```
int myInt = 123;
cout << "Decimal: " << myInt << endl;
cout.setf(ios::hex, ios::basefield);
cout << "Hexadecimal: " << myInt << endl;
cout << "Octal: " << resetiosflags(ios::basefield) << setiosflags(ios::oct) << myInt << endl;
```
**注意:** 默认情况下,没有指示所使用的基数,但你可以使用 `showbase` 添加一个。
```
Decimal: 123
Hexadecimal: 7b
Octal: 173
```
#### 用零填充
```
0000003
0000035
0000357
0003579
```
你可以通过指定宽度和填充字符得到类似上述的输出:
```
cout << setfill('0') << setw(7) << 3 << endl;
cout << setfill('0') << setw(7) << 35 << endl;
cout << setfill('0') << setw(7) << 357 << endl;
cout << setfill('0') << setw(7) << 3579 << endl;
```
#### 浮点值
如果我想打印浮点数值,我可以选择“固定”和“科学”格式。此外,我还可以指定精度:
```
double myFloat = 1234.123456789012345;
int defaultPrecision = cout.precision(); // == 2
cout << "Default precision: " << myFloat << endl;
cout.precision(4);
cout << "Modified precision: " << myFloat << endl;
cout.setf(ios::scientific, ios::floatfield);
cout << "Modified precision & scientific format: " << myFloat << endl;
/* back to default */
cout.precision(defaultPrecision);
cout.setf(ios::fixed, ios::floatfield);
cout << "Default precision & fixed format: " << myFloat << endl;
```
上面的代码产生以下输出:
```
Default precision: 1234.12
Modified precision: 1234.1235
Modified precision & scientific format: 1.2341e+03
Default precision & fixed format: 1234.12
```
#### 时间和金钱
通过 `put_money`,你可以用正确的、与当地有关的格式来打印货币单位。这需要你的控制台能够输出 UTF-8 字符集。请注意,变量 `specialOffering` 以美分为单位存储货币价值。
```
long double specialOffering = 9995;
cout.imbue(locale("en_US.UTF-8"));
cout << showbase << put_money(specialOffering) << endl;
cout.imbue(locale("de_DE.UTF-8"));
cout << showbase << put_money(specialOffering) << endl;
cout.imbue(locale("ru_RU.UTF-8"));
cout << showbase << put_money(specialOffering) << endl;
```
`ios``imbue` 方法让你指定一个地区。通过命令 `locale -a`,你可以得到你系统中所有可用的地区标识符的列表。 
```
$99.95
99,950€
99,950₽
```
(不知道出于什么原因,在我的系统上,它打印的欧元和卢布有三个小数位,对我来说看起来很奇怪,但这也许是官方的格式。)
同样的原则也适用于时间输出。函数 `put_time` 可以让你以相应的地区格式打印时间。此外,你可以指定时间对象的哪些部分被打印出来。
```
time_t now = time(nullptr);
tm localtm = *localtime(&now);
cout.imbue(locale("en_US.UTF-8"));
cout << "en_US : " << put_time(&localtm, "%c") << endl;
cout.imbue(locale("de_DE.UTF-8"));
cout << "de_DE : " << put_time(&localtm, "%c") << endl;
cout.imbue(locale("ru_RU.UTF-8"));
cout << "ru_RU : " << put_time(&localtm, "%c") << endl;
```
格式指定符 `%c` 会打印一个标准的日期和时间字符串:
```
en_US : Tue 02 Nov 2021 07:36:36 AM CET
de_DE : Di 02 Nov 2021 07:36:36 CET
ru_RU : Вт 02 ноя 2021 07:36:36
```
### 创建自定义的流修改器
你也可以创建你自己的流。下面的代码在应用于 `ostream` 对象时插入了一个预定义的字符串:
```
ostream& myManipulator(ostream& os) {
string myStr = ">>>Here I am<<<";
os << myStr;
return os;
}
```
**另一个例子:** 如果你有重要的事情要说,就像互联网上的大多数人一样,你可以使用下面的代码在你的信息后面根据重要程度插入感叹号。重要程度被作为一个参数传递:
```
struct T_Importance {
int levelOfSignificance;
};
T_Importance importance(int lvl){
T_Importance x = {.levelOfSignificance = lvl };
return x;
}
ostream& operator<<(ostream& __os, T_Importance t){
for(int i = 0; i < t.levelOfSignificance; ++i){
__os.put('!');
}
return __os;
}
```
这两个修饰符现在都可以简单地传递给 `cout`
```
cout << "My custom manipulator: " << myManipulator << endl;
cout << "I have something important to say" << importance(5) << endl;
```
产生以下输出:
```
My custom manipulator: >>>Here I am<<<
I have something important to say!!!!!
```
### 结语
下次你再纠结于控制台输出格式时,我希望你记得这篇文章及其 [速查表][2]。
在 C++ 应用程序中,`cout` 是 [printf][8] 的新邻居。虽然使用 `printf` 仍然有效,但我可能总是喜欢使用 `cout`。特别是与定义在 `<ios>` 中的修改函数相结合,会产生漂亮的、可读的代码。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/11/c-stdcout-cheat-sheet
作者:[Stephan Avenwedde][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/hansic99
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_women_computing_2.png?itok=JPlR5aCA (Woman sitting in front of her computer)
[2]: https://opensource.com/downloads/cout-cheat-sheet
[3]: https://github.com/hANSIc99/cpp_output_formatting
[4]: https://en.cppreference.com/w/cpp/io/cout
[5]: https://en.cppreference.com/w/cpp/io/basic_ostream
[6]: https://en.cppreference.com/w/cpp/io
[7]: https://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt
[8]: https://opensource.com/article/20/8/printf

View File

@ -0,0 +1,245 @@
[#]: subject: "Anyone can compile open source code in these three simple steps"
[#]: via: "https://opensource.com/article/21/11/compiling-code"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14033-1.html"
任何人都可以通过这三个简单的步骤编译开源代码
======
> 你不需要知道如何写或读代码就可以编译它。
![](https://img.linux.net.cn/data/attachment/album/202111/30/133708wgq4rkecgbre93e1.jpg)
安装软件的方法有很多,但开源让你有了一个其他地方所没有的选择:你可以自己编译代码。编译源代码的经典三步流程是:
```
$ ./configure
$ make
$ sudo make install
```
由于有了这些命令,你可能会惊讶地发现,你不需要知道如何写代码,甚至不需要读代码就可以编译它。
### 安装用来构建软件的命令
由于这是你第一次进行编译,所以有一个一次性的准备步骤,即安装用于构建软件的命令。具体来说,你需要一个编译器。编译器(比如 GCC 或 LLVM可以将像这样的源代码
```
#include <iostream>
using namespace std;
int main() {
cout << "hello world";
}
```
变成 _机器语言_,即 CPU 用来处理信息的指令。你可以看一下机器代码,但它对你来说没有任何意义(除非你是一个 CPU
你可以使用你的软件包管理器安装 GNU 编译器集合GCC和 LLVM 编译器,以及其他在 Fedora、CentOS、Mageia 和类似发行版上进行编译的基本命令:
```
$ sudo dnf install @development clang
```
在 Debian、Elementary、Mint 和类似发行版上命令如下:
```
$ sudo apt install build-essential clang
```
在你的系统设置好后,有几项你每次编译软件时都要重复进行的任务:
1. 下载源代码
2. 展开源代码的存档文件
3. 编译
你已经有了所有你需要的命令,所以现在你需要一些软件来编译。
### 1、下载源代码
获得一个应用程序的源代码和获得任何可下载的软件一样。你得去一个网站或一个代码管理网站,如 GitLab、SourceForge 或 GitHub。 通常情况下开源软件既有正在进行的工作<ruby>当前<rt>current</rt></ruby>”或 “<ruby>每夜<rt>nightly</rt></ruby>”)的构建版本,也有打包的“<ruby>稳定<rt>stable</rt></ruby>”发布版本。在可能的情况下,使用稳定版本,除非你有理由相信,或者对代码有足够的了解,能够在出现故障时修复。术语“稳定版”表明这些代码经过了测试,而且该应用程序的程序员对代码有足够的信心,从而将其打包成 `.zip``.tar` 归档,给了它一个官方编号,有时还有一个发布名称,然后提供给一般的非程序员公众下载。
在这个练习中,我使用 [Angband][2]一个开源的GPLv2ASCII 地牢猎手游戏。这是一个简单的应用程序,其复杂程度刚好可以说明你在自己编译软件时需要考虑的问题。
从 [网站][2] 上下载其源代码。
### 2、展开源代码的存档文件
源代码通常是以存档的形式交付的,因为源代码通常由多个文件组成的。在与之交互之前,你必须先解压,不管它是一个 tarball、一个 zip 文件、一个 7z 文件,还是其他完全不同的东西。 
```
$ tar --extract --file Angband-x.y.z.tar.gz
```
一旦解压缩后,就把目录切换到解压缩的目录,然后看一看。通常在目录的顶层有一个 `README` 文件。这个文件,一般会包含你需要做什么来编译代码的指导。`README` 通常包含关于代码的这些重要方面的信息:
* **语言**代码使用的是什么语言例如C、C++、Rust、Python
* **依赖性**:你需要在你的系统上安装其他什么的软件,以便这个应用程序能够构建和运行。
* **说明**:你构建该软件所需要采取的明确步骤。偶尔,他们会在一个专门的文件中包含这些信息,这个文件被直观地称为 `INSTALL`
如果 `README` 文件中不包含这些信息,可以考虑向开发者提交一份错误报告。你不是唯一需要介绍一下源代码的人。不管他们有多么丰富的经验,每个人都会对从未见过的源代码感到陌生,而文档是很重要的!
Angband 的维护者给出了在线说明的链接描述了如何编译代码。这份文件还描述了你需要安装哪些其他软件尽管它并没有确切地说明这一点。该网站说“有几个不同的可选构建的前端GCU、SDL、SDL2 和 X11你可以使用诸如 `--enable-sdl``--disable-x11` 的参数配置。”这可能对你来说看起来像天书,但你经常编译代码后就会习惯。无论你是否理解 X11 或 SDL2 是什么它们都是你经过几个月定期编译代码后经常看到的要求。你会对大多数软件需要其他软件库的想法感到适应因为它们建立在其他技术之上。不过在这种情况下Angband 非常灵活,无论是否有这些可选的依赖,都可以进行编译,所以现在,你可以假装没有额外的依赖。
### 3、编译代码
构建代码的典型步骤是:
```
$ ./configure
$ make
$ sudo make install
```
这些是使用 [Autotools][3] 构建的项目的步骤,该框架是为了规范源代码的交付方式而创建的。然而,还有一些其他框架(如 [Cmake][4]),它们需要不同的步骤。当项目没有遵循 Autotools 或 Cmake 框架时,它们往往会在 `README` 文件中提醒你。
### 配置 
Angband 使用 Autotools所以现在是编译代码的时候了!
在 Angband 目录中,首先,运行随源码一起提供的配置脚本:
```
$ ./configure
```
这一步将扫描你的系统,找到 Angband 正确构建所需的依赖性。有些依赖是非常基本的,没有它们你的电脑就无法运行,而有些则是专门的。在这一过程结束时,该脚本会给你一份关于它所发现的东西的报告:
```
[...]
configure: creating ./config.status
config.status: creating mk/buildsys.mk
config.status: creating mk/extra.mk
config.status: creating src/autoconf.h
Configuration:
Install path: /usr/local
binary path: /usr/local/games
config path: /usr/local/etc/angband/
lib path: /usr/local/share/angband/
doc path: /usr/local/share/doc/angband/
var path: (not used)
(save and score files in ~/.angband/Angband/)
-- Frontends --
- Curses Yes
- X11 Yes
- SDL2 Disabled
- SDL Disabled
- Windows Disabled
- Test No
- Stats No
- Spoilers Yes
- SDL2 sound Disabled
- SDL sound Disabled
```
有些输出可能对你有意义,有些可能没有。无论如何,你可能注意到 SDL2 和 SDL 被标记为 “Disabled”Test 和 Stats 都被标记为 “None”。虽然这些信息是负面的但这并不一定是一件坏事。从本质上讲这就是**警告**和**错误**之间的区别。如果配置脚本遇到了会阻止它构建代码的东西,它就会用一个错误来提醒你。
如果你想稍微优化一下你的构建,你可以选择解决这些负面信息。通过搜索 Angband 文档,你可能会确定 Test 和 Stats 实际上并不是你感兴趣的(它们是 Angband 专用于开发者的选项)。然而,通过在线研究,你可能会发现 SDL2 将是一个很好的功能。 
要解决编译代码时的依赖问题,你需要安装缺少的组件和该缺少的组件的 _开发库_。换句话说Angband 需要 SDL2 来播放声音,但它需要 `SDL2-devel`(在 Debian 系统上称为 `libsdl2-dev`)来构建。用你的软件包管理器安装这两个组件:
```
$ sudo dnf install sdl2 sdl2-devel
```
再试一下配置脚本:
```
$ ./configure --enable-sdl2
[...]
Configuration:
[...]
- Curses Yes
- X11 Yes
- SDL2 Yes
- SDL Disabled
- Windows Disabled
- Test No
- Stats No
- Spoilers Yes
- SDL sound Disabled
- SDL2 sound Yes
```
### 制作(编译)
一旦一切配置完毕,运行 `make` 命令:
```
$ make
```
这通常需要一段时间,但它提供了很多视觉反馈,所以你会知道代码正在被编译。
### 安装
最后一步是安装你刚刚编译的代码。安装代码并没有什么神奇之处。所做的就是复制很多文件到非常具体的目录中。无论你是从源代码编译还是运行花哨的图形安装向导,都是如此。由于这些代码会被复制到系统级目录,你必须有 root管理权限这是由 `sudo` 命令授予的。
```
$ sudo make install
```
### 运行该应用程序
一旦应用程序被安装,你就可以运行它。根据 Angband 文档,启动游戏的命令是 `angband`,所以可以试试:
```
$ angband
```
![Compile code lead image][6]
### 编译代码
无论是在我的 Slackware 台式电脑上,还是在我的 CentOS 笔记本电脑上,我都会使用 NetBSD 的 [pkgsrc][8] 系统编译我自己的大部分应用程序。我发现,通过自己编译软件,我可以对应用程序中包含的功能、如何配置、使用的库版本等有自己的想法。这很有意义,它帮助我跟上了新的版本,而且因为我有时会在这个过程中发现错误,它帮助我参与了很多不同的开源项目。
你很少会只有编译软件的一种方式可选,大多数开源项目同时提供源代码(这就是为什么它被称为“开源”)和可安装包。是否从源代码编译是你自己的选择,也许是因为你想要最新版本中还没有的新功能,或者只是因为你喜欢自己编译代码。
### 家庭作业
Angband 可以使用 Autotools 或 Cmake所以如果你想体验另一种构建代码的方式可以试试这个
```
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
```
你也可以尝试用 LLVM 编译器而不是 GNU 编译器集合GCC进行编译。现在我把这个问题留给你自己去研究提示尝试设置 `CC` [环境变量][9])。
一旦你完成了对 Angband 的源代码和至少几个地牢的探索(你已经赢得了一些休息时间),可以看看其他一些代码库。很多人都会使用 Autotools 或 Cmake而其他人可能会使用不同的东西。看看你能构建的成果
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/11/compiling-code
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/code_development_programming.png?itok=M_QDcgz5 (Developing code.)
[2]: https://rephial.org/
[3]: https://opensource.com/article/19/7/introduction-gnu-autotools
[4]: https://opensource.com/article/21/5/cmake
[5]: https://opensource.com/file/514986
[6]: https://opensource.com/sites/default/files/uploads/angband.jpg (Compile code lead image)
[7]: https://creativecommons.org/licenses/by-sa/4.0/
[8]: https://opensource.com/article/19/11/pkgsrc-netbsd-linux
[9]: https://opensource.com/article/19/8/what-are-environment-variables

View File

@ -0,0 +1,202 @@
[#]: collector: (lujun9972)
[#]: translator: (JaphiaChen)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-14130-1.html)
[#]: subject: (Create a CentOS homelab in an hour)
[#]: via: (https://opensource.com/article/19/6/create-centos-homelab-hour)
[#]: author: (Bob Murphy https://opensource.com/users/murph)
一个小时内创建一个 CentOS 家庭实验室
======
> 用一个带有虚拟化软件的系统CentOS ISO花费一个小时左右来设置一套自给自足的基本 Linux 服务器。
![](https://img.linux.net.cn/data/attachment/album/202112/30/093738krqqc3c5mc35lu36.jpg)
当学习新的 Linux 技能时(或像我一样学习 Linux 认证在笔记本电脑上有一些可用的虚拟机VM是很有帮助的这样你就可以在上面学习。
但是,如果在没有良好互联网连接的地方,你却想在一个 Web 服务器上工作,该怎么办? 想要使用没有安装过的其他软件,该怎么办? 如果需要从发行版的存储库中下载它,那么你可能会碰壁。只要做一点准备,你就可以设置一个 [家庭实验室][2],你就在任何地方安装所需的任何东西,无论是否有网络连接。
要求如下:
* 一个你打算使用的已下载的 Linux 发行版例如CentOS、Red Hat 等ISO 文件
* 一台具有虚拟化功能的主机。这里使用带有 [KVM][4] 和 [virt-manager][5] 的 [Fedora][3],但其它 Linux 也可以类似工作。你甚至可以使用 Windows 或 Mac 进行虚拟化,但在实现方面存在一些差异
* 大约一个小时
### 1、为存储主机创建一个虚拟机
使用 `virt-manager` 创建一个中等规格的虚拟机1GB RAM、一个 CPU 和 16GB 磁盘空间就足够。
在虚拟机上安装 [CentOS 7][6]。
![Installing a CentOS homelab][7]
选择你的语言并继续。
单击 “<ruby>安装位置<rt>Installation Destination</rt></ruby>”,选择本地磁盘,勾选 “<ruby>自动配置分区<rt>Automatically Configure Partitioning</rt></ruby>” 复选框,然后单击左上角的 “<ruby>完成<rt>Done</rt></ruby>”。
在 “<ruby>软件选择<rt>Software Selection</rt></ruby>” 下,选中 “<ruby>基础设施服务器<rt>Infrastructure Server</rt></ruby>” ,选中 “<ruby>FTP 服务器<rt>FTP Server</rt></ruby>” 复选框,然后单击 “<ruby>完成<rt>Done</rt></ruby>”。
![Installing a CentOS homelab][8]
选择 “<ruby>网络和主机名<rt>Network and Host Name</rt></ruby>”,启用右上方的 “<ruby>以太网<rt>Ethernet</rt></ruby>” ,然后单击左上角的 “<ruby>完成<rt>Done</rt></ruby>”。
单击 “<ruby>开始安装<rt>Begin Installation</rt></ruby>” 开始安装操作系统。
在安装时务必设置一个 root 密码,就可以创建一个带有密码的用户。
### 2、启动 FTP 服务
下一步是启动并设置 FTP 服务以运行并允许它通过防火墙。
用 root 密码登录,然后启动 FTP 服务器:
```
systemctl start vsftpd
```
允许它在每次启动时都能工作:
```
systemctl enable vsftpd
```
设置防火墙允许通过的端口:
```
firewall-cmd --add-service=ftp --perm
```
立即启用此更改:
```
firewall-cmd --reload
```
获取你的 IP 地址:
```
ip a
```
(可能是 `eth0`),在之后会用到。
### 3、复制本地存储库中的文件
通过虚拟化软件将安装 CD 挂载到虚拟机。
创建待挂载光盘的临时目录:
```
mkdir /root/temp
```
挂载安装 CD
```
mount /dev/cdrom /root/temp
```
将所有文件复制到 FTP 服务器目录下:
```
rsync -avhP /root/temp/ /var/ftp/pub/
```
### 4、将服务器指向本地存储库
基于 Red hat 的系统使用以 `repo` 结尾的文件来确定从哪里获得软件更新和新的软件。这些文件在以下路径
```
cd /etc/yum.repos.d
```
你需要摆脱那些使你的服务器在互联网上寻找 CentOS 存储库的存储库文件。可以把它们复制到根目录下保存起来:
```
mv * ~
```
然后创建一个新的存储库文件来指向你的服务器。使用常用的文本编辑器创建一个名为 `network.repo` 文件,输入以下内容(将 `<your IP>` 替换为在步骤 2 中获得的 IP 地址),然后保存:
```
[network]
name=network
baseurl=ftp://192.168.122.<your ip>/pub
gpgcheck=0
```
完成后,可以用下面的命令来测试:
```
yum clean all; yum install ftp
```
如果 FTP 客户端按照预期从 “network” 存储库安装,那么本地仓库就已经设置好了!
![Installing a CentOS homelab][9]
### 5、使用你设置的存储库安装一个新的虚拟机
回到虚拟机管理器,并创建另一个虚拟机。但这一次,选择 “<ruby>网络安装<rt>Network Install</rt></ruby>”, URL 为:
```
ftp://192.168.122.<your IP>/pub
```
如果你使用的是不同的宿主机操作系统或虚拟管理器,像前面一样安装虚拟机,并进行下一步。
### 6、将新的虚拟机设置为使用现有的“network”存储库
你可以从现有服务器复制存储库文件到这里使用。
和第一个服务器示例一样,输入:
```
cd /etc/yum.repos.d
mv * ~
```
然后:
```
scp root@192.168.122.<your IP>:/etc/yum.repos.d/network.repo /etc/yum.repos.d
```
现在可以使用新的虚拟机并从本地存储库获取所有软件了。
再测试一遍:
```
yum clean all; yum install screen
```
这将从本地存储服务器安装软件。
这种设置,让你能够脱离网络安装软件,创建一个更可靠的环境,扩展你的技能。
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/6/create-centos-homelab-hour
作者:[Bob Murphy][a]
选题:[lujun9972][b]
译者:[JaphiaChen](https://github.com/JaphiaChen)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/murph
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_data_dashboard_system_computer_analytics.png?itok=oxAeIEI- (metrics and data shown on a computer screen)
[2]: https://opensource.com/article/19/3/home-lab
[3]: https://getfedora.org/
[4]: https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine
[5]: https://virt-manager.org/
[6]: https://www.centos.org/download/
[7]: https://opensource.com/sites/default/files/uploads/homelab-3b_0.png (Installing a CentOS homelab)
[8]: https://opensource.com/sites/default/files/uploads/homelab-5b.png (Installing a CentOS homelab)
[9]: https://opensource.com/sites/default/files/uploads/homelab-14b.png (Installing a CentOS homelab)
[10]: https://opensource.com/article/17/3/introduction-gnu-screen
[11]: https://southeastlinuxfest.org/

View File

@ -0,0 +1,124 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-14077-1.html)
[#]: subject: (Compose music as code using Sonic Pi)
[#]: via: (https://opensource.com/article/20/3/sonic-pi)
[#]: author: (Matt Bargenquast https://opensource.com/users/mbargenquast)
使用 Sonic Pi 像写代码一样编曲
======
> 有了这个易于使用的开源程序,不需要掌握乐器,就可以把你变成一个音乐大师。
![](https://img.linux.net.cn/data/attachment/album/202112/13/095540zigm4pzopgrdevvz.jpg)
也许你和我一样,在上学的时候学过一种乐器。对我来说,那是钢琴,后来是中提琴。然而,我一直认为,随着我童年的兴趣转向计算机和编码,我后来忽略了音乐练习。我确实想知道,如果我年轻时有 Sonic Pi 这样的东西我会怎么样。Sonic Pi 是一个开源程序,可以让你通过代码来创作和演奏音乐。它是这两个世界的完美结合。
我们对 Sonic Pi 并不陌生,早在 2015 年就对其创造者 Sam Aaron 博士 [进行了采访][2]。从那时起Sonic Pi 在很多方面都有了很大的发展。它达到了一个重要的新版本里程碑,期待已久的 v3.2 版本已于 2020 年 2 月 28 日公开发布。一个不断壮大的开发者社区正积极为其 [GitHub 项目][3] 做出贡献,而在 [官方论坛][4] 中有一个同样繁荣的作曲家社区可以分享想法和提供支持。该项目现在还通过 [赞助活动][5] 获得了资金支持,而 Sam 本人也在世界各地的学校、会议和研讨会中传播 Sonic Pi 的信息。
Sonic Pi 真正的闪光点在于它的平易近人。它的版本适用于许多主要的操作系统,包括 Windows、macOS、Linux当然也包括树莓派本身。事实上在树莓派上学习使用 Sonic Pi 再简单不过了。它预装在 [Raspbian][6] 中,所以如果你有一个基于 Raspbian 的现有环境,你会发现它位于编程菜单中。
第一次加载 Sonic Pi 时,你会看到一个简单的界面,有两个主要的区域:一个编辑器,可以写你的代码,还有一个区域专用于 Sonic Pi 丰富的教程。对于新手来说,教程是学习基础知识的重要资源,它有配套的音乐程序来巩固所学的每个概念。
如果你跟着学习,让我们为自己编写一段简单的音乐,探索现场编码音乐的潜力。将以下代码输入或粘贴到 Sonic Pi 编辑器中:
```
live_loop :beat do
sample :drum_heavy_kick
sleep 1
end
```
即使你是一个 Sonic Pi 的新手,许多程序员可能马上就会明白这里发生了什么。我们正在播放一个<ruby>踏板鼓<rt>drum kick</rt></ruby>采样,停止一秒钟,然后重复。点击运行按钮或按 `ALT+R`macOS 上为 `meta+R`),你应该听到它开始播放。
这不是一首非常激动人心的歌曲,所以让我们用一个在不合拍的<ruby>小鼓<rt>snare</rt></ruby>来使它生动起来。用下面的代码块替换现有的代码,然后再次运行。你可以在做这个的时候让现有的节拍继续播放;你会注意到你的改动会自然地应用,与节拍同步:
```
live_loop :beat do
sample :drum_heavy_kick
sleep 0.5
sample :drum_snare_soft
sleep 0.5
end
```
我们在做这个的时候,让我们在每四拍之前添加一个<ruby>踩镲<rt>hi-hat</rt></ruby>,让声音变得有趣一些。在现有的程序块下面添加新的程序块,然后再次运行:
```
live_loop :hihat do
sleep 3.9
sample :drum_cymbal_closed
sleep 0.1
end
```
我们现在已经有了我们的节拍,所以让我们来添加一个<ruby>低音声线<rt>bassline</rt></ruby>Sonic Pi 内置了各种合成器,还有混响和失真等效果滤波器。我们将使用 “dsaw” 和 “tech_saw” 合成器的组合,使其具有电子复古合成器的感觉。将下面的块添加到你现有的程序中,运行,并听一听:
```
live_loop :bass do
use_synth :dsaw
play :a2, attack: 1, release: 2, amp: 0.3
sleep 2.5
use_synth :tech_saws
play :a1, attack: 1, release: 1.5, amp: 0.8
sleep 1.5
end
```
你会注意到上面的内容,当播放音符时,我们可以完全控制 [ADSR][7] <ruby>包络<rt>envelope</rt></ruby>,所以我们可以决定每个声音何时达到峰值和衰减。
最后,让我们添加一个<ruby>主音合成器<rt>lead synth</rt></ruby>,试试那些被称为“<ruby>切片器<rt>slicer</rt></ruby>”的效果特征。为了使事情更有趣,我们还将引入一个伪随机的元素,让 Sonic Pi 从一系列潜在的<ruby>和弦<rt>chord</rt></ruby>中挑选。这就是一些有趣的即兴创作和“快乐的意外”可以开始发生的地方。在你现有的程序中加入下面的程序块并运行:
```
live_loop :lead do
with_fx :slicer do
chords = [(chord :A4, :minor7), (chord :A4, :minor), (chord :D4, :minor7), (chord :F4, :major7)]
use_synth :blade
play chords.choose, attack: 1, release: 2, amp: 1
sleep 2
end
end
```
很好!现在,我们当然不会很快与 Daft Punk 竞争但希望通过这个过程你已经看到我们如何通过添加一些简单的代码实时地从一个单一节拍变成更大的东西。YouTube 上 Sam Aaron 的 [现场编码表演][8] 非常值得一看,它展示了 Sonic Pi 可以让你有多大的创造力和适应力。
![Sonic Pi composition example][9]
*我们完成的作品,完整版*
如果你曾经想学习一种乐器但又觉得被“我没有节奏感”或“我的手不够灵活”这样的想法所束缚Sonic Pi 是一种多功能的乐器,这些都不重要。你所需要的只是想法和灵感,以及一台便宜的电脑,如简陋的树莓派。其余的都在你的指尖上(实际意义上的)。
这里有几个方便的链接可以让你开始:
* 官方 Sonic Pi [网站][10] 和 [教程][11]
* [Sonic Pi 入门][12]
* Sonic Pi 的 [GitHub 项目][3]
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/3/sonic-pi
作者:[Matt Bargenquast][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/mbargenquast
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/music-birds-recording-520.png?itok=UoM7brl0 (Bird singing and music notes)
[2]: https://opensource.com/life/15/10/interview-sam-aaron-sonic-pi
[3]: https://github.com/samaaron/sonic-pi/
[4]: https://in-thread.sonic-pi.net/
[5]: https://www.patreon.com/samaaron
[6]: https://www.raspberrypi.org/downloads/raspbian/
[7]: https://en.wikipedia.org/wiki/Envelope_(music)
[8]: https://www.youtube.com/watch?v=JEHpS1aTKp0
[9]: https://opensource.com/sites/default/files/uploads/sonicpi.png (Sonic Pi composition example)
[10]: https://sonic-pi.net/
[11]: https://sonic-pi.net/tutorial.html
[12]: https://projects.raspberrypi.org/en/projects/getting-started-with-sonic-pi
[13]: http://projects.raspberrypi.org

View File

@ -0,0 +1,234 @@
[#]: collector: (lujun9972)
[#]: translator: (Starryi)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-14107-1.html)
[#]: subject: (Getting started with shaders: signed distance functions!)
[#]: via: (https://jvns.ca/blog/2020/03/15/writing-shaders-with-signed-distance-functions/)
[#]: author: (Julia Evans https://jvns.ca/)
着色器入门:符号距离函数!
======
![](https://img.linux.net.cn/data/attachment/album/202112/22/162653fn58ajqa6d65e8f5.jpg)
大家好!不久前我学会了如何使用着色器制作有趣的闪亮旋转八面体:
![][1]
我的着色器能力仍然非常基础,但事实证明制作这个有趣的旋转八面体比我想象中要容易得多(从其他人那里复制了很多代码片段!)。
我在做这件事时, 从一个非常有趣的叫做 [符号距离函数教程:盒子和气球][2] 的教程中学到了“符号距离函数”的重要思路。
在本文中,我将介绍我用来学习编写简单着色器的步骤,并努力让你们相信着色器并不难入门!
### 更高级着色器的示例
如果你还没有看过用着色器做的真正有趣的事情,这里有几个例子:
1. 这个非常复杂的着色器就像一条河流的真实视频:<https://www.shadertoy.com/view/Xl2XRW>
2. 一个更抽象(更短!)有趣的着色器,它有很多发光的圆圈:<https://www.shadertoy.com/view/lstSzj>
### 步骤一:我的第一个着色器
我知道你可以在 shadertoy 上制作着色器,所以我去了 <https://www.shadertoy.com/new>。它们提供了一个默认着色器,如下图所示:
![][3]
代码如下:
```
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// 规范像素坐标 (从 0 到 1)
vec2 uv = fragCoord / iResolution.xy;
// 随时间改变像素颜色
vec3 col = 0.5 + 0.5 * cos(iTime + uv.xyx + vec3(0, 2, 4));
// 输出到屏幕
fragColor = vec4(col, 1.0);
}
```
虽然还没有做什么令人兴奋的事情,但它已经教会了我着色器程序的基本结构!
### 思路:将一对坐标(和时间)映射到一个颜色
这里的思路是获得一对坐标作为输入(`fragCoord`),你需要输出一个 RGBA 向量作为此坐标的颜色。该函数也可以使用当前时间(`iTime`),图像从而可以随时间变化。
这种编程模型(将一对坐标和时间映射到其中)的巧妙之处在于,它非常容易并行化。我对 GPU 了解不多,但我的理解是,这种任务(一次执行 10000 个微不足道的可并行计算)正是 GPU 擅长的事情。
### 步骤二:使用 `shadertoy-render` 加快开发迭代
玩了一段时间的 shadertoy 之后,我厌倦了每次保存我的着色器时都必须在 shadertoy 网站上单击“重新编译”。
我找到了一个名为 [shadertoy-render][4] 命令行工具,它会在每次保存时实时查看文件并更新动画。现在我可以运行:
```
shadertoy-render.py circle.glsl
```
并更快地开发迭代!
### 步骤三:画一个圆圈
接下来我想 —— 我擅长数学!我可以用一些基本的三角学来画一个会弹跳的彩虹圈!
我知道圆的方程为(`x^2 + y^2 = 任意正数`!),所以我写了一些代码来实现它:
![][5]
代码如下:(你也可以 [在 shadertoy 上查看][6]
```
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// 规范像素坐标 (从 0 到 1)
vec2 uv = fragCoord / iResolution.xy;
// 绘制一个中心位置依赖于时间的圆
vec2 shifted = uv - vec2((sin(iGlobalTime) + 1) / 2, (1 + cos(iGlobalTime)) / 2);
if (dot(shifted, shifted) < 0.03) {
// 改变像素颜色
vec3 col = 0.5 + 0.5 * cos(iGlobalTime + uv.xyx + vec3(0, 2, 4));
fragColor = vec4(col, 1.0);
} else {
// 使圆之外的其他像素都是黑色
fragColor = vec4(0,0, 0, 1.0);
}
}
```
代码将坐标向量 `fragCoord` 与自身点积,这与计算 `x^2 + y^2` 相同。我还在这个圆圈的中心玩了一点花活 圆心为 `vec2siniGlobalTime + 1/ 21 + cosfaster / 2`,这意味着圆心也随着时间沿另一个圆移动。
### 着色器是一种学习数学的有趣方式!
我觉得有意思的(即使我们没有做任何超级高级的事情!)是这些着色器为我们提供了一种有趣的可视化方式学习数学 - 我用 `sin``cos` 来使某些东西沿着圆移动,如果你想更直观地了解三角函数的工作方式, 也许编写着色器会是一种有趣的方法!
我喜欢的是,可以获得有关数学代码的即时视觉反馈 - 如果你把一些东西乘以 2图像里的东西会变得更大或更小或更快或更慢或更红
### 但是我们如何做一些真正有趣的事情呢?
这个会弹跳的圆圈很好,但它与我见过的其他人使用着色器所做的非常奇特的事情相去甚远。那么下一步要做什么呢?
### 思路:不要使用 if 语句,而是使用符号距离函数!
在我上面的圆圈代码中,我基本上是这样写的:
```
if (dot(uv, uv) < 0.03) {
// 圆里的代码
} else {
// 圆外的代码
}
```
但问题(也是我感到卡住的原因)是不清楚如何将它推广到更复杂的形状!编写大量的 `if` 语句似乎不太好用。那人们要如何渲染这些 3d 形状呢?
所以!<ruby>符号距离函数<rt>Signed distance function</rt></ruby> 是定义形状的另一种方式。不是使用硬编码的 `if` 语句,而是定义一个 **函数**,该函数告诉你,对于世界上的任何一个点,该点与你的形状有多远。比如,下面是球体的符号距离函数。
```
float sdSphere( vec3 p, float center )
{
return length(p) - center;
}
```
符号距离函数非常棒,因为它们:
* 易于定义!
* 易于组合!如果你想要一个被切去一块的球体, 你可以用一些简单的数学来计算并集/交集/差集。
* 易于旋转/拉伸/弯曲!
### 制作旋转陀螺的步骤
当我开始时,我不明白需要编写什么代码来制作一个闪亮的旋转东西。结果表明如下是基本步骤:
1. 为想要的形状创建一个符号距离函数(在我的例子里是八面体)
2. 光线追踪符号距离函数,以便可以在 2D 图片中显示它(或沿光线行进?我使用的教程称之为光线追踪,我还不明白光线追踪和光线行进之间的区别)
3. 编写代码处理形状的表面纹理并使其发光
我不打算在本文中详细解释符号距离函数或光线追踪,因为我发现这个 [关于符号距离函数的神奇教程][2] 非常友好,老实说,它比我做的更好,它解释了如何执行上述 3 个步骤,并且代码有大量的注释,非常棒。
* 该教程名为“符号距离函数教程:盒子和气球”,它在这里:<https://www.shadertoy.com/view/Xl2XWt>
* 这里有大量符号距离函数,你可以将其复制粘贴到代码中(以及组合它们以制作其他形状的方法):<http://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm>
### 步骤四:复制教程代码并开始更改内容
我在这里使用了久负盛名的编程实践,即“复制代码并以混乱的方式更改内容,直到得到我想要的结果”。
最后一堆闪亮的旋转八面体着色器在这里:<https://www.shadertoy.com/view/wdlcR4>
动画出来的样子是这样的:
![][7]
为了做到这一点,我基本上只是复制了关于符号距离函数的教程,该函数根据符号距离函数呈现形状,并且:
* 将 `sdfBalloon` 更改为 `sdfOctahedron`,并使八面体旋转而不是在我的符号距离函数中静止不动
* 修改 `doBalloonColor` 着色功能,使其有光泽
* 有很多八面体而不是一个
### 使八面体旋转!
下面是我用来使八面体旋转的代码!事实证明这真的很简单:首先从 [这个页面][8] 复制一个八面体符号距离函数,然后添加一个 `rotate` 使其根据时间旋转,然后它就可以旋转了!
```
vec2 sdfOctahedron( vec3 currentRayPosition, vec3 offset ){
vec3 p = rotate((currentRayPosition), offset.xy, iTime * 3.0) - offset;
float s = 0.1; // s 是啥?
p = abs(p);
float distance = (p.x + p.y + p.z - s) * 0.57735027;
float id = 1.0;
return vec2( distance, id );
}
```
### 用一些噪音让它发光
我想做的另一件事是让我的形状看起来闪闪发光/有光泽。我使用了在 [这个 GitHub gist][9] 中找到的噪声函数使表面看起来有纹理。
以下是我如何使用噪声函数的代码。基本上,我只是随机地将参数更改为噪声函数(乘以 231800随你直到得到喜欢的效果。
```
float x = noise(rotate(positionOfHit, vec2(0, 0), iGlobalTime * 3.0).xy * 1800.0);
float x2 = noise(lightDirection.xy * 400.0);
float y = min(max(x, 0.0), 1.0);
float y2 = min(max(x2, 0.0), 1.0);
vec3 balloonColor = vec3(y, y + y2, y + y2);
```
## 编写着色器很有趣!
上面就是全部的步骤了!让这个八面体旋转并闪闪发光使我很开心。如果你也想用着色器制作有趣的动画,希望本文能帮助你制作出很酷的东西!
通常对于不太了解的主题,我可能在文章中说了至少一件关于着色器的错误事情,请让我知道错误是什么!
再说一遍,如下是我用到的两个资源:
1. “符号距离函数教程:盒子和气球”:<https://www.shadertoy.com/view/Xl2XWt>(修改和玩起来真的很有趣)
2. 可以将大量符号距离函数复制并粘贴到你的代码中:<http://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm>
--------------------------------------------------------------------------------
via: https://jvns.ca/blog/2020/03/15/writing-shaders-with-signed-distance-functions/
作者:[Julia Evans][a]
选题:[lujun9972][b]
译者:[Starryi](https://github.com/Starryi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://jvns.ca/
[b]: https://github.com/lujun9972
[1]: https://jvns.ca/images/spinny.gif
[2]: https://www.shadertoy.com/view/Xl2XWt
[3]: https://jvns.ca/images/colour.gif
[4]: https://github.com/alexjc/shadertoy-render
[5]: https://jvns.ca/images/circle.gif
[6]: https://www.shadertoy.com/view/tsscR4
[7]: https://jvns.ca/images/octahedron2.gif
[8]: http://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm
[9]: https://gist.github.com/patriciogonzalezvivo/670c22f3966e662d2f83

View File

@ -0,0 +1,151 @@
[#]: subject: (FreeDOS commands you need to know)
[#]: via: (https://opensource.com/article/21/4/freedos-commands)
[#]: author: (Kevin O'Brien https://opensource.com/users/ahuka)
[#]: collector: (lujun9972)
[#]: translator: (robsean)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-14074-1.html)
FreeDOS 操作目录和文件的基本命令
======
> 学习如何在 FreeDOS 中对目录和文件执行创建、移除、复制等任务。
![](https://img.linux.net.cn/data/attachment/album/202112/12/100340gffegjttbn0n7iox.jpg)
DOS 的开源实现 [FreeDOS][2] 提供了一个轻量级的操作系统,可以在现代硬件(或模拟器)上用于运行历史遗留下来的应用程序,可以更新硬件供应商不兼容于 Linux 的固件闪存。熟悉 FreeDOS 不仅是一种对旧计算机时代的有趣考古,也是一种获取有用的计算机技能的投入。在这篇文章中,我将介绍一些在 FreeDOS 系统上工作所需要知道的基本命令。
### 基本的命令和文件命令
FreeDOS 在硬盘驱动器上使用目录来组织文件。这意味着你需要使用目录命令来创建一个结构,用于存储和查找你在其中存储的文件。你所需要的用于管理目录结构的命令有:
* `MD` (或 `MKDIR` 创建一个新的目录或子目录。
* `RD` (或 `RMDIR` 移除(删除) 一个目录或子目录。
* `CD` (或 `CHDIR` 从当前工作目录更改到另一个命令。
* `DELTREE` 删除一个目录,包括其包含的任意文件或子目录。
* `DIR` 列出当前工作目录的内容。
因为使用目录是 FreeDOS 的主要工作,所有的这些命令(除 DELTREE 以外)是包含在 `COMMAND.COM` 中的内部命令。因此,它们将被加载到内存之中,并在你启动(即使是从启动盘启动)时随时可用。前三个命令有两个版本:一个版本是两个字母的短名,一个版本是长名。在实践中没有区别,因此,我将在这篇文章中使用短名。
### 使用 MD 创建一个目录
FreeDOS 的 `MD` 命令会创建一个新的目录或子目录。(实际上,由于 `\` 是根目录,从技术上讲,所有的目录都是子目录,因此,我更喜欢在所有的示例中使用“子目录”的说法)。有一个可选的参数是你所想要创建目录的路径,但是如果不包含路径,将在当前工作子目录中创建子目录。
例如,为在你的当前位置创建一个名称为 `letters` 的子目录:
```
C:\HOME\>MD LETTERS
```
这会创建子目录 `C:\letters`
通过包含一个路径,你可以在任意位置创建一个子目录:
```
C:\>MD C:\HOME\LETTERS\LOVE
```
这和先移动到 `C:\HOME\LETTERS` ,然后在其中创建一个子目录的结果相同:
```
C:\CD HOME\LETTERS
C:\HOME\LETTERS\>MD LOVE
C:\HOME\LETTERS\>DIR
LOVE
```
一个路径描述不能超过 63 个字符,包括反斜杠在内。
### 使用 RD 移除一个目录
FreeDOS 的 `RD` 命令会移除一个子目录。这个子目录必须是空的。如果它包含文件或其它是子目录,你将会得到错误信息。它也有一个可选的路径参数,语法与 `MD` 的相同。
你不能移除你的当前工作子目录。为移除此目录,你必须 `CD` 到其父目录,然后再移除不需要的子目录。
### 使用 DELTREE 删除文件和目录
`RD` 命令可能会让人有点迷糊,因为在该命令中内置了保护 FreeDOS 的措施。例如,你不能删除一个包含内容的子目录是一种安全措施。`DELTREE` 就是解决方案。
`DELTREE` 命令会删除整个子目录“树”(子目录)、其包含的所有的文件,以及其包含的所有的子目录及其包含的所有的文件等等,上述的一切都在一个简单的命令中完成。有时,它可能有点 _太_ 容易了,因为它可以如此快速地擦除数据。它是忽略文件属性的,因此你可以擦除隐藏、只读,和未知的系统文件。
你甚至可以在命令中具体指定多个目录树来擦除它们。这条命令将在一个命令中擦除这两个目录中的所有子目录:
```
C:\>DELTREE C:\FOO C:\BAR
```
这是那些使用前需要三思的命令中的其中一个。毫无疑问,它自然有其价值。我仍然对转到每个子目录,删除个别文件,检查每个子目录的内容,一次删除一个子目录, 然后再跳转到上一层目录,重复上述过程的乏味而记忆犹新。`DELTREE` 在你需要时是非常省时。但是我从不会将其用于日常维护,因为一此失误都能造成重大的损失。
### 格式化一个硬盘驱动器
`FORMAT` 命令也可以用于准备一个空白的硬盘驱动器来将文件写入其中。这将格式化 `D:` 驱动器:
```
C:\>FORMAT D:
```
### 复制文件
`COPY` 命令,顾名思义,将文件从一个位置复制到另一个位置。所需要的参数是:将要被复制的文件、要将其复制到的路径和文件。开关选项包含:
* `/Y` 当一个文件要被覆盖时,避免出现提示。
* `/-Y` 当一个文件要被覆盖时,需要出现提示。
* `/V` 验证副本的内容。
这将从 `C:` 上的工作目录中复制文件 `MYFILE.TXT``D:` 驱动器的根目录,并将其重命名为 `EXAMPLE.TXT`
```
C:\>COPY MYFILE.TXT D:\EXAMPLE.TXT
```
这将从 `C:` 上的工作目录中复制文件 `EXAMPLE.TXT` 到 `C:\DOCS\` 目录,接下来验证文件的内容来确保副本是完整的:
```
C:\>COPY EXAMPLE.TXT C:\DOCS\EXAMPLE.TXT /V
```
你也可以使用 `COPY` 命名来合并和追加文件。这个命令将合并两个文件 `MYFILE1.TXT``MYFILE2.TXT` ,并将其放置到一个新的名称为 `MYFILE3.TXT` 的文件之中:
```
C:\>COPY MYFILE1.TXT+MYFILE2.TXT MYFILE3.TXT
```
### 使用 XCOPY 复制目录
`XCOPY` 命令将复制整个目录以及它们的所有的子目录和这些子目录中包含的所有的文件。参数是将要复制的文件和其路径,以及将要复制到的目的地。重要的开关选项是:
* `/S` 复制当前目录及其子目录中的所有文件。
* `/E` 复制子目录,即使它们是空的。这个选项必须和 `/S` 一起使用。
* `/V` 验证其所制作的副本。
这是一个非常强大和有用的命令,尤其是用于备份目录或整个硬盘驱动器。
这个命令将复制目录 `C:\DOCS` 的全部内容,包括所有的子目录及其内容(除了空的子目录以外),并将其放置到驱动器 `D:` 的目录 `D:\BACKUP\DOCS\` 之中:
```
C:\>XCOPY C:\DOCS D:\BACKUP\DOCS\ /S
```
### 使用 FreeDOS
FreeDOS 是一个有趣的、轻量的、开源的操作系统。不管你正在使用它来更新你的主板的固件,还是给予旧计算机新生,它都能提供很多有用的实用程序,可以使你能够很好地使用它工作。学习 FreeDOS 的基本知识。你都可能会被它的多才多艺所惊讶。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/4/freedos-commands
作者:[Kevin O'Brien][a]
选题:[lujun9972][b]
译者:[robsean](https://github.com/robsean)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/ahuka
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/lenovo-thinkpad-laptop-window-focus.png?itok=g0xPm2kD (young woman working on a laptop)
[2]: https://www.freedos.org/
[3]: https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-8-format-copy-diskcopy-xcopy/
[4]: https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-10-directory-commands/
[5]: https://allaboutdosdirectoires.blogspot.com/

View File

@ -0,0 +1,205 @@
[#]: subject: (Get started with batch files in FreeDOS)
[#]: via: (https://opensource.com/article/21/3/batch-files-freedos)
[#]: author: (Kevin O'Brien https://opensource.com/users/ahuka)
[#]: collector: (lujun9972)
[#]: translator: (robsean)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-14111-1.html)
在 FreeDOS 中使用批处理文件
======
> 编写你自己的简单程序来自动执行通常需要大量输入的任务的批处理文件,是一种极好的方法。
![](https://img.linux.net.cn/data/attachment/album/202112/24/102751sldikuebf7z4u64l.jpg)
在 Linux 上,创建 _shell 脚本_ 来自动执行重复的任务是很常见的。类似地,在开源版的旧式 DOS 操作系统 [FreeDOS][2] 上,你可以创建一个包含数个 FreeDOS 命令的 _批处理文件_ 。然后,你就可以运行你的批处理文件来按顺序执行每个命令。
你可以使用一个 ASCII 文本编辑器来创建批处理文件,诸如 FeeDOS 的 Edit 应用程序。在你创建一个批处理文件后,你可以使用一个文件名称加上扩展名 `.bat` 来保存它。文件名称应该是唯一的。如果你使用 FreeDOS 的一个命令的名称作为你自己的文件名称,那么可能将会执行 FreeDOS 的命令,而不会是你的批处理文件。
实际上,所有的内部的和外部的 FreeDOS 命令都可以在一个批处理文件中使用。在你创建一个批处理文件时你其实就是在编写一个程序。FreeDOS 批处理文件可能没有结构化编程语言的功能,但是对于耗时短暂却重复乏味的任务来说,它是非常方便的。
### 注释你的代码
对于任何程序员来说,学习的第一个好习惯都应该是:在一个程序中放置注释来解释该代码正在做什么。这是一件非常容易完成的事情,但是你需要仔细,不要傻傻地让操作系统来执行你的注释。避免出现这种情况的方法是在一个注释行的开头处放置 `REM`“remark” 的缩写) 。
FreeDOS 忽略以 `REM` 开头的代码行。但是任何查看源文件代码(即你在你的批处理文件中所编写的文本)的人都可以读取你的注释并理解它在做什么。这也是一种临时性禁用一个命令而不需要删除它的一种方法。只需要打开你的批处理文件来进行编辑,在你想要禁用行的开头处放置 `REM` ,并保存它。在你想要重新启用这个命令时,只需要打开文件来进行编辑和移除 `REM` 。这种技巧有时被称为 “注释掉” 一个命令。
### 开始设置
在你开始编写你自己的批处理文件前,我建议在 FreeDOS 中创建一个临时目录。这将会为你提供一个处理批处理文件的安全空间,不会意外地删除、移动,或重命名重要的系统文件或目录。在 FreeDOS 上,你可以使用 `MD` 命令来 [创建一个目录][3]
```
C:\>MD TEMP
C:\>CD TEMP
C:\TEMP>
```
FreeDOS 的 `ECHO` 命令会控制当你运行一个批处理文件时在屏幕上显示的东西。例如,这里是一个简单是单行批处理文件:
```
ECHO Hello world
```
如果你创建这个文件并运行它,你将看到在屏幕上显示的句子。从命令行中完成这项操作的最快的方法是:使用 `COPY` 命令来从你的键盘中(`CON`)获取输入,并将其放置到文件 `TEST1.BAT` 之中。接下来,按下组合键 `Ctrl+Z` 来停止复制过程,按下你键盘上的 `Return``Enter` 按键来返回一个提示。
在你的临时目录中尝试创建这个文件为 `TEST1.BAT` ,接下来运行它:
```
C:\TEMP>COPY CON TEST1.BAT
CON => TEST1.BAT
ECHO Hello world
^Z
C:\TEMP>TEST1
Hello world
```
当你想要显示一段文本时,这可能很有用。例如,在一个程序完成它的任务时,你可能会在你的屏幕上看到一条告诉你需要等待的消息,或者在一个网络环境中时,你可能会看到一条登录消息。
如果你想要显示一个空行怎么办?你可能会认为 `ECHO` 命令本身就可以达到目的,但是单独一个 `ECHO` 命令只会询问 FreeDOS 来响应 `ECHO` 是打开还是关闭:
```
C:\TEMP>ECHO
ECHO is on
```
获取一个空白行的方法是在 `ECHO`后紧接着使用一个 `+`符号:
```
C:\TEMP>ECHO+
C:\TEMP>
```
### 批处理文件变量
变量是一个存储你需要你的批处理文件临时记住的信息的位置。这是编程的一个重要的功能,因为你不能总是知道你的批处理文件需要使用什么样的数据。这里有一个用于演示的简单示例。
创建 `TEST3.BAT`
```
@MD BACKUPS
COPY %1 BACKUPS\%1
```
变量是使用百分比符号和随后的数字表示的,因此,这个批处理文件将在你的当前目录中创建一个 `BACKUPS` 子目录,然后将复制变量 `%1``BACKUPS` 文件夹之中。这个变量是什么?当你运行批处理文件时,变量由你决定:
```
C:\TEMP>TEST3 TEMP1.BAT
TEST1.BAT => BACKUPS\TEST1.BAT
```
你的批处理文件已经复制 `TEST1.BAT` 到一个名称为 `BACKUPS` 的子目录,因为在你运行批处理文件时,你标识这个文件为一个参数。你的批处理文件将把 `%1` 替换为 `TEST1.BAT`
变量是按位置的。变量 `%1` 是你提供给命令的第一个参数,变量 `%2` 是第二个参数,以此类推。假设你创建一个批处理文件来列出一个目录的内容:
```
DIR %1
```
尝试运行它:
```
C:\TEMP>TEST4.BAT C:\HOME
ARTICLES
BIN
CHEATSHEETS
GAMES
DND
```
这像预期一样的工作。但是下面这个却失败了:
```
C:\TEMP>TEST4.BAT C:\HOME C:\DOCS
ARTICLES
BIN
CHEATSHEETS
GAMES
DND
```
如果你尝试它,你将得到第一个参数(`C:\HOME`)的列表,而得不到第二个参数(`C:\DOCS`)的列表。这是因为你的批处理文件仅查找一个变量(`%1`),此外,`DIR` 命令也仅能获取一个目录。
此外,当你运行一个批处理文件时,你也不需要为其具体指定扩展名 —— 除非你运气相当不好地为批处理文件选取了一个与 FreeDOS 外部命令或类似命令相同的名称。当 FreeDOS 执行命令时,它按下面的顺序执行:
1. 内部命令
2. 带有 *.COM 扩展名的外部命令
3. 带有 *.EXE 扩展名的外部命令
4. 批处理文件
### 多个参数
好的,选择重新编写 `TEST4.BAT` 文件来使一个命令可以获取两个参数,以便你可以看到这是如何工作的。首先,使用 `EDIT` 应用程序来创建一个简单的名称为 `FILE1.TXT` 的文本文件。在其中放置一段某种类型例如“Hello world”的语句并在你的 `TEMP` 工作目录中保存文件。
接下来,使用 `EDIT` 来更改你的 `TEST4.BAT` 文件:
```
COPY %1 %2
DIR
```
保存它,然后执行命令:
```
C:\TEMP\>TEST4 FILE1.TXT FILE2.TXT
```
在运行你的批处理文件时,你会看一个你的 `TEMP` 目录的目录列表。在列出的文件之中,你有 `FILE1.TXT``FILE2.TXT` ,它们是由你的批处理文件所创建的。
### 嵌套批处理文件
批处理文件的另一个功能是能够 “嵌套” ,这意味着一个批处理文件可以在另外一个批处理文件中被调用和运行。为查看这是如何工作的,从一对简单的批处理文件开始:
第一个文件被称为 `NBATCH1.BAT`
```
@ECHO OFF
ECHO Hello
CALL NBATCH2.BAT
ECHO world
```
第一行 `@ECHO OFF` 轻轻地告诉批处理文件在你运行它时仅显示命令 (而不是命令本身) 的输出。你可能会在前面的示例中注意到这里有很多关于批处理文件正在做什么的反馈;在这种情况下,你正在允许你的批处理文件仅显示结果。
第二个批处理被称为 NBATCH2.BAT
```
echo from FreeDOS
```
使用 `EDIT` 来创建这两个文件,并在你的 TEMP 子目录中保存它们。运行 `NBATCH1.BAT` 来查看会发生什么:
```
C:\TEMP\>NBATCH1.BAT
Hello
from FreeDOS
world
```
你的第二个批处理文件将在第一个批处理文件之中通过 `CALL` 命令来执行,它将提供在你 “Hello world” 信息中间的字符串 “from FreeDOS” 。
### FreeDOS 脚本
编写你自己的简单程序来自动执行通常需要大量输入的任务的批处理文件,是一种极好的方法。你使用的 FreeDOS 越多, 你将越熟悉它的命令,在你熟知命令后,在一个批处理文件中列出它们仅是一件使你的 FreeDOS 系统让你生活轻松的事情。尝试一下!
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/3/batch-files-freedos
作者:[Kevin O'Brien][a]
选题:[lujun9972][b]
译者:[robsean]](https://github.com/robsean)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/ahuka
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_screen_windows_files.png?itok=kLTeQUbY (Computer screen with files or windows open)
[2]: https://www.freedos.org/
[3]: https://opensource.com/article/21/2/freedos-commands-you-need-know
[4]: https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-15-introduction-to-batch-files/
[5]: https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-17-batch-file-variables-nested-batch-files/

View File

@ -0,0 +1,178 @@
[#]: subject: (FreeDOS commands for Linux fans)
[#]: via: (https://opensource.com/article/21/6/freedos-linux-users)
[#]: author: (Jim Hall https://opensource.com/users/jim-hall)
[#]: collector: (lujun9972)
[#]: translator: (robsean)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-14092-1.html)
为 Linux 用户准备的 FreeDOS 命令
======
> 如果你已经熟悉了 Linux 命令行,尝试这些命令有助于轻松地进入 FreeDOS 。
![](https://img.linux.net.cn/data/attachment/album/202112/18/102331ubkem265eqz6u1mk.jpg)
如果你已经尝试过 FreeDOS 你可能已经被命令行所吓倒。DOS 命令可能稍微不同于你所使用的 Linux 命令行,因此,使用它的命令行上需要学习一些新的命令。
但是对于 Linux 用户来说,它不是一种 “全新的” 体验。在 FreeDOS 中,除了 DOS 命令之外,我们还包含一些已经熟悉的标准的 Unix 命令。因此,如果你已经熟悉了 Linux 命令行,尝试这些命令有助于轻松地进入 FreeDOS
### 在四周走走
在 FreeDOS 文件系统中使用 `cd` 命令来 _更改目录_ 。在 FreeDOS 上的用法在 Linux 上的用法基本相同。要更改到一个名称为 `apps` 的子目录,输入 `cd apps` 。要回到先前的目录,输入 `cd ..`
在 FreeDOS 上导航浏览目录和路径是仅有的不同点,目录分隔符是 `\`(“反斜杠”)而不是你在 Linux 上使用的 `/` (“正斜杠”)。例如,让我们假设你在 `\devel` 目录之中,你想移动到 `\fdos` 目录。这两个目录相对于 _根_ 目录而言是处于相同的 “层次” 之中的。因此,你可以输入 `cd ..\fdos` 来 “向后返回” 一个目录层次(使用 `..` ,然后再 “转到” `fdos` 目录。
要更改到一个新的目录,你可以使用先前提到的反斜杠来替换需要给出的完整的路径。如果你已经深入了另外一个路径之中,并且只是像立即切换到新的位置,那么这会是非常方便的。例如,要更改到 `\temp` 目录,你可以输入 `cd \temp`
```
C:\>cd apps
C:\APPS>cd ..
C:\>cd devel
C:\DEVEL>cd ..\fdos
C:\FDOS>cd \temp
C:\TEMP>_
```
在 FreeDOS 中,像大多数的 DOS 系统一样你可以在DOS 提示符中看到你的当前路径。在 Linux 上,你的提示符可能类似于 `$` 。在 FreeDOS 上,提示符会列出当前的驱动器及其当前的路径,接下来使用 `>` 作为提示符(看做 Linux 上的 `$`)。
### 列出和显示文件
在 Linux 上,列出当前目录中文件的标准命令是 `ls` 命令。在 FreeDOS ,它是一个不同的命令: `dir` 。但是你可以创建一个 _别名_ 来获取一种与 `ls` 类似的行为。
要为另外一个命令创建一个别名,使用内置的 `alias` 命令。例如,使用此命令来为 `ls` 定义一个别名,这个别名将显示一个目录列表,与在 Linux 上使用 `ls` 类似:
```
C:\>alias ls=dir /one /w /b /l
C:\>ls
[apps] command.com [devel] fdauto.bat fdconfig.sys
[fdos] kernel.sys [src] [temp]
C:\>
```
在 FreeDOS 上的命令选项格式与 Linux 稍微不同。在 Linux 上, 你使用一个连字符号(`-`)表示选项。但是在 FreeDOS 上,你使用一个正斜杠来表示选项。上面的 `alias` 命令使用斜杆杠字符 — 它们是 `dir` 的选项。`/one` 可选择项告诉 `dir` 以某种方式排序(`o`):先按名称(`n`)再按扩展名(`e`)来排序一些文件和目录。`/w` 使用一个 “宽” 目录列表,`/b` 使用一种不带有 `dir` 通常提供的其它信息的 “裸” 显示,`/l` 指示 `dir` 以小写字母的形式显示文件和目录。
注意,针对于 FreeDOS 的 `dir` 命令的命令行选项与针对于 Linux 的 `ls` 命令的命令行选项截然不同,因此,你不能像你在 Linux 上一样精确地使用这个 `ls` 别名。例如,在 FreeDOS 上使用此别名输入 `ls -l` 将产生一条 “文件未找到” 的错误,因为底层的 FreeDOS 的 `dir` 命令不能找到一个名称为 `-l` 的文件。不过,对于基本的 “查看在我的系统上有哪些文件” 来说,这个 `ls` 别名已经足够帮助 Linux 用户开始使用 FreeDOS 了。
类似地,你可以为 FreeDOS 的 `type` 命令创建一个别名,来像 Linux 的 `cat` 命令一样工作。两个重新都会显示一个文本文件的内容。虽然 `type` 不支持你可能在 Linux 下使用的命令行选项,但是显示一单个文件的基本用法是相同的。
```
C:\FDOS>alias cat=type
C:\FDOS>cat version.fdi
PLATFORM=FreeDOS
VERSION=1.3-RC4
RELEASE=2021-04-30
C:\FDOS>
```
### 其它的类 Unix 命令
FreeDOS 包含一些精选的其它常见的类 Unix 命令,因此 Linux 用户将不会感觉到拘束。为在 FreeDOS 上使用这些 Linux 命令,你可能需要从 “FreeDOS Installer” - “My Package List Editor Software (FDIMPLES)” 软件包管理器来安装 “Unix Like Tools” 软件包。
![Installing the Unix-like package set][2]
Jim Hall, CC-BY SA 4.0
并不是所有的类 Unix 实用程序都能像在 Linux 上对应的实用程序一样 _一致地_ 工作。这就是我们称其为 _类 Unix_ 的原因。如果你将要使用一些深层次的命令行选项,你可能需要检查其兼容性,不过,对于典型的用法是没有问题的。开始在 FreeDOS 上使用这些类 Unix 命令:
`cal` 命令是标准的 Unix 的日历程序。例如,为显示当前月份的日历,只需要输入 `cal` 。为查看一个具体指定的月份,将月份和年份作为参数予以给定:
```
C:\>cal 6 1994
June 1994
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
```
使用 `du` 命令来查看你的磁盘使用情况。这是 Linux 的 `du` 命令的简单版本,并且不支持路径以外的任何命令行选项。
```
C:\>du -s apps
usage: du (start path)
C:\>du apps
158784 C:\APPS\FED
0 C:\APPS
Total from C:\APPS is 158784
C:\>
```
`head` 命令显示一个文件的前几行。例如,这是一种确定一个文件是否包含正确数据的简单方法。
```
C:>head fdauto.bat
@ECHO OFF
set DOSDIR=C"\FDOS
set LANG=EN
set TZ=UTC
set PATH=%dosdir%\BIN
if exist %dosdir%\LINKS\NUL set PATH=%path%;%dosdir%\LINKS
set NLSPATH=%dosdir%\NLS
set HELPPATH=%dosdir%\HELP
set TEMP=%dosdir%\TEMP
set TMP=%TEMP%
C:\>
```
要查看一个完整的文件,使用 `more` 命令,在 FreeDOS 上的默认文件查看器。这将一次显示一屏的文件,然后在显示下一屏的信息前,打印一个按下一次按键的提示。`more` 命令是一个非常简单的文件查看器;在 Linux 上你可能已经使用过一个功能更全面的查看器,可以尝试一下 `less` 命令。`less` 命令提供 “向后” 滚动一个文件的能力,以防你错过一些东西。你还可以搜索具体指定的文本。
```
C:\>less fdauto.bat
@ECHO OFF
set DOSDIR=C"\FDOS
set LANG=EN
set TZ=UTC
set PATH=%dosdir%\BIN
if exist %dosdir%\LINKS\NUL set PATH=%path%;%dosdir%\LINKS
set NLSPATH=%dosdir%\NLS
set HELPPATH=%dosdir%\HELP
set TEMP=%dosdir%\TEMP
set TMP=%TEMP%
[...]
```
如果在你的程序路径变量(`PATH`)中有很多的目录,并且不确定某个程序是从哪里运行的,你可以使用 `which` 命令。这个命令将扫描程序路径变量,并且将打印出你正在查找的程序的完整的位置。
```
C:\>which less
less C:\>FDOS\BIN\LESS.EXE
C:\>_
```
FreeDOS 1.3 RC4 包含其它的类 Unix 命令,你可能会在其它更特殊的情况下使用。这些命令包括:
* `bc`:任意精度数字处理语言
* `sed`:流编辑器
* `grep``xgrep`:使用正则表达式搜索一个文本文件
* `md5sum`:生成一个文件的一个 MD5 签名
* `nro`:简单排版,使用 nroff 宏
* `sleep`:暂停系统几秒钟
* `tee`:保存一个命令行流的副本
* `touch`:修改一个文件的时间戳
* `trch`:转换单个字符(像 Linux 的 `tr` 一样)
* `uptime`:报告你 FreeDOS 系统已经运行多长的时间
### 在你控制下的 FreeDOS
FreeDOS ,像 Linux 和 BSD 一样,是开源的。不管你是想通过学习一种新的命令行交互方式来挑战你自己,还是想再去熟悉令人舒适的类 Unix 工具FreeDOS 都是一款有趣的值得尝鲜的操作系统。尝试一下!
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/6/freedos-linux-users
作者:[Jim Hall][a]
选题:[lujun9972][b]
译者:[robsean](https://github.com/robsean)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/jim-hall
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/freedos-fish-laptop-color.png?itok=vfv_Lpph (FreeDOS fish logo and command prompt on computer)
[2]: https://opensource.com/sites/default/files/uploads/unix-like.png (Installing the Unix-like package set)

View File

@ -0,0 +1,174 @@
[#]: subject: (Configure FreeDOS in plain text)
[#]: via: (https://opensource.com/article/21/6/freedos-fdconfigsys)
[#]: author: (Jim Hall https://opensource.com/users/jim-hall)
[#]: collector: (lujun9972)
[#]: translator: (robsean)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-14061-1.html)
FreeDOS 配置指南
======
> 学习如何使用 FDCONFIG.SYS 来配置 FreeDOS 。
![](https://img.linux.net.cn/data/attachment/album/202112/08/124646wahca435y60acpha.jpg)
FreeDOS 是主配置文件是在根目录中的名称为 `FDCONFIG.SYS` 的文件。这个文件包含一系列的行,每行都设置一个诸如 `LASTDRIVE=Z` 或 `FILES=40` 的值。例如,在 FreeDOS 1.3 RC4 中的默认 `FDCONFIG.SYS` ,看起来像这样:
```
SET DOSDIR=C:\FDOS
!COUNTRY=001,858,C:\FDOS\BIN\COUNTRY.SYS
!LASTDRIVE=Z
!BUFFERS=20
!FILES=40
!MENUCOLOR=7,0
MENUDEFAULT=1,5
MENU 1 - Load FreeDOS with JEMMEX, no EMS (most UMBs), max RAM free
MENU 2 - Load FreeDOS with JEMM386 (Expanded Memory)
MENU 3 - Load FreeDOS low with some drivers (Safe Mode)
MENU 4 - Load FreeDOS without drivers (Emergency Mode)
12?DOS=HIGH
12?DOS=UMB
12?DOSDATA=UMB
1?DEVICE=C:\FDOS\BIN\JEMMEX.EXE NOEMS X=TEST I=TEST NOVME NOINVLPG
234?DEVICE=C:\FDOS\BIN\HIMEMX.EXE
2?DEVICE=C:\FDOS\BIN\JEMM386.EXE X=TEST I=TEST I=B000-B7FF NOVME NOINVLPG
34?SHELL=C:\FDOS\BIN\COMMAND.COM C:\FDOS\BIN /E:1024 /P=C:\FDAUTO.BAT
12?SHELLHIGH=C:\FDOS\BIN\COMMAND.COM C:\FDOS\BIN /E:1024 /P=C:\FDAUTO.BAT
```
但是,这些指令行都表示什么意思?为什么一些指令行有一个问号(`?`)或一个叹号(`!`),而其它的命令行却没有?
### 一个简单的配置
让我们从一个简单的配置开始,像这样,我们就可以看到我们的配置做了什么。做出这个非常简单的 `FDCONFIG.SYS` 文件:
```
LASTDRIVE=Z
BUFFERS=20
FILES=40
DEVICE=C:\FDOS\BIN\HIMEMX.EXE
SHELL=C:\FDOS\BIN\COMMAND.COM C:\FDOS\BIN /E:1024 /P=C:\FDAUTO.BAT
```
这个配置文件仅包含几个指令:
1. `LASTDRIVE=Z`
2. `BUFFERS=20`
3. `FILES=40`
4. `DEVICE=C:\FDOS\BIN\HIMEMX.EXE`
5. `SHELL=C:\FDOS\BIN\COMMAND.COM C:\FDOS\BIN /E:1024 /P=C:\FDAUTO.BAT`
第一行指令告诉 FreeDOS 在存储器中保留多少驱动器字母。DOS 使用字母来表示附属于系统的每个驱动器,`LASTDRIVE=Z` 表示预留从 `A``Z` 的所有驱动器字母)。 `LASTDRIVE` 会影响系统可以识别的 _逻辑驱动器_ 的数量。你可能没有任何的逻辑驱动器FreeDOS 安装器不会默认设置这些逻辑驱动器。在任何情况下,在任何 FreeDOS 系统上设置 `LASTDRIVE=Z` 都是没有害处的。
`BUFFERS` 行设置文件缓冲区预留存储器。_缓冲区_ 有助于加速某些需要存储空间的进程例如复制文件。如果你为 `BUFFERS` 设置一个较大的值,那么 FreeDOS 将预留更多的存储器。同理反之。大多数的用户将会设置其为 `BUFFERS=20` 或 `BUFFERS=40` ,取决于他们在系统上读写文件的频率。
`FILES` 设置决定 DOS 允许你一次打开多少文件。如果你运行的一个应用程序需要一次打开很多文件,例如打开一个谱系数据库,你可能需要为 `FILES` 设置一个较大的值。对于大多数的用户来说,`FILES=40` 是一个合理的值。
`DEVICE` 是一个特殊的指令,用于加载 _设备驱动器_ 。DOS 需要针对某些硬件或配置文件的设备驱动器。这行 `DEVICE=C:\FDOS\BIN\HIMEMX.EXE` 来加载 _HimemX_ 设备驱动这样DOS 可以利用超出前 640 KB 的扩展存储器。
最后的指令行告诉 FreeDOS 的内核在哪里找到命令行 shell 。默认情况下,内核将从 `COMMAND.COM` 开始查找 shell ,但是你可以使用 `SHELL` 指令来更改它。在这个示例中, `SHELL=C:\FDOS\BIN\COMMAND.COM` 说明 shell 是 `COMMAND.COM` 程序,位于 `C` 驱动器上的 `\FDOS\BIN` 目录之中。
在 `SHELL` 结尾处的其它文件表示选项为 `COMMAND.COM` 的 shell 。FreeDOS `COMMAND.COM` 支持一些启动选项来修改它的行为,包括:
* `C:\FDOS\BIN``COMMAND.COM` 程序的完整的路径
* `/E:1024`:环境(`E`)大小,以字节为单位。`/E:1024` 告诉 `COMMAND.COM` 来预留 1024 字节,或者说是 1 KB ,来存储它的环境变量。
* `/P=C:\FDAUTO.BAT``/P` 选项表示 shell 是一个永久性的(`P`shell ,因此用户不能通过输入 `EXIT` 来退出 shell附加文本 `=C:\FDAUTO.BAT` 告诉 `COMMAND.COM` 在启动时执行 `C:\FDAUTO.BAT` 文件,而不再执行默认的 `AUTOEXEC.BAT` 文件)
通过这个简单的配置文件,你应该能够理解 FreeDOS 1.3 RC4 安装的 `FDCONFIG.SYS` 文件中的一些东西。
### 启动菜单
FreeDOS 支持一种有序的功能:在一个系统上使用多个配置文件,使用一个“启动菜单”来选择你想要的配置。`FDCONFIG.SYS` 文件包含一些定义菜单的行:
```
!MENUCOLOR=7,0
MENUDEFAULT=1,5
MENU 1 - Load FreeDOS with JEMMEX, no EMS (most UMBs), max RAM free
MENU 2 - Load FreeDOS with JEMM386 (Expanded Memory)
MENU 3 - Load FreeDOS low with some drivers (Safe Mode)
MENU 4 - Load FreeDOS without drivers (Emergency Mode)
```
`MENUCOLOR` 指令定义启动菜单的文本颜色和背景颜色。这些值通常在 0 到 7 的范围之内, 并代表这些颜色:
* 0 黑色
* 1 蓝色
* 2 绿色
* 3 品蓝
* 4 红色
* 5 品红
* 6 棕色
* 7 白色
因此,`MENUCOLOR=7,0` 的定义意味着显示一个黑色背景(`0`)白色文本(`7`)的菜单。如果你想使用一个蓝色背景白色文本,你可以将其定义为 `MENUCOLOR=7,1`
在行头部的叹号(`!`)意味着:不管你选择哪个菜单,这个指令都将会执行。
`MENUDEFAULT=1,5` 行告诉内核等待用户多长时间来选择启动菜单项,或者如果用户没有选择的话,使用那个默认菜单项。`MENUDEFAULT=1,5` 标示着系统将等待 `5` 秒钟;如果用户不在这段时间内尝试选择一个菜单的话,内核将选择启动菜单 “1” 。
![boot menu][2]
在其后的 `MENU` 行至不同启动菜单配置的标签。它们是按顺序排列的,因此,菜单项目 “1” 是第一个,接下来的 “2” 是第二个,以此类推。
![menu select 4][3]
在 `FDCONFIG.SYS` 中的接下来的一行中,你将在一个问号(`?`)前看到一些数字。这标示“针对这几个数字的启动菜单项,使用这行命令”。例如,如果用户选择启动菜单项 “2”、“3” 或 “4” 的话,那么带有 `234?` 的这行命令才将加载 HimemX 设备驱动器。
```
234?DEVICE=C:\FDOS\BIN\HIMEMX.EXE
```
这里有很多方法来使用 `FDCONFIG.SYS` 以配置你的 FreeDOS 系统。我们在这里只介绍基本的东西,最重用的方法是定义你的 FreeDOS 内核设置。更多的信息,探索 FreeDOS 帮助系统(在命令行中输入 `HELP`)来学习如何使用 FreeDOS `FDCONFIG.SYS` 选项:
* `SWITCHES`:启动时处理过程行为
* `REM``;`:注释(在 `FDCONFIG.SYS` 中将被忽略)
* `MENUCOLOR`:启动菜单文本颜色和背景颜色
* `MENUDEFAULT`:启动菜单默认值
* `MENU`:启动菜单选项
* `ECHO``EECHO`:显示信息
* `BREAK`:设置打开或关闭扩展的 `Ctrl+C` 检查
* `BUFFERS``BUFFERSHIGH`:分配多少磁盘缓冲区
* `COUNTRY`:设置国际化行为
* `DOS`:告诉 FreeDOS 内核如何将其自身加载到存储器之中
* `DOSDATA`:告诉 FreeDOS 加载内核到上位存储器之中
* `FCBS`设置文件控制块FCB的数量
* `KEYBUF`:在存储器中重新指定键盘缓冲区
* `FILES``FILESHIGH`:一次可以打开多少个文件
* `LASTDRIVE``LASTDRIVEHIGH`:设置可以使用的最后一个驱动器字母
* `NUMLOCK`:设置打开或关闭键盘数字锁
* `SHELL`、`SHELLHIGH` 或 `COMMAND`:设置命令行 shell
* `STACKS``STACKSHIGH`:添加堆栈以处理硬件中断
* `SWITCHAR`:重新定义命令行选项开关字符
* `SCREEN`:设置在屏幕上的行数
* `VERSION`:设置向程序报告的 DOS 版本
* `IDLEHALT`:激活节能功能,在某些系统上有用
* `DEVICE``DEVICEHIGH`:加载一个驱动程序到存储器之中
* `INSTALL``INSTALLHIGH`:加载一个 “存储器驻留”TSR程序
* `SET`:设置一个 DOS 环境变量
### 以纯文本方式配置 FreeDOS
像 Linux 和 BSD 一样FreeDOS 配置以纯文本的方式进行。不需要特殊指定的编辑工具,因此,深入研究,看看哪些选项最适合你。它很简单,但是功能很强大!
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/6/freedos-fdconfigsys
作者:[Jim Hall][a]
选题:[lujun9972][b]
译者:[robsean](https://github.com/robsean)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/jim-hall
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/laptop_screen_desk_work_chat_text.png?itok=UXqIDRDD (Person using a laptop)
[2]: https://opensource.com/sites/default/files/uploads/boot-menu.png (The boot menu waits for 5 seconds before assuming menu item 1)
[3]: https://opensource.com/sites/default/files/uploads/menu-select4.png (Use the arrow keys to select a boot menu configuration)

View File

@ -0,0 +1,343 @@
[#]: subject: "Best Web Browsers for Ubuntu and Other Linux Distributions"
[#]: via: "https://itsfoss.com/best-browsers-ubuntu-linux/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14075-1.html"
适用于 Linux 的最佳网页浏览器
======
没有所谓的完美的网页浏览器。这完全取决于你喜欢什么以及你用它来做什么。
但对于 Linux 上的网页浏览器,你有哪些最佳选择呢?
在这篇文章中,我试图给出你在 Ubuntu 和其他 Linux 系统上使用的最佳网页浏览器。
> **注:** 我们已经在 Ubuntu 上尝试和测试了这些浏览器。但是,你应该能够在你选择的任何 Linux 发行版上安装它。
### Linux 上的顶级网页浏览器
![][1]
每个浏览器都有其独特之处。而且,对于 Linux 平台,也有一些有趣的独家选择。
在你看到这个列表之前,请注意这不是一个排名列表。列在第 1 位的浏览器不应该被认为比第 2 位、第 3 位或第 10 位的更好。
> **非自由开源软件警报!**
>
> 这里提到的一些应用程序不是开源的。它们被列在这里是因为它们在 Linux 上可用,而文章的重点是 Linux。我们也有一个单独的 [开源的网页浏览器的专门列表][2]。
### 1、Vivaldi
![][3]
**优点**
* 可快速访问网页应用程序的侧边栏
* 集成了日历和电子邮件
* 独特的标签管理
* Pomodoro 功能(时钟计时器)
* 有移动应用程序
**缺点**
* 当使用各种功能时,资源占用很重
* 不是 100% 开源的
[Vivaldi][5] 是一个令人印象深刻的浏览器,它越来越多地得到了 Linux 用户的关注。
虽然它不是 100% 开源的,但你可以在网上找到它的大部分源代码(除了它的用户界面)。
随着 [Vivaldi 4.0 的发布][4],他们更加注重改善 Linux 用户的体验。你可以设置时钟计时器以提高你的工作效率,使用内置翻译来翻译网页,跟踪你的日历活动,为网页应用程序添加快捷方式,并通过这个浏览器为多种任务发挥到极致。
即使它是一个快速的网页浏览器,我也不会觉得它是“最快”或最轻量级的。你需要大量的内存,才能在你工作时发挥它的所有的功能。
总之它是一个功能丰富的网页浏览器。因此如果你需要有尽可能多的功能来完成多种任务Vivaldi 可以是你的选择。
#### 如何在 Linux 上安装 Vivaldi
Vivaldi 提供了 **.deb** 和 **.rpm** 两种软件包,让你可以直接在 Linux 系统中安装它。
如果你是 Linux 的新手,你可以参考我们的资源来 [安装 Deb 文件][6] 和 [安装 RPM 文件][7]。
### 2、Mozilla Firefox
![][8]
**优点**
* 隐私保护
* 不基于 Chrome 引擎
* 开源
* Firefox 帐户服务
**缺点**
* 用户体验会随着重大更新而改变
[Firefox][9] 是大多数 Linux 发行版的默认网页浏览器。因此,它显然是一个开箱即用的浏览器。
除了是开源的,它还提供一些最好的隐私保护功能。而且,通过正确的设置,你可以把它变成类似于 Tor 浏览器(它也是基于 Firefox 的)这样的最安全的浏览器之一。
不仅仅是它的安全性,当你用你的 Firefox 账户登录时,它还集成了有用的功能,如 Pocket保存网页并稍后阅读、VPN、电子邮件别名、漏洞监控等。
#### 如何在 Linux 上安装 Firefox
它应该已经预装在你的 Linux 发行版中了。但是,如果它不存在,你可以在软件中心搜索它,或者用终端的以下命令来安装它:
```
sudo apt install firefox
```
### 3、Chromium
![][10]
**优点**
* Chrome 浏览器的开源替代品
* 与 Chrome 浏览器的功能相似
**缺点**
* 缺少 Chrome 浏览器提供的某些功能
[Chromium][12] 是 Chrome 浏览器的开源替代品,也是许多其他基于 Chrome 的浏览器的基础。
如果你不想使用 Chrome 浏览器Chromium 是你在 Linux 上获得相同体验的最佳选择。
尽管谷歌控制着 Chromium并且 [一直锁定着 Chrome][11],但对于 Linux 系统来说,它是一个不错的选择。
#### 如何在 Linux 上安装 Chromium
你应该可以在软件中心轻松找到它。但是,如果你需要帮助,可以参考我们的 [Chromium 安装指南][13]。
### 4、谷歌 Chrome
![][14]
**优点**
* 与谷歌服务的无缝整合
**缺点**
* 不是开源的
[Chrome 浏览器][15] 是一个优秀的网页浏览器,除非你不想选择谷歌的专有解决方案或产品。
你可以得到所有的基本功能,并且能够整合所有的谷歌服务。如果你喜欢在安卓系统上使用 Chrome 浏览器,并希望在多个平台上进行同步,那么它是桌面 Linux 的明显选择。
如果你在使用谷歌服务的同时寻找一个简单而强力的网页浏览器Chrome 浏览器可以是一个不错的选择。
#### 如何在 Linux 上安装 Chrome 浏览器?
Chrome 浏览器提供 Deb 和 RPM 包,可以让你在任何基于 Ubuntu 或 Fedora/openSUSE 发行版上安装。
如果你在安装方面需要帮助,我应该向你指出我们关于 [在 Linux 上安装 Chrome 浏览器][16] 的指南。
### 5、Brave
![][17]
**优点**
* 隐私保护功能
* 性能
**缺点**
* 没有基于账户的同步
[Brave][35] 浏览器是最受欢迎的 Linux 浏览器之一。
它是一个开源项目,基于 Chromium。它提供几个有用的隐私保护功能并以其极快的性能而闻名。
与其他浏览器不同的是,即使你屏蔽了网站上的广告,你也可以获得奖励。你收集的奖励只能用于回馈你喜欢的网站。这样一来,你在屏蔽广告的同时也得到了对网站的支持。
你可以期待以最小的资源占用获得更快的用户体验。  
如果你需要在两者之间做出决定,我们也有一篇详细的 [关于 Brave 和 Firefox 的比较文章][18]。
#### 如何在 Linux 上安装 Brave
与其他一些网页浏览器不同,你不能直接在软件中心找到软件包。你需要在终端输入一些命令来安装该浏览器。
不用担心,你可以按照我们的 [安装 Brave 浏览器的说明][19] 来进行。
### 6、Opera
![][20]
**优点**
* 内置免费的 VPN
* 额外的功能
**缺点**
* 不是开源的
虽然 [Opera][22] 不是最流行的选择,但它对 Linux 用户来说绝对是一个有用的浏览器。
它有一个内置的 VPN 和广告拦截器。因此,在 Opera 浏览器的帮助下,你应该会得到基本的隐私保护。
你可以直接从侧边栏快速访问流行的聊天信使,而不需要启动单独的应用程序或窗口。这种侧边栏的聊天信使网页应用与 Vivaldi 类似,但用户体验明显不同。
总的来说,如果你想要一个免费的 VPN 作为其他基本浏览功能之外的奖励,它是一个不错的选择。
值得注意的是Opera 提供了一个独特的 [Opera GX][21] 浏览器,让你在使用浏览器并同时进行游戏活动时可以调整或强制限制系统资源。在写这篇文章的时候,该功能还在开发 Linux 版本,如果在你读到这篇文章的时候,它已经可以使用了,这可能是一个很好的选择。
#### 如何安装 Opera
Opera 为 Linux 提供了 Deb 包。你只需前往其官方网站下载并安装即可。
### 7、微软 Edge
![][23]
**优点**
* 为同时也使用 Linux 的 Windows 用户提供了方便的选择。
**缺点**
* 不是开源的
[微软 Edge][24] 在受欢迎程度上已经超过了 Mozilla Firefox。不仅仅是因为它是默认的 Windows 浏览器,而是它在基于 Chrome 浏览器的同时,还提供了很有前景的网页体验。
微软 Edge 已经发布了面向 Linux 的稳定版。它目前运行良好,但缺乏一些的通常可用于 Windows 的功能。
总的来说,你应该会发现大部分的基本功能都是可用的。
如果你使用 Windows 和 Linux 作为你的桌面平台,微软 Edge 可以考虑作为首选的网页浏览器。
#### 如何在 Linux 上安装微软 Edge
现在,你可以通过微软 Edge 的官方网页获得 Deb/RPM 文件并安装它。
你也可以看看我们关于 [在 Linux 上安装微软 Edge][25] 的方法。
### Linux 独有的网页浏览器
考虑到安全更新和未来升级,大多数用户喜欢坚持使用主流选项,但也有一些不同的选项。而且,有些是 Linux 用户专属的。
### 8、GNOME WebEpiphany
![][26]
**优点**
* 精简
* 开源
**缺点**
* 缺少许多功能
* 没有跨平台支持
[Epiphany 浏览器][27] 是 GNOME 的默认浏览器。elementary OS 也将其作为默认的网页浏览器。
它是一个精简的浏览器,提供了一个干净和优雅的用户体验。你不能同步你的书签或历史记录,所以如果你想备份或转移到其他浏览器,你需要手动导出它们。
#### 如何安装 GNOME Web
你可能会发现它预装在一些 Linux 发行版中。如果没有,你可以用它的 [Flatpak 包][28] 来在任何 Linux 发行版上安装最新版本。
### 9、Falkon
![][29]
**优点**
* 基于 Firefox 的替代品
**缺点**
* 不能替代 Firefox
* 没有跨平台支持
[Falkon][31] 是一个基于 Firefox 的浏览器,考虑到了隐私问题。它对于基本的网页浏览应该是足够好的,但它可能不是你日常使用的解决方案。
你可以在我们专门的 [关于 Falkon 浏览器的文章][30] 中了解更多关于它的信息并获得安装说明。
### 10、Nyxt
![][32]
**优点**
* 高度的可定制性
* 重点关注键盘操作
**缺点**
* 适用于某些用户
* 缺乏跨平台支持
[Nyxt][36] 是一个有趣的网页浏览器,为资深的键盘用户而建立。你可以使用键盘快捷键来浏览和导航网页。
要了解更多关于它的信息和安装说明,请浏览我们关于 [Nyxt 浏览器][33] 的详细文章。
### 总结
说到 Linux你会有很多选择可供挑选。我在这里特意跳过了 [如 Lynx 这样的基于命令行的网页浏览器][34]。
那么,你会选择什么样的网页浏览器呢?
此外,我很想知道,你在为你的系统安装网页浏览器时会考虑什么?
欢迎在下面的评论中分享你的想法。
--------------------------------------------------------------------------------
via: https://itsfoss.com/best-browsers-ubuntu-linux/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/web-browser-ubuntu.png?resize=800%2C450&ssl=1
[2]: https://itsfoss.com/open-source-browsers-linux/
[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/08/vivaldi-screenshot.png?resize=800%2C502&ssl=1
[4]: https://news.itsfoss.com/vivaldi-4-0-release/
[5]: https://vivaldi.com
[6]: https://itsfoss.com/install-deb-files-ubuntu/
[7]: https://itsfoss.com/install-rpm-files-fedora/
[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/08/firefox-proton.png?resize=800%2C450&ssl=1
[9]: https://www.mozilla.org/en-US/firefox/new/
[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/08/chromium-screenshot.png?resize=800%2C558&ssl=1
[11]: https://news.itsfoss.com/is-google-locking-down-chrome/
[12]: https://www.chromium.org
[13]: https://itsfoss.com/install-chromium-ubuntu/
[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/08/google-chrome-screenshot.png?resize=800%2C557&ssl=1
[15]: https://www.google.com/chrome/
[16]: https://itsfoss.com/install-chrome-ubuntu/
[17]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/07/brave-ui-new.jpg?resize=800%2C450&ssl=1
[18]: https://itsfoss.com/brave-vs-firefox/
[19]: https://itsfoss.com/brave-web-browser/
[20]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/08/opera-screenshot.png?resize=800%2C543&ssl=1
[21]: https://www.opera.com/gx
[22]: https://www.opera.com/
[23]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/04/microsoft-edge-on-linux.png?resize=800%2C439&ssl=1
[24]: https://www.microsoftedgeinsider.com/en-us/
[25]: https://itsfoss.com/microsoft-edge-linux/
[26]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/08/gnome-web.png?resize=800%2C450&ssl=1
[27]: https://apps.gnome.org/en-GB/app/org.gnome.Epiphany/
[28]: https://flathub.org/apps/details/org.gnome.Epiphany
[29]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/12/falkon-browser-1.png?resize=800%2C450&ssl=1
[30]: https://itsfoss.com/falkon-browser/
[31]: https://www.falkon.org
[32]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/05/nyxt-browser-settings.png?resize=800%2C617&ssl=1
[33]: https://itsfoss.com/nyxt-browser/
[34]: https://itsfoss.com/terminal-web-browsers/
[35]: https://brave.com/its979
[36]: https://nyxt.atlas.engineer/

View File

@ -0,0 +1,151 @@
[#]: subject: "Print files from your Linux terminal"
[#]: via: "https://opensource.com/article/21/9/print-files-linux"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
[#]: translator: "MjSeven"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14099-1.html"
从 Linux 终端打印文件
======
> 使用 lpr 命令在终端中打印文件。
![](https://img.linux.net.cn/data/attachment/album/202112/20/135809an6s6bxyg7sjnwyq.jpg)
[在 Linux 上打印很容易][2],但有时感觉要做很多工作,比如启动应用程序、打开文件、在菜单中找到打印选项,单击确认按钮等等。当你是一个终端用户时,通常希望使用简单的触发器执行复杂的操作。打印很复杂,但没有什么比 `lpr` 命令更简单了。
### 使用 lpr 命令打印
使用 `lpr` 命令在终端打印文件:
```
$ lpr myfile.odt
```
如果失败的话,你需要设置默认打印机或手动指定打印机。
### 设置默认打印机
根据我在 1984 年印刷的 Berkeley 4.2 手册的旧版本中找到的资料,`lpr` 命令会分页并将文件发送到打印机池,后者将数据传输到称为 <ruby>行式打印机<rt>line printer</rt></ruby> 的东西。
![显示 LPR 命令信息的页面][3]
现在,最初的 `lpr` 命令已经无法满足,因为现代计算机可以访问多台打印机,而且是那些比点阵行式打印机复杂得多的打印机。现在有一个称为<ruby>通用 Unix 打印系统<rt>Common Unix Printing System</rt></ruby>CUPS子系统可以跟踪你的计算机可以访问的所有打印机计算机应该使用哪个驱动程序与每台打印机通信默认使用哪台打印机等等。 CUPS 捆绑提供的 `lpr.cups``lpr-cups` 命令通常以符号链接到 `lpr`,允许你首先借助 CUPS 配置从终端打印。
使用 `lpr` 打印文件,你应该首先设置默认打印机。你可以在系统的打印机设置中设置:
![设置默认打印机对话框][4]
或者,你也可以使用 `lpadmin` 命令设置:
```
$ sudo lpadmin -d HP_LaserJet_P2015_Series
$ lpstat -v
device for HP_LaserJet_P2015_Series: ipp://10.0.1.222:631/printers/HP_LaserJet_P2015_Series
```
### 使用环境变量设置
你不能在没有管理员账户的系统上设置默认打印机,因为更改打印机默认设置是一项特权任务。在 `lpr` 借助 CUPS 找到目标打印机前,它会在系统中查询 `PRINTER` [环境变量][5]。
在本例中,`HP_LaserJet_P2015_Series` 是打印机的名称。将 `PRINTER` 设置为该值:
```
$ PRINTER=HP_LaserJet_P2015_Series
$ export PRINTER
```
一旦设置了 `PRINTER` 变量,你就可以打印了:
```
$ lpr myfile.pdf
```
### 获取连接的打印机列表
你可以使用 `lpstat` 命令查看所有连接到系统接受打印任务的打印机:
```
$ lpstat -a
HP_LaserJet_P2015_Series accepting requests since Sun 1 Aug 2021 10:11:02 PM NZST
r1060 accepting requests since Wed 18 Aug 2021 04:43:57 PM NZST
```
### 打印到任意一台打印机
将打印机添加到系统后,并且现在你知道如何识别它们了,你可以打印到其中任何一台,无论你是否设置了默认打印机:
```
$ lpr -P HP_LaserJet_P2015_Series myfile.txt
```
### 如何定义打印机
CUPS 有一个友好的前端页面,可通过 Web 浏览器如 Firefox 访问。虽然它使用 Web 浏览器作为用户界面,但它实际上是在本机(一个称为 `localhost` 的位置)的 631 端口上提供服务。CUPS 管理连接到计算机的打印机,并将其配置存储在 `/etc/cups/priters.conf` 中。
`printers.conf` 文件包含详细描述计算机可以访问的打印设备的定义。不要直接编辑它,但如果你想这样做,你必须先停止 `cupsd` 守护进程。
一个典型的文件定义如下所示:
```
<Printer r1060>
Info Ricoh 1060
Location Downstairs
MakeModel Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.6
DeviceURI lpd://192.168.4.8
State Idle
StateTime 1316011347
Type 12308
Filter application/vnd.cups-raw 0 -
Filter application/vnd.cups-raster 100 rastertogutenprint.5.2
Accepting Yes
Shared No
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>
```
在本例中,打印机的名称是 `r1060`,即 “Ricoh Aficio 1060”。
`MakeModel` 属性是从 `lpinfo` 命令中提取的,该命令列出了系统上所有可用的打印机驱动程序。假设你知道要打印到 Ricoh Aficio 1060那么你会发出以下命令
```
$ lpinfo -m | grep 1060
gutenprint.5.2://brother-hl-1060/expert Brother HL-1060 - CUPS+Gutenprint v5.2.11
gutenprint.5.2://ricoh-afc_1060/expert Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.11
```
它会列出已安装的相关驱动程序。
`MakeModel` 属性是结果的后半部分。在本例中为 `Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.11`
`DeviceURI` 属性标识打印机在网络上的位置(或物理位置,例如 USB 端口)。在本例中,它是 `lpd://192.168.4.8`,因为我使用 `lpd` 协议将数据发送到一台网络打印机。在我的另一个系统上,我有一个通过 USB 连接的 HP LaserJect 打印机,因此 `DeviceURI``hp:/usb/HP_LaserJet_P2015_Series?serial=00CNCJM26429`
### 在终端中打印
将作业发送到打印机是一个简单的过程,只要你了解连接到系统的设备以及如何识别它们。在终端打印非常快速、高效,并且易于编写脚本或作为批处理作业完成。试试看!
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/9/print-files-linux
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[MjSeven](https://github.com/MjSeven)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/typewriter-hands.jpg?itok=oPugBzgv (Typewriter with hands)
[2]: https://opensource.com/article/21/8/setup-your-printer-linux
[3]: https://opensource.com/sites/default/files/berkeley-1984-lpr.jpeg
[4]: https://opensource.com/sites/default/files/printer-default.jpeg
[5]: https://opensource.com/article/19/8/what-are-environment-variables

View File

@ -0,0 +1,167 @@
[#]: subject: "Find files and directories on Linux with the find command"
[#]: via: "https://opensource.com/article/21/9/linux-find-command"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
[#]: translator: "MjSeven"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14071-1.html"
使用 find 命令在 Linux 上查找文件和目录
=======================================
> 学习 find 命令的原因有很多。
![](https://img.linux.net.cn/data/attachment/album/202112/11/083907eapzsopvcoc0ooro.jpg)
不管我决心如何组织文件,似乎总有无法找到文件的时候。有时是因为我不记得最初的文件名,其他时候,我知道名字,但我不记得在哪里保存它了。甚至有时我需要一个我最初就没有创建的文件。但是,无论遇到什么困难,我知道在 [POSIX 系统][2] 上,总是有 `find` 命令可以帮助我。
### 安装 find
`find` 命令由 [POSIX 规范][3] 定义,它创建了一个用于衡量 POSIX 系统的开放标准,这包括 Linux、BSD 和 macOS。简而言之只要你运行的是 Linux、BSD 或 macOS那么 `find` 已经安装了。
但是,并非所有的 `find` 命令都完全相同。例如GNU 的 `find` 命令有一些 BSD、Busybox 或 Solaris 上 `find` 命令可能没有或有但实现方式不同的功能。本文使用 [findutils][4] 包中的 GNU `find`,因为它很容易获得且非常流行。本文演示的大多数命令都适用于 `find` 的其他实现,但是如果你在 Linux 以外的平台上尝试命令并得到非预期结果,尝试下载并安装 GNU 版本。
### 按名称查找文件
你可以借助正则表达式使用完整或部分的文件名来定位文件。`find` 命令需要你给出想搜索的目录;指定搜索属性选项,例如,`-name` 用于指定区分大小写的文件名;然后是搜索字符串。默认情况下,搜索字符串按字面意思处理:除非你使用正则表达式语法,否则 `find` 命令搜索的文件名正是你在引号之间输入的字符串。
假设你的 `Documents` 目录包含四个文件:`Foo`、`foo`、`foobar.txt` 和 `foo.xml`。以下是对 `foo` 的字面搜索:
```
$ find ~ -name "foo"
/home/tux/Documents/examples/foo
```
你可以使用 `-iname` 选项使其不区分大小写来扩大搜索范围:
```
$ find ~ -iname "foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
```
### 通配符
你可以使用基本的 shell 通配符来扩展搜索。例如,`*` 表示任意数量的字符:
```
$ find ~ -iname "foo*"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt
```
`?` 表示单个字符:
```
$ find ~ -iname "foo*.???"
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt
```
这不是正则表达式语法,因此 `.` 在示例中只表示字母“点”。
### 正则表达式
你还可以使用正则表达式。与 `-iname``-name` 一样,也有区分大小写和不区分大小写的选项。但不一样的是,`-regex` 和 `-iregex` 搜索应用于整个路径,而不仅仅是文件名。这意味着,如果你搜索 `foo`,你不会得到任何结果,因为 `foo``/home/tux/Documents/foo` 不匹配。相反,你必须要么搜索整个路径,要么在字符串的开头使用通配符:
```
$ find ~ -iregex ".*foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
```
### 查找近一周修改过的文件
要查找近一周修改的文件,使用 `-mtime` 选项以及过去的天数(负数):
```
$ find ~ -mtime -7
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt
```
### 查找近几天修改的文件
你可以结合使用 `-mtime` 选项来查找近几天范围内修改的文件。对于第一个 `-mtime` 参数,表示上一次修改文件的最近天数。第二个参数表示最大天数。例如,搜索修改时间超过 1 天但不超过 7 天的文件:
```
$ find ~ -mtime +1 -mtime -7
```
### 按文件类型限制搜索
指定查找文件的类型来优化 `find` 的结果是很常见的。如果你不确定要查找的内容,则不应该使用此选项。但如果你知道要查找的是文件而不是目录,或者是目录而不是文件,那么这可能是一个很好的过滤器。选项是 `-type`,它的参数是代表不同类型数据的字母代码。最常见的是:
* `d` - 目录
* `f` - 文件
* `l` - 链接文件
* `s` - 套接字
* `p` - 命名管道(用于 FIFO
* `b` - 块设备(通常是硬盘)
下面是一些例子:
```
$ find ~ -type d -name "Doc*"
/home/tux/Documents
$ find ~ -type f -name "Doc*"
/home/tux/Downloads/10th-Doctor.gif
$ find /dev -type b -name "sda*"
/dev/sda
/dev/sda1
```
### 调整范围
`find` 命令默认是递归的,这意味着它会在指定的目录中层层搜索结果。这在大型文件系统中可能会变得不堪重负,但你可以使用 `-maxdepth` 选项来控制搜索深度:
```
$ find /usr -iname "*xml" | wc -l
15588
$ find /usr -maxdepth 2 -iname "*xml" | wc -l
15
```
也可以使用 `-mindepth` 设置最小递归深度:
```
$ find /usr -mindepth 8 -iname "*xml" | wc -l
9255
```
### 下载速查表
本文仅介绍 `find` 的基本功能,它是一个很好的搜索工具,但对于强大的 [Parallel][5] 命令来说,它也是一个非常有用的前端。学习 `find` 的原因有很多,所以 [下载我们免费的 `find` 速查表][6] 吧,它可以帮助你了解有关该命令的更多信息。
---
via: https://opensource.com/article/21/9/linux-find-command
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[MjSeven](https://github.com/MjSeven)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[#]: subject:
[#]: via:
[#]: author:
[#]: collector:
[#]: translator:
[#]: reviewer:
[#]: publisher:
[#]: url:
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/find-file-linux-code_magnifying_glass_zero.png?itok=E2HoPDg0
[2]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains
[3]: https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/
[4]: https://www.gnu.org/software/findutils/
[5]: https://opensource.com/article/18/5/gnu-parallel
[6]: https://opensource.com/downloads/linux-find-cheat-sheet

View File

@ -0,0 +1,178 @@
[#]: subject: "A guide to web scraping in Python using Beautiful Soup"
[#]: via: "https://opensource.com/article/21/9/web-scraping-python-beautiful-soup"
[#]: author: "Ayush Sharma https://opensource.com/users/ayushsharma"
[#]: collector: "lujun9972"
[#]: translator: "MjSeven"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14086-1.html"
Python Beautiful Soup 刮取简易指南
======
> Python 中的 Beautiful Soup 库可以很方便的从网页中提取 HTML 内容。
![](https://img.linux.net.cn/data/attachment/album/202112/16/142118cmffvtfrmh1h3ufv.jpg)
今天我们将讨论如何使用 Beautiful Soup 库从 HTML 页面中提取内容,之后,我们将使用它将其转换为 Python 列表或字典。
### 什么是 Web 刮取,为什么我需要它?
答案很简单:并非每个网站都有获取内容的 API。你可能想从你最喜欢的烹饪网站上获取食谱或者从旅游博客上获取照片。如果没有 API提取 HTML或者说 <ruby>刮取<rt>scraping</rt></ruby> 可能是获取内容的唯一方法。我将向你展示如何使用 Python 来获取。
**并非所以网站都喜欢被刮取,有些网站可能会明确禁止。请于网站所有者确认是否同意刮取。**
### Python 如何刮取网站?
使用 Python 进行刮取,我们将执行三个基本步骤:
1. 使用 `requests` 库获取 HTML 内容
2. 分析 HTML 结构并识别包含我们需要内容的标签
3. 使用 Beautiful Soup 提取标签并将数据放入 Python 列表中
### 安装库
首先安装我们需要的库。`requests` 库从网站获取 HTML 内容Beautiful Soup 解析 HTML 并将其转换为 Python 对象。在 Python3 中安装它们,运行:
```
pip3 install requests beautifulsoup4
```
### 提取 HTML
在本例中,我将选择刮取网站的 [Techhology][2] 部分。如果你跳转到此页面,你会看到带有标题、摘录和发布日期的文章列表。我们的目标是创建一个包含这些信息的文章列表。
网站页面的完整 URL 是:
```
https://notes.ayushsharma.in/technology
```
我们可以使用 `requests` 从这个页面获取 HTML 内容:
```
#!/usr/bin/python3
import requests
url = 'https://notes.ayushsharma.in/technology'
data = requests.get(url)
print(data.text)
```
变量 `data` 将包含页面的 HTML 源代码。
### 从 HTML 中提取内容
为了从 `data` 中提取数据,我们需要确定哪些标签具有我们需要的内容。
如果你浏览 HTML你会发现靠近顶部的这一段
```
<div class="col">
<a href="/2021/08/using-variables-in-jekyll-to-define-custom-content" class="post-card">
<div class="card">
<div class="card-body">
<h5 class="card-title">Using variables in Jekyll to define custom content</h5>
<small class="card-text text-muted">I recently discovered that Jekyll's config.yml can be used to define custom
variables for reusing content. I feel like I've been living under a rock all this time. But to err over and
over again is human.</small>
</div>
<div class="card-footer text-end">
<small class="text-muted">Aug 2021</small>
</div>
</div>
</a>
</div>
```
这是每篇文章在整个页面中重复的部分。我们可以看到 `.card-title` 包含文章标题,`.card-text` 包含摘录,`.card-footer > small` 包含发布日期。
让我们使用 Beautiful Soup 提取这些内容。
```
#!/usr/bin/python3
import requests
from bs4 import BeautifulSoup
from pprint import pprint
url = 'https://notes.ayushsharma.in/technology'
data = requests.get(url)
my_data = []
html = BeautifulSoup(data.text, 'html.parser')
articles = html.select('a.post-card')
for article in articles:
title = article.select('.card-title')[0].get_text()
excerpt = article.select('.card-text')[0].get_text()
pub_date = article.select('.card-footer small')[0].get_text()
my_data.append({"title": title, "excerpt": excerpt, "pub_date": pub_date})
pprint(my_data)
```
以上代码提取文章信息并将它们放入 `my_data` 变量中。我使用了 `pprint` 来美化输出,但你可以在代码中忽略它。将上面的代码保存在一个名为 `fetch.py` 的文件中,然后运行它:
```
python3 fetch.py
```
如果一切顺利,你应该会看到:
```
[{'excerpt': "I recently discovered that Jekyll's config.yml can be used to"
"define custom variables for reusing content. I feel like I've"
'been living under a rock all this time. But to err over and over'
'again is human.',
'pub_date': 'Aug 2021',
'title': 'Using variables in Jekyll to define custom content'},
{'excerpt': "In this article, I'll highlight some ideas for Jekyll"
'collections, blog category pages, responsive web-design, and'
'netlify.toml to make static website maintenance a breeze.',
'pub_date': 'Jul 2021',
'title': 'The evolution of ayushsharma.in: Jekyll, Bootstrap, Netlify,'
'static websites, and responsive design.'},
{'excerpt': "These are the top 5 lessons I've learned after 5 years of"
'Terraform-ing.',
'pub_date': 'Jul 2021',
'title': '5 key best practices for sane and usable Terraform setups'},
... (truncated)
```
以上是全部内容!在这 22 行代码中,我们用 Python 构建了一个网络刮取器,你可以在 [我的示例仓库中找到源代码][7]。
### 总结
对于 Python 列表中的网站内容,我们现在可以用它做一些很酷的事情。我们可以将它作为 JSON 返回给另一个应用程序,或者使用自定义样式将其转换为 HTML。随意复制粘贴以上代码并在你最喜欢的网站上进行试验。
玩的开心,继续编码吧。
_本文最初发表在[作者个人博客][8]上经授权改编。_
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/9/web-scraping-python-beautiful-soup
作者:[Ayush Sharma][a]
选题:[lujun9972][b]
译者:[MjSeven](https://github.com/MjSeven)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/ayushsharma
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_screen_windows_files.png?itok=kLTeQUbY (Computer screen with files or windows open)
[2]: https://notes.ayushsharma.in/technology
[3]: http://december.com/html/4/element/div.html
[4]: http://december.com/html/4/element/a.html
[5]: http://december.com/html/4/element/h5.html
[6]: http://december.com/html/4/element/small.html
[7]: https://gitlab.com/ayush-sharma/example-assets/-/blob/fd7d2dfbfa3ca34103402993b35a61cbe943bcf3/programming/beautiful-soup/fetch.py
[8]: https://notes.ayushsharma.in/2021/08/a-guide-to-web-scraping-in-python-using-beautifulsoup

View File

@ -0,0 +1,271 @@
[#]: subject: "Add storage with LVM"
[#]: via: "https://opensource.com/article/21/9/add-storage-lvm"
[#]: author: "Ayush Sharma https://opensource.com/users/ayushsharma"
[#]: collector: "lujun9972"
[#]: translator: "perfiffer"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14080-1.html"
使用 LVM 添加存储
======
> LVM 为你配置存储的方式提供了极大的灵活性。
![](https://img.linux.net.cn/data/attachment/album/202112/13/235125wn99nloup38jnkoo.jpg)
<ruby>逻辑卷管理器<rt>Logical Volume Manager</rt></ruby>LVM允许在操作系统和硬件之间建立一个抽象层。通常你的操作系统会查找磁盘`/dev/sda`、`/dev/sdb` 等)和这些磁盘中的分区(`/dev/sda1`、`/dev/sdb1` 等)。
LVM 在操作系统和磁盘之间创建了一个虚拟层。LVM 不是一个驱动器持有一定数量的分区,而是创建一个统一的存储池(称为<ruby>卷组<rt>Volume Group</rt></ruby>),跨越任意数量的物理驱动器(称为<ruby>物理卷<rt>Physical Volume</rt></ruby>。使用卷组中可用的存储LVM 可以为你的操作系统提供类似磁盘和分区的功能。
操作系统完全没有意识到它被“欺骗”了。
![Drive space][2]
由于 LVM 虚拟地创建卷组和逻辑卷因此即使在系统运行时也可以轻松调整它们的大小或移动它们或者创建新卷。此外LVM 提供了其它情况下不存在的特性,比如创建逻辑卷的活动快照时无需首先卸载磁盘。
LVM 中的卷组是一个命名的虚拟容器,将底层物理磁盘组合在一起。它充当一个池,可以从中创建不同大小的<ruby>逻辑卷<rt>Logical Volume</rt></ruby>。逻辑卷包含实际的文件系统并且可以跨越多个磁盘,并且不需要物理上连续。
### 特性
* 分区名称通常具有系统名称,例如 `/dev/sda1`。LVM 具有便于人们理解的名称,例如 `home` 或者 `media`
* 分区的总大小受底层物理磁盘大小的限制。在 LVM 中,卷可以跨越多个磁盘,并且仅受 LVM 中所有物理磁盘总大小的限制。
* 分区通常只有在磁盘未使用且已卸载时才能调整大小、移动或删除。LVM 卷可以在系统运行时进行操作。
* 只能通过分配与分区相邻的可用空间来扩展分区。LVM 卷可以从任何地方占用可用空间。
* 扩展分区涉及移动数据以腾出可用空间这非常耗时并且可能会在断电期间导致数据丢失。LVM 卷可以从卷组中的任何地方占用可用空间,甚至可以在另一块磁盘上。
* 因为在 LVM 中创建卷非常容易,所以它鼓励创建不同的卷,例如创建单独的卷来测试功能或尝试不同的操作系统。对于分区,此过程将非常耗时并且容易出错。
* 快照只能在 LVM 中创建。它允许你创建当前逻辑卷的时间点镜像,即使在系统运行时也可以。这非常适合备份。
### 测试设置
作为演示,假设你的系统具有以下驱动器配置:
```
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
`-xvda1 202:1 0 8G 0 part /
xvdb 202:16 0 1G 0 disk
xvdc 202:32 0 1G 0 disk
xvdd 202:48 0 2G 0 disk
xvde 202:64 0 5G 0 disk
xvdf 202:80 0 8G 0 disk
```
#### 步骤 1. 初始化磁盘以用于 LVM
运行 `pvcreate /dev/xvdb /dev/xvdc /dev/xvdd /dev/xvde /dev/xvdf`。输出应如下:
```
Physical volume "/dev/xvdb" successfully created
Physical volume "/dev/xvdc" successfully created
Physical volume "/dev/xvdd" successfully created
Physical volume "/dev/xvde" successfully created
Physical volume "/dev/xvdf" successfully created
```
使用 `pvs` 或者 `pvdisplay` 查看结果:
```
"/dev/xvde" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/xvde
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 728JtI-ffZD-h2dZ-JKnV-8IOf-YKdS-8srJtn
"/dev/xvdb" is a new physical volume of "1.00 GiB"
--- NEW Physical volume ---
PV Name /dev/xvdb
VG Name
PV Size 1.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID zk1phS-7uXc-PjBP-5Pv9-dtAV-zKe6-8OCRkZ
"/dev/xvdd" is a new physical volume of "2.00 GiB"
--- NEW Physical volume ---
PV Name /dev/xvdd
VG Name
PV Size 2.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID R0I139-Ipca-KFra-2IZX-o9xJ-IW49-T22fPc
"/dev/xvdc" is a new physical volume of "1.00 GiB"
--- NEW Physical volume ---
PV Name /dev/xvdc
VG Name
PV Size 1.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID FDzcVS-sq22-2b13-cYRj-dXHf-QLjS-22Meae
"/dev/xvdf" is a new physical volume of "8.00 GiB"
--- NEW Physical volume ---
PV Name /dev/xvdf
VG Name
PV Size 8.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID TRVSH9-Bo5D-JHHb-g0NX-8IoS-GG6T-YV4d0p
```
#### 步骤 2. 创建卷组
运行 `vgcreate myvg /dev/xvdb /dev/xvdc /dev/xvdd /dev/xvde /dev/xvdf`。通过 `vgs` 或者 `vgdisplay` 查看结果:
```
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 5
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 5
Act PV 5
VG Size 16.98 GiB
PE Size 4.00 MiB
Total PE 4347
Alloc PE / Size 0 / 0
Free PE / Size 4347 / 16.98 GiB
VG UUID ewrrWp-Tonj-LeFa-4Ogi-BIJJ-vztN-yrepkh
```
#### 步骤 3: 创建逻辑卷
运行以下命令:
```
lvcreate myvg --name media --size 4G
lvcreate myvg --name home --size 4G
```
使用 `lvs` 或者 `lvdisplay` 验证结果:
```
--- Logical volume ---
LV Path /dev/myvg/media
LV Name media
VG Name myvg
LV UUID LOBga3-pUNX-ZnxM-GliZ-mABH-xsdF-3VBXFT
LV Write Access read/write
LV Creation host, time ip-10-0-5-236, 2017-02-03 05:29:15 +0000
LV Status available
# open 0
LV Size 4.00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume ---
LV Path /dev/myvg/home
LV Name home
VG Name myvg
LV UUID Hc06sl-vtss-DuS0-jfqj-oNce-qKf6-e5qHhK
LV Write Access read/write
LV Creation host, time ip-10-0-5-236, 2017-02-03 05:29:40 +0000
LV Status available
# open 0
LV Size 4.00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
```
#### 步骤 4: 创建文件系统
使用以下命令创建文件系统:
```
vgcreate myvg /dev/xvdb /dev/xvdc /dev/xvdd /dev/xvde /dev/xvdf
mkfs.ext3 /dev/myvg/media
mkfs.ext3 /dev/myvg/home
```
挂载它:
```
mount /dev/myvg/media /media
mount /dev/myvg/home /home
```
使用 `lsblk` 命令查看完整配置:
```
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
`-xvda1 202:1 0 8G 0 part /
xvdb 202:16 0 1G 0 disk
xvdc 202:32 0 1G 0 disk
xvdd 202:48 0 2G 0 disk
xvde 202:64 0 5G 0 disk
`-myvg-media 252:0 0 4G 0 lvm /media
xvdf 202:80 0 8G 0 disk
`-myvg-home 252:1 0 4G 0 lvm /home
```
#### 步骤 5: 扩展 LVM
添加一块新的 `/dev/xvdg` 磁盘。要扩展 `home` 卷,运行以下命令:
```
pvcreate /dev/xvdg
vgextend myvg /dev/xvdg
lvextend -l 100%FREE /dev/myvg/home
resize2fs /dev/myvg/home
```
运行 `df -h`,你应该可以看到新的磁盘大小。
就是这样!
LVM 为你配置存储的方式提供了极大的灵活性。尝试一下,并享受 LVM 的乐趣!
本文首发于 [作者个人博客][4],经授权改编。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/9/add-storage-lvm
作者:[Ayush Sharma][a]
选题:[lujun9972][b]
译者:[perfiffer](https://github.com/perfiffer)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/ayushsharma
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bus-storage.png?itok=95-zvHYl (Storage units side by side)
[2]: https://opensource.com/sites/default/files/lvm.png (Drive space)
[3]: https://creativecommons.org/licenses/by-sa/4.0/
[4]: https://notes.ayushsharma.in/2017/02/working-with-logical-volume-manager-lvm

View File

@ -0,0 +1,101 @@
[#]: subject: "5 reasons to switch to Firefox right now"
[#]: via: "https://opensource.com/article/21/9/switch-to-firefox"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
[#]: translator: "leo314159"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14108-1.html"
马上改用 Firefox 的 5 个理由
======
> 19 年前Mozilla Firefox 发布了 0.1 版。
![](https://img.linux.net.cn/data/attachment/album/202112/23/163609yryosyby5s8o7uss.jpg)
Mozilla Firefox 是一个让我对开源大开眼界应用程序。这肯定不是转折点,而是几个开源应用程序逐渐吸引我注意力,这是累积效应的的一小部分。并且这最终导致我转向 Linux并且从未回头。自从切换到 Firefox这发生在我有意识地转向开源之前以来我一直是一个狂热的 Firefox 用户。我的手机一直是 Firefox OS 的手机,直到这个项目被放弃。不过,有趣的是,我并不特别地认为自己是 Firefox 的 _粉丝_ 。我从那时到现在一直在使用 Firefox是因为从许多方面来说它都是最佳的浏览器。接下来是我认为应该马上 [改用 Firefox][2] 的五个原因。
### 1、Firefox 专注隐私
Firefox 的维护者是 [Mozilla 基金会][3]这是一个完全不以你的个人数据为动机的非营利组织。Mozilla 不关心你搜索的内容、访问的网站或你网站上使用的时间。这不是 Mozilla 的商业模式,但它显然是许多其他流行浏览器的商业模式。
即使你不反对浏览器以隐私为由跟踪你的活动,你可能也曾有过这样的经历:只是一次性购买过某件不寻常的礼物,就导致你访问的每个网站都试图向你出售该物品。互联网很大,所以有时根据用户的兴趣来重组它似乎是一个好主意。我承认,如果我所有的搜索都可以“开源”给它们,可能会提供更相关的结果。但话又说回来,我宁愿主动选择这种优化,而不是让它以及许多其他未知因素一起,在我的控制之外为我做出决定。
![Firefox 中的隐私 (Seth Kenlon, CC BY-SA 4.0) ][4]
Mozilla 的数据政策是这样的: [尽量少拿、保持安全、毫无隐藏。][5]
不止如此Firefox 还提供了帐户 [监控][6],这是 Mozilla 的一项可选服务如果你的任何在线帐户因大规模数据泄露而受到损害它就会提醒你。另外Mozilla 使用开源的 Wireguard 提供付费 VPN 服务,因此无论何时何地你都可以安全浏览。
### 2、Firefox 可以使用容器
很难相信的是,曾经有一段时间,当时领先的网页浏览器没有标签页功能。在上世纪 90 年代末和本世纪 00 年代初当你想同时访问两个网页时你必须打开两个单独的浏览器窗口。Firefox以及之前的 Mozilla 浏览器)是标签页界面的早期使用者。
标签页是现在浏览器的标配,但是通过 Firefox 的扩展,标签页界面的功能有了有趣的新变化。由 Mozilla 自己开发的 [Firefox 多帐户容器插件][7] 可以将每个标签页变成浏览器中的一个隔离的“容器”。
![Firefox 中的容器化标签页 (Seth Kenlon, CC BY-SA 4.0)][8]
例如,假设你的雇主使用谷歌应用,但你信不过谷歌接触你的个人信息。你可以使用多账户容器插件来隔离你的工作活动,以便谷歌仅触及你的职业生活,而无法访问你日常生活的任何部分。
你甚至可以使用两个不同的帐户打开同一个网站,此外由于标签页是用颜色标识的,因此无论你是要隔离网站还是只是在浏览器中添加新的视觉提示,这都很有帮助。
### 3、Firefox 的用户界面设计
尽管我们人类可能对新事物更感兴趣但在熟悉又可靠的东西中我们能找到更多的舒适感。多年以来Firefox 不断更新其界面并且拥有了相当多的创新而这些创新现在已经成为非官方的行业标准。但就总体来说它一直保持不变。Firefox 的用户界面保留了你认为理所当然的所有标准惯例。
当你下载文件时,系统会提示你选择让 Firefox 如何处理该文件。根据你的选择,你可以在适当的应用程序中打开文件或将其保存到硬盘驱动器。你可以选择让 Firefox 记住你的选择并作为你将来的选择,或者让它继续提示你。
![Firefox用户界面设计 (Seth Kenlon, CC BY-SA 4.0)][9]
当你需要应用程序菜单时,可以在现代的“汉堡包式”的菜单中找到它,或者你可以按 `Alt` 键在 Firefox 的窗口顶部显示传统菜单。
无论你是否是 Firefox 的长期用户Firefox 中的一切都看起来很熟悉,因为它建立在多年的用户界面设计经验之上。在它可以创新的地方,它就会去创新,但是如果这些创新会违反直觉,它就会废弃这种创新。
### 4、Firefox 的开发者工具
回溯万维网的早期,你可以浏览到任何网站并查看其源代码。仅仅这样做几次就很有可能学习到 HTML 的知识。一切都是公开的、透明的、显而易见的,而且相对简单的。
互联网已经逐渐演变成为一个强大的 [基于云的超级计算机][10]现在从网站中提取有意义的上下文有时需要的不仅仅是其底层标记的文本转储。为了确保每个人都可以对网站的功能进行逆向工程和正向工程Firefox 在浏览器中集成了一套功能强大的开发工具。
![开发者工具 (Seth Kenlon, CC BY-SA 4.0) ][11]
虽然这最初是基于 Firefox 的创新(在 2006 年推出的 [Firebug][12]),但现在许多浏览器都有开发者工具功能。然而,并非所有的开发者工具都一样,正是 Firefox 的开发者面板使 Firefox 成为我进行网页设计和用户体验测试的首选浏览器。
### 5、Firefox 是开源的
最为重要的是Firefox 是完全开源的。这是一个优秀的浏览器,并且对你毫无隐藏。除了保持互联网开放,教育人们了解互联网,并推广日常工作的开源解决方案之外,它没有别有用心的动机。
![Firefox 是开源的 (Seth Kenlon, CC BY-SA 4.0)][13]
你可以为 Firefox 做出贡献。你可以对你不喜欢的部分提交报告。你可以看到与互联网交互时运行的代码。几十年来Firefox 一直在支持开放互联网。它忠于其自身的原则,并且可以说已经迫使几个竞争对手走向开源。如果 Firefox 没有抬高公众的期望,它们可能不会选择开源。
Firefox 是现代互联网上的具有影响力的力量它是一款优秀的浏览器。Firefox 可以在你的桌面和移动设备上运行,因此想让自己轻松一点,[就安装个 Firefox 吧][14]。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/9/switch-to-firefox
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[leo314159](https://github.com/leo314159)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/redpanda_firefox_pet_animal.jpg?itok=aSpKsyna (red panda)
[2]: http://getfirefox.org
[3]: https://foundation.mozilla.org/en/
[4]: https://opensource.com/sites/default/files/firefox-privacy.jpg
[5]: https://blog.mozilla.org/en/products/firefox/firefox-data-privacy-promise/
[6]: https://monitor.firefox.com
[7]: https://github.com/mozilla/multi-account-containers#readme
[8]: https://opensource.com/sites/default/files/firefox-container.jpg
[9]: https://opensource.com/sites/default/files/screenshot_from_2021-09-16_12-13-14.png
[10]: https://www.redhat.com/en/products/open-hybrid-cloud
[11]: https://opensource.com/sites/default/files/firefox-dev.jpg
[12]: https://getfirebug.com/
[13]: https://opensource.com/sites/default/files/firefox-open.jpg
[14]: http://getfirefox.com

View File

@ -0,0 +1,216 @@
[#]: subject: "Bash Shell Scripting for beginners (Part 1)"
[#]: via: "https://fedoramagazine.org/bash-shell-scripting-for-beginners-part-1/"
[#]: author: "zexcon https://fedoramagazine.org/author/zexcon/"
[#]: collector: "lujun9972"
[#]: translator: "unigeorge"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14131-1.html"
Bash Shell 脚本新手指南(一)
======
![][1]
如标题所示,本文将涵盖面向初学者的 Bash Shell 脚本知识。虽然本文没有回顾 Bash 的历史,但是有很多资源能够便于读者了解相关内容,读者也可以直接访问 <https://www.gnu.org/software/bash/> 上的 GNU 项目。我们会从了解一些非常基本的概念开始,然后再将相关知识综合起来。
### 创建脚本文件
首先来创建一个脚本文件。我们要确保当前目录为家目录。
```
cd ~
```
在主目录中创建示例文件。文件名可以是任意名称,本文使用 `learnToScript.sh` 作为文件名。
```
touch learnToScript.sh
```
此时家目录中就生成了一个名为 `learnToScript.sh` 的文件。输入以下命令以检验该文件是否存在,还可以注意到其权限是 `-rw-rw-r`
```
[zexcon@trinity ~]$ ls -l
total 7
drwxr-xr-x. 1 zexcon zexcon 90 Aug 30 13:08 Desktop
drwxr-xr-x. 1 zexcon zexcon 80 Sep 16 08:53 Documents
drwxr-xr-x. 1 zexcon zexcon 1222 Sep 16 08:53 Downloads
-rw-rw-r--. 1 zexcon zexcon 70 Sep 17 10:10 learnToScript.sh
drwxr-xr-x. 1 zexcon zexcon 0 Jul 7 16:04 Music
drwxr-xr-x. 1 zexcon zexcon 318 Sep 15 13:53 Pictures
drwxr-xr-x. 1 zexcon zexcon 0 Jul 7 16:04 Public
drwxr-xr-x. 1 zexcon zexcon 0 Jul 7 16:04 Videos
[zexcon@trinity ~]$
```
正式开始之前还有一件事要做。可以试一下在没有写入任何内容的情况下执行脚本,命令行输入以下内容:
```
./learnToScript.sh
```
```
[zexcon ~]$ ./learnToScript.sh
bash: ./learnToScript.sh: Permission denied
```
提示权限被拒绝,因为该文件没有执行权限。所以你需要更改文件的权限才能执行脚本。如果你不熟悉权限相关知识,建议阅读 [Paul W. Frields][4] 写的 Fedora 杂志文章。
- [命令行小知识:权限][5]
- [命令行小知识:深入权限][6]
假定我们已经了解了权限相关知识,回到终端更改 `learnToScript.sh` 文件,增加执行权限。输入以下内容:
```
chmod 755 learnToScript.sh
```
```
[zexcon@trinity ~]$ ls -l
total 7
drwxr-xr-x. 1 zexcon zexcon 90 Aug 30 13:08 Desktop
drwxr-xr-x. 1 zexcon zexcon 80 Sep 16 08:53 Documents
drwxr-xr-x. 1 zexcon zexcon 1222 Sep 16 08:53 Downloads
-rwxr-xr-x. 1 zexcon zexcon 70 Sep 17 10:10 learnToScript.sh
drwxr-xr-x. 1 zexcon zexcon 0 Jul 7 16:04 Music
drwxr-xr-x. 1 zexcon zexcon 318 Sep 15 13:53 Pictures
drwxr-xr-x. 1 zexcon zexcon 0 Jul 7 16:04 Public
drwxr-xr-x. 1 zexcon zexcon 0 Jul 7 16:04 Videos
[zexcon@trinity ~]$
```
好的,现在一切准备就绪,你已经获得了 `learnToScript.sh` 命令的读取、写入和执行权限 `-rwxr-xr-x`)。
### 编辑脚本文件
下面的内容需要你熟悉 `vim` 或其他类似的文本编辑器,本文选用 `vim`。在命令提示符下输入以下内容:
```
vim learnToScript.sh
```
这会打开一个空的文本文件,里面有一堆波浪号。键盘输入 `i` 将进入插入模式。通过查看终端窗口的左下角,你可以确认它处于该模式。(友情推荐,[nano][7] 编辑器也很不错。)
接下来我们要确保文件被正确的解释器识别。因此,输入 `#!` 和 bash 的目录 `/bin/bash`
```
#!/bin/bash
```
本文教程步骤的最后一件事是保存文档。按 `Esc` 退出输入模式,然后按 `Shift+:`。在冒号处输入 `wq`,按下回车键,就会写入(`w`)文件并退出(`q``vim` 编辑器。
> 使用 `vim` 时要记住,要想写入文档,就需要输入 `i`,此时你会在底部看到 `INSERT`。要保存文档,就需要按 `Esc` 退出输入模式,然后按 `Shift+:`,输入 `w` 写入文件;或者按 `Esc`,然后 `Shift+:` 输入 `q`,实现退出而不保存;或者将 `wq` 连在一起,可以实现写入并关闭文件。`Esc` 本身就只是退出插入模式。你可以在其 [官方网站][8] 或 [教程网站][9] 上找到更多关于 `vim` 的信息。
### 开始正式写脚本
#### echo 命令
`echo` 命令用于向终端返回一些信息,可以使用单引号、双引号或不使用引号。那么让我们用一个传统的 Hello World 来试试它!
```
#!/bin/bash
echo Hello World!
echo 'Hello World!'
echo "Hello World!"
```
```
[zexcon ~]$ ./learnToScript.sh
Hello World!
Hello World!
Hello World!
[zexcon ~]$
```
注意,上述三行得到了相同的结果。使用单引号、双引号或不使用引号的结果不是一定相同的,但在这个基本脚本中确实得到了同样的结果。在某些情况下,引号的类型不同会导致结果差异。至此恭喜你编写了第一个 Bash 脚本。当你继续创建更多脚本并放飞你的想法时,可能会需要了解以下更多的知识。
#### 命令替换 $( ) 和 \` \`
命令替换可以实现以下效果:获取在命令行执行命令的结果,并将该结果写入变量。例如,如果在命令提示符下输入 `ls`,可以获得当前工作目录的列表。我们用这个命令来实践一下。命令替换选项有两个,请注意:第一个选项使用键盘左侧 `Tab` 键上方的反引号。它与波浪号 `~` 在一个键位上。第二个选项使用 shell 变量。
```
#!/bin/bash
command1=`ls`
echo $command1
command2=$(ls)
echo $command2
```
```
[zexcon ~]$ ./learnToScript.sh
Desktop Documents Downloads learnToScript.sh Music Pictures Public snap Videos
Desktop Documents Downloads learnToScript.sh Music Pictures Public snap Videos
[zexcon ~]$
```
注意变量、等号和命令开头之间不要有空格。使用这两个选项得到的结果是完全相同的。请注意,变量需要以美元符号开头。如果你忘记了,并且回显了不带美元符号的命令变量,会只输出命令的名称,如下所示:
```
#!/bin/bash
command1=`ls`
echo command1
command2=$(ls)
echo command2
```
```
[zexcon ~]$ ./learnToScript.sh
command1
command2
[zexcon ~]$
```
#### 双括号 (())
那么双括号有什么用呢? 很简单,双括号用于数学方程式。
```
#!/bin/bash
echo $((5+3))
echo $((5-3))
echo $((5*3))
echo $((5/3))
```
```
[zexcon ~]$ ./learnToScript.sh
8
2
15
1
[zexcon ~]$
```
### 结语
至此,我们已经创建了第一个脚本。我们知道了如何执行多个命令:将它们放在一个脚本中并运行,就可以获得结果。下一篇文章会继续讨论,了解输入和输出的重定向、管道命令、使用双括号或者添加注释等知识。
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/bash-shell-scripting-for-beginners-part-1/
作者:[zexcon][a]
选题:[lujun9972][b]
译者:[unigeorge](https://github.com/unigeorge)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://fedoramagazine.org/author/zexcon/
[b]: https://github.com/lujun9972
[1]: https://fedoramagazine.org/wp-content/uploads/2021/09/bash_shell_scripting_pt1-1536x650.jpg
[2]: https://unsplash.com/@nbandana?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
[3]: https://unsplash.com/s/photos/shell-scripting?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
[4]: http://pfrields.id.fedoraproject.org/
[5]: https://fedoramagazine.org/command-line-quick-tips-permissions/
[6]: https://fedoramagazine.org/command-line-quick-tips-more-about-permissions/
[7]: https://fedoramagazine.org/gnu-nano-minimalist-console-editor/
[8]: https://www.vim.org/docs.php
[9]: https://linuxhandbook.com/basic-vim-commands/

View File

@ -0,0 +1,193 @@
[#]: subject: "How to Install and Setup Flutter Development on Ubuntu and Other Linux"
[#]: via: "https://itsfoss.com/install-flutter-linux/"
[#]: author: "Marco Antonio Carmona Galván https://itsfoss.com/author/itsfoss/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14054-1.html"
如何在 Linux 上安装和设置 Flutter 开发环境
======
![](https://img.linux.net.cn/data/attachment/album/202112/06/115835fdjlxmd55mxew1nn.jpg)
谷歌的 UI 工具包 Flutter 在创建移动、网页和桌面的跨平台应用程序方面越来越受欢迎。
[Flutter][1] 不是一种编程语言,而是一个软件开发工具包。[Dart][2] 是 Flutter SDK 下面使用的编程语言。
Flutter 是谷歌开源的 Fuchsia OS、谷歌 STADIA 以及许多其他软件和移动应用背后的主要框架。
如果你想使用 Flutter 进行开发,本教程将帮助你在 Ubuntu 和其他类似 Linux 发行版上搭建好你的环境。
### 在 Ubuntu 和其他 Linux 上用 Snap 安装 Flutter
在 Linux 上安装 Flutter 最简单的方法是使用 Snap。如果你使用的是 Ubuntu你已经有了 Snap。**对于其他发行版,请确保 [启用 Snap 支持][3]**。
[打开终端][4] 并在终端中使用以下命令来安装 Flutter
```
sudo snap install flutter --classic
```
你会在你的终端上看到类似这样的东西:
![][5]
一旦安装完成,就是验证它的时候了。不仅仅是 Flutter 的安装,还要验证 Flutter 正常运行所需满足的每一个依赖关系。
#### 验证 Flutter 的依赖项
为了验证 Flutter 正确工作所需的每一个依赖项Flutter 有一个内置选项:
```
Flutter doctor
```
这个过程开始看起来像这样:
![][6]
而它完成时像这样:
![][7]
正如你所看到的,我们需要 Android Studio 来工作。所以让我们来安装它。我们该怎么做呢?用 Snap [在 Linux 上安装 Android Studio][8] 也是毫不费力的。
#### 安装并设置好 Android Studio
在终端中,使用下面的命令来安装 Android Studio
```
sudo snap install android-studio --classic
```
![][9]
安装完毕后,从我们的操作系统菜单中打开 Android Studio。
![][10]
就快完成了。现在是配置 Android Studio 的时候了。
![][11]
点击下一步,如果你不想让事情复杂化,就选择“<ruby>标准<rt>standard</rt></ruby>”。
![][12]
选择你喜欢的主题(我喜欢“<ruby>暗色<rt>Darcula</rt></ruby>”的)。
![][13]
确认一切正常,然后点击“<ruby>下一步<rt>Next</rt></ruby>”。
![][14]
最后,点击“<ruby>完成<rt>Finish</rt></ruby>”按钮。
![][15]
然后等待,直到下载完成。
![][16]
### 创建一个 Hello World Flutter 应用样本
在 Android Studio 中,进入项目,选择“<ruby>新建 Flutter 项目<rt>New Flutter Project</rt></ruby>”。Flutter SDK 路径会默认设置。
![][17]
在这里,神奇的事情开始出现了,这是你设置你的项目名称的地方,在这个例子中,它将被称为 “hello_world”。
让我们选择三个可用的平台。**Android、iOS 和 Web**。最后,点击“<ruby>完成<rt>Finish</rt></ruby>”。
![][18]
项目中的主文件位于 `lib/main.dart`,如下图所示:
![][19]
选定后,擦除文件中包含的所有内容,并将其改为本示例代码:
```
// Copyright 2018 The Flutter team. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Welcome to Flutter',
home: Scaffold(
appBar: AppBar(
title: const Text('Welcome to Flutter'),
),
body: const Center(
child: Text('Hello World'),
),
),
);
}
}
```
重要的是,这只是向你展示 Flutter 是如何工作的,如果你确信要学习这种美丽而不可思议的语言,这里有 [文档][20] 可以看到更多关于它的信息。**尝试**它!
最后,选择 “Chome Web” 设备,并点击“<ruby>运行<rt>Run</rt></ruby>”按钮,如下图所示;并看到神奇的效果!
![][21]
你可以如此快速地创建一个 Flutter 项目,真是不可思议。跟你的 Hello World 项目打个招呼吧。
![][22]
### 最后...
如果你想在短时间内做出漂亮的移动和网页界面的贡献Flutter 和 Dart 是完美的。
现在你知道了如何在 Ubuntu Linux 上安装 Flutter以及如何用它创建你的第一个应用程序。我很高兴可以为你写这篇文章希望对你有所帮助如果你有任何问题请通过留言或给我发邮件来告诉我祝你好运!
本教程由 Marco Antonio Carmona Galván 提供,他是物理学和数据科学专业的学生。
--------------------------------------------------------------------------------
via: https://itsfoss.com/install-flutter-linux/
作者:[Marco Antonio Carmona Galván][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/itsfoss/
[b]: https://github.com/lujun9972
[1]: https://flutter.dev/
[2]: https://dart.dev/
[3]: https://itsfoss.com/install-snap-linux/
[4]: https://itsfoss.com/open-terminal-ubuntu/
[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/installing-flutter-ubuntu.png?resize=786%2C195&ssl=1
[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/09/verify-flutter-install.png?resize=786%2C533&ssl=1
[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/Flutter-verification-completes.png?resize=786%2C533&ssl=1
[8]: https://itsfoss.com/install-android-studio-ubuntu-linux/
[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/09/install-android-studio-linux-snap.png?resize=786%2C187&ssl=1
[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/09/Open_Android_Studio.webp?resize=800%2C450&ssl=1
[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/Setting-Up-Android-Studio-1.png?resize=800%2C603&ssl=1
[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/09/Setting-Up-Android-Studio-2.png?resize=800%2C603&ssl=1
[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/Setting-Up-Android-Studio-3.png?resize=800%2C603&ssl=1
[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/Setting-Up-Android-Studio-4.png?resize=800%2C603&ssl=1
[15]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/Setting-Up-Android-Studio-5.png?resize=800%2C603&ssl=1
[16]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/09/Setting-Up-Android-Studio-6.png?resize=800%2C603&ssl=1
[17]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/09/New_flutter_project.png?resize=800%2C639&ssl=1
[18]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/sample-flutter-project.png?resize=800%2C751&ssl=1
[19]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/sample-flutter-project-1.png?resize=800%2C435&ssl=1
[20]: https://flutter.dev/docs
[21]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/sample-flutter-project-2.png?resize=800%2C450&ssl=1
[22]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/sample-flutter-project-3.png?resize=800%2C549&ssl=1
[23]: https://itsfoss.com/cdn-cgi/l/email-protection

View File

@ -0,0 +1,145 @@
[#]: subject: "7 ways anyone can contribute to Open Practice Library"
[#]: via: "https://opensource.com/article/21/10/open-practice-library"
[#]: author: "Donna Benjamin https://opensource.com/users/kattekrab"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14117-1.html"
为开放实践图书馆做出贡献的 7 种方式
======
> 向开放实践图书馆做出贡献是参与全球实践者社区的一种有趣方式,这些实践者都愿意分享他们的知识并改进他们自己的工作方式。
![](https://img.linux.net.cn/data/attachment/album/202112/26/094416hvtgijuavgzwvgge.jpg)
[开放实践图书馆][2] 是一个社区驱动的实践集合,以支持团队的协作。“实践” 是一种行为或一个 “技巧”,是团队用来改善他们实现目标的方式。有时这些目标是技术性的,如编程和 IT但所有的团队都可以用来帮助定义他们的实践。无论你是教师、活动策划者、销售人员还是艺术家这个过程都很重要。对于一个团队站在同一起跑线上是至关重要的而这正是开放实践图书馆可以帮助你做到的。
该图书馆借鉴了来自不同背景的从业者的经验。如果你是一个敏捷开发从业者或用户体验研究员,你可能会对该图书馆中的一些实践感到熟悉。作为一个系统管理员、网站可靠性工程师或软件开发人员,你也可能认出一些你自己的工具包中的实践。
为了支持跨职能的团队共同建立他们的协作技能,开放实践图书馆向所有人开放,让他们使用、学习、分享,甚至贡献,无论他们的角色或工作职能如何。许多人在使用这个图书馆的时候,惊讶地发现他们可以为其做出贡献!因此,下面我将介绍一下你可以为开放实践图书馆做出贡献的七种不同方式,然后探讨一下你可能为之贡献的三个原因。
### 1、添加评论
分享你使用该实践的经验。它对你有用吗?你会改变什么吗?对其他使用该实践的人有什么建议吗?请登录评论系统,与社区展开讨论。
**方法:** 在每个实践页面的底部都有一个评论区。
![添加评论 (Donna Benjamin, CC BY-SA 4.0)][3]
要加入评论对话,你必须在 [Hyvor Talk][5] 上注册一个账户。
### 2、传播消息
向其他人介绍开放实践图书馆并邀请他们也来贡献力量,以帮助开放实践图书馆社区的发展。可以在 [Twitter][6]、[Instagram][7] 上找到实践图书馆,并收听 [该播客][8]。
### 3、添加你最喜欢的实践
你是一个拥有久经考验的方法的实践者,而图书馆里还没有涉及这个方法吗?如果能与大家分享,那就太好了。请注意,这些内容是在创意共享许可下授权的,以确保其开放给所有人使用并与他人分享。请查看该图书馆的 [编辑风格指南][9],了解更多关于如何为其撰写一篇实践。
OK准备好了吗
从菜单中选择 <ruby>添加一个实践<rt>Add a Practice</rt></ruby>
![添加一个实践 (Donna Benjamin, CC BY-SA 4.0)][10]
这将使你进入内容管理系统CMS的登录页面。该图书馆使用开源的 Netlify CMS 来管理投稿。
选择 <ruby>用 Netlify 身份登录<rt>Login with Netlify Identity</rt></ruby>
![用 Netlify 身份登录 (Donna Benjamin, CC BY-SA 4.0)][11]
然后点击 <ruby>使用 GitHub 继续<rt>Continue with GitHub</rt></ruby>
![使用 Github 继续 (Donna Benjamin, CC BY-SA 4.0)][12]
接下来,用你的 GitHub 信息登录,或者(免费)创建一个账户。
![用 Github 的信息登录 (Donna Benjamin, CC BY-SA 4.0)][13]
登录后,选择 <ruby>新的实践<rt>New Practice</rt></ruby>,这将使你进入一个表格,可以将实践添加到集合中。
![选择新的实践 (Donna Benjamin, CC BY-SA 4.0)][14]
一旦你起草了新的实践,你还需要把你的名字和 GitHub 用户名添加到 CMS 中,以便在 <ruby>实践<rt>Practice</rt></ruby> 页面上显示。从 <ruby>快速添加<rt>Quick add</rt></ruby> 菜单中选择 <ruby>作者<rt>Author</rt></ruby>,或者从 <ruby>集合<rt> Collections</rt></ruby> 菜单中选择 <ruby>作者<rt>Author</rt></ruby>,然后选择 <ruby>新作者<rt>New Author</rt></ruby>
![选择新作者 (Donna Benjamin, CC BY-SA 4.0)][15]
### 4、添加一个有用的资源或链接
点击 <ruby>改进此实践<rt>Improve this Practice</rt></ruby> 按钮,找到 <ruby>我们喜欢的链接<rt>links we love</rt></ruby>部分。发布网址、添加描述、并选择类别(例如,视频、博客)。
![改进此实践的按钮 (Donna Benjamin, CC BY-SA 4.0)][16]
你可以搜索你想改进的实践例如“Affinity Mapping”。
![搜索实践 (Donna Benjamin, CC BY-SA 4.0)][17]
然后点击实践名称,打开编辑页面。
### 5、看到一个错别字
点击 <ruby>改进此实践<rt>Improve this Practice</rt></ruby> 按钮,直接去修改它吧
### 6、在 GitHub 上添加一个议题
看到有什么不对的地方吗?对某个功能有建议?请让社区知道。
**如何做:** 到 [议题页面][18] 并登录 GitHub 来添加一个新议题。
### 7、帮助处理网站的代码
在 GitHub 上有一个累积的议题,列出了网站上需要帮助的地方。如果你想卷起袖子,[帮助修复错误][19] 或开发新功能 —— 你甚至还可以贡献代码。
### 总结
为什么要贡献?这里有三个原因供你考虑。
1. “寓学于教”是一句古老的罗马谚语。
通过写下来并与他人分享,你会加深自己对所使用的实践的理解。对该实践的来源背景做一些研究,帮助注明原始来源,并找到其使用的例子。
2. 提高你的写作技巧。
通过遵循编辑风格指南,你正在学习调整你的自然写作风格以适应特定的标准。这是一项有价值的基本沟通技巧,你可以在一系列的环境中应用。
3. 展示领导力。
通过与一个开放的全球社区分享你的知识和专长,你可以帮助他人成长并从你的深度经验中学习。
[向开放实践图书馆贡献][20] 是参与全球开放的实践者社区的一种有趣而简单的方式,这些实践者都愿意分享他们的知识,并试图改善他们自己的工作方式。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/10/open-practice-library
作者:[Donna Benjamin][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/kattekrab
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/books_read_list_stack_study.png?itok=GZxb9OAv (Stack of books for reading)
[2]: https://openpracticelibrary.com/learn
[3]: https://opensource.com/sites/default/files/uploads/1_add-comment.png (Add a comment)
[4]: https://creativecommons.org/licenses/by-sa/4.0/
[5]: https://talk.hyvor.com
[6]: https://twitter.com/practicelibrary
[7]: https://www.instagram.com/openpracticelibrary
[8]: https://podcasts.apple.com/us/podcast/open-practice-podcast/id1501715186
[9]: https://openpracticelibrary.com/page/editorial/
[10]: https://opensource.com/sites/default/files/uploads/2_add-practice.gif (Add a practice)
[11]: https://opensource.com/sites/default/files/uploads/2_login-netlify.png (Login with Netlify Identity)
[12]: https://opensource.com/sites/default/files/uploads/3_continue-github.png (Continue with Github)
[13]: https://opensource.com/sites/default/files/uploads/4_github_details.png (Log in with Github details)
[14]: https://opensource.com/sites/default/files/uploads/5_new-practice.gif (Select New Practice)
[15]: https://opensource.com/sites/default/files/uploads/6_select-new-author.gif (select New Author)
[16]: https://opensource.com/sites/default/files/styles/medium/public/uploads/7_improve-this-practice.png?itok=ypFLi0uu (Improve this Practice button)
[17]: https://opensource.com/sites/default/files/styles/medium/public/uploads/8_search-for-practice.png?itok=f81s25N8 (Search for practice)
[18]: https://github.com/openpracticelibrary/openpracticelibrary/issues/new
[19]: https://github.com/openpracticelibrary/openpracticelibrary/issues?q=is%3Aissue+is%3Aopen+label%3ABug
[20]: https://openpracticelibrary.com/page/contribution-guide

View File

@ -0,0 +1,152 @@
[#]: subject: "Best DAW (Digital Audio Workstation) Available for Linux Desktops"
[#]: via: "https://itsfoss.com/best-daw-linux/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14042-1.html"
最佳 Linux 桌面 DAW数字音频工作站
======
![](https://img.linux.net.cn/data/attachment/album/202112/02/123844cydiigpj23zgi7z7.jpg)
<ruby>数字音频工作站<rt>Digital Audio Workstation</rt></ruby>DAW可以让你录音、混音和制作音乐。对于商业用途有几个主流的选择可以考虑它们通常被认为是行业标准。
像 Steinberg 的 Nuendo/Cubase、ProTools、Ableton Live 和 FL Studio 这样成熟的音乐 DAW 是最流行(也是最昂贵)的解决方案。然而,它们并不能用于 Linux。
因此,当用在 Linux 上时,你只能根据现有的选项做出不同的选择。而在这里,我的目的是帮助你找出 Linux 上最好的音乐 DAW。
### 在使用 Linux 上的 DAW 之前要记住的事情
尽管你可以达到与 Windows/MacOS 系统相同的效果,但在选择使用 Linux 的 DAW 之前,你应该知道一些要点。
如果你是专业人士,并且使用过 Linux你可能已经知道了这些。但是对于新的 Linux 用户,这可以帮助你做出决定:
* 许多音频接口没有正式支持 Linux。所以你可能要在开始之前检查一下兼容性和音频设置过程。
* 流行的音频插件可能无法直接工作。你必须得寻找替代品或尝试使用 Wine这是一个耗时的过程
* 即插即用的情况可能不存在。各种任务都需要手动设置。
总的来说,在 Linux 中使用 DAW 时,有一些先决条件。它可能不能简单地安装然后就能开始制作音乐。所以,在选择 Linux 作为 DAW 的首选平台之前,你需要了解这些。
请注意,有几个 [可用于 Linux 的音频编辑器][1],但不是所有的都可以作为一个成熟的 DAW 使用。
现在你知道了这些注意事项,让我提一下目前最好的 Linux DAW。
> 非 FOSS 警报!
>
> 这里提到的应用并不全是开源的。它们被列在这里是因为它们在 Linux 上可用,而这篇文章的重点是 Linux。
虽然可用于 Linux 的 DAW 可能有许多,但为了确保你得到最好的硬件/软件兼容性,以及易于使用的界面,我们将我们的列表限制在流行的选项上。
### 1、Ardour
![][2]
[Ardour][3] 是最流行的开源 DAW可用于 Linux。它也可用于 Windows 和 macOS。
它是音乐家、音频工程师和作曲家的一个合适选择。你可以获得编辑乐谱和录制/混合歌曲的所有基本能力。
它自带几个插件支持。但是,你需要通过在插件管理器中手动添加它们到混音器中。另外,你可以选择通过指定路径来添加外部 VST3 插件。如果你想从中提取音频或同步Ardour 还支持视频时间线。
#### 在 Linux 中安装 Ardour
与其他付费版 DAW 不同,你不需要支付高昂的价格就可以使用它。你所需要做的就是购买一个低至 1 美元/月的订阅,只要你的订阅是有效的,你就可以继续访问这个程序和它的更新。
如果你对订阅不感兴趣,你可以选择一次性付款,这可以让你获得小版本更新和下一个主要版本(取决于你支付的金额)。
最重要的是,如果你喜欢测试即将到来的功能和改进,你还可以访问其开发(或每日)构建版本。
对于 Linux 发行版,它提供了一个 `.run` 文件,你可以轻松地从终端启动。
### 2、LMMS
![][4]
[LMMS][5] 是一个自由开源的 DAW可用于 Linux 和其他平台。
与其他一些 DAW 相比LMMS 在专业人员所需的专业方面可能有所欠缺。
然而,如果你刚刚开始创作音乐,或者需要一些无需购买/订阅就可以使用的东西,它应该可以满足你的一些功能需求。换句话说,它是一个合适的歌曲编辑 DAW。
如果你是从另一个平台上的 DAW 迁移来的,它的用户界面可能不太容易熟悉。但是,当你习惯了它,它就很容易使用了。
它还支持钢琴音符标签,以帮助你获得音乐制作体验。
#### 在 Linux 中安装 LMMS
你可以选择下载一个 AppImage 文件,它可以在你选择的任何 Linux 发行版上工作。它的配置相当简单,所以你只需要指定一个工作目录就可以开始了。
### 3、Bitwig Studio
![][6]
[Bitwig Studio][9] 是流行的主流音乐 DAW 之一,也支持 Linux。与本列表中的其他 DAW 相比Bitwig 提供了更好的跨平台支持和硬件集成。
即使你可能坚持使用 Linux 进行音乐制作,但拥有跨平台的支持,以便在你出门在外也可以继续你的工作,对一些人来说这也是一个重要的因素。
Bitwig 包括各种创意工具来处理音频文件和信号。所以,它完全可以满足专业要求。
### 在 Linux 中安装 Bitwig Studio
它提供了一个传统的 DEB 包用于安装。你可以在“演示模式”下免费使用它但它不允许你保存和导出任何东西。Bitwig Studio 在 [Flathub][8] 上还有一个 [Flatpak][7] 包。
要解锁所有的功能,你需要以 **$399** 的价格购买它。
### 4、REAPER
![][10]
[Reaper][11] 是一个可用于 Linux 的经济型 DAW。它提供了一个简单的用户界面和所有的基本功能。
和 Bitwig Studio 相比,它可能没有提供很多开箱即用的插件和功能,但它应该足以满足大多数通常的需求,如调制、自动化、使用 VST 插件等等。
尽管我没有亲自使用过它,但 Reaper 声称它是高度可定制的,并提供了与各种硬件的良好兼容性。
#### 在 Linux 中安装 Reaper
与其他选择不同Reaper 提供了一个 tar 包,你需要解压和安装。它包括一个脚本文件。因此,当你解压后,在该文件夹中打开终端或在终端中进入该文件夹,然后用以下命令执行该脚本:
```
./install-reaper.sh
```
当你安装它时,该脚本也会生成一个用于卸载的脚本。所以,在安装时一定要仔细选择文件夹,并确保在需要时能找到它。
在你需要购买它之前,你可以没有任何限制的免费使用它,最长可达 60 天。所以,如果你想在购买 DAW 之前彻底测试一下,我觉得这是一件非常好的事情。
个人使用的费用是 **\$60**,如果你需要用于商业用途,则需要 **\$225**。
### 总结
不幸的是,找不到太多可用于 Linux 的 DAW 。你可以尝试用 Wine 来运行一些流行的音乐 DAW但我不确定成功率有多少。
无论是哪种情况,这里提到的这些对于大多数用户来说应该是绰绰有余了。
你喜欢哪种 DAW 用于音乐制作?请在下面的评论中告诉我你的想法。
--------------------------------------------------------------------------------
via: https://itsfoss.com/best-daw-linux/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/best-audio-editors-linux/
[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/ardour-daw.png?resize=800%2C476&ssl=1
[3]: https://ardour.org/
[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/09/lmms-daw.png?resize=800%2C476&ssl=1
[5]: https://lmms.io/lsp/
[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/10/bitwig-studio-linux.png?resize=800%2C457&ssl=1
[7]: https://itsfoss.com/what-is-flatpak/
[8]: https://flathub.org/apps/details/com.bitwig.BitwigStudio
[9]: https://www.bitwig.com/
[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/10/reaper-linux.png?resize=800%2C614&ssl=1
[11]: https://www.reaper.fm

View File

@ -0,0 +1,284 @@
[#]: subject: "5 De-Googled Android-based Operating Systems to Free Your Smartphone from Google and other Big Tech"
[#]: via: "https://itsfoss.com/android-distributions-roms/"
[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14047-1.html"
5 个去谷歌化的安卓操作系统
======
![](https://img.linux.net.cn/data/attachment/album/202112/04/143224d46wb5bqsw7xbsw7.jpg)
> 让你的智能手机摆脱谷歌和其他科技巨头。
随着谷歌和 Facebook 等广告巨头对你的个人和私密设备(如手机和平板电脑)的监控不断增加,现在是时候处理这个问题了。
最有效的方法之一是安装注重隐私/安全的安卓 ROM。
你可能想知道,为什么要在你的手机上安装一个与预装系统不同的、基于安卓的操作系统。让我给你几个理由:
* 你的 [手机制造商与 Facebook 等实体合作,在你的手机上预装了各种应用程序][1],仅仅是卸载这些应用程序可能无法摆脱它们(当操作系统有新的更新时,它们往往会被重新安装)。
* 通常,安卓设备制造商会提供三到四年的更新。其中大部分仅限于各种奇怪的安全补丁,以及一些安卓系统的升级。使用定制 ROM你可以通过接收更多更新来延长设备的使用寿命。
* 由于这些现成的安卓 ROM 除了必要的东西外没有捆绑任何东西,你的手机不会太臃肿,反应更敏捷。
* 较少的预装软件也意味着在后台运行的服务较少,从而可提升性能并延长电池使用时间。
* 大量的定制选项。
* 容易回滚更新(因为以前的版本在 ROM 的网站上可以找到)。
> **警告**
>
> 如果你决定在实际设备上使用这些操作系统之一,请小心。在你的设备上刷入任何第三方 ROM 将使其保修失效,如果操作不当,甚至可能使你的设备失去作用。安装定制的 ROM 也需要一定的专业知识,即使如此,你也可能遇到问题,特别是如果你选择的操作系统不支持该设备。对你的设备造成的任何损害,我们概不负责。
参考了上述重要信息之后,如果你仍想进行实验,我们建议你始终在备用设备上进行尝试。
除此之外,你还应该记住以下几点:
- 安装自定义的安卓 ROM 可以增强开箱即用的安全性。但是,你必须确保自己采取了必要的措施。
- 你手机的所有硬件功能可能在定制 ROM 上不工作。
- 解锁引导加载程序是一个必要步骤,但这样做可能会带来安全问题。
这个列表特别关注基于安卓的发行版和定制 ROM。我们有一个另外单独的 [开源移动操作系统][2] 列表,包括 Ubuntu Touch 和 PureOS 等选项。
注:名单排名不分先后。你应该选择更多地了解所提到的选项,并决定什么最适合你。
### 1、LineageOS
![Lineage OS 用户界面的几张截图][3]
[LineageOS][4] 可以说是最受欢迎的安卓 ROM 之一,它是非常流行的([但自 2016 年以来已经消亡][5]])的 CyanogenMod 的一个复刻。由于 LineageOS 很流行,你可能会发现很多设备支持该操作系统。
换句话说,与其他定制安卓 ROM 相比,你可以更快地获得对新设备的支持,以及对各种旧设备的支持。
如果你有的话LineageOS 甚至支持你的 Nvidia Shield 电视机和 Jetson Nano[用于 AI 和深度学习项目的最佳单板计算机][6] 之一)。
- [获取 LineageOS][7]
#### 优点
* 优秀的官方和第三方文档
* 支持设备的及时更新
* LineageOS 非常紧跟 AOSP 树(适用于想要最原始安卓体验的人)
* 与原厂固件相比,“预装软件”更少。
#### 缺点
* LineageOS 项目是一个社区项目,所以并非你手机上所有的硬件功能都能开箱即用。
* 没有提供很多开箱即用的安全/隐私功能。
### 2、CalyxOS
![CalyxOS 的主页以及他们的用户界面一瞥][8]
[CalyOS][9] 是一个相当有趣的、基于 [安卓开源项目AOSP][10] 的安卓操作系统。CalyxOS 没有提供谷歌移动服务GMS而是让用户自己去想办法可以刷入谷歌应用但是它提供了 [microG][11],你可以选择启用/禁用它,从而完全控制你的手机。
CalyxOS 得到了 [Calyx Institute][12] 的支持,这是一个非营利组织,旨在促进个人权利,如言论自由、隐私权等。
它内置了一些注重隐私的应用程序,如 Signal、Tor 浏览器等。尽管对 CalyxOS 的支持仅限于 Pixel 手机,但在大多数情况下,它为用户提供了大量开箱即用的隐私功能,让用户具有领先优势。
- [获取 CalyxOS][13]
#### 优点
* 使用 [microG][11]。
* 带有 [F-Droid][14] 和 [Aurora 商店][15] 而不是谷歌应用商店。
* Datura 防火墙允许你阻止每个应用程序的互联网访问。
* 使用 [Mozilla 定位服务][16] 而不是谷歌的定位服务。
* 每月一次的在线安全更新。
* 经过验证的启动程序,以提高安全性。
* 开箱即用的以安全为中心的应用程序和功能。
#### 缺点
* 只适用于 Pixel 手机([但这背后有一个很好的理由][17])。
### 3、GrapheneOS
![GrapheneOS 安装在 Pixel 设备上的照片][18]
[GrapheneOS][19] 是一个基于安卓的 ROM专注于安全和隐私。虽然人们可能会争论说他们的努力更多的是为了提高安全性但这样做也有利于你的隐私。
如果你想安装带有开箱即用的、特殊安全调整过的定制 ROMGrapheneOS 应该是一个不错的选择。
与其他一些定制 ROM 不同,它没有包括启用/禁用 microG 的功能,这恰好为依赖于 Google Play 服务的应用程序提供了更好的支持。但是GrapheneOS 可以 [对 Google Play 服务进行沙箱处理][20],这应该可以让你使某些功能正常工作。但是,截至目前,它仍然是实验性的。
- [获取 GrapheneOS][21]
#### 优点
* 提供比 AOSP 更强大、加固过的应用程序沙盒。
* 使用自己 [加固过的 malloc][22](具有加固了安全性的内存分配器)。
* Linux 内核经过了加固,安全性更高。
* 提供及时的安全更新。
* 具备全盘加密功能(对移动设备来说非常重要)。
* 不包括任何谷歌应用程序或谷歌服务。
#### 缺点
* 有限的硬件支持;仅适用于谷歌 Pixels。
* 以安全为中心的调整可能不会转化为对新手友好的用户体验。
### 4、/e/OS
![看一下 /e/OS 中的应用启动器,以及对 /e/OS 的应用商店评级的概述][23]
你可能认为 [/e/OS][24] 只不过是又一个安卓操作系统,这 _一定程度上_ 是对的。先别急着否定这个安卓 ROM。它远超于任何现成的基于安卓的操作系统。
最大的特点是 [eFoundation][25](在 /e/OS 背后的基金会)为你提供了一个免费的 [ecould 账户][26](有 1GB 的存储空间),而不需要使用谷歌账户。
像任何尊重隐私的安卓 ROM 一样,/e/OS 将每一个与谷歌相关的模块或应用都替换成了自由软件替代品。
旁注eFoundation 也销售预装了 /e/OS 的手机。[请看这里][27]。
- [获取 /e/OS][28]
#### 优点
* /e/OS 上的应用程序商店根据需要的权限以及对隐私的友好程度来对应用程序进行评级。
* 提供了一个 [ecloud 账户][26](带有 @e.email 后缀;免费级提供 1GB作为同步账户。
* 配备了 [microG][11] 框架。
* 谷歌 DNS 服务器8.8.8.8 和 8.8.4.4)被替换为 [Quad9][29] 的 DNS 服务器。
* DuckDuckGo 是替代谷歌的默认搜索引擎。
* 使用由 [Mozilla][16] 提供的位置服务。
#### 缺点
* 设备兼容性非常有限。
* 从安卓系统推出新功能需要一段时间。
### 5、CopperheadOS
![CopperheadOS 网站上关于手机安全和隐私的标语][30]
> **警告**
>
> 这不是一个开源项目。列在这里只是为感兴趣的用户提供的附加选项。
[CopperheadOS][31] 是另一个有趣的安卓 ROM。它是由一个只有两个人的团队开发的。
与其他选项不同CopperheadOS 不是开源项目,你可能无法在你的手机上使用它。
它面向企业部署。因此,如果你想为你的员工购买安卓设备并调整安全性,那么这值得考虑。
- [获得 CopperheadOS][32]
#### 优点
* 与其他安卓 ROM 文档相比 [更优良的文档][33]。
* CopperheadOS 在 AOSP 之前就有许多面向安全的功能。
* 使用 Cloudfare DNS1.1.1.1 和 1.0.0.1)而不是谷歌的 DNS8.8.8.8 和 8.8.4.4)。
* 包括一个用于控制每个应用程序权限的互联网防火墙。
* 使用开源应用程序,而不是过时的 AOSP 应用程序(日历、短信、画廊等)。
* 包括 [F-Droid][14] 和 [Aurora 应用商店][15]。
#### 缺点
* [在主要的开发者出走之后CopperheadOS 的安全性存在质疑][34] 。
* 仅适用于预装 CopperheadOS 的手机。
* 没有迹象表明 SafetyNet 会在 CopperheadOS 上工作。
### 荣誉提名LineageOS for microG
![LineageOS for microG 中包含的应用程序列表][35]
[LineageOS for microG][36] 项目是官方 LineageOS 项目的一个复刻,默认包含 [microG][11] 和谷歌应用。这个项目负责确保 microG 在你的手机上完美运行(这对初学者来说可能是一个复杂的过程)。
- [获取 LineageOS for MicroG][37]
#### 优点
* 提供了 GMS 的 microG 实现,没有任何不便之处。
* 提供 [F-Droid][14] 作为默认的应用商店。
* 提供每周/每月一次的在线更新。
* 可以选择使用由 [Mozilla][16] 或 [Nominatim][38] 提供的定位服务。
#### 缺点
* 启用签名欺骗以启用 microG 支持,从安全角度来看,可能是一个攻击方向。
* 尽管这个 ROM 是基于 LineageOS 的,但在写这篇文章时,并不是所有的 LineageOS 设备都支持。
* 包括谷歌应用程序,而不是提供开源的替代品。
* 无法确认谷歌的 SafetyNet 是否工作。
### 附加信息
你可能想知道为什么一些有趣的基于安卓的 ROMCalyxOS、GrapheneOS 等)只限于支持谷歌的手机。这不是很讽刺吗?
嗯,这是因为大多数手机都支持解锁引导器,但只有谷歌 Pixels 支持再次锁定引导器。当你为关注隐私和/或安全的人群开发基于安卓的 ROM 时,这是一个考虑因素。如果启动器被解锁,它就是一个你尚未修补的攻击方向。
另一个具有讽刺意味的原因是,只有谷歌才及时向公众提供他们手机的设备树和内核源代码。如果没有设备树和内核源代码,你就无法为该手机开发 ROM。
无论你选择何种 ROM我都会推荐以下 FOSS 应用程序。它们将被证明是对你的隐私友好应用程序工具包的一个很好的补充。
* [Signal Messenger][39]
* [K-9 邮件][40]
* [DuckDuckGo 浏览器][41]
* [Tor 浏览器][42]。
* [F-Droid][14]
* [Aurora 商店][15]
* [OpenKeychain][43]
### 总结
在我看来,如果你有一部谷歌 Pixel 手机,我建议你尝试一下 CalyxOS、GrapheneOS 或 CopperheadOS。这些安卓 ROM 有出色的功能,可以帮助你的手机远离谷歌的监视,同时还可以让你的手机(可以说是)更加安全。
如果你没有谷歌 Pixel你仍然可以尝试一下 LineageOS for MicroG。这是一项很好的社区贡献在不侵犯你的隐私的情况下它把谷歌的专有功能带给大众。
如果你的手机不被上述任何一个操作系统支持,那么 LineageOS 就是你的朋友。由于它对手机的支持广泛,毫无疑问,无论是官方还是非官方,你的手机都可以得到支持。
--------------------------------------------------------------------------------
via: https://itsfoss.com/android-distributions-roms/
作者:[Pratham Patel][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/pratham/
[b]: https://github.com/lujun9972
[1]: https://9to5google.com/2020/08/05/oneplus-phones-will-ship-with-facebook-services-that-cant-be-removed/
[2]: https://itsfoss.com/open-source-alternatives-android/
[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/01_lineageos.webp?w=1200&ssl=1
[4]: https://lineageos.org/
[5]: https://www.androidauthority.com/cyanogenmod-lineageos-654810/
[6]: https://itsfoss.com/best-sbc-for-ai/
[7]: https://lineageos.org/
[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/02_calyx-1.webp?w=1264&ssl=1
[9]: https://calyxos.org/
[10]: https://www.androidauthority.com/aosp-explained-1093505/
[11]: https://microg.org/
[12]: https://calyxinstitute.org/projects/calyx-os
[13]: https://calyxos.org/install/
[14]: https://www.f-droid.org/en/about/
[15]: https://auroraoss.com/
[16]: https://location.services.mozilla.com/
[17]: https://calyxos.org/docs/guide/device-support/#requirements-for-supporting-a-new-device
[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/03_graphene.webp?resize=800%2C600&ssl=1
[19]: https://grapheneos.org/
[20]: https://twitter.com/grapheneos/status/1445572173389725709
[21]: https://grapheneos.org/
[22]: https://github.com/GrapheneOS/hardened_malloc
[23]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/06_eos-1.webp?w=600&ssl=1
[24]: https://e.foundation/e-os/
[25]: https://e.foundation/
[26]: https://e.foundation/ecloud/
[27]: https://esolutions.shop/
[28]: https://e.foundation/e-os/
[29]: https://www.quad9.net/
[30]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/04_copperheados.webp?resize=1536%2C806&ssl=1
[31]: https://copperhead.co/
[32]: https://copperhead.co/android/docs/install/
[33]: https://copperhead.co/android/docs/
[34]: https://twitter.com/DanielMicay/status/1068641901157511168
[35]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/05_losmicrog.webp?resize=864%2C1536&ssl=1
[36]: https://lineage.microg.org/
[37]: https://download.lineage.microg.org/
[38]: https://nominatim.org/
[39]: https://signal.org/
[40]: https://k9mail.app/
[41]: https://duckduckgo.com/app
[42]: https://www.torproject.org/
[43]: https://www.openkeychain.org/

View File

@ -0,0 +1,106 @@
[#]: subject: "4 open source ways to create holiday greetings"
[#]: via: "https://opensource.com/article/21/11/open-source-holiday-greetings"
[#]: author: "Don Watkins https://opensource.com/users/don-watkins"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14038-1.html"
创建节日问候的 4 种开源方式
======
> 开源工具和资源为任何节日提供了创造性的可能性。
![](https://img.linux.net.cn/data/attachment/album/202112/01/113447fkk2du1udmdu2n0d.jpg)
节日再次来临,今年我决定用 [开源方式][2] 来庆祝。就像一个特别有名的假期忙人一样,我有一个长长的节日任务清单(我打算再三检查):制作一张贺卡(带地址的明信片)寄给家人和朋友,用合适的节日歌曲制作照片蒙太奇或视频,并装饰我的虚拟办公室。有很多开源的应用和资源使我的工作更容易。以下是我使用的东西。
### Inkscape 和剪贴画
我最喜欢的资源之一是 [FreeSVG.org][3](前身是 Openclipart.org。这里很容易找到你喜欢的节日包括光明节、圣诞节、新年等等。这些剪贴画都是由像你我这样的用户贡献的并且是 CC0 版权,所以你甚至不需要提供署名。当然,在可能的情况下,我还是会注明出处,以确保 FreeSVG 和它的艺术家们获得知名度。
下面是 FreeSVG 的一些剪贴画的例子:
![一幅棕色玉米棒的漫画,上面有红色的苹果、橙色的南瓜和棕色的坚果溢出来。][4]
openclipart.com [CC0 1.0][5]
使用 [Inkscape][6] 的文本路径工具,我在图片上添加了我自己的文字,我把它用在卡片上。如果再做些工作,我还可以把这个图形用在一些定制的杯子或餐垫上。
![一幅棕色玉米棒的漫画,上面有红色的苹果、橙色的南瓜和棕色的坚果溢出来,上面有一个拱门形的“我们感谢”的字样。][7]
Don Watkins [CC BY-SA 4.0][8]
### 文字处理
[LibreOffice][9] Writer 可以用来制作贺卡和海报,然后在你的家中使用或分发给你的朋友和家人。使用 LibreOffice Calc 创建一个关于你的家人和朋友的数据库,然后利用这一资源,用邮件合并功能简化制作邮件标签的过程。
### 创作共用的图片和图形
[search.creativecommons.org][10] 上也有艺术品。注意许可证类型:对任何需要署名的东西给予适当的致谢。这张图片([“Thanksgiving Dealies”][11])来自创作共用图片搜索。它的作者是 [Martin Cathrae][12],并在 [CC BY-SA 2.0][13] 下授权,因此它可以在相同的许可证下被改编、重复使用和分享。
![用南瓜壳做花架,摆放红色和黄色小花束的烛光中心装饰。][14]
[Martin Cathrae][12] [CC BY-SA 2.0][13]
我拿着这张相同的图片,用 [GIMP][15] 在上面添加了一些我自己的文字。你可以用 Inkscape 来做同样的事情。
![用南瓜壳作为花架,放置红色和黄色的小花束的烛光中心作品,图片左上方有“节日快乐”字样。][16]
Don Watkins[CC BY-SA 4.0][17]
<ruby>创作共用<rt>Creative Commons</rt></ruby>提供了大量的图片,在你的下一次 [视频会议][18] 期间,可以这些图片作为一个节日背景。
### 视频和实时流媒体
你也可以把这些图片与你自己的一些图片结合起来,用 [OpenShot][19] 视频编辑器创建一个简短的视频剪辑。你可以通过使用 Audacity 录制一个单独的音轨,轻松添加旁白。可以在 Audacity 中添加声音效果,保存到文件中,并导入到 OpenShot 视频编辑器的配乐中。寻找 [合法的背景音乐][20] 来添加到你的视频中。
使用 [开源广播软件OBS][21] 来直播你的假期聚会。使用 OBS 可以轻松地为你的朋友和家人呈现引人入胜的假期节目,或者你可以将节目另存为 Matroska 或 MP4 文件以供日后观看。
### 阅读材料
<ruby>古腾堡计划<rt>Project Gutenberg</rt></ruby>是一个用来分享免费节日阅读材料的很好的来源。[狄更斯的《圣诞颂歌》][22] 就是这样一种资源,它可以在网上轻松阅读,也可以下载成 EPUB 或你最喜欢的电子阅读器的格式。你还可以找到免版税的阅读材料,如 [Librivox][23] 的“光的盛宴”,采用 MP3 格式,因此可以下载并在你喜欢的浏览器或媒体播放器中播放。
### 节日乐趣
节日里最重要的一点是,它们是与朋友和家人一起的放松和欢乐时光。如果你有家人对计算机感到好奇,花点时间与他们分享一些你最喜欢的开源资源。
(题图来自:[creativecommons.org](https://search.creativecommons.org/photos/388c71f3-0419-4e4b-a6a7-2db7e1a8bbc8)作者Sunny M5
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/11/open-source-holiday-greetings
作者:[Don Watkins][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/don-watkins
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/painting_computer_screen_art_design_creative.png?itok=LVAeQx3_ (Painting art on a computer screen)
[2]: https://opensource.com/open-source-way
[3]: http://freesvg.org
[4]: https://opensource.com/sites/default/files/uploads/cornucopia.png (cornucopia)
[5]: https://creativecommons.org/publicdomain/zero/1.0/
[6]: https://opensource.com/article/18/1/inkscape-absolute-beginners
[7]: https://opensource.com/sites/default/files/uploads/cornucopia_with_text.png (We Give Thanks)
[8]: https://creativecommons.org/licenses/by-sa/4.0/
[9]: https://opensource.com/article/21/9/libreoffice-tips
[10]: https://search.creativecommons.org/
[11]: https://www.flickr.com/photos/34067077@N00/4014605524
[12]: https://www.flickr.com/photos/34067077@N00
[13]: https://creativecommons.org/licenses/by-sa/2.0/?ref=ccsearch&atype=rich
[14]: https://opensource.com/sites/default/files/uploads/fall_table.png (Holiday table)
[15]: https://opensource.com/content/cheat-sheet-gimp
[16]: https://opensource.com/sites/default/files/uploads/fall_table_with_text.png (Happy Holidays)
[17]: https://creativecommons.org/licenses/by/4.0/
[18]: https://opensource.com/article/20/5/open-source-video-conferencing
[19]: https://opensource.com/article/17/5/using-openshot-video-editor
[20]: https://opensource.com/article/20/1/what-creative-commons
[21]: https://opensource.com/article/21/4/obs-youtube
[22]: https://www.gutenberg.org/ebooks/19337
[23]: https://librivox.org/the-feast-of-lights-by-emma-lazarus/

View File

@ -0,0 +1,164 @@
[#]: subject: "Google Chrome vs Chromium: Whats the difference?"
[#]: via: "https://itsfoss.com/chrome-vs-chromium/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14041-1.html"
Chrome 与 Chromium 有何不同?
======
![](https://img.linux.net.cn/data/attachment/album/202112/02/100436xj1u51jhrjuwhjfw.jpg)
Chrome 浏览器是最流行的网页浏览器。无论你是否喜欢使用它Chrome 都能提供良好的用户体验。
尽管它可以在 Linux 上使用,但它不是一个开源的网页浏览器。
而且,如果你喜欢 Chrome 的外观和感觉但又想使用一个开源的解决方案Chromium 是一个选择。
但是Chrome 浏览器不是基于 Chromium 的吗?(是的。)而且,它也是由谷歌开发的吧?(也是的。)
那么Chrome 和 Chromium 之间有什么区别呢?在这篇文章中,我们将深入了解它们,并介绍一些对它们进行比较的基准。
### 用户界面
![Chrom 和 Chromium 在 Zorin OS 16 上并排运行][1]
Chrome 和 Chromium 的用户界面非常相似,除了一些细微的区别。
例如,我注意到 Chrome 的系统标题栏和边框一开始就被默认禁用了。相比之下在我测试的时候Chromium 默认启用了它们。
你还可以注意到在 Chrome 的地址栏里有一个分享按钮,而在 Chromium 上却没有。
这并不是大的视觉差异,而只是根据现有的功能进行了一系列的 UI 调整。所以,你可以预期它们的用户体验类似,而在底层有所不同。如果你在意用户界面,这两款浏览器应该都很适合你。
### 开源与专有代码
![][2]
Chromium 是完全开源的,这意味着任何人都可以(根据许可证)按照自己的意愿使用和修改代码。你可以在其 [GitHub 镜像][3] 上查看其源代码。
这就是为什么你会发现有许多 [基于 Chromium 的浏览器][4],如 Brave、Vivaldi 和 Edge。
有这么多的选择,你可以选择你最喜欢的那个。
另一方面Chrome 在 Chromium 中加入了刚刚专有的代码,使 Chrome 成为了专有浏览器。例如,人们可以复刻 Brave但不能复刻谷歌 Chrome而限制使用其中的谷歌特定代码/工作。
对于终端用户来说,开源与否并不影响用户体验。然而,对于一个开源项目,你可以得到更多的透明度,而不需要依靠公司来沟通他们打算改变什么,以及他们在浏览器上做什么。
所以是的如果你不喜欢专有代码Chromium 就是你的选择。
### 功能差异
谷歌不希望其竞争对手拥有类似的能力,这并不奇怪。因此,谷歌一直在 [锁定 Chromium 并在其中禁用了很多谷歌特有的能力][5]。
因此,你会发现这两个浏览器的能力有一些差异。
不仅如此,由于 Chromium 是开源的,你可能会注意到一些不便之处。别担心,我将在下面指出其中的关键差异。
Chrome | Chromium
---|---
有签到和同步功能 | 无签到和同步功能
支持媒体编解码器以使用 Netflix | 需要手动安装编解码器
对于初学者来说,在 Chromium 中不再能使用由谷歌支持的登录/同步功能。它曾经支持签到和同步,直到谷歌决定将其从开源项目中删除。
接下来Chrome 内置了对高质量媒体编解码器的支持。因此,你可以加载来自 Netflix 的内容。但是,在 Chromium 中没有这些。
![Netflix 在 Chromium 中默认不能工作][6]
从技术上讲Chromium 并不包括 _Widevine 内容解密模块_。因此,你需要手动安装所需的编解码器,以使大部分东西都能工作。
不过,你在这两个浏览器上你都可以播放苹果音乐等平台的内容,应该不会有任何问题。
### 安装及最新更新
你可以在几乎任何平台上安装 Chrome。Linux 也不例外。只需前往其官方网站,抓取 DEB/RPM 包即可快速安装。安装后的应用程序也会自动更新。
![][7]
有几个平台上安装 Chromium 并不那么简单。曾经有一段时间,一些 Linux 发行版将 Chromium 作为默认浏览器。那是过去的日子了。
即使在 Windows 上Chromium 的安装和更新也不像 Chrome 那样顺利。
在 Linux 上,安装 Chromium 则完全是另一回事。像 Ubuntu 这样的流行发行版把它打包成一个沙盒式的 Snap 应用程序。
即使你试图用终端安装它,希望能从 APT 库中得到它,但它又是一个 Snap。
![][8]
使用 Snap 软件包你可能会面临与你的自定义桌面主题相融合的问题。Snap 应用程序的启动时间也会更长。
![][9]
而且,如果你构建它并手动安装 Chromium你就得手动更新它。
### 隐私角度
Chrome 对大多数用户来说应该足够好了。但是如果你担心你的隐私Chrome 会追踪使用信息和一些与浏览有关的信息。
最近,[谷歌推出了一个新的 Chrome API][10],可以让网站检测到你什么时候闲着,什么时候不闲着。虽然这是一个巨大的隐私问题,但并不是唯一的问题。
谷歌不断试验新的追踪用户的方法;例如,正如 [EFF][11] 所指出的那样,谷歌的 FLoC 实验并不受欢迎。
从技术上讲,他们声称他们想增强用户的隐私,而同时仍然提供广告机会。然而,就目前而言,这是一个不可能实现的任务。
相比之下Chromium 在隐私方面的表现应该要好得多。然而,如果你讨厌你的浏览器中有任何与谷歌有关的东西,即使是最轻微的遥测,你应该试试 [UnGoogled Chromium][12]。
它是 Chromium但没有任何谷歌组件。
### 浏览器性能
有各种各样的浏览器基准,可以让你了解到一个浏览器处理任务的能力如何。
考虑到网站上的高级网站应用和资源密集型的 JavaScript如果一个网页浏览器的性能不好当你打开许多活动的标签时你的体验就会明显很糟糕。
[JetStream 2][13] 和 [Speedometer 2][14] 是两个流行的基准,可以给你处理各种任务和响应能力的性能估计。
除此之外,我还试用了 [Basemark Web 3.0][15],它也是测试各种指标并给你一个综合分数。
![][16]
总体而言Chrome 在此获胜。
但是,值得注意的是,在运行浏览器时,你的系统资源和后台进程会对性能产生不同的影响。因此,也要考虑到这一点。
### 你应该选择哪个?
之所以存在对浏览器的选择是因为用户喜欢不同的东西。Chrome 提供了一个良好的功能集和用户体验。如果你以某种形式使用由谷歌提供的服务Chrome 是一个简单的推荐。
然而如果你担心隐私和专有代码Chromium 或 UnGoogled Chromium或任何其他基于 Chromium 的浏览器,如 Brave可以是一个不错的选择。
这就是我在比较 Chrome 和 Chromium 时的全部看法。我愿意接受你的意见。评论区都是你的。
--------------------------------------------------------------------------------
via: https://itsfoss.com/chrome-vs-chromium/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/chrome-chromium-ui.png?resize=800%2C627&ssl=1
[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/open-source-proprietary.png?resize=800%2C450&ssl=1
[3]: https://github.com/chromium/chromium
[4]: https://news.itsfoss.com/chrome-like-browsers-2021/
[5]: https://news.itsfoss.com/is-google-locking-down-chrome/
[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/chromium-netflix.png?resize=800%2C541&ssl=1
[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/google-chrome-version.png?resize=800%2C549&ssl=1
[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/install-chromium.png?resize=800%2C440&ssl=1
[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/chromium-version.png?resize=800%2C539&ssl=1
[10]: https://www.forbes.com/sites/zakdoffman/2021/10/02/stop-using-google-chrome-on-windows-10-android-and-apple-iphones-ipads-and-macs/
[11]: https://www.eff.org/deeplinks/2021/03/googles-floc-terrible-idea
[12]: https://github.com/Eloston/ungoogled-chromium
[13]: https://webkit.org/blog/8685/introducing-the-jetstream-2-benchmark-suite/
[14]: https://webkit.org/blog/8063/speedometer-2-0-a-benchmark-for-modern-web-app-responsiveness/
[15]: https://web.basemark.com/
[16]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/chrome-chromium-benchmarks-1.png?resize=800%2C450&ssl=1

View File

@ -0,0 +1,168 @@
[#]: subject: "13 Best Dark GTK Themes for Your Linux Desktop"
[#]: via: "https://itsfoss.com/dark-gtk-themes/"
[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14050-1.html"
13 个 Linux 桌面的最佳深色 GTK 主题
======
![](https://img.linux.net.cn/data/attachment/album/202112/05/110404dh7d463771gn6833.jpg)
在任何的 Linux 发行版上,你都有近乎无限的定制选项,在视觉上最明显的区别就是定制的主题。让我们来看看一些具有深色模式的 GTK 主题。
是的,我们在过去曾介绍过 [最佳 Linux 主题][1],但这一篇是专门介绍深色主题的。曾几何时,只有程序员和系统管理员喜欢深色模式,但现在已经不是这样了。深色模式也受到了普通人的喜爱,因此我为像你这样的 Linux 桌面用户编制了这个深色主题列表。
如果你不熟悉设置桌面环境的主题,你可以看看我们的 [在 GNOME 中安装主题][2] 指南。
本文仅供参考,这并不是一个排名列表。
### 1、McMojave
![The stock image of how McMojave looks \(courtesy of the theme developer\)][3]
[McMojave][4] 是一个 GTK 主题,其灵感来自于 macOS 风格的用户界面。显然这个主题是提供给深色模式的,但它也有浅色模式,嗯……,提供给任何可能想要它的人。
McMojave GTK 主题显然支持基于 GTK 的桌面环境,如 Pantheon、Gnome、XFCE、Mate 等。但是,这个主题也 [适用于 KDE 用户][5]。
为了让你的桌面环境看起来与 macOS 非常相似,你还可以安装 [McMojave 圆形图标主题][6] 以获得更完整的体验。
### 2、Yaru
![A screenshot of the default Yaru theme on Ubuntu 21.10][7]
[Yaru][8] 是 [Ubuntu][9] 的默认 GTKGNOME主题。该主题的深灰色点缀着橙色及少许黑色让我觉得很有吸引力。
现在,你可以让 Arch Linux 上的 GNOME 看起来像 Ubuntu。( ͡° ͜ʖ ͡°)
### 3、Pop
![A look at how the Pop GTK theme looks on Pop!_OS][10]
[Pop GTK 主题][11] 是由 [System76][12] 为他们基于 Ubuntu 的 Linux 发行版 [Pop!_OS][13] 创建的主题。
如果你喜欢 System76 对 GNOME 在深色模式下的表现,你可以在你选择的 Linux 发行版中试用 [Pop GTK 主题][11]。
如果想获得完整的 Pop-esque 的外观和感觉,在安装主题的同时,还可以安装 System76 提供的 [Pop 图标][14]。
### 4、Nordic
![Nordic GTK theme preview][15]
你是一个喜欢简单的、有点扁平化的设计方法以及一些灰色或更多灰色的人吗?不妨看看这个基于 [北欧风调色板][16] 的主题。
[Nordic][17] GTK 主题给你的正是这样的感觉。一个基于北欧风调色板的 GTK 主题,设计简单。
### 5、Ultimate-Maia
![Stock screenshot of the Ultimate-Maia theme][18]
[Ultimate-Maia][20] 是一个基于 [Google 的 Material 主题][19] 设计理念的 GTK 主题。这个主题有一个精细而独特的外观和感觉,特别是有各种不同的强调色可供选择。
### 6、Graphite
![A look at Graphites flat, rounded and gray characteristic][21]
[Graphite][22] 是一个 GTK 主题,它为你的桌面环境(尤其是 GNOME提供了一个完全独特的外观同时保持了你的桌面环境的独特性就像以前一样。这是一个值得一看的东西。
### 7、Qogir
![Customization options available with Qogir GTK theme][23]
[Qogir][24] 是一个采用了扁平化设计的 GTK 主题。Qogir 主题为你提供的不仅仅是标题按钮、复选框、单选按钮、开关等自定义选项。
### 8、Layan
![Lyan A very rounded-corners GTK theme][25]
你会很高兴知道,这个列表中还包括 [Layan][26],这是一个强调平滑、圆角的 GTK 主题带有气泡的美感。Layan 主题也继承了 [Google 的 Material 设计][19] 指导方针的设计理念。
### 9、Juno
![][27]
[Juno][28] 是我发现的另一个最好的对深色模式友好的 GTK 主题之一。有些人可能喜欢它的漆黑本质,有些人可能不喜欢。但是,如果你有一台 OLED 笔记本或电脑显示屏Juno 感觉是为你而生的。
### 10、Ant 主题
![Ant themes available options for customization of window appearance][29]
[Ant][30] 是一个 GTK 主题,它从 macOS 的布局和用户界面元素中获得了一些灵感在我看来Ant 主题很好地实现了这一切。
### 11、Equilux
![][31]
[Equilux][32] 主题给你一个漂亮的主题,带有精细的深色模式。这个主题能很好地与 GNOME 及 GNOME 的复刻融合在一起。我不会太多地描述这个主题,它简单而优雅。
### 12、Orchis-dark
![Orchis Dark][33]
[Orchis Orchis-dark][34] 是超酷的 Orchis 主题的深色变体。它为桌面提供了带有圆角和流畅界面的 iOS/macOS 触感。只需看一眼,你就可以立即猜到。
### 13、Elementary X
![A look at Elementary X GTK theme with the settings panel open][35]
[Elementary X][37] 是基于 [elementary OS][36] 团队为定制 GNOME 外观而开发的 GTK 主题。顺便说一句elementary OS 是一个基于 Ubuntu 的 Linux 发行版。
### 总结
这篇文章中列出的主题都是非常漂亮的,而且你的选择也不限于这里列出的那些。还有其他成千上万的主题。
如果你喜欢一个主题,请在下面评论。如果你正在使用一个我没有提到的主题,也请留下评论。
--------------------------------------------------------------------------------
via: https://itsfoss.com/dark-gtk-themes/
作者:[Pratham Patel][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/pratham/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/best-gtk-themes/
[2]: https://itsfoss.com/install-switch-themes-gnome-shell/
[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/01_mojave.webp?resize=800%2C450&ssl=1
[4]: https://github.com/vinceliuice/Mojave-gtk-theme
[5]: https://github.com/vinceliuice/McMojave-kde
[6]: https://github.com/vinceliuice/McMojave-circle
[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/02_yaru.webp?resize=800%2C403&ssl=1
[8]: https://github.com/ubuntu/yaru
[9]: https://ubuntu.com/
[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/pop_gtk.webp?resize=800%2C450&ssl=1
[11]: https://github.com/pop-os/gtk-theme
[12]: https://system76.com/
[13]: https://pop.system76.com/
[14]: https://github.com/pop-os/icon-theme
[15]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/nordic.webp?resize=800%2C450&ssl=1
[16]: https://github.com/arcticicestudio/nord
[17]: https://github.com/EliverLara/Nordic
[18]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/05_ultimate_maia.webp?resize=800%2C450&ssl=1
[19]: https://material.io/
[20]: https://github.com/bolimage/Ultimate-Maia
[21]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/06_graphite.webp?resize=800%2C450&ssl=1
[22]: https://github.com/vinceliuice/Graphite-gtk-theme
[23]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/Qogir.webp?resize=800%2C500&ssl=1
[24]: https://github.com/vinceliuice/Qogir-theme
[25]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/07_layan.webp?resize=800%2C450&ssl=1
[26]: https://github.com/vinceliuice/Layan-gtk-theme
[27]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/08_juno.webp?resize=732%2C487&ssl=1
[28]: https://github.com/EliverLara/Juno
[29]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/ant.webp?resize=800%2C533&ssl=1
[30]: https://github.com/EliverLara/Ant
[31]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/equilux.webp?resize=800%2C450&ssl=1
[32]: https://github.com/ddnexus/equilux-theme
[33]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/orchis-dark.webp?resize=800%2C463&ssl=1
[34]: https://www.gnome-look.org/s/Gnome/p/1357889
[35]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/elementary.webp?resize=800%2C450&ssl=1
[36]: https://elementary.io/
[37]: https://github.com/surajmandalcell/elementary-x

View File

@ -0,0 +1,105 @@
[#]: subject: "Install apps on Linux with Flatpak"
[#]: via: "https://opensource.com/article/21/11/install-flatpak-linux"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14045-1.html"
用 Flatpak 在 Linux 上安装应用
======
> Flatpak 简化了 Linux 上应用的安装。
![](https://img.linux.net.cn/data/attachment/album/202112/03/133555dxzijlzjp0ibglk0.jpg)
计算机应用由许多小文件组成,它们被链接在一起以执行一系列的任务。因为它们以“应用”的形式出现,在菜单或桌面上有彩色的图标,我们大多数人认为应用是一个单一的、几乎是有形的东西。在某种程度上,这样想是令人欣慰的,因为它们感觉是可以管理的。如果一个应用实际上是散落在你的计算机上的数百个小库和资源文件的组合,那么应用在哪里?撇开存在危机不谈,当一个应用需要一个版本的库,而另一个应用需要一个不同的版本时,会发生什么?
在云计算的世界里,[容器][2] 正变得越来越流行,因为它们为应用提供了隔离和整合。你可以在一个“容器”中安装一个应用需要的所有文件。这样一来,它的库就不会受到其他应用的影响,它所占用的内存也不会将数据泄露到另一个内存空间。所有的东西最后都感觉非常像一个单一的、几乎是 _有形的_ 东西。在 Linux 桌面上,提供了类似的技术的 Flatpak是一个跨发行版、无守护进程、去中心化的应用交付系统。
### 在 Linux 上安装 Flatpak
你的 Linux 系统可能已经安装了 Flatpak。如果没有你可以从你的包管理器中安装它
在 Fedora、Mageia 和类似的发行版上:
```
$ sudo dnf install flatpak
```
在 Elementary、Mint 和其他基于 Debian 的发行版上:
```
$ sudo apt install flatpak
```
在 Slackware 上Flatpak 可以从 [SlackBuilds.org][3] 获得。
### 选择一个 Flatpak 仓库
你可以通过在你的发行版的软件中心(如 GNOME 上的“软件”)添加一个 Flatpak 仓库,将一个应用安装为 Flatpak。Flatpak 是一个去中心化的系统,意味着任何开发软件的人都可以托管他们自己的仓库。尽管如此,在实践中,[Flathub][4] 是 Flatpak 格式的最大和最流行的应用集合。要将 Flathub 添加到 GNOME “<ruby>软件<rt>Software</rt></ruby>” 或者 KDE “<ruby>发现<rt>Discover</rt></ruby>” 中,请浏览 https://flatpak.org/setup ,找到适合你的发行版的说明,从第二步开始,或者直接下载 [Flatpakrepo][5] 文件。根据你的网络情况,你的软件中心可能需要几分钟的时间来与 Flathub或另一个 Flatpak 仓库同步。Flathub 有很多软件,但你的系统上有多少个 Flatpak 仓库是没有限制的,所以如果你发现一个有你想尝试的软件,不要害怕添加一个新的仓库。
![Software Repositories][6]
如果你喜欢在终端工作,你可以用 `flatpak` 命令直接添加到仓库:
```
$ flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
```
### 安装一个应用
只要你在软件中心添加了 Flatpak 仓库,你就可以像往常一样浏览应用了。
![GNOME Software][8]
点击一个看起来很吸引人的应用,阅读它,当你准备好时点击**安装**按钮。
### 在终端中安装 flatpak
如果你喜欢在终端工作,你可以把 Flatpak 当作一个专门的包管理器。你可以使用 `flatpak search` 命令来搜索一个应用程序:
```
$ flatpak search paint
Name Description Application ID
CorePaint A simple painting tool org.cubocore.CorePaint
Pinta Edit images and paint digitally com.github.PintaProject.Pinta
Glimpse Create images and edit photographs org.glimpse_editor.Glimpse
Tux Paint A drawing program for children org.tuxpaint.Tuxpaint
Krita Digital Painting, Creative Freedom org.kde.krita
```
`flatpak install` 安装:
```
$ flatpak install krita
```
安装后,应用就会与系统中的所有其他应用一起出现在你的应用菜单或活动页上。
### 应用变得简单
Flatpak 通过消除版本冲突,可以使用户轻松安装应用。他们通过在自托管的平台或像 Flathub 这样的公共平台上只需要针对一种软件包格式提供应用,使分发软件变得简单。我在 Fedora Silverblue、CentOS 和 Slackware 上使用 Flatpak我无法想象现在没有它的生活。在你的下一个应用安装中试试 Flatpak 吧!
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/11/install-flatpak-linux
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/flatpak-lead-image_0.png?itok=URbhdsDQ (Flatpak)
[2]: https://opensource.com/article/21/7/linux-podman
[3]: http://slackbuilds.org
[4]: http://flathub.org
[5]: https://flathub.org/repo/flathub.flatpakrepo
[6]: https://opensource.com/sites/default/files/uploads/repo.jpg (Software Repositories)
[7]: https://creativecommons.org/licenses/by-sa/4.0/
[8]: https://opensource.com/sites/default/files/uploads/software.jpg (GNOME Software)

View File

@ -0,0 +1,159 @@
[#]: subject: "How to Install Apache Cassandra on Ubuntu and Other Linux"
[#]: via: "https://itsfoss.com/apache-cassandra-ubuntu/"
[#]: author: "Marco Carmona https://itsfoss.com/author/marco/"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14048-1.html"
如何在 Ubuntu 和其他 Linux 上安装 Apache Cassandra
======
![](https://img.linux.net.cn/data/attachment/album/202112/04/151942ihpizylzk0i3pt0i.jpg)
[Apache Cassandra][1] 是一个自由开源的 NoSQL 数据库管理系统,用于在许多服务器上操作大量信息,提供无单点故障的高可用性。
我不打算讨论 NoSQL 数据库的细节。我将会告诉你如何在基于 Ubuntu 的 Linux 发行版上安装 Apache Cassandra。
请注意,这更多是为了实践。
### 在 Linux 上安装 Apache Cassandra
有多种方法可以在 Ubuntu 和其他 Linux 发行版上安装 Cassandra
* 使用 Apache 的官方 deb 仓库安装:适合并推荐给基于 Debian 和 Ubuntu 的发行版。如果有更新的版本,会得到自动更新。
* 使用 Docker 安装:适用于所有 Linux 发行版。
* 从 tarball 安装:适用于所有 Linux但不会自动更新到新版本。
这仅仅是为了练习和体验 Apache Cassandra。如果你要在一个项目中使用它和其他服务你必须遵循该服务的完整配置和设置指南。
我将展示前两种方法。
#### 方法 1使用官方仓库在 Ubuntu 和 Debian 上安装 Cassandra
在你安装和使用 Cassandra 之前,你需要在你的系统上安装 Python 和 Java。你可能需要 [在 Ubuntu 上安装 Java][2],但 Python 通常是预装的。
你可以用下面这行来检查先决条件:
```
java -version && python --version
```
所有先决条件都安装好了?那就好。让我们来安装 Cassandra。这里的方法与 [在 Ubuntu 中添加任意外部仓库][3] 相同。
首先,将 Apache Cassandra 仓库添加到你的源列表中。下面这个添加最新的主要版本在写这篇文章的时候4.0 系列。
```
echo "deb http://www.apache.org/dist/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
```
![Add Apache Cassandra repository][4]
现在,下载并将 Apache Cassandra 仓库的密钥添加到服务器上的受信任密钥列表中。这样,你的系统就会信任来自你在上一步添加的仓库的软件包。
你应该确保 `apt` 可以通过 https 使用。
```
sudo apt install apt-transport-https
```
然后添加密钥:
```
wget https://www.apache.org/dist/cassandra/KEYS && sudo apt-key add KEYS
```
![Add Apache Cassandra repository key][5]
你已经添加了仓库。更新本地缓存,使你的系统知道这个新仓库的存在。
```
sudo apt update
```
最后,用以下命令安装 Cassandra
```
sudo apt install cassandra
```
![Installing Apache Cassandra on Ubuntu][6]
安装完成后Cassandra 服务会自动开始运行。如果你想的话,你仍然可以验证它:
```
sudo systemctl status cassandra.service
```
![Check if Cassandra is running][7]
你可以输入 `cqlsh` 连接到数据库。输入 `exit` 来退出这个 shell。
![Entering cqlsh][8]
这是非常基本和默认的设置。你可能需要根据你的需求来配置它。请查看 [官方文档中的配置部分][9]。
#### 方法 2使用 Docker 安装 Apache Cassandra
这个方法适用于任何 Linux 发行版,只要你打算在 Docker 设置中使用它。
当然,你需要在你的系统上安装 Docker 来实现这个方法。这是这个方法的前提条件,我让你处理这件事情。
如果你有 Docker使用下面的命令来拉取 Apache Cassandra 的 Docker 镜像:
```
sudo docker pull cassandra:latest
```
![Pulling Apache Cassandra docker image][10]
完成后,你可以用 [docker run 命令][11]来启动 Cassandra像这样
```
sudo docker run --name cass_cluster cassandra:latest
```
![Running Cassandra in a container][12]
**注意:** `--name` 选项指的是创建的 Cassandra 集群的名称。
要与之前启动的 Cassandra 节点交互,你需要初始化 CQL shell你可以用 Docker `exec` 命令这样做:
```
sudo docker exec -it cass_cluster cqlsh
```
![Access the cqlsh running in Docker.][13]
**恭喜!** 现在你至少知道了在你的系统中安装 Apache Cassandra 的两种不同方法。
请记住,这篇文章只是一个介绍。如果你有兴趣了解更多关于 Apache Cassandra 的信息,请阅读 [文档][14],在那里你可以找到更多关于这个神奇的 NoSQL 数据库管理系统的信息。如果这篇文章对你有帮助,请阅读并分享它。下一篇见。
--------------------------------------------------------------------------------
via: https://itsfoss.com/apache-cassandra-ubuntu/
作者:[Marco Carmona][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/marco/
[b]: https://github.com/lujun9972
[1]: https://cassandra.apache.org/_/index.html
[2]: https://itsfoss.com/install-java-ubuntu/
[3]: https://itsfoss.com/adding-external-repositories-ubuntu/
[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/Installing_the_Debian_packages_step_1.png?resize=800%2C123&ssl=1
[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/Installing_the_Debian_packages_step_2.png?resize=800%2C490&ssl=1
[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/Installing_the_Debian_packages_step_3.png?resize=800%2C490&ssl=1
[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/verify-cassandra.png?resize=800%2C443&ssl=1
[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/Installing_the_Debian_packages_step_4.png?resize=800%2C164&ssl=1
[9]: https://cassandra.apache.org/doc/latest/cassandra/getting_started/configuring.html
[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/Using_Docker_images_step_2.png?resize=800%2C275&ssl=1
[11]: https://linuxhandbook.com/docker-run-vs-start-vs-create/
[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/Using_Docker_images_step_3.png?resize=800%2C490&ssl=1
[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/Using_Docker_images_step_4.png?resize=800%2C225&ssl=1
[14]: https://cassandra.apache.org/doc/latest/index.html

View File

@ -0,0 +1,97 @@
[#]: subject: "Its Time More Linux Distros and DEs Become Linus-Proof"
[#]: via: "https://news.itsfoss.com/more-linux-distros-become-linus-proof/"
[#]: author: "Abhishek https://news.itsfoss.com/author/root/"
[#]: collector: "lujun9972"
[#]: translator: "imgradeone"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14053-1.html"
是时候让更多 Linux 发行版和桌面环境接受“老莱暴捶”了
======
![](https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/linus-pop-os-lessons.png?w=1200&ssl=1)
> “老莱” 体验 Pop!_OS 的视频狠狠地给桌面 Linux 社区上了一课。
过去的几周,整个 Linux 桌面社区沸腾了。
知名 YouTube 创作者 LinusLCTT 译注:不是 Linux 之父 Torvalds是 Linus Tech Tips 的 Sebastian“老莱”是国内网友对 Linus Sebastian 的称呼。)决定在一个月内挑战日常使用 Linux 桌面。“老莱” 想了解 Linux 是否已经达到了对用户友好的程度,乃至于“技术呆”级别的用户都能轻松上手。他的专注点同样也放在了 [Linux 游戏][1] 上,毕竟电脑游戏确实也是 “老莱” 关注的一个领域。
这是一个有趣的概念Linux 社区的许多人也十分兴奋,毕竟它向更广泛的技术受众群体免费宣传了桌面 Linux 平台。
唯一美中不足的是,这个日用 Linux 挑战 [从一开始就出了大乱子][2]。LCTT 译注:[B 站][11] 中也有相应的中文字幕视频。)
### “老莱”的 Pop!_OS 名(或者说是“冥”)场面
LCTT 译注:原文标题使用的是 (in)famous同时指代“著名”和“臭名昭著”此处的“冥场面”偏向事件悲剧性。
“老莱” 决定 [安装 Pop!_OS][3],因为 Pop!\_OS 经常在社区中作为适合游戏的主流发行版出现。接下来,他尝试在软件中心(即 Pop!\_Shop安装 Steam但软件中心未能成功安装 Steam。
![Sebastian 安装 Steam 时遇到了问题][4]
既然没能通过图形化方式安装,他接下来做了其他所有 Linux 用户都会做的事情。他打开了终端,运行了神奇的 `sudo apt-get install` 命令。
![Sebastian 换用命令行方式安装 Steam][5]
无论是图形化方式还是终端方式Pop!_OS 都显示了一条警告,提示用户正濒临卸载关键软件包的危险。
命令行方式清晰明了地警告“_**您的操作有潜在的危害性。若要继续请输入下面的短句“是按我说的做Yes, do as I say!)”**_。”
![忽略移除关键软件包的警告][6]
对于大部分 Linux 用户来说,到这一步就真的得停下来,深思熟虑了。输出的内容明确显示,接下来即将删除 `gdm3`、`pop-desktop` 和其他许多桌面环境要素。
但人们一般不会在意警告。于是 “老莱” 直接继续安装,最终就剩下了一个不能登录图形界面的损坏系统。
![意识到他的 Pop!_OS 彻底出乱子后的 Linus Sebastian不是 Torvalds][7]
### 给桌面 Linux 开发者的深刻教训
对于开发者来说,这里有两点教训值得注意:
* 安装 Steam 或任何其他常规软件时,不能导致关键的图形界面软件包被删除。
* 在一款常规的、主流的发行版中,用户不应该能删除关键软件包。
Pop!_OS 迅速修复了 Steam 的问题,并增加了防御机制以阻止删除关键的桌面要素。
> 出于某些原因i386 版的软件包不能在 Launchpad 上发布。Steam 是一个 i386 软件包,在尝试安装 Steam 时不得不将该软件包降级到 Ubuntu 版本以解决依赖问题,然后就删除了 Pop!_OS 的软件包。
>
> — Jeremy Soller (@jeremy_soller) [2021 年 10 月 26 日][8]
为避免此类事故Pop!\_OS 为 APT 包管理器制作了补丁。现在,用户无法在 Pop!\_OS 通过输入“**是按我说的做Yes, do as I say!**”来删除关键软件包了。相反用户将需要添加一个特殊文件来启用该功能如果某个人真的想把这些关键软件包删掉的话LCTT 译注APT 2.3.12 上游已经彻底禁用卸载关键软件包的功能。)
对于 Pop!\_OS 来说,这确实是一个好举措。但,这并不仅仅是 Pop!\_OS 单方面的教训。大多数 Linux 发行版都可能会遇到这种情况,并最终删除掉桌面环境和显示服务器。
KDE 已经注意到了这一点,并在即将发布的 Plasma 5.24 中 [添加了禁止卸载 Plasma 桌面的功能][9]。
![KDE Plasma 不允许用户卸载 Plasma 桌面][10]
许多人责怪 “老莱” 不顾清晰明确的警告,直接继续并走向灾难。但问题在于,许多用户真的不会在意 “警告” 这种东西,不管他们技术水平如何。人们只是觉得按 “Y” 或者其他东西就是程序正常的部分,也不会去多想。一些 Linux 用户之前已经踩过这种坑了,但未来可能还会有更多人重蹈覆辙。
这就是为什么添加故障保护措施才是明智之举。这是所有主流发行版都应该做的事。
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/more-linux-distros-become-linus-proof/
作者:[Abhishek][a]
选题:[lujun9972][b]
译者:[imgradeone](https://github.com/imgradeone)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/root/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/linux-gaming-guide/
[2]: https://www.youtube.com/watch?v=0506yDSgU7M&t=788s
[3]: https://itsfoss.com/install-pop-os/
[4]: https://i1.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/pop-os-failed-steam-install.webp?w=1233&ssl=1
[5]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/pop-os-failed-steam-install-1.webp?w=1118&ssl=1
[6]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/pop-os-failed-steam-install-2.webp?w=1087&ssl=1
[7]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/linus-sebastian-nukes-pop-os-while-installing-steam-os.webp?w=1232&ssl=1
[8]: https://twitter.com/jeremy_soller/status/1453008808314351628?ref_src=twsrc%5Etfw
[9]: https://linux.cn/article-14015-1.html
[10]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/11/cant-remove-plasma-1.png?w=1022&ssl=1
[11]: https://www.bilibili.com/video/BV1Fh411b7q3?t=769

View File

@ -0,0 +1,142 @@
[#]: subject: "Collaborate on a file using Linux diff and patch"
[#]: via: "https://opensource.com/article/21/11/linux-diff-patch"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14037-1.html"
使用 Linux 的 diff 和 patch 对文件进行协作
======
> 如果你曾经试图通过电子邮件或聊天来协作处理文件,并且发现自己试图描述需要修改的地方,那么你会喜欢 `diff``patch` 的。
![](https://img.linux.net.cn/data/attachment/album/202112/01/102607jmjbpu1jk1as61j1.jpg)
我编辑过很多文本文件。有时是代码。其他时候是角色扮演游戏RPG、编程书籍或一般信件的书面文字。有时候做一个修改而能让我的协作者把我的修改和他们原来写的东西进行比较就更好了。许多人默认使用办公套件如 [LibreOffice][2])的注释或更改跟踪功能。不过有时更简单的工具更有意义,为此,你可以看看像 `diff``patch` 这样的工具的编程历史,它们为跟踪和应用共享文件的变化提供了标准化的格式。
即使对于简单的文件,在同步两个文件时也有复杂性。一些项目被改变,另一些被保留,新的内容被添加,还有一些保持不变,但被移到文件的不同位置。如果接受所有的变化,并且用新文件替换旧文件,就很难复制变化。它也是整体不透明的。如果变化很多,就很难挑出到底发生了什么变化。
通过 `diff` 命令,你可以创建一个文件变化的记录,通过 `patch` 你可以在旧版本上“重放”这些变化,使其与新版本保持一致。
### 设置
假设你和我正在合作编写一个描述如何泡茶的文件。
到目前为止,文件 `tea.md` 包含原始的复制粘贴来的内容:
```
烧开水。
加热茶壶。
在茶壶中加入茶和水。
在茶壶上放置一个茶叶滤网。
浸泡 6 分钟。
将茶倒入杯中。
加入牛奶。
```
这似乎很合理,但总有一些优化可以做,所以你把文件发给我改进。为了澄清泡茶过程,我把文件复制为`tea-revision.md`,并进行编辑,最后是这样的:
```
在烤箱的抽屉中加热茶壶。
烧开水。
将茶叶放入茶叶滤网。
将滤网和水加入茶壶。
浸泡 6 分钟。用茶壶罩保温。
将茶倒入杯中。
可以选择加入温牛奶。
```
正如预期的那样,一些项目(“烧开水”和“将茶倒入杯中”)没有变化,而其他行(“加热茶壶”)则有增加。有些行是全新的,有些行是相同的,但顺序不同。
### 创建一个差异
`diff` 工具会显示两个文件之间的差异。有几种不同的方法来查看结果,但我认为最清楚的是 `—unified`(简写为 `-u`)视图,它显示哪些行被增加或减少了。以任何方式改变的行都被视为先减后增的行。默认情况下,`diff` 将其输出打印到终端。
`diff` 提供旧文件,然后是新文件:
```
$ diff --unified tea.md tea-revised.md 
--- tea.md      2021-11-13 10:26:25.082110219 +1300
+++ tea-revised.md      2021-11-13 10:26:32.049110664 +1300
@@ -1,7 +1,7 @@
+在烤箱的抽屉中加热茶壶。
烧开水。
-加热茶壶。
-在茶壶中加入茶和水。
-在茶壶上放置一个茶叶滤网。
-浸泡 6 分钟。
+将茶叶放入茶叶滤网。
+将滤网和水加入茶壶。
+浸泡 6 分钟。用茶壶罩保温。
 将茶倒入杯中。
-加入牛奶。
+可以选择加入温牛奶。
```
行首的加号(`+`)表示在旧文件中增加了一些内容。行首的减号(`-`)表示被删除或改变的行。
### 用 diff 创建一个补丁
补丁文件就是将 `diff —unified` 命令的输出放到一个文件中。你可以用标准的 Bash 重定向来做这件事:
```
$ diff -u tea.md tea-revised.md > tea.patch
```
该文件的内容与输出到终端的内容完全相同。我喜欢在 [Emacs][3] 中查看补丁文件,它对每一行进行颜色编码,取决于它是被添加还是被减去。
![Emacs中的补丁文件][4]
### 用补丁应用修改
一旦我有了补丁文件,我就可以把它发给你,让你审查,并且可以选择应用到你的旧文件中。你可以用 `patch` 命令来应用一个补丁。
```
$ patch tea.md tea.patch
```
增加了一些行,减少了一些行,最后,你得到了一个与我的版本相同的文件:
```
$ cat tea.md
在烤箱的抽屉中加热茶壶。
烧开水。
将茶叶放入茶叶滤网。
将滤网和水加入茶壶。
浸泡 6 分钟。用茶壶罩保温。
将茶倒入杯中。
可以选择加入温牛奶。
```
你可以给一个文件打多少次补丁,这是没有限制的。你可以对我的修改进行迭代,生成一个新的补丁,然后发给我审核。发送修改内容而不是结果,可以让每个贡献者审查修改的内容,决定他们要保留或删除的内容,并准确地记录过程。
### 安装
在 Linux 和 macOS 上,你已经有了 `diff``patch` 命令。在 Windows 上,你可以通过 [Cygwin][6] 获得 `diff``patch`,或者使用 Chocolatey 搜索 [diffutils][7] 和 [patch][8]。
如果你曾经试图通过电子邮件或聊天来协作处理文件,并且发现自己需要 _描述_ 需要修改的地方,那么你会喜欢 `diff``patch`。一个结构严谨的文件,如代码或以行为单位的 [Markdown][9],很容易进行差异比较、补丁和维护。 
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/11/linux-diff-patch
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/checklist_hands_team_collaboration.png?itok=u82QepPk (a checklist for a team)
[2]: https://opensource.com/article/21/9/libreoffice-tips
[3]: https://opensource.com/article/20/12/emacs
[4]: https://opensource.com/sites/default/files/uploads/emacs_0_1.jpg (A patch file in Emacs)
[5]: https://creativecommons.org/licenses/by-sa/4.0/
[6]: https://cygwin.com
[7]: https://community.chocolatey.org/packages/diffutils
[8]: https://community.chocolatey.org/packages/patch
[9]: https://opensource.com/article/19/9/introduction-markdown

View File

@ -0,0 +1,105 @@
[#]: subject: "System Monitoring Center is an Ideal Task Manager & Resource Monitor for Linux"
[#]: via: "https://itsfoss.com/system-monitoring-center/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14069-1.html"
系统监控中心:一个理想的 Linux 任务管理器和资源监视器
======
> “系统监控中心”是一个多合一的开源应用,不用使用多种工具就可以监控基本的系统资源情况。
![](https://img.linux.net.cn/data/attachment/album/202112/10/131211ng09sz76u2b7gbaw.jpg)
在 Linux 上以图形方式监控系统资源可能体验不是很好,这些与你的桌面环境相配套的系统监控工具可能细节有限。
例如GNOME 的系统监视器不显示 CPU 频率和温度。
此外Linux 的默认系统监控程序通常以简单为目标,而不是提供详细的信息。
<ruby>系统监控中心<rt>System Monitoring Center</rt></ruby>” 是一个有用的 GUI 工具,它提供了大量必要的信息。在这篇文章中,让我给你详细介绍一下它。
### 系统监控中心:显示基本系统统计信息的 Linux 应用
![][1]
系统监控中心是一个基于 GTK3 和 Python 3 的外观时尚的应用,它为你提供了你想要的所有资源使用数据。
在我的例子中,我想在使用系统监控工具时关注 CPU 的频率,但 GNOME 的系统监控工具提供不了帮助。所以,这个应用就非常有用了。
![][2]
该应用的用户体验良好,并提供了大量的信息和功能。让我重点介绍一下它的主要功能。
> 写这篇文章时,该应用程序仍处于测试阶段。因此,你可能会遇到一些错误。然而,我在简短的测试中没有注意到任何问题。
### 系统监控中心的功能
![][3]
首先,它可以让你查看 CPU、内存、磁盘、网络、GPU 和传感器的单独统计数据。
你可以在该工具中看到以下细节信息:
* 显示 CPU 状态,包括频率
* 能够显示平均使用率或每个核心的使用率
* 可以选择 CPU 频率和其他统计的精度
* 能够改变图表的颜色
* 按用户过滤系统进程并轻松管理它们
* 切换一个浮动的摘要小部件,以快速获得信息
* 显示磁盘使用信息和连接的驱动器
* 在同一个应用中显示详细的系统信息
* 控制启动服务和程序
* 能够控制状态更新的时间间隔
* 应用本身的系统资源使用率较低
* 适应系统主题
虽然它为每个标签(或组件)提供了大量的选项和自定义功能,但我希望它能在未来的更新中包括 RAM 频率等东西。
![][4]
然而,考虑到它可以同时取代磁盘使用分析器和 `neofetch` 等终端工具,其余的数据似乎非常有用。
![][5]
请注意,如果你有多个机箱风扇、独立的排风扇或 AIO你可能无法得到风扇的数据。温度也可能有或没有但 CPU 的温度应该是可见的。
### 在 Linux 中安装系统监控中心
你可以使用可用的 deb 包在任何基于 Ubuntu 的发行版上轻松安装它。
不幸的是,没有可用的其他软件包,只有一个 ZIP 文件,你得手动构建和编译才能安装它。你在 ZIP 文件中可以找到一个脚本来构建 RPM 包。
deb 文件可以通过 SourceForge 获得。你点击下面的按钮来下载它,或者在他们的 [GitLab 页面][6] 找到。
- [下载系统监控中心][7]
### 总结
系统监控中心是一个开源应用,可以让用户详细了解他们的系统资源,并帮助管理进程。
对于许多 Linux 用户来说,这是一个非常需要的应用,不需要使用单独的终端/GUI 程序就可以提供详细的信息。
--------------------------------------------------------------------------------
via: https://itsfoss.com/system-monitoring-center/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/system-monitoring-center.png?resize=800%2C611&ssl=1
[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/system-monitoring-center-full-info.png?resize=800%2C585&ssl=1
[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/system-monitoring-center-options.png?resize=582%2C576&ssl=1
[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/system-cpu-monitoring.png?resize=800%2C599&ssl=1
[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/system-monitoring-center-process.png?resize=800%2C592&ssl=1
[6]: https://kod.pardus.org.tr/Hakan/system-monitoring-center
[7]: https://sourceforge.net/projects/system-monitoring-center/files/latest/download

View File

@ -0,0 +1,202 @@
[#]: subject: "Installing and Using Homebrew Package Manager on Linux"
[#]: via: "https://itsfoss.com/homebrew-linux/"
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14065-1.html"
在 Linux 上安装和使用 Homebrew 包管理器
======
![](https://img.linux.net.cn/data/attachment/album/202112/09/090614sptwo73z73f7fw7u.jpg)
Homebrew家酿也被称为 Brew是一个主要为 macOS 创建的命令行包管理器。
[Homebrew][1] 在 macOS 用户中相当流行,因为更多的开发者创造了可以用 Homebrew 轻松安装的命令行工具。
这种流行导致了 Linuxbrew 的诞生,它是 Homebrew 的一个 Linux 移植版。由于它主要是 Git 和 Ruby 组成的,而 Linux 和 macOS 都是类 Unix 的系统,所以 Brew 在两种操作系统上都能很好地工作。
Linuxbrew 项目最终与 Homebrew 项目合并,现在只有一个 Brew 项目,叫做 Homebrew。
为什么我叫它 Brew而不是 Homebrew因为命令以 `brew` 开头。你会在后面的章节中看到它的详细内容。
### 当你已经有了 apt、dnf、snap 时,为什么还要在 Linux 上使用 Homebrew 包管理器?
我知道这种感觉。你已经有一个由你的发行版提供的好的 [包管理器][2]。除此之外,你还有 Snap、Flatpak 和其他通用软件包系统。
在你的 Linux 系统上你真的需要 Homebrew 包管理器吗?答案取决于你的需求。
你看,除了发行版的包管理器和通用包管理器,你会遇到需要其他包管理器的情况,比如 [Pip][3] (用于 Python 应用)和 [Cargo][4] (用于 Rust 软件包)。
想象一下,你遇到了一个很好的命令行工具,想试试。它的软件库提到它可以使用 `brew` 或源代码来安装。在这种情况下,在你的系统上有 `brew` 可能会有帮助。毕竟,都 2021 了,[从源代码安装][5] 并不时髦(也不舒服)。
换句话说,如果你遇到一些有趣的命令行工具只提供 `brew` 安装选项,你会有一个额外的选择。
### 在 Ubuntu 和其他 Linux 发行版上安装 Homebrew
安装是相当容易的。你只需要确保你已经有了所有的依赖项。
#### 步骤 1安装依赖项
你需要有相对较新版本的 gcc 和 glibc。你可以 [在 Ubuntu 上安装 build-essential 包][6] 来获得它们。除此之外,你还需要 [安装 Git][7]、Curl 和 procps用于监控系统进程
在基于 Ubuntu 和 Debian 的系统中,你可以像这样一起安装所有这些东西:
```
sudo apt-get install build-essential procps curl file git
```
![Iinstall dependencies for Homebrew in Ubuntu/Debian][8]
对于其他发行版,请使用你的包管理器并安装这些依赖项。
#### 步骤 2安装 Homebrew
你可以看到为什么你需要 [安装 Curl][9]。它允许你 [在终端下载安装脚本文件][10]。
只要输入这个命令:
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
当要求输入回车键时,请按下回车。
![Installing Homebrew on Ubuntu][11]
在脚本最后,它建议运行几个命令,将其添加到 `PATH` 变量中。Homebrew 实际上是安装在你的主目录中,然后软链接到 `/usr/local` 目录中。
![Run the suggested command under Next steps to add Homebrew to PATh variable][12]
你可以 [在终端方便地复制和粘贴][13]。只要选择它所建议的命令,按 `Ctrl+Shift+C` 复制,按 `Ctrl+Shift+V` 粘贴。
或者,你也可以直接复制粘贴这个命令:
```
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> $HOME/.bash_profile
```
然后是这个:
```
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
```
![Adding brew commands to the PATH][14]
#### 步骤 3验证 brew 的安装
就快完成了。只需通过使用 `brew doctor` 命令来验证 `brew` 命令是否可以运行:
```
brew doctor
```
`brew doctor` 命令会告诉你是否有任何问题。
你可以通过安装示例 hello 项目再次验证:
```
brew install hello
```
如果你没有看到任何错误,你可以在 Linux 上享用家酿了。
### 使用 brew 命令来安装、删除和管理软件包
让我快速告诉你几个可以用来安装、删除和管理软件包的 `brew` 命令。
由于 Homebrew 安装在你的主目录中,你不需要 `sudo` 来运行它(就像 Pip 和 Cargo
要用 `brew` 安装一个软件包,请使用安装选项:
```
brew install package_name
```
这里没有自动完成软件包名称的功能。你需要知道确切的软件包名称。
要删除一个 `brew` 软件包,你可以使用 `remove``uninstall` 选项。两者的作用是一样的。
```
brew remove package_name
```
你也可以用这个命令列出已安装的 `brew` 软件包:
```
brew list
```
你也可以用 `autoremove` 选项删除不需要的依赖:
```
brew autoremove
```
在下一张截图中,我只用 `brew` 安装了两个软件包,但它也显示了这些软件包的依赖关系。即使在移除软件包后,依赖关系仍然存在。`autoremove` 终于把它们删除了。
![Listing and removing brew apckages][15]
还有很多 `brew` 命令选项,但这不在本教程的范围内。你可以随时 [翻阅它的文档][16] 并进一步探索。
### 从 Linux 中删除 Homebrew
如果不加入从你的 Linux 系统中删除 Homebrew 的步骤,本教程就不完整。
根据 [GitHub 仓库中提到的步骤][17],你必须下载并使用这个命令运行卸载脚本:
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
```
你会被要求输入 `Y` 键来确认删除。
![Removing Homebrew from Linux][18]
当 Homebrew 的卸载完成后,它会列出它所遗留的文件和目录:
![Remaining files after Homebrew removal][19]
让你自己去删除这些文件和目录。
### 总结
正如我前面解释的Homebrew 为你已经有的东西提供了一个扩展。如果你偶然发现一个只有 `brew` 安装方式的应用,在你的 Linux 系统上安装 Homebrew 会很方便。
你对这个话题有什么要补充的,或者分享你的问题或意见?请在评论区留言。
--------------------------------------------------------------------------------
via: https://itsfoss.com/homebrew-linux/
作者:[Abhishek Prakash][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/abhishek/
[b]: https://github.com/lujun9972
[1]: https://brew.sh/
[2]: https://itsfoss.com/package-manager/
[3]: https://itsfoss.com/install-pip-ubuntu/
[4]: https://itsfoss.com/install-rust-cargo-ubuntu-linux/
[5]: https://itsfoss.com/install-software-from-source-code/
[6]: https://itsfoss.com/build-essential-ubuntu/
[7]: https://itsfoss.com/install-git-ubuntu/
[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/install-dependencies-for-homebrew-linux.png?resize=800%2C493&ssl=1
[9]: https://itsfoss.com/install-curl-ubuntu/
[10]: https://itsfoss.com/download-files-from-linux-terminal/
[11]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/installing-homebrew-ubuntu.png?resize=800%2C453&ssl=1
[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/11/adding-homebrew-to-path-Linux.png?resize=800%2C442&ssl=1
[13]: https://itsfoss.com/copy-paste-linux-terminal/
[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/post-installation-steps-for-brew.png?resize=786%2C348&ssl=1
[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/brew-remove-packages.png?resize=800%2C572&ssl=1
[16]: https://docs.brew.sh/Manpage
[17]: https://github.com/homebrew/install#uninstall-homebrew
[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/removing-homebrew-from-Linux.png?resize=800%2C539&ssl=1
[19]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/remaining-files-after-homebrew-removal.png?resize=800%2C464&ssl=1

View File

@ -0,0 +1,133 @@
[#]: subject: "Vivaldi 5.0 Brings Two-Level Tabs to Android & Adds New Features for Desktop"
[#]: via: "https://news.itsfoss.com/vivaldi-5-0-release/"
[#]: author: "Rishabh Moharir https://news.itsfoss.com/author/rishabh/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14044-1.html"
Vivaldi 5.0 发布!
=====
![](https://i1.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/vivaldi-5-0-ft.jpg?w=1200&ssl=1)
> 对于那些喜欢在桌面和安卓系统上进行定制和增加功能的用户来说Vivaldi 5.0 是一个令人兴奋的版本。
Vivaldi 是一个基于 Chromium 的网页浏览器,可用于 Linux及其他平台。它因其增强功能和多任务特性而广为人知。这使它成为 [Linux 上最好的网页浏览器][1] 之一,特别是对于高级用户来说。
随着 Vivaldi 5.0 的发布(以纪念其 5 周年),它推出了一系列重大功能增加和改进。
让我们来看看 Vivaldi 的新版本有什么特点。
### Vivaldi 5.0 的新功能
请注意Vivaldi 除了其用户界面之外大部分是 [开源][2] 的。然而,他们倾向于把重点放在 Linux 平台的改进上肯定是件好事。
以下是你可以在 Vivaldi 5.0 发现的变化:
#### Vivaldi 主题
![致谢Vivaldi 博客][3]
主题一直是 Vivaldi 最好的功能之一,不仅仅是因为它有各种预装的主题,而是你可以定制你的主题或编辑预装的主题。
它的主题编辑器已经更新,有更多可以定制的选项。你现在可以编辑颜色、边角、背景和设置来定制主题。以前,你必须单独编辑背景图片,而现在新的主题编辑器应该很方便使用。
而且,并不止于此,你已经创建好了你的主题?
现在,你可以使用新的“<ruby>导出主题<rt>Export Theme</rt></ruby>”选项轻松地生成一个 ZIP 文件,与任何人分享你的主题。同样地,你也可以导入一个主题。
![致谢Vivaldi 博客][12]
更进一步地,你可以把你新设计的主题提交到他们的 [社区画廊][4]。你也可以从那里找到其他用户的主题,并安装它们。
#### 新的翻译面板
![video][5]
在 [Vivaldi 4.0 发布时][6],他们引入了由 [Lingvanex][7] 提供的内置翻译功能。
现在,通过侧边栏中新的“<ruby>翻译面板<rt>Translate Panel</rt></ruby>”,你可以快速添加一个文本片段并进行翻译,而无需翻译整个网页。
Vivaldi 的侧面板以提高多任务处理能力而闻名,而这个功能的增加应该会加强这一点。
如果你想翻译更多的片段呢?当然,你肯定不想一直继续复制粘贴它们!
对于这个特殊的需求Vivaldi 还引入了一个“<ruby>一步自动翻译<rt>one-step auto-translate</rt></ruby>”选项。一旦启用该选项,突出显示你在网页中想要的文本,它的翻译将立即出现在侧面板上。这听起来很酷!
#### 在弹出式窗口中查看下载
![致谢Vivaldi博客][13]
虽然 Vivaldi 在很多方面都令人印象深刻,但对于用户来说,其关注下载进度的能力并不那么直观。你必须到侧面板(或“下载”)中去检查下载的进度。
相比之下,在其他网页浏览器中,你可以在你的扩展程序旁边找到一个按钮。
在 Vivaldi 5.0 中,你终于可以使用地址栏中的一个按钮来检查下载进度,点击该按钮将打开一个弹出窗口来显示你的下载进度。
#### 为安卓用户提供的增强功能
Vivaldi 的安卓版也有了重大更新和期待已久的功能。
安卓用户现在可以使用桌面用户已经在使用的 “<ruby>两级标签堆栈<rt>Two-level Tab Stacks</rt></ruby>”。
也许,这对任何安卓手机浏览器来说都是第一次!
对于那些不知道的人来说,这个功能有助于将标签页组合在一起,产生两级。这有助于避免多个标签挤在一起。
![致谢Vivaldi][14]
可配置的“<ruby>标签栏<rt>Tab Bar</rt></ruby>”现在多了两个选项。例如背景标签上用于关闭的“X”按钮可以被移除为更多的标签腾出空间。用户还可以将标签简单地显示为收藏夹因此没有标题也没有“X”按钮。
因此,你有很多管理你的安卓移动设备上的标签的方法。
虽然这很有趣,但我不太确定对用户来说,在小屏幕上掺杂两级标签堆栈的感觉如何。
![video][8]
平板电脑和 Chromebook 用户也将享受到用户界面更新的待遇。平板电脑和 Chromebook 用户现在可以使用经典的“<ruby>侧面板<rt>Side Panel</rt></ruby>”,以组织浏览器的布局,尽量减少杂乱。
这一功能的增加可以使 Vivaldi 成为平板电脑用户的有力选择。
#### 其他改进
除了关键的亮点之外,你可以发现速度的改进和错误的修复。
要探索更多,你可以查看其 [桌面版][9] 和 [安卓版][10] 的官方博客文章。
### 总结
Vivaldi 无疑是一个会关注其用户需求和网页体验的浏览器。对于喜欢更多定制和功能的用户来说,最新的版本听起来很令人感兴趣。
你可以从官方网站下载可用的 DEB/RPM 包并进行安装。
- [下载 Vivaldi 5.0][11]
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/vivaldi-5-0-release/
作者:[Rishabh Moharir][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/rishabh/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/best-browsers-ubuntu-linux/#:~:text=Mozilla%20Firefox&text=Firefox%20is%20the%20default%20web%20browser%20for%20most%20Linux%20distributions.
[2]: https://vivaldi.com/source/
[3]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/Theme-v2_Editor.png?resize=1568%2C882&ssl=1
[4]: https://themes.vivaldi.net
[5]: https://youtu.be/Ydnds6GU_Lc
[6]: https://news.itsfoss.com/vivaldi-4-0-release/
[7]: https://lingvanex.com
[8]: https://youtu.be/wujcMAdd-tw
[9]: https://vivaldi.com/blog/vivaldi-5-0-desktop-themes-translate-panel/
[10]: https://vivaldi.com/blog/vivaldi-on-android-gets-worlds-first-two-rows-of-mobile-browser-tabs/
[11]: https://vivaldi.com/download/
[12]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/vivaldi-5-export.png?resize=1568%2C882&ssl=1
[13]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/Download-popup.png?resize=1568%2C882&ssl=1
[14]: https://i1.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/android_double-line-tab-stack-new-blog.png?resize=1568%2C882&ssl=1

View File

@ -0,0 +1,82 @@
[#]: subject: "Convert audio in batches on Linux with SoundConverter"
[#]: via: "https://opensource.com/article/21/12/soundconverter-linux"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14072-1.html"
在 Linux 上用 SoundConverter 分批转换音频
======
> SoundConverter 是一个有用的应用,它不仅能做到它的名字所说的那样,而且它是分批和并行地做的。
![](https://img.linux.net.cn/data/attachment/album/202112/11/090248gqt2hwqtyft51qwh.jpg)
有许多用于存储数字音频的文件格式,它们适用于不同的目的。当然,数字音频只是声音的一种表现形式,是一种声波的呈现,它由解码器和一组扬声器转化为声音。一些音频格式,一般被称为 <ruby>无损<rt>lossless</rt></ruby> 格式,旨在将音频编码为接近其原始模拟形式。然而,在现实世界中有大量的数据,而迄今为止,数字形式只能对其进行近似处理,而且需要非常大的文件。其他的音频格式,被称 <ruby>有损<rt>lossy</rt></ruby> 格式,可以在文件大小与声音的合理表现之间取得平衡。
有很多很好的终端命令可以用于音频转换:有 `sox``ffmpeg`,以及一些特定格式的编码器,如 `opusenc`、`flac`、`oggenc`、`fdkaac`、`wavpack` 和无数的其他编码器。
### 在 Linux 上安装 SoundConverter
SoundConverter 在大多数 Linux 发行版上都可以通过你的包管理器获得。在 Fedora、Mageia 和类似的发行版上:
```
$ sudo dnf install kdenlive
```
在 Elementary、Mint 和其他基于 Debian 的发行版上:
```
$ sudo apt install kdenlive
```
然而,我使用使用 [Flatpak][2] 安装 SoundConverter。
### 转换音频
一旦你把音频编码成有损格式,你就丢失了数据。这些数据是否重要取决于其听众的耳朵。有些人听不出低比特率的 MP3 和全质量的 FLAC 文件之间的区别,即使那些能听出来的人,也常常注意不到 320kbps 的 Ogg Vorbis 播客和 128kbps 的 Ogg Vorbis 播客之间的区别。将音频从压缩格式转换为非压缩格式并不能恢复丢失的数据,但需要将音频从一种格式转换为另一种格式的情况并不少见。你可能想把文件上传到只接受特定格式的网站,或者你的移动设备可能只能播放特定的格式,或者用电子邮件发送一个对你的邮件主机来说太大的文件,或者你可能只是想节省硬盘上的空间。
SoundConverter 可以让你轻松地分批转换音频。要用 SoundConverter 转换音频:
1. 从你的应用或活动菜单中启动 SoundConverter。
2. 点击 SoundConverter 窗口左上角的“<ruby>添加文件<rt>Add Files</rt></ruby>”按钮,并选择你要转换的文件。
3. 添加了文件后,点击窗口右上角的“<ruby>偏好<rt>Preferences</rt></ruby>”按钮(齿轮图标),并选择你想转换的格式。你还可以设置文件命名规则、目标文件夹和其他选项。
4. 当你准备好了,点击左上角的“<ruby>转换<rt>Convert</rt></ruby>”按钮。
![SoundConverter window][3]
### 并行处理
SoundConverter 是一个有用的应用,它不仅完全做了它的名字所说的事情,而且它是分批和并行地做的。因为现代计算机不仅仅有一个 CPU 核心把每个文件放在一个队列中逐一编码是对能源和时间的浪费。SoundConverter 可以同时处理几个文件,并对它们进行编码,这意味着转换 12 个文件所需的时间和通常一个接一个地转换两个文件所需的时间是一样的。你可以用一个好的终端命令做同样的事情,但前提是你要了解如何 [启动并行进程][5]。
![SoundConverter preferences][6]
你也可以将立体声音频转换为单声道文件。这对播客和有声读物特别有用。这些通常由一个人从一个单一的位置(麦克风)说话组成,不需要空间位置感。事实上,将立体声文件减少到单声道,如果你只有一个耳塞,就能更容易听到音频,并将文件大小减半。
### SoundConverter 的优势
为音频提供不同的文件格式是一个很好的功能,但似乎每当我以一种格式保存音频时,我都不可避免地需要另一种格式。有几个很棒的 Linux 命令可以 [转换音频文件][7],但有时你可能想要一个可以在桌面上打开并拖放文件的应用,这就是 [SoundConverter][8] 的用场。SoundConverter 是一个简单的而用途单一的应用程序,它的作用和它的名字一样:把声音从一种格式转换为另一种格式。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/12/soundconverter-linux
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/sound-radio-noise-communication.png?itok=KMNn9QrZ (radio communication signals)
[2]: https://opensource.com/article/21/11/install-flatpak-linux
[3]: https://opensource.com/sites/default/files/uploads/soundconverter_0.jpg (SoundConverter window)
[4]: https://creativecommons.org/licenses/by-sa/4.0/
[5]: https://opensource.com/article/18/5/gnu-parallel
[6]: https://opensource.com/sites/default/files/uploads/soundconvert-preferences.jpg (SoundConverter preferences)
[7]: https://opensource.com/article/17/6/ffmpeg-convert-media-file-formats
[8]: https://soundconverter.org/

View File

@ -0,0 +1,252 @@
[#]: subject: "How to use dig"
[#]: via: "https://jvns.ca/blog/2021/12/04/how-to-use-dig/"
[#]: author: "Julia Evans https://jvns.ca/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14051-1.html"
如何使用 dig
======
![](https://img.linux.net.cn/data/attachment/album/202112/05/192530gj36ttdwz16azu6w.jpg)
你好!最近我和几个朋友聊天,他们提到希望知道如何使用 `dig` 来进行 DNS 查询,所以这是一篇关于它的速读博文。
当我第一次使用 `dig` 时,我发现它有点吓人 —— 有这么多的选项!我打算把大部分的选项省略。在这篇文章中,我打算不谈 `dig` 的大部分选项,只谈我实际使用的选项。
我最近还了解到,你可以设置一个 `.digrc` 配置文件,让它的输出更容易阅读,这让它的使用变得更加轻松。
几年前我还画了一个关于 `dig` 的 [zine 页][1],但我想写这篇文章来包括更多的信息。
### 两种类型的 dig 参数:查询和格式化
有两种主要的参数可以传递给 `dig`
1. 告诉 `dig` **要进行什么 DNS 查询的参数**
2. 告诉 `dig` 如何 **格式化响应的参数**
首先,让我们看一下查询选项。
### 主要的查询选项
你通常想控制 DNS 查询的 3 件事是:
1. **名称**(如 `jvns.ca`)。默认情况下,查询的是空名称(`.`)。
2. **DNS 查询类型**(如 `A``CNAME`)。默认是 `A`
3. 发送查询的 **服务器**(如 `8.8.8.8`)。默认是 `/etc/resolv.conf` 中的内容。
其格式是:
```
dig @server name type
```
这里有几个例子:
* `dig @8.8.8.8 jvns.ca` 向谷歌的公共 DNS 服务器(`8.8.8.8`)查询 `jvns.ca`
* `dig ns jvns.ca``jvns.ca` 进行类型为 `NS` 的查询。
### `-x`:进行反向 DNS 查询
我偶尔使用的另一个查询选项是 `-x`,用于进行反向 DNS 查询。下面是输出结果的样子。
```
$ dig -x 172.217.13.174
174.13.217.172.in-addr.arpa. 72888 IN PTR yul03s04-in-f14.1e100.net。
```
`-x` 不是魔术。`dig -x 172.217.13.174` 只是对 `174.13.217.172.in-addr.arpa.` 做了一个 `PTR` 查询。下面是如何在不使用 `-x 的情况下进行完全相同的反向 DNS 查询。
```
$ dig ptr 174.13.217.172.in-addr.arpa.
174.13.217.172.in-addr.arpa. 72888 IN PTR yul03s04-in-f14.1e100.net。
```
我总是使用 `-x`,因为它可以减少输入。
### 格式化响应的选项
现在,让我们讨论一下你可以用来格式化响应的参数。
我发现 `dig` 默认格式化 DNS 响应的方式对初学者来说是很难接受的。下面是输出结果的样子:
```
; <<>> DiG 9.16.20 <<>> -r jvns.ca
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28629
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: d87fc3022c0604d60100000061ab74857110b908b274494d (good)
;; QUESTION SECTION:
;jvns.ca. IN A
;; ANSWER SECTION:
jvns.ca. 276 IN A 172.64.80.1
;; Query time: 9 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat Dec 04 09:00:37 EST 2021
;; MSG SIZE rcvd: 80
```
如果你不习惯看这个,你可能需要花点时间来筛选,找到你要找的 IP 地址。而且大多数时候,你只对这个响应中的一行感兴趣(`jvns.ca. 180 IN A 172.64.80.1`)。
下面是我最喜欢的两种方法,可以使 `dig` 的输出更容易管理:
#### 方式 1 : +noall +answer
这告诉 `dig` 只打印 DNS 响应中的“答案”部分的内容。下面是一个查询 `google.com``NS` 记录的例子:
```
$ dig +noall +answer ns google.com
google.com. 158564 IN NS ns4.google.com.
google.com. 158564 IN NS ns1.google.com.
google.com. 158564 IN NS ns2.google.com.
google.com. 158564 IN NS ns3.google.com.
```
这里的格式是:
```
NAME TTL TYPE CONTENT
google.com 158564 IN NS ns3.google.com.
```
顺便说一下:如果你曾经想知道 `IN` 是什么意思,它是指“查询类”,代表“<ruby>互联网<rt> internet</rt></ruby>”。它基本上只是上世纪 80、90 年代的遗物,当时还有其他网络与互联网竞争,如“<ruby>混沌网络<rt>chaosnet</rt></ruby>”。
#### 方式 2+short
这就像 `dig +noall +answer`,但更短:它只显示每条记录的内容。比如说:
```
$ dig +short ns google.com
ns2.google.com.
ns1.google.com.
ns4.google.com.
ns3.google.com.
```
### 你可以在 `digrc` 中设置格式化选项
如果你不喜欢 `dig` 的默认格式(我就不喜欢!),你可以在你的主目录下创建一个 `.digrc` 文件,告诉它默认使用不同的格式。
我非常喜欢 `+noall +answer` 格式,所以我把 `+noall +answer` 放在我的 `~/.digrc` 中。下面是我使用该配置文件运行 `dig jvns.ca` 时的情况。
```
$ dig jvns.ca
jvns.ca. 255在172.64.80.1中
```
这样读起来就容易多了!
如果我想回到所有输出的长格式(我有时会这样做,通常是因为我想看响应的权威部分的记录),我可以通过运行再次得到一个长答案。
```
$ dig +all jvns.ca
```
### dig +trace
我使用的最后一个 `dig` 选项是 `+trace`。`dig +trace` 模仿 DNS 解析器在查找域名时的做法 —— 它从根域名服务器开始,然后查询下一级域名服务器(如 `.com`),以此类推,直到到达该域名的权威域名服务器。因此,它将进行大约 30 次 DNS 查询。(我用 `tcpdump` 检查了一下,对于每个根域名服务器的 `A` / `AAAA` 记录它似乎要进行 2 次查询,所以这已经是 26 次查询了。我不太清楚它为什么这样做,因为它应该已经有了这些 IP 的硬编码,但它确实如此。)
我发现这对了解 DNS 的工作原理很有用,但我不认为我用它解决过问题。
### 为什么要用 dig
尽管有一些更简单的工具来进行 DNS 查询(如 `dog``host`),我发现自己还是坚持使用 `dig`
我喜欢 `dig` 的地方实际上也是我 **不喜欢** `dig` 的地方 —— 它显示了大量的细节!
我知道,如果我运行 `dig +all`,它将显示 DNS 响应的所有部分。例如,让我们查询 `jvns.ca` 的一个根名称服务器。响应有 3 个部分,我可能会关心:回答部分、权威部分和附加部分。
```
$ dig @h.root-servers.net. jvns.ca +all
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18229
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 9
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;jvns.ca. IN A
;; AUTHORITY SECTION:
ca. 172800 IN NS c.ca-servers.ca.
ca. 172800 IN NS j.ca-servers.ca.
ca. 172800 IN NS x.ca-servers.ca.
ca. 172800 IN NS any.ca-servers.ca.
;; ADDITIONAL SECTION:
c.ca-servers.ca. 172800 IN A 185.159.196.2
j.ca-servers.ca. 172800 IN A 198.182.167.1
x.ca-servers.ca. 172800 IN A 199.253.250.68
any.ca-servers.ca. 172800 IN A 199.4.144.2
c.ca-servers.ca. 172800 IN AAAA 2620:10a:8053::2
j.ca-servers.ca. 172800 IN AAAA 2001:500:83::1
x.ca-servers.ca. 172800 IN AAAA 2620:10a:80ba::68
any.ca-servers.ca. 172800 IN AAAA 2001:500:a7::2
;; Query time: 103 msec
;; SERVER: 198.97.190.53#53(198.97.190.53)
;; WHEN: Sat Dec 04 11:23:32 EST 2021
;; MSG SIZE rcvd: 289
```
`dog` 也显示了 “附加” 部分的记录,但它没有明确指出哪个是哪个(我猜 `+` 意味着它在附加部分?) ,但它似乎没有显示“权威”部分的记录。
```
$ dog @h.root-servers.net. jvns.ca
NS ca. 2d0h00m00s A "c.ca-servers.ca."
NS ca. 2d0h00m00s A "j.ca-servers.ca."
NS ca. 2d0h00m00s A "x.ca-servers.ca."
NS ca. 2d0h00m00s A "any.ca-servers.ca."
A c.ca-servers.ca. 2d0h00m00s + 185.159.196.2
A j.ca-servers.ca. 2d0h00m00s + 198.182.167.1
A x.ca-servers.ca. 2d0h00m00s + 199.253.250.68
A any.ca-servers.ca. 2d0h00m00s + 199.4.144.2
AAAA c.ca-servers.ca. 2d0h00m00s + 2620:10a:8053::2
AAAA j.ca-servers.ca. 2d0h00m00s + 2001:500:83::1
AAAA x.ca-servers.ca. 2d0h00m00s + 2620:10a:80ba::68
AAAA any.ca-servers.ca. 2d0h00m00s + 2001:500:a7::2
```
`host` 似乎只显示“答案”部分的记录(在这种情况下没有得到记录):
```
$ host jvns.ca h.root-servers.net
Using domain server:
Name: h.root-servers.net
Address: 198.97.190.53#53
Aliases:
```
总之,我认为这些更简单的 DNS 工具很好(我甚至自己做了一个 [简单的网络 DNS 工具][2]),如果你觉得它们更容易,你绝对应该使用它们,但这就是为什么我坚持使用 `dig` 的原因。`drill` 的输出格式似乎与 `dig` 的非常相似,也许 `drill` 更好!但我还没有真正试过它。
### 就这些了
我最近才知道 `.digrc`,我非常喜欢使用它,所以我希望它能帮助你们中的一些人花更少的时间来整理 `dig` 的输出!
有人在 Twitter 上指出,如果有办法让 `dig` 显示响应的简短版本,其中也包括响应的状态(如 `NOERROR`、`NXDOMAIN`、`SERVFAIL` 等),那就更好了!我同意这个观点!不过我在手册中没有找到这样的选项。
--------------------------------------------------------------------------------
via: https://jvns.ca/blog/2021/12/04/how-to-use-dig/
作者:[Julia Evans][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://jvns.ca/
[b]: https://github.com/lujun9972
[1]: https://wizardzines.com/comics/dig/
[2]: https://dns-lookup.jvns.ca/

View File

@ -0,0 +1,377 @@
[#]: subject: "19 Absolute Simple Things About Linux Terminal Every Ubuntu User Should Know"
[#]: via: "https://itsfoss.com/basic-terminal-tips-ubuntu/"
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14064-1.html"
关于 Ubnutu Linux 终端的必知必会的 19 件超简单的事情
======
终端常常让新用户感到害怕。然而,一旦你了解了它,你就会逐渐开始喜欢上它。好吧,这事往往发生在大多数 Linux 用户身上。
即使你使用 Ubuntu 作为桌面系统,你可能有时也要进入终端。新用户往往对很多事情毫无头绪,在这种情况下,一些基本的 Linux 命令的知识总是有帮助的,但这篇文章不是关于这个。
这篇文章的重点是解释关于使用终端的一些小的、基本的、经常被忽视的东西。这应该可以帮助 Ubuntu 桌面的新用户了解终端,并以更高的效率使用它。
![][1]
你看到的“<ruby>终端<rt>terminal</rt></ruby>”只是 [各种终端应用程序][2] 中的一个。毕竟终端只是一个 GUI 工具,它可以让你进入一个可以运行命令的 Shell 。
不同的终端应用程序(正确地应该被称为“<ruby>终端仿真器</rt></ruby>”)看起来有些稍微不同的功能和特点(如不同的键盘快捷键、颜色组合、字体等)。
本文特别关注 Ubuntu 的默认终端,它是 “GNOME 终端”的一个实现。
### 1、用键盘快捷方式打开终端
你可以 [在 Ubuntu 中打开终端][3],在系统菜单中寻找到它。然而,我最喜欢的方式是使用 [Ubuntu 中的键盘快捷键][4]`Ctrl+Alt+T` 。
### 2、终端、Shell、提示符和命令行
在你看其他内容之前,你应该知道这些不同术语之间的区别,这些术语经常被(不正确地)互换使用。
![终端、提示符和命令][5]
“终端”是图形化的应用程序,默认情况下运行 Shell。
Shell 很难与终端分开进行可视化。终端运行着一个 Shell在 Ubuntu 中通常默认为 Bash shell。和终端一样也有各种 Shell。Bash 是其中最受欢迎的,也是大多数 Linux 发行版上的默认 Shell。
你输入的命令是由 Shell 解释的。通常人们认为他们在终端看到的屏幕就是 Shell。这适合理解这个概念。
“提示符”是你在输入命令的空格前看到的东西。对于提示符没有固定的标准。在一些旧的终端中,只是在你可以输入命令的地方有一个闪烁的光标而已。在 Ubuntu 终端中,提示符给了你一些信息,你会在本文后面的章节中看到这些信息的细节。
“命令行”不是 Linux 特有的东西。很多操作系统都有一个命令行界面。许多编程语言也都有命令行界面。它是一个术语,用来指你可以运行和执行命令的界面。
Luke Smith 的 [这个视频](https://www.youtube.com/embed/hMSByvFHOro) 用例子详细解释了它。言归正传,我在这里就不多说了。
### 3、了解提示符
你现在已经知道了。你在输入命令的空格前看到的东西叫做“提示符”。它是可配置的,在不同的发行版、终端应用程序和 Shell 中提示符看起来是不同的。
Ubuntu 终端对提示符进行了配置,让你看到一些东西。你可以一目了然地得到以下信息:
* 用户名
* 主机名(计算机的名称)
* 当前工作目录
还有一些你可能想知道的惯例。
提示符中的冒号(`:`)是一个分隔符,常用来区分主机名和当前位置。
波浪号(`~`)表示当前用户的主目录。
对于普通用户,提示符以美元(`$`)符号结束。对于 root 用户来说,它以英镑或哈希(`#`)符号结束。因此有一个笑话说,英镑比美元强。
![][7]
你是否注意到,当我切换到 root 用户时命令提示符看起来不一样没有任何颜色这又一次提醒了我提示符不是一个标准是要明确配置的。对于普通用户来说Ubuntu 对提示符的配置与 root 用户不同。
像这样的简单信息间接地帮助了我们。在一个多用户环境中,你可以很容易地弄清楚你现在使用的是哪个用户,以及它是否是 root 用户。其显示的路径位置也是有帮助的。
![][8]
### 4、目录和文件
在 Linux 中你听到最多的两个术语是目录和文件。
你可能知道什么是文件,但你可能会对“<ruby>目录<rt>directory</rt></ruby>”这个术语感到困惑。目录就是“<ruby>文件夹<rt>folder</rt></ruby>”。它把文件和文件夹放在里面。
你可以进入目录,但你不能进入文件。当然,你可以读取文件。
![][9]
你可以用“文件夹”这个词来表示目录,应该没有问题。然而,最好使用“目录”,因为你会在各种教程、文件等中看到引用这个词。你甚至会发现像 `rmdir`、`mkdir` 这样的命令,暗示它们是处理目录的。
补充说明:在 Linux 中,所有东西都是文件。甚至目录也是一种特殊的文件,里面有文件和目录的地址。我已经在我的关于 [硬链接的文章][10] 中解释了这一点。如果你想了解更多关于这个主题的信息,可以参考一下。
### 5、路径绝对路径和相对路径
[Linux 中的目录结构][11] 类似于一棵树的根。所有的东西都从根部开始,并从那里向外扩散。
如果你要访问一个文件或目录,你需要通过提供它的“路径”来说明如何到达它的位置。这个路径是由目录名和分隔符(`/`)组成的。如果一个路径以 `/`(即根)开头,它就是一个绝对路径,否则就是一个相对路径。
![路径][12]
绝对路径从根开始,可以很容易地从系统的任何地方引用。相对路径则取决于你在目录结构中的当前位置。
![绝对路径与相对路径][13]
如果你在 `/home/abhishek` 这个位置,有一个名为 `scripts` 的目录,里面有一个文件 `my_script.sh`,你想知道这个文件的路径,它的绝对路径将是:
```
/home/abhishek/scripts/my_script.sh
```
它的相对路径将是:
```
scripts/my_script.sh
```
如果你改变所在位置,文件的绝对路径保持不变。但是,相对路径会改变,因为它是相对于你当前的路径而言的。
![相对路径随位置变化但绝对路径保持不变的真实例子][14]
### 6、 . 和 ..
在使用 Linux 终端时,你可能经常会遇到 `.``..` 符号。
单点(`.`)表示当前目录。
双点(`..`)表示父目录(比当前位置高一个目录)。
你经常在相对路径中使用双点(`..`),或者用于改变目录。单点(`.`)也用于相对路径中,但更重要的是,你可以在指定当前位置的命令中使用它。
![ . 和 .. 的使用][15]
### 7、理解命令的结构
一个典型的 Linux 命令由一个命令名和选项及参数组成。
```
命令名 [选项] 参数
```
“选项”,顾名思义,是可选的。当使用时,它们可能会根据其属性来改变输出。
例如,`cat` 命令是用来查看文件的。你可以添加选项 `-n`,它也会显示行数。
选项不是标准化的。通常情况下,它们是由单字母和单破折号(`-`)组成的。它们也可能是两个破折号(`--`)和一个单词的形式。
同样的选项在不同的命令中可能有不同的含义。如果你在 `head` 命令中使用 `-n`,表明你想看行数,而不是行号。
![同样的选项 -n 在 cat 和 head 命令中有不同的用途][16]
在命令文档中,**如果你看到方括号(`[]`)之间有什么东西,它表示括号中的内容是可选的**。
同样地,“参数”也没有标准化。有些命令希望用文件名作为参数,有些则希望用目录名或正则表达式。
### 8、获得帮助
当你开始使用命令时,你可能会记住一些经常使用的命令的选项,但你根本不可能记住所有命令的所有选项。
为什么呢?因为一条命令可能有十多个或二十多个选项。
那么,当你无法记住所有的选项时,你该怎么办呢?你需要“帮助”。我所说的帮助,并不是指在 [Linux 论坛][17] 上提问。我指的是使用命令的帮助选项。
每个标准的 Linux 命令都有一个快速帮助页面,可以用 `-h``—help` 来访问。
```
命令名 -h
```
它可以让你快速了解命令的语法、常用选项及其含义,在某些情况下还有命令的例子。
![cat 命令的帮助页][18]
如果你需要更多的帮助,你可以参考 [手册页][19],即命令的手册。
```
man 命令名
```
它涉及到所有的细节,阅读和理解起来可能会让人难以承受。另外,你也可以在网上搜索 “Linux 中 xyz 命令的例子”。
### 9、Linux 是区分大小写的
Linux 是区分大小写的。你在终端中输入的所有东西都是区分大小写的。如果你不考虑这一点,你会经常遇到 “[bash: command not found][20]” 或 “file not found” 的错误。
在主目录中,你的所有文件夹名称以大写字母开头的。如果你要切换到 `Documents` 目录,你必须把第一个字母保持为 `D`,而不是 `d`
![Linux 是区分大小写的][21]
你可以有两个分别名为 `file.txt``File.txt` 的文件,因为对于 Linux 来说,`file` 和 `File` 是不一样的。
### 10、运行 Shell 脚本
你可以通过指定 Shell 来 [运行一个 Shell 脚本][22]
```
bash script.sh
```
或者你可以像这样执行 Shell 脚本。
```
./script.sh
```
第二种方法只有在文件有执行权限时才会起作用。更多关于 [Linux 文件权限参考这里][23]。
![运行bash脚本][24]
### 11、使用制表符补完而不是全部输入
Ubuntu 的终端已经预先配置了制表符补完功能。这意味着如果你开始在终端上输入,然后点击 `tab` ,它会尝试自动完成它,或者在有多个可能的匹配时提供选项。
它既适用于命令,也适用于参数和文件名。
![Tab 完成示例][25]
这可以节省大量的时间,因为你不需要把所有的东西都写完整。
### 12、Ctrl+C 和 Ctrl+V 不是用来在终端复制粘贴的。
`Ctrl+C`、`Ctrl+V` 可能是复制粘贴的“通用”键盘快捷键,但它在 Linux 终端中不行。
Linux 继承了 UNIX 的很多东西,在 UNIX 中,`Ctrl+C` 被用来停止一个正在运行的进程。
由于 `Ctrl+C` 已经被用于停止一个命令或进程,所以它不能再用于复制粘贴。
### 13、你当然可以在终端复制粘贴
别担心。你仍然可以 [在终端中复制粘贴][26]。同样,复制-粘贴的键盘快捷键没有固定的规则,因为它取决于你使用的终端程序或你的配置。
在 Ubuntu 终端中,复制的默认键盘快捷键是 `Ctrl+Shift+C`,粘贴则是 `Ctrl+Shift+V`
你可以使用 `Ctrl+C` 从终端外(如网页浏览器)复制文本和命令,并使用 `Ctrl+Shift+V` 将其粘贴。同样,你可以高亮显示文本,用 `Ctrl+Shift+C` 从终端复制文本,用 `Ctrl+V` 粘贴到编辑器或其他应用程序。
### 14、避免在终端中使用 Ctrl+S
另一个初学者常犯的错误是使用“通用”的 `Ctrl+S` 键盘快捷键来保存。如果你在终端中使用 `Ctrl+S`,你的终端会被“冻结”。
这来自于传统的计算机,在那里没有向上滚动的滚动条。因此,如果有大量的输出行,`Ctrl+S` 被用来停止屏幕,以便可以阅读屏幕上的文字。
你可以用 `Ctrl+Q` 来解除终端的冻结。但还是要避免在终端中使用 `Ctrl+S`
### 15、注意命令例子中的 $ 和 <>
如果你参考一些在线教程或文档,你会看到一些命令例子中的文本在 `<>` 内。这表明你需要用一个合适的值来替换与 `<``>` 一起的内容。
例如,如果你看到一个这样的命令:
```
grep -i <搜索内容> <文件名>
```
你应该把 `<搜索内容>``<文件名>` 换成各自的实际值。LCTT 译注:不要输入 `<``>`
这表明该命令只是一个例子,你必须用实际值来完成它。
这里需要注意的另一件事是,有些教程显示的命令例子是以 `$` 开头的,比如这样:
![命令开头的美元符号][27]
这是表明它们是命令(而不是命令输出)的一种方式。但是,许多新的 Linux 用户把前面的 `$` 和实际的命令一起复制,当他们把它粘贴到终端时,显然会出现错误。
所以,当你复制一些命令时,如果开头有 `$`,就不要复制它。你也应该避免复制随机网站的随机命令,特别是当你不了解它的作用时。
既然你正在阅读关于复制命令的文章,当你看到多行的命令在一起时,你应该一次复制一行,然后逐一运行。
![避免将多个命令复制在一起][28]
下一节将告诉你如何一次性运行多个命令。
### 16、你可以同时运行多个命令
你可以 [一次运行多个命令][29] 而不需要用户干预。作为 Ubuntu 用户,你可能已经在这个命令的形式中看到了它:
```
sudo apt update && sudo apt upgrade
```
在终端中,有三种不同的方法来组合命令:
`;` | `命令 1 ; 命令 2` | 先运行命令 1再运行命令 2
---|---|---
`&&` | `命令 1 && 命令 2` | 只有命令 1 成功结束才运行命令 2
`||` | `命令 1 || 命令 2` | 只有命令 1 失败时才运行命令 2
### 17、停止一个正在运行的 Linux 命令
如果一个 Linux 命令在前台运行,也就是说,它正在显示输出,或者说你不能输入任何其他命令,你可以用 `Ctrl+C` 键停止它。
我以前讨论过它。它来自于 UNIX 的传统计算时代。
所以,下次你看到像 `top``ping` 这样的命令在持续运行,而你想恢复终端控制,只需使用这两个键:`Ctrl+C`。
![在 Linux 中用 Ctrl+C 停止一个正在运行的程序][30]
### 18、清除终端
当我发现我的屏幕被不同类型的输出弄得太杂乱时,我会在开始其他工作之前清除终端屏幕。这只是一种习惯,但我发现它很有帮助。
要清除终端,请使用以下命令:
```
clear
```
你也可以使用 [终端快捷键][31] `Ctrl+L`
### 19、退出终端
在少数情况下,我看到有人关闭终端程序来退出会话。你可以这样做,但退出终端的正确方法是使用退出命令:
```
exit
```
你也可以使用 Ubuntu 终端的键盘快捷键 `Ctrl+D`
### 总结
即使你对终端完全陌生,你也可以在终端中做很多额外的事情。你可以:
* [运行有趣的 Linux 命令][32]
* [在终端中浏览互联网][33]
* [在终端中玩游戏][34]
如果你想了解更多,[看看这些 Linux 命令技巧,可以像专家一样使用终端][35]。
说实话,要谈的东西太多了。很难确定哪些应该被认为是绝对的基础知识,哪些应该被排除在外。例如,我想避免包括关于路径的信息,因为它需要详细的解释,但在一个地方讲得太详细可能会让人不知所措。
我已经过了在终端中的小东西曾经让我困惑的阶段。如果你是 Linux 终端的新手,或者你还记得你最初使用 Linux 时的挣扎,请随时提出建议对列表进行补充。我可能会根据你的意见更新这个列表。
如果你学到了新的东西,请在评论中提及。我想看看这篇文章是否值得一读 😁
--------------------------------------------------------------------------------
via: https://itsfoss.com/basic-terminal-tips-ubuntu/
作者:[Abhishek Prakash][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/abhishek/
[b]: https://github.com/lujun9972
[1]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/12/ubuntu-terminal-basic-tips.png?resize=800%2C450&ssl=1
[2]: https://itsfoss.com/linux-terminal-emulators/
[3]: https://itsfoss.com/open-terminal-ubuntu/
[4]: https://itsfoss.com/ubuntu-shortcuts/
[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/12/linux-terminal-introduction.png?resize=800%2C450&ssl=1
[6]: https://www.youtube.com/c/itsfoss?sub_confirmation=1
[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/12/understanding-prompt-ubuntu-terminal.png?resize=800%2C346&ssl=1
[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/12/learning-prompt-ubuntu-terminal.png?resize=800%2C346&ssl=1
[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/12/directory-files-linux.png?resize=800%2C346&ssl=1
[10]: https://linuxhandbook.com/hard-link/
[11]: https://linuxhandbook.com/linux-directory-structure/
[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/12/path-linux.webp?resize=800%2C250&ssl=1
[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/12/absolute-vs-relative-path-linux.webp?resize=800%2C500&ssl=1
[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/12/absolute-relative-path-real-examples-800x346.png?resize=800%2C346&ssl=1
[15]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/12/use-of-single-and-double-dot-in-Linux.png?resize=732%2C272&ssl=1
[16]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/12/command-structure-example.png?resize=732%2C462&ssl=1
[17]: https://itsfoss.community/
[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/12/cat-command-help-page.png?resize=732%2C614&ssl=1
[19]: https://itsfoss.com/linux-man-page-guide/
[20]: https://itsfoss.com/bash-command-not-found/
[21]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/12/linux-is-case-sensitive.png?resize=732%2C253&ssl=1
[22]: https://itsfoss.com/run-shell-script-linux/
[23]: https://linuxhandbook.com/linux-file-permissions/
[24]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/12/run-bash-script.png?resize=732%2C272&ssl=1
[25]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/12/tab-completion-ubuntu.png?resize=732%2C272&ssl=1
[26]: https://itsfoss.com/copy-paste-linux-terminal/
[27]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/12/dollar-symbol-at-the-beginning-of-command.png?resize=765%2C256&ssl=1
[28]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/12/avoid-copying-multiple-commands.png?resize=743%2C242&ssl=1
[29]: https://itsfoss.com/run-multiple-commands-linux/
[30]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/12/stop-running-program-linux.png?resize=800%2C385&ssl=1
[31]: https://linuxhandbook.com/linux-shortcuts/
[32]: https://itsfoss.com/funny-linux-commands/
[33]: https://itsfoss.com/terminal-web-browsers/
[34]: https://itsfoss.com/best-command-line-games-linux/
[35]: https://itsfoss.com/linux-command-tricks/

View File

@ -0,0 +1,105 @@
[#]: subject: "GNOME has a Brand New Text Editor and it is Likely to Replace Gedit in GNOME 42"
[#]: via: "https://news.itsfoss.com/gnome-text-editor-to-replace-gedit/"
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14060-1.html"
GNOME 有了一个全新的“文本编辑器”,它会成为默认编辑器吗?
======
> GNOME 新的“文本编辑器”正在增加新的功能,有可能在下一个 GNOME 桌面版本中取代 Gedit。
![](https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/gnome-text-editor-gnome-42.jpg?w=1200&ssl=1)
Gedit 是 GNOME 桌面环境的默认文本编辑器。它是一个受欢迎的编辑器,也是一个便捷的文本编辑器,以简单的用户界面提供了所有的基本功能。
但是,随着 GNOME 的发展有了一个新的“文本编辑器”LCTT 译注:没错,就叫“<ruby>文本编辑器<rt>Text Editor</rt></ruby>”),虽然它还没有取代 Gedit。但让我们来看看它的下一个版本在即将到来的 GNOME 42 版本中,它进行了大量改进,有可能取代 Gedit。
[Christian Hergert][1] 在他的 [博文][2] 和 Twitter 上分享了它的很多细节。
在这篇文章中,让我介绍一下 GNOME 文本编辑器的那些新改进。
### 偏好设置对话框卷土重来
作为其上一个版本中的实验的一部分,偏好设置对话框被移到了侧边栏,
![][3]
但是,事实证明,它并不那么方便和好看。
因此,偏好设置对话框又回来了(如下图所示),其目的是与其他 GNOME 应用程序的设计语言相融合,而不显得笨拙。
![鸣谢Christian Hergert][4]
在我看来,这很不错,与侧边栏的实施相比,应该用户体验更好。
### 改进的 “弹出式” 打开功能
![鸣谢Christian Hergert][5]
当你试图打开一个最近的文件或搜索某个东西时,会出现一个弹出式窗口来快速查找任何最近的文件,而不需要启动一个新的对话框。
这节省了时间,是一个不错的功能。在即将发布的“文本编辑器”中还进行了一些细微的改进,显得更苗条、更便捷。
换句话说,你会发现它改进了键盘导航,只需按下 `Ctrl + K`,就可以寻找你想要的文件。
### 引入重新着色支持
即将发布的 GNOME 文本编辑器可以让你轻松地应用不同的风格模式(或主题),而改变整个应用程序。
博文中提到了更多关于它的内容:
> 本周最直观的工作是引入了重新着色支持。它建立在 [libadwaita][6] 之上,并使用一个 CSS 提供者来覆盖主题中的颜色。我希望在不远的将来libadwaita 会有一个重新着色的 API为我们提供这个功能。
下面是一个应用样式表时的例子:
![鸣谢Christian Hergert][7]
它有一些自带的主题,而且你还可以找到更多的主题。你可以在 Christian 的博客文章中找到更多截图:
![鸣谢Christian Hergert][12]
你可以看看 [博客文章中的更多内容][2],还可以发现一些其他的技术变化,和一个由 Christian 设计的 vim 仿真的复活节彩蛋。
### GNOME “文本编辑器”会取代 Gedit 吗?
到现在为止,官方还没有确认这一点。然而,看一下 [Gedit 的开发活动][8](目前有 41 个 alpha 版本),在过去的几个版本中没有明显增加变化,这可能意味着新的 GNOME “文本编辑器”将在GNOME 42 中取代 Gedit。
事实上,正如其 [GitLab 页面][9] 中所提到的GNOME 的新文本编辑器计划正式取代 Gedit但它会在 GNOME 42 中发生吗?它的开发者 Christian Hergert 在他的博客中提到:
> 随着我们为 GNOME 42 的准备工作而进行的竞赛,[文本编辑器][9] 在过去的几周里已经成型。
这可以被认为是一个暗示GNOME 42 可能会包含这个新的文本编辑器。
不仅仅是 GNOME[KDE 也对 Kate 进行了改造][10],增加了针对开发者的功能。你将会有很多 [开源的文本编辑器][11] 可以选择。
当它发布时,我们将继续关注它。你怎么看?
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/gnome-text-editor-to-replace-gedit/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://twitter.com/hergertme
[2]: https://blogs.gnome.org/chergert/2021/12/03/text-editor-happenings/
[3]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/gnome-text-editor-old-preferences.png?w=870&ssl=1
[4]: https://i1.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/gnome-text-editor-preferences.png?resize=1355%2C2048&ssl=1
[5]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/gnome-text-editor-popover.jpg?w=1200&ssl=1
[6]: https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/
[7]: https://i1.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/gnome-text-editor-style-scheme.png?w=1200&ssl=1
[8]: https://gitlab.gnome.org/GNOME/gedit
[9]: https://gitlab.gnome.org/GNOME/gnome-text-editor
[10]: https://news.itsfoss.com/kate/
[11]: https://itsfoss.com/best-modern-open-source-code-editors-for-linux/
[12]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/gnome-text-editor-style-scheme-1.png?w=1200&ssl=1

View File

@ -0,0 +1,122 @@
[#]: subject: "Upcoming CutefishOS Could Topple Deepin as the Most Beautiful Linux Distro"
[#]: via: "https://news.itsfoss.com/cutefishos-intro/"
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14058-1.html"
即将推出的 CutefishOS 可能取代深度成为最漂亮的 Linux 发行版
======
> CutefishOS 能否以其美丽而简单的方式提供良好的 Linux 桌面体验?
![](https://img.linux.net.cn/data/attachment/album/202112/07/104017u0wx6s8mfgl4xlhu.png)
CutefishOS 是一个相对较新的 Linux 发行版,捆绑了它自己的桌面环境(即 CutefishDE
它还不是一个稳定的版本,尚处在测试阶段。
然而随着其最新的测试版v0.6)的发布,它似乎正在成为现有 Linux 发行版的一个有前途的替代方案,专注于简单和美丽。
在这里,我将在你自己尝试之前强调一些关于它的事情。
### CutefishOS 概览
![][1]
请注意,它仍然处于早期开发阶段。因此,如果你打算稍后尝试,你应该对有错误和故障有心理准备。
CutefishOS 基于 [Debian 11 “Bullseye”][2],因此,它应该适用于各种用户,包括 Linux 新用户。
值得注意的是CutefishOS 并不是是专门针对资深用户的。因此,如果你正在寻找一个能提供精细控制和马上就可以定制的发行版,这并不适合你。
重要的是CutefishOS 的开发者希望呈现一个令人耳目一新、无需费心的 Linux 发行版。
当然,如果你想要一个融合了可靠性和独特桌面体验的 Linux我们会推荐你安装 [elementary OS][3]、[Pop!_OS][4]、[Zorin OS][5] 或 [深度操作系统][6]。
而且CutefishOS 计划成为同一类选择中的产品之一,这是一件好事。
我们有大量的 Linux 发行版,但并非所有的发行版都在现代 UI 和可用性方面处于同一水平。因此,如果 CutefishOS 能够达成其目标,这可能会成为 Linux 桌面用户的一个有用选择。
### 它有什么不同?
**用户体验不同。**
是的,与 Windows 和 macOS 相比Linux 发行版一直试图成为最好的桌面体验之一。
![][7]
而且CutefishOS 试图通过引入受到 macOS 启发的桌面体验(它不是第一个这样做的发行版)来加入这场比赛,但方式不同。
它的桌面环境DE是使用 Qt 和基本的 KDE 框架构建的,以此搭建出来了一个好看且资源高效的 DE。
CutefishOS 还提供了一个开箱即用的全局菜单功能。换句话说,你的应用程序的每一个选项都可以直接从状态栏中找到,这使得你的应用程序窗口看起来很干净,并有可能节省一些屏幕空间。
![][8]
虽然你也有可能在 GNOME 或其他桌面环境上实现这种功能,但你得投入一些时间来使其工作。
默认情况下,它呈现出细微的动画效果,但你可以选择使用魔法灯效果,这与 [Zorin OS 16 引入的 Jelly 模式][9] 相似。CutefishOS 的应用程序,如计算器、屏幕截图、文件和视频播放器,都是为该桌面环境量身定做的,给你提供了统一的体验。
你还可以选择深色/浅色模式的主题,同时可以禁用系统效果,以尽量减少对性能的影响(如果你使用的是旧电脑)。
说到定制,你可以定制 Dock 的位置,将其转换为一个完整的 Dockbar并选择在暗色模式下调暗墙纸。我想说的是这些基本的定制选项不会破坏你的体验但可以让你调整一些东西。
你还可以在状态栏中找到切换开关(类似于 iOS 或其他手机)来启用/禁用 Wi-Fi / 蓝牙和暗色模式。
![][10]
至于功能,它目前已经提供了基本的功能,如文件管理器的拖放支持、电源管理、锁屏中的媒体控制,以及其他一些功能。
考虑到他们的目标是一个简单和易于使用的发行版,你不应该期望太多。
![][11]
### 要不要试试 CutefishOS
我测试了 0.6 测试版,它大部分工作正常,直到我启动了预装的 Chromium 浏览器,整个显示都出现了问题。
这可能只是我在我的虚拟机上的问题。所以,如果你有兴趣尝试,我建议在虚拟机或测试机上测试一下,而不是想把它作为日常驱动使用。
- [CutefishOS][12]
不知何故CutefishOS 很像 [JingOS][13],这是一个为 Linux 平板电脑 [JingPad][14] 开发的新发行版。但是他们并不是同一个开发商,尽管 CutefishOS 的网站提到 JingOS 是朋友。
它可能是 “又一个漂亮的发行版” 吗?只有时间才能证明。
它从一开始就看起来很有不错,如果开发者有能力提供一个有竞争力的桌面体验,我们或许可以在未来几年看到它作为 [最漂亮的 Linux 发行版之一][15] 冒出来。
毕竟,我们都想真正看到 “Linux 桌面之年”,对吗?让我们看看是什么发行版为我们做到了这一点!
你对 CutefishOS 有什么看法?请在下面的评论中告诉我你的想法。
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/cutefishos-intro/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/cutefish-os.png?w=1355&ssl=1
[2]: https://news.itsfoss.com/debian-11-feature/
[3]: https://news.itsfoss.com/elementary-os-6-release/
[4]: https://pop.system76.com
[5]: https://news.itsfoss.com/zorin-os-16-release/
[6]: https://news.itsfoss.com/deepin-linux-20-2-2-release/
[7]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/cutefish-os-appearance.png?w=950&ssl=1
[8]: https://i1.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/cutefish-os-global-menu.png?w=823&ssl=1
[9]: https://news.itsfoss.com/zorin-os-16-features/
[10]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/system-tray-toggles.png?w=465&ssl=1
[11]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/cutefish-os-about.png?w=999&ssl=1
[12]: https://en.cutefishos.com
[13]: https://en.jingos.com/
[14]: https://itsfoss.com/jingpad-a1-review/
[15]: https://itsfoss.com/beautiful-linux-distributions/

View File

@ -0,0 +1,93 @@
[#]: subject: "Gaphor: Open Source Graphical Modeling Tool"
[#]: via: "https://itsfoss.com/gaphor-modeling-tool/"
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14079-1.html"
Gaphor开源的图形化建模工具
======
![](https://img.linux.net.cn/data/attachment/album/202112/13/231534fobo72taxam7f2ma.jpg)
Gaphor 是一个自由开源的建模应用,支持各种建模语言,如 UML、[SysML][1]、RAAML 和 C4。
不知道“<ruby>建模语言<rt>modeling language</rt></ruby>”这个词?基本上,它是一组可以用来创建设计和构造结构的指令。它可以是文字的,也可以是图形的。
图形化的更容易看,也更容易弄清楚项目的各个组成部分是如何相互关联的。
你见过流程图或顺序图吗?那些也是一种最简单形式的图形建模。
![Sequence diagram example][2]
有各种建模语言,它们被用于软件开发、系统工程、物理学、项目管理等方面。
### 用于 UML、SysML 等的 Gaphor
[Gaphor][3] 使用 UML、SysML 和 RAAML OMG 标准。它还包括对 C4 模型的支持,用于软件架构的可视化。
它不仅仅是一个 [绘图工具][4]。它实现了一个完全兼容的 UML 2 数据模型。你可以用 Gaphor 创建高度复杂的模型。
![][5]
用 Python 编写的 Gaphor 在 Apache 2 许可证下是完全开源的。你可以在 [其 GitHub 仓库][6] 找到它的所有源代码。它是一个跨平台的工具,可以安装在 Linux、Windows 和 macOS 上。
你可以以 PDF、PNG、SVG 和 XML 格式导出你的图表。你还可以插入一个代码生成器。
Gaphor 网站提到它有深色模式,但我在下载的 AppImage 版本中没有看到任何选项可以启用它。
### 在 Linux 上安装 Gaphor
![Gaphor user interface][7]
Arch 用户可以在 AUR 中找到 Gaphor。对于其他发行版你可以选择 [AppImage][8] 和 Flatpak。
你可以从其 [下载页面][9] 下载 AppImage。
如果你想使用 Flatpak 版本,请先添加 Flathub 仓库:
```
flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
```
然后再安装它:
```
flatpak install --user flathub org.gaphor.Gaphor
```
由于 Gaphor 本质上是一个 Python 应用,你也可以 [使用 Pip][10] 安装它。
```
pip install gaphor
```
当我还是一名软件工程师工作时,我使用 UML 和序列图。在过去的几年里,我没有使用它。看看 Gaphor我认为如果你必须为你的项目创建 UML 和其他图表,它是一个相当不错的应用。
欢迎试一试,并在评论中分享你的经验。
--------------------------------------------------------------------------------
via: https://itsfoss.com/gaphor-modeling-tool/
作者:[Abhishek Prakash][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/abhishek/
[b]: https://github.com/lujun9972
[1]: https://sysml.org/
[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/12/sequence-diagram-example-800x364.png?resize=800%2C364&ssl=1
[3]: https://gaphor.org/
[4]: https://itsfoss.com/open-source-paint-apps/
[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/12/gaphor-uml-screenshot.jpg?resize=800%2C570&ssl=1
[6]: https://github.com/gaphor
[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/12/gaphor-example-800x445.png?resize=800%2C445&ssl=1
[8]: https://itsfoss.com/use-appimage-linux/
[9]: https://gaphor.org/download.html#linux
[10]: https://itsfoss.com/install-pip-ubuntu/

View File

@ -0,0 +1,95 @@
[#]: subject: "Learn more about distributed databases with ShardingSphere"
[#]: via: "https://opensource.com/article/21/12/apache-shardingsphere"
[#]: author: "Trista Pan https://opensource.com/users/trista-pan"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14095-1.html"
ShardingSphere 分布式数据库简介
======
> Apache ShardingSphere 是一个开源的分布式数据库,它还有一个用户和开发人员需要的生态系统,为之提供了定制和云原生的体验。
![](https://img.linux.net.cn/data/attachment/album/202112/19/093406msdyogai9rzo2rvo.jpg)
Apache ShardingSphere 是一个开源的分布式数据库,它还有一个用户和开发人员需要的生态系统,为之提供了定制和云原生的体验。在加入 Apache 基金会的三年里ShardingSphere 核心团队与社区一起努力工作,创建了一个开源的、强大的、分布式的数据库和一个支持性生态系统。
ShardingSphere 并不完全符合业界通常的简单分布式数据库中间件解决方案的模式。ShardingSphere 重新创建了分布式可插拔系统,使实际的用户实施方案得以蓬勃发展,并为社区和数据库行业贡献有价值的解决方案。
ShardingSphere 的目标是 _Database Plus_ 概念。
### Database Plus
Database Plus 的出发点是在零散的数据库基本服务之上建立一个标准层和生态系统层。统一的、标准化的数据库使用规范为上层应用提供了保障,尽可能的减少了企业因底层数据库碎片化而面临的挑战。为了连接数据库和应用,它使用了流量和数据的渲染和解析。它为用户提供了增强的核心功能,如分布式数据库、数据安全、数据库网关和压力测试。
ShardingSphere 为 Database Plus 使用了可插拔的内核架构。这意味着模块化,这为用户提供了灵活性。它有几个不同的层:
* **基础层:** 提供各种访问终端和访问形式,满足用户在不同场景下的需求。
* **插件层:** 通过实现可扩展性提供基础设施支持。
* **功能层:** 提供各种满足用户需求的功能插件,使用户在选择和组合插件时具有高度的灵活性。
* **产品层:** 这是终端用户看到的层。这为他们提供了面向行业和特定场景的产品。换句话说,它为用户提供了适合他们所做的任何工作的工具。
![Database Plus platform][2]
Trista Pan, [CC BY-SA 4.0][3]
### 用 DistSQL 进行标准化的集群管理
Apache ShardingSphere 采用独特的 SQL 方言 DistSQL分布式 SQL来连接 ShardingSphere 生态系统的所有元素。作为 ShardingSphere 分布式数据库生态系统的标准交互语言DistSQL 允许用户使用一个 SQL 命令来创建、修改或删除分布式数据库表或对其进行加密或解密。DistSQL 还支持分布式调度管理。
![DistSQL][4]
Trista Pan, [CC BY-SA 4.0][3]
### 多访问终端
ShardingSphere JDBC 和 ShardingSphere Proxy 经过两年的打磨和测试,目前已经可以投入生产。许多社区用户提供了相关的生产社区案例。
多亏共享核心架构,以及不同的 ShardingSphere 适配器,如果用户的生产环境需要,可以选择混合适配器部署(如下图所示)。
![Hybrid deployment][5]
Trista Pan, [CC BY-SA 4.0][3]
### 分布式治理
在 ShardingSphere 生态系统中,计算和存储是分开的,因此具备对数据库进行分布式治理的能力,所以你可以维护许多存储节点、计算节点,实施断路器,并确保高可用性。
![Distributed governance][6]
Trista Pan, [CC BY-SA 4.0][3]
### 使用 Grafana 监控
ShardingSphere 也有状态指标来监控你的基础设施。代理动态加载机制为你提供了指标和跟踪指标,方便您将 APM 系统与 Grafana 仪表板集成。
![Grafana dashboard][7]
Trista Pan, [CC BY-SA 4.0][3]
### 分布式社区的分布式数据库
社区正在继续优化 ShardingSphere并整合新的想法和行业场景。社区构建了它而开发的主要动力之一是用户反馈。这是开源的一个特点但也是这个团队的实践方法。ShardingSphere 社区的核心团队成员很乐意指导任何对开源感兴趣的人,并为有兴趣帮助开发的学生提供实践问题。团队也希望有新的朋友或贡献者加入社区,促进思想的开放交流,创造一个真正的全球开发者社区。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/12/apache-shardingsphere
作者:[Trista Pan][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/trista-pan
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bus_cloud_database.png?itok=lhhU42fg (Cloud and databsae incons)
[2]: https://opensource.com/sites/default/files/uploads/database-plus-platform.png (Database Plus platform)
[3]: tps://creativecommons.org/licenses/by-sa/4.0/
[4]: https://opensource.com/sites/default/files/uploads/distsql.png (DistSQL)
[5]: https://opensource.com/sites/default/files/uploads/hybrid-deployment.png (Hybrid deployment)
[6]: https://opensource.com/sites/default/files/uploads/distributed-governance.png (Distributed governance)
[7]: https://opensource.com/sites/default/files/uploads/grafana-dashboard.png (Grafana dashboard)

View File

@ -0,0 +1,168 @@
[#]: subject: "Linux Jargon Buster: What is a Cron Job in Linux?"
[#]: via: "https://itsfoss.com/cron-job/"
[#]: author: "Hunter Wittenborn https://itsfoss.com/author/hunter/"
[#]: collector: "lujun9972"
[#]: translator: "jrglinux"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14085-1.html"
Linux 黑话解释:什么是定时任务
======
![](https://img.linux.net.cn/data/attachment/album/202112/16/112554pna46aemuh84ta3m.jpg)
在本期的《Linux 黑话解释》系列文章中,你将了解到 Linux 中的<ruby>定时任务<rt>cron job</rt></ruby>功能。你将通过学习编辑 `crontab` 文件来创建定时任务。
### 何为定时任务
`cron` 是一个用于按计划运行短小且快速的命令的实用命令行工具。该工具是一个方便、经典的系统管理工具,通过和其他工具结合使用可以自动运行各式各样的任务。比如,有些人通过把 `rsync``cron` 结合使用,在特定的时间自动创建每日备份和每周备份。也有些人使用 `cron` 来分析服务器日志,并且结合邮件系统功能,在日志检测到错误时自动发送告警邮件。
`cron` 就如同“瑞士军刀”一样,可以多场景多样化使用。尽可能发挥你的想象,去挖掘它的功能。
其实 `cron` 的使用很容易上手,只需要几秒钟。不过在我们开始上手之前,先来讨论下几个经常容易混淆的概念。
### cron、定时任务、crontab
有三个术语比较容易混淆:`cron`、定时任务和 `crontab`,让我们来看看它们的含义:
| 术语 | 含义 |
| ------------ | ------------------------------------------------------------ |
| `cron` | 这是安装在系统上的实际执行定时任务的 [守护进程][1]。 |
| 定时任务 | “任务”是指一段启动并运行的程序。`cron` 可以按照约定的时间计划运行各种任务,这样的任务通常叫做“定时任务”。 |
| [crontab][2] | 这是一个文件,用于定义定时任务。一个 `crontab` 文件可以通过表格形式(每一行就是一个定时任务)定义多个定时任务。 |
来看一个简单例子:创建一个定时任务,每小时向 `crontabl_log.txt` 文件打印 `Linux is cool!`
```
0 * * * * echo "Linux is Cool!" >> ~/crontab_log.txt
```
是不是这么个简单定时任务的例子都让你感到惊恐,这是因为你需要懂得如何去读懂一个定时任务的属性。
我将在后文中讲述这个基础理论知识。
### 上手 cron
我们通过另一个例子来看看 `cron` 如何工作。
为了创建定时任务(或者说 `cron` 将要执行的命令任务),你只需要运行:
```
crontab -e
```
这将会打开一个文件,用于编辑定时任务:
![Crontab default view][3]
其中,所有以 `#` 开头的行都是注释,用于指导你如何使用 `cron`,如果觉得没用可以删除它们。
我们将创建如下任务,作为我们的第一个定时任务:
```
* * * * * touch ~/crontab_test
```
让我快速看看该任务将会做什么:
定时任务都是以 “分钟 小时 天 月 周 命令” 形式呈现:
* 分钟:指该任务在哪一分钟会被执行。所以,该值为 `0` 则代表在每个小时开始时运行,`5` 则代表在每个小时的第 5 分钟会运行。
* 小时:指该任务在一天中的哪个小时会被执行,取值范围为 `0-23`。没有 `24` 的原因是 `23` 时的末尾是半夜 `11:59`,然后就是每天的开始 `0` 时。分钟的取值范围定义逻辑与之类似。
* 天:指一个月中的哪一天执行该任务,取值范围是 `1-31`(不同于前面的分钟和小时从 `0` 开始取值)。
* 月:指该任务在哪个月被执行,取值范围是 `1-12`
* 周:指该任务在星期几被执行,从周日开始算起,取值范围是 `0-6`(分别对应周日、周一到周六)。
* 命令:是你想要运行的命令任务。
![][4]
如果想对 “分钟 小时 天 月 周” 部分有更详细的理解,可以参考 [Crontab guru 网站][5],该网站可以帮助你理解正在执行什么。
接着之前的例子 `* * * * * touch ~/crontab_test`,表示每分钟创建一次 `~/crontab_test` 文件。
让我们将该任务编辑进 `crontab` 然后看看执行结果:
![][6]
等到下一分钟,你就会发现你的家目录下多了文件 `crontab_test`:
![][7]
这便是 `cron` 的基础应用示例。
### 一个实用的定时任务示例
假设你想创建一个脚本,用于拷贝多个目录内容到一个路径并打包作为备份,该如何实现?
通过 `cron` 定时任务就可以很容易实现该功能。
请看如下脚本:
```
#!/usr/bin/bash
echo "Backing up..."
mkdir -p ~/.local/tmp/
tar -Pc ~/Documents/ -f ~/.local/tmp/backup.gz
```
该脚本做了如下事情:
1. 确保备份路径目录 `~/.local/tmp/` 存在。
2. 将目录 `~/Documents/` 下的所有内容打包至文件 `~/.local/tmp/backup.gz`
我们先来手动运行该脚本,看看它到底如何工作。
首先,我们在家目录(`~`)下创建该脚本,命令为 `backup_script`,如下图所示:
![][8]
然后编辑 `backup_script` 脚本,写入上面那个脚本代码。
接着,赋予 `backup_script` 可执行权限:
![][9]
最后运行脚本 `~/backup_script`,进行功能验证:
![][10]
你可以通过运行命令 `tar -xf ~/.local/tmp/backup.gz -C <output_dir>` 来进行备份恢复,这里 `<output_dir>` 是指文件要恢复到的路径目录。
接下来,就可以用 `cron` 工具来进行定时任务运行该脚本了。
举个例子,假设需要每天的凌晨 3 点运行该备份脚本,你可以在 `crontab` 中输入如下命令:
```
* 3 * * * ~/backup_script
```
这样你就可以每天自动进行备份操作了。
### 后记
本文简单介绍了定时任务功能。尽管我不确定 Linux 桌面用户使用该功能多不多,但我知道定时任务功能被许多系统管理员广泛应用。如果你有什么想法,欢迎在评论区留言。
--------------------------------------------------------------------------------
via: https://itsfoss.com/cron-job/
作者:[Hunter Wittenborn][a]
选题:[lujun9972][b]
译者:[jrglinux](https://github.com/jrglinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/hunter/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/linux-daemons/
[2]: https://linuxhandbook.com/crontab/
[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/12/crontab-file.webp?resize=800%2C673&ssl=1
[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/12/crontab-explanation.webp?resize=800%2C450&ssl=1
[5]: https://crontab.guru/
[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/12/cron-example-1.webp?resize=557%2C241&ssl=1
[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/12/result-of-cron-job.webp?resize=557%2C241&ssl=1
[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/12/complex-cron-example.webp?resize=548%2C295&ssl=1
[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/12/complex-cron-example-1.webp?resize=548%2C385&ssl=1
[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/12/complex-cron-result.png?resize=800%2C220&ssl=1

View File

@ -0,0 +1,122 @@
[#]: subject: "Open source photo processing with Darktable"
[#]: via: "https://opensource.com/article/21/12/open-source-photo-processing-darktable"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14088-1.html"
用开源的 Darktable 进行照片处理
======
> 如果你拍摄的照片值得处理,那么你可以看看 Darktable 为你提供了什么。
![](https://img.linux.net.cn/data/attachment/album/202112/17/110051ezze4uatt2d2f94e.jpg)
很难说好照片是如何产生的。你必须在正确的时间出现在正确的地点。你必须准备好相机和构图的观察力。而这只是发生在相机里的部分。好的摄影还有另一个阶段,许多人都没有想到这一点。它曾经需要在 _暗房_ 中的灯光和化学品,但在今天的数字工具中,后期制作发生在暗房软件中。最好的照片处理器之一是 [Darktable][2],我在 2016 年写了一篇 [介绍 Darktable][3] 的文章。那篇文章已经过去五年了,所以我想我应该重新审视一下这个应用,写一写它的一个高级功能:蒙版。
自从我最初写下这篇文章以来Darktable 并没有什么变化,在我看来,这是一个真正好的应用的标志之一。一个稳定的界面和持续的优秀性能是人们对软件的所有要求,而 Darktable 依旧熟悉而强大。如果你是 Darktable 的新手,请阅读我的 [介绍性文章][3],了解基础知识。
### 什么是蒙版?
在照片处理中,蒙版被用来限制你对图像的调整,使其只限于图像的一个区域。
直观地说,<ruby>蒙版<rt>mask</rt></ruby> 是视觉艺术中的一种技术,用一种材料来遮挡另一种材料。如果你曾经在你的公寓或房子里画过一面墙,你可能使用过 _遮蔽胶带_(也叫油漆工胶带)来保护相邻的墙壁或造型不受杂乱笔触的影响。完成后,你剥去遮蔽胶带,你就有了漂亮的油漆直线。
<ruby>模板<rt>stencil</rt></ruby>也是遮蔽的一种形式。
![A mask made of masking tape][4]
Seth Kenlon, [CC BY-SA 4.0][5]
这是一种在摄影中使用了一个世纪的技术,因此,数字摄影工具有一个类似的技术也是合理的。
### 在 Darktable 中使用蒙版
在这个例子中,我使用了 Flickr 用户 **bcnewdemocrats** 的创作共用照片。这是一张很好的照片,因为它有迷人的主题(两个孩子在他们非常耐心的父亲脸上涂抹 Holi 粉)。因为它是关于印度的五彩节,所以它在整个过程中都有色彩飞溅。
![Original photograph][6]
bcnewdemocrats, [CC BY-SA 4.0][5]
这是一张不需要改进的照片,但并不是所有的调整都需要剧烈变化才能产生显著效果。
色彩校正滤镜提供了一个特别明显的调整。在彩色摄影中,尤其是人物摄影中,一个常见的修正是添加 _琥珀色_(一种偏红的橙色)。人类肤色受益于琥珀色,因为我们把这种颜色与温暖和生命联系起来。
点击 “<ruby>开启<rt>On</rt></ruby>” 按钮,激活 Darktable 窗口右侧的色彩校正调整面板。将中心点向上和向右拖动,给照片增加琥珀色。
![Color correction panel][7]
Seth Kenlon, [CC BY-SA 4.0][5]
这样做之后,整张照片就会浸透在琥珀色里。
![Darktable global color correction][8]
Seth Kenlon, [CC BY-SA 4.0][5]
在色彩校正面板的底部,点击 “<ruby>drawn & parametric mask<rt>绘制和参数化蒙版</rt></ruby>” 按钮。
![Apply mask button][9]
Seth Kenlon, [CC BY-SA 4.0][5]
在显示出来的工具栏中,你有几种蒙版形状可以选择。有圆、椭圆、路径、画笔、梯度,还有一个编辑现有蒙版的选项。为了简单起见,选择圆形,然后点击你的对象的脸。
![Circle mask][10]
Seth Kenlon, [CC BY-SA 4.0][5]
你的色彩校正滤镜立即被限制在你的圆形蒙版的区域内,给你的主要对象一个令人愉快的琥珀色调,同时避开背景。
![Color correction within a circle mask][11]
Seth Kenlon, [CC BY-SA 4.0][5]
你可以通过切换色彩校正滤镜的关闭和开启来看到区别。
### 复用蒙版
如果你想只对被摄者的脸部应用另一个滤镜,你不必为那个新的滤镜再创建一个蒙版。当你创建一个蒙版时,它会被添加到位于 Darktable 界面左边的 “<ruby>蒙版管理器<rt>mask manager</rt></ruby>” 面板上。默认的名字是非常通用的,但你可以双击每个蒙版的名字来重命名它。
![Mask manager][12]
Seth Kenlon, [CC BY-SA 4.0][5]
当你应用一个新的滤镜时,不是选择一个新的蒙版形状来创建,而是点击 “<ruby>不使用蒙版<rt>no mask used</rt></ruby>” 下拉菜单来查看现有的蒙版列表,以及之前在同一个滤镜上一起使用过的自动分组的蒙版。选择你想用于新滤镜的蒙版或蒙版组。
![Selecting an existing mask][13]
Seth Kenlon, [CC BY-SA 4.0][5]
### 更多蒙版
在 Darktable 中还有很多其他类型的蒙版和蒙版功能可以探索。你可以用路径和画笔工具创建复杂的形状。你也可以完全放弃使用形状,并根据色度和亮度值将过滤器限制在图像的某个区域。你可以调整蒙版的模糊度和扩散度等。在 Darktable 中进行的所有调整中,最好的一点是它们都是动态的、非破坏性的。如果你改变主意,你可以随时关闭它们,而且你实际上从未影响过图像数据本身。这并不奇怪,因为 Darktable 确实是一个强大的摄影工具,如果你拍摄的照片值得处理,你就应该看看 Darktable 为你提供了什么。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/12/open-source-photo-processing-darktable
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/design_photo_art_polaroids.png?itok=SqPLgWxJ (Polaroids and palm trees)
[2]: https://www.darktable.org/
[3]: https://opensource.com/life/16/4/how-use-darktable-digital-darkroom
[4]: https://opensource.com/sites/default/files/uploads/masking.jpg (A mask made of masking tape)
[5]: https://creativecommons.org/licenses/by-sa/4.0/
[6]: https://opensource.com/sites/default/files/uploads/darktable-darkroom.jpg (Original photograph)
[7]: https://opensource.com/sites/default/files/uploads/darktable-panel-color-correction.jpg (Color correction panel)
[8]: https://opensource.com/sites/default/files/uploads/darktable-color-correction-global.jpg (Darktable global color correction)
[9]: https://opensource.com/sites/default/files/uploads/darktable-button-mask.jpg (Apply mask button)
[10]: https://opensource.com/sites/default/files/uploads/darktable-button-circle.jpg (Circle mask)
[11]: https://opensource.com/sites/default/files/uploads/darktable-color-mask.jpg (Color correction within a circle mask)
[12]: https://opensource.com/sites/default/files/uploads/darktable-mask-manager.jpg (Mask manager)
[13]: https://opensource.com/sites/default/files/uploads/darktable-mask-select.jpg (Selecting an existing mask)

View File

@ -0,0 +1,126 @@
[#]: subject: "Zorin OS 16 Lite Edition is Finally Here With Latest Xfce 4.16"
[#]: via: "https://news.itsfoss.com/zorin-os-16-lite-release/"
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14068-1.html"
Zorin OS 16 Lite 版终于来了
======
> Zorin OS 16 Lite 带来了 Zorin OS 16 的所有优点和 Xfce 桌面环境。让我们来了解一下。
![](https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/zorin-os-16-lite-ft.jpg?w=1200&ssl=1)
[Zorin OS 16][1] 是一个令人印象深刻的版本。但是,如果你正在寻找一个轻量级的发行版或适合旧电脑的东西,这不是一个好的选择。
Zorin OS 为每个版本都提供了一个由 Xfce 桌面环境驱动的 Lite 版本以供资源有限的计算机使用。然而直到刚刚之前Zorin OS 16 还没有这个 Lite 版。
是的终于Zorin OS 16 Lite 现在可以和 Pro 版一起下载了。
请注意,如果你已经购买了 Zorin OS 16 Pro那么 Lite 版也包括在内。
LCTT 译注Zorin OS 的 Pro 版是收费的,其 Core 版和 Lite 版是免费的。)
### Zorin OS 16 Lite: 有什么新内容?
![][2]
在这个版本中Zorin OS 16 Lite 旨在通过保持最小的资源使用量,带来所有 [Zorin OS 16 中引入的改进][3]。
我为了制作的视频点评而简要地测试了该发行版,对它留下了相当深刻的印象。
有趣的是Zorin OS 16 Lite 设法提供了类似于 Xfce 的用户体验和精美的桌面环境。通常情况下,我不喜欢 Xfce 桌面环境(只是一种审美选择),但 Zorin OS 16 Lite 不同。
我做了一个 Zorin OS 16 Lite 专业版的视频,你可以看到它的运行情况。
![video](https://youtu.be/Cl5qXPY9OLk)
#### 视觉大修
![][5]
带有 Xfce 4.16 的 Zorin OS 16 Lite 提供了令人耳目一新的用户体验,其精美的主题与 Zorin OS 16GNOME 版)非常相近。
你可以调整主题,切换暗色模式,并从外观菜单中选择一种重点颜色。外观选项也得到了刷新,可以让你在 Zorin OS 16 Lite 上轻松定制体验。
不幸的是,你在这里找不到像 Zorin OS 16 一样的果冻模式。因此如果你需要眼花缭乱的动画Lite 版可能不是你的合适选择。
除了新的视觉变化和功能之外,你还会发现新的可以填补你的桌面的背景。有些壁纸可能只限于 Pro 版。
![][6]
#### Pro 版的桌面布局
虽然在 Core 版和 Lite 版中有一些桌面布局的选择,但 Pro 版又为你提供了两个额外的桌面布局。
![][12]
其中一个布局类似于经典的 Windows 设计,另一个布局看起来接近于 ChromeOS。
![][13]
你还可以在类似 macOS、GNOME 2 和类似 Windows 列表的布局之间进行选择。
请注意,作为 [Windows 用户的最佳发行版之一][7],其默认的布局类似 Windows这应该是一个很好的体验。
#### 带有窗口预览的任务栏
![][14]
桌面功能有一个重要的改进,也就是说,现在当你从任务栏悬停在一个活动窗口上时,你可以很容易地查看该窗口的预览。
在用预先发布的 ISO 进行测试时,这个体验并不流畅。但是,考虑到他们已经消除了一些错误,这是 Zorin OS 16 Lite 中的一个很好的功能。
#### 默认启用的 Flathub
应用中心(软件中心)也提供了 Flathub 集成,开箱即用。你应该可以从软件中心很快地找到 Flatpak 应用程序,如果你不喜欢 Flatpak 软件包,可以改变软件包源。
#### 其他改进
![][15]
除了关键的变化外,你还会发现一些改进,如禁用遥测的 Firefox 浏览器、新的声音记录器应用、高分辨率显示器的小数点级缩放以及 Rythmbox 应用。
Thunar 文件管理器有一些常规的微小改进,并与其他设计融为一体。你应该能够使用 parole 视频播放器来播放视频了。
[Linux 内核 5.11][10] 也改进了一些技术兼容性。
总的来说Zorin OS 团队在将 Zorin OS 16 的漂亮设计和易用性延续到其 Lite 版方面做得很好。大部分时间,你甚至可能没有意识到你在使用 Xfce 桌面环境。
### 下载 Zorin OS 16 Lite
你可以前往其下载页面获取 Zorin OS 16 Lite 的 ISO。如果你已经购买了 Zorin OS 16 Pro 版,你可以使用电子邮件中的链接来下载 Lite 版。
- [Zorin OS 16 Lite][11]
你对 Zorin OS 16 Lite 有什么看法?欢迎在评论中告诉我们你的想法。
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/zorin-os-16-lite-release/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://news.itsfoss.com/zorin-os-16-release/
[2]: https://i1.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/zorin-os-desktop-16-lite.jpg?w=1200&ssl=1
[3]: https://news.itsfoss.com/zorin-os-16-features/
[4]: https://i2.wp.com/i.ytimg.com/vi/Cl5qXPY9OLk/hqdefault.jpg?w=780&ssl=1
[5]: https://i1.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/desktop-look.png?w=1024&ssl=1
[6]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/wallpapers.png?w=960&ssl=1
[7]: https://itsfoss.com/windows-like-linux-distributions/
[10]: https://news.itsfoss.com/linux-kernel-5-11-release/
[11]: https://zorin.com/os/download/
[12]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/chrome-os-like-desktop.jpg?w=1024&ssl=1
[13]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/windows-classic-like.jpg?w=1024&ssl=1
[14]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/window-previews.png?w=660&ssl=1
[15]: https://i1.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/zorin-os-16-lite-neofetch.png?w=655&ssl=1

View File

@ -0,0 +1,73 @@
[#]: subject: "Reveal your source code with Jinja2 and Git"
[#]: via: "https://opensource.com/article/21/12/reveal-source-code-jinja2-git"
[#]: author: "Ayush Sharma https://opensource.com/users/ayushsharma"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-14091-1.html"
用 Jekyll 和 Git 展示你的源码
======
> 我是如何通过链接每个页面回到其原始源代码来保持我的网站开放的。
![](https://img.linux.net.cn/data/attachment/album/202112/18/093318uoud175bj4d55zz5.jpg)
我是一个开源的超级粉丝。
我支持这项事业的一个小方法是从一开始就保持我的个人博客网站开放。我这样做的部分原因是让人们看到每个页面背后的变化历史。还因为当我开始使用 [Jekyll][2] 时,我没有找到很多开源的 Jekyll 博客可以学习。我希望保持我的网站开放并公开我的尝试和错误,可以为其他人节省很多时间。
### Jekyll 的 page.path 变量
我实现这一目标的方法之一是将我发布的每一个条目链接到其原始的 [Markdown][3]。[Jekyll 的变量][4] 中正好有一个需要的工具:`page.path`。这个变量包含每个页面的原始文件系统路径。官方的描述甚至强调了它的作用是链接回源!
在一篇文章的 Markdown 文件中打印 `{{page.path }}`,可以得到类似这样的结果:
```
_posts/2021-10-10-example.md
```
假设该文章的源代码存在于这个路径:
```
https://example.com/ayushsharma-in/-/blob/master/_posts/2021-10-10-example.md
```
如果你在任何文章的 `page.path` 前加上 `https://example.com/ayushsharma-in/-/blob/master/`,它就会生成一个返回其源码的链接。
在 Jekyll 中,生成这个完整的链接看起来像这样:
```
<a href="{{ page.path | prepend: site.content.blog_source_prefix }}" target="_blank">View source</a>
```
就是这么简单。
### Jekyll 和开放 Web
现代 Web 是一种错综复杂的多层次技术,但这并不意味着它必须让人摸不清。有了 Jekyll 的变量,你可以确保你的用户可以,了解更多关于你是如何建立你的网站的,如果他们愿意的话。
你可以在我的[个人博客][5]上看到真实的例子:滚动到底部的查看源码链接。
本文改编自 [ayush sharma 的笔记][6],并经许可转载。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/12/reveal-source-code-jinja2-git
作者:[Ayush Sharma][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/ayushsharma
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_blue_text_editor_web.png?itok=lcf-m6N7 (Text editor on a browser, in blue)
[2]: https://opensource.com/article/21/9/build-website-jekyll
[3]: https://opensource.com/article/19/9/introduction-markdown
[4]: https://jekyllrb.com/docs/variables/#page-variables
[5]: https://www.ayushsharma.in
[6]: https://www.ayushsharma.in/2021/11/linking-jekyll-pages-back-to-their-git-source-code

Some files were not shown because too many files have changed in this diff Show More