- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux入门系列教程(八)之命令执行顺序控制与管道
命令执行顺序控制与管道
一、命令执行顺序的控制
1.顺序执行多条命令
通常情况下,我们每次只能在终端输入一条命令,按下回车执行,执行完成后,我们再输入第二条命令,然后再按回车执行...你可能会遇到如下使用场景,我需要使用apt-get安装一个软件,然后安装完成后立即运行安装的软件(或命令工具),又恰巧你的主机才更换的软件源还没有更新软件列表(比如之前我们的环境中,每次重新开始实验就得sudo apt-get update,现在已经没有这个问题了),那么你可能会有如下一系列操作
$ sudo apt-get update
# ~~~~无聊的等待~~~~~然后输入下面的命令
$ sudo apt-get install some-tool
# ~~~~~等待~~~~~~然后输入下面的命令
$ some-tool
这时你可能就会想要是我可以一次性输入完,让它自己去一次执行各命令就好了,这就是我们这一小节要解决的问题了
简单的顺序执行你可以使用;来完成,比如上述操作你可以
$ sudo apt-get update;sudo apt-get install some-tool;some-tool
# ~~~~~它运行它的,你可以去干其它事了~~~~~~~
2.有选择的执行命令
关于上面的操作,不知你有没有思考过一个问题,如果我们在让它自动顺序执行命令时,前面的命令执行不成功,而后面的命令又依赖与上一条命令的结果,那么就会造成花了时间,最终却得到一个错误的结果,而且有时候直观的看你还无法判断结果是否正确。那么我们需要能够有选择性的来执行命令,比如上一条命令执行成功才继续下一条,或者不成功又该做出其它什么处理,比如
我们使用which来查找是否安装某个命令,如果找到就执行该命令,否则什么也不做(虽然这个操作没有什么实际意义,但可帮你更好的理解一些概念)
$ which cowsay/dev/null cowsay -f head-in ohch~
你如果没有安装cowsay,你可以先执行一次上述命令,你会发现什么也没发生,你再安装好之后你再执行一次上述命令,你也会发现一些惊喜
上面的就是用来实现选择性执行的,它表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回0则执行后面的,否则不执行,你可以从$?环境变量获取上一次命令的返回结果
学习过C语言的用户应该知道在C语言里面表是逻辑与,而且还有一个||表示逻辑或,同样shell也有一个||,它们的区别就在于,shell中的这两个符号除了也可用于表示逻辑与和或之外,就是可以实现这里的命令执行顺序的简单控制。||在这里就是与相反的控制效果,当上一条命令执行结果为≠0($?≠0)时则执行它后面的命令
$ which cowsay/dev/null || echo cowsay has not been install, please run sudo apt-get install cowsay to install
除了上述基本的使用之外,我们还可以结合这和||来实现一些操作,比如
$ which cowsay/dev/null echo exist || echo not exist
我画个流程图来解释一下上面的流程
思考一下
上面我们讲到将和||结合起来使用,那么是否以任意顺序都行了,比如上面我们是在前||在后,反过来可以么,会不会有问题
二、管道
管道是什么,管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin).
管道又分为匿名管道和具名管道(这里将不会讨论在源程序中使用系统调用创建并使用管道的情况,它与命令行的管道在内核中实际都是采用相同的机制)。我们在使用一些过滤程序时经常会用到的就是匿名管道,在命令行中由|分隔符表示,|在前面的内容中我们已经多次使用到了。具名管道简单的说就是有名字的管道,通常只会在源程序中用到具名管道。下面我们就将通过一些常用的可以使用管道的过滤程序来帮助你熟练管道的使用。
1.先感受一下
先感受一下管道的魅力,比如下面你想查看一下/etc目录下有哪些文件和目录,于是你使用ls命令来查看
$ ls -al /etc
你会发现一屏根本显示不玩,这时候你就只有选择使用滚动条或快捷键滚动窗口来查看了,不过这时候如果你会使用管道那情况就会不一样了,比如你可以这样:
$ ls -al /etc | less
通过管道将前一个命令(ls)的输出作为下一个命令(less)的输入,然后你就可以慢慢的悠哉悠哉的一行一行看了。你可能会觉得没必要,我用鼠标拖滚动条也很爽啊,不过有的时候你可能会发现有的操作环境下没有滚动条
您可能关注的文档
- JZZNB003-2008安全防范系统检测作业指导书.doc
- K3中现金流量表编制方法.doc
- 河北科技大学管理信息系统考试试卷八.doc
- keiluvision2教程.doc
- KD线教程详解.doc
- 比例阀行业发展深度研究与投资咨询报告.doc
- 797-高中数学必修五《等比数列》教案3.doc
- keiluvision4教程.docx
- 7AUnit6GrammarB教学案.doc
- 7AUnit6ReadingBC教学案.doc
- 2022年天津职业技术师范大学数据科学与大数据技术专业《操作系统》科目期末试卷A(有答案).pdf
- 2024年监理工程师之交通工程监理案例分析能力测试试卷B卷附答案.pdf
- 100句流行英语,网络聊天必备!.pdf
- 2023年机关工会工作总结及计划8篇.pdf
- 中学寒假放假致家长的一封信9篇.pdf
- 2022年东京奥运会结束心得体会.pdf
- (四)品德修养类解(原卷版)-2023年中考语文课外文言文主题分类阅读专项训练.docx
- 第19讲祈使句与反意疑问句50题(原卷版)-2023年中考英语一轮复习培优全.docx
- 第02讲词语运用(原卷版)-2023年九年级语文寒假课.docx
- 押广东卷1题诗文默写-2022年中考语文临考题号押题(广东卷).docx
文档评论(0)