`ls -d */`と`ls -d *`の違いは何ですか?

`ls -d */`と`ls -d *`の違いは何ですか?

ls -dがどのように機能するかを理解しようとしています。他のls -d質問を読みましたが、なぜls -d *ls -dとは異なる動作をするのかを尋ねる人はいませんls -d */。最後の区切り文字はなぜそんなに重要なのですか?

ls *同じ方法で行動するので、同じ方法でls */期待しls -d *て働きます。ls -d */

代わりに、現在のディレクトリのディレクトリls -d *リストを実行するのと同じように、現在のディレクトリのすべてのファイルを一覧表示します。なぜですか?lsls -d */

答え1

ls *そしてls */同じように行動してください。

いいえ、そうではありません。作業ディレクトリにファイルがある場合、最初のコマンドにはリストされますが、2番目のコマンドにはリストされません。

lsコマンドラインに渡されたファイルとディレクトリが一覧表示されます(該当するものを含む)。シェルワイルドカードを使用すると、シェルが置き換えられます。模様「ファイル名のアルファベット順リスト」(参照ファイル名拡張子)。

このパターンは、*現在のディレクトリ(で始まる隠しファイルを除く.)のすべてのファイルとディレクトリと一致し、ディレクトリ*/(隠しディレクトリを除く)のみが一致します。

このスイッチは-dディレクトリコンテンツのリストを無効にしますが、lsに渡されたファイルは引き続きリストされます。

答え2

答えは次のとおりです。エンディングは、/lsがディレクトリだけを見るように強制します。

動作は一貫しています(有無にかかわらず-d)。

少しテスト:

mkdir /tmp/test
touch /tmp/test/a
mkdir /tmp/test/b
touch /tmp/test/b/c
cd /tmp/test

その後、実行するとls *違いls */がわかります。

関連情報