Как перейти к предыдущему рабочему каталогу в терминале?

parser.awk:

#!/usr/bin/awk -f    
function die(msg) { print msg > "/dev/stderr"; exit 1 }
BEGIN {
  FS=opener
  if (mode=="l") linewise=1
  else if (mode=="i") trim_closer=length(closer)
  else if (mode!="a") die("mode must be one of: l,i,a")
}
{
  live=level
  for (f=1; f<=NF; f++) {
    if (f>1) {
      live=++level
      if (mode=="i" && level>1 || mode=="a") printf "%s", opener
    }
    cur=$f
    level-=gsub(closer, "", cur)
    if (level<0) die("Unbalanced")
    if (!linewise) {
      cur=$f
      if (sub(".*" closer, "", cur)) printf "%s", 
        substr($f, 1, length($f) - length(cur) - (level ? 0 : trim_closer))
      else if (live) printf "%s", $f
    }
  }
  if (live) {
    if (linewise) print
    else print ""
  }
}
END { if (level>0) die("Unbalanced") }

Звоните как awk -v'opener={' -v'closer=}' -v'mode=a' -f parser.awk. Если режим a, это печатает скобки и содержание всех наиболее удаленных, сбалансированных {...}; если режим i, это печатает только их содержание; если режим l, это печатает полные строки где наиболее удаленное {...} начинается, остается открытым, или завершения.

220
01.07.2013, 07:19
6 ответов

Можно использовать

cd -

или Вы могли использовать

cd $OLDPWD
291
27.01.2020, 19:28
  • 1
    Какая-либо идея, почему имя каталога печатается к консоли при использовании "CD -"? –  dtmland 01.09.2015, 02:56
  • 2
    Вероятно, так как старые оболочки не отобразили название текущего каталога в подсказке, было полезно видеть название каталога, когда Вы ввели cd -. Например, когда Вы вводите cd /usr/local Вы знаете, что находитесь в /usr/loal, но когда Вы вводите cd - Вы не всегда помните, от которого каталога Вы произошли из. Таким образом, это сохраняет Вас от ввода cd -; pwd. Но это - все предположение. –  Raphael Ahrens 01.09.2015, 07:37
  • 3
    Или можно использовать искажение: Настройте псевдоним как alias -- -='cd -' затем используйте - (1 символ) вместо cd - (4 символа). Быстрее :D –  ADTC 16.02.2016, 06:38

Другие ответы определенно завершены в прямом смысле ответа. 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.

55
27.01.2020, 19:28
  • 1
    , можно также сложить каталоги, таким образом, неоднократно используют pushd и вернитесь к предыдущей папке в то время как popd- луг. –  Bernhard 30.06.2013, 22:08
  • 2
    Конечно. Я почти поместил большой пример, который включал проверку стека с dirs -v, но действительность для меня - то, что часто простой случай - все, что я действительно использую. (Или, хуже, я делаю ошибку при попытке push +2 или подобный) кроме того, я думал маленькие шаги для того, чтобы заставлять кого-то попробовать рабочий процесс. :) –  Josh Berry 01.07.2013, 05:53
$ cd - 

изменится на предыдущий рабочий каталог.

16
27.01.2020, 19:28

Можно "определить ключ" для 'CD -' путем редактирования '~/.bashrc' файл и включая псевдоним для команды. Например, Вы могли добавить 'CDC' для создания его 'CD -', который предоставит Вам более короткий способ добраться до последнего каталога путем добавления:

alias cdc='cd -'

Таким образом, Вы просто ввели бы 'CDC', и она поместит Вас в Ваш последний рабочий каталог.

3
27.01.2020, 19:28
  • 1
    И смутите Вас ни к какому концу при использовании системы, где тот псевдоним не существует. Это сохраняет ввод одного символа время от времени. Почему даже беспокоятся? –  a CVn 01.07.2013, 17:16
  • 2
    "В терминале, как я могу определить ключ для движения в предыдущий каталог" меня, никогда не запутывается. Его просто ярлык, когда Вы находитесь в другой системе просто, использует обычное письмо путь. –  Atari911 01.07.2013, 22:25
  • 3
    @Atari911 большой вопрос! вот ответ: stackoverflow.com/questions/4200800 Здесь - то, что я сделал (связал F12): bind '"\e[24~":"\C-k \C-ucd -\n"' (или более предпочтительно переместите его в inputrc файл, как упомянуто в ответе). –  ADTC 16.02.2016, 07:00

Вы должны использовать:

cd ~-

он делает то же самое, что и cd - (из принятого в настоящее время ответа), без раздражающего эха каталога, и его легче набирать, чем cd "$OLDPWD" или cd - > /dev/null.

19
27.01.2020, 19:28

cd..переходит к предыдущей папке в дереве папок.
cd -переходит в папку, которая была раньше. Эта команда не работала в некоторых дистрибутивах (Ubuntu 16.04 ), работает в Debian 9.

1
27.01.2020, 19:28

Теги

Похожие вопросы