连续运行多个命令

;

如果需要连续运行多个命令,但是其中一些命令运行的时间比较长,而你不想长时间地守候在计算机旁,这个时候应该怎么办呢?例如,如果一个zip压缩文件中有很多John Coltrane的MP3文件,你想先解压缩,再把它们放到一个新子目录中,最后再删除原来的压缩文件,该怎么做呢?通常你只能一次运行一个命令,如下所示:

说明 为了节省篇幅,此处删除了完整列表中的所有者和组信息。

$ ls -l /home/scott/music
-rw-r--r-- 1437931 2005-11-07 17:19 JohnColtrane.zip
$ unzip /home/scott/music/JohnColtrane.zip
$ mkdir -p /home/scott/music/coltrane
$ mv /home/scott/music/JohnColtrane*.mp3
➥/home/scott/music/coltrane/
$ rm /home/scott/music/JohnColtrane.zip

JohnColtrane.zip的文件大小为1.4 GB,即使是速度很快的计算机,解压这么个庞然大物也要花不少时间,而且除了坐在那里干等,你或许有更重要的事情去做。命令栈(command stacking)可以解决这一问题。

命令栈是将所有需要运行的命令放到shell的一行上,再用分号(;)隔开每个具体的命令。接着依次顺序执行每个命令,只有一个命令结束运行(无论成功或失败),才会运行下一个命令。这样的用法很容易,也确实能够节省你的时间。

用命令栈的方式,前面的一系列命令可以写成:

$ ls -l /home/scott/music
-rw-r--r-- 1437931 2005-11-07 17:19 JohnColtrane.zip
$ unzip /home/scott/music/JohnColtrane.zip ;
➥mkdir -p /home/scott/music/coltrane ;
➥mv /home/scott/music/JohnColtrane*.mp3
➥/home/scott/music/coltrane/ ;
➥rm /home/scott/music/JohnColtrane.zip

当然,在命令运行的时候,也可以使用这个办法来引入短暂的延迟。如果你想截取显示器中所有可见内容的截图,只需要运行以下命令(假设你的计算机中已经安装了ImageMagick包,几乎所有的Linux分发版中都有这个包):

$ sleep 3 ; import -frame window.tif

这个例子中的sleep命令会等待3秒钟,然后使用import命令截取屏幕截图。有几秒钟的延迟,你就有时间最小化终端控制台应用程序,把你想让截图中出现的任何窗口调到前面来。分号(;)便于从逻辑上分隔各个命令,这样你就能最大程度地使用这些命令。

警告 使用命令栈要十分谨慎,特别是删除或者移动文件的时候。确保你输入的确实是你想要运行的命令,因为这些命令是依次顺序运行的,否则可能会得到意想不到的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hamilton_Huan

原创不易,结合业务原创更不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值