Допустим, я перехожу на cd, /usr/local/bin
но хочу изменить свой пароль на /usr/bin
, как мне это сделать с помощью zsh? Я знаю, что могу сделать что-то вроде cd /a/b/
и затем cd b c
, чтобы изменить свой пароль на /a/b
, но не могу понять, как сделать то, что я хочу.
решение1
Учитывая гибкую функциональность zsh cd
, есть как минимум три способа сделать то, что вы хотите. Вы можете написать cd /usr/local /usr
или cd local /
или cd local/bin bin
. Вероятно, можно придумать больше решений.
cd
Синтаксис в zsh — cd OLD NEW
. Эта команда сопоставляет ваш $PWD
с OLD
и заменяет любые совпадающие части на NEW
. Вам следует помнить, что cd
работает относительно вашего текущего каталога, поэтому если вы напишете cd /usr/local usr
в /usr/local/bin
, zsh выдаст вам ошибку, поскольку такого каталога как нет /usr/local/bin/usr/bin
. Всегда следите за косыми чертами.
решение2
Вы можете использоватьдвухаргументная формаcd
для замены подстроки текущего рабочего каталога. Например, для удаления /local
можно использовать
cd /local ''
Поскольку несколько слешей не имеют никакого значения, вы также можете записать это как cd /local /
(результат /usr//bin
, тогда двойной слеш упрощается до одного) или cd local /
(также результат /usr//bin
).
Другой подход — использовать редактирование командной строки. С настройками по умолчанию введите cd $PWD
в командной строке, затем нажмите Tab: подстановка переменной заменяется значением переменной, и вы можете редактировать ее в свое удовольствие. В разделе setopt auto_cd
вам не нужно cd
сначала писать. Если ваша конфигурация Tabне позволяет расширить переменную, используйте любую клавишу, вызывающую функцию zle, expand-or-complete
а не complete-word
.