「ls .*」が隠されたディレクトリの内容を表示するのはなぜですか?

「ls .*」が隠されたディレクトリの内容を表示するのはなぜですか?

ls .*隠しディレクトリの内容が印刷されるのはなぜですか?隠しファイルを印刷したいのですが、今はわかります。 隠しファイルのみを表示解決策ですが、ディレクトリの内容が表示される理由をまだ知りたいです。追加の入れ子になったディレクトリの内容は表示されません。

ls .*以下は私のホームディレクトリのいくつかの出力です。

.bash_history
.bash_profile
.bashrc
.coin_history
.emacs
.gitconfig
.gitignore_global
.grasp_jss

.ssh:
config          github_rsa.pub  id_rsa.pub      known_hosts.old
github_rsa      id_rsa          known_hosts     lambda.pem

.vim:
colors   ftdetect syntax

このマシンはRHELを実行しています。 Mac OSXでも同様の動作が観察されます。

ベストアンサー1

短い答え:シェル全体の拡張。

シェルは入力を受け取り、その.*部分を渡す前に拡張するので、ls基本的には次のようになります。

$ ls .bash_history .bash_profile .bashrc .coin_history .emacs ...

したがって、各項目がリストされます。ディレクトリエントリを表示すると、期待どおりにそのディレクトリの内容が一覧表示されますls。作業ディレクトリのファイル/ディレクトリのみを表示するには、-d次のオプションを使用しますls

$ ls -d .*

この-dオプションは、ls「コンテンツではないディレクトリ自体を一覧表示します」(lsマンページから取得)を指示します。

おすすめ記事