我尝试编写一个简单的脚本并存储所有我喜欢的命令,例如 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'