Удалить часть каталога из текущего каталога в zsh

Удалить часть каталога из текущего каталога в zsh

Допустим, я перехожу на 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.

Связанный контент