配置 bash 在未提供参数时执行带有最后一个参数的命令

配置 bash 在未提供参数时执行带有最后一个参数的命令

我想配置 bash,以便当我在不带参数的情况下执行命令(最好是从命令列表中,而不是任何命令)时,它会采用上一个命令的参数。

因此,例如我输入emacs ~/.bashrc,然后当我输入 时source,bash 就会执行source ~/.bashrc。我知道这是可能的,但我不知道在哪里寻找这样的选择。

答案1

您可以Space在按 之前按Meta+ 。这样做的优点是,即使对于应用于无参数时有意义的命令,您也可以使用它。对于,用于减少键入。.Entersource.

如果您是老派,则可以使用 来!^调用上一个命令中的第一个参数,或者!$调用最后一个参数,或者!*调用所有参数(命令名称除外)。

您可以通过编写围绕每个命令的函数来准确地获得您所描述的行为。上一个命令的最后一个参数在特殊参数中可用$_

make_wrapper_to_recall_last_argument () {
  for f do eval <<EOF; done
function $f {
  if [ \$# -eq 0 ]; then set -- "\$_"; fi
  command $f "\$@"
}
EOF
}
make_wrapper_to_recall_last_argument source .

答案2

我知道的结束策略是Alt+.

这允许您循环遍历所有先前的参数。

相关内容