最近做服务器部署比较多,自然遇到一些重复的指令希望能让脚本自动化运作,省点力气
遇到一个问题:
[有些指令需要输入确认信息,比如递归删除指令会有确认需要输入yes或者no]
简单搜索之后发现有很多解决办法,其中一种看起来比较不错的方法:
如何让sh自动输入yes,自动确认?
echo yes | sudo rm -Ir yourdir
这个写法看起来很神气,为什么echo yes要写在前面,如果写在后面能有同样的效果么?
于是我尝试倒过来写,运行后发现yes直接就出来了,然后才去运行删除指令,并且需要我再次手动确认。
为了了解这个神奇的 | 是什么,又进行了一番搜索
但是搜索引擎提前过滤了这些符号,结果完全不是期望的内容
这次在知乎找到了帮助:
如何查找、学习linux bash的特殊符号含义?
·直接搜索 bash 特殊符号
·使用一个支持特殊符号的搜索引擎:http://symbolhound.com
搜索后得知, | 符号在bash是pipe管线功能
通过这个pipe管线功能可以对一些含有标准输入输出的指令进行进一步操作
包括上面提到的自动回复yes
还有最近经常用到的 ps -ef | grep java 可以查看所有名称包含java的进程
或者更常见的在诸如ls 一个内容很长的文件夹的时候,可以 | less 来分段查看等等