用于扩展字标识符的 PS 变量

用于扩展字标识符的 PS 变量

是否存在未记录的 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 字扩展。

相关内容