Как мне вернуться к последнему каталогу, используемому в оболочке Linux?

Например: я открываю новую оболочку (или журнал в другой консоли) и пишу:

root@vignesh : cd /root/Desktop 

Это направит меня в /root/Desktop (если у меня есть к нему доступ)

root@vignesh:~/Desktop# 

Как мне теперь вернуться к предыдущему каталогу?
Есть ли какая-либо команда, чтобы вернуться в последний каталог, который я использовал?
Нужно ли снова использовать команду cd чтобы вернуться в предыдущий каталог?

3 ответа3

4

cd -

cd - перенесет вас в ранее использовавшийся каталог (если он есть) или выдаст ошибку.

Если ранее использовавшийся каталог существует, он изменит его, обновляя значение текущего рабочего каталога и предыдущего, возвращая статус успешного завершения (0).
В противном случае он напечатает сообщение об ошибке и вернет состояние выхода (1).
Сделайте свою собственную проверку с cd -; echo $? ,

Статус выхода станет важным, когда вы будете использовать его в скрипте.
Состояние выхода, отличное от 0, может остановить выполнение всего скрипта (если есть set -e) или, что еще хуже, может привести к точке выхода команды cd - , отличной от той, о которой вы думали, когда писали Сценарий и выполнять команды не в том каталоге: представьте, что вы запускаете в dir0; после того, как вы перейдете на dir1, вы не сможете перейти на dir2. Теперь вы выполняете cd - . Вы думаете, что находитесь в dir1, но вместо этого вы находитесь в dir0 ... и отсюда все это в руках Судьбы.


cd $OLDPWD (или cd $owd)

cd - это внутренняя команда всех оболочек (все, начиная с sh).
Под dash и bash он установит переменную PWD , OLDPWD для текущего и старого рабочего каталога. Под csh и tcsh вместо него будут установлены cwd и owd .

Таким образом, с помощью команды cd $OLDPWD в bash или cd $owd в tcsh вы попадете в старый рабочий каталог, если он существует, или в свой домашний каталог, если эта переменная не установлена.
Код выхода будет всегда 0 , если у вас есть доступ к вашему домашнему каталогу (1).


pushd newdir ... popd

pushd добавляет каталог в стек, а popd удаляет один из стека. Преимущество cd - это то, что вы будете выбирать, когда вернуться в подписанный каталог, и вам не придется возвращаться в последний. Еще одним преимуществом является то, что вы можете сложить несколько каталогов и решить, к какому из них перейти. help pushd и help popd для получения информации об этих встроенных командах.


Заметки:

  1. cd $NotAlreadySetVariable эквивалентна записи cd без каких-либо параметров, которые приведут вас в домашний каталог. Если быть точным, то вы попадете в каталог внутри $HOME (для bash, dash ...) или $home (для csh, tcsh ...). Если этот каталог не существует или недоступен, вы получите сообщение об ошибке. Если $HOME (или $home) пуст, вы останетесь в текущем каталоге, ошибка не будет сгенерирована, и значение $OLDPWD (или $owd) будет установлено в текущем каталоге.

  2. $OLDPWD , $owd может быть полезна, если вы хотите использовать предыдущий каталог в качестве параметра для команды. Например, вы хотите переместить все файлы из текущего каталога в старый: mv * $OLDPWD .


тривиальный
От man bash следует отметить, что в определении PWD используется текущий рабочий каталог (cwd), а не что-то вроде текущего рабочего каталога (PWD) ...

PWD       The logical value of the current working directory.
          This is set by the cd command.

OLDPWD    The previous logical value of the current working directory.  
          This is set by the cd command.

HOME      The  home  directory of the current user; the default argument for  
          the cd builtin command. The value of this variable is also used when   
          performing tilde expansion.

от man tcsh

cd и pushd интерпретируют `- 'как старый рабочий каталог (эквивалентно переменной оболочки owd). Это не замена вообще, а сокращение, распознаваемое только этими командами. Тем не менее, это тоже можно предотвратить путем цитирования.

3

я понял, используя команду cd

cd - 

перенаправит обратно в последний использованный каталог

2

используйте pushd dir для изменения каталога используйте popd для изменения dir назад используйте dirs для просмотра стека каталогов и используйте pushd для переключения текущего каталога с предыдущим

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .