在命令行上使用 $ 参数并在最后为其提供值

在命令行上使用 $ 参数并在最后为其提供值

我不想为我需要执行的每个流程编写脚本,而是喜欢将命令保存在文本文件中,然后将它们复制并粘贴到命令行上。当然,每次粘贴并运行命令时,命令的一些细节都会发生变化。然后我需要通过命令箭头并更改重要部分。所以,我想做这样的事情。

举个简单的例子:

chmod $1 /home/$2/.bashrc 740 bobsa

可以通过某种方式做到这一点吗?有xargs什么东西可以用来做这个吗?我知道我可以在运行命令之前设置ENV变量来实现此目的,但我希望从其他方面我可以最终完成谢谢!

答案1

如果您有经常使用的命令,请将它们编写为函数,并将它们存储在 shell 的启动文件中,例如.bashrc.可以这样定义(尽管您需要一个更好的名称):

f() {
    chmod "$1" "/home/$2/.bashrc"
}

并称为

f 740 bobsa

如果您需要经常在命令行上编辑命令,那么这不太有效。但即便如此,您也可以将函数定义放在同一命令行上并立即运行它:

f() { chmod "$1" "/home/$2/.bashrc"; }; f 740 bobsa

{}需要空格和分号,但您也可以使用空格和()分号。他们启动一个子 shell,但你可能不介意:

f() (chmod "$1" "/home/$2/.bashrc"); f 740 bobsa

答案2

您可以使用带标志bash的命令-c,如下所示:

bash -c 'chmod "$1" /home/"$2"/.bashrc' bash 740 bobsa

请记住对 bash 命令使用单引号。

相关内容