2016-08-10 3 views
1

나는 깊이있는 것을 찾아 내고 기능적으로 완전히 불필요합니다. 저는 여전히 우분투 전체를 알아 냈습니다. bash와 같은 스크립팅 언어는 말할 것도 없습니다. 나는 C와 Java를 해봤지만, 그런 식으로 스크립트를 작성할 수는 없다.출구 0을 트랩하고 "체크 표시"를 에코하는 방법

나의 계획은 내가 http://www.linuxcommand.org/wss0150.php에서 찾을 것을 기반으로 C 스크립트를 포함 ~/.bashrc을 편집 종료 0이 포함 된 메시지의 값을 변경했다,하지만 난 꽤 빨리 .bashrc는 언어에 대한 고집 한 것을 알아 냈다.

내 이름에 대한 배쉬 경험이 거의 없기 때문에 누군가가 출구 0을 빠져 나와 새 명령 줄 또는 입력 명령 끝의 체크 표시를 울릴 수있는 방법을 설명 할 수 있습니까? 이것은 인터페이스에 익숙하지 않은 새로운 리눅스 사용자로서의 나의 모든 것을위한 것입니다.

+1

아마도 더 나은 곳을 물어보십시오. 이미 대답이있을 수도 있습니다 : 당신이하고 싶은 것은 이전 명령의 종료 상태가 0이면 명령 프롬프트'PS1'에 체크 표시 (또는 임의의 텍스트)를 추가하는 것입니다. (더 일반적으로 사람들은 ' 성공한 명령에 대한 프롬프트를 전혀 바꾸지 말고, 이전 명령이 실패하면 프롬프트에 X와 같은 것을 넣으십시오.) – chepner

+0

이 파일은 .bashrc에 있습니다. https://github.com/xxfelixxx/.dotfiles를보십시오. .bashrc 파일에서 _prompt_command() 함수를 찾아서이 작업을 수행하는 방법에 대한 세부 사항을 찾으십시오. – xxfelixxx

답변

0

bash에서 PROMPT_COMMAND을 설정하여 다음 프롬프트를 표시하기 전에 무언가를 실행할 수 있습니다. 이 명령에 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" 

것 같습니다 무엇 : unix.stackexchange.com가

enter image description here