Linux中的命令链接操作符
在linux中,我们可以通过一些特殊的操作符,比如说管道“|”,来将几个不同的命令结合起来执行,这些操作符就叫做命令链接操作符。
&
&
的作用是让当前命令在后台执行,当我们在执行一些比较耗时的命令时,比如apt-get update
,这样子就不会占用当前的终端界面了。
1 | root@dcLunatic:~# apt-get update & |
使用jobs
命令可以查看当前的后台作业运行情况,fg
可以将后台中的作业切换到前台运行,bg
可以将暂停的作业切换成继续执行。
1 | root@dcLunatic:~# vim & |
Ctrl + Z可以将当前正在前台执行的命令放到后台,并且暂停
;
;
分号操作符可以让你在一次执行多条命令,每条命令之间只需要通过;连接,命令从左到右依次执行
1 | root@dcLunatic:~/net-learning# date "+%x %X";echo " John: Hello world!" |
&&
当多个命令用&&
连接时,只有前面的命令成功执行时,才会之后面的命令。
比如说,从网站www.linuxde.net下载东西,首先先检查是否可以连接到该网站
1 | root@dcLunatic:~# ping www.linuxde.net && wget http://www.linuxde.net/testfile.zip |
在类UNIX里面,0表示无错误,而所有非0返回值都是各种错误
||
||
操作符跟&&
操作符相反,只有当前面的命令失败时,才会执行后面的命令
举个例子
1 | test@dcLunactic:/root/$ ls rootFile.txt -l |
!
!
跟很多编程语言中的!一样,都是表示非的意思。
举个例子,删除所有非txt文件
1 | root@dcLunatic:~/Downloads# ls |
&&–||
&&--||
操作符是一对组合操作符,作用跟编程语言中的if–else一样,当前面的命令成功执行时,执行&&后的命令,否则执行||后的命令
还是上面的例子
1 | test@dcLunactic:/root/$ ls rootFile.txt -l |
|
管道操作符,当多个命令用|连接时,将前面命令的输出作为后面命令的输入。
举个例子,查看是否有vim进程
1 | root@dcLunatic:~# ps -e | grep vim |
{}
合并操作符把,会把在{}中的命令当成是一个整体去执行
比如说,检查一下文件1.java是否存在,如果不存在则创建之并输出提示信息。
1 | root@dcLunatic:~# test -f 1.java || {touch 1.java;echo "文件不存在,创建之"} |
这里也可以换一种写法
1 root@dcLunatic:~# [-f 1.java] || {touch 1.java;echo "文件不存在,创建之"}[]
左中括号[和test是等同的。右中括号是关闭条件判断的。
比如判断文件是否存在
1
2
3 root@dcLunatic:~/net-learning# [ -f 123.txt ]
root@dcLunatic:~/net-learning# echo $?
1
()
()
可以改变优先级顺序什么的,跟数学中的()一样
比如上面的也可以这么写
1 | root@dcLunatic:~# test -f 1.java || (touch 1.java;echo "文件不存在,创建之") |
(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)
这样子的话,如果Command_x1执行失败,Command_x2不会执行,但是Command_x3会继续执行, Command_x4会依赖于 Command_x3的退出状态。
\
连接符\
,当一句命令太长需要分行写时,使用 \ 可以换行。
比如重启网络服务
1 | systemctl restart \ |