
Я недавно начал использоватьcdr
для zsh
запоминания последних каталогов. Я использовал pushd
и тому подобное. Одна вещь, которой мне не хватает, это popd
, которая по сути означает «Я закончил использовать этот каталог, верните меня туда, где я был раньше, и избавьтесь от этой записи в стеке».
Можно ли сделать подобную семантику с cdr
?
Редактировать: изменить «историю» на «стек».
решение1
Вы можете ввести
cdr -p $PWD
и cdr
волячерносливкаталог, в котором вы находитесь, из его списка. Чтобы удалить другой каталог, просто замените его $PWD
абсолютным путем к каталогу, который вы хотите удалить. Или, если вы хотите удалить целый набор каталогов, вы также можете использовать шаблоны glob в аргументе. И прежде чем cdr -p
вносить какие-либо изменения, он покажет вам, какими будут результаты ваших действий, и попросит вас подтвердить, так что вам не придется беспокоиться о «случайном удалении всего». Смотритеhttp://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Options-2для получения дополнительной информации.
Чтобы вернуться в предыдущий каталог, в котором вы находитесь, выполните следующие действия:
cd -
Вы можете объединить оба этих варианта в одну функцию:
cdpop() {
local dir=$PWD
# `cdr` without arguments does the same `cdr 1`: Go back to the previous
# dir.
cdr
# `-P` does the same as `-p`, but is silent and doesn't ask for
# confirmation.
cdr -P $dir
}
Кстати: Вы можете настроить cdr
также выполнение cd
команд. Чтобы включить это, поместите следующее в ваш ~/.zshrc
файл:
zstyle ':chpwd:*' recent-dirs-default true
Тогда любой аргумент, который вы передаете cdr
, который не является конкретным для, cdr
будет передан cd
вместо этого в. Тогда вам не нужно думать, использовать cd
или cdr
; вы можете просто всегда использовать cdr
для всего. Смотритеhttp://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Configuration-2для получения дополнительной информации.
Мне не хватает одного пункта
popd
, который по сути означает: «Я больше не пользуюсь этим каталогом, верните меня туда, где я был раньше, и удалите эту запись из истории».
Небольшая поправка: popd
не удаляет каталог изистория, он удаляет его изстек каталогов.