目录
1 管道符 |
1.1 | grep [要检索的东西]
1.2 echo | tee
2 重定向
2.1 输出重定向覆盖 >
2.2 输出重定向添加 >>
2.3 文件输入重定向 <
2.4 多行文本输入重定向 <<
2.5 常用搭配
2.5.1 终端不显示 > /dev/null
1 管道符 |
我们举个例子 A命令 | B命令
这样写A命令的结果就会作为b命令的输入
我们下面介绍几个常见的使用方式
1.1 | grep [要检索的东西]
你在终端上看到了一些内容,你感觉东西太多了,自己找很麻烦,那么就可以用这个
比如我向在当前目录下查看有没有 something.txt 这个文件,那么我可以这样写 ls | grep something.txt
要检索的东西默认区分大小写
- ps -ef | grep python 查看python的所有进程,这里不只能挂python,比如你要查看uwsgi的所有进程,你就写 ps -ef | grep uwsgi
- pip list | grep opencv 查看python库中opencv的版本情况
1.2 echo | tee
这样可以让 hello world 写入 test.txt。写入的东西会覆盖掉之前的东西
2 重定向
重定向有 > >> < << 四个符号,你别把他们当作大于号和小于号看,你把他们当作箭头来看。比如 A > B 就是把A的结果给B。再比如 A < B 就是把B的结果给A
2.1 输出重定向覆盖 >
举个例子,echo默认会把结果输出到终端上
现在我不想让结果输出在终端上了,而是输出在一个txt中,那我们可以这样写
这样我们发现终端上就不显示东西了,之后在指定的目录下会出现test.txt这个文件(如果test.txt之前存在会覆盖掉之前的内容,如果text.txt之前不存在会自动创建)
2.2 输出重定向添加 >>
如果没有test.txt那么就自动创建一个test.txt并写下相关的内容
与 > 不同的是,>>会将内容添加到最后,而不是进行覆盖
2.3 文件输入重定向 <
把后面的结果给前面的,比如我现在想找test.txt的wo的部分
那么我们可以这样写
我们再举个例子加强一下理解,我现在有两个文本文件 test.txt 与 test1.txt
test.txt的内容是这样的
test1.txt的内容是这样的
我现在想用test1.txt的内容覆盖掉test.txt的内容,我们可以这样写
test.txt的内容改变了
test1.txt的内容没有变化
2.4 多行文本输入重定向 <<
执行命令前的test.txt内容是这样的
之后执行重定向的命令,EOF是多行文本的结束标识,运行之后出现了输入多行文本的地方
- 一般都是用EOF作为结束标识,我们也可以用其他的字符,效果一样
- 使用 <<- EOF 与 << EOF 相似,只是关于制表符的处理上不一样。在一些终端中<<-EOF与<<EOF作用相同
我们随便输入一些内容,然后最后以EOF结尾,然后按回车
之后打开test.txt发现之前的内容被覆盖掉了
2.5 常用搭配
2.5.1 终端不显示 > /dev/null
/dev/null 就是一个扔垃圾的地方,不想要的终端输出都可以给这个文件
这样写会保存想要的内容,并且在终端上不显示任何的东西