是否存在未记录的 PS 变量(如 PS2),当 bash 将字指示符替换为其实际值时会显示该变量?我认为这有助于明确命令的结束位置和执行的开始位置。
例如:我运行 ls 和 cat。cat 使用前一个命令的最后一个参数和一个单词指示符。bash!$
在新行中将单词指示符替换为实际值,然后输出以下命令:
> ll .bash_profile
-rw-r--r--. 1 ec2-user ec2-user 176 Dec 22 2015 .bash_profile
> cat !$
cat .bash_profile
# .bash_profile
# Get the aliases and functions
[...]
为了更清楚起见,我要求的是一个在替换之前插入文本的变量,例如
> export MISSING_VARIABLE='--->'
> ll .bash_profile
-rw-r--r--. 1 ec2-user ec2-user 176 Dec 22 2015 .bash_profile
> cat !$
--->cat .bash_profile
[...]
答案1
你可以通过设置让 bash 在执行每个扩展命令之前向你显示它
shopt -s histverify
或者你可以使用 readline 函数shell-expand-line
,我认为默认情况下它会Meta Control E扩展你到目前为止输入的内容。手册页说
这将执行别名和历史扩展以及所有 shell 字扩展。