номер команды bash (#) эквивалентен в zsh

Я ищу символ, чтобы положить в моем zshs $PROMPT Это было бы эквивалентно bashs # (номер команды этой команды, по данным этот сайт). Пока что я нашел только %h но это не то, что я ищу, это эквивалентно !.

5
задан shrx
источник

1 ответов

поскольку вы уже просмотрели соответствующую man-страницу и не нашли ничего подходящего, я представлю альтернативный метод:

  1. setopt PROMPT_SUBST, so расширение параметров, подстановка команд и арифметическое расширение выполняются в подсказках.

  2. увеличить varable cmdcount (инициализируется 1) для каждой выполняемой команды через preexec припев: выполняется сразу после прочтения команды и примерно быть казненным. (...)

  3. использовать $cmdcount в командной строке.


скопируйте и вставьте код для вашего ~/.zshrc:

setopt PROMPT_SUBST
[[ $cmdcount -ge 1 ]] || cmdcount=1
preexec() { ((cmdcount++)) }
PS1='$cmdcount '                # notice the single(!) tics

и вот как это работает (left = bash С \# in PROMPT, right = zsh С предложенной код):

bash$ PS1="\# "                                   |  zsh$ source ./above_code
2 /bin/echo some external command                 |  1 /bin/echo some external command
some external command                             |  some external command
3 cd internal command                             |  2 cd internal command
bash: cd: internal: No such file or directory     |  cd: string not in pwd: internal
4      [no command, just pressed enter]           |  3      [no command, just pressed enter]
4                                                 |  3 
4                                                 |  3

я не знаю о конкретном поведении \# в bash, но на первый взгляд обе оболочки ведут себя сейчас одинаково.

1
отвечен mpy 2014-01-04 17:57:53
источник

Другие вопросы bash prompt ps1 zsh