オプションが多すぎてわからないlsコマンドをよく使うパターンでまとめてみました。

 

コマンド操作とは?Web開発のコマンドラインの基本操作を解説

UNIXコマンド有効に使えてますか?

UNIXコマンドは、基本ls,cd,rm,mvなどのコマンド部分とオプション部分からなりますがネットなどで検索してもオプション個別で紹介されていてイマイチどのオプションがよく使われるのかといったことがわかりません。なので、今回はlsコマンドに絞って目的別によく使われるパターンを紹介していきます。

 

ファイルの更新順に表示 -ltr

 
ls -ltr

 

この組み合わせが自身で一番使う組み合わせです。このコマンドの組み合わせでは、 ファイルが更新順に並び一番下に最新のファイルがきます。

 

$ ls -ltr
total 80
-rw-r--r--   1 admin  staff    227 10  1 10:28 Rakefile
drwxr-xr-x  15 admin  staff    480 10  1 10:28 app
drwxr-xr-x   8 admin  staff    256 10  1 10:28 bin
-rw-r--r--   1 admin  staff    130 10  1 10:28 config.ru
drwxr-xr-x   3 admin  staff     96 10  1 10:28 vendor
drwxr-xr-x   5 admin  staff    160 10  4 11:32 public
drwxr-xr-x   4 admin  staff    128 10  4 12:20 data
drwxr-xr-x   5 admin  staff    160 10  9 14:19 lib
-rw-r--r--   1 admin  staff    949 10 10 14:02 README.md
-rw-r--r--   1 admin  staff   1043 10 24 11:47 Dockerfile
drwxr-xr-x  15 admin  staff    480 10 24 11:47 spec
drwxr-xr-x  11 admin  staff    352 11  7 15:29 log
drwxr-xr-x   7 admin  staff    224 11 12 11:03 db
-rw-r--r--   1 admin  staff   1213 11 12 11:56 Capfile
-rw-r--r--   1 admin  staff   3853 11 12 11:56 Gemfile
-rw-r--r--   1 admin  staff  14475 11 12 11:56 Gemfile.lock
drwxr-xr-x   9 admin  staff    288 11 12 18:41 tmp
drwxr-xr-x  23 admin  staff    736 11 12 20:55 config

 

それぞれのオプションの役割を説明すると-lオプションがリストの詳細表示、-tがタイムスタンプ順に並び替えて表示、-rがリストを逆順で表示。 となるので、ファイルの更新順かつ一番下に最新のファイルが表示されるようになります。

この組み合わせは便利で僕の場合lsコマンドでほとんどの場合でこれを叩きます。ほぼ手癖になっていてls単体では叩かずにほぼ必ず-ltrとセットで叩いています。 これは皆さんにもおすすめというわけではないですが、お決まりのパターンとして覚えておくと良いです。

 

隠しファイルも一緒に表示 -altr

 

上記のコマンドの組み合わせに加えて隠しファイルも一緒に表示させたい場合は、-aオプションを付加して-altrとします。

隠しファイルという言葉を聞きなれない方もいるとおもうのですが、.bash_profile, .bashrcなどのドットから始まるファイルが隠しファイルです。 デフォルトだと普通のコマンドでは隠しファイルが表示されないので意識的に隠しファイルも表示させたい場合はこのようにします。

下の例は先ほどのls -ltrの例のものと同じものですが、ドットから始まる.gitや.ruby-versionなどの隠しファイルが表示されていることがわかります。

 

