lsコマンドとは
今いるディレクトリ内のファイル・フォルダをリスト表示するコマンド。Windowsのコマンドプロンプトを開いているときにも打ち込んでしまって
'ls' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と出てきて画面を割ってしまう人が大勢いる。
概要
lsのオプションを忘れてしまって調べることが何回か続いたので、メモを書いた。網羅しているわけではなく、自分が使うものだけをメモ的にまとめている。今後よく使うコマンドが増えたら追記していくかもしれない。
オプション
1文字のオプションは一つのハイフンで一気に表すことができる。例えば、ls -a
とls -l
を同時にやりたかったらls -a -l
でもいいけど、ls -al
で同じことができる。
-a
ls -a
は"."から始まるドットファイルも含めてリスト表示させる。
Ubuntuを使ったときにla
というコマンドがls -a
と同じ意味として通ったことがあり、非常に便利だった。.bash_profileのような、シェルの読み込み時に実行される設定ファイルに次のエイリアスを追記しておくとla
がどこでも使える。
alias la='ls -a'
-l
-lオプションは、ファイルの情報を表示する。エイリアスでll='ls -l'
と設定すると便利。
例(ファイルの場合)
-rw-r--r-- 1 seal-qiita naist-student 8 Jun 7 01:22 sample.txt
それぞれの項の見方は、
タイプ/所有者権限/グループのユーザーの権限/外部ユーザーの権限,
ハードリンク数,
所有者名,
グループ名,
ファイルサイズ(B),
最終更新時間の月
最終更新時間の日,
最終更新時間の時間,
ファイル名
最初の10文字の羅列は、「ファイルタイプはファイル(-)、自身の権限は読み書き可能で実行不可(rw-)、同一グループのユーザーは読み取り専用(r--)、外部ユーザーは読み取り専用(r--)」を意味する。「実行不可」はバイナリファイル(**.exeやa.outなど)に適用されるらしく、pyファイルなどの権限をrw-にしても実行はできる(参考)。
次の数字は「ハードリンクの数が1つ」を示す。ハードリンクとはそのファイルにアクセスできる名前の数のこと。ファイルの場合は特に設定しなければ1である(設定するにはln
コマンドを使う)。
例(ディレクトリの場合)
drwxr-xr-x 3 yuki-yos is-student 32 Oct 5 15:21 sample_dir
それぞれの項の見方は、
タイプ/所有者権限/グループのユーザーの権限/外部ユーザーの権限,
ハードリンク数=サブディレクトリの個数+2,
所有者名,
グループ名,
中身を含めないディレクトリ自体のサイズ(B),
最終更新時間の月
最終更新時間の日,
最終更新時間の時間,
ファイル名
最初の10文字の羅列は、「ファイルタイプはディレクトリ(d)、自身の権限は読み書き可能で移動可能(rwx)、同一グループのユーザーは読み取りと移動可能(r-x)、外部ユーザーは読み取りと移動可能(r-x)」を意味する。ディレクトリのパーミッション"x"はその中に入れるかを示す。
ハードリンク数が3のディレクトリは、サブディレクトリを1つだけ持つことを意味する。この3つのハードリンクとは、親ディレクトリ(lsを使った時点での現在地)にあるsample_dirへのリンク、saple_dir内にある.
、sample_dirのサブディレクトリ内の..
である。自分へのリンクと.
は必ず存在するため、ディレクトリのハードリンクとは、「サブディレクトリの個数に2を足したもの」として定義されることになる。
ハードリンクの個数が分かってもファイル数は分からないので、この表記方法はあまり嬉しくない。そもそも、ハードリンクの数が分かって嬉しかったことがないのだが、どういう意図で表記されているのだろうか?
-h
-l
で表示したファイルサイズを、バイト単位でなく最も適切な単位で表示してくれるオプション。例えば、10000バイトなら10KBと自動で変換してくれる。
まとめ
今のところは、-a
、-l
、-h
の3オプションを記載している。-l
の表示の見方など特に忘れやすいので役に立つと嬉しい。