一尘不染

如何将bash别名定义为多个命令的序列?

linux

我知道如何在bash中配置别名,但是有没有办法为一系列命令配置别名?

也就是说,我希望一个命令更改为特定目录,然后运行另一个命令。

另外,是否可以设置运行“ sudo mycommand”的命令,然后输入密码?在MS-DOS时代,我会寻找一个.bat文件,但是我不确定Linux(或Mac
OSX)是否等效。


阅读 291

收藏
2020-06-07

共1个答案

一尘不染

您提到了BAT文件,所以也许您想要的是编写Shell脚本。如果是这样,则只需将要逐行输入的命令输入到文件中,如下所示:

command1
command2

并要求bash执行文件:

bash myscript.sh

如果您希望无需输入“ bash”就可以直接调用脚本,则将以下行添加为文件 的第一行

#! /bin/bash
command1
command2

然后将文件标记为可执行文件:

chmod 755 myscript.sh

现在,您可以像运行其他可执行文件一样运行它:

./myscript.sh

请注意,unix并不真正在乎文件扩展名。您可以根据需要简单地将文件命名为“ myscript”,而不以“
.sh”扩展名。重要的是特殊的第一行。例如,如果要使用Perl编程语言而不是bash编写脚本,则第一行应为:

#! /usr/bin/perl

第一行告诉您的shell调用哪个解释程序来执行脚本。

另外,如果您现在将脚本复制到$ PATH环境变量中列出的目录之一,则可以在任何地方通过简单地键入其文件名来调用它:

myscript.sh

甚至制表符完成也可以。这就是为什么我通常在$ PATH中包含〜/
bin目录,以便可以轻松安装个人脚本。最重要的是,一旦您习惯了一堆个人脚本,就可以通过复制个人〜/ bin目录轻松地将它们移植到任何新的Unix机器上。

2020-06-07