関数の内部に-fを設定してください。

関数の内部に-fを設定してください。

file1.cファイルfile2.cfile3.c。コマンドfind 出力:

$find -name "*.c"
./file1.c
./file2.c
./file3.c

find それから引用符なしで使用したいと思います.*cset -f

 $echo $-            # check current options
 himBHs
 $set -f
 $echo $-            # check that f option is set
 fhimBHs
 $find -name *.c
 ./file1.c
 ./file2.c
 ./file3.c
 $set +f             # unset f option

次の関数で同じコマンドを試しました.bashrc

find() {
    set -f
    eval command find $@
    set +f
}

ただし、テストするとエラーが発生します。

$ . ~/.bashrc && find -name *c
find: paths must precede expression: file1.c
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression

関数でこのエラーが発生するのはなぜですか?findバージョン: GNU 4.6.0

ベストアンサー1

言っていませんが、次のように関数を呼び出す必要があります。

find -name *.c

ただし、ワイルドカードが閉じられていないため、*.c呼び出し前にシェルが拡張されます。したがって、findコマンドには「-name」とそれに続く3つのパラメータ(エラーメッセージ)が表示されます。

引用符の代わりにバックスラッシュを使用できます。

find -name \*.c

おすすめ記事