Bash
command
初心者

アプリケーション開発する上でLinuxコマンド初心者が覚えておくべきコマンド10選くらい

はじめに

ひょんなことからこんなまとめをつくりました。

僕はzshユーザですが、大体最初bashスタートだと思うので
bashの体で書いていきます。

まず自分がよく使ってるコマンドをさっと見てみました。
(趣味嗜好がバレるので恥ずかしい...)

$ history | awk '{print $4}' | sort | uniq -c | sort -r | less
1257 emacs
1020 ll
 915 cd
 718 git
 457 ssh
 449 python
 276 rm
 261 exit
 259 open
 245 brew
 230 pyenv
 229 fg
 197 less
 171 pip
 170 curl
 146 platex
 133 mv
 114 dvipdfmx
 103 aws
 101 ping
  93 mkdir
  81 conda
  77 rails
  76 scp
  66 which
  66 vagrant
  65 npm
  63 sudo
  62 ipython
  57 jupyter
  57 dig
  47 convert
  44 rbenv
  44 history
  38 bg
  37 jobs
  34 julia
  34 cp
  32 pwd
  30 source
  30 date
  27 sqlite3
  27 ps
  25 mongod
  24 traceroute
  23 arp
  21 bundle
  ...

ふむ...といいつつ10選の内容にそんなに影響しません。

キー操作

地味に便利でよく使うショートカットキーです。

option 内容
Ctrl-f カーソルを左に進める
Ctrl-b カーソルを右に進める
Ctrl-p 前回のコマンドに遡る
Ctrl-n 次のコマンドをたどる
Ctrl-a カーソルを先頭に移動
Ctrl-e カーソルを末尾に移動
Ctrl-k カーソルより後ろの文字を削除
Ctrl-r 入力文字で過去のコマンドを検索

Ctrl-rだけ特殊ですが、
過去実行した(長い)コマンドをもっかい実行したいなーってとき
非常に便利ですね。

$ bundle exec rails server

みたいなのとか

ls

ファイルの一覧を表示する

どんなファイルが今いるディレクトリにあるか確認します。
(オプションつけてパーミッションとか更新日も確認します。)

option 内容
-l パーミッションや所有者、更新日等の情報と共に一覧を表示
-a .から始まる隠しファイルも表示
$ ls -la
total 80
drwxr-xr-x   24 phigasui  staff   816 12  2 13:37 ./
drwxr-xr-x    3 phigasui  staff   102 12  1 15:47 ../
drwx------@  19 phigasui  staff   646 11 19 00:36 Desktop/
drwx------+  11 phigasui  staff   374 11  9 00:39 Movies/
drwx------+   7 phigasui  staff   238  1 15  2016 Music/
drwx------+  16 phigasui  staff   544 11  9 00:39 Pictures/
drwxr-xr-x+   4 phigasui  staff   136 11  9  2014 Public/
drwxr-xr-x+   3 phigasui  staff   102  1 18  2012 Sites/
...

pwd

自分がいるディレクトリを確認する

$ pwd
/Users/phigasui/

cd

自分がいるディレクトリを移動する

作業しやすい、何かしら実行すべき物がある時にディレクトリを移動します。
引数に移動先のディレクトリを指定します。
引数に何もない場合はホームディレクトリに移動します。

$ cd app
$ pwd
/Users/phigasui/app
$ cd
$ pwd
/Users/phigasui

cp

ファイル(ディレクトリ)をコピーする

