chmod -R 421 .gimp
で、g
のgimp
の直前にある期間とはどういう意味ですか? *
ワイルドカードに似ていますか?
その状況でのドットはファイル名の一部であり、Linux/Unixコンテキストではファイルまたはディレクトリが非表示であることを意味します。押す CTRL+H。
また、ターミナルでls
のみを使用する場合、-a
または-A
フラグを使用しない限り(つまり、ls -a
またはls -A
またはls --all
またはls --almost-all
)。
ただし、ドット(.
)は異なるコンテキストで異なる意味を持ちます。
./file
)では、現在のディレクトリを表しますが、../file
は親ディレクトリのfile
を指します。.
もあります ソース(実行) bashスクリプトファイル。したがって、. ./file
(スペースに注意)は、file
という名前のスクリプトを現在のディレクトリに配置します。あなたの例の.gimp
はファイル名、「。」ですは最初の文字です。
重要なのは、通常のls
(ls = list files)が「。」のファイルを表示しないことです。最初の文字として、ls -a(またはlist files --all)でのみリストします
何もありません。ファイル名の一部です。
.gimp
というディレクトリがあるようです。
期間。 (笑)
それに関する他の議論は、人々が物事のために特定のファイル名を選ぶ理由についての質問に属します。
Linux自体に関する限り、ファイル名またはディレクトリ名の先頭のドットは特に意味を持ちません。ただし、特定のユーティリティ(ls
やNautilusファイルマネージャーなど)は、そのようなファイル名を「非表示」と見なします。つまり、出力でそれらを無視し、特定のオプションを指定した場合にのみ表示します。
実際には、これは技術的にはバグと見なすことができるものに由来します。 Rob Pike 、UNIXチームで働いていた元の人の1人が再集計します( source ):
昔、Unixファイルシステムの設計が練られていたため、エントリーがありました。および..が表示され、ナビゲーションが容易になりました。確信はありませんが、ファイルシステムが階層構造になったバージョン2の書き換え中に入ったと思います(初期の段階では非常に異なる構造でした)。ただし、lsと入力すると、これらのファイルが表示されたため、KenまたはDennisがプログラムに簡単なテストを追加しました。それはアセンブラーにありましたが、問題のコードは次のようなものと同等でした:
if (name[0] == '.') continue;
このステートメントは、本来あるべきものよりも少し短いものでした。
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;
しかし、ちょっと、それは簡単でした。
二つのことが起こりました。
まず、悪い先例が設定されました。他の多くの怠zyなプログラマーは、同じ単純化を行うことでバグを導入しました。ピリオドで始まる実際のファイルは、カウントする必要があるときにしばしばスキップされます。
第二に、そしてさらに悪いことに、「隠された」または「ドット」ファイルのアイデアが作成されました。その結果、より怠laなプログラマーが全員のホームディレクトリにファイルをドロップし始めました。これを入力するために使用しているマシンにはそれほど多くのものはインストールされていませんが、ホームディレクトリには約100個のドットファイルがあり、それらのほとんどが何であるか、またはそれらがまだ必要かどうかもわかりません。ホームディレクトリを通過するすべてのファイル名の評価は、この蓄積されたスラッジによって遅くなります。
隠しファイルの概念は意図しない結果であると確信しています。それは間違いでした。
今日では、この種のコンテンツは、内容がまったく隠されていない場合でも、それらを「非表示」と呼ぶ慣習になりました。実際の隠しファイル、または匿名ファイル/ 匿名iノード は、ファイルを開いてファイル記述子を開いたまま、ディレクトリからリンク解除することで実装されます。これにより、データ自体はプログラムのみがアクセスできるようになります。子プロセスはファイル記述子を継承するため、そのファイルとその子プロセス(ファイルのリンク解除後に分岐することが望ましい)を保持しています。実際、 これがbashがhere-docsを実装する方法です 。
非常に異なるストーリーは、ファイル名自体がドット.
または..
であり、実際にはそれらの背後に少し歴史があるため、読むことをお勧めします なぜlsコマンドの現在のディレクトリですかそれ自体にリンクされていると識別されましたか?
ファイル名の先頭にあるドットは、一般的なファイルマネージャーおよび一般的なシェルプログラムでファイルを隠します。
理由は歴史的です。ls
は、ピリオドで始まるすべてを非表示にして特別なディレクトリ.
および..
を非表示にしました。次に、ピリオドで始まるファイル名を使用してファイルを非表示にしました。そのため、たとえばls出力では不要な構成ファイルを非表示にするために、ls -a
でのみリストされます。
したがって、chmod -R 421 .gimp
のドットはコマンドの修飾子ではなく、実際のディレクトリ名の一部です。