目录
1.顺序执行多条命令
2.有选择的执行多条命令
3.管道
1.顺序执行多条命令
有时候想一次性输完一套命令,让系统自己去慢慢执行,比如
$ sudo apt-get update
# 等待——————————然后输入下面的命令
$ sudo apt-get install some-tool //这里some-tool是指具体的软件包,例如:banner
# 等待——————————然后输入下面的命令
$ some-tool
这时候就需要使用 ; 来连接各个命令
sudo apt-get update;sudo apt-get install some-tool;some-tool
2.有选择的执行多条命令
但是有时候多条命令之间是有关系的,下一条命令的执行取决于这条命令的执行结果。
这就需要有选择的执行。需要看上一条命令的返回结果。(成功返回0,失败返回非0)
比如
which cowsay>/dev/null && cowsay -f head-in ohch~
当 && 前的执行返回0时,才执行 && 后的命令
which cowsay>/dev/null || echo "cowsay has not been install, please run 'sudo apt-get install cowsay' to install"
当 || 前的执行返回非0时,才执行 || 后的命令.
当然,&& 和 || 也可以结合使用,比如
which cowsay>/dev/null && echo "exist" || echo "not exist"
当 which cowsay>/dev/null 的执行结果是0时,执行echo “exist”,否则执行echo “not exist”。
3.管道
概念:
管道是什么?管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。
管道又分为匿名管道和具名管道(这里将不会讨论在源程序中使用系统调用创建并使用管道的情况,它与命令行的管道在内核中实际都是采用相同的机制)。我们在使用一些过滤程序时经常会用到的就是匿名管道,在命令行中由|分隔符表示,|在前面的内容中我们已经多次使用到了。具名管道简单的说就是有名字的管道,通常只会在源程序中用到具名管道。下面我们就将通过一些常用的可以使用管道的"过滤程序"来帮助你熟练管道的使用。
举几个例子
ls -al /etc | less
通过管道将前一个命令(ls)的输出作为下一个命令(less)的输入,然后就可以一行一行地看。
history | cut -c 8- | cut -d ' ' -f 1 | uniq
查看最近执行的命令,然后显示第8个字符之后的,然后再去除连续重复行。
参考自: https://www.shiyanlou.com/courses/1/learning/?id=63