Як перейти до попереднього робочого каталогу в терміналі?


213

Як в терміналі я можу визначити ключ для переходу до попереднього каталогу, в якому я був, коли міняв каталог за допомогою cdкоманди?

Наприклад, я вхожу, /opt/soft/binя cdвхожу /etc/squid3і хочу повернутися до першого каталогу.

Відповіді:


284

Можна використовувати

cd -

або ви могли використовувати

cd $OLDPWD

3
Будь-яка ідея, чому ім'я каталогу друкується на консолі при використанні "cd -"?
dtmland

4
Можливо, оскільки старі оболонки не відображали ім'я поточного каталогу у запиті, було корисно побачити ім’я каталогу під час введення cd -. Наприклад, коли ви вводите, cd /usr/localви знаєте, що перебуваєте /usr/loal, але під час введення cd -не завжди пам’ятаєте, з якого каталогу ви прийшли. Так це рятує вас від набору тексту cd -; pwd. Але це все міркування.
Рафаель Аренс

2
Або ви можете використовувати псевдонім: Встановіть псевдонім як alias -- -='cd -'тоді використовуйте -(1 char) замість cd -(4 char). Швидше:D
ADTC

2
Як я міг колись жити без цього?
VSZM

1
@ AndréKuhlmann Можна зробити cd -два рази. Як cd /; cd /usr; cd -; cd -ви повинні бути в /usr. Але, можливо, я сумую за своїм розумінням.
Рафаель Аренс

54

Інші відповіді, безумовно, є повною в прямому сенсі відповіді. cd -і cd $OLDPWD, безумовно, є головним вибором для цього. Однак я часто вважаю, що потрапляти в робочий процес pushdі popdпрацює краще.

Коротше кажучи, якщо ви переходите в каталог з остаточним наміром повернутися туди, де ви почали, використовуйте pushd/ popd.

Розширений приклад

Основна різниця легко показати на прикладі.

$ cd dir1
$ pushd dir2

На даний момент у вас є стек каталогів, який є dir2, dir1. Запуск pushdбез аргументів поверне вас назад у dir1стек як dir1, dir2. popdзробив би те саме, але залишив би вас із порожнім стеком каталогів. Це не сильно відрізняється від того, яким би ви були з cd -робочим процесом.

Однак тепер ви можете кілька разів змінювати каталоги та повертатися до них dir1. Наприклад,

$ cd dir1
$ pushd dir2
$ cd dir3

Якщо ви побіжете popdв цей момент, ви повернетесь до dir1.


2
Ви також можете складати каталоги, тому неодноразово використовуйте pushdта повертайтеся до попередньої папки під час popd-ing.
Бернхард

1
Звичайно. Я майже наводив великий приклад, який включав перевірку стека dirs -v, але реальність для мене така, що часто я просто використовую простий випадок. (Або, що ще гірше, я помиляюся при спробі push +2чи подібному) Також я подумав, що дитина крокує, щоб когось спробувати з робочого процесу. :)
Джош Беррі

Як вам cdдо вершини стека, не вискочивши?
Джон Дітон

18

Ви повинні використовувати:

cd ~-

він робить те саме, що cd -(з прийнятої на даний момент відповіді) без дратівливого відлуння каталогу і його легше набрати, ніж cd "$OLDPWD"або cd - > /dev/null.


2
Перенаправлення ехо на нульовий файл! Це геній !!
Рам

2
Відлуння показує новий каталог, а не попередній. І я вважаю це корисним, так що я знаю, де я зараз, особливо, якщо я знаходжусь у оболонці, яка відображає лише ім'я поточного каталогу (або взагалі нічого), і я занадто не намагаюся змінити підказка, щоб показати повний шлях. Звичайно, якщо ваш запит вже показує повний шлях, відлуння буде зайвим і дратівливим. У такому випадку, я думаю, ви можете спробувати робити, alias -- -='cd "$OLDPWD"'використовуючи -(1 char) замість cd ~-(5 char). :)
ADTC

Джерело та пояснення: unix.stackexchange.com/a/330885/38213 Спойлери, - є операндом, а ~ - псевдонімами шляху. Так cd ~-/..працює, але cd -/..ні!
Рей Фосс


3

Ви можете "визначити ключ" для "cd -", відредагувавши файл "~ / .bashrc" і включивши псевдонім для команди. Наприклад, ви можете додати "cdc", щоб зробити його "cd -", що забезпечить вам коротший спосіб дістатися до останнього каталогу, додавши:

alias cdc='cd -'

Таким чином, ви просто введете "cdc", і він помістить вас у ваш останній робочий каталог.


5
І плутати вас без кінця, коли ви використовуєте систему, де цей псевдонім не стоїть на місці. Це дозволяє економити введення одного символу раз у раз. Навіщо навіть турбуватися?
CVn

2
"У терміналі, як я можу визначити ключ для переходу до попереднього каталогу", я ніколи не плутаюсь. Це лише ярлик, коли ви перебуваєте в іншій системі, просто використовуйте довгий шлях.
Atari911

@ Atari911 чудове запитання! ось відповідь: stackoverflow.com/questions/4200800 Ось що я зробив (прив’язаний F12): bind '"\e[24~":"\C-k \C-ucd -\n"'(або більш бажано перемістити його у inputrcфайл, як згадується у відповіді).
ADTC

1

cd ..переходить до папки прецедентів у дереві папки.
cd -переходить до папки, в якій вона була раніше. Ця команда не працювала на деяких дистрибутивах (ubuntu 16.04), працює в debian 9.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.