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

例如,我希望一个命令更改为特定目录,然后运行另一个命令.

另外,有没有办法设置一个运行"sudo mycommand"的命令,然后输入密码?在MS-DOS时代,我会寻找一个.bat文件,但我不确定linux(或者在本例中是Mac OSX)的等效版本.

推荐答案

你提到了BAT文件,所以也许你想写一个shell脚本.如果是这样的话,只需将您想要的命令逐行输入一个文件,如下所示:

command1
command2

并要求bash执行该文件:

bash myscript.sh

如果希望能够在不键入"bash"的情况下直接调用脚本,请将以下行添加为文件的the first line行:

#! /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机器上.

Linux相关问答推荐

在Zenity进度窗口上单击取消后如何停止bash脚本

如何在带模式的文件频繁更改的管道中使用grep-f带模式的文件?

Git - 打印以不同编码混合的文件

BASH:在curl输出的每一行添加前缀

如何在脚本中使用sudo修改其他用户的crontab

如何在REPL控制台中使用PowerShell将特定的CSV列转换为TitleCase?

将 Visual Studio C++ 项目迁移到 Linux 和 CMake

如何使用 shell 脚本将文本文件转换为 JSON 文件

如何让 Flutter 用鼠标拖动而不是滚轮滚动? (Linux)

另一个远程的 Git 合并分支

使用 AWS CLI 进行 Bash - 无法找到凭证

argv的编码是什么?

使用正则表达式时,Shell 'tar: not found in archive' 错误

如何在 Linux 中创建高分辨率计时器来测量程序性能?

./studio.sh 之后的 Android Studio 错误

to_string不是std的成员?

比较两个图像的 python/linux 方式

在不运行测试的情况下制作(从源代码安装)python

如何在 linux 中使用 CMake 和 Kdevelop 编译 GLUT + OpenGL 项目?

Linux 上的 NuGet:获取响应流时出错