走ればls -a
user@users-MacBook-Pro:~$ ls -a
. ..
私は(現在のディレクトリと親ディレクトリ?).
を取得します。..
彼らの外観の背後には何らかの理由がありますかls -a
?彼らは何か面白いことをしましたか?
答え1
なぜなら、-a
すべてのファイルを表示するという意味だからです。と組み合わせて使用すると便利です-l
。使用していないときに役に立たないファイルが表示されるのは一貫性があるため、-l
Unixは何が良いのか二重推測しようとしないからです。
これらの2つ(、および)を除外するオプション-A
(少なくともGNUの場合)があります。ls
..
.
興味深いことに、Unixでファイルを隠そうとするアイデアは、ls
これら2つのファイルを隠そうとしたバグから始まった。コードを単純化するために、元の実装は最初の文字のみをチェックします。人々はそれをファイルを隠すために使用し、その後機能し、-a
隠されたファイルを表示するオプションが追加されました。後で誰かがあなたのようになぜそうなのか疑問に .
思い、..
私たちは彼らがそこにいることを知っていました。この-A
オプションが誕生しました。
注:Unixのファイルは思ったよりはるかに緩い意味を持ちます。
ファイルの基本{通常のファイル、ディレクトリ、名前付きパイプ、Unixソケット、シンボリックリンク、デバイス}。
答え2
彼らがそこにいるということはどういう意味ですか?
所有権と権限を表示します。これは通常、2人のユーザーがいて、そのうちの1人が期待どおりに他の人のファイルを見ることができないと言うときに確認する必要がある最も重要なことです。
答え3
図からわかるようにhttps://ss64.com/bash/ls.html-a
パラメータを追加すると、;で始まるls
項目を含むすべての項目が取得されます.
。隠しアイテムと見なされ、単純では使用できませんls
。
答え4
現れる理由がありますか
ls -a
?
私はこれが他の多くのことと同様に歴史の偶然であると確信しています。
によるとストーリーRob Pikeによって作成された「隠し」ファイル(ドットファイル)は偶然に生成されます。
昔、Unixファイルシステムの設計が定式化されたときの項目
.
と..
。わかりませんが、..
ファイルシステムが階層化されたときにバージョン2を再構築していたようです(最初は非常に異なる構造を持っていました)。ただし、と入力するとls
これらのファイルが表示されるため、KenまたはDennisはプログラムに簡単なテストを追加します。当時はアセンブラで書かれていましたが、問題のコードは次のとおりです。if (name[0] == '.') continue;
文は予想より少し短いです。
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;
しかし、簡単です。
結果は2つあります。
[...]2番目に悪いのは、「隠し」ファイルまたは「ドット」ファイルを生成するという考えです。その結果、より怠惰なプログラマーが誰もがホームディレクトリにファイルを置き始めました。
ls -a
これに基づいて、怠惰なプログラマによって作成されたドットファイルを表示するために後続の追加が行われたと推測することは無理ではないようです。簡単な実装は、上記のテストを順番に無効にして、再生成され表示されるようにすること.
です..
。
歴史が何であれ、それは彼らがいることを示しています。基準今:
-a
名前が <ピリオド> ( '.' ) で始まるエントリを含む、すべてのディレクトリエントリを記録します。
しかし、ls -A
もう少し合理的な措置を講じる必要があります。その項目がどれだけ更新されたかわかりません。
-A
名前が <ピリオド> ( '.' ) で始まるエントリを含むすべてのディレクトリエントリを作成します。ただし、点および点-点項目がある場合は除外します。
彼らは何か面白いことをしましたか?
一般的な方法でリストするのはls
それほど興味深いものではありません。
ただし、たとえば.
in/path/subdir
で与えられたinodeを見つけることは、subdir
inのinodeを見つけるのと同じです/path
。ディレクトリ内のファイルにアクセスできるディレクトリ制御の所有権と権限、それに応じて取得できる情報.
。ただし、ディレクトリ自体の属性が必要な場合は、いつでもそれを行うことls -ld .
ができます。ls -ld /path/subdir