Изменение родительского каталога (../) с символьными ссылками

В zsh я ввожу Ctrl+Z для “приостанавливания” команды, я ввожу и ввожу другую команду. После того, как я выполнил ту команду (или прервал ее с Ctrl+C), приостановленная команда возвращается для выпуска (даже помнящий позицию курсора). Как дополнительное удобство, если командная строка пуста, когда я ввожу Ctrl+Z, ключ вызывает bg встроенный вместо этого (таким образом, двойной Ctrl+Z отправляет рабочую команду непосредственно в фон).

fancy-ctrl-z () {
  emulate -LR zsh
  if [[ $#BUFFER -eq 0 ]]; then
    bg
    zle redisplay
  else
    zle push-input
  fi
}
zle -N fancy-ctrl-z
bindkey '^Z'          fancy-ctrl-z

Я не знаю, как сделать что-то подобное в ударе.

В любой оболочке можно использовать не использующий высокие технологии метод добавления a # в начале текущей строки.

32
11.04.2011, 09:28
3 ответа

Bash (а также ksh, zsh, и даже пепел) отслеживает изменения каталога так, чтобы cd /foo/bar && cd .. всегда берет Вас к /foo даже если bar символьная ссылка. Передайте -P опция к cd проигнорировать отслеженное изменение и следовать за “физической” структурой каталогов:

cd -P ..

Посмотрите help cd или man builtins для документации о встроенном ударе cd. Если Вам действительно не нравится функция отслеживания каталога, можно выключить ее с set -P в ударе (set -o no_chase_link в zsh).

38
27.01.2020, 19:37
  • 1
    Путем я считал вопрос, OP имеет -P или -o physical уже набор? –  Mikel 11.04.2011, 08:14
  • 2
    +1, но предлагают ссылку на страницу справочника. –  Faheem Mitha 11.04.2011, 11:00
  • 3
    @Mikel: Нет, вопрос говорит, что он переходит по символьной ссылке, не физической структуре каталогов. –  Faheem Mitha 11.04.2011, 11:02
  • 4
    Извините, я на самом деле не пытался отредактировать Ваше сообщение. Предложенное редактирование отправлено теперь. –  Faheem Mitha 11.04.2011, 13:00

Можно также использовать readlink для нахождения физического пути к этому каталогу, затем пойдите один каталог выше:

cd $(readlink -f .)/..
4
27.01.2020, 19:37

Один метод, который Вы могли использовать, должен использовать псевдоним вместо символьной ссылки для взятия Вас к ~/a/really/long/path. Это - метод, который я использую, с тех пор я могу просто ввести простой 1/2/et cetera команда буквы вместо символьной ссылки CD

3
27.01.2020, 19:37

Теги

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