Linuxで「ファイルがない」と思ったら、実は隠しファイルとして存在していた——という経験は運用現場でよくあります。lsだけでは、名前が.(ドット)で始まるファイルは表示されません。まず結論から:ls -aまたはls -laを使います。
隠しファイルを含めてすべて表示する
Linuxでは、ファイル名の先頭が.のファイルは通常のlsで表示されません。これはバグではなく、設定ファイルや履歴ファイルなど「普段は見せなくてよい」ものを隠すUNIXの慣習です。.bashrcや.sshディレクトリが代表例です。
-aオプションを付けると、ドットファイルを含むすべてのファイルが表示されます。
# カレントディレクトリ内をすべて表示
ls -a
# 対象ディレクトリを指定する場合
ls -a /home/username/
出力例:
. .. .bash_history .bash_logout .bashrc .profile .ssh Documents Downloads
.(カレントディレクトリ自身)と..(親ディレクトリ)も表示されます。これらを除きたい場合は-A(大文字)を使います。
# . と .. を除いた隠しファイルのみ表示
ls -A
詳細情報つきで確認する(実務の基本形)
ファイル名だけでなく、パーミッション・所有者・更新日時も同時に確認するのが実務の基本です。-lオプションと-aを組み合わせます。
# 詳細情報つきで隠しファイルも表示(最もよく使う形)
ls -la
# . と .. を除く場合
ls -lA
出力例:
drwx------ 2 user user 4096 7月 22 10:30 .ssh
-rw-r--r-- 1 user user 220 7月 22 08:15 .bash_logout
-rw-r--r-- 1 user user 3526 7月 22 08:15 .bashrc
-rw-r--r-- 1 user user 807 7月 22 08:15 .profile
drwxr-xr-x 3 user user 4096 7月 22 11:00 Documents
左端のdはディレクトリ、-は通常ファイルを示します。.sshディレクトリがdrwx------(所有者のみアクセス可)になっているかどうかは、SSH接続トラブルの初動確認で必ず見るポイントです。
表示をカスタマイズして絞り込む
オプションを組み合わせることで、目的に応じた一覧を得られます。
ファイルサイズを人が読みやすい単位で表示する
# -h でKB/MB/GB単位表示
ls -lAh /var/log/
更新日時の新しい順に並べる
# -t で更新日時降順ソート(最近変わったものが先頭に来る)
ls -lAt ~/.config/
「どの設定ファイルが最後に変わったか」を追う調査で役立ちます。
ファイルサイズの大きい順に並べる
# -S でサイズ降順ソート
ls -lASh /var/log/
サブディレクトリも含めて全探索する
配下のサブディレクトリも含めてすべてのファイルを洗い出したい場合は、findコマンドが確実です。ls -Rでも再帰表示はできますが、出力が見づらく、後処理との連携もしにくいため、findの使用を推奨します。
# カレントディレクトリ以下のファイルをすべて表示(隠しファイル含む)
find . -type f
# 1階層だけ(ls -a相当の深さ)
find . -maxdepth 1 -type f
# 隠しファイル(ドットファイル)のみ表示
find . -maxdepth 1 -name ".*" -type f
ファイル数をカウントするときはwc -lと組み合わせます。
# ディレクトリ内のファイル総数を数える(隠しファイル含む)
find . -maxdepth 1 -type f | wc -l
実務での活用シーン
SSH接続トラブルの初動調査
「鍵を置いたはずなのに接続できない」という場面では、まず~/.ssh/の中身とパーミッションを確認します。
ls -la ~/.ssh/
authorized_keysが存在するか、パーミッションが600(-rw-------)になっているかを目視します。.ssh/ディレクトリ自体が700(drwx------)でなければSSHデーモンが鍵を読まないディストリビューションもあります。
ホームディレクトリの設定ファイルをまとめて確認する
# ホームディレクトリの隠しファイルを更新日時順に表示
ls -lAt ~ | head -20
ある運用現場では、ユーザー環境のトラブル調査の際にこのコマンドで.bashrcが最近書き換えられていることを素早く特定した事例があります。
よくある落とし穴と注意点
権限エラーが出る場合
ls: cannot open directory '/root/': Permission denied
対象ディレクトリの実行(x)権限がないと表示できません。必要であればsudo ls -la /root/で確認します。一般ユーザーでsudoを使う場合、sudoのポリシーを事前に確認してください。
スクリプト内ではエイリアスに注意
多くのディストリビューションではlsがls --color=autoのエイリアスに設定されています。シェルスクリプト内でlsの出力をパースする場合は、エスケープシーケンスが混入することがあります。スクリプト内ではパスを明示するか、バックスラッシュでエイリアスを無効化してください。
# エイリアスを無視して実行
\ls -la
# または絶対パスで指定
/bin/ls -la
-aと-Aの使い分け
-aは.と..を含み、-Aは除きます。スクリプトでファイル数をカウントしたり、ループ処理で全ファイルを処理したりする場合は-Aの方が意図した結果になります。対話的な確認作業では-aでも問題ありません。
隠しディレクトリの中身は別途確認が必要
ls -aはカレントディレクトリの直下しか表示しません。.ssh/や.config/など隠しディレクトリの中身を確認するには、明示的にそのディレクトリを指定する必要があります。
# 隠しディレクトリの中身を確認する
ls -la ~/.ssh/
ls -la ~/.config/
「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。
ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。
>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)
※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。
