Как я могу сократить текущий путь bash к одной букве в каталоге?

Я не могу вспомнить, где, но я уже видел, что текущий путь подсказки bash узаконился интересным образом: каждый каталог, содержащийся на пути (исключая последний), заменяется только его первой буквой. Например: path/to/some/directory будет сокращено до p/t/s/directory.

Как я могу воспроизвести это поведение?

1
задан 2 April 2015 в 15:52

2 ответа

Усечь все имена каталогов, кроме последнего:

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
}
2
ответ дан 25 May 2018 в 00:43
  • 1
    Это не работает, когда я меняю каталоги? – Emmadishetty Sri Aditya Varma 7 September 2017 в 09:16

Регулярное выражение для лучшего ответа (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

2
ответ дан 25 May 2018 в 00:43

Другие вопросы по тегам:

Похожие вопросы: