私は仕事をしてこのようなものを見つけました。
$ echo [Login]
g
$ echo [kilo]
k
$ echo [gauke]
e g k
$ echo [quasi-star]
k m q
この出力を生成するために後で何が起こっていますか?出力はecho [quasi-star]
精神を失い、まったく存在しない文字を提供します。
メモ:はい、結果が得られることを知っています。echo "[Login]"
答え1
引用符がない場合、シェルは文字クラスのパス名(glob)拡張を実行するため、[]
現在のディレクトリにe
、、、、、および名前のg
ファイルがある可能性があります。これが結果です。k
m
q
echo
デフォルトでは、パス名拡張の結果のみを印刷するだけです。
たとえば、次のようにしますecho [quasi-star]
。
forの拡張結果[quasi-star]
はfromの単一文字ですquasijklmnopqrstar
(意図的に保持された重複)。シェルの観点から見ると、周囲の文字がないため、拡張の現在のディレクトリにある単一の文字ファイル名のみが一致します。