liunx管道及重定向详解(通俗易懂,用了一些俗语,争取大家都能够听得懂)
重定向
重定向分为两大部分,即输出重定向,输入重定向。输出重定向又包含了标准输出重定向和标准错误重定向;标准输出重定向由 1>(>表示覆盖) 1>>(>>表示追加)表示,可以省略为> >>;标准错误重定向由 2>(>表示覆盖) 2>>(>>表示追加) 标准错误重定向2不可以省略,必须要有 表示;输入重定向由0<表示。
1:标准输出重定向的意思就是把左边程序执行中正确的结果不输出到显示器上,而是把正确的结果输入到后面的文件中,例如:平时执行date命令会直接出来具体的日期时间,而date > riqi.txt 则不会将具体的日期时间直接显示出来,而是把日期时间输入到riqi.txt文件中,通过查看riqi.txt文件可以获得日期时间,使用>>表示追加,在原有内容后面再追加一次date的输出内容。
注意:右边的riqi.txt可以提前创建好,也可以不创建,重定向命令会自动创建一个riqi.txt文件用以输出date的内容。:2:标准错误重定向的意思就是把左边程序执行中错误的结果不输出到显示器上,而是把错误的结果输入到后面的文件中,正确的照常输出,例如:平时执行date命令会直接出来具体的日期时间,而data不是一个命令,系统会报错例如 data 2> cuowu.txt 则不会错误的提示信息输出到屏幕上而是把错误的提示信息写入到cuowu.txt文件中,通过查看cuowu.txt文件可以获得系统提示的错误信息,使用>>表示追加,在原有内容后面再追加一次data错误指令的输出内容。
3:输入重定向就是我把某一个文件里的内容输入给前面一个文件,例如写一封邮件,mail -s(后面是标题) 用户名 0< youjian 这就是一个输入重定向的例子,把youjian文件里的内容当做邮件内容发送过去。
接收邮件
管道 |
把两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或者多个命令就是管道。当两个命令之间进行设置管道|时,就是把左边的命令的结果当做管道右边命令执行的内容,第一个命令向标准输出写入,而第二个命令是从标准输入读取,那么这两个命令就可以形成一个管道。通过管道|我们可以非常轻松方便的完成很多原本复杂的操作。
管道主要有以下三种管道,进程管道,tee管道,参数传递Xargs。进程管道命令可以将多条命令组合起来,一次性完成复杂的处理任务,一般使用居多。
tee管道:三通管道,即交给另一个程序处理。又保存一份副本
参数传递Xargs:liunx中像cp rm一些特殊命令就是不服其他程序,使用管道也无济于事,这时候可以使用Xargs.
进程管道举例:比如需要查找sshd服务的进程,可以使用ps aux 和grep sshd两个命令结合起来如下图所示
tee管道举例:我需要查看/etc/passwd 中的前三行,但是我又想把passwd中的全部文档也保留下来,保存到shuju文件中,可以使用tee管道,如下图所示
参数传递Xargs举例:领导给我发来一份文件shanchu,让我删除掉shanchu文件中的file1,file3,file5,我可以使用管道参数传递Xargs来进行批量删除,如果只使用管道不使用Xargs参数则没有办法删除。
如下图所示
好了,到这里今天的管道与重定向到这里就结束了,作者qq984722674,有任何问题欢迎加作者qq,一起探讨,作者是一个新写手,无论哪里有写的不好的也地方欢迎您指出来,我一定会认真听取您的意见,多加改正,创作出更多更好的作品。