在控制台中编写类似历史记录的shell脚本

在控制台中编写类似历史记录的shell脚本

我尝试编写一个简单的脚本并存储所有我喜欢的命令,例如 grep、find、sed。

当我在 shell 中使用历史命令时,我可以使用 (history) 显示所有历史命令我可以重用符号“!”(感叹号)来获取我的旧命令:

让我们假设 2099 -> ls -lah (在我的历史中)

>!2099 <- ENTER

>ls -la[CURSOR]

当我在下一行输入'!2099 <- ENTER',时。'ls -la[CURSOR]'

有谁知道如何在shell脚本上实现它?

我尝试'\r'从输入字符串中删除 ,但到目前为止还不起作用。

答案1

fc命令允许您编辑和列出历史记录中的命令。这在编写与历史相关的任何内容的脚本时非常有用。列出条目:

fc -ln [first] [last]

-l是列表标志,-n防止显示历史编号,[first]并且[last]是来自历史命令的编号。要列出单个命令,请重复其编号。所以用你的例子:

cmd=$(fc -ln 2099 2099)
echo "$cmd"

将显示ls -la.输出在开头有一个选项卡,因此您可以通过fc管道sed 's/^\t//'tr -d '\t'

相关内容