$?
내 목표는 단축된 사용자 이름, 단축된 경로를 파란색으로 표시하고 명령을 잘못 입력할 때마다 재설정되는 카운터 변수를 표시하는 bash 프롬프트를 만드는 것입니다( 엄격히 동일하지는 않지만 확인하는 데 사용하겠습니다 ).
현재 나는 다음을 ~/.bashrc
가지고 있습니다:
counter=0
#should increment counter if no errors, else reset counter
PROMPT_COMMAND="if [ $? -eq 0 ]; then ((counter++)); else counter=0; fi"
PS1='(${USER:0:3}@\[\e[0;34m\]$(basename $(dirname $PWD))/$(basename $PWD)\[\e[m\])[$counter]\\$ '
이는 다음을 보여줍니다.
(use@//home)[17]$
내 주요 문제는 0이 아닌 종료 상태를 얻을 때 카운터가 0으로 재설정되지 않는다는 것입니다. PROMPT_COMMAND
예를 들어 , 실패한 명령 이후에 명령을 실행할 수 있으며 aasdjfasdf
이 echo $counter
명령은 표시됩니다 0
(실제로는 1
PROMPT_COMMAND가 즉시 증가시키기 때문에 a입니다).
내가 가진 또 다른 작은 문제는 루트 디렉토리에서 내 프롬프트가 표시된다는 것입니다.
(use@///)[11]$
이는 이상적이지 않습니다(3/). 나도 이 문제를 어떻게 고칠지는 모르겠지만 적어도 큰 문제는 아니다.
PROMPT_COMMAND가 카운터를 올바르게 증가시키고 재설정하도록 하려면 어떻게 해야 합니까?
편집하다:이것은 내 PS1이며 다른 사람이 궁금해할 경우를 대비해 내가 원하는 모든 작업을 수행합니다.
counter=0
PROMPT_COMMAND='if [ $? -eq 0 ]; then ((counter++)); else counter=0; fi;'
PS1='(\[\e[4m\]${USER:0:3}\[\e[0m\]@\[\e[34m\]${PWD:${#PWD}<15?0:(-15)}\[\e[m\])[$counter]\\$ '
답변1
PROMPT_COMMAND를 다음으로 변경합니다.
PROMPT_COMMAND='if [ $? -eq 0 ]; then counter=$((counter+1)); else counter=0; fi'
조기 확장을 방지하려면 작은따옴표를 사용 $?
하고 증가된 값에는 직접 할당을 사용하십시오 counter
.