file1.c
ファイルfile2.c
とfile3.c
。コマンドfind
出力:
$find -name "*.c"
./file1.c
./file2.c
./file3.c
find
それから引用符なしで使用したいと思います.*c
。set -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