Linuxコマンド一覧表


はじめに

Linuxで使うコマンドやショートカットキーについてまとめました。
Webエンジニアとして実務に携わっているとLinuxの重要性に気づかされます。

初心者向けに分かりやすくを意識して書いています。

コマンド入力を楽にするショートカットキー

ショートカットキーを覚えておくと手入力の手間を省け、作業効率アップにも繋がります。

以下に主に使うショートカットキーの一覧をまとめています。

ショートカットキー 説明
Tabキー コマンドやパスの保管をする
Ctrl+A 行の先頭にカーソル移動
Ctrl+E 行の最後にカーソル移動
Ctrl+F 1文字右方向へ移動(矢印キー→と同じ)
Ctrl+B 1文字左方向へ移動(矢印キー←と同じ)
Ctrl+H カーソルの左を1文字削除する
Ctrl+D カーソル部分を1文字削除する
Ctrl+W カーソル位置の単語を削除(カーソルの前部分(単語の途中で押すとその前半部分だけ削除される)
Ctrl+U カーソルの位置から行頭まで削除
Ctrl+K カーソルの位置から行末まで削除
Ctrl+Y 直前に削除した文字列を貼り付け
Ctrl+C 実行中のコマンドを強制終了
Ctrl+L 画面をクリアにする
Ctrl+S コマンド入力ができないように画面をロック
Ctrl+Q コマンド入力ができるように画面のロックを解除
↑, ↓, Ctrl+R コマンド履歴の参照

Linuxコマンドについて

基本コマンド

Linuxコマンド 説明 オプション
ls ファイルやディレクトリの一覧を表示する -a:隠しファイルも含めてすべて表示
-t:最終更新時間によってソートをして表示する
-l:ファイルの詳細情報を表示する
-r:逆順にソートをして表示する
-F:ファイルを種別して表示する
pwd 今いるディレクトリをを確認する際に使用する
cd カレントディレクトリの移動・変更
mkdir フォルダを作成する -p:必要に応じて親ディレクトリも作成
rmdir 空のディレクトリを削除する -p:指定した階層までのディレクトリを一括で削除する。ただし空の場合のみ
touch 空のファイルを作成する -t:[[CC]YY]MMDDhhmm[.ss]形式で指定した日時に変更
mv ファイルの移動、ファイル名の変更を行う -i:ファイルを上書きする前に確認する
-f:強制的に処理を実行する
rm ファイル・ディレクトリを削除する -r: ディレクトリの中のファイルやディレクトリをまとめて削除する
-i:ファイルを削除する前に一度確認する
-f:強制的に処理を実行する
cp ファイルをコピーする -i:コピーする前に確認する
-r:ディレクトリをコピーする
-p:ファイルの所有者・属性・更新日時などの情報を保持したまま元ファイルの情報を保存する
cat ファイルの中身を表示する -n:行番号を追加して表示する
less 長いファイルの中身をスクロール表示する
more ファイルをページ単位で表示する
tail テキストファイルまたはパイプでのテキスト入力の最後のn行を抜き出す -n:末尾から指定した行を表示する
find ファイルを検索する -name:ファイル名を指定して検索
-typeタイプ:(d: ディレクトリ、f: ファイル、l: シンボリックリンク)
ln リンクを張る(別名をつける) -s:シンボルリンクを作成する(オプションを付けないとハードリンクになる)
grep 指定した文字列がテキスト内に存在した場合その行を抽出する -e:文字列を検索パターンとして扱う
-i:検索パターンと入力ファイルの双方で英大文字と小文字の区別を行わない
-v:検索パターンとマッチしなかった行を選択する
chmod ファイルやフォルダのアクセス権限を変更する -R:ディレクトリ内の複数のファイルも変更対象とする
chown ファイルやフォルダのオーナーやグループを変更する -R:ディレクトリ内の複数のファイルも変更対象とする
sudo スーパーユーザーで権限を実行する -u:指定したユーザーでコマンドを実行する
diff ファイルとファイルの内容の違いを表示する
history コマンドの履歴を表示する
kill ジョブやプロセスを終了させるコマンド
ps 実行中のプロセスを表示するコマンド -A:全プロセスを表示する
-e:実行しているコマンド名と環境変数を表示する
-l:プロセスの状態なども表示する
man コマンドのマニュアルを表示する
scp リモートマシンとローカルマシン、あるいはリモートマシン同士でファイルをコピーする際に使用するLinuxのコマンド -i:ssh接続に使用する鍵ファイルを指定する
-p:コピー元のタイムスタンプやパーミッションを保持する
-r:ディレクトリごと再帰的にコピーする

lsコマンド

# ls [オプション][ファイル]

# ls: 現在のフォルダにあるファイルやディレクトリを表示
$ ls

test1 test1.txt test2.txt

# ls -al: aとlを組み合わせることで隠しファイルとファイルの詳細情報を両方表示する。
$ la -la

total 0
drwxr-xr-x   5 user  staff   160 11 27 23:30 .
drwxr-xr-x+ 94 user  staff  3008 11 25 22:43 ..
drwxr-x--x   3 user  staff    96 11 25 21:55 test1
-rw-r--r--   1 user  staff     0 11 27 23:28 text1.txt
-rw-r--r--   1 user  staff     0 11 27 23:28 text2.txt

# ls *.txt: 拡張子がtxtのファイルの一覧を表示する
$ ls *.txt

text1.txt   text2.txt

# ls ???.txt txtで終わり、5文字で始まるファイルを表示する
$ ls ?????.txt

pwdコマンド

# 現在どの位置にディレクトリがいるかを表示する
$ pwd
#/Users/ユーザー名/work

mkdirコマンド

# mkdir ディレクトリ名

# test1ディレクトリの作成を行う
$ mkdir test1

# 指定されたディレクトリの上位ディレクトリも作成する
# test2/test1/test3ディレクトリの作成を行う
$ mkdir -p test2/test1/test3 

rmdirコマンド

# rmdir ディレクトリ名
# 空であるtest1ディレクトリを削除する
$ rmdir test1

# 空であるtest2/test1/test3ディレクトリを一括で削除する
$ rmdir -p $ rmdir -p test2/test1/test3

touchコマンド

# touch オプション ファイル名
# test1.txtの作成を行う
$ touch test1.txt

mvコマンド

# mv 移動元ファイル(移動元ディレクトリ) 移動先ファイル(移動先ディレクトリ)

# ディレクトリを別ディレクトリに移動する
# test1の中にtestディレクトリが移動する
$ mv test test1

# ファイルを別のディレクトリに移動する
# text2.txtがtest1ディレクトリに移動する
$ mv text2.txt test1

# ファイル名の変更
# text1.txtがファイル名でtext5.txtが存在しない場合、ファイル名がtext5.txtに変更される
$ mv text1.txt text5.txt

# ディレクトリ名の変更
# test3が存在しない場合ディレクトリ名がtest1からtest3に変更される
$ mv test1 test3

rmコマンド

# rm [オプション] ファイル名 

#text2.txtを削除する
$ rm text2.txt

#test3ディレクトリとtest3ディレクトリの中の、ファイルやディレクトリも削除される
$ rm -r test3

cpコマンド

# cp [オプション] コピー元 コピー先

# cp ファイルをコピーする
$ cp text1.txt text3.txt

# lsで確認するとtext1.txtをコピーしたtext3.txtが作成される
text1.txt   text2.txt   text3.txt

# ディレクトリをコピーする
$ mkdir test
$ cp -r test test1

test        text1.txt   text3.txt
test1       text2.txt

catコマンド

# cat [オプション] ファイル名

# text3.txtの中身を表示する
$ cat text3.txt

# 行番号付与してtext3.txtの中身を表示する
$ cat -n text3.txt

 1  aaaaa
 2  aass
 3  ssss
 4  ssss

moreコマンド

# more ファイル名

# 行数が多い場合に、ページャを使って画面に表示する
$ more docker-compose.yml

# スペース: 次のページに進む
# b: 前の一画面に戻る
# f: 次の一画面に進む
# /単語: 単語を検索する。nキーで検索結果へジャンプする。
# q: ページャコマンドを終了する

lessコマンド

# less ファイル名

# 行数が多い場合に、ページャを使って画面に表示する
$ more docker-compose.yml

# スペース: 次のページに進む
# b: 前の一画面に戻る
# f: 次の一画面に進む
# ↑: 前の次に進む
# ↓: 次の次に進む
# /単語: 単語を検索する。nキーで検索結果へジャンプする。
# q: ページャコマンドを終了する

tailコマンド

# tail オプション ファイル名

# text3.txtファイルの末尾10行を表示する
$ tail text3.txt

findコマンド

# find パス -name ファイル名

# /Users/ユーザ名/work にあるtext3.txtを探す。
$ find /Users/ユーザ名/work -name text3.txt

# ディレクトリを検索する場合
# /Users/ユーザ名/work にあるディレクトリを探す。
$ find /Users/ユーザ名/work -type d

# ファイルを検索する場合
# /Users/ユーザ名/work にあるファイルを探す。
$ find /Users/ユーザ名/work -type f

chmodコマンド

# ファイルのアクセス権を変更する。
$ chmod モード[,モード] ファイルまたはディレクトリ
$ chmod 8進数表記のモード ファイルまたはディレクトリ

# test1ディレクトリに書き込み権限を追加
$ chmod g+w test1

# test1ディレクトリ内のユーザから読み込み権限を除去して、書き込み権限を追加
$ chmod u-r,o+w test1

chownコマンド

# ファイルの所有者を変更する。ルートとグループを変更するには、rootユーザである必要がある。
$ chown ユーザ[.グループ] ファイルまたはディレクトリ

# text3.txtの所有者をuser3に変更する
$ chown user3 text3.txt

# test1ディレクトリ内の所有者をuser4に変更する
$ chown -R user4 test1

grepコマンド

grepコマンドの正規表現

記号 説明
^ 行頭を表す。
$ 行末を表す。
. 任意の一字を表す。
* 直前文字の0回以上の繰り返しを表す。
[...] ...の中の任意の1字を表す。
[^...] ...の中の文字が含まれないことを表す。
¥ 正規表現の記号をエスケープする。
b$ bで終わる行。
a.b aとbの間に1文字入っている。
[ab]ab aもしくはbに続く(aab, bab)
[^ab]ab aもしくはbで始まらないでabが続くもの(xab,zab等)
# grep [オプション] 検索条件 [指定ファイル]

# text3.txtの中にある「aaa」を検索する
$ grep aaa text3.txt

sudoコマンド

# スーパーユーザ(root)権限でコマンドを実行する
# sudo cat 

# text3.txtの中身をrootユーザでみる
$ sudo cat text3.txt

# text3.txtの中身をuser1でみる
$ sudo -u user1 cat text3.txt

diffコマンド

# diff オプション ファイル名 ファイル名

# text3.txtとtext4.txt ファイルの差分を表示する
$ diff text3.txt text4.txt 

manコマンド

# man コマンド名

#lsコマンドのマニュアルを表示する
$ man ls

scpコマンド

# リモートマシンとローカルマシン、あるいはリモートマシン同士でファイルをコピーする際に使用する
# scp [オプション] コピー元パス 保存先パス

#リモートのファイル(test.txt)をローカルのカレントディレクトリへコピー
$ scp [email protected]:~/test.txt ./

#ローカルのカレントディレクトリのファイル(test.txt)をリモートのホームディレクトリ直下へコピー
$ scp test.txt [email protected]:~/

正規表現とパイプについて

今までは、さまざまなコマンドを利用してきましたが、Linuxには「1つの入り口と2つの出入り口があります。

標準入出力の項目 説明
標準入力 プログラムの標準入力でプログラムに入ってくるデータのことを示す。
標準出力 プログラムの標準出力を行う。
標準エラー出力 プログラムのエラーメッセージを出力する。

リダイレクト

標準出力された文字をファイルに書き込むことができる。

#書き込みたいコマンド名 > ファイル名

# lsの出力結果をtest2.txtに書き込む
$ ls > test2.txt

パイプ

コマンドをつなぐ役割を持っている。

# 実行例: /Users/ユーザ名/workの一覧を表示しつつ、lessコマンドを実行する
$ ls -l /Users/ユーザ名/work | less

viによる操作方法

viとはテキストを編集するためのコマンドやソフトのことで、Linuxでファイルを編集したり、中身を確認したりする際によく使われる。

ファイルを開く場合

# vi ファイル名

# text1.txtファイルを開く
$ vi text1.txt

ファイルを閉じる場合

# :qコマンドを実行する

ファイルの中身を編集して保存する場合

# :wコマンドを実行する

ファイルを保存して終了する場合

# :wqコマンドを実行する

ファイルを保存せずに終了する場合

# :qコマンドの後に!をつけて実行する
:q!

ファイルに内容を書き込みたい場合

# インサートモード(i)を押す

ファイル編集の際に使用できる便利なコマンド表

コマンド 内容
x 1文字削除
dd 1行削除
yy 1行コピー
nyy n行コピー
p カーソルの文字の次または次の行にペースト
P カーソルの文字の前または前の行にペースト
u カット、ペーストを一回取り消し

ファイル内検索と置換

コマンド 内容
/検索文字列 文字列の検索
n 下方向へ再検索
N 上方向へ再検索
:対象の行 s/検索文字列/置換文字列/オプション 文字列を置換する

ユーザー管理

コマンド 説明
useradd 新規ユーザの作成
usermod ユーザアカウントの変更
userdel ユーザの削除を行う
groupadd グループの作成
groupmod グループの登録情報の変更
groupdel グループを削除する
passwd ユーザのパスワード登録と変更ユーザのパスワードを登録したり変更したりする
su 一時的に他のユーザになるためのコマンド