2012-02-03 1 views
2

메시지를 표시, 나는이있어 : * 24 80), 같은 :사용자 정의 리눅스 쉘 내 <code>.bashrc</code>에서

[/level_a_dir/level_b_dir/level_c_dir/level_d_dir/level_e_dir $] 

질문

나는 프롬프트 짧게 잘라하려는 pwd 있다면 20 자보다 길면 다음과 같이 마지막 디렉토리를 유지하십시오.

[.../level_e_dir $] 
#[/level_a_dir/level_b_dir/level_c_dir/level_d_dir] is replaced with ... 

어떻게 할 수 있습니까?

+1

배쉬는 이미 이것을 위해'\ W' 프롬프트를 제시합니다. – tripleee

+0

@ tripleee, 그렇습니다. – Alcott

+0

또한 'PROMPT_DIRTRIM'도 있지만, 정확히 묻는 것은 아닙니다. –

답변

2

다음과 같은 방법으로 작성했습니다. 즉 수 있습니다 whetever 당신이 정말로 단지 20 문자를 원하는 경우에

export PS1="[\$(truncate.sh) ] " 
+0

새 프롬프트가 잘릴 때마다'truncated.sh'가 한 번 실행됩니다. 맞습니까? 명령 행에서'Enter '를 누르기 만하면'truncated.sh'가 실행됩니까? – Alcott

+0

@Alcott 죄송합니다. 귀하의 질문에 이해가되지 않습니다. 새로운 프롬프트가 생성 될 때마다 (명령이 끝나거나'Enter' 후에) truncate.sh가 실행될 것입니다. – sgibb

+0

당신은 바로 그것을 가지고 있습니다 :-). 'sed 's #'$ {HOME} '# ~ #;''에 대해 설명해 주시겠습니까? – Alcott

0

: 당신이 당신의 PS1를 교체해야

#!/bin/bash 
MAXLEN=20 
REPLACEMENT="..." 

# replace /home/user by ~ 
TPWD=$(echo ${PWD} | sed 's#'${HOME}'#~#;') 

# truncate 
if [ ${#TPWD} -gt ${MAXLEN} ] ; then 
    PWDOFFSET=$((${#TPWD} - ${MAXLEN})) 
    TPWD="${REPLACEMENT}${TPWD:${PWDOFFSET}:${MAXLEN}}" 
fi 

echo ${TPWD} 

다음 :
먼저 당신은 쉘 스크립트, truncate.sh을 만들어야합니다 (또는 그 이하)이면 가장 간단한 생각은 다음과 같습니다.

export PS1='[${PWD:$((${#PWD}-20))} $]' 

h가 아닌 경우 대괄호를 사용하지 않습니다. 많은 공간을 확보하거나 두 줄 프롬프트를 생각해보십시오. (개인적으로 싫어합니다 :-)

관련 문제