**
Bash 4には、複数のディレクトリにわたってグローブするためのzshの構文をエミュレート(つまり盗む)「globstar」という素晴らしいオプションがあります。しかし、常にシンボリックリンクをたどるので(少なくとも私の使い方では)多少破損します。
**
シンボリックリンクをたどるのを防ぐ方法はありますか?そうでない場合は、将来のバージョンでBashにこの機能を追加する予定はありますか?それまで(またはそのような計画がない場合)、誰でも適切な(そして便利な)解決策を提案できますか?
zshの実装がより柔軟で、この問題がないことを読んだようです。しかし、残念ながら、私は仕事で多くのbashスクリプトをソースとして使用し、時間がないか時間がないのでzshに直接切り替えることはできません。すべてzshに変換し、専門知識を最新の状態に保ちます。 (Bashサブシェルを起動し、必要なスクリプトをインポートしてから、変更されたすべての環境変数、エイリアス、関数などを何らかの方法でzshにバックポートすることは可能かもしれませんが、そうする方法もわかりません。)
私はそれを使用して、find
私が望む方法で動作する関数を書いてから、関数にエイリアスを追加できることを知ってい**
ますが、そのようなことをすることはできませんpath/to/parent/**/child/paths
。親パスを最初の引数として使用し、それを設定して実行するコマンドの引数として含む関数のエイリアスです。これは恥ずかしくて醜いことで、本当に良いものが欲しいです。 (特にこの形式は簡単に変形を可能にし、簡単に直感的ですが、関数はそれを別々に合計に変換しますが、2番目は本当に悪いです。)$(** path/to/parent child/paths)
**
--wholename */child/paths/*
find
path/**/path
path/**
**/path
** path/
** '.' /path
どんなアイデアがありますか?
ベストアンサー1
**
それ以降はシンボリックリンクには従いませんbash-4.3
。
バラより多様性間bash-4.3-release
:bash-4.3-rc2
globstar(**) は、ディレクトリで解決されるシンボリックリンクを通過しなくなりました。これにより、一部の重複項目が削除されます。