私はそれが\
エスケープ文字であることを知っていますが、\
bashに書くと、次のようなものが表示されます。
System-Product-Name:~$ \
>
それでは、bashはいくつかの指示を待っていますか?私が使うとき
System-Product-Name:~$ \
> ls
これは仕事です。しかし、私が使うとき
System-Product-Name:~$ cd Wideo \
> ls
bash: cd: too many arguments
それでは、バックスラッシュはパイプのように動作しますか|
?私はそうは思わない。
このコマンドを使用するとき:
find . -name "FILENAME" -exec rm {} \;
なぜ終了するのですか?このコマンドは、find
正しいファイルを見つけて、そのファイルが見つかったパスexec
から削除するようです。これがなければ、私が受け取った情報は-exec
根拠がなく理解できません。なぜ使用できないのですか?
find . -name "FILENAME" -exec rm {}
?
私はman findのexecに関する情報だけを持っています。
execは、-exec、-execdir、-ok、および-okdirに関連する診断情報を表示します。
それでは、execを使用するときになぜ終了するのですか?たとえば、私が使うとき
find . -name "FILENAME"
終了する必要はありません。
ベストアンサー1
\
「この行は行の終わりではありません。この行は次の行に続きます」(コマンドにはcd
2つの引数が多すぎます)を意味する行の終わりと、次の行を\
防ぐ行の内側とを区別する必要があります。特別な意味を持つキャラクター。
次に、\;
あなたの例では、find
リテラルを;
引数として提供することを意味します。それ以外の場合、これは\
シェルに特別な意味を持ち、1つのコマンドと次のコマンドの間の区切り文字として使用されます。;
find
このパラメーターはオプションと一緒に使用するときに必要なので、付属の;
コマンドが終わる場所を知ることができます。別のオプションは2つのパラメータの合計です。詳しくはマニュアルをお読みください。find
-exec
find
-exec
{}
+
find(1)