Не происходит подстановки команд для переменной PS1 в zsh

Я думаю:

ls ./* | cut -d '.' -f 1,2,3 | sort -u

доставит вас туда, по сути, это перечисляет содержимое каталога, а затем обрезает все, что находится после третьего '.' а затем сортирует строки и удаляет дубликаты. Конечным результатом будет список abc.sh.ID.

Если вы хотите прокрутить этот новый список и выполнить 'ls [line] *', чтобы получить также datetimestamp.id.log, в результате содержимое каталога будет сгруппировано по идентификатору.

1
09.04.2018, 22:04
1 ответ

Чтобы оболочка zshвыполняла подстановку команд для значения PS1, установите параметр оболочки PROMPT_SUBST:

set -o PROMPT_SUBST
PS1='$(pwd) > '

Обратите внимание, что нет необходимости exportиспользовать переменную PS1.

Причина, по которой параметр оболочки PROMPT_SUBSTне установлен по умолчанию, вероятно, заключается в том, что оболочка zshуже имеет богатый синтаксис для расширений подсказок.

Например, ваш пример можно заменить на

PS1='%/ > '

Дополнительную информацию об этом см. в разделе «РАСШИРЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ ПОДСКАЗОК» в руководстве zshmiscпо вашей системе.


При использовании

PS1="$(pwd) > "

значение, присвоенное переменной PS1, расширяется перед выполнением присвоения. Вот почему он не меняется, когда вы меняете каталоги.

5
27.01.2020, 23:32

Теги

Похожие вопросы