Назад | Перейти на главную страницу

Переменная 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
[...]

Вы можете попросить bash показать вам каждую развернутую команду перед ее выполнением, установив

shopt -s histverify

или вы можете использовать функцию чтения строки shell-expand-line, который, я думаю, по умолчанию привязан к Мета Контроль E чтобы расширить то, что вы уже набрали. На странице руководства говорится

Это выполняет расширение псевдонима и истории, а также все расширения слов оболочки.