vim
имеет действительно хорошую функцию, которую он использует в своих путях, когда они немного длинны:
Сокращает путь к документу на вкладке вверху. Есть ли способ сделать что-то похожее на это, чтобы моя подсказка bash не выглядела так:
rfkrocktk@work-laptop ~/Documents/Projects/Work/maventest/src/main/java/com/tkassembled/ $
rfkrocktk@work-laptop ~/D/P/W/m/src/main/java/com/tkassembled/ $
? В идеале, использовать какой-то порог для максимальной длины подсказки?Ответы:
Попробуйте это :
или, чистый bash:
тогда
производит (обратите внимание
~
на${HOME}
):Я улучшил свой ответ благодаря @ enzotib's
источник
$PWD
→~
тест. В настоящее время, еслиHOME
есть/home/ed
иPWD
есть/home/edwina
, вы получаете~wina
в версии Perl и~/ina
в версии оболочки. (2) Ваш код оболочки дросселирует, если текущий каталог содержит какие-либо символы подстановки (то есть, расширение пути); например,PWD
=/abc/*/def
. Вы можете исправить это, добавивset -o noglob
илиset -f
. … (Продолжение)$HOME
(которая находится внутри двойных кавычек) и$PWD
достаточно хороши. В команде оболочки, последние три ссылок переменной оболочки прекрасна, но первые три может быть"${PWD#$HOME}"
,"$PWD"
и"$p"
. (4) См. Также ответ mbentley и мои комментарии к нему.Похоже на ответ @nicerobot, но несколько короче:
Это покажет следующий пример:
источник
Мне нравится
PROMPT_DIRTRIM
в Баш ...изменит пример вашего запроса на ...
Меня устраивает.
источник
В дополнение к ответу энзотиба , следующий фрагмент будет:
/Path/To/Your/Home/
в~/
(поэтому путь будет~/a/b/c
вместо/P/T/Y/H/a/b/c
)Используйте первую букву «точечного файла» вместо того, чтобы показывать только точку (
/a/./c/d
станет/a/.b/c/d
):Убедитесь, что вы используете одинарные кавычки, иначе Bash преждевременно расширит его.
источник
Формат для использования в
PS1
IS\W
(смPROMPTING
раздел в справочнойbash
странице).И вы можете прочитать другие варианты там, вы можете сделать некоторые интересные вещи с вашей командной строкой.
источник
Мне нравится вывод из примера nicerobot, но я нашел одну проблему. У меня есть каталог, в котором есть дефис,
A-E
и он рассматривался-E
как аргумент,printf
когда это был мой текущий рабочий каталог. Чтобы исправить это, я добавил--
к последнимprintf
и добавил кавычки вокруг вывода на случай, если нечего выводить:источник
-
в качестве второго символа. Хотя это правда, что--
это общее решение вопроса об аргументах, начинающихся с-
, лучшеprintf
сказать методprintf "%s" "${q:1}"
, так как это также защищает от содержащихся аргументов%
. (Например, попробуйтеPWD
=/home/mbentley/Documents/Projects/Work/maventest/src/main/java/com/abc%def
. (2) См. Также мои комментарии к ответу nicerobot.