cp [コピーもと] [コピー先]
option 内容
-r ディレクトリごと再帰的にコピーする
$ cp -r Desktop Desktop_backup
$ ls -la
total 80
drwxr-xr-x   24 phigasui  staff   816 12  2 13:37 ./
drwxr-xr-x    3 phigasui  staff   102 12  1 15:47 ../
drwx------@  19 phigasui  staff   646 11 19 00:36 Desktop/
drwx------@  19 phigasui  staff   646 11 19 01:51 Desktop_backup/
drwx------+  11 phigasui  staff   374 11  9 00:39 Movies/
drwx------+   7 phigasui  staff   238  1 15  2016 Music/
drwx------+  16 phigasui  staff   544 11  9 00:39 Pictures/
drwxr-xr-x+   4 phigasui  staff   136 11  9  2014 Public/
drwxr-xr-x+   3 phigasui  staff   102  1 18  2012 Sites/
-rw-r--r--    1 phigasui  staff     0 12  3 01:55 test.txt
...

mv

ファイルを移動する
ファイルの名前を変更する

$ mv [移動もと] [移動先]
$ mv test.txt Desktop
$ ls -la Desktop
-rw-r--r--    1 phigasui  staff     0 12  3 01:55 test.txt

mkdir

ディレクトリを作成する

$ mkdir [ディレクトリ名]
$ mkdir Desktop/test/
$ ls -la Desktop
drwxr-xr-x   2 phigasui  staff       68 12  3 01:58 test/

ssh

リモートのサーバに接続する

$ ssh [ログインユーザ名]@[ip-address or hostname]

scp

リモートからローカルに、ローカルからリモートにファイルをコピーする
使い方は基本的にcpと同じでリモートのファイル指定方法が特殊です。

[ログインユーザ名]@[ip-address or hostname]:[ファイル名]
でファイルを指定します。

$ scp phigasui@phigasui.com:test.txt test.txt

less

ファイルの内容を表示する
コンソールを汚さず一時的な表示をすることができます。
ちょっとファイルの中身見る時に使います。

$ less Desktop/test.txt
test
test.txt (END)

みたいに表示されてqキーでexitできます。

tail

ファイルの末尾n行の表示をする
ログの最新のところを見るときとかに追加います。

$ tail -n5 log/development.log
#~~~~~~~~~~~
#~~~~~~~~~~~~~~~~~~
#~~~~~~
#~~~~~~~~~~~~~~~
#~~~~~~~~~~~~~~~~~~~~~~

find

ファイルを検索する
あのファイルどこにあるっけな?って時に名前や拡張子で探したりします。

$ find [検索対象のパス] -name [ファイル名]
$ find /var -name *.log

grep

ファイルの中から文字列を検索する

大量のログの中から目的のものを時間や、IPで探したり
あの定数どこで定義してたっけって時につかったりします。

option 内容
-r 再帰的にディレクトリを漁る
$ grep [検索文字] [ファイル名]
$ grep -r [検索文字] [検索対象パス]

| パイプ

コマンドの実行結果を次のコマンドの引数に用いる

2014年から更新されていないファイル、ディレクトリ表示

$ ls -la | grep 2014
drwxr-xr-x    4 phigasui  staff      136  5  2  2014 .gem/
drwxr-xr-x    6 phigasui  staff      204 12 17  2014 .ipython/
drwxr-xr-x+   4 phigasui  staff      136 11  9  2014 Public/

sudo

管理者権限で実行する
AmazonLinuxとかUbuntuとかでパッケージインストールの時によく使いますね

Permission deniedとでたら
とりあえず使う節はあります。(よくはない)

$ sudo yum install ~~~~

man

コマンドのマニュアルを表示

あのコマンドの引数の順番は?オプションなんだっけ?って時に見ます。

$ man [コマンド]

lessと同じくqで表示を抜けます。

おまけ

factor

素因数分解する

これは素数かな〜って数字を見かけた時に追加います。

ubuntuとかcentosとかは最初からあるけど
macはない&brewではいれられない...1

$ factor 81628731
81628731: 3 3 19 477361

参考

今回は特にどこか見ながら書いてはないのですが
コマンドでよくお世話になったのはやはり

http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230889/?rt=nocnt

itproさんな気がするのでちょっとのせる


  1. 実際はcoreutilsをインストールするとgfactorとしていれることができます。(*その他多数のコマンドも入ります)