「ls *」コマンドが無効なオプションのエラーを生成するのはなぜですか?

「ls *」コマンドが無効なオプションのエラーを生成するのはなぜですか?

ファイルを表示しないという内容のスレッドがありますが、ls "*"実際にその理由を知りたいです。

ls *

このコマンドは私の端末に何も出力しません。

ls: invalid option -- '|'
Try 'ls --help' for more information.

しかし、

ls

現在のディレクトリのすべてのファイルを一覧表示します

 1                  ferol                      readme.txt
 2                  fichier                    sarku
 2018               GameShell                  Templates
 22223333          '-|h4k3r|-'                 test
 3                  hs_err_pid2301.log         test2
 CA.txt             important.top.secret.txt   toto.text
 CA.zip             JavaBlueJProject           tp1_inf1070
 countryInfo.txt    liendur                   'tp1_inf1070_A19(2) (1)'
 currency           liensymbolique             tp1_inf1070_A19.tar
 curreny            LOL                        Videos
 Desktop            Longueuil                 'VirtualBox VMs'
 Documents          Music                      words
 douffos            numbers                    Zip.zip
 Downloads          Pictures
 examples.desktop   Public

ここでワイルドカードが機能しない理由についてのアイデアはありますか?私はUbuntuにいてターミナルで働いていますが、これがどのような違いがあるのか​​わかりません。

ありがとうございます。

ベストアンサー1

走るとき

ls *

ワイルドカードは通常どおり動作し、*次のような現在のディレクトリのすべてのファイル名に展開されます。

-|h4k3r|-

で始まる-ので、lsオプション(-aまたは-l)で構文解析してみてください。|これは実際に認識されるオプションではないため、lsエラーメッセージを表示してからinvalid option終了します(ファイルリストなし)。

現在のフォルダ内のすべての項目を明示的に一覧表示するには、次の手順を試します。

ls ./*

...これにより、すべてのファイル名にプレフィックスが追加されます./(アイテムがオプションとして誤って解釈されるのを防ぐため)。

ls -- *

...ここでは--「オプションの終わりを表す区切り文字」があります。残りの引数はファイル名です。

おすすめ記事