Терминал, статус выхода выровнен вправо - PullRequest
1 голос
/ 04 апреля 2020

Я составляю свою личную подсказку для bash и хочу добавить статус завершения предыдущей команды в конце строки подсказки.

Например

goofy@disney:~$ test "0" = "0"
goofy@disney:~$ test "0" = "1"                         ✔️0
goofy@disney:~$                                        ✘1

Есть ли способ добиться этого?

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

См. Этот простой пример:

bash# cat rc
PS1="pynexj@so # \[\e[s\e[\$(( COLUMNS - 4 ))GE\$?\e[u\]"
bash# source ./rc 
pynexj@so # false                                          E0
pynexj@so # true                                           E1
pynexj@so # (exit 127)                                     E0
pynexj@so # true                                           E127
pynexj@so #                                                E0

Битовое объяснение:

  • ESC [ s - сохранить текущую позицию курсора
  • ESC [ N G - переместить курсор в столбец N
  • ESC [ u - восстановить сохраненную позицию курсора

См. Экранирующий код ANSI для более подробной информации.

1 голос
/ 04 апреля 2020

попробуйте \$?

Демо:

$PS1="\$?:>"
0:>test "0" = "1"
1:>test "0" = "0"
0:>test "0" = "1"
1:>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...