我通过“oh my zsh”使用z shell。我想从我的.zshrc文件中获取多个别名文件,这样我就可以保持井井有条。我已经使用.alias_
为别名文件添加了前缀,因此我可以通配符加载它们。但是,对source ~/.alias_*
的调用只会加载第一个文件。如何编写脚本以获取多个文件?
文件名示例:.alias_git
,.alias_local
,.alias_server
...
答案 0 :(得分:5)
你可以使用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
这实际上可以非常有效地制作a well organized zshrc setup。
答案 1 :(得分:2)
更具有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
:暂时setopt NULL_GLOB
,这意味着只有实际存在的数组元素才会保留在数组中