Когда я вызываю alias
оболочку zsh, я получаю список псевдонимов. Некоторые из них нужны, некоторые нет. Изначально я создал файл .alias
в своем домашнем каталоге и добавил source $HOME/.alias
в свой .zshrc
. Как мне отсеять все существующие псевдонимы, которые не являются частью файла, из которого исходит мой .zshrc
? (Предположительно, я мог бы сделать это по одному с помощью unalias
, но это кажется невероятно громоздким.)
решение1
unalias
поддерживает одновременную отмену нескольких псевдонимов, поэтому вам не обязательно делать это по одному.
Я бы предложил просто удалить все псевдонимы и загрузить их заново из ~/.alias
.
unalias ${(k)aliases} ${(k)galiases} ${(k)saliases}; source
Для этого требуется, zsh/parameter
чтобы модуль был загружен. Проверьте с помощью zmodload | grep parameter
, загрузите с помощью zmodload zsh/parameter
.
Параметры aliases
и сопоставляют имена обычных, глобальных и суффиксных псевдонимов соответственно с их расширениями. galiases
заменяется ключами .saliases
${(k)parameter}
parameter
Если по какой-то причине вы не можете загрузить модуль, вы можете обойти эту проблему, используя вывод команды alias
:
unalias $(alias | cut -d = -f 1) ; source ~/.alias
Если вы хотите сбросить только определенный тип псевдонима, используйте alias -r
для обычных псевдонимов (тех, которые используются вместо команд), alias -g
для глобальных псевдонимов и alias -s
для псевдонимов суффиксов.
Если вам нужно делать это чаще, просто определите функцию в вашем файле ~/.zshrc
(или в каком-либо другом файле, который вы оттуда получаете)
reload-aliases () {
unalias ${(k)aliases}
source ~/.alias
}