이 팁을 얻는 방법
~/this/is/a-very-very-long-directory-name/dir
이와 관련하여
~/this/is/a-ver...name/dir
bash 프롬프트에서?
따라서 nn(20+)자보다 긴 디렉터리 이름은 xxxx...xxxx로 단축됩니다.
중복 가능성에 유의하세요. /to/dir의 긴 경로가 아닌 긴 디렉터리 이름을 단축하고 싶습니다.
답변1
당신은 다음과 같은 것을 사용해야합니다sed, bash에는 내장 메소드가 없습니다.
d='~/this/is/a-very-very-long-directory-name/with_another_very_long_name/and-here-is-yet-another-one'
# or, d=$(pwd)
e=$( echo "$d" | sed -E 's#([^/]{4})[^/]{13,}([^/.]{3})#\1...\2#g' )
echo "$e"
~/this/is/a-ve...ame/with...ame/and-...one
반면에 프롬프트에 개행 문자를 추가할 수도 있습니다. 나는 다음과 같은 것을 사용합니다 :
PS1='\u@\h:\w\n\$ '
이것은 다음과 같습니다
jackman@myhost:~/this/is/a-very-very-long-directory-name/with_another_very_long_name/and-here-is-yet-another-one
$ _
답변2
쉘의 "매개변수 확장"을 사용하여 시도해 보십시오.
d='~/this/is/a-very-very-long-directory-name/with_another_very_long_name/and-here-is-yet-another-one'
IFS=/
for DIR in $d
do [ ${#DIR} -gt 8 ] && { TMP=${DIR%%${DIR#????}}
DIR=$TMP...${DIR##${DIR%????}}
}
NEW="$NEW${NEW:+/}$DIR"
done
echo "$NEW"
~/this/is/a-ve...name/with...name/and-...-one
IFS
필요한 경우 저장하고 복원하십시오. NEW
나중에 변수에 액세스 하려고 하기 때문에 서브셸에서 실행하면 작동하지 않습니다 ("명령 대체"를 사용하지 않는 한...).