【Linux进阶学习笔记】- 命令执行顺序控制与管道
顺序执行多条命令
在Linux使用中我们常常会做如下操作:
sudo apt-get update
sudo apt-get install vim
vim
但以下语句是与其等价的:
sudo apt-get update;sudo apt-get install vim;vim
这将会自动安装vim并打开
有选择的执行命令
&&运算符
&&
运算符是用于选择命令执行的
若&&
的前面语句执行状态为0(即成功执行,并非控制台输出内容),则执行&&
后面的语句内容
例如使用which
查找已安装的vim,并打开:
which vim && vim
在该语句执行后若已安装vim则会打开,否则不做任何操作
||运算符
||
在这表示与&&
相反的效果来看一个例子:
which vim || sudo apt-get install vim
执行命令后则搜索vim,若没有安装则执行安装
管道符
|
是Linux下的管道符,它用于将上一条命令的输出作为下一条命令的输入,例如:
ls -al /etc | less
该命令将ls
输出的内容作为less
命令的输入,则etc目录下内容将逐行显示
再来看一个例子:
ls | grep log.txt
该命令将ls
输出内容作为grep
命令的输入,则查找操作目录下是否存在log.txt
文件
管道符与重定向命令的区别
我们知道重定向命令>
和>>
它们将前一条命令输出的内容写入(覆盖或追加)到后一文件中例如:
echo "Hello World!" > Hello.txt
echo "Hello World!" >> Hello.txt
这两个重定向命令的区别在于,>
将用输入内容覆盖原有(文件)内容,而>>
则是追加在末尾
重定向命令与管道符命令区别甚大,例如我们可以用管道符这样写:
ls -al /etc | less
但使用重定向命令这样写则是极大的错误:
ls -al /etc > less
如处于root用户下,这将覆写less
命令,使其不能正常工作
所以,请谨慎使用命令