ベストアンサー1
zsh文書を見るための最良の方法はinfo
。
を実行すると、info zsh
次のようになります。索引(考えてみてください)本index)を使用して、コマンドを説明するセクションを見つけますzmodload
。
を押してi入力zmo
し、を押しますTab。zmodload
すべての関連情報を通知する組み込みの説明に直接移動します。
つまり、zmodload -F
モジュールをロードし(ロードされていない場合)、指定されたモジュールのみをアクティブにします。特徴このモジュールでは。
ここではパターンマッチング機能を有効にしました-m
。は組み込みのため、上記のコマンドはモジュールをロードし(詳細については参考資料を参照)、で始まる名前のみを有効にします。mb:zf_*
b:
zsh/files
info -f zsh -n 'The zsh/files Module,'
zf_
zmodload -F zsh/files
モジュールをロードしますが、機能を有効にしないでください。
$ zmodload -FlL zsh/files
zmodload -F zsh/files -b:chgrp -b:chown -b:ln -b:mkdir -b:mv -b:rm -b:rmdir -b:sync -b:zf_chgrp -b:zf_chown -b:zf_ln -b:zf_mkdir -b:zf_mv -b:zf_rm -b:zf_rmdir -b:zf_sync
現在アクティブな機能を指定して、このモジュールの機能を一覧表示します(現在はありません)。mv
とzf_mv
内蔵があることがわかります。
$ zmodload -mF zsh/files 'b:zf_*'
$ zmodload -FlL zsh/files
zmodload -F zsh/files -b:chgrp -b:chown -b:ln -b:mkdir -b:mv -b:rm -b:rmdir -b:sync +b:zf_chgrp +b:zf_chown +b:zf_ln +b:zf_mkdir +b:zf_mv +b:zf_rm +b:zf_rmdir +b:zf_sync
zf_mv
組み込み機能は有効ですが、その機能は有効になっていないことがわかりますmv
(他の組み込み機能も同様です)。つまり、次の組み込みバージョンのシステムコマンドが有効になりますが、システムコマンドをオーバーライドしません。
$ type zf_mv
zf_mv is a shell builtin
$ type mv
mv is /bin/mv
今組み込みmv
、〜のようにzf_mv
、いいえmv
、次のようにできます。
zf_mv -- ^*.(jpg|png|bmp) targetdir/
組み込みのためシステムコールがzf_mv
ないため、これに関連する制限にexecve()
達しません。Too many args
もちろん、次のようにすることもできます。
zmodload zsh/files # without -F, all the features are enabled
mv -- ^*.(jpg|png|bmp) targetdir/
mv
ただし、これはシステムを組み込みの同等のシステムに置き換えることに注意してくださいzsh
。
エラーを克服するにはE2BIG
execve()
(パラメータが多すぎます。外部コマンド実行時)zsh
機能も提供されますzargs
。
次を実行します。
autoload zargs # in ~/.zshrc if you use it often
自動読み込みとしてマークしてください。
その後、次のものを使用できます。
zargs -- ^*.(jpg|png|bmp) -- mv -t targetdir/
(これはGNUをオプションmv
と仮定します)。 E2BIGを避けるために、できるだけ多くのコマンドを実行してください。-t
zargs
mv
xargs