如何将一行文本文件的内容放入 bash 命令缓冲区?

如何将一行文本文件的内容放入 bash 命令缓冲区?

我的目的是快速检索已保存的 bash 命令并编辑 bash 命令缓冲区中的命令(例如更改参数,以尝试使用较长的复杂命令)。当我按 Enter 时,命令将执行,按向上箭头将再次获取命令以进行进一步编辑。

例如,我有一个名为的文本文件textfile,其中包含以下内容: ls -l
我想要将该文件内容放入命令缓冲区以便得到
user@ubuntu:~$ ls -l
因为现在我可以修改并重新执行它。

如果我将执行位添加到textfile,我就可以执行它,但是按向上箭头会将./textfile命令设置到命令缓冲区中,而不是内容中。

类似地,如果我输入$(<textfile)它也会执行命令,但按向上箭头只会给我命令$(<textfile),而不是它的内容

我能想到的唯一解决方案是执行cat textfile,然后将内容复制/粘贴到终端窗口中。好吧,我也可以编辑文件,保存并执行它,但每次都这样做很麻烦。那么,有没有技巧可以将文件的内容放入命令缓冲区而无需键入或粘贴?

答案1

~/.bash_history您所指的命令缓冲区是 bash 历史文件...bash 命令的历史记录。当您退出终端时,会将历史记录写入历史缓冲区。当您登录时,它会被加载到缓冲区中。

您可以将所需的行附加到您的 ~/.bash_history 文件,然后使用命令手动将 bash 历史记录文件重新加载到缓冲区中,从而将所需的行放入 bash 历史记录缓冲区中history -r

以下是一个例子:

$ echo "command wanted" >> ~/.bash_history && history -r

现在,当您点击向上箭头时,您将在“命令缓冲区”中看到“命令需要”。

textfile使用此命令行,当您按下向上箭头时,您将看到您的内容:

$ echo $(<textfile) && cat textfile >> ~/.bash_history && history -r

确保textfile以换行符终止。

相关内容