我通过“oh my zsh”使用 z shell。我想从我的 .zshrc 文件中获取多个别名文件,以便让事情井井有条。我已经为别名文件添加了前缀,.alias_
因此我可以通过通配符加载它们。但是,调用source ~/.alias_*
只加载第一个文件。如何编写脚本以获取多个文件?
文件名示例: .alias_git
, .alias_local
, .alias_server
...
您可以使用 for 循环:
for file in ~/.alias_*; do
source "$file"
done
另一种选择是构建一个包含您想要获取的所有文件的数组,然后使用 for 循环遍历该数组。
typeset -a aliases
aliases+="~/.alias_foo"
aliases+="~/.aliases_bar"
# etc...
for file in $aliases[@]; do
if [[ -a "$file" ]]; then
source "$file"
fi
done
这实际上可以非常有效地进行组织良好的 zshrc 设置。
一种更加 ZSH 特定的方式(需要setopt EXTENDED_GLOB
):
alias_src=(
.alias_git
.alias_local
.alias_server
)
for f ($^alias_src(.N)) source $f
unset alias_src
前缀^
具有将后续 glob 修饰符分别应用于数组的每个元素的效果。
尾随(.N)
具有以下效果:
.
: 只匹配文件N
:temporary setopt NULL_GLOB
,这意味着只有实际存在的数组元素保留在数组中