mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-31 23:30:11 +08:00
commit
87cbfd627a
@ -1,41 +1,44 @@
|
||||
10 个有趣的 Linux 命令行小技巧值得了解
|
||||
你值得了解的 10 个有趣的 Linux 命令行小技巧
|
||||
============================================================
|
||||
|
||||
我非常喜欢使用命令,因为他们比 GUIs(图形用户界面)应用程序对 Linux 系统提供更多的控制。因此,我一直在寻找一些有趣的方法[让 Linux 的操作变得简单好玩][1],主要是基于终端操作。
|
||||
我非常喜欢使用命令,因为它们比 GUI(图形用户界面)应用程序对 Linux 系统提供更多的控制,因此,我一直在寻找一些有趣的方法[让 Linux 的操作变得简单好玩][1],主要是基于终端操作。
|
||||
|
||||
当我们发现[使用 Linux 的新技巧][2]时,尤其是像我这样的命令行极客,我们总会感到非常来劲。
|
||||
|
||||
**建议阅读:** [5 有趣的 Linux 命令行技巧 - 第一部分][3]
|
||||
|
||||
而且我们也会很想与数百万 Linux 用户分享新学到的实践或命令,特别是那些还在使用自己的方式操作这个令人兴奋的操作系统的新手们。
|
||||
而且我们也会很想与数百万 Linux 用户分享新学到的实践或命令,特别是那些还在使用自己的方式操作这个令人兴奋的操作系统的新手们。
|
||||
|
||||
**建议阅读:** [10 个对新手有用的 Linux 命令行技巧 - 第二部分][3]
|
||||
|
||||
在这篇文章中,我们将回顾一系列[有用的命令行小技巧][4],他们可以显著地提高你的 Linux 使用技能。
|
||||
**建议阅读:** [10 个对新手有用的 Linux 命令行技巧 - 第二部分][4]
|
||||
|
||||
### 1\. 在 Linux 中锁定或隐藏文件或目录
|
||||
在这篇文章中,我们将回顾一系列[有用的命令行小技巧][4],它们可以显著地提高你的 Linux 使用技能。
|
||||
|
||||
### 1、 在 Linux 中锁定或隐藏文件或目录
|
||||
|
||||
锁定文件或目录最简单的方法是使用 Linux 文件权限。如果你是文件或目录的所有者,你可以阻止其他用户和组访问(删除、读取、写入、执行)它,如下所示:
|
||||
|
||||
```
|
||||
$ chmod 700 tecmint.info
|
||||
OR
|
||||
或
|
||||
$ chmod go-rwx tecmint.info
|
||||
```
|
||||
|
||||
想要了解更多有关 Linux 文件权限的内容,请阅读这篇文章[在 Linux 中管理用户和组,文件权限和属性][5]。
|
||||
|
||||
为了实现对系统中的其他用户隐藏文件或目录,可以通过在文件或目录开头添加 `(.)` 的方式重命名:
|
||||
为了实现对系统中的其他用户隐藏文件或目录,可以通过在文件或目录开头添加 `.` 的方式重命名:
|
||||
|
||||
```
|
||||
$ mv filename .tecmint.info
|
||||
```
|
||||
|
||||
### 2\. 在 Linux 中将 rwx 权限转为八进制格式
|
||||
### 2、 在 Linux 中将 rwx 权限转为八进制格式
|
||||
|
||||
默认情况下,当你运行 [ls 命令][6]之后,它会使用 `rwx` 格式显示文件权限,为了了解 rwx 格式和八进制格式的等同性,你可以学习如何[在 Linux 中将 rwx 权限转为八进制格式][7]。
|
||||
|
||||
### 3\. 当 `sudo` 命令执行失败时怎么使用 `su` 命令
|
||||
### 3、 当 `sudo` 命令执行失败时怎么使用 `su` 命令
|
||||
|
||||
虽然 [sudo 命令][8]是用来执行具有超级用户权限的命令,但是在某些情况下它也会执行失败,如下所示。
|
||||
虽然 [sudo 命令][8]被用来以超级用户权限执行命令,但是在某些情况下它也会执行失败,如下所示。
|
||||
|
||||
在这里,我想[清空一个大文件的内容][9],其文件名为 `uptime.log`,但是即便我是使用 sudo 命令也执行失败了。
|
||||
|
||||
@ -47,31 +50,32 @@ $ sudo cat /dev/null >/var/log/uptime.log
|
||||
![在 Linux 中清空大文件的内容](http://www.tecmint.com/wp-content/uploads/2016/12/Empty-Large-File-Content-in-Linux.png)
|
||||
][10]
|
||||
|
||||
在 Linux 中清空大文件的内容
|
||||
*在 Linux 中清空大文件的内容*
|
||||
|
||||
遇到这种情况,你需要使用 su 命令切换到 root 用户,然后像下面这样去执行清空操作:
|
||||
遇到这种情况,你需要使用 `su` 命令切换到 `root` 用户,然后像下面这样去执行清空操作:
|
||||
|
||||
```
|
||||
$ su
|
||||
$ sudo cat /dev/null >/var/log/uptime.log
|
||||
$ cat /var/log/uptime.log
|
||||
```
|
||||
```
|
||||
|
||||
[
|
||||
![切换到超级用户](http://www.tecmint.com/wp-content/uploads/2016/12/Switch-to-Super-User.png)
|
||||
][11]
|
||||
|
||||
切换到超级用户
|
||||
*切换到超级用户*
|
||||
|
||||
尝试理解 [su 和 sudo 之间的区别][12],另外,通过阅读他们的手册页以了解更多的使用指南:
|
||||
尝试理解 [su 和 sudo 之间的区别][12],另外,通过阅读它们的手册页以了解更多的使用指南:
|
||||
|
||||
```
|
||||
$ man sudo
|
||||
$ man su
|
||||
```
|
||||
|
||||
### 4\. 在 Linux 中结束一个进程
|
||||
### 4、 在 Linux 中结束一个进程
|
||||
|
||||
有些时候,当你想[使用 kill、killall、pkill 命令结束一个进程][13]时,它们有可能无法生效,你可以看到该进程仍然还在系统上运行。
|
||||
有些时候,当你想[使用 kill、killall、pkill 命令结束一个进程][13]时,它们有可能无法生效,你可能会看到该进程仍然还在系统上运行。
|
||||
|
||||
如果要强制结束一个进程,可以发送 `-KILL` 信号给该进程。
|
||||
|
||||
@ -85,15 +89,15 @@ $ sudo kill -KILL 10279
|
||||
![在 Linux 中查找和结束进程](http://www.tecmint.com/wp-content/uploads/2016/12/Find-and-Kill-Process-in-Linux.png)
|
||||
][15]
|
||||
|
||||
在 Linux 中查找和结束进程
|
||||
*在 Linux 中查找和结束进程*
|
||||
|
||||
查看 [kill 命令][16]以获取更多的使用选项和信息。
|
||||
|
||||
### 5\. 在 Linux 中永久删除文件
|
||||
### 5、 在 Linux 中永久删除文件
|
||||
|
||||
一般情况下,我们通过使用 rm 命令将文件从 Linux 系统中删除。然而,这些文件并没有被真正的删除,它们只是被简单地隐藏存放在硬盘中,其他用户仍然可以[在 Linux 中恢复删除的文件][17]并查看。
|
||||
一般情况下,我们通过使用 `rm` 命令将文件从 Linux 系统中删除。然而,这些文件并没有被真正的删除,它们仍被存储在那里并隐藏在你的硬盘中,其他用户仍然可以[在 Linux 中恢复删除的文件][17]并查看。
|
||||
|
||||
为了防止这种情况发生,我们可以使用 shred 命令来重复覆盖文件内容,并在覆盖完成后选择删除文件。
|
||||
为了防止这种情况发生,我们可以使用 `shred` 命令来覆写文件内容,并在覆盖完成后选择删除文件。
|
||||
|
||||
```
|
||||
$ shred -zvu tecmint.pdf
|
||||
@ -101,38 +105,39 @@ $ shred -zvu tecmint.pdf
|
||||
|
||||
上述命令中所使用的选项说明:
|
||||
|
||||
1. `-z` – 最后一次使用 0 进行覆盖以隐藏覆盖动作。
|
||||
2. `-u` – 覆盖后截断并移除文件。
|
||||
3. `-v` – 显示详细过程。
|
||||
1. `-z` – 最后一次使用 0 进行覆盖以隐藏覆写动作。
|
||||
2. `-u` – 覆写后截断并移除文件。
|
||||
3. `-v` – 显示详细过程。
|
||||
|
||||
[
|
||||
![在 Linux 中永久删除文件](http://www.tecmint.com/wp-content/uploads/2016/12/Delete-File-Permanently-in-Linux.png)
|
||||
][18]
|
||||
|
||||
在 Linux 中永久删除文件
|
||||
*在 Linux 中永久删除文件*
|
||||
|
||||
阅读 shred 手册以获取更多的使用信息。
|
||||
阅读 `shred` 手册以获取更多的使用信息。
|
||||
|
||||
```
|
||||
$ man shred
|
||||
```
|
||||
|
||||
### 6\. 在 Linux 中重命名多个文件
|
||||
### 6、 在 Linux 中重命名多个文件
|
||||
|
||||
你可以通过使用 rename 命令随时[在 Linux 中重命名多个文件][19]。
|
||||
你可以通过使用 `rename` 命令随时[在 Linux 中重命名多个文件][19]。
|
||||
|
||||
rename 命令会根据第一个参数中的规则重命名指定文件。
|
||||
`rename` 命令会根据第一个参数中的规则重命名指定文件。
|
||||
|
||||
以下命令会将所有 `.pdf` 文件重命名为 `.doc` 文件,使用的规则为 `'s/\.pdf$/\.doc/'`:
|
||||
|
||||
```
|
||||
$ rename -v 's/\.pdf$/\.doc/' *.pdf
|
||||
```
|
||||
```
|
||||
|
||||
[
|
||||
![在 Linux 中重命名多个文件](http://www.tecmint.com/wp-content/uploads/2016/12/Rename-Multiple-Files-in-Linux.png)
|
||||
][20]
|
||||
|
||||
在 Linux 中重命名多个文件
|
||||
*在 Linux 中重命名多个文件*
|
||||
|
||||
在接下来的例子中,我们将通过重命名所有匹配 `"*.bak"` 的文件来移除其拓展名,使用的规则是 `'s/\e.bak$//'`:
|
||||
|
||||
@ -140,39 +145,40 @@ $ rename -v 's/\.pdf$/\.doc/' *.pdf
|
||||
$ rename -v 's/\e.bak$//' *.bak
|
||||
```
|
||||
|
||||
### 7\. 在 Linux 中检查单词拼写
|
||||
|
||||
look 命令用于显示文件中以指定字符串为前缀的任意行,同时它也可以帮你检查命令行中给定单词的拼写。尽管它并不是那么有效和可靠,但它仍然算得上是其他强大的拼写检查工具的有用替代品。
|
||||
### 7、 在 Linux 中检查单词拼写
|
||||
|
||||
`look` 命令用于显示文件中以指定字符串为前缀的任意行,同时它也可以帮你检查命令行中给定单词的拼写。尽管它并不是那么有效和可靠,但它仍然算得上是其他强大的拼写检查工具的有用替代品。
|
||||
|
||||
```
|
||||
$ look linu
|
||||
$ look docum
|
||||
```
|
||||
|
||||
[
|
||||
![在 Linux 中检查单词拼写](http://www.tecmint.com/wp-content/uploads/2016/12/Spell-Checking-in-Linux.png)
|
||||
][21]
|
||||
|
||||
在 Linux 中检查单词拼写
|
||||
*在 Linux 中检查单词拼写*
|
||||
|
||||
### 8\. 查找关键字在手册页中的简介
|
||||
### 8、 按关键字搜索手册页
|
||||
|
||||
man 命令用于显示命令的手册页,当使用 `-k` 选项时,它会将关键字 `printf`(或者如下命令中的关键字 adjust、apache、php )作为正则表达式,来搜索所有名称匹配的命令的手册页简介。
|
||||
`man` 命令用于显示命令的手册页,当使用 `-k` 选项时,它会将关键字 `printf`(或者如下命令中的关键字 `adjust`、`apache`、`php` )作为正则表达式,来搜索所有匹配该名称手册页,并显示其简介。
|
||||
|
||||
```
|
||||
$ man -k adjust
|
||||
$ man -k apache
|
||||
$ man -k php
|
||||
```
|
||||
|
||||
[
|
||||
![显示关键字在手册页中的简介](http://www.tecmint.com/wp-content/uploads/2016/12/Show-Description-of-Keyword-in-Manual-Pages.png)
|
||||
![按关键字搜索手册页](http://www.tecmint.com/wp-content/uploads/2016/12/Show-Description-of-Keyword-in-Manual-Pages.png)
|
||||
][22]
|
||||
|
||||
显示关键字在手册页中的简介
|
||||
*按关键字搜索手册页*
|
||||
|
||||
### 9\. 在 Linux 中实时监测日志
|
||||
### 9、 在 Linux 中实时监测日志
|
||||
|
||||
watch 命令可以[定期执行另一个 Linux 命令][23]并全屏显示该命令的执行结果。当 watch 命令与 [tail 命令][24](用于查看文件结尾的 Linux 命令)配合使用时,可以监测到日志的生成情况。
|
||||
`watch` 命令可以[定期执行另一个 Linux 命令][23]并全屏显示该命令的执行结果。当 `watch` 命令与 [tail 命令][24](用于查看文件结尾的 Linux 命令)配合使用时,可以监测到日志文件的日志记录情况。
|
||||
|
||||
在以下示例中,你将实时监测系统认证日志文件。打开两个终端窗口,在第一个窗口中实时监测该日志文件,如下:
|
||||
|
||||
@ -193,7 +199,7 @@ $ sudo mkdir -p /etc/test
|
||||
$ sudo rm -rf /etc/test
|
||||
```
|
||||
|
||||
### 10\. 列出所有 Shell 内置命令
|
||||
### 10、 列出所有 Shell 内置命令
|
||||
|
||||
shell 内置命令是一个命令或者函数,从内部调用并直接在 shell 里执行,而不是从硬盘加载外部的可执行程序来执行。
|
||||
|
||||
@ -222,20 +228,20 @@ via: http://www.tecmint.com/linux-command-line-tricks-and-tips-worth-knowing/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[zhb127](https://github.com/zhb127)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
[1]:http://www.tecmint.com/20-funny-commands-of-linux-or-linux-is-fun-in-terminal/
|
||||
[2]:http://www.tecmint.com/tag/linux-tricks/
|
||||
[3]:http://www.tecmint.com/10-useful-linux-command-line-tricks-for-newbies/
|
||||
[4]:http://www.tecmint.com/10-useful-linux-command-line-tricks-for-newbies/
|
||||
[5]:http://www.tecmint.com/manage-users-and-groups-in-linux/
|
||||
[3]:https://linux.cn/article-5485-1.html
|
||||
[4]:https://linux.cn/article-6314-1.html
|
||||
[5]:https://linux.cn/article-7418-1.html
|
||||
[6]:http://www.tecmint.com/tag/linux-ls-command/
|
||||
[7]:http://www.tecmint.com/check-linux-file-octal-permissions-using-stat-command/
|
||||
[8]:http://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/
|
||||
[9]:http://www.tecmint.com/empty-delete-file-content-linux/
|
||||
[9]:https://linux.cn/article-8024-1.html
|
||||
[10]:http://www.tecmint.com/wp-content/uploads/2016/12/Empty-Large-File-Content-in-Linux.png
|
||||
[11]:http://www.tecmint.com/wp-content/uploads/2016/12/Switch-to-Super-User.png
|
||||
[12]:http://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/
|
||||
@ -243,7 +249,7 @@ via: http://www.tecmint.com/linux-command-line-tricks-and-tips-worth-knowing/
|
||||
[14]:http://www.tecmint.com/find-process-name-pid-number-linux/
|
||||
[15]:http://www.tecmint.com/wp-content/uploads/2016/12/Find-and-Kill-Process-in-Linux.png
|
||||
[16]:http://www.tecmint.com/how-to-kill-a-process-in-linux/
|
||||
[17]:http://www.tecmint.com/recover-deleted-file-in-linux/
|
||||
[17]:https://linux.cn/article-7974-1.html
|
||||
[18]:http://www.tecmint.com/wp-content/uploads/2016/12/Delete-File-Permanently-in-Linux.png
|
||||
[19]:http://www.tecmint.com/rename-multiple-files-in-linux/
|
||||
[20]:http://www.tecmint.com/wp-content/uploads/2016/12/Rename-Multiple-Files-in-Linux.png
|
||||
@ -253,4 +259,4 @@ via: http://www.tecmint.com/linux-command-line-tricks-and-tips-worth-knowing/
|
||||
[24]:http://www.tecmint.com/view-contents-of-file-in-linux/
|
||||
[25]:http://www.tecmint.com/view-contents-of-file-in-linux/
|
||||
[26]:http://www.tecmint.com/tag/linux-tricks/
|
||||
[27]:http://www.tecmint.com/5-linux-command-line-tricks/
|
||||
[27]:https://linux.cn/article-5485-1.html
|
@ -1,18 +1,18 @@
|
||||
如何用 Shell Tracing 跟踪 shell 脚本中命令的执行
|
||||
如何在 Shell 脚本中跟踪调试命令的执行
|
||||
============================================================
|
||||
|
||||
在[ shell 脚本调试系列][3] 中,本文将解释第三种 shell 脚本调试模式,即 shell tracing,并查看一些示例来演示它如何工作以及如何使用它。
|
||||
在 [shell 脚本调试系列][3] 中,本文将解释第三种 shell 脚本调试模式,即 shell 跟踪,并查看一些示例来演示它如何工作以及如何使用它。
|
||||
|
||||
本系列的前面部分清晰地阐明了另外两种 shell 脚本调试模式:verbose 模式和语法检查模式,以及如何在这些模式下启用 shell 脚本调试的易于理解的示例。
|
||||
本系列的前面部分清晰地阐明了另外两种 shell 脚本调试模式:详细模式和语法检查模式,并用易于理解的例子展示了如何在这些模式下启用 shell 脚本调试。
|
||||
|
||||
1. [如何在 Linux 中启用 shell 脚本调试模式 - 第1部分][1]
|
||||
2. [如何在 shell 脚本中执行语法检查调试模式 - 第2部分][2]
|
||||
1. [如何在 Linux 中启用 Shell 脚本的调试模式][1]
|
||||
2. [如何在 Shell 脚本中执行语法检查调试模式][2]
|
||||
|
||||
shell tracing 只是跟踪 shell 脚本中的命令的执行。要打开 shell tracing,请使用 `-x` 调试选项。
|
||||
shell 跟踪简单的来说就是跟踪 shell 脚本中的命令的执行。要打开 shell 跟踪,请使用 `-x` 调试选项。
|
||||
|
||||
这让 shell 在终端上执行时显示所有命令及其参数。
|
||||
这会让 shell 在终端上显示所有执行的命令及其参数。
|
||||
|
||||
我们将使用下面的 `sys_info.sh` shell 脚本,它会简要地打印你的系统日期和时间、登录的用户数和系统的运行时间。脚本中包含我们需要查找和更正的语法错误。
|
||||
我们将使用下面的 `sys_info.sh` shell 脚本,它会简要地打印出你的系统日期和时间、登录的用户数和系统的运行时间。不过,脚本中包含我们需要查找和更正的语法错误。
|
||||
|
||||
```
|
||||
#!/bin/bash
|
||||
@ -22,26 +22,27 @@ DATE=`date`
|
||||
NO_USERS=`who | wc -l`
|
||||
UPTIME=`uptime`
|
||||
check_root(){
|
||||
if [ "$UID" -ne "$ROOT_ID" ]; then
|
||||
echo "You are not allowed to execute this program!"
|
||||
exit 1;
|
||||
if [ "$UID" -ne "$ROOT_ID" ]; then
|
||||
echo "You are not allowed to execute this program!"
|
||||
exit 1;
|
||||
}
|
||||
print_sys_info(){
|
||||
echo "System Time : $DATE"
|
||||
echo "Number of users: $NO_USERS"
|
||||
echo "System Uptime : $UPTIME
|
||||
echo "System Time : $DATE"
|
||||
echo "Number of users: $NO_USERS"
|
||||
echo "System Uptime : $UPTIME
|
||||
}
|
||||
check_root
|
||||
print_sys_info
|
||||
exit 0
|
||||
```
|
||||
|
||||
保存文件并执行脚本。脚本只能用 root 用户运行,因此如下使用[ sudo 命令][4]运行:
|
||||
保存文件并执行脚本。脚本只能用 root 用户运行,因此如下使用 [sudo 命令][4]运行:
|
||||
|
||||
```
|
||||
$ chmod +x sys_info.sh
|
||||
$ sudo bash -x sys_info.sh
|
||||
```
|
||||
|
||||
[
|
||||
![Shell Tracing - Show Error in Script](http://www.tecmint.com/wp-content/uploads/2016/12/Shell-Tracing-Errors.png)
|
||||
][5]
|
||||
@ -50,20 +51,21 @@ $ sudo bash -x sys_info.sh
|
||||
|
||||
从上面的输出我们可以观察到,首先执行命令,然后其输出做为一个变量的值。
|
||||
|
||||
例如,先执行 date,其输出做为变量 DATE 的值。
|
||||
例如,先执行 `date`,其输出做为变量 `DATE` 的值。
|
||||
|
||||
我们可以执行语法检查,只显示语法错误,如下所示:
|
||||
我们可以执行语法检查来只显示其中的语法错误,如下所示:
|
||||
|
||||
```
|
||||
$ sudo bash -n sys_info.sh
|
||||
```
|
||||
|
||||
[
|
||||
![Syntax Checking in Script](http://www.tecmint.com/wp-content/uploads/2016/12/Syntax-Checking-in-Script.png)
|
||||
][6]
|
||||
|
||||
*脚本中语法检查*
|
||||
|
||||
如果我们批判地看这个 shell 脚本,我们就会发现 `if 语句` 缺少了封闭条件的 `fi` 关键字。因此,让我们加上它,新的脚本应该看起来像这样:
|
||||
如果我们审视这个 shell 脚本,我们就会发现 `if` 语句缺少了封闭条件的 `fi` 关键字。因此,让我们加上它,新的脚本应该看起来像这样:
|
||||
|
||||
```
|
||||
#!/bin/bash
|
||||
@ -73,15 +75,15 @@ DATE=`date`
|
||||
NO_USERS=`who | wc -l`
|
||||
UPTIME=`uptime`
|
||||
check_root(){
|
||||
if [ "$UID" -ne "$ROOT_ID" ]; then
|
||||
echo "You are not allowed to execute this program!"
|
||||
exit 1;
|
||||
fi
|
||||
if [ "$UID" -ne "$ROOT_ID" ]; then
|
||||
echo "You are not allowed to execute this program!"
|
||||
exit 1;
|
||||
fi
|
||||
}
|
||||
print_sys_info(){
|
||||
echo "System Time : $DATE"
|
||||
echo "Number of users: $NO_USERS"
|
||||
echo "System Uptime : $UPTIME
|
||||
echo "System Time : $DATE"
|
||||
echo "Number of users: $NO_USERS"
|
||||
echo "System Uptime : $UPTIME
|
||||
}
|
||||
check_root
|
||||
print_sys_info
|
||||
@ -101,9 +103,9 @@ $ sudo bash -n sys_info.sh
|
||||
|
||||
上面的语法检查操作的结果仍然显示在脚本的第 21 行还有一个错误。所以,我们仍然要纠正一些语法。
|
||||
|
||||
再一次分析脚本,会发现第 21 行的错误是由于在 `print_sys_info` 函数内最后一个 [echo 命令][8]中没有闭合双引号`(”)`。
|
||||
再一次分析脚本,会发现第 21 行的错误是由于在 `print_sys_info` 函数内最后一个 [echo 命令][8]中没有闭合双引号 `"`。
|
||||
|
||||
我们将在 echo 命令中添加闭合双引号并保存文件。修改过的脚本如下:
|
||||
我们将在 `echo` 命令中添加闭合双引号并保存文件。修改过的脚本如下:
|
||||
|
||||
```
|
||||
#!/bin/bash
|
||||
@ -113,15 +115,15 @@ DATE=`date`
|
||||
NO_USERS=`who | wc -l`
|
||||
UPTIME=`uptime`
|
||||
check_root(){
|
||||
if [ "$UID" -ne "$ROOT_ID" ]; then
|
||||
echo "You are not allowed to execute this program!"
|
||||
exit 1;
|
||||
fi
|
||||
if [ "$UID" -ne "$ROOT_ID" ]; then
|
||||
echo "You are not allowed to execute this program!"
|
||||
exit 1;
|
||||
fi
|
||||
}
|
||||
print_sys_info(){
|
||||
echo "System Time : $DATE"
|
||||
echo "Number of users: $NO_USERS"
|
||||
echo "System Uptime : $UPTIME"
|
||||
echo "System Time : $DATE"
|
||||
echo "Number of users: $NO_USERS"
|
||||
echo "System Uptime : $UPTIME"
|
||||
}
|
||||
check_root
|
||||
print_sys_info
|
||||
@ -158,31 +160,31 @@ $ sudo ./sys_info.sh
|
||||
|
||||
### shell 跟踪执行的重要性
|
||||
|
||||
shell 脚本跟踪帮助我们识别语法错误,更重要的是识别逻辑错误。例如,在`sys_info.sh` shell 脚本中的 `check_root` 函数,它用于确定用户是否为 root,因为脚本只允许由超级用户执行。
|
||||
shell 脚本跟踪可以帮助我们识别语法错误,更重要的是识别逻辑错误。例如,在 `sys_info.sh` shell 脚本中的 `check_root` 函数,它用于确定用户是否为 root,因为脚本只允许由超级用户执行。
|
||||
|
||||
```
|
||||
check_root(){
|
||||
if [ "$UID" -ne "$ROOT_ID" ]; then
|
||||
echo "You are not allowed to execute this program!"
|
||||
exit 1;
|
||||
fi
|
||||
if [ "$UID" -ne "$ROOT_ID" ]; then
|
||||
echo "You are not allowed to execute this program!"
|
||||
exit 1;
|
||||
fi
|
||||
}
|
||||
```
|
||||
|
||||
这里的魔法是由 `if 语句` 表达式 `["$ UID" -ne "$ ROOT_ID"]` 控制的,一旦我们不使用合适的数字运算符(示例中为 `-ne`,这意味着不相等),我们最终可能会出一个逻辑错误。
|
||||
这里的魔法是由 `if` 语句表达式 `["$ UID" -ne "$ ROOT_ID"]` 控制的,一旦我们不使用合适的数字运算符(示例中为 `-ne`,这意味着不相等),我们最终可能会出一个逻辑错误。
|
||||
|
||||
假设我们使用 `-eq` (意思是等于),这将允许任何系统用户以及 root 用户运行脚本,因此是一个逻辑错误。
|
||||
|
||||
```
|
||||
check_root(){
|
||||
if [ "$UID" -eq "$ROOT_ID" ]; then
|
||||
echo "You are not allowed to execute this program!"
|
||||
exit 1;
|
||||
fi
|
||||
if [ "$UID" -eq "$ROOT_ID" ]; then
|
||||
echo "You are not allowed to execute this program!"
|
||||
exit 1;
|
||||
fi
|
||||
}
|
||||
```
|
||||
|
||||
注意:我们在本系列开头介绍过,set 这个 shell 内置命令可以在 shell 脚本的特定部分激活调试。
|
||||
注意:我们在本系列开头介绍过,`set` 这个 shell 内置命令可以在 shell 脚本的特定部分激活调试。
|
||||
|
||||
因此,下面的行将帮助我们通过跟踪脚本的执行在其中找到这个逻辑错误:
|
||||
|
||||
@ -196,15 +198,15 @@ DATE=`date`
|
||||
NO_USERS=`who | wc -l`
|
||||
UPTIME=`uptime`
|
||||
check_root(){
|
||||
if [ "$UID" -eq "$ROOT_ID" ]; then
|
||||
echo "You are not allowed to execute this program!"
|
||||
exit 1;
|
||||
fi
|
||||
if [ "$UID" -eq "$ROOT_ID" ]; then
|
||||
echo "You are not allowed to execute this program!"
|
||||
exit 1;
|
||||
fi
|
||||
}
|
||||
print_sys_info(){
|
||||
echo "System Time : $DATE"
|
||||
echo "Number of users: $NO_USERS"
|
||||
echo "System Uptime : $UPTIME"
|
||||
echo "System Time : $DATE"
|
||||
echo "Number of users: $NO_USERS"
|
||||
echo "System Uptime : $UPTIME"
|
||||
}
|
||||
#turning on and off debugging of check_root function
|
||||
set -x ; check_root; set +x ;
|
||||
@ -212,7 +214,7 @@ print_sys_info
|
||||
exit 0
|
||||
```
|
||||
|
||||
保存文件并调用脚本,在输出中,我们可以看到一个普通系统用户可以在未 sudo 的情况下运行脚本。 这是因为 **USER_ID** 的值为 100,不等于 **ROOT_ID** 为 **0** 的 root。
|
||||
保存文件并调用脚本,在输出中,我们可以看到一个普通系统用户可以在未 sudo 的情况下运行脚本。 这是因为 `USER_ID` 的值为 100,不等于为 0 的 root 的 `ROOT_ID` 。
|
||||
|
||||
```
|
||||
$ ./sys_info.sh
|
||||
@ -223,7 +225,7 @@ $ ./sys_info.sh
|
||||
|
||||
**未 sudo 的情况下运行 shell 脚本**
|
||||
|
||||
那么,现在我们已经完成了[ shell 脚本调试系列][12],可以在下面的反馈栏里给我们关于本篇或者本系列提出问题或反馈。
|
||||
那么,现在我们已经完成了 [shell 脚本调试系列][12],可以在下面的反馈栏里给我们关于本篇或者本系列提出问题或反馈。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -244,9 +246,9 @@ via: http://www.tecmint.com/trace-shell-script-execution-in-linux/
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
[1]:http://www.tecmint.com/enable-shell-debug-mode-linux/
|
||||
[2]:http://www.tecmint.com/check-syntax-in-shell-script/
|
||||
[3]:http://www.tecmint.com/enable-shell-debug-mode-linux/
|
||||
[1]:https://linux.cn/article-8028-1.html
|
||||
[2]:https://linux.cn/article-8045-1.html
|
||||
[3]:https://linux.cn/article-8028-1.html
|
||||
[4]:http://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/
|
||||
[5]:http://www.tecmint.com/wp-content/uploads/2016/12/Shell-Tracing-Errors.png
|
||||
[6]:http://www.tecmint.com/wp-content/uploads/2016/12/Syntax-Checking-in-Script.png
|
||||
@ -255,4 +257,4 @@ via: http://www.tecmint.com/trace-shell-script-execution-in-linux/
|
||||
[9]:http://www.tecmint.com/wp-content/uploads/2016/12/Trace-Shell-Execution.png
|
||||
[10]:http://www.tecmint.com/wp-content/uploads/2016/12/Script-to-Show-Date-and-Uptime.png
|
||||
[11]:http://www.tecmint.com/wp-content/uploads/2016/12/Run-Shell-Script-Without-Sudo.png
|
||||
[12]:http://www.tecmint.com/enable-shell-debug-mode-linux/
|
||||
[12]:https://linux.cn/article-8028-1.html
|
@ -1,20 +1,19 @@
|
||||
PhotoRec – Recover Deleted or Lost Files in Linux
|
||||
在 Linux 系统下使用 PhotoRec & TestDisk 工具来恢复文件
|
||||
============================================================
|
||||
在 Linux 系统下使用 PhotoRec 工具来恢复已删除或丢失的文件
|
||||
|
||||
当你在系统中有意或无意地使用 'shift + delete‘ 组合键或者删除选项或是清空回收站的方式来删除一个文件时,该文件的内容并没有从硬盘(或是其它存储设备)上直接销毁。
|
||||
当你在系统中有意或无意地使用 `shift + delete` 组合键、删除选项,或是清空回收站的方式来删除一个文件时,该文件的内容并没有从硬盘(或是其它存储设备)上直接销毁。
|
||||
|
||||
它仅仅是从系统的目录结构中被移除,然后你在删除文件的目录下就看不到该文件了,但是这个文件仍然存在你磁盘中的某个位置上。
|
||||
|
||||
如果你有一个合适的工具和相关的专业知识,你就可以[从电脑中恢复已丢失的文件][1]。然而,随着你存储的文件越来越多,删除的文件将会被覆盖,你只能恢复最近删除的文件。
|
||||
如果你有一个合适的工具和相关的专业知识,你就可以[从电脑中恢复已丢失的文件][1]。然而,随着你存储的文件越来越多,删除的文件将会被覆盖,你可能只能恢复最近删除的文件了。
|
||||
|
||||
在这篇文章中,我们将阐明如何在 Linux 系统中使用磁盘分区修复工具来恢复硬盘上已删除或丢失的文件,这个非常优秀的免费修复工具叫做 PhotoRec 。
|
||||
在这篇文章中,我们将阐明如何在 Linux 系统中使用 **TestDisk** 来恢复硬盘上已删除或丢失的文件,它是非常优秀的修复工具,随一款免费的叫做 **PhotoRec** 的工具发布。
|
||||
|
||||
PhoteRec 工具用于从存储介质比如硬盘,数码相机和 cdrom 设备中恢复丢失的文件。
|
||||
**PhoteRec** 工具用于从存储介质比如硬盘,数码相机和 cdrom 设备中恢复丢失的文件。(LCTT 译注:PhotoRec 的意思是 Photo Recovery,不是 Photo Recorder。)
|
||||
|
||||
### 在 Linux 系统中安装磁盘分区修复工具(PhotoRec)
|
||||
### 在 Linux 系统中安装 TestDisk(PhotoRec)
|
||||
|
||||
在系统中执行以下相关的命令来安装磁盘分区修复工具:
|
||||
在系统中执行以下相关的命令来安装 **TestDisk**:
|
||||
|
||||
```
|
||||
------- On Debian/Ubuntu/Linux Mint -------
|
||||
@ -29,11 +28,11 @@ $ pacman -S testdisk
|
||||
$ emerge testdisk
|
||||
```
|
||||
|
||||
如果你的 Linux 系统 yum 源仓库中没有这个安装包,可以从 [这里][2] 下载然后在 Live CD 中运行即可。
|
||||
如果你的 Linux 系统仓库中没有这个安装包,可以从 [这里][2] 下载然后在 Live CD 中运行即可。
|
||||
|
||||
这个安装包也可以在其它应急修复 CD 工具中找到,比如 Gparted LiveCD 、 Parted Magic 、 Ubuntu Boot CD 、 Ubuntu-Rescue-Remix 及其它工具中也有。
|
||||
这个安装包也可以在应急修复 CD 工具中找到,比如 Gparted LiveCD 、 Parted Magic 、 Ubuntu Boot CD 、 Ubuntu-Rescue-Remix 及其它工具等。
|
||||
|
||||
安装完成之后,使用 root 账号权限打开控制台界面,启动 PhotoRec 工具,并指定已删除文件的分区:
|
||||
安装完成之后,使用 root 账号权限打开文本窗口,启动 **PhotoRec**,并指定已删除文件的分区:
|
||||
|
||||
```
|
||||
$ sudo photorec /dev/sda3
|
||||
@ -45,9 +44,9 @@ $ sudo photorec /dev/sda3
|
||||
![PhotoRec Data Recovery Tool for Linux](http://www.tecmint.com/wp-content/uploads/2017/01/PhotoRec-Data-Recovery-Tool.png)
|
||||
][3]
|
||||
|
||||
Linux 系统 PhotoRec 数据恢复工具
|
||||
*Linux 系统 PhotoRec 数据恢复工具*
|
||||
|
||||
使用左右箭头选择菜单选项,按 Enter 键确认。要继续恢复操作,选择 '[继续]' 并单击 Enter。
|
||||
使用左右箭头选择菜单选项,按回车键确认。要继续恢复操作,选择 `[Proceed]` 并单击 Enter。
|
||||
|
||||
你将看到下面的界面:
|
||||
|
||||
@ -55,53 +54,53 @@ Linux 系统 PhotoRec 数据恢复工具
|
||||
![Select Partition to Proceed File Recovery](http://www.tecmint.com/wp-content/uploads/2017/01/Select-Partition-to-Proceed-File-Recovery.png)
|
||||
][4]
|
||||
|
||||
选择分区进行文件恢复
|
||||
*选择分区进行文件恢复*
|
||||
|
||||
选择 '[选项]' 来查看可用的恢复选项,如下图所示:
|
||||
选择 `[Options]` 来查看可用的恢复选项,如下图所示:
|
||||
|
||||
[
|
||||
![Linux File Recovery Options](http://www.tecmint.com/wp-content/uploads/2017/01/Linux-File-Recovery-Options.png)
|
||||
][5]
|
||||
|
||||
Linux 系统文件恢复选项
|
||||
*Linux 系统文件恢复选项*
|
||||
|
||||
按 `Q` 返回,在下图界面,你可以指定你想要查询并恢复的文件扩展名。因此,选择 '[文件选项]' ,按 Enter 键确认。
|
||||
按 `Q` 返回,在下图界面,你可以指定你想要查询并恢复的文件扩展名。因此,选择 `[File Opt]`,按回车键确认。
|
||||
|
||||
按 's' 停止或启用所有文件扩展名,如果你已经停止所有文件扩展,只需要使用向右箭头选择你想要恢复的文件类型即可(或者按向左箭头取消选择)。
|
||||
按 `s` 来选择或取消选择所有的文件扩展名,如果你已经取消选择了所有的文件扩展名,只需要使用向右箭头选择你想要恢复的文件类型即可(或者按向左箭头取消选择)。
|
||||
|
||||
例如,我想恢复所有系统中丢失的 ’.mov‘ 类型的文件:
|
||||
例如,我想恢复所有系统中丢失的 `.mov` 类型的文件:
|
||||
|
||||
[
|
||||
![Specify Recovery File Type](http://www.tecmint.com/wp-content/uploads/2017/01/Specify-Recovery-File-Type.png)
|
||||
][6]
|
||||
|
||||
指定恢复文件类型
|
||||
*指定恢复文件类型*
|
||||
|
||||
按 ‘b’ 键保存设置,之后你应该看到如下图所示信息。单击 Enter 键返回(或者按 ‘Q' 键),再将按 ’Q' 键返回到主界面。
|
||||
按 `b` 键保存设置,之后你应该看到如下图所示信息。单击回车键返回(或者按 `Q` 键),再按 `Q` 键返回到主界面。
|
||||
|
||||
[
|
||||
![Save File Recovery Settings](http://www.tecmint.com/wp-content/uploads/2017/01/Save-File-Recovery-Settings.png)
|
||||
][7]
|
||||
|
||||
保存文件恢复设置
|
||||
*保存文件恢复设置*
|
||||
|
||||
现在选择 '[查询]' 开始文件恢复。在下图中,选择存储文件分区的文件系统类型,然后按 Enter 键。
|
||||
现在选择 `[Search]` 开始文件恢复。在下图中,选择存储文件分区的文件系统类型,然后按回车键。
|
||||
|
||||
[
|
||||
![Select Filesystem to Recover Deleted Files](http://www.tecmint.com/wp-content/uploads/2017/01/Select-Filesystem-to-Recover-Files.png)
|
||||
][8]
|
||||
|
||||
选择文件系统类型来恢复删除的文件
|
||||
*选择文件系统类型来恢复删除的文件*
|
||||
|
||||
下一步,如下图所示,选择是否对空闲空间或者是整个分区进行分析。注意选择整个分区将会让操作过程变得更长更慢。选择合适的选项后,按 Enter 键继续。
|
||||
下一步,如下图所示,选择是仅对空闲空间还是整个分区进行分析。注意选择整个分区将会让操作过程变得更长更慢。选择合适的选项后,按回车键继续。
|
||||
|
||||
[
|
||||
![Choose Filesystem to Analyze](http://www.tecmint.com/wp-content/uploads/2017/01/Select-Filesystem-to-Analyze.png)
|
||||
][9]
|
||||
|
||||
选择文件系统进行分析
|
||||
*选择文件系统进行分析*
|
||||
|
||||
注意选择一个目录用于存储将要恢复的文件,选择完成之后,按 ’C' 键继续。选择不同分区的目录以避免当更多的文件存储在这个分区时覆盖掉已删除的文件。
|
||||
选择一个目录用于存储将要恢复的文件,选择完成之后,按 `C` 键继续。选择不同分区的目录,以避免当更多的文件存储在这个分区时覆盖掉已删除的文件。
|
||||
|
||||
按向左箭头返回到根分区下。
|
||||
|
||||
@ -109,27 +108,27 @@ Linux 系统文件恢复选项
|
||||
![Select Directory to Save Recovered Files](http://www.tecmint.com/wp-content/uploads/2017/01/Select-Directory-to-Save-Recovered-Files.png)
|
||||
][10]
|
||||
|
||||
选择要保存恢复文件的目录
|
||||
*选择要保存恢复文件的目录*
|
||||
|
||||
下图显示正在被恢复的指定类型的已删除文件。你可以按 Enter 键来停止操作。
|
||||
下图显示正在被恢复的指定类型的已删除文件。你可以按回车键来停止操作。
|
||||
|
||||
注意:在恢复的过程中,你的系统会变得很慢,很可能会卡住一段时间,请耐心等待直至恢复完成。
|
||||
**注意**:在恢复的过程中,你的系统会变得很慢,很可能会卡住一段时间,请耐心等待直至恢复完成。
|
||||
|
||||
[
|
||||
![Recovering Deleted Files in Linux](http://www.tecmint.com/wp-content/uploads/2017/01/Recover-Deleted-Files-in-Linux.png)
|
||||
][11]
|
||||
|
||||
在 Linux 系统中恢复已删除的文件
|
||||
*在 Linux 系统中恢复已删除的文件*
|
||||
|
||||
最后, Photorec 工具将会显示出已恢复文件的数量及保存的路径。
|
||||
最后, **Photorec** 工具将会显示出已恢复文件的数量及保存的路径。
|
||||
|
||||
[
|
||||
![Linux File Recovery Summary](http://www.tecmint.com/wp-content/uploads/2017/01/Linux-File-Recovery-Summary.png)
|
||||
][12]
|
||||
|
||||
Linux 文件恢复总结
|
||||
*Linux 文件恢复情况汇总*
|
||||
|
||||
默认情况下,已恢复的文件将会以 root 账号权限被保存,因此,你需要以提升权限的方式打开文件管理器来访问这些文件。
|
||||
默认情况下,已恢复的文件将会以 root 账号权限保存,因此,你需要以提升权限的方式打开文件管理器来访问这些文件。
|
||||
|
||||
使用如下命令(指定你的文件管理器):
|
||||
|
||||
@ -157,12 +156,12 @@ via: http://www.tecmint.com/photorec-recover-deleted-lost-files-in-linux/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[rusking](https://github.com/rusking)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
[1]:http://www.tecmint.com/recover-deleted-file-in-linux/
|
||||
[1]:https://linux.cn/article-7974-1.html
|
||||
[2]:http://www.cgsecurity.org/wiki/TestDisk_Download
|
||||
[3]:http://www.tecmint.com/wp-content/uploads/2017/01/PhotoRec-Data-Recovery-Tool.png
|
||||
[4]:http://www.tecmint.com/wp-content/uploads/2017/01/Select-Partition-to-Proceed-File-Recovery.png
|
@ -1,3 +1,6 @@
|
||||
|
||||
translating by ypingcn
|
||||
|
||||
How to choose your first programming language
|
||||
============================================================[
|
||||
|
||||
|
@ -1,3 +1,6 @@
|
||||
|
||||
translating by ynmlml
|
||||
|
||||
Tips for non-native English speakers working on open source projects
|
||||
============================================================
|
||||
![Tips for non-native English speakers working on open source projects](https://opensource.com/sites/default/files/styles/image-full-size/public/images/life/world_hands_diversity.png?itok=LMT5xbxJ "Tips for non-native English speakers working on open source projects")
|
||||
|
@ -1,3 +1,5 @@
|
||||
Tarnslating by Yinr
|
||||
|
||||
The Beginner’s Guide to Start Using Vim
|
||||
============================================================
|
||||
![](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2012/03/vim-beginner-guide-featured.jpg "The Beginner's Guide to Start Using Vims")
|
||||
|
@ -1,6 +1,7 @@
|
||||
ucasFL translating
|
||||
5 Vim Tips and Tricks for Experienced Users
|
||||
============================================================
|
||||
![](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2014/08/vim-tips-tricks-featured.jpg "5 Vim Tips and Tricks for Experienced Userss")
|
||||
![](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2014/08/vim-tips-tricks-featured.jpg "5 Vim Tips and Tricks for Experienced Userss")
|
||||
|
||||
This article is part of the [VIM User Guide][12] series:
|
||||
|
||||
@ -30,7 +31,7 @@ Once inside the editor, use the `:next` or `:n` command to move to the next
|
||||
|
||||
At any point if it is required to list down currently opened files, use the `:ls` command. See the screen shot shown below.
|
||||
|
||||
![vim-ls](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2014/08/vim-ls.png "vim-ls")
|
||||
![vim-ls](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2014/08/vim-ls.png "vim-ls")
|
||||
|
||||
Note that “%a” represents the file in the current active window, while “#” represents the file in the previous active window.
|
||||
|
||||
@ -66,7 +67,7 @@ Open one of the two files and then split the Vim window to open the other file.
|
||||
|
||||
will split the window and open “test.c”.
|
||||
|
||||
![vim-split](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2014/08/vim-split.png "vim-split")
|
||||
![vim-split](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2014/08/vim-split.png "vim-split")
|
||||
|
||||
Observe that the command split the Vim window horizontally. In case you want to split the window vertically, you can do so using the `vsplit` command. Once both the files are opened, copy the stuff from one file, press “Ctrl + w” to switch the control to another file, and paste.
|
||||
|
||||
@ -74,7 +75,7 @@ Observe that the command split the Vim window horizontally. In case you want to
|
||||
|
||||
There are times when you realize that a file is read-only only after making a bunch of changes to it.
|
||||
|
||||
![vim-sudo](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2014/08/vim-sudo.png "vim-sudo")
|
||||
![vim-sudo](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2014/08/vim-sudo.png "vim-sudo")
|
||||
|
||||
Although closing the file and reopening it with the required permissions is a way out, it’s a sheer waste of time if you’ve already made a lot of changes, as all of them will be lost during the process. Vim provides you a way to handle this situation by allowing you to change the file permissions from within the editor before you save it. The command for this is:
|
||||
|
||||
@ -90,7 +91,7 @@ The command will ask you for the password, just like `sudo` does on the comman
|
||||
|
||||
Most of the experienced programmers work on Vim with auto indentation enabled. Although it’s a time-saving practice, it creates a problem while pasting an already indented code. For example, this is what happened when I pasted an already indented code into a file opened in Vim editor with auto indent on.
|
||||
|
||||
![vim-indentation](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2014/08/vim-indentation.png "vim-indentation")
|
||||
![vim-indentation](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2014/08/vim-indentation.png "vim-indentation")
|
||||
|
||||
The solution to this problem is the `pastetoggle` option. Add the line
|
||||
|
||||
|
@ -1,242 +0,0 @@
|
||||
# rusking translating
|
||||
|
||||
How Linux got to be Linux: Test driving 1993-2003 distros
|
||||
============================================================
|
||||
|
||||
### Enjoy a trip down Linux memory lane as we take early distros for a spin.
|
||||
|
||||
![How Linux got to be Linux: Test driving 1993-2003 distros](https://opensource.com/sites/default/files/styles/image-full-size/public/images/life/car-penguin-drive-linux-yellow.png?itok=ueZE5mph "How Linux got to be Linux: Test driving 1993-2003 distros")
|
||||
|
||||
Image by :
|
||||
|
||||
Internet Archive [Book][7] [Images][8]. Modified by Opensource.com. CC BY-SA 4.0
|
||||
|
||||
A unique trait of open source is that it's never truly EOL (End of Life). The disc images mostly remain online, and their licenses don't expire, so going back and installing an old version of Linux in a virtual machine and getting a precise picture of what progress Linux has made over the years is relatively simple.
|
||||
|
||||
We begin our journey with Slackware 1.01, posted to the **comp.os.linux.announce** newsgroup well over 20 years ago.
|
||||
|
||||
### Slackware 1.01 (1993)
|
||||
|
||||
![slackware 1.0 screenshot](https://opensource.com/sites/default/files/slack1.png "slackware 1.0 screenshot")
|
||||
|
||||
Slackware 1.01
|
||||
|
||||
The best part about trying Slackware 1.01 is that there's a pre-made image in Qemu's [2014 series][9] of free images, so you don't have to perform the install manually (don't get used to this luxury).
|
||||
|
||||
```
|
||||
$ qemu-kvm -m 16M -drive if=ide,format=qcow2,file=slackware.qcow2 \
|
||||
-netdev user,id=slirp -device ne2k_isa,netdev=slirp \
|
||||
-serial stdio -redir tcp:22122::22
|
||||
```
|
||||
|
||||
Many things in 1993's version of Linux works just as you'd expect. All the basic commands, such as `ls` and `cd` work, all the basic tools (`gawk`, `cut`, `diff`, `perl`, and of course [Volkerding][10]'s favorite `elvis`) are present and accounted for, but some of the little things surprised me. `BASH` courteously asks for confirmation when you try to tab-complete hundreds of files, and tools to inspect compressed files (such as `zless` and `zmore` and `zcat`) already existed. In more ways than I'd expected, the system feels surprisingly modern.
|
||||
|
||||
What's missing is any notion of package management. All installs and uninstalls are entirely manual, with no tracking.
|
||||
|
||||
Over all, Slackware 1.01 feels a lot like a fairly modern UNIX—or more appropriately, it feels like modern UNIX might feel to a Linux user. Most everything is familiar, but there are differences here and there. Not nearly as much a difference as you might expect from an operating system released in 1993!
|
||||
|
||||
### Debian 0.91 (1994)
|
||||
|
||||
To try Debian 0.91, I used the floppy disk images available on the [Ibiblio digital archive][11], originally posted in 1994\. The commands to boot:
|
||||
|
||||
```
|
||||
$ gunzip bootdsk.gz basedsk1.gz basedsk2.gz
|
||||
$ qemu-system-i386 -M pc -m 64 -boot order=ac,menu=on \
|
||||
-drive file=bootdisk,if=floppy,format=raw \
|
||||
-drive file=debian.raw,if=ide,format=raw \
|
||||
-device ne2k_isa,netdev=slirp \
|
||||
-serial msmouse -vga std \
|
||||
-redir tcp:22122::22 \
|
||||
-netdev user,id=slirp
|
||||
```
|
||||
|
||||
The bootdisk for Debian 0.91 boots to a simple shell, with clear instructions on the steps you're meant to take next.
|
||||
|
||||
The install process is surprisingly smooth. It works off of a menu system with seven steps—from partitioning a hard drive and writing the ext2 filesystem to it, all the way through to copying the `basedsk` images. This provided a minimal Debian install with many of the familiar conventions any modern Linux user would expect from their OS.
|
||||
|
||||
Debian is now famous for its package management system, but there are mere hints of that in this early release. The `dpkg` command exists, but it's an interactive menu-based system—a sort of clunky `aptitude`, with several layers of menu selections and, unsurprisingly, a fraction of available packages.
|
||||
|
||||
Even so, you can sense the convenience factor in the design concept. You download three floppy images and end up with a bootable system, and then use a simple text menu to install more goodies. I sincerely see why Debian made a splash.
|
||||
|
||||
### Jurix/S.u.S.E. (1996)
|
||||
|
||||
![Jurix install screen](https://opensource.com/sites/default/files/jurix_install.png "Jurix install screen")
|
||||
|
||||
Jurix installation
|
||||
|
||||
A pre-cursor to SUSE, Jurix shipped with binary `.tgz` packages organized into directories resembling the structure of Slackware's install packages. The installer itself is also similar to Slackware's installer.
|
||||
|
||||
```
|
||||
$ qemu-system-i386 -M pc -m 1024 \
|
||||
-boot order=ac,menu=on \
|
||||
-drive \
|
||||
file=jurix/install,if=floppy,format=raw \
|
||||
-drive file=jurix.img,if=ide \
|
||||
-drive file=pkg.raw,if=ide,format=raw \
|
||||
-device ne2k_isa,netdev=slirp \
|
||||
-serial msmouse -vga std \
|
||||
-redir tcp:22122::22 \
|
||||
-netdev user,id=slirp
|
||||
```
|
||||
|
||||
Because I wasn't specifically looking for the earliest instance, Jurix was the first Linux distribution I found that really "felt" like it intended the user to use a GUI environment. [XFree86][12] is installed by default, so if you didn't intend to use it, you had to opt out.
|
||||
|
||||
An example `/usr/lib/X11/XF86Config` (this later became `Xorg.conf`) file was provided, and that got me 90% of the way to a GUI, but fine-tuning `vsync`, `hsync`, and `ramdac` colormap overrides took me an entire weekend until I finally gave up.
|
||||
|
||||
Installing new packages on Jurix was simple; find a `.tgz` on your sources drive, and run a routine `tar` command: ` $ su -c 'tar xzvf foo.tgz -C /'`The package gets unzipped and unarchived to the root partition, and ready to use. I did this with several packages I hadn't installed to begin with, and found it easy, fast, and reliable.
|
||||
|
||||
### SUSE 5.1 (1998)
|
||||
|
||||
![suse install](https://opensource.com/sites/default/files/suse5fvwm.png "suse install")
|
||||
|
||||
FVWM running on SuSE 5.1
|
||||
|
||||
I installed SUSE 5.1 from a InfoMagic CD-ROM purchased from a software store in Maryland in 1998.
|
||||
|
||||
```
|
||||
$ qemu-system-i386 -M pc-0.10 -m 64 \
|
||||
-boot order=ad,menu=on \
|
||||
-drive file=floppy.raw,if=floppy,format=raw \
|
||||
-cdrom /dev/sr0 \
|
||||
-drive file=suse5.raw,if=ide,format=raw \
|
||||
-vga cirrus -serial msmouse
|
||||
```
|
||||
|
||||
The install process was convoluted compared to those that came before. YaST volleyed configuration files and settings between a floppy disk and the boot CD-ROM, requiring several reboots and a few restarts as I tried to understand the sequence expected from me. Once I'd failed the process twice, I got used to the way YaST worked, and the third time was smooth and very much a hint at the Linux user experience to come in later years.
|
||||
|
||||
A GUI environment was my main goal for SUSE 5.1\. The configuration process was familiar, with a few nice graphical tools (including a good `XF86Setup`frontend) to help test and debug mouse and monitor problems. It took less than an hour to get a GUI up and running, and most of the delay was caused by my own research on what resolutions and color depths Qemu's virtualized video card could handle.
|
||||
|
||||
Included desktops were `fvwm`, `fvwm2`, and `ctwm`. I used `fvwm`, and it worked as expected. I even discovered `tkDesk`, a dock and file manager combo pack that is surprisingly similar to Ubuntu's `Unity` launcher bar.
|
||||
|
||||
The experience was, over all, very pleasant, and in terms of getting a successful desktop up and running, SUSE 5.1 was a rousing success.
|
||||
|
||||
### Red Hat 6.0 (1999)
|
||||
|
||||
![Red Hat 1999](https://opensource.com/sites/default/files/redhat6_gimp_0.png "Red Hat 1999")
|
||||
|
||||
Red Hat 6 running GIMP 1.x
|
||||
|
||||
The next install disc I happened to have lying around was Red Hat 6.0\. That's not RHEL 6.0—just Red Hat 6.0\. This was a desktop distribution sold in stores, before RHEL or Fedora existed. The disc I used was purchased in June 1999.
|
||||
|
||||
```
|
||||
$ qemu-system-i386 -M pc-0.10 -m 512 \
|
||||
-boot order=ad,menu=on \
|
||||
-drive file=redhat6.raw,if=ide,format=raw \
|
||||
-serial msmouse -netdev user,id=slirp \
|
||||
-vga cirrus -cdrom /dev/sr0
|
||||
```
|
||||
|
||||
The installation was fully guided and remarkably fast. You never have to leave the safety of the install process, whether choosing what packages to install (grouped together in **Workstation**, **Server**, and **Custom** groups), partitioning a drive, or kicking off the install.
|
||||
|
||||
Red Hat 6 included an `xf86config` application to step you through X configuration, although it strangely allowed some mouse emulation options that X later claimed were invalid. It beat editing the Xf86Config file, but getting X correct was still clearly not a simple task.
|
||||
|
||||
The desktop bundled with Red Hat 6 was, as it still is, GNOME, but the window manager was an early [Enlightenment][13], which also provided the main sound daemon. `Xdm` and `gdm` were both provided as login managers so that normal users could log in without having the permission to start or kill X itself, which is particularly important on multi-user systems.
|
||||
|
||||
Certain staple applications are missing; `gedit` didn't exist yet, there's no grand unified office application, and there was no package manager to speak of. `GnoRPM`, a GUI interface for RPM installation, review, and removal, was the closest to a `yum` or `PackageKit` experience it had, and `gnotepad+` is the GUI text editor (Emacs notwithstanding, obviously).
|
||||
|
||||
Over all, though, the desktop is intuitive. Unlike later implementations of GNOME, this early version featured a panel at the bottom of the screen, with an application menu and launcher icons and virtual desktop control in a central location. I can't imagine a user of another operating system at the time finding this environment foreign.
|
||||
|
||||
Red Hat 6 was a strong entry for Linux, which was obviously moving seriously toward being a proper desktop OS.
|
||||
|
||||
### Mandrake 8.0 (2001)
|
||||
|
||||
![Mandrake 8.0 installer](https://opensource.com/sites/default/files/mandrake8.png "Mandrake 8.0 installer")
|
||||
|
||||
Mandrake: A turning point in Linux
|
||||
|
||||
Mandrake 8.0 was released in 2001, so it would have been compared to, for instance, Apple OS 9.2 and Windows ME.
|
||||
|
||||
I fell back on fairly old emulated tech to be safe.
|
||||
|
||||
```
|
||||
$ qemu-system-i386 \
|
||||
-M pc-0.10 -m 2048 \
|
||||
-boot order=ad,menu=on \
|
||||
-drive file=mandrake8.qcow2 \
|
||||
-usb -net nic,model=rtl8139 \
|
||||
-netdev user,id=slirp \
|
||||
-vga cirrus \
|
||||
-cdrom mandrake-8.0-i386.iso
|
||||
```
|
||||
|
||||
I'd thought the Red Hat installation process had been nice, but Mandrake's was amazing. It was friendly, it gave the user a chance to test configurations before continuing, it was easy and fast, and it worked almost like magic. I didn't even have to import my `XF86Config` file, because Mandrake's installer got it right.
|
||||
|
||||
![Mandrake install](https://opensource.com/sites/default/files/mandrake8install_new.png "Mandrake install")
|
||||
|
||||
Mandrake 8.0 installer
|
||||
|
||||
Using the Mandrake desktop is a lot like using any given desktop of the time, actually. I was a little surprised at how similar the experience was. I feel certain that if I'd somehow stumbled into Mandrake Linux at this time, it actually wouldn't have been beyond my ability, even as a young and not very technical user. The interfaces are intuitive, the documentation helpful, and the package management quite natural, for a time when it still wasn't yet the mental default for people to just go to a website and download an installer for whatever software they wanted.
|
||||
|
||||
### Fedora 1 (2003)
|
||||
|
||||
![Fedora Core install](https://opensource.com/sites/default/files/fedora1.png "Fedora Core install")
|
||||
|
||||
Blue Fedora, Red Hat
|
||||
|
||||
In 2003, the new Fedora Core distribution was released. Fedora Core was based on Red Hat, and was meant to carry on the banner of desktop Linux once Red Hat Enterprise Linux (RHEL) became the flagship product of the company.
|
||||
|
||||
Nothing particularly special is required to boot the old Fedora Core 1 disc:
|
||||
|
||||
```
|
||||
$ qemu-system-i386 -M pc \
|
||||
-m 2048 -boot order=ac,menu=on \
|
||||
-drive file=fedora1.qcow2 -usb \
|
||||
-net nic,model='rtl8139' -netdev user \
|
||||
-vga cirrus -cdrom fedora-1-i386-cd1.iso
|
||||
```
|
||||
|
||||
Installing Fedora Core is simple and familiar; it uses the same installer as Fedora and Red Hat for the next 9 years. It's a graphical interface that's easy to use and easy to understand.
|
||||
|
||||
![Fedora Anaconda](https://opensource.com/sites/default/files/fedora1anaconda.png "Fedora Anaconda")
|
||||
Anaconda GUI
|
||||
|
||||
The Fedora Core experience is largely indistinguishable from Red Hat 6 or 7\. The GNOME desktop is polished, there are all the signature configuration helper applications, and the presentation is clean and professional.
|
||||
|
||||
A _Start Here_ icon on the desktop guides the user toward three locations: an _Applications_ folder, the _Preferences_ panel, and _System Settings_. A red hat icon marks the applications menu, and the lower GNOME panel holds all the latest Linux application launchers, including the OpenOffice office suite and the Mozilla browser.
|
||||
|
||||
### The future
|
||||
|
||||
By the early 2000s, it's clear that Linux has well and truly hit its stride. The desktop is more polished than ever, the applications available want for nothing, the installation is easier and more efficient than other operating systems. In fact, from the early 2000s onward, the relationship between the user and the system is firmly established and remains basically unchanged even today. There are some changes, and of course several updates and improvements and a staggering amount of innovation.
|
||||
|
||||
Project names come and go:
|
||||
|
||||
* Mandrake became Mandriva and then [Mageia][1];
|
||||
* Fedora Core became just [Fedora][2];
|
||||
* [Ubuntu][3] popped up from [Debian][4] and helped make "Linux" a household term;
|
||||
* Valve has made [SteamOS][5] the official basis for its gaming platform; and
|
||||
* [Slackware][6] quietly continues to this day.
|
||||
|
||||
Whether you're new to Linux, or whether you're such an old hand that most of these screenshots have been more biographical than historical, it's good to be able to look back at how one of the largest open source projects in the world has developed. More importantly, it's exciting to think of where Linux is headed and how we can all be a part of that, starting now, and for years to come.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/profile_pictures/public/penguinmedallion200x200.png?itok=ROQSR50J)
|
||||
|
||||
Seth Kenlon - Seth Kenlon is an independent multimedia artist, free culture advocate, and UNIX geek. He is one of the maintainers of the Slackware-based multimedia production project, http://slackermedia.ml
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/16/12/yearbook-linux-test-driving-distros
|
||||
|
||||
作者:[Seth Kenlon][a]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/seth
|
||||
[1]:http://mageia.org/
|
||||
[2]:http://fedoraproject.org/
|
||||
[3]:http://ubuntu.com/
|
||||
[4]:http://debian.org/
|
||||
[5]:http://store.steampowered.com/steamos
|
||||
[6]:http://slackware.com/
|
||||
[7]:https://www.flickr.com/photos/internetarchivebookimages/14746482994/in/photolist-ot6zCN-odgbDq-orm48o-otifuv-otdyWa-ouDjnZ-otGT2L-odYVqY-otmff7-otGamG-otnmSg-rxnhoq-orTmKf-otUn6k-otBg1e-Gm6FEf-x4Fh64-otUcGR-wcXsxg-tLTN9R-otrWYV-otnyUE-iaaBKz-ovcPPi-ovokCg-ov4pwM-x8Tdf1-hT5mYr-otb75b-8Zk6XR-vtefQ7-vtehjQ-xhhN9r-vdXhWm-xFBgtQ-vdXdJU-vvTH6R-uyG5rH-vuZChC-xhhGii-vvU5Uv-vvTNpB-vvxqsV-xyN2Ai-vdXcFw-vdXuNC-wBMhes-xxYmxu-vdXxwS-vvU8Zt
|
||||
[8]:https://www.flickr.com/photos/internetarchivebookimages/14774719031/in/photolist-ovAie2-otPK99-xtDX7p-tmxqWf-ow3i43-odd68o-xUPaxW-yHCtWi-wZVsrD-DExW5g-BrzB7b-CmMpC9-oy4hyF-x3UDWA-ow1m4A-x1ij7w-tBdz9a-tQMoRm-wn3tdw-oegTJz-owgrs2-rtpeX1-vNN6g9-owemNT-x3o3pX-wiJyEs-CGCC4W-owg22q-oeT71w-w6PRMn-Ds8gyR-x2Aodm-owoJQm-owtGp9-qVxppC-xM3Gw7-owgV5J-ou9WEs-wihHtF-CRmosE-uk9vB3-wiKdW6-oeGKq3-oeFS4f-x5AZtd-w6PNuv-xgkofr-wZx1gJ-EaYPED-oxCbFP
|
||||
[9]:http://www.qemu-advent-calendar.org/2014
|
||||
[10]:http://www.slackware.com/~volkerdi/
|
||||
[11]:https://ibiblio.org/pub/historic-linux/distributions/debian-0.91/debian-0.91/dist
|
||||
[12]:http://www.xfree86.org/
|
||||
[13]:http://enlightenment.org/
|
@ -1,9 +1,10 @@
|
||||
ucasFL translating
|
||||
Top 10 open source projects of 2016
|
||||
============================================================
|
||||
|
||||
### In our annual list of the year's top open source projects, we look back at popular projects our writers covered in 2016, plus favorites our Community Moderators picked.
|
||||
|
||||
![Top 10 open source projects of 2016](https://opensource.com/sites/default/files/styles/image-full-size/public/images/law/bowling-10-ten-520_cc.png?itok=Jd1FYLWt "Top 10 open source projects of 2016")
|
||||
![Top 10 open source projects of 2016](https://opensource.com/sites/default/files/styles/image-full-size/public/images/law/bowling-10-ten-520_cc.png?itok=Jd1FYLWt "Top 10 open source projects of 2016")
|
||||
|
||||
Image by : [George Eastman House][1] and [Internet Archive Book Images][2]. Modified by Opensource.com. CC BY-SA 4.0
|
||||
|
||||
|
@ -1,79 +0,0 @@
|
||||
Block Ads on All Your Devices at Home with Pi-hole and an Orange Pi
|
||||
============================================================
|
||||
|
||||
|
||||
Do you find it irritating having to set up an ad blocker on your computer web browsers, smart phones, and tablets? I sure do. And then there are some ‘smart’ devices at home that don’t appear to have ad blocking software of any kind. Well, I learned about [Pi-hole][2] which is ad blocking software for your pi board and it blocks all the advertisements on your home network before they get to your various devices. It gives you the ability to black list or white list any domain, plus it has a great dashboard that gives you insights into your home network’s most accessed domains/web sites, most active devices, and most frequent advertisers.
|
||||
|
||||
Pi-hole was really targeted to run on the Raspberry Pi but I wanted to know if it would work on my inexpensive Orange Pi running Armbian Linux. Well, it absolutely does! Below is my process for getting Pi-hole up and running quickly.
|
||||
|
||||
### Installing Pi-hole
|
||||
|
||||
Installing Pi-hole is done using the terminal, so open a terminal on your Orange Pi’s desktop or ssh into the pi board.
|
||||
|
||||
You will be downloading the software, so navigate to a directory of your choosing, making sure that you have write privileges. Like this:
|
||||
|
||||
```
|
||||
cd <your preferred directory>/
|
||||
```
|
||||
|
||||
I deviated from the “one command” installation on the Pi-hole home page. I mean, they do say right underneath that command that “piping to bash can be dangerous” and that a local install is “safer.” So, here’s my local installation steps:
|
||||
|
||||
```
|
||||
git clone --depth 1 https://github.com/pi-hole/pi-hole.git Pi-hole
|
||||
cd Pi-hole/automated\ install/
|
||||
./basic-install.sh
|
||||
```
|
||||
|
||||
If you are not logged in as the root user, then the basic-install script will prompt you to enter your password before continuing. If needed, the script will download and install some prerequisite Linux packages. Then it’ll provide you with a simple blue/red graphical interface, prompting you to answer a few questions about how you want Pi-hole configured. In my experience, simply accepting the defaults was fine and I later discovered that the Pi-hole web application enables you to change settings like DNS provider.
|
||||
|
||||
The script will tell you what the password is for Pi-hole both in the graphical interface and in the terminal. Do take note of that password!
|
||||
|
||||
The script will also tell you the web address for Pi-hole, which should be like this:
|
||||
|
||||
```
|
||||
http://<your pi’s IP address>/admin
|
||||
```
|
||||
|
||||
or even something like:
|
||||
|
||||
```
|
||||
http://orangepipc/admin
|
||||
```
|
||||
|
||||
You will need enter your Pi-hole password, and then you should get a nice dashboard that looks something like this:
|
||||
|
||||
![Ph-hole](https://i1.wp.com/piboards.com/wp-content/uploads/2017/01/ph-hole.png?resize=640%2C532)
|
||||
|
||||
Remember to change the DNS setting on your home network router so it that uses the address of your pi board. Otherwise, the ads won’t be filtered!
|
||||
|
||||
The instructions above are more or less the same as the alternative “safe” method as provided by the Pi-hole web site despite the fact that Armbian is not listed as an officially supported operating system. I believe that these instructions should work on a Raspberry Pi or other pi board running some form of Debian based Linux operating system. However, I haven’t tested that and I would be interested to hear your experience (just drop me a brief comment, please).
|
||||
|
||||
|
||||
### Thoughts and Observations
|
||||
|
||||
After running Pi-hole for a while an studying the information in the Pi-hole dashboard, I found that there was a lot more network activity going on than I was aware of, not all of which did I approve of. For example, there were some ‘interesting’ connections going out from my kid’s devices related to game apps that I wonder about, plus social networking apps were apparently sending some data continuously which bothered me. Altogether, whether it was benign traffic or not, I was glad to reduce the traffic load even if by a little…I mean, why should I be content to allow apps and ads to eat up my network traffic for things I don’t want or care about? Well, now they are blocked. Period.
|
||||
|
||||
Setting up an Orange Pi for ad blocking like this is cheap, easy, and helps to put my mind at ease about limiting some unwanted traffic to/from my home network (especially where the kids are involved). If you are interested, you can see my previous post about how to [easily setting up an Orange Pi][3] and check out how cheap the Orange Pis are at the links below. I believe that it is a worthwhile investment.
|
||||
|
||||
Orange Pi on Amazon (affiliate link): [Orange Pi PC Single Board Computer Quad Core ARM Cortex-A7 1GB DDR3 4K Decode][4]
|
||||
|
||||
[Orange Pi store on AliExpress][5] (affiliate link).
|
||||
|
||||
EDIT: The irony of this post is that if you successfully set up Pi-hole, then affiliate links on this site (s.click.aliexpress.com) gets blocked. White list that if you like, you are in control.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://piboards.com/2017/01/07/block-ads-on-all-your-devices-at-home-with-pi-hole-and-an-orange-pi/
|
||||
|
||||
作者:[MIKE WILMOTH][a]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://piboards.com/author/piguy/
|
||||
[1]:http://s.click.aliexpress.com/deep_link.htm?aff_short_key=N3VJQBY&dl_target_url=http://best.aliexpress.com
|
||||
[2]:https://pi-hole.net/
|
||||
[3]:http://piboards.com/2017/01/04/easy-set-up-orange-pi/
|
||||
[4]:https://www.amazon.com/gp/product/B018W6OTIM/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B018W6OTIM&linkCode=as2&tag=piboards-20&linkId=ac292a536d58eabf1ee73e2c575e1111
|
||||
[5]:http://s.click.aliexpress.com/e/bAMVj2R
|
@ -1,3 +1,6 @@
|
||||
vim-kakali translating
|
||||
|
||||
|
||||
How to record a region of your desktop as animated GIF on Linux
|
||||
============================================================
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
ucasFL translating
|
||||
3 Useful VIM Editor Tips and Tricks for Advanced Users
|
||||
============================================================
|
||||
|
||||
![](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2017/01/vim-featured.jpg "3 Useful VIM Editor Tips and Tricks for Advanced Userss")
|
||||
![](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2017/01/vim-featured.jpg "3 Useful VIM Editor Tips and Tricks for Advanced Userss")
|
||||
|
||||
This article is part of the [VIM User Guide][12] series:
|
||||
|
||||
@ -52,7 +53,7 @@ Thankfully, with Vim you can just write some initial letters of the variable. Wi
|
||||
|
||||
Here’s this feature in action.
|
||||
|
||||
![vim-keyword-completion1](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2017/01/vim-keyword-completion1.jpg "vim-keyword-completion1")
|
||||
![vim-keyword-completion1](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2017/01/vim-keyword-completion1.jpg "vim-keyword-completion1")
|
||||
|
||||
As is clear from the screenshot above, the list that pops up also contains words from other source files. For more information on this feature, head [here][18].
|
||||
|
||||
|
@ -1,96 +0,0 @@
|
||||
Let Sudo Insult You When You Enter Incorrect Password
|
||||
============================================================
|
||||
|
||||
Sudoers is the default sudo security policy plugin in Linux, however, experienced system administrators can specify a custom security policy as well as input and output logging plugins. It is driven by the `/etc/sudoers`file or alternatively in LDAP.
|
||||
|
||||
You can define sudoers insults option or several others in the file above. It is set under defaults entries section. Read through our last article that explains [10 Useful Sudoers Configurations for Setting ‘sudo’ in Linux][1].
|
||||
|
||||
In this article, we will explain a sudoers configuration parameter to enable an individual or system administrator set [sudo command][2] to insult system users who enter wrong password.
|
||||
|
||||
Start by opening the file `/etc/sudoers` like so:
|
||||
|
||||
```
|
||||
$ sudo visudo
|
||||
```
|
||||
|
||||
Go to the defaults section and add the following line:
|
||||
|
||||
```
|
||||
Defaults insults
|
||||
```
|
||||
|
||||
Below is a sample of /etc/sudoers file on my system showing defaults entries.
|
||||
|
||||
[
|
||||
![Set sudo Insults Parameter](http://www.tecmint.com/wp-content/uploads/2017/01/Set-sudo-Insults-Parameter.png)
|
||||
][3]
|
||||
|
||||
Set sudo Insults Parameter
|
||||
|
||||
From the screenshot above, you can see that there are many other defaults defined such as send mail to root when each time a user enters a bad password, set a secure path, configure a custom sudo log file and more.
|
||||
|
||||
Save the file and close it.
|
||||
|
||||
Run a command with sudo and enter the wrong password, then observe how insults option works:
|
||||
|
||||
```
|
||||
$ sudo visudo
|
||||
```
|
||||
[
|
||||
![sudo Insult in Action](http://www.tecmint.com/wp-content/uploads/2017/01/How-sudo-Insult-Works.png)
|
||||
][4]
|
||||
|
||||
sudo Insult in Action
|
||||
|
||||
Note: When you configure the insults parameter, it disables the `badpass_message` parameter which prints a specific message on the command line (the default message is “sorry, try again”) in case a user enters a wrong password.
|
||||
|
||||
To modify the message, add the `badpass_message` parameter to the /etc/sudoers file as shown below.
|
||||
|
||||
```
|
||||
Defaults badpass_message="Password is wrong, please try again" #try to set a message of your own
|
||||
```
|
||||
[
|
||||
![Set sudo badpassword Message](http://www.tecmint.com/wp-content/uploads/2017/01/Set-sudo-badpassword-Message.png)
|
||||
][5]
|
||||
|
||||
Set sudo badpassword Message
|
||||
|
||||
Save the file and close it, then invoke sudo and see how it works, the message you set as the value of badpass_message will be printed every time you or any system user types a wrong password.
|
||||
|
||||
```
|
||||
$ sudo visudo
|
||||
```
|
||||
[
|
||||
![Sudo badpassword Message](http://www.tecmint.com/wp-content/uploads/2017/01/sudo-badpassword-Message.png)
|
||||
][6]
|
||||
|
||||
Sudo badpassword Message
|
||||
|
||||
That’s all, in this article we reviewed how to set sudo to print insults when users type a wrong password. Do share your thoughts via the comment section below.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||
![](http://1.gravatar.com/avatar/4e444ab611c7b8c7bcb76e58d2e82ae0?s=128&d=blank&r=g)
|
||||
|
||||
Aaron Kili is a Linux and F.O.S.S enthusiast, an upcoming Linux SysAdmin, web developer, and currently a content creator for TecMint who loves working with computers and strongly believes in sharing knowledge.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
via: http://www.tecmint.com/sudo-insult-when-enter-wrong-password/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
[1]:http://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/
|
||||
[2]:http://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/
|
||||
[3]:http://www.tecmint.com/wp-content/uploads/2017/01/Set-sudo-Insults-Parameter.png
|
||||
[4]:http://www.tecmint.com/wp-content/uploads/2017/01/How-sudo-Insult-Works.png
|
||||
[5]:http://www.tecmint.com/wp-content/uploads/2017/01/Set-sudo-badpassword-Message.png
|
||||
[6]:http://www.tecmint.com/wp-content/uploads/2017/01/sudo-badpassword-Message.png
|
@ -1,7 +1,8 @@
|
||||
ucasFL translating
|
||||
Best Linux Distributions for New Users
|
||||
============================================================
|
||||
|
||||
![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/distros-new-users.jpg?itok=Prp88H71)
|
||||
![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/distros-new-users.jpg?itok=Prp88H71)
|
||||
Jack Wallen considers which Linux distributions are best designed for new users coming from different environments.[Creative Commons Zero][5]Pixabay
|
||||
|
||||
Ah, the age-old question...one that holds far more importance than simply pointing out which Linux distribution is a fan-favorite. Why is that?
|
||||
@ -15,7 +16,7 @@ That’s why we often take the time to point out which distributions are best de
|
||||
With that said, what are the best distributions for new users? I’m going to take a bit of a different approach this time and point out which distributions would be best for users coming from different environments. You can also check out my list of [best distros for 2017][11].
|
||||
|
||||
[
|
||||
![Advertisement for Intro to Linux](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/introtolinux_1_800x200.jpg?itok=VV8GZold "Advertisement for Intro to Linux")
|
||||
![Advertisement for Intro to Linux](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/introtolinux_1_800x200.jpg?itok=VV8GZold "Advertisement for Intro to Linux")
|
||||
][12]
|
||||
|
||||
### From Windows 7 to Linux: ZorinOS
|
||||
@ -28,14 +29,14 @@ Beyond the desktop environment (Figure 1), ZorinOS is based on Ubuntu, so under
|
||||
|
||||
### [zorinos.jpg][6]
|
||||
|
||||
![ZorinOS](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/zorinos.jpg?itok=i970f1Id "ZorinOS")
|
||||
![ZorinOS](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/zorinos.jpg?itok=i970f1Id "ZorinOS")
|
||||
|
||||
Figure 1: The ZorinOS Windows 7-like desktop ready to serve.[Used with permission][1]
|
||||
|
||||
Do note, however, there are two versions of ZorinOS: Zorin Ultimate and Zorin Core. While Core is free, it doesn’t include nearly the amount of software that you’ll find in Ultimate. If you want an out of the box distribution that will please anyone coming from Windows 7, I highly recommend purchasing [Zorin Ultimate][14] (for approximately $20.00 USD). Of course, if you don’t want to splurge for the Ultimate edition, you can always install nearly everything you need from the included Software package management tool.
|
||||
|
||||
[
|
||||
![Advertisement for New Year's resolution to be a Linux sysadmin](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/newyearsresolution_1_800x200.jpg?itok=BeGasy1I "Advertisement for New Year's resolution to be a Linux sysadmin")
|
||||
![Advertisement for New Year's resolution to be a Linux sysadmin](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/newyearsresolution_1_800x200.jpg?itok=BeGasy1I "Advertisement for New Year's resolution to be a Linux sysadmin")
|
||||
][15]
|
||||
|
||||
### From Windows 8 to Linux: Ubuntu GNOME
|
||||
@ -46,7 +47,7 @@ Ubuntu GNOME is a best of two worlds amalgamation between Ubuntu and GNOME (Figu
|
||||
|
||||
### [ubuntugnome.jpg][7]
|
||||
|
||||
![Ubuntu GNOME](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/ubuntugnome.jpg?itok=SNjA3y7T "Ubuntu GNOME")
|
||||
![Ubuntu GNOME](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/ubuntugnome.jpg?itok=SNjA3y7T "Ubuntu GNOME")
|
||||
|
||||
Figure 2: Simplicity at its elegant best can be found in Ubuntu GNOME.[Used with permission][2]
|
||||
|
||||
@ -58,7 +59,7 @@ Any Mac user would feel immediately at home on the desktop environment (Figure 3
|
||||
|
||||
### [elementaryos.jpg][8]
|
||||
|
||||
![Elementary OS](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/elementaryos.jpg?itok=qaXRClRM "Elementary OS")
|
||||
![Elementary OS](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/elementaryos.jpg?itok=qaXRClRM "Elementary OS")
|
||||
|
||||
Figure 3: The glory that is the Elementary OS desktop.[Used with permission][3]
|
||||
|
||||
@ -72,7 +73,7 @@ This may seem like a bit of a stretch, but considering how dominant Android is w
|
||||
|
||||
### [ubuntu.jpg][9]
|
||||
|
||||
![Ubuntu Unity](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/ubuntu.jpg?itok=HsvBJAIN "Ubuntu Unity")
|
||||
![Ubuntu Unity](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/ubuntu.jpg?itok=HsvBJAIN "Ubuntu Unity")
|
||||
|
||||
Figure 4: The Unity Heads Up Display in action.[Used with permission][4]
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
wyangsun translating
|
||||
|
||||
How to install a Ceph Storage Cluster on Ubuntu 16.04
|
||||
============================================================
|
||||
|
||||
|
@ -1,228 +0,0 @@
|
||||
Learn The Basics of How Linux I/O (Input/Output) Redirection Works
|
||||
============================================================
|
||||
|
||||
One of the most important and [interesting topics under Linux administration][4] is I/O redirection. This feature of the command line enables you to redirect the input and/or output of commands from and/or to files, or join multiple commands together using pipes to form what is known as a “command pipeline”.
|
||||
|
||||
All the commands that we run fundamentally produce two kinds of output:
|
||||
|
||||
1. the command result – data the program is designed to produce, and
|
||||
2. the program status and error messages that informs a user of the program execution details.
|
||||
|
||||
In Linux and other Unix-like systems, there are three default files named below which are also identified by the shell using file descriptor numbers:
|
||||
|
||||
1. stdin or 0 – it’s connected to the keyboard, most programs read input from this file.
|
||||
2. stdout or 1 – it’s attached to the screen, and all programs send their results to this file and
|
||||
3. stderr or 2 – programs send status/error messages to this file which is also attached to the screen.
|
||||
|
||||
Therefore, I/O redirection allows you to alter the input source of a command as well as where its output and error messages are sent to. And this is made possible by the `“<”` and `“>”` redirection operators.
|
||||
|
||||
### How To Redirect Standard Output to File in Linux
|
||||
|
||||
You can redirect standard output as in the example below, here, we want to store the output of the [top command][5]for later inspection:
|
||||
|
||||
```
|
||||
$ top -bn 5 >top.log
|
||||
```
|
||||
|
||||
Where the flags:
|
||||
|
||||
1. `-b` – enables top to run in batch mode, so that you can redirect its output to a file or another command.
|
||||
2. `-n` – specifies the number of iterations before the command terminates.
|
||||
|
||||
You can view the contents of `top.log` file using [cat command][6] as follows:
|
||||
|
||||
```
|
||||
$ cat top.log
|
||||
```
|
||||
|
||||
To append the output of a command, use the `“>>”` operator.
|
||||
|
||||
For instance to append the output of [top command][7] above in the top.log file especially within a script (or on the command line), enter the line below:
|
||||
|
||||
```
|
||||
$ top -bn 5 >>top.log
|
||||
```
|
||||
|
||||
Note: Using the file descriptor number, the output redirect command above is the same as:
|
||||
|
||||
```
|
||||
$ top -bn 5 1>top.log
|
||||
```
|
||||
|
||||
### How To Redirect Standard Error to File in Linux
|
||||
|
||||
To redirect standard error of a command, you need to explicitly specify the file descriptor number, `2` for the shell to understand what you are trying to do.
|
||||
|
||||
For example the [ls command][8] below will produce an error when executed by a normal system user without root privileges:
|
||||
|
||||
```
|
||||
$ ls -l /root/
|
||||
```
|
||||
|
||||
You can redirect the standard error to a file as below:
|
||||
|
||||
```
|
||||
$ ls -l /root/ 2>ls-error.log
|
||||
$ cat ls-error.log
|
||||
```
|
||||
[
|
||||
![Redirect Standard Error to File](http://www.tecmint.com/wp-content/uploads/2017/01/Redirect-Standard-Error-in-Linux.png)
|
||||
][9]
|
||||
|
||||
Redirect Standard Error to File
|
||||
|
||||
In order to append the standard error, use the command below:
|
||||
|
||||
```
|
||||
$ ls -l /root/ 2>>ls-error.log
|
||||
```
|
||||
|
||||
### How To Redirect Standard Output/ Error To One File
|
||||
|
||||
It is also possible to capture all the output of a command (both standard output and standard error) into a single file. This can be done in two possible ways by specifying the file descriptor numbers:
|
||||
|
||||
1. The first is a relatively old method which works as follows:
|
||||
|
||||
```
|
||||
$ ls -l /root/ >ls-error.log 2>&1
|
||||
```
|
||||
|
||||
The command above means the shell will first send the output of the [ls command][10] to the file ls-error.log (using `>ls-error.log`), and then writes all error messages to the file descriptor 2 (standard output) which has been redirected to the file ls-error.log (using `2>&1`). Implying that standard error is also sent to the same file as standard output.
|
||||
|
||||
2. The second and direct method is:
|
||||
|
||||
```
|
||||
$ ls -l /root/ &>ls-error.log
|
||||
```
|
||||
|
||||
You can as well append standard output and standard error to a single file like so:
|
||||
|
||||
```
|
||||
$ ls -l /root/ &>>ls-error.log
|
||||
```
|
||||
|
||||
### How To Redirect Standard Input to File
|
||||
|
||||
Most if not all commands get their input from standard input, and by default standard input is attached to the keyboard.
|
||||
|
||||
To redirect standard input from a file other than the keyboard, use the `“<”` operator as below:
|
||||
|
||||
```
|
||||
$ cat <domains.list
|
||||
```
|
||||
[
|
||||
![Redirect Standard Input to File](http://www.tecmint.com/wp-content/uploads/2017/01/Redirect-Standard-Input-to-File.png)
|
||||
][11]
|
||||
|
||||
Redirect Standard Input to File
|
||||
|
||||
### How To Redirect Standard Input/Output to File
|
||||
|
||||
You can perform standard input, standard output redirection at the same time using [sort command][12] as below:
|
||||
|
||||
```
|
||||
$ sort <domains.list >sort.output
|
||||
```
|
||||
|
||||
### How to Use I/O Redirection Using Pipes
|
||||
|
||||
To redirect the output of one command as input of another, you can use pipes, this is a powerful means of building useful command lines for complex operations.
|
||||
|
||||
For example, the command below will [list the top five recently modified files][13].
|
||||
|
||||
```
|
||||
$ ls -lt | head -n 5
|
||||
```
|
||||
|
||||
Here, the options:
|
||||
|
||||
1. `-l` – enables long listing format
|
||||
2. `-t` – [sort by modification time with the newest files][1] are shown first
|
||||
3. `-n` – specifies the number of header lines to show
|
||||
|
||||
### Important Commands for Building Pipelines
|
||||
|
||||
Here, we will briefly review two important commands for building command pipelines and they are:
|
||||
|
||||
xargs which is used to build and execute command lines from standard input. Below is an example of a pipeline which uses xargs, this command is used to [copy a file into multiple directories in Linux][14]:
|
||||
|
||||
```
|
||||
$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh
|
||||
```
|
||||
[
|
||||
![Copy Files to Multiple Directories](http://www.tecmint.com/wp-content/uploads/2017/01/Copy-Files-to-Multiple-Directories.png)
|
||||
][15]
|
||||
|
||||
Copy Files to Multiple Directories
|
||||
|
||||
And the options:
|
||||
|
||||
1. `-n 1` – instructs xargs to use at most one argument per command line and send to the [cp command][2]
|
||||
2. `cp` – copies the file
|
||||
3. `-v` – [displays progress of copy command][3].
|
||||
|
||||
For more usage options and info, read through the xargs man page:
|
||||
|
||||
```
|
||||
$ man xargs
|
||||
```
|
||||
|
||||
A tee command reads from standard input and writes to standard output and files. We can demonstrate how teeworks as follows:
|
||||
|
||||
```
|
||||
$ echo "Testing how tee command works" | tee file1
|
||||
```
|
||||
[
|
||||
![tee Command Example](http://www.tecmint.com/wp-content/uploads/2017/01/tee-command-example.png)
|
||||
][16]
|
||||
|
||||
tee Command Example
|
||||
|
||||
[File or text filters][17] are commonly used with pipes for [effective Linux file operations][18], to process information in powerful ways such as restructuring output of commands (this can be vital for [generation of useful Linux reports][19]), modifying text in files plus several other [Linux system administration tasks][20].
|
||||
|
||||
To learn more about Linux filters and pipes, read this article [Find Top 10 IP Addresses Accessing Apache Server][21], shows a useful example of using filters and pipes.
|
||||
|
||||
In this article, we explained the fundamentals of I/O redirection in Linux. Remember to share your thoughts via the feedback section below.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||
![](http://1.gravatar.com/avatar/4e444ab611c7b8c7bcb76e58d2e82ae0?s=128&d=blank&r=g)
|
||||
|
||||
Aaron Kili is a Linux and F.O.S.S enthusiast, an upcoming Linux SysAdmin, web developer, and currently a content creator for TecMint who loves working with computers and strongly believes in sharing knowledge.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
via: http://www.tecmint.com/linux-io-input-output-redirection-operators/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
[1]:http://www.tecmint.com/find-and-sort-files-modification-date-and-time-in-linux/
|
||||
[2]:http://www.tecmint.com/progress-monitor-check-progress-of-linux-commands/
|
||||
[3]:http://www.tecmint.com/monitor-copy-backup-tar-progress-in-linux-using-pv-command/
|
||||
[4]:http://www.tecmint.com/how-to-setup-and-configure-static-network-routing-in-rhel/
|
||||
[5]:http://www.tecmint.com/12-top-command-examples-in-linux/
|
||||
[6]:http://www.tecmint.com/13-basic-cat-command-examples-in-linux/
|
||||
[7]:http://www.tecmint.com/12-top-command-examples-in-linux/
|
||||
[8]:http://www.tecmint.com/tag/linux-ls-command/
|
||||
[9]:http://www.tecmint.com/wp-content/uploads/2017/01/Redirect-Standard-Error-in-Linux.png
|
||||
[10]:http://www.tecmint.com/15-basic-ls-command-examples-in-linux/
|
||||
[11]:http://www.tecmint.com/wp-content/uploads/2017/01/Redirect-Standard-Input-to-File.png
|
||||
[12]:http://www.tecmint.com/sort-command-linux/
|
||||
[13]:http://www.tecmint.com/find-recent-modified-files-in-linux/
|
||||
[14]:http://www.tecmint.com/copy-file-to-multiple-directories-in-linux/
|
||||
[15]:http://www.tecmint.com/wp-content/uploads/2017/01/Copy-Files-to-Multiple-Directories.png
|
||||
[16]:http://www.tecmint.com/wp-content/uploads/2017/01/tee-command-example.png
|
||||
[17]:http://www.tecmint.com/linux-file-operations-commands/
|
||||
[18]:http://www.tecmint.com/linux-file-operations-commands/
|
||||
[19]:http://www.tecmint.com/linux-performance-monitoring-and-file-system-statistics-reports/
|
||||
[20]:http://www.tecmint.com/automating-linux-system-administration-tasks/
|
||||
[21]:http://www.tecmint.com/find-top-ip-address-accessing-apache-web-server/
|
@ -192,7 +192,7 @@ via: http://www.tecmint.com/permanently-and-securely-delete-files-directories-li
|
||||
|
||||
作者:[Ravi Saive][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
|
@ -0,0 +1,246 @@
|
||||
How Linux got to be Linux: Test driving 1993-2003 distros
|
||||
============================================================
|
||||
Linux 系统的成长之路:试用 1993-2003 年之间的 Linux 老版本系统
|
||||
|
||||
### 让我们一起来回顾 Linux 早期版本的美好时光
|
||||
|
||||
![How Linux got to be Linux: Test driving 1993-2003 distros](https://opensource.com/sites/default/files/styles/image-full-size/public/images/life/car-penguin-drive-linux-yellow.png?itok=ueZE5mph "How Linux got to be Linux: Test driving 1993-2003 distros")
|
||||
|
||||
图片来源:
|
||||
|
||||
互联网档案馆[书籍][7][图片][8]。 Opensource.com. CC BY-SA 4.0 编辑引用。
|
||||
|
||||
开源软件最擗独特性的一点就是它永远不会真正的走到 EOL (生命的终点)。它们的磁盘镜像文件大都可以在网上找到,并且使用它们也不需要经过任何授权,因此,我们可以返回去找到那些老版本的 Linux 系统,并在虚拟机中安装它们,这都是很容易做到的,通过回顾那些珍贵的系统画面,让我们来回顾 Linux 系统这么多年来所发生的翻天覆地的变化。
|
||||
|
||||
我们使用 Slackware 1.01 版本系统来开始这段旅程,该系统差不多 20 年以前就在 **comp.os.linux.announce** 新闻组中发布出来了。
|
||||
|
||||
### Slackware 1.01 版本系统 ( 1993 年)
|
||||
|
||||
![slackware 1.0 screenshot](https://opensource.com/sites/default/files/slack1.png "slackware 1.0 screenshot")
|
||||
|
||||
Slackware 1.01
|
||||
使用 Slackware 1.01 系统最爽的是在 Qemu 模拟器软件 [2014 系列][9] 中有一个预先制作好的镜像文件,因此你可以不用手动去执行安装任务(这样美好的事情已经不存在了)。其引导启动命令如下:
|
||||
|
||||
```
|
||||
$ qemu-kvm -m 16M -drive if=ide,format=qcow2,file=slackware.qcow2 \
|
||||
-netdev user,id=slirp -device ne2k_isa,netdev=slirp \
|
||||
-serial stdio -redir tcp:22122::22
|
||||
```
|
||||
|
||||
在 1993 年那个版本的 Linux 系统中,很多东西都跟我们所想像的一样。所有常用的基本命令,比如 'ls' 和 'cd' 命令的使用方式,以及所有的基本工具(`gawk` , `cut` , `diff` , `perl`,当然还有 [Volkerding][10] 最喜欢的 'elvis‘ 工具)现在都在使用,而且也包含在如今的 Linux 系统中,但是仍然有一小部分东西让我感到惊讶。当你尝试使用 tab 补全命令方式来列出上百个文件时, ’BASH' 会非常友好的提示用户确认,并且那些查看压缩文件的工具(比如 ‘zless' 和 ’zmore' 以及 'zcat')已经在使用了。很多方面都比我中要好得多,总之,该系统给人的感觉就是超级现代化。
|
||||
|
||||
不过,该系统没有软件包管理的相关概念。所有软件的安装和卸载都得手动完成,也不能查询出已安装的软件包。
|
||||
|
||||
总的来说, Slackware 1.01 系统感觉更像是一个非常现代化的 UNIX 系统,或者更恰当的是,它给人的感觉就是一个 Linux 用户在操作一个现代化的 UNIX 系统。很多东西都非常熟悉,但是也不尽相同。在 1993 年发布的操作系统中,并不是所有东西都跟你想像的一样。
|
||||
|
||||
### Debian 0.91 版本系统( 1994 年)
|
||||
|
||||
为了尝试 Debian 0.91 版本系统,我使用的是 [Ibiblio 数字档案][11] 网站下载的软盘镜像文件,该系统一开始在 1994 年发布出来。启动命令如下:
|
||||
|
||||
```
|
||||
$ gunzip bootdsk.gz basedsk1.gz basedsk2.gz
|
||||
$ qemu-system-i386 -M pc -m 64 -boot order=ac,menu=on \
|
||||
-drive file=bootdisk,if=floppy,format=raw \
|
||||
-drive file=debian.raw,if=ide,format=raw \
|
||||
-device ne2k_isa,netdev=slirp \
|
||||
-serial msmouse -vga std \
|
||||
-redir tcp:22122::22 \
|
||||
-netdev user,id=slirp
|
||||
```
|
||||
|
||||
从 Debian 0.91 的启动磁盘启动后进入到一个简洁的 shell 界面,有很清晰的提示信息告诉你下一步将要执行的操作。
|
||||
|
||||
安装过程进行得非常顺利。从磁盘分区,写入 ext2 文件系统到分区,到显示图形菜单操作界面要经过 7 个步骤,之后开始复制 'basedsk' 镜像文件。这里使用的是以最小化方式来安装 Debian 系统,跟大家在安装自己的 Linux 系统过程中的很多步骤都非常相似。
|
||||
|
||||
Debian 系统因其自身的包管理器而出名,但是在早期的版本中只是多一些提示功能而已。有 ‘dpkg' 命令,但它是一个基于交互式菜单的系统——一种看似很笨拙的‘雕虫小技’,有多个层次的可选菜单,并且自然地附带了几个可用软件包。
|
||||
|
||||
尽管如此,你也可以感受到其简便的设计理念。你只需下载三个软盘镜像文件,最后合成一个可启动的系统,然后就可以使用一个简单的文本菜单来安装更多的东西。我由衷的明白了为什么 Debain 系统如此受欢迎的原因。
|
||||
|
||||
### Jurix/S.u.S.E. 系统( 1996 年)
|
||||
|
||||
![Jurix install screen](https://opensource.com/sites/default/files/jurix_install.png "Jurix install screen")
|
||||
|
||||
安装 Jurix 系统
|
||||
|
||||
Jurix 系统是 SUSE 系统的前身, Jurix 使用二进制的 '.tgz' 软件包组织到类似 Slackware 安装包结构的目录中,其安装包本身也跟 Slackware 的安装包很相似。
|
||||
|
||||
```
|
||||
$ qemu-system-i386 -M pc -m 1024 \
|
||||
-boot order=ac,menu=on \
|
||||
-drive \
|
||||
file=jurix/install,if=floppy,format=raw \
|
||||
-drive file=jurix.img,if=ide \
|
||||
-drive file=pkg.raw,if=ide,format=raw \
|
||||
-device ne2k_isa,netdev=slirp \
|
||||
-serial msmouse -vga std \
|
||||
-redir tcp:22122::22 \
|
||||
-netdev user,id=slirp
|
||||
```
|
||||
|
||||
|
||||
因为我不是特意去寻找最早期的版本, Jurix 系统是找到的第一个’感觉‘十分像是打算给用户使用的有图形界面的 Linux 发行版。 [XFree86][12] 图形桌面环境已默认安装了,如果你不打算使用该工具,选择退出该环境即可。
|
||||
|
||||
比如 `/usr/lib/X11/XF86Config` (该文件变成 `Xorg.conf` )这个配置文件已经存在了,这让我在使用 GUI 前完成了 90% 的工作,但是我花费了一整个周末的时间来调试 `vsync` , `hsync` , 和 `ramdac` 界面颜色的过程中却不小心把 `Xorg.conf` 这个配置文件给覆盖了,最后我完全放弃了。
|
||||
|
||||
在 Jurix 系统上安装软件包也非常简单;找到源路径下的 '.tgz' 文件,然后运行一个常用的 ‘tar' 命令: ` $ su -c 'tar xzvf foo.tgz -C /'` 该软件包就会被解压到 root 分区,并准备好使用了。我刚开始的时候使用几个之前未用过的软件包来安装测试,发现操作也很简单、快速且非常可靠。
|
||||
|
||||
### SUSE 5.1 版本系统( 1998 年)
|
||||
|
||||
![suse install](https://opensource.com/sites/default/files/suse5fvwm.png "suse install")
|
||||
|
||||
在 SuSE 5.1 系统上运行 FVWM 窗口管理器
|
||||
|
||||
我是使用 1998 年在 Maryland 一家软件商店里买的 InfoMagic CD-ROM 光驱来安装 SUSE 5.1 系统的。其引导启动命令如下:
|
||||
|
||||
```
|
||||
$ qemu-system-i386 -M pc-0.10 -m 64 \
|
||||
-boot order=ad,menu=on \
|
||||
-drive file=floppy.raw,if=floppy,format=raw \
|
||||
-cdrom /dev/sr0 \
|
||||
-drive file=suse5.raw,if=ide,format=raw \
|
||||
-vga cirrus -serial msmouse
|
||||
```
|
||||
|
||||
安装过程相对于前边几次来说要复杂得多。 YasT 工具在软盘和 CD-ROM 光驱之间阻止了配置文件的生成和设置,还需要重启好多次,在重启了好几次后我才反应过来是我操作顺序不当导致的问题。在安装过程中,我就规犯了两次同样的错,我只是习惯了 YasT 工具的安装方式,到第三次才顺利的安装成功,这对于一个 Linux 用户将来的成长来说是一个很大的教训及经验。
|
||||
|
||||
我使用 SUSE 5.1 的主要目的就是体验其 GUI 桌面环境。配置的过程已经很熟悉了,使用几个漂亮的图形界面工具(包括一个很好用的 `XF86Setup` 前端界面配置工具)来测试和调试鼠标及显示器问题。我用了一个小时不到的时间就调试好 GUI 界面,并正常运行起来,其中大部分时间是耽搁在查询 Qemu 工具可以处理哪种颜色方案的虚拟显卡。
|
||||
|
||||
可选用的桌面环境包括 `fvwm` , `fvwm2` 和 `ctwm`。我使用的是 ’fvwm' ,并且运行得也正常。我发现 `tkDesk` 这个文件管理器组合包跟 Ubuntu 系统 `Unity` 的启动栏非常的相似。
|
||||
|
||||
使用该系统总的来说还是非常令人愉快的,一旦成功安装了桌面环境并正常运行起来, SUSE 5.1 可以说是取得了令人瞩目的成功。
|
||||
|
||||
### Red Hat 6.0 版本系统( 1999 年)
|
||||
|
||||
![Red Hat 1999](https://opensource.com/sites/default/files/redhat6_gimp_0.png "Red Hat 1999")
|
||||
|
||||
在 Red Hat 6 系统上运行 GIMP 1.x 图像处理程序
|
||||
|
||||
下一个系统 Red Hat 6.0 安装盘我刚好家里有。不是 RHEL 6.0 —— 而是 Red Hat 6.0 。,这是一个在 RHEL 或 Fedora 系统出现之前商店里就有卖的桌面版系统。这个安装盘是是我在 1999 年 6 月份买的。
|
||||
其引导启动命令如下:
|
||||
|
||||
```
|
||||
$ qemu-system-i386 -M pc-0.10 -m 512 \
|
||||
-boot order=ad,menu=on \
|
||||
-drive file=redhat6.raw,if=ide,format=raw \
|
||||
-serial msmouse -netdev user,id=slirp \
|
||||
-vga cirrus -cdrom /dev/sr0
|
||||
```
|
||||
|
||||
整个安装过程由系统引导安装,并且速度非常快。无论是选择什么系统安装包(按 **工作站**, **服务器**, 及 **自定义** 进行分组 ),磁盘分区,或者是启动安装,你都没必要离开安装过程的安全模式。
|
||||
|
||||
Red Hat 6 包括一个 `xf86config` 应用程序来一步步指导你完成 X 配置工作,尽管它有一些很奇怪的模拟鼠标的选项,但是之后 X 宣称这没啥意义。它比手动修改 Xf86Config 配置文件要容易得多,但是要正确无误的配置好 X 环境也不是一个简单的工作。
|
||||
|
||||
Red Hat 6 绑定的桌面环境还是 GNOME ,但是这个窗口管理器只是一个早期的 [雏形][13] ,它同样也提供了主要的声卡服务进程。`Xdm` 和 `gdm` 也作为登录管理器包含在其中,因此普通用户没有权限也可以登录到系统中并启动或者关闭 X 桌面进程,这在多用户系统中是非常重要的。
|
||||
|
||||
它不包含一些主要的应用程序;也没有 'gedit' 工具,没有重要的统一办公应用程序,更没有软件包管理器。有 ‘GnoRPM' 工具,这是一个图形界面的 RPM 包管理工具,用于查看及删除软件包,这个工具跟 ’yum' 或 ’PackageKit‘ 工具非常类似,还有基于图形界面的文件编辑器 ’gnotepad+‘ (尽管没有 Emacs 工具)。
|
||||
|
||||
总的来说,桌面环境在使用上也是非常直观的。跟后边实现的 GNOME 桌面环境不同,这个早期版本的在屏幕底部一有个面板,其中有一个应用程序菜单和启动图标,在中间位置有个虚拟桌面控制器。我无法想象其它操作系统的用户在使用这个桌面环境时会有多么的不习惯。
|
||||
|
||||
Red Hat 6 对于 Linux 系统来说是一个巨大的进步,很明显 Linux 系统正向着成为一个适用的桌面系统方向发展。
|
||||
|
||||
### Mandrake 8.0 版本系统( 2001 年)
|
||||
|
||||
![Mandrake 8.0 installer](https://opensource.com/sites/default/files/mandrake8.png "Mandrake 8.0 installer")
|
||||
|
||||
Mandrake: Linux 系统的一个转折点
|
||||
|
||||
Mandrake 8.0 于 2001 年发布,这已经可以跟 Apple OS 9.2 和 Windows ME 系统相提并论了。
|
||||
|
||||
我反而觉得老版本的系统才更安全一些。
|
||||
|
||||
其引导启动命令如下:
|
||||
```
|
||||
$ qemu-system-i386 \
|
||||
-M pc-0.10 -m 2048 \
|
||||
-boot order=ad,menu=on \
|
||||
-drive file=mandrake8.qcow2 \
|
||||
-usb -net nic,model=rtl8139 \
|
||||
-netdev user,id=slirp \
|
||||
-vga cirrus \
|
||||
-cdrom mandrake-8.0-i386.iso
|
||||
```
|
||||
|
||||
我一直觉得 Red Hat 系统的安装过程非常棒了,但是 Mandrake 的安装过程更是让人喜出望外。它非常友好,并且在继续下一步之前还给用户一个测试配置文件的机会,易用高效,使用起来非常令人惊奇。我也不用导入自己的 `XF86Config` 配置文件,因为 Mandrake 的安装程序会自动完成该任务。
|
||||
|
||||
![Mandrake install](https://opensource.com/sites/default/files/mandrake8install_new.png "Mandrake install")
|
||||
|
||||
Mandrake 8.0 系统的安装程序
|
||||
|
||||
实际上,使用 Mandrake 系统跟使用其它已安装了桌面环境系统的感受基本相同。让我很惊奇是的它们在操作体验上如此的相似。我相信,即使这个时候我在使用 Mandrake 系统的过程中遇到一些问题,以我自己的技术能力甚至是一个技术水平一般的年轻人也很容易解决。它的界面非常直观,帮助文档也很有用,并且软件包管理起来也很容易,只是那个时候人们还不习惯直接到网上下载他们需要的任何软件包来安装。
|
||||
|
||||
### Fedora 1 版本系统( 2003 年)
|
||||
|
||||
![Fedora Core install](https://opensource.com/sites/default/files/fedora1.png "Fedora Core install")
|
||||
|
||||
基于 Red Hat 的 Fedora 系统
|
||||
|
||||
新 Fedora Core 版本系统于 2003 年发布。 Fedora Core 基于 Red Hat 系统,它的主要目的是在 Red Hat 企业版( RHEL )成为该公司旗舰产品之前继续带动 Linux 桌面版系统的发展。
|
||||
|
||||
|
||||
启动老版本的 Fedora COre 1 系统也没啥特别的地方:
|
||||
|
||||
```
|
||||
$ qemu-system-i386 -M pc \
|
||||
-m 2048 -boot order=ac,menu=on \
|
||||
-drive file=fedora1.qcow2 -usb \
|
||||
-net nic,model='rtl8139' -netdev user \
|
||||
-vga cirrus -cdrom fedora-1-i386-cd1.iso
|
||||
```
|
||||
|
||||
安装 Fedora Core 同样简单容易; Fedora 和 Red Hat 系统在之后的 9 年中使用同样的安装包。它同样使用简单易用的图形化界面。
|
||||
|
||||
![Fedora Anaconda](https://opensource.com/sites/default/files/fedora1anaconda.png "Fedora Anaconda")
|
||||
Anaconda GUI 界面
|
||||
|
||||
使用 Fedora Core 系统的体验跟 Red Hat 6 或 7 版本没多少区别。 GNOME 图形界面很漂亮,有各种独立的配置程序助手,并且界面展示都非常的整洁和专业。
|
||||
|
||||
桌面上的 Start Here 图标指导用户前往三个位置:应用程序目录,首选项面板和系统设置。 一个红帽的图标表示应用程序菜单,而下边的 GNOME 面板里包括所有最新的 Linux 应用程序启动器,包括 OpenOffice 办公组件和 mozilla 浏览器。
|
||||
|
||||
### 展望未来
|
||||
|
||||
在 2000 左右, Linux 系统已经发展得很好并取得了巨大的进步。桌面环境前所未有的更加精致美观,有各种可用的应用程序,安装过程比其它操作操作更简易更高效。事实上,从 2000 年以来,用户和系统之间的关系更加紧密,即使到现在也没发生根本上的改变。当然还有一些更新和改善,以及数量惊人的创新方面的变化。
|
||||
|
||||
让我们来了解一下各个 Linux 系统项目上的演变:
|
||||
|
||||
* Mandrake 系统后来更名为 Mandriva,如今为 [Mageia][1] ;
|
||||
* Fedora Core 随后改为 [Fedora][2] ;
|
||||
* [Ubuntu][3] 脱胎于 [Debian][4] 并且,它让 “Linux" 成为一个家喻户晓的词汇;
|
||||
* Valve 公司开发的 [SteamOS][5] 成为其官方游戏平台;
|
||||
* [Slackware][6] 现如今仍在平稳发展。
|
||||
|
||||
无论你是一个 Linux 新手,还是一个技术精湛的 Linux 老用户,上面的大多数截图都构成了让 Linux 系统被记入历史的一本传记。很高兴今天我们能够回顾成为世界上最大的开源项目之一的 Linux 系统是如何发展壮大起来的。更重要的是,每一次想到自己也是 Linux 开源世界中的一员我们就无比激动,把握现在,展望未来。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/profile_pictures/public/penguinmedallion200x200.png?itok=ROQSR50J)
|
||||
|
||||
Seth Kenlon —— Seth Kenlon 是一位独立多媒体艺术家,开源文化倡导者, Unix 极客。他还是 Slackware 多媒体产品项目的维护人员之一,官网:http://slackermedia.ml 。
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/16/12/yearbook-linux-test-driving-distros
|
||||
|
||||
作者:[Seth Kenlon][a]
|
||||
译者:[rusking](https://github.com/rusking)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/seth
|
||||
[1]:http://mageia.org/
|
||||
[2]:http://fedoraproject.org/
|
||||
[3]:http://ubuntu.com/
|
||||
[4]:http://debian.org/
|
||||
[5]:http://store.steampowered.com/steamos
|
||||
[6]:http://slackware.com/
|
||||
[7]:https://www.flickr.com/photos/internetarchivebookimages/14746482994/in/photolist-ot6zCN-odgbDq-orm48o-otifuv-otdyWa-ouDjnZ-otGT2L-odYVqY-otmff7-otGamG-otnmSg-rxnhoq-orTmKf-otUn6k-otBg1e-Gm6FEf-x4Fh64-otUcGR-wcXsxg-tLTN9R-otrWYV-otnyUE-iaaBKz-ovcPPi-ovokCg-ov4pwM-x8Tdf1-hT5mYr-otb75b-8Zk6XR-vtefQ7-vtehjQ-xhhN9r-vdXhWm-xFBgtQ-vdXdJU-vvTH6R-uyG5rH-vuZChC-xhhGii-vvU5Uv-vvTNpB-vvxqsV-xyN2Ai-vdXcFw-vdXuNC-wBMhes-xxYmxu-vdXxwS-vvU8Zt
|
||||
[8]:https://www.flickr.com/photos/internetarchivebookimages/14774719031/in/photolist-ovAie2-otPK99-xtDX7p-tmxqWf-ow3i43-odd68o-xUPaxW-yHCtWi-wZVsrD-DExW5g-BrzB7b-CmMpC9-oy4hyF-x3UDWA-ow1m4A-x1ij7w-tBdz9a-tQMoRm-wn3tdw-oegTJz-owgrs2-rtpeX1-vNN6g9-owemNT-x3o3pX-wiJyEs-CGCC4W-owg22q-oeT71w-w6PRMn-Ds8gyR-x2Aodm-owoJQm-owtGp9-qVxppC-xM3Gw7-owgV5J-ou9WEs-wihHtF-CRmosE-uk9vB3-wiKdW6-oeGKq3-oeFS4f-x5AZtd-w6PNuv-xgkofr-wZx1gJ-EaYPED-oxCbFP
|
||||
[9]:http://www.qemu-advent-calendar.org/2014
|
||||
[10]:http://www.slackware.com/~volkerdi/
|
||||
[11]:https://ibiblio.org/pub/historic-linux/distributions/debian-0.91/debian-0.91/dist
|
||||
[12]:http://www.xfree86.org/
|
||||
[13]:http://enlightenment.org/
|
||||
[^]:
|
@ -1,15 +1,15 @@
|
||||
Linux 下 4 个最好的命令行下载管理器/加速器
|
||||
============================================================
|
||||
|
||||
我们经常由于不同需求使用下载管理器从互联网下载文件,这是对我和其他人的主要贡献者之一。我们都想要一个超级快速的下载管理器来完成下载尽可能多的任务,以便我们可以节省时间来进一步地工作。这里有很多可以加速下载的下载管理器和加速器可用(GUI和CLI)。
|
||||
我们经常由于不同需求使用下载管理器从互联网下载文件,这是对我和其他人的主要贡献之一。我们都想要一个超级快速的下载管理器来完成下载尽可能多的任务,以便我们可以节省时间来进一步地工作。这里有很多可以加速下载的下载管理器和加速器可用(图形化界面和命令行界面)。
|
||||
|
||||
所有的下载工具做着同样的任务,但它们的处理和功能是不同的,单线程和多线程、交互和非交互。 在这里,我们将列出四个最好的我们日常工作使用的命令行下载加速器,。
|
||||
所有的下载工具做着同样的任务,但它们的处理和功能是不同的,单线程和多线程、交互和非交互。 在这里,我们将列出四个最好的我们日常工作使用的命令行下载加速器。
|
||||
|
||||
#### #1 Aria2
|
||||
|
||||
[Aria2][1]是一个用于 Linux、Windows 和 Mac OSX 的轻量级多协议和多来源的命令行下载管理器/实用程序。它支持HTTP/HTTPS、FTP、SFTP、BitTorrent 和 Metalink。aria2 可以通过内置的 JSON-RPC 和 XML-RPC 接口操作。
|
||||
[Aria2][1] 是一个用于 Linux、Windows 和 Mac OSX 的轻量级多协议和多来源的命令行下载管理器/实用程序。它支持HTTP/HTTPS、FTP、SFTP、BitTorrent 和 Metalink。aria2 可以通过内置的 JSON-RPC 和 XML-RPC 接口操作。
|
||||
|
||||
它支持多线程,并使用多个源/协议下载文件,它可以真的加速你的下载,并尽可能完成下载。
|
||||
它支持多线程,使用多个源/协议下载文件,确实可以加速并尽可能多的完成下载。
|
||||
|
||||
它非常轻量级,不需要太多的内存和 CPU。我们可以使用它作为 BitTorrent 客户端,因为它有所有你想要的 BitTorrent 客户端的功能。
|
||||
|
||||
@ -18,7 +18,7 @@ Linux 下 4 个最好的命令行下载管理器/加速器
|
||||
* HTTP/HTTPS GET支持
|
||||
* HTTP 代理支持
|
||||
* 支持 HTTP BASIC 认证
|
||||
* HTTP 代理认证支持
|
||||
* HTTP 代理认证支持
|
||||
* FTP 支持(主动、被动模式)
|
||||
* FTP 通过 HTTP 代理(GET 命令或隧道)
|
||||
* 分段下载
|
||||
@ -31,37 +31,37 @@ Linux 下 4 个最好的命令行下载管理器/加速器
|
||||
|
||||
有关 Aria2 的进一步用法,请参阅以下文章。
|
||||
|
||||
[如何在Linux中安装和使用 Aria2][2]
|
||||
[如何在 Linux 中安装和使用 Aria2][2]。
|
||||
|
||||
#### #2 Axel
|
||||
|
||||
[Axel][3] 是一个轻量级下载程序,它如其他加速器那样做着同样的事情。它为一个文件打开多个连接,每个连接下载单独的文件片段以更快地完成下载。
|
||||
|
||||
Axel 支持 HTTP、HTTPS、FTP和 FTPS 协议。它也可以使用多个镜像下载单个文件。 所以,Axel 可以加速下载高达40%(大约,我个人认为)。 它非常轻量级,因为没有依赖和使用非常少的CPU和RAM。
|
||||
Axel 支持 HTTP、HTTPS、FTP和 FTPS 协议。它也可以使用多个镜像下载单个文件。 所以,Axel 可以为下载加速高达40%(大约,我个人认为)。 它非常轻量级,因为没有依赖,而且使用非常少的 CPU 和 RAM。
|
||||
|
||||
Axel 使用一个单线程将所有数据直接下载到目标文件。
|
||||
|
||||
注意:没有选项可以在单条命令中下载两个文件
|
||||
注意:没有选项可以在单条命令中下载两个文件。
|
||||
|
||||
有关 Axel 的更多使用,请参阅以下文章。
|
||||
|
||||
[如何在 Linux 中安装和使用 Axel][4]
|
||||
[如何在 Linux 中安装和使用 Axel][4]。
|
||||
|
||||
#### #3 Wget
|
||||
|
||||
[wget][5](以前称为 Geturl)是一个免费的、开源的命令行下载程序,它使用HTTP、HTTPS 和 FTP 这些最广泛使用的Internet协议检索文件。它是一个非交互式命令行工具并且它的名称是从万维网派生的并获取的。
|
||||
[wget][5](以前称为 Geturl)是一个免费的、开源的命令行下载程序,它使用 HTTP、HTTPS 和 FTP 这些最广泛使用的 Internet 协议检索文件。它是一个非交互式命令行工具,其名字表示从万维网中获取文件。
|
||||
|
||||
wget 相比其他工具处理得相当好,即使它不支持多线程和包括后台工作、递归下载、多个文件下载、恢复下载、非交互式下载和大文件下载等功能。
|
||||
wget 相比其它工具将下载处理得相当好,即使它不支持多线程和包括后台工作、递归下载、多个文件下载、恢复下载、非交互式下载和大文件下载等功能。
|
||||
|
||||
默认情况下,所有的Linux发行版都包含 wget,所以我们可以从官方仓库轻松安装,也可以安装到 windows 和 Mac 操作系统。
|
||||
默认情况下,所有的 Linux 发行版都包含 wget,所以我们可以从官方仓库轻松安装,也可以安装到 windows 和 Mac 操作系统。
|
||||
|
||||
wget 已被设计为可在慢速或不稳定的网络连接下保持鲁棒性,如果由于网络问题下载失败,它将继续重试,直到整个文件下载完成。如果服务器支持重新获取,它将指示服务器从中断的地方继续下载。
|
||||
wget 可在慢速或不稳定的网络连接下保持鲁棒性,如果由于网络问题下载失败,它将继续重试,直到整个文件下载完成。如果服务器支持重新获取,它将指示服务器从中断的地方继续下载。
|
||||
|
||||
#### wget 功能
|
||||
|
||||
* 可以使用 REST 和 RANGE 恢复中止的下载
|
||||
* 可以使用文件名通配符和递归镜像目录
|
||||
* 为许多不同语言的基于NLS的消息文件
|
||||
* 为许多不同语言的基于 NLS 的消息文件
|
||||
* 可选将下载的文档中的绝对链接转换为相对链接,以便下载的文档可以在本地链接到彼此
|
||||
* 可在大多数类 UNIX 操作系统以及 Microsoft Windows 上运行
|
||||
* 支持 HTTP 代理
|
||||
@ -72,21 +72,21 @@ wget 已被设计为可在慢速或不稳定的网络连接下保持鲁棒性,
|
||||
|
||||
有关 wget 的进一步用法,请参阅以下文章。
|
||||
|
||||
[如何在 Linux 中安装和使用 wget][6]
|
||||
[如何在 Linux 中安装和使用 wget][6]。
|
||||
|
||||
#### #4 Curl
|
||||
|
||||
[curl][7]类似于 wget,但是不支持多线程,但令人惊讶的是,与 wget 相比,它的下载速度更快。
|
||||
[curl][7] 类似于 wget,但是不支持多线程,但令人惊讶的是,与 wget 相比,它的下载速度更快。
|
||||
|
||||
curl 是一个使用支持的协议(DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、TELNET和TFTP)传输数据到服务器上或传输到本地的工具。
|
||||
curl 是一个向服务器上传或下载的数据传输工具,支持的协议有 DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、TELNET 和 TFT 等。
|
||||
|
||||
该命令旨在无需用户交互即可工作。此外,curl 支持代理、用户身份验证、FTP 上传、HTTP POST、SSL 连接、Cookie、恢复文件传输、Metalink 等。curl 由 libcurl 为所有相关传输功能提供支持。
|
||||
该命令无需用户交互即可工作。此外,curl 支持代理、用户身份验证、FTP 上传、HTTP POST、SSL 连接、Cookie、恢复文件传输、Metalink 等。curl 由 libcurl 为所有相关传输功能提供支持。
|
||||
|
||||
如果指定的 URL 没有 `protocol://` 前缀,curl 将尝试猜测你可能需要什么协议。例如,以 “ftp.” 开头的主机名 curl 将假定你要使用FTP。如果没有找到特定的协议,那么默认为HTTP。
|
||||
如果指定的 URL 没有 `protocol://` 前缀,curl 将尝试猜测你可能需要什么协议。例如,以 “ftp.” 开头的主机名 curl 将假定你要使用 FTP。如果没有找到特定的协议,那么默认为 HTTP。
|
||||
|
||||
参考下面的文章来进一步使用 curl。
|
||||
|
||||
[如何在 Linux 中安装和使用 curl] [8]
|
||||
[如何在 Linux 中安装和使用 curl] [8]。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -94,7 +94,7 @@ via: http://www.2daygeek.com/best-4-command-line-download-managers-accelerators-
|
||||
|
||||
作者:[Magesh Maruthamuthu][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
|
@ -4,40 +4,40 @@
|
||||
### 回顾年度最热门的 AI 项目语言、新语言和更多编程趋势。
|
||||
|
||||
![Top programming trends in 2016](https://opensource.com/sites/default/files/styles/image-full-size/public/u23316/climb-top-bridge-yearbook_red.png?itok=YITYmpoR "Top programming trends in 2016")
|
||||
图片提供:
|
||||
|
||||
[Museum of Photographic Arts][6]. 由 Opensource.com 修改。 CC BY-SA 4.0
|
||||
图片提供:[Museum of Photographic Arts][6]。由 Opensource.com 修改。 CC BY-SA 4.0
|
||||
|
||||
技术在不断前进 - 可能不总是向前,但总是在变动。即使对于那些关注趋势及其对程序员的影响的人来说,确切地了解技术的方向也是一个挑战。当我与我的同事,Kelsey Hightower 和 Scott Hanselman,和我们的非常棒的编程委员会,以塑造来年的[OSCON] [7](O'Reilly 开放源码公约 ),我清楚地看到开源编程趋势总是出现在秋天。我们获得的建议和关注特定主题的数字被证明是开源世界热门趋势的良好指标。以下是我们在 2016 年看到的顶级编程趋势的概述。
|
||||
技术在不断前进 - 可能不总是向前,但总是在变动。即使对于那些关注趋势及其对程序员的影响的人来说,确切地了解技术的方向也是一个挑战。我们总是在秋天才能够清晰地看出当年开源编程趋势,那是我与我的同事,Kelsey Hightower 和 Scott Hanselman,以及我们非常棒的编程委员会,筹备来年的 [OSCON] [7](O'Reilly 开源大会)的时候。我们获得的建议和对特定主题的关注数量是开源世界热门趋势的良好指标。以下是我们在 2016 年看到的顶级编程趋势的概述。
|
||||
|
||||
### 语言驱动 AI
|
||||
|
||||
在 20 世纪 90 年代的人工智能冬季,人工智能随着计算能力的提升再次出现,它一直影响我们如何构建软件。机器学习、深度学习、自然语言处理和汽车语音识别覆盖了世界各地 - 从 GitHub 的项目和工作岗位,到新公司成立背后的原因,以及清除我们杂乱的台面上的空间(嘿,Alexa!)。是的,即使像 OSCON 这样的会议都处处提及 AI。虽然计算能力的可用性已经铺平了道路,所有关于 AI 的开源已经引起了行业广泛开放的创新和竞争。谷歌的 [TensorFlow][8]、[OpenAI][9] 和 [Apache Spark][10]领导的强大框架,但也有较小的球员,如 [Nervana][11] 的 [Neon][12] 和 [Theano][13]。
|
||||
走出 20 世纪 90 年代的人工智能冬季,人工智能随着它所依赖的计算能力的提升再次出现,影响着我们如何构建软件。机器学习、深度学习、自然语言处理和自动语音识别覆盖了世界各地 - 从 GitHub 的项目和工作岗位,到新公司成立背后的原因,以及清除我们杂乱的台面(Hey, Alexa!)。[LCTT 译注:Alexa 是预装在亚马逊 Echo 内的个人虚拟助手,可以接收及相应语音命令,可被看成是亚马逊版的 Siri 语音助手。用户只需要说一声“Alexa”,就可以创建各种任务,还可以和各种智能家居设备进行交互。] 是的,即使像 OSCON 这样的会议都处处提及 <ruby>“万物皆智能”<rt>all things AI</rt></ruby> 。虽然计算能力的提升已经铺平了道路,所有关于 all things AI 的开源已经引起了行业广泛开放的创新和竞争。谷歌的 [TensorFlow][8]、[OpenAI][9] 和 [Apache Spark][10] 使用强大框架成为行业领导者,但也有较小的参与者,如 [Nervana][11] 的 [Neon][12] 和 [Theano][13]。
|
||||
|
||||
AI 的兴起如何影响软件开发者的前景?好了,现在是了解 Python 的好时机 - 它的敏捷性和流行性与数据工程师和科学家使它成为最流行的AI编程语言,其次是R、Java和Scala。
|
||||
AI 的兴起如何影响软件开发者的前景?好,现在是了解 Python 的好时机 - 它对数据工程师和科学家的敏捷性和流行性使它成为最流行的 AI 编程语言,其次是 R、Java 和 Scala。
|
||||
|
||||
### 容器和 Go 的结合就像花生、黄油和果冻
|
||||
### 容器和 Go 的结合就像花生、黄油和果冻(LCTT译注:最佳组合)
|
||||
|
||||
[Go 1.0 发布][14]于 2012 年 3 月。紧接着 [Docker][15] 在一年后发布,[Kubernetes][16] 在另外一年后发布。总之,Go 并不是如我们所知的那样专为基础设施的未来而设计的,但 Go 似乎是为了填充编程世界的一个主要的空洞。对于一个高度联网的世界,一个必须拥有一流并发性的世界而言,Go 是以 Java 或 C++ 永远不会存在的方式专门写的。如果你在做这些事或者类似的事,你应该至少在 Go 世界的尖端,因为它正在发展中,它将会被使用多年,并成为许多程序的骨干。
|
||||
[Go 1.0 发布][14]于 2012 年 3 月。紧接着 [Docker][15] 在一年后发布,[Kubernetes][16] 在另外一年后发布。总之,Go 并不是如我们所知的那样专为基础设施的未来而设计的,但 Go 似乎是为了填充编程世界的一个主要的空洞。对于一个高度联网的世界,一个必须拥有一流并发性的世界而言,Go 是以 Java 或 C++ 永远不会的方式专门写的。如果你在做运维或者类似的事,你应该至少稍微了解下 Go ,因为它正在发展中,它将会被使用多年,并成为许多程序的骨干。
|
||||
|
||||
### Swift 超越了 Apple 的生态系统
|
||||
|
||||
Swift 是[ Apple 在 2015 年发布不就之后就开源的][17]。Swift 已经成为 iOS 和 Mac OS X 开发人员的热门话题。这种语言很容易理解因此很快流行起来,并且它比它要取代的语言 - Objective-C 和 C++ 赢得了一个[更安全的声誉][18]。在[ JavaScript 框架][19]和其他新语言的世界中 Swift 的成功如何成功仍有待观察,但如果它继续获得苹果忠实用户的欢迎,Swift 将有机会成为伟大的网络世界中有望成功的竞争者和超越者。
|
||||
Swift 是[ Apple 在 2015 年启动该编程语言不久之后就开源的][17]。Swift 已经成为 iOS 和 Mac OS X 开发人员的热门话题。这种语言很容易理解,因此很快流行起来,并且它比它要取代的语言 - Objective-C 和 C++ 赢得了一个[更安全的声誉][18]。在[ JavaScript 框架][19]和其他新语言的世界中,Swift 是否成功仍有待观察,但如果它继续获得苹果忠实用户的欢迎,Swift 将有机会成为伟大的网络世界中有望成功的竞争者和超越者。
|
||||
|
||||
|
||||
### Java 8 vs 使用 JVM 的函数式语言
|
||||
|
||||
Java 8 的函数式能力(即引入 Lambdas )的出现使得 JVM 语言(如 Scala 和 Clojure)上榜单了。最近,很大程度上由于 Apache Spark 的增长使得 Scala 有一点小爆发。因为长期的和新的开发人员一起都来关注 Java 8 所带来的东西,至少在那一刻,Scala 和 Clojure 似乎被搁置。Java 现在能够解决并发和大数据关心的事,这些其他编程语言专门为满足这些要求已经做了多年。在 2017 年,OSCON 几乎缺乏 Scala 和 Clojure 的提案,不是因为设计,但似乎潜在发言者没有什么兴趣提交提案。
|
||||
Java 8 的函数式能力(即引入 Lambdas )的出现使得 JVM 语言(如 Scala 和 Clojure)上榜单了。最近,很大程度上由于 Apache Spark 的增长使得 Scala 有一点小爆发。现在,因为长期的和新的开发人员一起都在关注 Java 8 所带来的东西,至少目前,Scala 和 Clojure 似乎被搁置了。Java 现在能够解决并发和大数据相关的事,而那些专门为满足此方面要求而构建的其他编程语言已经做了多年。在 2017 年,OSCON 几乎缺乏 Scala 和 Clojure 的提案,不是因为设计,而是那些提交提案的发言者似乎没有什么兴趣。
|
||||
|
||||
### 新兴语言
|
||||
|
||||
和往常一样,世上总是有更多的新兴语言,旨在把事情做得更好,它们可以做到从前的语言出现时没有的需求,或者开始只是疯狂思想,最终改变了我们对编程的看法。今年有五种语言即将进入大时代:Rust、Elixir、Elm、Kotlin和 Perl 6。
|
||||
和往常一样,世上总是在不停出现新兴语言,目的是比之前的语言做得更好,可以响应从前的语言出现时没有的需求,或者开始只是疯狂思想,最终却改变了我们对编程的看法。今年有五种语言即将进入大时代:Rust、Elixir、Elm、Kotlin 和 Perl 6。
|
||||
|
||||
这 5 个会给行业带来什么?
|
||||
这 5 个热门会给行业带来什么?
|
||||
|
||||
* [Rust][1]:兼顾速度和一定安全的系统编程语言。
|
||||
* [Elixir][2]:函数式、动态和容错,适用于那些规模越来越大的应用程序。
|
||||
* [Elm][3]:更多函数式的乐趣,使用 JavaScript,学习成为一种乐趣。
|
||||
* [Kotlin][4]:这一个是为使用 Java 和 JVM 的人设计的语言 - 静态类型、安全,我提到Java兼容?
|
||||
* [Kotlin][4]:这一个是为使用 Java 和 JVM 的人设计的语言 - 静态类型、安全,此外我提到 Java 兼容了吗?
|
||||
* [Perl 6] [5]:它还活着!Perl 6 碰巧是一种新的语言,它胜在富有表现力和功能丰富。
|
||||
|
||||
时间会告诉他们是否会如约发布。尝试他们,为他们贡献,成为未来的一部分!
|
||||
@ -56,7 +56,7 @@ via: https://opensource.com/article/16/12/yearbook-top-programming-trends-2016
|
||||
|
||||
作者:[Rachel Roumeliotis][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
使用 Axel 命令行下载器/加速器加速你的下载
|
||||
============================================================
|
||||
|
||||
[Axel][7] 是一个轻量级下载程序,它如其他加速器那样做着同样的事情。它为一个文件打开多个连接,每个连接下载单独的文件片段以更快地完成下载。
|
||||
[Axel][7] 是一个轻量级下载程序,它和其他加速器一样,为一个文件打开多个连接,每个连接下载单独的文件片段以更快地完成下载。
|
||||
|
||||
Axel支持 HTTP】HTTPS、FTP和 FTPS 协议。它也可以使用多个镜像下载单个文件。所以,Axel 可以加速下载高达 40%(大约,我个人认为)。它非常轻量级,因为它没有依赖并且使用非常少的 CPU 和 RAM。
|
||||
Axel 支持 HTTP、HTTPS、FTP和 FTPS 协议。它也可以使用多个镜像下载单个文件。所以,Axel 可以加速下载高达 40%(大约,我个人认为)。它非常轻量级,因为它没有依赖并且使用非常少的 CPU 和 RAM。
|
||||
|
||||
Axel 使用一个单线程将所有数据直接下载到目标文件。
|
||||
|
||||
注意:没有选项可以在单条命令中下载两个文件
|
||||
**注意**:没有选项可以在单条命令中下载两个文件。
|
||||
|
||||
你还可以尝试其他命令行下载管理器/加速器
|
||||
你还可以尝试其他命令行下载管理器/加速器。
|
||||
|
||||
* [[aria2 - 超快速下载程序] [1]
|
||||
* [[wget - 标准命令行下载程序] [2]
|
||||
* [[curl - 命令行下载程序] [3]
|
||||
* [[Linux 下的最好的 4 个命令行下载管理器/加速器] [4]
|
||||
* [aria2 - 超快速下载程序] [1]
|
||||
* [wget - 标准命令行下载程序] [2]
|
||||
* [curl - 命令行下载程序] [3]
|
||||
* [Linux 下的最好的 4 个命令行下载管理器/加速器] [4]
|
||||
|
||||
大多数发行版(Debian、Ubuntu、Mint、Fedora、suse、openSUSE、Arch Linux、Manjaro、Mageia等)都有 axel 包,所以我们可以从发行版官方仓库轻松安装。对于CentOS/RHEL,我们需要启用[EPEL Repository][5]。
|
||||
大多数发行版(Debian、Ubuntu、Mint、Fedora、suse、openSUSE、Arch Linux、Manjaro、Mageia 等)都有 axel 包,所以我们可以从发行版官方仓库轻松安装。对于 CentOS/RHEL,我们需要启用 [EPEL Repository][5]。
|
||||
|
||||
```
|
||||
[在 Debian/Ubuntu/LinuxMint 上安装 Axel]
|
||||
@ -40,7 +40,7 @@ $ sudo pacman -S axel
|
||||
|
||||
#### 1) 下载单个文件
|
||||
|
||||
以下命令将从给定的 URL 下载文件并存储在当前目录中,而下载文件时,我们可以看到文件的信息(建立的连接数、下载速度、下载进度、完成下载所花费的时间以及连接完成的时间)。
|
||||
以下命令将从给定的 URL 下载文件并存储在当前目录中,下载文件时,我们可以看到文件的信息(建立的连接数、下载速度、下载进度、完成下载所花费的时间以及连接完成的时间)。
|
||||
|
||||
```
|
||||
# axel https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
|
||||
@ -76,7 +76,7 @@ Downloaded 21.6 megabytes in 3 seconds. (5755.94 KB/s)
|
||||
|
||||
#### 2) 用不同的名称保存文件
|
||||
|
||||
你可以通过添加 -o(小写)选项和文件名来启动下载,并使用其他名称来保存文件。这里我们使用 owncloud.tar.bz2 作为保存文件名。
|
||||
要使用其他名称来保存文件,启动下载时可以添加 -o(小写)选项和文件名。这里我们使用文件名 **owncloud.tar.bz2** 来保存文件。
|
||||
|
||||
```
|
||||
# axel -o cloud.tar.bz2 https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
|
||||
@ -114,7 +114,7 @@ Downloaded 21.6 megabytes in 3 seconds. (6001.05 KB/s)
|
||||
|
||||
#### 3) 限制下载速度
|
||||
|
||||
默认上 axel 以字节/秒为单位设置下载文件的最大速度。当我们的网络连接速度较慢时,我们可以使用此选项。只需添加 `-s` 选项,后面跟字节值。这里我们要下载一个限速为 `512 KB/s` 的文件。
|
||||
默认 axel 以字节/秒为单位设置下载文件的最大速度。当我们的网络连接速度较慢时,可以使用此选项。只需添加 `-s` 选项,后面跟字节值。这里我们要限速 `512 KB/s` 下载一个文件。
|
||||
|
||||
```
|
||||
# axel -s 512000 https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
|
||||
@ -150,7 +150,7 @@ Downloaded 21.6 megabytes in 44 seconds. (494.54 KB/s)
|
||||
|
||||
#### 4) 限制连接数
|
||||
|
||||
axel 默认建立 4 个连接以从不同的镜像获取文件。此外,我们可以通过使用 `-n` 选项添加更多的连接,后跟连接数 `8` 来提高下载速度。我们为了更安全新添加了八个连接,但不幸的是,它花了更多时间来下载文件。
|
||||
axel 默认建立 4 个连接以从不同的镜像获取文件。此外,我们可以通过使用 `-n` 选项添加更多的连接,后跟连接数 `10` 来提高下载速度。我们为了更安全新添加了八个连接,但不幸的是,它花了更多时间来下载文件。
|
||||
|
||||
```
|
||||
# axel -n 10 https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
|
||||
@ -192,7 +192,7 @@ Downloaded 21.6 megabytes in 5 seconds. (4109.41 KB/s)
|
||||
|
||||
#### 5) 恢复未完成的下载
|
||||
|
||||
axel 默认具有恢复未完成的下载的行为。Axel 在下载文件时定期更新状态文件(扩展名为 .st)。由于某些原因,下载中途停止了?不用担心,只要使用相同的 axel 命令,它将会检查 `file` 和 `file.st`,如果找到,它会从停止处恢复下载。
|
||||
axel 默认具有恢复未完成的下载的行为。Axel 在下载文件时定期更新状态文件(扩展名为 `.st`)。由于某些原因,下载中途停止了?不用担心,只要使用相同的 axel 命令,它将会检查 `file` 和 `file.st`,如果找到,它会从停止处恢复下载。
|
||||
|
||||
```
|
||||
# axel https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
|
||||
@ -267,7 +267,7 @@ Downloaded 3415.4 kilobytes in 1 second. (2264.93 KB/s)
|
||||
|
||||
#### 7) 替换进度条
|
||||
|
||||
如果你不喜欢默认的进度条,你可以使用 -a 选项来替换进度条。
|
||||
如果你不喜欢默认的进度条,你可以使用 **-a** 选项来替换进度条。
|
||||
|
||||
```
|
||||
# axel -a https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
|
||||
@ -299,7 +299,7 @@ Downloaded 21.6 megabytes in 4 seconds. (5062.32 KB/s)
|
||||
|
||||
#### 8) 阅读更多关于 axel
|
||||
|
||||
如果你想要了解更多关于 axel 的内容,只需要进入它的手册。
|
||||
如果你想要了解更多关于 axel 的选项,只需要进入它的手册。
|
||||
|
||||
```
|
||||
# man axel
|
||||
@ -315,7 +315,7 @@ via: http://www.2daygeek.com/axel-command-line-downloader-accelerator-for-linux/
|
||||
|
||||
作者:[ MAGESH MARUTHAMUTHU][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
|
@ -0,0 +1,81 @@
|
||||
用 Pi-hole 和 Orange Pi 在你所有的设备上阻止广告
|
||||
============================================================
|
||||
|
||||
|
||||
你是否发现在你的浏览器、智能手机和平板上设置广告拦截器很恼火? 至少我是这样的。我家里有一些“智能”设备,然而它们似乎没有任何类型的广告拦截软件。 好了,我了解到 [Pi-hole][2] 是一个 pi 上的广告拦截软件,它能在到达你的设备之前阻止所有的广告。它能让你列出任何域的黑名单或白名单,并且它有一个很好的面板,让你深入了解你的家庭网络最常访问的域/网站、最活跃的设备和最常见的广告商。
|
||||
|
||||
Pi-hole 的确是针对树莓派上运行的,但我想知道它能否在我运行 Armbian Linux 的廉价 Orange Pi 上运行。 好吧,它绝对可以!下面是我让 Pi-hole 能快速运行的方法。
|
||||
|
||||
|
||||
### 安装 Pi-hole
|
||||
|
||||
安装 Pi-hole 是使用终端完成的,所以打开你的 Orange Pi 桌面上的终端或 ssh 到 pi。
|
||||
|
||||
你将下载软件,并进入到你选择的目录,确保你有写入权限。像这样:
|
||||
|
||||
|
||||
```
|
||||
cd <your preferred directory>/
|
||||
```
|
||||
|
||||
我偏离了 Pi-hole 主页上的“一键”安装。 我的意思是,他们说在命令下面说“管道到 bash 可能是危险的”,本地安装是“更安全”。所以,这里是我的本地安装步骤:
|
||||
|
||||
```
|
||||
git clone --depth 1 https://github.com/pi-hole/pi-hole.git Pi-hole
|
||||
cd Pi-hole/automated\ install/
|
||||
./basic-install.sh
|
||||
```
|
||||
|
||||
如果你没有以 root 用户身份登录,那么基本安装脚本将提示你输入密码,然后再继续。 如果需要,脚本将下载并安装一些必备的 Linux 软件包。接着它会显示一个红蓝界面,提示你回答有关如何配置 Pi-hole 的几个问题。以我的经验,直接接受默认值就可以了,我后来发现 Pi-hole 的 web 程序可以更改设置,如DNS提供商。
|
||||
|
||||
该脚本将告诉你在图形界面和终端中 Pi-hole 的密码。 请记住该密码!
|
||||
|
||||
脚本还会告诉你 Pi-hole 的网址,应该像这样:
|
||||
|
||||
```
|
||||
http://<your pi’s IP address>/admin
|
||||
```
|
||||
|
||||
或者类似这样
|
||||
|
||||
```
|
||||
http://orangepipc/admin
|
||||
```
|
||||
|
||||
你需要输入 Pi-hole 密码,接着你会看到像下面这样的漂亮面板:
|
||||
|
||||
![Ph-hole](https://i1.wp.com/piboards.com/wp-content/uploads/2017/01/ph-hole.png?resize=640%2C532)
|
||||
|
||||
请记住更改家庭网络路由器上的 DNS 设置并使用你 pi 的地址。 否则,广告不会被过滤!
|
||||
|
||||
上面的说明与 Pi-hole 网站提供的替代“安全”方法大致相同,尽管 Armbian 没有被列为官方支持的操作系统。我相信这些说明应该在 Raspberry Pi 或其他运行某种形式的基于 Debian 的 Linux 操作系统的 pi 上工作。但是,我并没有测试,我有兴趣听到你的经验(请给我留下简短的评论)。
|
||||
|
||||
|
||||
### 思考和观察
|
||||
|
||||
运行 Pi-hole 一段时间后,在 Pi-hole 面板上出现一些学习信息,我发现有比我所知道的更多的网络活动,它们并不是所有我批准的活动。例如,有一些我不知道的关于游戏程序的“有趣”连接从我的孩子的设备上发出,加上社交网络程序显然一直在给我发送骚扰数据。总之,无论是否是良性流量,我很高兴减少了流量负载,即使有点少。。。我的意思是,为什么我应该允许我不想要的或者不关心的应用程序和广告吃掉我的网络流量?好吧,现在他们被封锁了。
|
||||
|
||||
像这样为 Orange Pi 设置广告屏蔽很便宜、容易,并有助于在限制一些不必要的流量从我的家庭网络中来回(特别是关于孩子们的)中放松我的大脑。如果你有兴趣,你可以看到我上一篇文章关于如何[轻松设置一个 Orange Pi][3],并使用下面的链接来查看 Orange Pi 是多么便宜。我相信这是一个值得投资东西。
|
||||
|
||||
Amazon 上的 Orange Pi (附属链接): [Orange Pi PC Single Board Computer Quad Core ARM Cortex-A7 1GB DDR3 4K Decode][4]
|
||||
|
||||
[AliExpress 上的Orange Pi 商店][5] (附属连接).
|
||||
|
||||
编辑:这篇文章讽刺的是,如果你成功设置了 Pi-hole,这个站点上的链接 (s.click.aliexpress.com) 将被屏蔽,是否加入到白名单取决于你。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://piboards.com/2017/01/07/block-ads-on-all-your-devices-at-home-with-pi-hole-and-an-orange-pi/
|
||||
|
||||
作者:[MIKE WILMOTH][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://piboards.com/author/piguy/
|
||||
[1]:http://s.click.aliexpress.com/deep_link.htm?aff_short_key=N3VJQBY&dl_target_url=http://best.aliexpress.com
|
||||
[2]:https://pi-hole.net/
|
||||
[3]:http://piboards.com/2017/01/04/easy-set-up-orange-pi/
|
||||
[4]:https://www.amazon.com/gp/product/B018W6OTIM/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B018W6OTIM&linkCode=as2&tag=piboards-20&linkId=ac292a536d58eabf1ee73e2c575e1111
|
||||
[5]:http://s.click.aliexpress.com/e/bAMVj2R
|
@ -6,33 +6,33 @@
|
||||
![Improve your programming skills with Exercism ](https://opensource.com/sites/default/files/styles/image-full-size/public/images/life/code2.png?itok=CVgC8tlK "Improve your programming skills with Exercism ")
|
||||
>图片提供: opensource.com
|
||||
|
||||
我们中的很多人有一个 2017 年的目标,将提高我们的编程能力或学习如何编程在第一位。虽然我们可以访问许多资源,但是练习独立于特定职业的代码开发的艺术需要一些规划。Exercism.io 是为此确切目的而设计的一种资源。
|
||||
我们中的很多人有 2017 年的目标,将提高编程能力或学习如何编程放在第一位。虽然我们有许多资源可以访问,但练习独立于特定职业的代码开发的艺术还是需要一些规划。[Exercism.io][1] 就是为此目的而设计的一种资源。
|
||||
|
||||
Exercism 是一个开源项目和服务,旨在通过发现和协作的哲学帮助人们提高他们的编程技能。Exercism 提供了几十种不同编程语言的练习。实践者完成每个练习,接着根据他们的回复反馈,使他们能够从他们的同行小组的经验中学习。
|
||||
Exercism 是一个 [开源][2] 项目和服务,通过发现和协作,帮助人们提高他们的编程技能。Exercism 提供了几十种不同编程语言的练习。实践者完成每个练习,并获得反馈,从而可以从他们的同行小组的经验中学习。
|
||||
|
||||
这里有这么多同行! Exercism 在 2016 年留下了一些令人印象深刻的统计:
|
||||
|
||||
* 参加者来自201个不同国家
|
||||
* 自 2013 年 6 月以来 29,000 名参与者提交了演习,其中 15,500 名参加者仅在 2016 年提交练习
|
||||
* 自 2013 年 6 月以来 15,000 名参与者就练习解决方案提供反馈,其中 5,500 人在 2016 年提供反馈
|
||||
* 有来自201个不同国家的参与者
|
||||
* 自 2013 年 6 月以来,29,000 名参与者提交了练习,其中仅在 2016 年就有 15,500 名参加者提交练习
|
||||
* 自 2013 年 6 月以来,15,000 名参与者就练习解决方案提供反馈,其中 2016 年有 5,500 人提供反馈
|
||||
* 每月 50,000 名访客,每周超过 12,000 名访客
|
||||
* 目前练习支持 33 种编程语言,另外 22 种语言在支持中
|
||||
* 目前练习支持 33 种编程语言,另外 22 种语言在筹备工作中
|
||||
|
||||
该项目为所有级别的参与者提供了一系列小小的胜利,使他们能够“即使在低水平也能发展到高度流利”,Exercism 的创始人 [Katrina Owen][3] 这样说到。虽然 Exercism 并不旨在教导学员成为一名程序员,但它的练习使他们对语言及其瑕疵有深刻的了解。这种熟悉性消除了学习者对语言的认知负担(流利),使他们能够专注于更困难的架构和最佳实践(熟练)的问题。
|
||||
该项目为所有级别的参与者提供了一系列小小的胜利,使他们能够“即使在低水平也能发展到高度流利”,Exercism 的创始人 [Katrina Owen][3] 这样说到。Exercism 并不旨在教导学员成为一名职业程序员,但它的练习使他们对一种语言及其瑕疵有深刻的了解。这种熟悉性消除了学习者对语言的认知负担(流利),使他们能够专注于更困难的架构和最佳实践(熟练)的问题。
|
||||
|
||||
Exercism 通过一系列练习(还有什么?)来做到这一点。程序员下载[命令行客户端][4],检索第一个练习,添加完成练习的代码,然后提交解决方案。提交解决方案后,程序员可以研究他人的解决方案,并从不同的方法学习同样的问题。更重要的是,每个解决方案来自其他参与者的反馈。
|
||||
Exercism 通过一系列练习(还有什么?)来做到这一点。程序员下载[命令行客户端][4],检索第一个练习,添加完成练习的代码,然后提交解决方案。提交解决方案后,程序员可以研究他人的解决方案,并学习到对同一个问题不同的解决方式。更重要的是,每个解决方案都会收到来自其他参与者的反馈。
|
||||
|
||||
反馈是 Exercism 的超级力量。鼓励所有参与者不仅接收反馈而且提供反馈。根据 Owen 说的,Exercism 社区的成员从提供反馈比完成练习了解更多。她说:“这是一个强大的学习经验,你被迫发表内心感受,并检查你的假设、习惯和偏见”。她还指出,反馈可以有多种形式。
|
||||
反馈是 Exercism 的超级力量。鼓励所有参与者不仅接收反馈而且提供反馈。根据 Owen 说的,Exercism 的社区成员提供反馈比完成练习学到更多。她说:“这是一个强大的学习经验,你被迫发表内心感受,并检查你的假设、习惯和偏见”。她还指出,反馈可以有多种形式。
|
||||
|
||||
欧文说:“只要进入,观察并问问题”。
|
||||
欧文说:“只需进入,观察并问问题”。
|
||||
|
||||
那些刚刚接触编程,甚至只是一种特定语言的人,可以通过质疑假设来提供有价值的反馈,同时通过协作和对话来学习。
|
||||
|
||||
除了实现对新语言的学习之外,Exercism 本身还强烈支持和鼓励项目的新贡献者。在[SitePoint.com][5]的一篇文章中,欧文强调:“如果你想为开源贡献代码,你所需要的技能水平只要‘够用’。” Exercism 不仅鼓励新的贡献者,它还尽可能地帮助新贡献者发布他们项目中的第一个补丁。到目前为止,有近 1000 人是[ Exercism 项目][6]的贡献者。
|
||||
除了对新语言的 <ruby>“微课”学习<rt>bite-sized learning</rt></ruby> 之外,Exercism 本身还强烈支持和鼓励项目的新贡献者。在 [SitePoint.com][5] 的一篇文章中,欧文强调:“如果你想为开源贡献代码,你所需要的技能水平只要‘够用’即可。” Exercism 不仅鼓励新的贡献者,它还尽可能地帮助新贡献者发布他们项目中的第一个补丁。到目前为止,有近 1000 人是[ Exercism 项目][6]的贡献者。
|
||||
|
||||
还会有大量新的贡献者来保持繁忙。 Exercism 目前正在审查[其语言轨道的健康][7],目的是使所有轨道可持续并避免维护者的倦怠。它还在寻求[捐赠][8]和赞助,聘请设计师提高网站的可用性。
|
||||
新贡献者会有大量工作让他们忙碌。 Exercism 目前正在审查[其语言轨道的健康状况][7],目的是使所有轨道可持续并避免维护者的倦怠。它还在寻求[捐赠][8]和赞助,聘请设计师提高网站的可用性。
|
||||
|
||||
Owen 说:“这些改进对于网站的健康以及为了 Exercism 参与者的发展是有必要的,但这些变化鼓励并减轻了新贡献者加入的途径。” 她说:“如果我们可以重新设计,产品方面将更加可维护。。。当用户体验一团糟,华丽的代码一点用也没有”。该项目有一个非常活跃的[讨论仓库][9],这里社区成员合作来发现最好的新方法和功能。
|
||||
Owen 说:“这些改进对于网站的健康以及为了 Exercism 参与者的发展是有必要的,这些变化还鼓励新贡献者加入并简化了加入的途径。” 她说:“如果我们可以重新设计,产品方面将更加可维护。。。当用户体验一团糟,华丽的代码一点用也没有”。该项目有一个非常活跃的[讨论仓库][9],这里社区成员合作来发现最好的新方法和功能。
|
||||
|
||||
那些想关注项目但还没有参与的人可以关注[邮件列表][10]。
|
||||
|
||||
@ -42,15 +42,13 @@ Owen 说:“这些改进对于网站的健康以及为了 Exercism 参与者
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/profile_pictures/public/pictures/vmb_helvetica_sm.png?itok=mSb3xriS)
|
||||
|
||||
VM(Vicky)Brasseur - VM(aka Vicky)是一名技术人员、项目、流程、产品和 p^Hbusinesses 的经理。在她超过18年的科技行业从业中,她一直是分析师、程序员、产品经理、软件工程经理和软件工程总监。 目前,她是 Hewlett Packard Enterprise 上游开源开发团队的高级工程经理。 VM 的博客在 anonymoushash.vmbrasseur.com,tweets 在 @vmbrasseur。
|
||||
|
||||
via: https://opensource.com/article/17/1/exercism-learning-programming
|
||||
VM(Vicky)Brasseur - VM(也称为 Vicky)是技术人员、项目、流程、产品和 p^Hbusinesses 的经理。在她超过 18 年的科技行业从业中,她曾是分析师、程序员、产品经理、软件工程经理和软件工程总监。 目前,她是 Hewlett Packard Enterprise 上游开源开发团队的高级工程经理。 VM 的博客在 anonymoushash.vmbrasseur.com,tweets 在 @vmbrasseur。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者:[VM (Vicky) Brasseur][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
@ -65,3 +63,5 @@ via: https://opensource.com/article/17/1/exercism-learning-programming
|
||||
[8]:http://exercism.io/donate
|
||||
[9]:https://github.com/exercism/discussions/issues?page=1&q=is%3Aissue+is%3Aopen
|
||||
[10]:http://tinyletter.com/exercism/archive
|
||||
|
||||
|
||||
|
@ -0,0 +1,96 @@
|
||||
让 sudo 在你输入错误的密码时冒犯你
|
||||
============================================================
|
||||
|
||||
sudoers 是 Linux 中的默认 sudo 安全策略插件,但是经验丰富的系统管理员可以自定义安全策略以及输入输出日志记录的插件。它由 `/etc/sudoers` 这个文件驱动,或者也可在 LDAP 中。
|
||||
|
||||
你可以在上面的文件中定义 sudoers insults 或其他选项。它在 defaults 部分下设置。请阅读通过我们的上一篇文章[在Linux中设置 `sudo` 时 10 个有用的 sudoers 配置][1]。
|
||||
|
||||
在本文中,我们将解释一个 sudoers 配置参数,以允许个人或系统管理员设置[sudo 命令][2]来冒犯输入错误密码的系统用户。
|
||||
|
||||
首先打开文件 `/etc/sudoers`,如下所示:
|
||||
|
||||
```
|
||||
$ sudo visudo
|
||||
```
|
||||
|
||||
进入 defaults 部分,并添加下面的行:
|
||||
|
||||
```
|
||||
Defaults insults
|
||||
```
|
||||
|
||||
下面是我系统中 /etc/sudoers 默认展示的 defaults 部分。
|
||||
|
||||
[
|
||||
![Set sudo Insults Parameter](http://www.tecmint.com/wp-content/uploads/2017/01/Set-sudo-Insults-Parameter.png)
|
||||
][3]
|
||||
|
||||
设置 sudo insults 参数
|
||||
|
||||
从上面的截图中,你可以看到还有许多其他默认值定义,例如,当每次用户输入错误的密码、设置安全路径、配置自定义 sudo 日志文件等时发送邮件到 root。
|
||||
|
||||
保存并关闭文件。
|
||||
|
||||
使用 sudo 运行命令并输入错误的密码,然后观察 insults 选项是如何工作的:
|
||||
|
||||
```
|
||||
$ sudo visudo
|
||||
```
|
||||
[
|
||||
![sudo Insult in Action](http://www.tecmint.com/wp-content/uploads/2017/01/How-sudo-Insult-Works.png)
|
||||
][4]
|
||||
|
||||
实践 sudo insult
|
||||
|
||||
注意:当配置 insults 参数时,它会禁用 `badpass_message` 参数,该参数会在命令行中输出特定的消息(默认消息为 “sorry, try again”),以防用户输入错误的密码。
|
||||
|
||||
要修改消息,请将 `badpass_message` 参数添加到 /etc/sudoers 文件中,如下所示。
|
||||
|
||||
```
|
||||
Defaults badpass_message="Password is wrong, please try again" #try to set a message of your own
|
||||
```
|
||||
[
|
||||
![Set sudo badpassword Message](http://www.tecmint.com/wp-content/uploads/2017/01/Set-sudo-badpassword-Message.png)
|
||||
][5]
|
||||
|
||||
设置 sudo 错误密码消息
|
||||
|
||||
保存并关闭文件,然后调用 sudo 查看它是如何工作的,你设置的 badpass_message 消息会在每次你或任何系统用户输入错误的密码的时候打印出来。
|
||||
|
||||
```
|
||||
$ sudo visudo
|
||||
```
|
||||
[
|
||||
![Sudo badpassword Message](http://www.tecmint.com/wp-content/uploads/2017/01/sudo-badpassword-Message.png)
|
||||
][6]
|
||||
|
||||
sudo 错误密码消息
|
||||
|
||||
就是这样了,在本文中,我们回顾了如何在用户输入错误的密码时将 sudo 设置为打印 insults。请通过下面的评论栏分享你的想法。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||
![](http://1.gravatar.com/avatar/4e444ab611c7b8c7bcb76e58d2e82ae0?s=128&d=blank&r=g)
|
||||
|
||||
Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin、web 开发人员,目前是 TecMint 的内容创建者,他喜欢用电脑工作,并坚信分享知识。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
via: http://www.tecmint.com/sudo-insult-when-enter-wrong-password/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
[1]:http://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/
|
||||
[2]:http://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/
|
||||
[3]:http://www.tecmint.com/wp-content/uploads/2017/01/Set-sudo-Insults-Parameter.png
|
||||
[4]:http://www.tecmint.com/wp-content/uploads/2017/01/How-sudo-Insult-Works.png
|
||||
[5]:http://www.tecmint.com/wp-content/uploads/2017/01/Set-sudo-badpassword-Message.png
|
||||
[6]:http://www.tecmint.com/wp-content/uploads/2017/01/sudo-badpassword-Message.png
|
@ -0,0 +1,229 @@
|
||||
了解基础的 Linux I/O (输入/输出) 重定向原理
|
||||
============================================================
|
||||
|
||||
Linux 管理的一个最重要并且[有趣的话题][4]是 I/O 重定向。此功能在命令行中使你能够将命令的输入以及/或者输出输入或者输出到文件中,或使用管道将多个命令连接在一起以形成所谓的“命令管道”。
|
||||
|
||||
我们运行的所有命令基本上产生两种输出:
|
||||
|
||||
1.命令结果 - 程序设计产生的数据
|
||||
2.程序状态和错误消息,用来通知用户程序的执行细节。
|
||||
|
||||
在 Linux 和其他类 Unix 系统中,有三个默认文件,这些文件也由 shell 使用文件描述符号标识:
|
||||
|
||||
1. stdin 或 0 - 它连接到键盘,大多数程序从此文件读取输入。
|
||||
2. stdout 或 1 - 它连接到屏幕,并且所有程序将其结果发送到此文件
|
||||
3. stderr 或 2 - 程序将状态/错误消息发送到此文件,该文件也发送到屏幕上。
|
||||
|
||||
因此,I/O 重定向允许你更改命令的输入源以及将输出和错误消息发送到其他地方。这可以通过 `“<”` 和 `“>”` 重定向操作符来实现。
|
||||
|
||||
### 如何在 Linux 中重定向标准输出到文件中
|
||||
|
||||
如下面的示例所示,你可以重定向标准输出,这里,我们要存储[ top 命令][5]的输出以供以后检查:
|
||||
|
||||
```
|
||||
$ top -bn 5 >top.log
|
||||
```
|
||||
|
||||
有这些标志:
|
||||
|
||||
1. `-b` - 让 top 以批处理模式运行,以便你可以将其输出重定向到一个文件或另一个命令。
|
||||
2. `-n` - 指定命令终止前的迭代次数。
|
||||
|
||||
你可以使用[ cat 命令][6]来查看 `top.log` 文件的内容:
|
||||
|
||||
```
|
||||
$ cat top.log
|
||||
```
|
||||
|
||||
要附加命令的输出,请使用 `“>>”` 操作符。
|
||||
|
||||
例如,在 top.log 文件中,特别是在脚本(或命令行)中追加上面的[ top 命令][7]的输出,请输入下面的那行:
|
||||
|
||||
```
|
||||
$ top -bn 5 >>top.log
|
||||
```
|
||||
|
||||
注意: 使用文件描述符数字,上面的重定向命令等同于:
|
||||
|
||||
```
|
||||
$ top -bn 5 1>top.log
|
||||
```
|
||||
|
||||
### 如何在 Linux 中重定向标准错误到文件中
|
||||
|
||||
要重定向命令的标准错误,你需要明确指定文件描述符 `2`,以便让 shell 了解你正在尝试做什么。
|
||||
|
||||
例如,下面的[ ls 命令][8]将在没有 root 权限的普通系统用户执行时产生错误:
|
||||
|
||||
```
|
||||
$ ls -l /root/
|
||||
```
|
||||
|
||||
你可以重定向标准错误到文件中:
|
||||
|
||||
```
|
||||
$ ls -l /root/ 2>ls-error.log
|
||||
$ cat ls-error.log
|
||||
```
|
||||
[
|
||||
![Redirect Standard Error to File](http://www.tecmint.com/wp-content/uploads/2017/01/Redirect-Standard-Error-in-Linux.png)
|
||||
][9]
|
||||
|
||||
重定向标准到文件中
|
||||
|
||||
为了附加到标准错误,使用下面的命令:
|
||||
|
||||
```
|
||||
$ ls -l /root/ 2>>ls-error.log
|
||||
```
|
||||
|
||||
### 如何重定向标准输出/错误到一个文件中
|
||||
|
||||
还可以将命令的所有输出(标准输出和标准错误)捕获到单个文件中。这可以用两种可能的方式通过指定文件描述符来完成:
|
||||
|
||||
1. 第一种是相对较旧的方法,其工作方式如下:
|
||||
|
||||
```
|
||||
$ ls -l /root/ >ls-error.log 2>&1
|
||||
```
|
||||
|
||||
上面的命令意思是 shell 首先将[ ls 命令][10]的输出发送到文件 ls-error.log(使用 `> ls-error.log`),然后将所有错误消息写入文件描述符 2(标准输出),它已被重定向到文件 ls-error.log(使用`2>&1`)中。这表示标准错误也被发送到与标准输出相同的文件中。
|
||||
|
||||
2. 第二种直接的方法是:
|
||||
|
||||
```
|
||||
$ ls -l /root/ &>ls-error.log
|
||||
```
|
||||
|
||||
你也可以这样将标准输出和标准错误附加到单个文件中:
|
||||
|
||||
```
|
||||
$ ls -l /root/ &>>ls-error.log
|
||||
```
|
||||
|
||||
### 如何将标准输入重定向到文件中
|
||||
|
||||
大多数(如果不是全部)命令从标准输入获得其输入,并且默认标准输入连接到键盘。
|
||||
|
||||
要从键盘以外的文件重定向标准输入,请使用 `“<”` 操作符,如下所示:
|
||||
|
||||
```
|
||||
$ cat <domains.list
|
||||
```
|
||||
|
||||
[
|
||||
![Redirect Standard Input to File](http://www.tecmint.com/wp-content/uploads/2017/01/Redirect-Standard-Input-to-File.png)
|
||||
][11]
|
||||
|
||||
重定向文件到标准输入中
|
||||
|
||||
### 如何重定向标准输入/输出到文件中
|
||||
|
||||
你可以如下在[ sort 命令中][12] 同时执行标准输入、标准输出重定向:
|
||||
|
||||
```
|
||||
$ sort <domains.list >sort.output
|
||||
```
|
||||
|
||||
### 如何使用管道进行 I/O 重定向
|
||||
|
||||
要将一个命令的输出重定向为另一个命令的输入,你可以使用管道,这是用于构建具有复杂操作命令的有力方法。
|
||||
|
||||
例如,以下命令将[列出前五个最近修改的文件][13]。
|
||||
|
||||
```
|
||||
$ ls -lt | head -n 5
|
||||
```
|
||||
|
||||
选项的意思是:
|
||||
|
||||
1. `-l` - 启用长列表格式
|
||||
2. `-t` - [最新修改的文件][1]首先显示
|
||||
3. `-n` - 指定要显示的标题行数
|
||||
|
||||
### 构建管道的重要命令
|
||||
|
||||
在这里,我们将简要回顾一下构建命令管道的两个重要命令,它们是:
|
||||
|
||||
xargs 用于从标准输入构建和执行命令行。下面是使用 xargs 的管道示例,此命令用于[将文件复制到 Linux 中的多个目录][14]:
|
||||
|
||||
```
|
||||
$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh
|
||||
```
|
||||
[
|
||||
![Copy Files to Multiple Directories](http://www.tecmint.com/wp-content/uploads/2017/01/Copy-Files-to-Multiple-Directories.png)
|
||||
][15]
|
||||
|
||||
复制文件到多个目录
|
||||
|
||||
添加选项:
|
||||
|
||||
1. -n 1` - 让 xargs 对每个命令行最多使用一个参数,并发送到[cp命令][2]
|
||||
2. `cp` - 复制文件
|
||||
3. `-v` - [显示 copy 命令的进度][3]。
|
||||
|
||||
有关更多的使用选项和信息,请阅读 xargs 手册页:
|
||||
|
||||
```
|
||||
$ man xargs
|
||||
```
|
||||
|
||||
tee 命令从标准输入读取,并写入到标准输出和文件中。我们可以演示 tee 如何工作:
|
||||
|
||||
```
|
||||
$ echo "Testing how tee command works" | tee file1
|
||||
```
|
||||
[
|
||||
![tee Command Example](http://www.tecmint.com/wp-content/uploads/2017/01/tee-command-example.png)
|
||||
][16]
|
||||
|
||||
tee 命令示例
|
||||
|
||||
[文件或文本过滤器][17]通常与管道一起用于[有效地操作 Linux 文件][18],用强大的方式来处理信息,例如命令的重组输出(这对于[生成有用的 Linux 报告][19]是必不可少的)、修改文件中的文本和其他的[ Linux 系统管理任务][20]。
|
||||
|
||||
要了解有关 Linux 过滤器和管道的更多信息,请阅读这篇文章[查找前十个访问 Apache 服务器的 IP 地址][21],这里展示了使用过滤器和管道的一个例子。
|
||||
|
||||
在本文中,我们解释了 Linux 中 I/O 重定向的基本原理。请通过下面的反馈栏分享你的想法。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||
![](http://1.gravatar.com/avatar/4e444ab611c7b8c7bcb76e58d2e82ae0?s=128&d=blank&r=g)
|
||||
|
||||
Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin、web 开发人员,目前是 TecMint 的内容创建者,他喜欢用电脑工作,并坚信分享知识。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
via: http://www.tecmint.com/linux-io-input-output-redirection-operators/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
[1]:http://www.tecmint.com/find-and-sort-files-modification-date-and-time-in-linux/
|
||||
[2]:http://www.tecmint.com/progress-monitor-check-progress-of-linux-commands/
|
||||
[3]:http://www.tecmint.com/monitor-copy-backup-tar-progress-in-linux-using-pv-command/
|
||||
[4]:http://www.tecmint.com/how-to-setup-and-configure-static-network-routing-in-rhel/
|
||||
[5]:http://www.tecmint.com/12-top-command-examples-in-linux/
|
||||
[6]:http://www.tecmint.com/13-basic-cat-command-examples-in-linux/
|
||||
[7]:http://www.tecmint.com/12-top-command-examples-in-linux/
|
||||
[8]:http://www.tecmint.com/tag/linux-ls-command/
|
||||
[9]:http://www.tecmint.com/wp-content/uploads/2017/01/Redirect-Standard-Error-in-Linux.png
|
||||
[10]:http://www.tecmint.com/15-basic-ls-command-examples-in-linux/
|
||||
[11]:http://www.tecmint.com/wp-content/uploads/2017/01/Redirect-Standard-Input-to-File.png
|
||||
[12]:http://www.tecmint.com/sort-command-linux/
|
||||
[13]:http://www.tecmint.com/find-recent-modified-files-in-linux/
|
||||
[14]:http://www.tecmint.com/copy-file-to-multiple-directories-in-linux/
|
||||
[15]:http://www.tecmint.com/wp-content/uploads/2017/01/Copy-Files-to-Multiple-Directories.png
|
||||
[16]:http://www.tecmint.com/wp-content/uploads/2017/01/tee-command-example.png
|
||||
[17]:http://www.tecmint.com/linux-file-operations-commands/
|
||||
[18]:http://www.tecmint.com/linux-file-operations-commands/
|
||||
[19]:http://www.tecmint.com/linux-performance-monitoring-and-file-system-statistics-reports/
|
||||
[20]:http://www.tecmint.com/automating-linux-system-administration-tasks/
|
||||
[21]:http://www.tecmint.com/find-top-ip-address-accessing-apache-web-server/
|
Loading…
Reference in New Issue
Block a user