【问题标题】:How to make a "macro" to automate some bash commands in OS X Terminal?如何制作一个“宏”来自动化 OS X 终端中的一些 bash 命令?
【发布时间】:2013-11-16 05:05:49
【问题描述】:

我非常擅长使用 bash 和 UNIX 命令以及终端应用程序,但我想知道,有没有办法制作“宏”(也许这是错误的词!)来自动化某些任务?

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

$ cd ~/Documents/College/F13/CS362/lab3/os-lab-3

然后我马上去做

$ hg pull

(密码)

然后

$ hg update

那么有没有办法让 cd 调用的第一步自动化?我以前从未尝试过这样的事情,不确定我想要的是否可行。

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

【问题讨论】:

    标签: bash unix macros terminal


    【解决方案1】:

    此上下文中通常使用的名称(bash 中的宏)是shell script。要自动执行帖子中的命令,您需要创建一个名称类似于“myscript.sh”的文件,其内容如下:

    #!/bin/bash
    cd ~/Documents/College/F13/CS362/lab3/os-lab-3
    hg pull
    hg update
    

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

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

    chmod +x myscript.sh 
    

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

    ./myscript.sh
    

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

    【讨论】:

    • 哇,谢谢,这是我在这里得到的最佳答案。 Shell 脚本吧?我想我需要学习一些。这真的很酷!会节省我很多时间!!谢谢!
    • 一件事:你回答中关于将 ssh 密钥加载到 OSX 钥匙串中的一点......关于如何做到这一点的任何建议?键/值对的东西一直让我望而却步。
    • 在这个脚本中进行某种错误处理是个好主意,即使它只是在 hashbang 中添加了 `-e`(如果任何命令报告错误)。否则,如果cd 命令由于某种原因失败,您将在您碰巧所在的任何目录上运行pullupdate……完全不是预期的。
    猜你喜欢
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 2013-03-10
    • 2017-06-10
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    相关资源
    最近更新 更多