2016-08-10 3 views
1

Я пытаюсь выяснить что-то из своей глубины и функционально совершенно ненужно. Я все еще разбираюсь в Ubuntu в целом, не говоря уже о скриптовом языке, таком как bash. Я сделал несколько C и Java, но, похоже, я не могу писать сценарий.Как поймать выход 0 и эхо «галочка»

Мой план состоял в том, чтобы редактировать ~/.bashrc включить сценарий C, основанный на то, что я нашел в http://www.linuxcommand.org/wss0150.php, изменить значения для выхода 0 и сообщение его включенным, но я довольно быстро разобрался, что .bashrc был частности, о его языках.

Итак, с почти отсутствием опыта работы с моим именем, может ли кто-нибудь объяснить, как я мог бы захватить выход 0 и эхо-галочку, либо как новую строку, либо в конце команды ввода? Это целиком для меня как нового пользователя Linux, незнакомого с интерфейсом.

+1

unix.stackexchange.com является вероятно, лучше спросить. Там уже может быть ответ: что вы хотите сделать, это добавить галочку (или какой-то произвольный текст) в командную строку 'PS1', если статус выхода предыдущей команды был 0. (Хотя, как правило, t изменить их подсказку вообще для успешных команд и поместить что-то вроде X в их приглашение, если предыдущая команда не удалась.) – chepner

+0

У меня это установлено в моем .bashrc. Посмотрите на https://github.com/xxfelixxx/.dotfiles. Внутри файла .bashrc найдите функцию _prompt_command(), чтобы узнать, как это сделать. – xxfelixxx

ответ

0

Вы можете установить PROMPT_COMMAND в bash для выполнения чего-либо перед отображением следующего приглашения. Если эта команда включает в себя изменение в PS1, она будет изменять вашу подсказку после каждой команды.

У меня есть эта настройка для создания красных x знаков, если последняя команда имела ошибку, а зеленый o отмечает успех.

Вот мои настройки:

Добавить в ваш ~/.bashrc

# Do it this way so that long lines don't get messed up 
RED_0=$( tput setaf 1) 
GREEN_0=$( tput setaf 2) 
YELLOW_0=$(tput setaf 3) 
BLUE_0=$( tput setaf 4) 
PURPLE_0=$(tput setaf 5) 
CYAN_0=$( tput setaf 6) 
RESET_0=$( tput sgr0 ) 

RED="\[$RED_0\]" 
GREEN="\[$GREEN_0\]" 
YELLOW="\[$YELLOW_0\]" 
BLUE="\[$BLUE_0\]" 
PURPLE="\[$PURPLE_0\]" 
CYAN="\[$CYAN_0\]" 
RESET="\[$RESET_0\]" 

CHECK="${GREEN}o" 
CROSS="${RED}x" 

FANCY_PROMPT="$GREEN\[email protected]\h:$PURPLE\w$BLUE$ $RESET" 

_prompt_command() { 
    # Show red x if last command failed 
    # Show green o if last command succeeded 
    case $? in 
     0) PS1="$CHECK $FANCY_PROMPT" ;; 
     *) PS1="$CROSS $FANCY_PROMPT" ;; 
    esac 
    history -a 
    true 
} 

export PROMPT_COMMAND="_prompt_command" 

Вот как это выглядит:

enter image description here

Смежные вопросы