16

「oh my zsh」経由で z shell を使用します。.zshrc ファイル内から複数のエイリアス ファイルを取得して、物事を適切に整理したいと考えています。.alias_ワイルドカードでロードできるように、エイリアス ファイルに をプレフィックスとして付けました。ただし、への呼び出しsource ~/.alias_*は最初のファイルのみをロードします。複数のファイルをソースするようにスクリプトを作成するにはどうすればよいですか?

ファイル名の例: .alias_git.alias_local.alias_server...

4

2 に答える 2

16

オプション1

for ループを使用できます。

for file in ~/.alias_*; do
    source "$file"
done

オプション 2

もう 1 つのオプションは、ソースにするすべてのファイルの配列を構築し、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 セットアップを作成するのに非常に効果的です。

于 2013-02-04T04:33:48.170 に答える
3

さらにZSH固有の方法(が必要setopt EXTENDED_GLOB):

alias_src=(
.alias_git
.alias_local
.alias_server
)
for f ($^alias_src(.N)) source $f
unset alias_src

プレフィックス^には、後続のグロブ修飾子を配列のすべての要素に個別に適用する効果があります。

末尾(.N)には次の効果があります。

  • .: 一致するファイルのみ
  • N: 一時的setopt NULL_GLOBに、実際に存在する配列の要素のみが配列に残ることを意味します
于 2013-02-20T06:03:43.323 に答える