cd в предыдущий каталог без эха имени каталога

Этот ответ дал мне cd - как стенографию, чтобы перейти к моему предыдущему каталогу в Bash. У него есть серьезная проблема: он печатает каталог, в который он вносит изменения, теряя пространство на экране, так как этот каталог затем повторяется в приглашении на следующей строке.

Я знаю, что могу сделать cd $OLDPWD , также упомянутый в этом ответе, и cd - >/dev/null но это намного больше печатает.

На странице пользователя bash говорится:

… или if – это первый аргумент, и смена каталога успешна, абсолютный путь к новому рабочему каталогу записывается на стандартный вывод.

Как я могу сделать - не быть первым аргументом? Используя любой из необязательных аргументов cd ? Любой другой способ подавить эхо или свести к минимуму ввод текста без необходимости определять функции / псевдонимы на каждой машине, с которой я работаю?

cd учитывает только первый аргумент, игнорируя все остальные. Ни один из вариантов не влияет на эхо предыдущего пути (возможно, документально зафиксировано -@ имеет этот эффект, но это недопустимая опция в моей системе).

Если вы не хотите использовать псевдоним / функцию, которая может дать вам еще меньше символов для ввода, чем cd - , или перенаправить на /dev/null , мое предложение – начать использовать специальное расширение тильды в bash :

 cd ~- 

Из страницы man bash :

Если тильда-префикс является `~ – ', заменяется значение переменной оболочки OLDPWD, если оно установлено.

Это, кажется, еще одна область в bash где был создан какой-то особый смысл. Расширение Тильды обычно работает на $ DIRSTACK, управляется / исследуется pushd , popd и dirs , его можно использовать и в других командах ( cp ~-/somefile . ), И если вы использовали pushd вы можете использовать ~N (где N – количество уровней, отброшенных назад), чтобы добраться до этих каталогов (для cd или других команд).


BTW, если у вас есть учетные записи на нескольких компьютерах и предполагается, что вы используете ssh для входа в них с одного места, вы должны подумать о добавлении к своему ~/.bashrc :

 if [ -f ~/.bash_common ]; then . ~/.bash_common fi 

а затем на вашем рабочем компьютере есть сценарий, который использует scp для «push» bash_common для каждой из этих машин. Таким образом, вы можете добавлять и совместно использовать общие функции на нескольких машинах с минимальными издержками.