第一个命令,浏览文件系统:;/ && / &
我们在命令提示符键入的字符串都是命令,外壳程序解释命令行并执行。这些命令多为 Linux 内建命令,或调用系统里的某个应用程序,也可能是你自己写的脚本。也许我们会让某个命令在另一个命令执行之后执行,可以使用 ; (分号)来连接命令序列:
[ andrew@pc01 ~ ]$ ls;pwd
Git TEST jdoc test test.file
/home/andrew
如上所示,ls;pwd 中的分号( ; )意味着运行结束 ls
命令后,运行 pwd
命令。这两个命令输出依次输出到屏幕。另一有用的连接命令符是 && ,使用 && 的含义是前一命令若失败,后一命令将不执行( && 是逻辑 与 的意思)。这两个连接符都可以在同一命令行中多次使用:
# whoops! I made a typo here! -- 哎呦,我输入错误 Git 成了 Giit --
# 下面例子,第一个语句错了,被报错。后面语句不执行
[ andrew@pc01 ~ ]$ cd /Giit/Parser && pwd && ls && cd
-bash: cd: /Giit/Parser: No such file or directory
# the first command passes now, so the following commands are run
# 第一个语句修改正确了,后面的语句依次可执行
[ andrew@pc01 ~ ]$ cd Git/Parser/ && pwd && ls && cd
/home/andrew/Git/Parser
README.md doc.sh pom.xml resource run.sh shell.sh source src target
... 但是,如果使用 ; 连接命令,第二个命令必然执行,甚至第一个命令失败:
# pwd and ls still run, even though the cd command failed
# 虽然第一个命令 cd 失败,但第二个命令 pwd 照样执行(ls 命令同样)
[ andrew@pc01 ~ ]$ cd /Giit/Parser;pwd;ls
-bash: cd: /Giit/Parser: No such file or directory
/home/andrew
Git TEST jdoc test test.file
& 符号似乎与 && 相同,实则含义完全不同。通常执行一个需要长时间完成的命令时,命令行会等待这个命令完成后才执行之后的命令(阻塞模式)。若在这个命令后加 & 符相当于不管前命令完成与否,立即返回执行下一命令(可以理解为非阻塞模式,或调入后台运行模式):
[ andrew@pc01 ~ ]$ cd Git/Parser && mvn package & cd
[1] 9263
技巧:
当使用 & 在某命令后就是 隐藏「hide」 它的执行。
我们通常称之为把 作业/进程 调入后台运行
显示当前命令行环境有什么后台任务,使用
jobs
命令:[ andrew@pc01 ~ ]$ jobs [1]+ Running cd Git/Parser/ && mvn package &
推荐文章: