开源文化的理念之一 就是不要重新发明*
在linux 系统中大多是都是非常简单的命令,每个命令都是实现一个或者几个简单的功能,我们可以将不同的命令组合在一起 来达到复杂的功能的目的,在linux中因为几乎所有的命令都是以纯文本来返回的,而纯文本又是绝大多数命令的输入格式,这就让多命令有了协作的可能,linux为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向来完成的。
shell 通过标准输入来输入信息 编号0,正常信息来通过标准输出输出,编号1,通过标准错误来输出错误信息,编号2。
重定向 重定向数据流
关键字 > 将标准输出重定向到文件,如果文件存在则覆盖 比如 ls > outfile
关键字>> 将标准输出重定向到文件 如果文件存在则追加 比如 ls >>outfile
< 重定向到标准输入
关键字 2>将标准错误重定向到文件 (覆盖)ls 2> err (err文件为空是没有反应的,因为没有错误)查找不存在的文件 ls -l sfsdfd 2> err
关键字 2>>将标准错误重定向到文件 (追加)
管道 将一个命令的标准输出,来作为另一个命令的标准输入参数。来实现多命令的协作
比如 查找 详细信息包含P的 文件:
ls -l | grep P
如果 输出的命令还要作为下一个命令的标注输入,则一定要去掉上一个输出的标准错误信息 可以将上一个标准错误重定向的 /dev/null ,重定向到这个文件的 信息都会丢失掉