1. 输出重定向
Linux默认输入是键盘,输出是显示器。可以用重定向来改变这些设置。比如用wc命令的时候本来是要手动输入一篇文字来计算字符数的,可以直接把一个已经写好的文件用‘<’指向这条命令,就直接可以统计这个文件的字符数等了。
STDOUT(标准输出)和STDERR(标准错误)可以被重定向到文件
命令 操作符号 文件名
支持的操作符号包括:
> 把STDOUT重定向到文件
如图,etc下有passwd文件,app下没有passwd文件,将他们两个重定向导出到文件ls.txt中,回车之后只剩下错误的那条。然后我们查看ls.txt文件,发现正确的标准输出在里面
2> 把STDERR重定向到文件
同样,使用2>则将正确的显示出来,将错误输出到ls.txt文件了。
&> 把所有输出重定向到文件(或者> 2>&1也可以)
如图,两种方法将正确错误都输入进文件了
值得注意的是,使用> 会默认将文件内容覆盖。
使用set -C 禁止将内容覆盖已有文件,但可追加
>> 在原有内容的基础上,追加内容
>|
file 强制覆盖
set +C 允许覆盖
也可以一次分别将输出和错误各自定向至不同位置
如图,分别定向到right.txt和error.txt文件中。
2.tr转换和删除
tr
[OPTION]… SET1 [SET2]
(先输入条件,之后回车可以输入要想转换的内容,输入一行输出一行,直到Ctrl+C退出)
也可以使用重定向功能,不需要输入,直接输入一个文件,就可以被替换了
如图,不需要将.bashrc的内容重新打一遍,就可以输出了.bashrc内容。(这种操作不会改变.bashrc的内容。)
-c –C
–complement 取字符集的补集(就是不删除什么)
如图,将除了c以外的字符都换成a
-d –delete 删除所有属于第一字符集的字符
如图,将文件中所有的abc都删除了
-s –squeeze-repeats 把连续重复的字符删除成一个字符
如图,将重复的abc变成一个,其余重复的字母不动。
-t –truncate-set1 将第一个字符集对应字符转化为第二字符集
对应的字符:
[:alnum:]:字母和数字
[:alpha:]:字母
[:cntrl:]:控制(非打印)字符
[:digit:]:数字
[:graph:]:图形字符
[:lower:]:小写字母
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母
[:xdigit:]:十六进制字符
3.从文件中导入STDIN
同样的,我们可以使用<来重定向标准输入STDIN
某些命令能够接受从文件中导入的STDIN
tr ‘a-z’ ‘A-Z’< /etc/issue 该命令会把/etc/issue中的小写字符都转换成大写字符
tr –d abc < /etc/fstab 该命令可以删除fstab文件中的所有abc中任意字符(这两个功能上面已经使用过了)
cat
> file 可以写入内容到文件中
按ctrl+d或者 ctrl+c离开,可以使用文件来代替键盘的输入
<< 终止词
可以随意编辑,直到某一行只有那个终止词,将退出编辑,将上面的内容都发送给文件。
如图,直到最后一行为!时,自动退出。
Cat >
filea < fileb
如图,将text.txt中的内容写入到file.txt中
同样,我们也可以通过这种方式导入文件到邮件里并发送。
(发送邮件的代码为 mail -s “邮件名” 想要发送给的用户,然后输入内容后使用Ctrl+d退出)
现在我们将text.txt这个文件写入邮件并发送:
如图,登陆magedu用户,输入mail查看邮件,发现收到了这封内容是text.txt的信。(看完之后输入quit退出)
4.管道
管道(使用符号“|”表示)用来连接命令
如图,将1+2传给计算器,得出结果
命令1 | 命令2 | 命令3 | … 将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN。
如图,将|与tr结合使用,将所有重复的空格变成一个空格。
然后继续使用|和grep命令(这个命令以后会讲到)查询/boot那行
| 只能将正确结果重定向给下一条命令
使用 2>&1 | 或 |& 可以将全部结果重定向
5.重定向到多个目标tee
命令1 | tee [-a ] 文件名 | 命令2
把命令1的STDOUT保存在文件中,做为命令2的输入
-a 追加
使用:
保存不同阶段的输出
复杂管道的故障排除
同时查看和记录输出
原创文章,作者:T_endless,如若转载,请注明出处:http://www.178linux.com/81864