Я не могу вспомнить, где, но я уже видел, что текущий путь подсказки bash узаконился интересным образом: каждый каталог, содержащийся на пути (исключая последний), заменяется только его первой буквой. Например: path/to/some/directory будет сокращено до p/t/s/directory.
Как я могу воспроизвести это поведение?
Усечь все имена каталогов, кроме последнего:
PS1='$(eval "sps")$ '
sps() {
python -c "import sys; dirs = sys.argv[1].split('/'); print '/'.join(d[:1] for d in dirs[:-1]) + '/' + dirs[-1]" $PWD
}
Регулярное выражение для лучшего ответа (Meer Borg's) ломается для одного каталога букв:
echo "/home/user/x/next_dir/other_dir" | sed -r 's|/(..)[^/]*|/\1|g'
/ho/us/x//ot
Правильная функция будет:
PS1='$(eval "sps")$ '
sps() {
echo "$PWD" | sed -r 's|/([^/]{,2})[^/]*|/\1|g'
}
Извините, нет репутация для комментариев по оригинальному ответу, lol