find
次の基本色がサポートされていることを確認するためのスクリプトを作成しています。
- 正規表現
- 時間
- アルテム
- +/- を使用する inum
これまで私はこれを思い出しました。
find / -mindepth 0 -maxdepth 1 -inum +0 -exec echo "ok:inum+-" \; 2>&1 | head -n 1
このコマンドは、マスターノードを理解している場合にのみ「ok:inum + -」を出力する必要があります。
問題は、一致するものを見つけるためにfindに依存することです。それ以外の場合は何も出力されません。
理想的には、テストの基本プログラムは見つかった内容を気にしないでください。エラーが原因でツールが中断されない限り、常にエコーを実行する必要があります。
放棄し-exec echo …
て呼び出しの終了コードを確認できることを知っていますが、find
それに基づいて "ok:"文字列をどのように印刷しますか?
ああ、どんな解決策でもあるはずです。一行各テストの基本です。
答え1
stderrに何があるかを検出できます。
find_supports() {
[ -z "$(find / -prune "$@" 2>&1 > /dev/null)" ]
}
それから:
if find_supports -inum +0; then...
if find_supports -exit 2; then...
if find_supports -maxdepth 1; then...
一部の述語はfind
サポートされていますが、互換性のない方法です。
たとえば、デフォルトは-regex
BSDのデフォルトの正規表現を期待しますが、GNUは 。find
find
emacs
説明サフィックス-mtime
/も実装によって-size
異なります。
また、上記は標準であり、実装にあるため、-depth
//テストには使用できません。-delete
-mindepth
-prune
-depth
-maxdepth
-mindepth