Условные эмодзи на терминал Успех и неудача

With awk:

awk 'NR!=1{print x"-"$0}{x=$0}' file
  • NR! =1 применяется ко всем строкам, кроме первой
  • print x"-"$0 вывести значения с тире между
  • x=$0 установить x (для следующей итерации)
1
09.12.2018, 05:40
1 ответ

В Bash есть несколько переменных, которые позволяют управлять приглашением:

  • PROMPT_COMMAND
  • PS1
  • PS2
  • PS3
  • PS4

В этом конкретном сценарии полезен только код PROMPT_COMMAND(, выполняемый перед печатью основного приглашения )иPS1(основного приглашения ).

А переменная ?позволяет узнать статус выхода последней выполненной команды. Например:

command

if [[ "${?}" == '0' ]]; then
  echo 'OK'
else
  echo 'ERROR'
fi

Так что вам просто нужно воспользоваться этими удобными функциями:

# Using PROMPT_COMMAND
PROMPT_COMMAND='if [[ "${?}" == "0" ]]; then printf "[OK]"; else printf "[ERROR]"; fi'

# Using PS1
PS1='$(if [[ "${?}" == "0" ]]; then printf "[OK]"; else printf "[ERROR]"; fi)\$ '

Оба способа напечатают что-то вроде этого (, предполагая, что ваше начальное приглашение$):

[OK]$ false
[ERROR]$ true
[OK]$ 

Просто замените [OK]и [ERROR]нужными смайликами.

Вы можете прочитать раздел Controlling the Prompt руководства Bash, чтобы узнать больше по этой теме.

5
27.01.2020, 23:15

Теги

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