Приглашение Bash поддерживает escape-последовательность \w
, задокументированную как
\w the current working directory, with $HOME abbreviated
with a tilde (uses the value of the PROMPT_DIRTRIM variable)
Есть ли способ получить подобное сокращение для произвольной строки? То есть есть ли общая команда, которая делает что-то вроде следующего, при условии, что HOME =/home/user1
/home/user1 → ~
/home/user1/a/1 → ~/a/1
/home/user2/b/2 → ~user2/b/2
/root → ~root
Конечно, я мог бы попробовать что-то уродливое с помощью sed, но это вряд ли даст мне желаемый результат в любом случае. :-)
Суть в том, что я хотел бы, чтобы заголовки на вкладках моих терминалов были как можно короче, поэтому, по возможности, сокращайте рабочие каталоги.
ОБНОВЛЕНИЕ: Поскольку, кажется, нет удовлетворительного решения, доступного легко, и я хотел бы сохранить достаточно быстро, я теперь пошел с простым
pwd | sed -e "s|/root|~root|" -e "s|/home/user1|~|
и что-то похожее на root. Поскольку я единственный пользователь на машине, в настоящее время это работает более или менее. Я буду держать вопрос открытым, если кто magical-tool-that-solves-all-problems
придумает магический инструмент, который решает все проблемы (в идеале не написанное в elisp…).