如何从 bash 获取最后执行的命令?我知道 !!:p 打印最后一个命令,但似乎除了 bash 提示之外我不能在任何地方使用它。我试过了,echo !!:p但它打印
~/下载$密码 下载 ~/下载$回声!!:p 回声密码
我想在PROMPT_COMMAND变量中使用它,所以我需要将它作为一个字符串来获取,这样我就可以将它打印出来。是否有捷径可寻?我找错地方了吗?
我想我不是很清楚。我需要存储上次运行的命令,以便我可以在输出之后和下一个提示之前重新显示它。例如,这就是我希望输出的样子:
~/下载$密码 下载 密码 ~/下载$
我正在这样做,我正在更改我的.bashrc文件中的提示
PROMPT_COMMAND='echo -en "\033[38;5;2m"!!:p"\033[0m\n"' PS1='\W\$'
但是 !!:p 只能在 bash 提示符下正常工作。那么如何存储最后一个命令,以便稍后重新打印呢?
您可以使用history内置访问刚刚执行的命令行。(我不知道为什么history 1打印刚刚执行的命令行,但fc -nl -1打印之前的命令,就像fc -nl 0.)
PROMPT_COMMAND='echo -en "\033[38;5;2m"; history 1; echo -en "\033[0m\n"'
Run Code Online (Sandbox Code Playgroud)
这会在命令文本之前打印一个数字。这是删除数字的版本。(如果您超过 99999 历史行,则可能不正确,我不知道 bash 是如何格式化数字的。)
prompt_function () {
local prompt_history="$(history 1)"
prompt_history=${prompt_history:7}
echo -En $'\033[38;5;2m'"$prompt_history"$'\033[0m\n'
}
PROMPT_COMMAND=prompt_function
Run Code Online (Sandbox Code Playgroud)
(请注意,这echo -en ..."$prompt_history"...会在命令行中扩展反斜杠,因此我使用echo -E并让 shell 扩展生成带有$''.的控制字符)。
| 归档时间: |
|
| 查看次数: |
3836 次 |
| 最近记录: |