我花了几个小时试图轻松访问在特定环境中必须使用的最有用的命令,我有一个“令人难以置信”的想法,即使用历史记录来达到此目的,总而言之,我有一个名为 .bash_history_template 的文件对于我经常使用的这些命令,我添加了如下内容:
〜/.bash_history_template>>〜/.bash_history
在 ~/.bashrc 中,可以轻松访问我经常使用的命令的有序列表(它更复杂,但你明白了)
我的问题是:有没有其他方法,而不是使用历史记录或 fc,使用另一个命令来获取位于文件 .bash_history_template 上的现有命令,并使用非常棒的快捷方式来执行和编辑它们(例如 !number 或 fc number) )
答案1
不完全是你所要求的,而是另一种选择。
在文件中搜索~/.bash_history
经常运行的命令。分析同一命令的多个实例,寻找可以转化为变量的东西。
您还可以检查这些命令的手册页,了解将来可能使用的选项 - 但不要在这方面花费太多时间或精力,重点关注您已经使用的功能/选项/参数。您可以随时更新脚本以在实际需要时添加新功能。
编写包装器脚本来运行这些命令,从命令行获取变量的参数。如有必要,请使用getopts
来处理脚本的选项。这些脚本可以是 bash、awk、perl 或任何您认为适合使用且适合手头任务的脚本。
如果您使用getopts
,请尝试使用可作为有用助记符的选项字母。或者其他程序(尤其是类似或概念相关的程序)通用的选项字母。例如,如果您的脚本需要执行任何不区分大小写-i
的正则表达式匹配,-v
以反转匹配。如果它从 stdin 获取一系列项目(例如文件名)或在 stdout 上生成一个项目列表,请用于-z
NUL 分隔的输入/输出 - 这样,您的脚本就可以在管道中与其他程序(大多数 GNU 工具,例如)适用于 NUL 分隔的输入。
创建一个名为的目录~/bin/
并将其添加到您的 $PATH (编辑您的~/.bashrc
或~/.bash_profile
)。将脚本保存在 ~/bin/ 中。
如果其中一些需要由多个用户(例如 root 和您的用户)运行,那么请考虑将这些脚本放入其中/usr/local/bin/
。
脚本名称比历史行号更容易记住(并且在使用 shell 时不会改变)。您可以向每个脚本添加注释,描述它的作用以及它需要什么参数。或者甚至添加一个-h
or--help
选项。
我已经这样做了几十年——几乎所有我做过多次并且可能经常做的事情都会变成脚本——最困难的部分是为脚本想出一个有用的、描述性的名称:)
顺便说一句,我建议git init
在 ~/bin/ 目录中运行,以便您可以用来git
保存脚本所有更改的修订历史记录。
答案2
@cas 答案和这个答案的组合解决了我的问题:
phew() {
c="echo 'This is not really my super long winded command'"
read -p "Hit enter to run: $c"
$c
}
取自:https://stackoverflow.com/questions/62667273/can-bash-write-a-command-to-the-terminal-input