ls -dはどういう意味ですか?

ls -dはどういう意味ですか?

マニュアルページに入り、lsオプション項目は-d次のとおりです。

-d、--directoryコンテンツの代わりにディレクトリエントリを一覧表示し、シンボリックリンクを逆参照しません。

だから私はこのls -dコマンドが与えられたディレクトリのすべてのディレクトリを表示すると思いました。しかし、私はディレクトリに行き、2つの異なるコマンドを試しました。

  1. ディレクトリのインポート::ls -l | grep ^d動作し、7つのディレクトリがすべて表示されます。

  2. ディレクトリのインポートls -d:これはいいえ7つのディレクトリ表示中の点は1つだけ表示される.

このオプションを間違って使用しているのか、それともその意味を間違って理解したのかわかりません。-dこのオプションの実際の意味と使い方は何ですか?

答え1

ls -dディレクトリまたはシンボリックリンクに関する情報を表示します。この情報は(簡単に言えば)対応するパスです。論理的な仮定はD代表する目次なぜなら、私が遭遇したUNIX用語の最も基本的な定義は「ディレクトリのリスト」だからです。

表面的に、これはあまり効果がないようです。現在、2つのサブディレクトリがあるディレクトリにあるとします。

documents music

オプションなしで使用すると、ls documentsコンテンツのリストが表示されます。文書上記で正確に指摘したように。を使用すると、ls -d documents名前のみが印刷されます。フォルダパスは現在の場所に相対的なので、名前と同じです。文書!これは拡張することができ(デフォルトの使用法では多少冗長ですが)、ls -d $PWD/*作業ディレクトリ(したがってPWD - 以前の作業ディレクトリ)を含むすべてのファイルとフォルダが表示されます。

*演算子と一緒に使用すると便利な機能があります。つまり、ls -d */現在の作業ディレクトリのディレクトリのみが表示されます。

フォーカスを回すシンボリックリンク定義の一部ls -d ~(チルダ拡張)を使用している場合は、現在のHOMEディレクトリへのパスが印刷されます。その後、これはOSによって異なるアプリケーションで使用でき、いくつかの実際の用途があります。ステートメントをさらに変更したり、ls -d ~your-usernameそのユーザーにHOMEパスを提供したりできます。別の例は、Apacheサーバー環境で見ることができます。ユーザー名は、ホスティングスペース(HOMEディレクトリとは対照的)へのパスを同様に表示するために使用されます。ls -d ~another-usernamels -d ~root

これに使用できるさまざまな機能がありますが、この演算子の重要な機能は上記で説明されています。簡単に言えば、-dはディレクトリ/パス情報を表示するように特別に設計された演算子です。詳しく調べたい場合は、ls関数(一部の-d関数を含む)を使用する良いコードジェネレータがあります。LSコードジェネレータ

答え2

lsオプションや何もせずに独自に「現在のディレクトリを一覧表示」します。デフォルトでは、「ディレクトリのリスト」はその中に含まれるファイルを表します。

指定されたディレクトリ内のファイルを一覧表示するのではなく、このフラグを変更すると、-dディレクトリ自体に関する情報が一覧表示されます。lsあなたが間違って考えているように、「現在のディレクトリ内のディレクトリ」を参照していません。これは単に「現在のディレクトリ」を表します。

だから。ls -d.

答え3

用語はわかりませんが、ls -dは次の内容に関する情報のみをリストします。つまり、ディレクトリリストを拡張しません。

ls -ld /usr/bin

これにより、/usr/bin自体の出力が1行だけ提供されます。

そして

ls -ld *

pwdの各ファイルまたはディレクトリに関する情報のみが提供されますが、その内容を一覧表示するためにディレクトリは拡張されません。

すでに述べたように、findを使用してディレクトリを一覧表示し、必要に応じてls -dを引き続き使用できます。

find /usr/bin -type d -exec ls -ld {} \;

不明な場合に備えて、/usr/binの下のすべてのディレクトリを見つけます。

答え4

ls -dls -d .コマンドを実行する前と同様に、 lsbashシェルはすべてのワイルドカード文字を拡張します。この-dオプションは、引数lsがディレクトリであるかファイルであるかに関係なく、その内容ではなく渡された引数に関する情報のみを一覧表示するように指示します。

ls .*さらに説明するには、例を見てください。.プレフィックスが付いたすべてのファイルとディレクトリが一覧表示されると予想されます。ただし、bashがワイルドカードを拡張すると、andも*含まれます...コマンドの出力を調べて、bash拡張の出力を確認できますecho .*ls .*bash拡張*(および含む).の後に受け取った各引数について、引数がディレクトリの..場合は内容がリストされます。結果は期待したものとは異なる出力です。

ls -d .*逆に使用する場合、「-d」オプションはディレクトリであっても、その内容ではなく引数の詳細のみをリストするように指示します。今予想される結果が出るでしょう。

関連情報