第一个命令,浏览文件系统:;/ && / & 0 个改进

我们在命令提示符键入的字符串都是命令,外壳程序解释命令行并执行。这些命令多为 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 &

参考:https://dev.to/awwsmm/101-bash-commands-...

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!