如何制作一个"宏"来自动化OS X终端中的一些bash命令?

iMa*_*wCM 1 unix bash terminal macros

我对bash和UNIX命令以及终端应用程序非常不错,但我想知道,有没有办法制作一个"宏"(也许这是错误的词!)来自动执行某些任务?

例如,要进入我当前的项目目录,我输入:

$ cd ~/Documents/College/F13/CS362/lab3/os-lab-3
Run Code Online (Sandbox Code Playgroud)

然后我马上做

$ hg pull
Run Code Online (Sandbox Code Playgroud)

(密码)

然后

$ hg update
Run Code Online (Sandbox Code Playgroud)

那么有没有办法甚至自动化CD调用的第一步?我以前从未尝试过这样的事情,不确定我的目标是否可行.

额外奖励:有没有办法在提示时让宏输入我的密码?安全/隐私在这里并不是真正的问题,在回购中没有隐藏的热核代码.

小智 10

通常在此上下文中使用的名称(bash中的宏)是shell脚本.要自动发布帖子中的命令,您需要创建一个名为'myscript.sh'的文件,其中包含以下内容:

#!/bin/bash
cd ~/Documents/College/F13/CS362/lab3/os-lab-3
hg pull
hg update
Run Code Online (Sandbox Code Playgroud)

脚本的第一行是hashbang.这是一个特殊的注释行,表示应该使用指定的程序执行文件.在这种情况下猛击.

要运行该脚本,请首先通过运行以下命令确保它是可执行的:

chmod +x myscript.sh 
Run Code Online (Sandbox Code Playgroud)

在终端窗口中,只需通过指定脚本的路径来运行脚本:

./myscript.sh
Run Code Online (Sandbox Code Playgroud)

不要把密码放入shell脚本中!这是一个坏习惯.对于使用Mercurial进行身份验证,ssh密钥对是最佳方法.ssh密钥可以加载到OSX的钥匙串中,因此在运行脚本时不必输入任何内容.您还需要将ssh密钥对的公共部分添加到远程Mercurial存储库上的授权主机列表中.