「ls」に「.」が表示されるのはなぜですか?

「ls」に「.」が表示されるのはなぜですか?

質問を読んだ後「ls -a」と入力するときに「.」とはどういう意味ですか?そして「..」か。、同様のものがあります。

なぜ表示されるべきですか.?私は、cd .動作しないディレクトリがありますか?ユーザーが毎回この行を見るのはどのように役立ちますか?

答え1

ls -a表示される理由はユーティリティ.には関係なく、..Unix(およびLinux)ファイルシステムに関連するすべてです。

すべてがファイルです。

ディレクトリは、実際にはファイルのリストを含むファイルです。特定のディレクトリの「内部」はユーザーの観点であるため、ファイルシステムの観点ではありませんが、2つの特殊ファイルです。

  • 最初のものと呼ばれ、.現在の作業ディレクトリへの参照です。人々は、.dllを介して現在のディレクトリからコマンドを実行するときにほぼ毎日それを使用します./scriptname
  • 2番目は..CWD親ディレクトリへの参照と呼ばれます。同様に...ディレクトリを親ディレクトリに変更したい人は毎日使用しますcd ..

システムコールはgetdents()システム側の主なツールでls、単にディレクトリ内のすべてのファイルを一覧表示します。 (覚えておいてください:すべてがファイルです。デバイス、ディレクトリ、ソケットなどがすべて表示されます。)

実用性の観点から、lsこのコマンドの作成者は、特定の情報や情報の種類をフィルタリングするためのさまざまなオプションとオプションの組み合わせを提供します。上記の@Gillesがコメントしたように、およびを除くすべてのls -A情報ポイントファイルを表示します。これらのオプションはすべて後処理オプションと見なすことができます。見つかった内容ではなく表示される内容に影響します。...lsls

.デフォルトでは、およびを明示的にリストする理由はありません..。なぜなら、私たち全員が彼らがどこにいるのか、何のためのものなのか、いつ使うべきかを知っているからです。

奇妙な権限の問題を解決するときにこれを見るためのいくつかのオプションがあれば、それは確かに役立ちます。

確認するマンページgetdents()1. 動作方法を詳しく説明し、 を使用してコンパイルできるサンプルプログラムのソースコードが含まれていますgcc -Wall。このソースコードには、ディレクトリ内のすべてのファイルがリストされています。


1. 少なくともUbuntuのマンページにはgetdents()サンプルコードがあるようです。

答え2

ls通常、合計は.表示されません..。デフォルトではlsすべて隠す名前が.(ドットファイル)で始まるファイルls -aすべてを表示するように要求したため表示されます。一部のバージョンにはls少し異なるオプションがあり、すべてのls -Aドットファイルを表示しますが、.または..

.ls -laたとえば、現在のディレクトリとその親ディレクトリ、ディレクトリ内のファイルの権限、および所有権を報告するなど、単に名前以上の内容を一覧表示する場合は、表示が便利です。

関連情報