$ ls -altr
total 184
-rw-r--r--   1 admin  staff     22 10  1 10:28 .rspec
-rw-r--r--   1 admin  staff      6 10  1 10:28 .ruby-version
-rw-r--r--   1 admin  staff    227 10  1 10:28 Rakefile
drwxr-xr-x  15 admin  staff    480 10  1 10:28 app
drwxr-xr-x   8 admin  staff    256 10  1 10:28 bin
-rw-r--r--   1 admin  staff    130 10  1 10:28 config.ru
drwxr-xr-x   3 admin  staff     96 10  1 10:28 vendor
drwxr-xr-x   2 admin  staff     64 10  3 23:45 .git
drwxr-xr-x   5 admin  staff    160 10  4 11:32 public
-rw-r--r--@  1 admin  staff   6148 10  4 11:32 .DS_Store
drwxr-xr-x   4 admin  staff    128 10  4 12:20 data
-rw-r--r--   1 admin  staff    925 10  9 14:19 .rubocop.yml
drwxr-xr-x   5 admin  staff    160 10  9 14:19 lib
-rw-r--r--   1 admin  staff     12 10 10 14:02 .dockerignore
-rw-r--r--   1 admin  staff    949 10 10 14:02 README.md
-rw-r--r--   1 admin  staff  16685 10 24 11:47 .rubocop_todo.yml
-rw-r--r--   1 admin  staff   1043 10 24 11:47 Dockerfile
drwxr-xr-x  15 admin  staff    480 10 24 11:47 spec
drwxr-xr-x  17 admin  staff    544 10 28 21:33 ..
-rw-r--r--   1 admin  staff   3666 11  5 18:27 .byebug_history
drwxr-xr-x  11 admin  staff    352 11  7 15:29 log
drwxr-xr-x   7 admin  staff    224 11 12 11:03 db
-rw-r--r--   1 admin  staff    559 11 12 11:56 .gitignore
-rw-r--r--   1 admin  staff   1213 11 12 11:56 Capfile
-rw-r--r--   1 admin  staff   3853 11 12 11:56 Gemfile
drwxr-xr-x  29 admin  staff    928 11 12 11:56 .
-rw-r--r--   1 admin  staff  14475 11 12 11:56 Gemfile.lock
drwxr-xr-x   9 admin  staff    288 11 12 18:41 tmp
drwxr-xr-x  23 admin  staff    736 11 12 20:55 config

 

ファイル名だけ縦に表示 | ls -1

  シェルスクリプトやワンライナーを書いているとファイル名だけ欲しいし、縦に一覧で表示してほしい!という時があるのですが、そういった場合は-1オプションを使用します。 少しわかりづらいですがl(エル)ではなく数字の1です。

これでファイルを縦に並べて表示することができます。  

$ ls -1
Capfile
Dockerfile
Gemfile
Gemfile.lock
README.md
Rakefile
app
bin
config
config.ru
data
db
lib
log
public
spec
tmp
vendor

  ls -1trとすればタイムスタンプが最新のものが一番下にくるように並べることができます。さらにtailコマンドと組み合わせることにより最新のファイル一つを取得して表示することができます。

$ ls -1tr | tail -1
config

 

再帰的にファイルを表示する -Rオプション

  -Rオプションを使用しるとディレクトリを再帰的に表示することができます。再帰的というと少し難しい気がしますが、ネストした配下のディレクトリも含めて一覧を表示する ということです。  
$ cd sample/
$ mkdir dir1
$ mkdir dir1/subdir1
$ mkdir dir1/subdir2
$ mkdir dir1/subdir3
$ touch dir1/subdir1/hoge.text
$
$ls -lR
total 0
drwxr-xr-x  5 admin  staff  160 11 13 08:22 dir1

./dir1:
total 0
drwxr-xr-x  3 admin  staff  96 11 13 08:22 subdir1
drwxr-xr-x  2 admin  staff  64 11 13 08:22 subdir2
drwxr-xr-x  2 admin  staff  64 11 13 08:22 subdir3

./dir1/subdir1:
total 0
-rw-r--r--  1 admin  staff  0 11 13 08:22 hoge.text

./dir1/subdir2:

./dir1/subdir3:

  -Rオプションを使うと例のようにパスとファイル名合わせてファイルを表示させることができます。  

シンプルなオプションなしコマンド

 

lsコマンドは何もオプションを与えないと次のように横並びで画面サイズに応じて折り返された状態でファイルが表示されます。  

$ls
Capfile		Gemfile		README.md	app		config		data		lib		public		tmp
Dockerfile	Gemfile.lock	Rakefile	bin		config.ru	db		log		spec		vendor

lsコマンド何もなしだとファイルの権限やタイムスタンプなどが表示されないので詳細情報はわかりませんが、ディレクトリ配下にファイルが多い時に使ったりします。単純に縦長にならないので-lをつけた場合より見やすくなったりします。  

まとめ

  というわけで、今回はlsコマンドを組み合わせで紹介しましたがいかがでしょうか?コマンドはそれぞれのオプションを覚えるのと合わせて頻出というか便利なオプションのパターンを使いこなせるように なる必要があります。無理して暗記する必要はないですが、必要になったら調べて繰り返し使うとこでだんだんと使いこなせるようになってくるはずです。

コマンドの組み合わせは今回紹介したもの以外にもいくらでもあるのでおいおいそちらの記事も書いていきたいと思います。