オプションが多すぎてわからないlsコマンドをよく使うパターンでまとめてみました。
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コマンドを組み合わせで紹介しましたがいかがでしょうか?コマンドはそれぞれのオプションを覚えるのと合わせて頻出というか便利なオプションのパターンを使いこなせるように なる必要があります。無理して暗記する必要はないですが、必要になったら調べて繰り返し使うとこでだんだんと使いこなせるようになってくるはずです。コマンドの組み合わせは今回紹介したもの以外にもいくらでもあるのでおいおいそちらの記事も書いていきたいと思います。