【Linuxコマンド】よく使うコマンドの備忘録

# 概要
Linuxのコマンドは使わないとすぐに忘れてしまうので、よく使うコマンドをまとめてみました。
実際に、仕事でも使用してきた基本的なコマンドについて参考レベルで書いてます。

# 目次
- cdコマンド
	- 基本コマンド
	- ルートディレクトリへ移動する
	- ホームディレクトリへ移動する
	- 相対パスでの移動する
	- 絶対パスでの移動する
	- 上の階層へ移動する
	
- cpコマンド
	- 基本コマンド
	- ファイル名をそのままにコピーする
	- 複数ファイルをコピーする
	- ワイルドカードでコピーする
	- ディレクトリごとコピーする
	- 強制的にコピーする
	- 確認してコピーする
	- バックアップしてコピーする
	- ディレクトリ構造ごとコピーする
	- ファイル属性を保護してコピーする
	- コピー情報を表示してコピーする
	- シンボリックリンクを作成する

- pwdコマンド
	- 基本コマンド

- lsコマンド
	- 基本コマンド
	- すべて表示する
	- ファイルの詳細も表示する
	- 逆順で表示する
	- 更新時間順に並べて表示する
	- ファイルサイズ順に並べて表示する
	- ファイルを拡張子ごとにまとめて表示する
	- ディレクトリ内容を再帰的に表示する
	- ファイル名をカンマで区切って表示する
	- 単位を読みやすい形式で表示する

- mvコマンド
	- 基本コマンド
	- ファイルを移動する
	- ファイル名を変更する
	- ディレクトリを移動する
	- ディレクトリ名を変更する
	- ファイルを移動し名前も変更する
	- 複数ファイルをまとめて移動する
	- 特定の名前が含まれるファイルをまとめて移動する
	- 強制的に移動する
	- 確認して移動する
	- バックアップして移動する

- touchコマンド
	- 基本コマンド

- mkdirコマンド
	- 基本コマンド
	- パーミッション指定でディレクトリを作成する
	- ディレクトリが存在しなければ作成する
	- 作成した結果のメッセージを表示する

- catコマンド
	- 基本コマンド
	- 別のファイルに出力する
	- 別のファイルに追加する
	- 行番号をつけて出力する
	- 空白行を入れずに行番号をつけて出力する
	- 改行位置をつけて出力する
	- タブを置き換えて出力する

- rmコマンド
	- 基本コマンド
	- カレントディレクトリのファイルを全て削除する
	- 対象ファイルを確認しながら削除する
	- 隠しファイルを削除する
	- ディレクトリを削除する
	- ディレクトリを再帰的に削除する
	- 強制的に削除する

- findコマンド
	- 基本コマンド
	- ○分以上前に更新したファイルを検索する
	- ○分以内に更新したファイルを検索する
	- ○日以内に更新されたファイルを検索する
	- ○日以降に更新されたファイルを検索する
	- 大文字、小文字を区別して検索する
	- 大文字、小文字を区別せず検索する
	- OR条件で検索する
	- AND条件で検索する
	- 空のディレクトリを検索する
	- ディレクトリ名を検索する
	- grepで全文検索する
	- ファイルの容量を指定し検索する
	- 再帰的にパーミッションを変更する
	- ファイル名をフルパスで出力する

- grepコマンド
	- 基本コマンド
	- 大文字、小文字を区別せず検索する
	- 拡張正規表現で検索する
	- 一致処理に指定した正規表現を使って検索する
	- 一致しないものを検索する
	- 検索結果に行番号を表示する
	- 検索結果にファイル名のみ表示する
	- 検索結果に一致した文字を表示する
	- ディレクトリ内も再帰的に検索する

- tarコマンド
	- アーカイブを作成する
	- 圧縮する
	- 解凍する
	- アーカイブの中身を確認する

- chmodコマンド
	- 数値で指定する

- chownコマンド
	- 基本コマンド
	- メッセージを表示する
	- シンボリックリンク自体の所有者を変更する
	- ディレクトリ内の所有者も変更する

- tailコマンド
	- 基本コマンド
	- 出力する文字数を指定する
	- 出力する行数を指定する
	- ファイルの追記を監視する

- dfコマンド
	- 基本コマンド
	- 格納されているディスクの情報のみ表示する
	- すべてのディスクを表示する
	- 単位を付けて表示する

- duコマンド
	- 基本コマンド
	- ファイル容量を表示する
	- 合計容量を表示する
	- 容量をバイト単位で表示する
	- サイズが大きい順に表示させる

#cdコマンド
作業ディレクトリの移動を行うためのコマンドです。
cdコマンドはLinuxを使う上で一番はじめに出会うコマンドだと思います。

###基本コマンド
```bash
cd 移動先パス
```
###ルートディレクトリへ移動する
```bash
#ディスクの一番上の階層、rootディレクトリへ移動する
cd /
```
###ホームディレクトリへ移動する
```bash
#ユーザーのホームディレクトリに移動する
cd
```
###相対パスで移動する
```bash
#相対パスとなり、現在の作業ディレクトリの中の指定したディレクトリに移動する
$ cd ディレクトリ名
```
###絶対パスで移動する
```bash
#現在作業しているディレクトリとは関係なく、ディスク全体の一番上の階層から見てどの位置かを示す方法で移動する
#本例では/usr/binディレクトリに移動する
$ cd /usr/bin
```
###上の階層へ移動する
```bash
#一つ上の階層を表わすのはピリオド２つ「..」で表現する
cd ..
#二つ上の階層の場合
cd ../..
```

#cpコマンド
ファイルやディレクトリをコピーするコマンドです。

###基本コマンド
```bash
cp コピー元ファイル名 コピー先ファイル名
#（コマンド例）
cp file_ori.txt file_copy.txt
```
###ファイル名をそのままにコピーする
```bash
cp コピー元ファイル名 コピー先のディレクトリ名
#（コマンド例）
cp file_ori.txt dirA
```
###複数ファイルをコピーする
```bash
cp コピー元ファイルその1 コピー元ファイルその2 コピー先のディレクトリ名
#（コマンド例）
cp fileA.txt fileB.txt dir
```
###ワイルドカードでコピーする
```bash
#（コマンド例）
cp file* コピー先のディレクトリ名
```
###ディレクトリごとコピーする
```bash
# もっともよく使うオプションが、この「-r」オプションではないでしょうか。
cp -r コピー元ディレクトリ名 コピー先ディレクトリ名
```
###強制的にコピーする
```bash
# コピー先に同じ名前のファイルがある場合に確認が入ることがありますが、
# いちいちそれに答えるのが面倒な場合に使えます。
cp -f コピー元ファイル名 コピー先ファイル名
```
###確認してコピーする
```bash
# 上書きになるかを確認したいときもあります。
# 大事なファイルを扱っているときには、上書きは致命傷になるので、「yes or no」確認をします。
cp -i コピー元ファイル名 コピー後ファイル名
```
###バックアップしてコピーする
```bash
# 大事なファイル群を扱っているとき、上書きをするのはやはり怖いので、そのときは「-b」オプションを使います。
# -bオプションを利用すると、cpコマンドを実行すると同時に自動でバックアップファイルを生成してくれます。
# 以下の例のように、--suffixオプションを使って今日の日付をファイル名の後ろにつけるとわかりやすいです。
cp -b --suffix=_$(date +%Y%m%d) コピー元ファイル名 コピー後ファイル名
```
###ディレクトリ構造ごとコピーする
```bash
# 通常のcpコマンドでは子ディレクトリも含めた状態でコピーすることはできません。
# 「-P（--parents）」オプションを使います。
cp -P /ディレクトリ名/コピー元ファイル名 コピー後ディレクトリ名
```
###ファイル属性を保護してコピーする
```bash
# コピー先で勝手にコピーファイルの属性が変わってしまうと困ることがあります。
# 例えば、本番環境と開発環境を全く同じで構築する場合などです。このとき「-p」オプションが大変重宝します。
cp -p コピー元ファイル名 コピー後ファイル名
```
###コピー情報を表示してコピーする
```bash
# -vオプションを利用すると、何がコピーされたかの情報を表示してくれます。
# ワイルドカードを使ったときなど、付けておくと便利です。
cp -v コピー元 コピー先
#（コマンド例）
cp -v file* dir
```
###シンボリックリンクを作成する
```bash
# cpコマンドでもシンボリックリンクが作成できます。
cp -s 元ファイル シンボリックリンク
```


#pwdコマンド
現在、操作しているディレクトリを表示するコマンドです。仕事では結構使います。

cdコマンドやシンボリックリンクで頻繁に移動したとき、
タイプミスや自分の意識とは違うディレクトリで作業してしまっていることが起きます。
この時、削除系コマンドや強制上書きなど取返しがつかない
操作をしてしまう失敗もよく起きます。

日頃からコマンド操作するまえに、pwdコマンドで現在の作業ディレクトリを
確認する癖を付けていたりします。

ソフトウェアリリース時の手順書やチェックリストの中に出てきたり
盛り込んだりすることがあります。

###基本コマンド
```bash
pwd
```

#lsコマンド
ファイルやディレクトリの情報を表示するコマンドです。
lsコマンドなしにLinuxを使うことはできないといっても過言ではないかもしれません。
とりあえずこのコマンドを叩く方もいるのではないでしょうか。

###基本コマンド
```bash
# 現在いるディレクトリのファイルやフォルダを一覧表示してくれます。
ls
```
###すべて表示する
```bash
# -aオプションを使うと、ファイル名の先頭にピリオドがある隠しファイルも表示できます。
# 先頭にピリオドがある隠しファイルは、普段簡単には編集されたくない設定ファイルのようなものが多いです。
# 見逃さないようにするため、オプションの中でもよく使います。
ls -a
```
###ファイルの詳細も表示する
```bash
# 「-l」オプションもよく使います。
# 上記「-a」オプションと組み合わせて「-la」などで使用することが多いです。
ls -l
```
###逆順で表示する
```bash
# リストを通常の反対の順で表示したいこともあります。そのときはこの「-r」オプションを使います。
# 上記「-l」オプションと組み合わせて「-lr」などで使用することが多いです。
ls -r
```
###更新時間順に並べて表示する
```bash
# 更新時間ごとにファイルを並び替えることもできます。そのときはこの「-t」オプションを使います。
# 上記「-l」オプションと組み合わせて「-tl」などで使用することが多いです。
ls -tl
```
###ファイルサイズ順に並べて表示する
```bash
# 調査でどのファイルでどのくらいの容量を使っているか、知りたいときがあります。そんなときは、「-S」コマンドです。
# 上記「-l」オプションと組み合わせて「-lS」などで使用することが多いです。
# さらに軽い順に並べる場合には「-r」オプションを追加したりします。
ls -lS
```
###ファイルを拡張子ごとにまとめて表示する
```bash
# 拡張子の順に並び替えることもできます。
# ファイルを探すときや、ディレクトリの中身の整理の際に使います。
ls -Xl
```
###ディレクトリ内容を再帰的に表示する
```bash
# 子ディレクトリの中も一度に並べて見たいとき「-R」オプションを使って表示します。
ls -R
```
###ファイル名をカンマで区切って表示する
```bash
# ファイル名をカンマで区切って表示できる「-m」オプション。
# ファイルの一覧をCSVとして別のファイルに吐き出して使ったりできます。
ls -m
```
###単位を読みやすい形式で表示する
```bash
# ファイルサイズの単位を読みやすい形式で表示するときに使います。
# KやMなどを使って容量を表示します。
ls -lh
```

#mvコマンド
ファイルやディレクトリを移動したり、ファイル名を変更することができるコマンドです。
###基本コマンド
```bash
mv 移動元 移動先
```
###ファイルを移動する
```bash
mv 移動ファイル名 移動先ディレクトリ名
#（コマンド例）
mv fileA.txt dir
```
###ファイル名を変更する
```bash
mv 変更前ファイル名 変更後ファイル名
#（コマンド例）
mv fileA.txt fileB.txt
```
###ディレクトリを移動する
```bash
mv 移動ディレクトリ名 移動先ディレクトリ名
#（コマンド例）
mv dir1 ./hoge/dir2
```
###ディレクトリ名を変更する
```bash
mv 変更前ファイル名 変更後ファイル名
#（コマンド例）
mv dirA dirB
```
###ファイルを移動し名前も変更する
```bash
mv 変更前ファイル名 変更後ファイル名
#（コマンド例）
mv fileC.txt ./dir3/fileD.txt
```
###複数ファイルをまとめて移動する
```bash
mv 移動ファイル名１ 移動ファイル名2 移動先ディレクトリ名
#（コマンド例）
mv fileA.txt fileB.txt dir
```
###特定の名前が含まれるファイルをまとめて移動する
```bash
# ワイルドカードを使って特定の名前が含まれるファイルをまとめて移動させます。
#（コマンド例）
mv *.txt ./dir
```
###強制的に移動する
```bash
# 「-f」オプションをつけると移動先に同じ名前のファイルがあっても警告なしで上書きします。
# cpコマンドと同じですね。
mv -f 移動元ファイル名 移動先ディレクトリ名
```
###確認して移動する
```bash
# 上書きになるかを確認したいときもあります。
# 大事なファイルを扱っているときには、上書きは致命傷になるので、「yes or no」確認をします。
# cpコマンドと同じですね。
mv -i 移動元ファイル名 移動先ディレクトリ名
```
###バックアップして移動する
```bash
# 大事なファイル群を扱っているとき、上書きをするのはやはり怖いので、そのときは「-b」オプションを使います。
# 「-b」オプションを利用すると、mvコマンドを実行すると同時に自動でバックアップファイルを生成してくれます。
# 以下の例のように、「--suffix」オプションを使って今日の日付をファイル名の後ろにつけるとわかりやすいです。
# cpコマンドと同じですね。
mv -b --suffix=_$(date +%Y%m%d) 移動元ファイル名 移動先ファイル名
```

#touchコマンド
touchはファイルのタイムスタンプを変更するコマンドです。
ただ、存在しないファイル名を指定すると、空のファイルを新規作成する機能も持っているので、こちらの用途で使う方が多いかもしれません。

###基本コマンド
```bash
# 以下で指定したファイルを現在日時に変更しますが、ファイルの新規作成も同じコマンドです。
touch ファイル名
```

#mkdirコマンド
ディレクトリを新規作成するコマンドです。
このコマンドも使用頻度が高いです。このコマンドが無いと基本的な操作ができないです。

###基本コマンド
```bash
mkdir ディレクトリ名
```
###パーミッション指定でディレクトリを作成する
```bash
# パーミッションは、000から777までの3桁の8進数の形式や、
# u=w+といった権限を与えるユーザー=権限の形式で指定できます。
mkdir -m パーミッション指定 ディレクトリ名
#（コマンド例：全ユーザに読み書き実行を許可）
mkdir -m 777 dirA
```
###ディレクトリが存在しなければ作成する
```bash
# 作成しようとしているディレクトリが存在した場合、エラーになりディレクトリは作成できません。
# また、１階層だけのディレクトリの作成ではなく、ディレクトリの構成が深くなればなるほど作成が面倒になります。
# この2通りのケースに対応するには、-pオプション（--parentsオプション）を指定します。
mkdir -p dirA
```
###作成した結果のメッセージを表示する
```bash
# 親ディレクトリから子ディレクトリまで複数のディレクトリを作成する場合、
# どのディレクトリが新規作成されたものか作成しながら、一度に確認するときに使用します。
mkdir -v dirA

# 上記「-p」オプションと組み合わせればさらに便利です。
mkdir -pv dirA
```

#catコマンド
ファイルを連結して標準出力に出力するというコマンドですが、
一番よく使われる用途はファイルの閲覧だと思います。

lessコマンドやmoreコマンドと比較されることが多いと思いますが、
本記事ではlessコマンド、moreコマンド共に割愛しています。

###基本コマンド
```bash
cat fileA
```
###別のファイルに出力する
```bash
# 標準出力なので、リダイレクト「>」を用いて、別のファイルに出力内容を記述できます。
#（コマンド例）
cat fileA > fileB
```
###別のファイルに追加する
```bash
# 上書きではなく、追加の場合はリダイレクトの「>>」を使用します。
#（コマンド例）
cat fileA >> fileB
```
###行番号をつけて出力する
```bash
# 「-n」オプション。これはよく使います。覚えて損は無いと思います。
# "number"のnで覚えたりします。
#（コマンド例）
cat -n ファイル名
```
###空白行を入れずに行番号をつけて出力する
```bash
# 「-b」オプション。"blank"のbで覚えたりします。
#（コマンド例）
cat -b ファイル名
```
###改行位置をつけて出力する
```bash
# 各行の最後に"$"を表示するオプション「-E」です。
# 連続した文字列の改行位置がわかりにくいときに、$を入れることで分かりやすくします。
#（コマンド例）
cat -b ファイル名
```
###タブを置き換えて出力する
```bash
# タブを"^I"に置き換えて表示することもします。
#（コマンド例）
cat -T ファイル名
```

#rmコマンド
ファイルやディレクトリを削除するコマンドです。
大きな失敗や事故は、だいたいこのコマンドやmvコマンド、cpコマンドで起きたりしていました。
取り扱いには、特に注意が必要なコマンドの一つです。

###基本コマンド
```bash
rm ファイル名
```

###カレントディレクトリのファイルを全て削除する
```bash
# カレントディレクトリのファイルが全て削除されます。取り戻せません。
rm *
```
###対象ファイルを確認しながら削除する
```bash
# 確認無しの削除は怖いので、対象ファイルを確認しながら削除したい場合は、「-i」オプション」を付けます。
# 基本は、この「-i」オプションをつけて一つ一つ確認しながら実行すると比較的安全です。
# 「-v」オプションも付けると、実行内容を表示しながら削除します。
rm -i ファイル名
```
###隠しファイルを削除する
```bash
# 「rm *」のように指定しても、「ドットファイル（隠しファイル）」は削除対象になりません。
# よく消し忘れが発生するのですが、ドットファイルを削除したい場合は、以下のコマンド例のように
# ファイル名を指定するか、ディレクトリごと削除します。
#（コマンド例）
rm .dotfile
rm .dot*
```
###ディレクトリを削除する
```bash
# ディレクトリを削除する場合は、「-d」オプションを指定します。
# ディレクトリが空でない場合は、エラーが発生して消せません。
rm -d ディレクトリ名
```
###ディレクトリを再帰的に削除する
```bash
# ディレクトリの中身も含めて全てを削除するには、「-r」オプションを指定します。
rm -r ディレクトリ名
```
###強制的に削除する
```bash
# 通常、存在しないファイルを削除しようとした場合、エラーメッセージが表示されます。
# この「-f」オプションを付けるとこのメッセージが表示されなくなります。
# つまり問答無用で消すことができてしまいます。
rm -f ディレクトリ名
```
よく話題に上る、スーパーユーザー（root）で「rm -rf /」実行ですが、
意味は「システム上の全てのファイルを削除する」ということになるので、
原則は「-i」オプションをつけての確認が大事だと思います。

#findコマンド
ファイルやディレクトリを検索するコマンドです。

現場でも調査や解析で大変お世話になるコマンドです。
Linuxコマンドが仕事上必要な環境で、このコマンドが使いこなせる方と使いこなせない方では、生産性が全く違ってくるので、覚えて損はないと思います。

###基本コマンド
```bash
find ファイル名
```
###○分以上前に更新したファイルを検索する
```bash
# 「-mmin」オプションと指定時間をプラスで指定します。
#（コマンド例：5分以上前）
find . -mmin +5
```
###○分以内に更新したファイルを検索する
```bash
# 「-mmin」オプションと指定時間をマイナスで指定します。
#（コマンド例：5分以内）
find . -mmin -5
```
###○日以内に更新されたファイルを検索する
```bash
# 「-mtime」オプションと指定日数をマイナスで指定します。
#（コマンド例：1日以内）
find . -mtime -1
```
###○日以降に更新されたファイルを検索する
```bash
# 「-mtime」オプションと指定日数をプラスで指定します。
#（コマンド例：1日以降）
find . -mtime +1
```
###大文字、小文字を区別して検索する
```bash
# 「-name」オプションを指定します。
#（コマンド例）
find . -name "*.txt"
```
###大文字、小文字を区別せず検索する
```bash
# 「-iname」オプションを指定します。
#（コマンド例）
find . -iname "*.txt"
```
###OR条件で検索する
```bash
# OR条件は「-o」オプションです。ORの'o'で覚えます。
#（コマンド例：拡張子でOR検索）
find . -name "*.txt" -o -name "*.log"
```
###AND条件で検索する
```bash
# AND条件は「-a」オプションです。ANDの'a'で覚えます。
#（コマンド例：拡張子かつ時間指定）
find . -name "*.log" -a -mtime -1
```
###空のディレクトリを検索する
```bash
# 無駄な空ディレクトリが結構あったりするので、そういう場合に検索します。
# 「-type d」オプションと「-empty」オプションの組み合わせです。
#（コマンド例）
find . -type d -empty
```
###ディレクトリ名を検索する
```bash
# 単純にディレクトリ名のみを検索したいときは「-type d」オプションで指定してあげます。
# 「-name」オプションで検索対象のディレクトリ名を指定する感じです。
# 正規表現も使って、-name '*-css'みたいにディレクトリ名も検索できます。
#（コマンド例）
find ./ -name 'css' -type d
```
###grepで全文検索する
```bash
# カレントディレクトリ以下のすべてのファイルから指定のキーワードを検索するときはこれです。
# grepコマンドとパイプで繋いで使っていますが、これは調査や影響範囲の確認などで必ず使ってます。
# これが無いと調査系の作業は厳しいです。
#（コマンド例）
find ./ -name '*' | xargs grep '検索ワード'

# アスタリスクですべてのファイルを検索するとjpgとかの画像ファイルなども検索対象になるので、
# ファイル拡張子を指定する際にはこれです。
#（コマンド例）
find ./ -name '*.html' | xargs grep '検索ワード'

# ディレクトリを指定して、ファイルに限定したいときは「-type f」オプションを指定しておきます。
#（コマンド例）
find ./ -name '*' -type f | xargs grep '検索ワード'
```

###ファイルの容量を指定し検索する
```bash
# 「-size」オプションを指定して、ファイル容量に指定したものを検索します。
#（コマンド例）
find 検索元 -size ファイル容量

# 指定したファイル容量以上のものを検索する場合は、ファイル容量の前に+を指定します。
#（コマンド例）
find 検索元 -size +ファイル容量

# 指定したファイル容量以下のものを検索する場合は、ファイル容量の前に-を指定します。
#（コマンド例）
find 検索元 -size -ファイル容量

# ファイル容量の後ろにcを付与すると単位がバイトになります。
#（コマンド例）
find 検索元 -size ファイル容量c

# ファイル容量の後ろにkを付与すると単位がキロバイトとなります。
#（コマンド例）
find 検索元 -size ファイル容量k

# sortコマンドとパイプで繋いで応用すると
# 指定したサイズ以上のファイルを探すコマンドはこんな感じです。
#（コマンド例）
find 検索元 -size +ファイル容量 | xargs ls -l | sort -rn
```

###再帰的にパーミッションを変更する
```bash
# chmodとのパイプ繋ぎで、再帰的にパーミッションとかも変えることができます。
# ディレクトリの場合
#（コマンド例）
find ./ -type d | xargs chmod 777

# ファイルの場合
#（コマンド例）
find ./ -type f | xargs chmod 666
```

###ファイル名をフルパスで出力する
```bash
# 再帰的にすべてのファイル一覧などを作るときに使います。
#（コマンド例）
find ./dir -type f
```

#grepコマンド
ファイル中の文字列を検索するコマンドです。
findコマンドと一緒に使ったりします。
このコマンドも仕事の生産性を上げるのに一役買ってます。

###基本コマンド
```bash
grep 検索正規表現 ファイル名
```
###大文字、小文字を区別せず検索する
```bash
# 「-i」オプションを指定して大文字小文字を区別せず検索します。
grep -i 検索正規表現 ファイル名
```
###拡張正規表現で検索する
```bash
# OR検索を行う場合、|のOR演算子を使うのですが、そのためには拡張正規表現を使う必要があります。
# その拡張席表現をするものが、「-E」オプションです。
grep -E 検索正規表現 ファイル名
#（コマンド例）
grep -E 'a|b' hoge/*
```
###一致処理に指定した正規表現を使って検索する
```bash
# 「-e」オプションを指定して、一致処理に指定した正規表現を行います。
grep -e 検索正規表現１ -e 検索正規表現２ ファイル名
#（コマンド例）
grep -e a -e b hoge/*
```
###一致しないものを検索する
```bash
# 一致しないものを検索するときは、「-v」オプションを指定します。
grep -v 検索正規表現 ファイル名
#（コマンド例）
grep -v a hoge/*
```
###検索結果に行番号を表示する
```bash
# 行番号を表示して場所を特定するときなどに使います。「-n」オプションを指定します。
grep -n 検索正規表現 ファイル名
#（コマンド例）
grep -n a hoge/*
```
###検索結果にファイル名のみ表示する
```bash
# 検索した結果にファイル名のみを表示したいときに、よく「-l」オプションを指定します。
grep -l 検索正規表現 ファイル名
#（コマンド例）
grep -l a hoge/*
```
###検索結果に一致した文字を表示する
```bash
# 検索結果に一致した文字を表示させます。確認に使ったりします。
grep -o 検索正規表現 ファイル名
#（コマンド例）
grep -o a.*b hoge/*
```
###ディレクトリ内も再帰的に検索する
```bash
# ディレクトリ内も検索するときに使います。
# 「-r」オプションを指定しますが、一度に検索することが多いのでよく使います。
grep -r 検索正規表現 ファイル名
#（コマンド例）
grep -r a hoge/*
```

#tarコマンド
アーカイブの作成や展開を行うコマンドです。
基本はオプションを指定して利用しますが、ファイルの圧縮や解凍もこのコマンドを使ったりします。
容量の確保や、大きな容量のファイルなどを転送したりする場合、事前に圧縮して利用したりします。

###アーカイブを作成する
```bash
# 最もシンプルなコマンド書式ですが、よく使います。
# 「-cvf ファイル名」は問題ないですが、「-cfv ファイル名」は無効になるので注意が必要です。
#（コマンド例）
tar -cvf アーカイブファイル名 アーカイブに内包するファイル

#（コマンド例：PHPファイルを全て内包する）
tar -cvf hoge.tar *.php
```
###圧縮する
```bash
# アーカイブ時に同時に圧縮を行うこともできるので、このコマンドを使います。
# 本来は圧縮専用のコマンドがあり、そちらがスタンダードかもしれません。
#（コマンド例：gzip形式で圧縮）
tar -zcvf アーカイブファイル名.tar.gz アーカイブに内包するファイル

#（コマンド例：bzip2形式で圧縮）
tar -jcvf  アーカイブファイル名.tar.bz2 アーカイブに内包するファイル

#（コマンド例：xz形式で圧縮）
tar -Jcvf  アーカイブファイル名.tar.xz アーカイブに内包するファイル
```
###解凍する
```bash
# 解凍はだいたい自動で圧縮形式を判断しておまかせするこのコマンドで済ませてます。
#（コマンド例：）
tar -xvf アーカイブ名
```
###アーカイブの中身を確認する
```bash
# きちんと期待通りにアーカイブされたか確認する時などに使用します。
#（コマンド例：）
tar -tf アーカイブ名
```

#chmodコマンド
ファイルやディレクトリの権限（パーミッション）を変更するコマンドです。
数値指定とアルファベット指定の2通りありますが、本書は数値のみ記載しています。

###数値で指定する
```bash
chmod モード 対象ファイル名

#（コマンド例）
chmod 754 hoge.txt

# モード(数字) | モードアルファベット)   | 権限
# ------------|-----------------------|------
#     4       |  r                    | 読み取り
#     2       |  w                    | 書き込み
#     1       |  X                    | 実行

# 上記の合計値を「所有者」「所有グループ」「その他」の順で入力して、
# パーミッションを変更することができます。
# 上記の「754」は、
#「所有者」に対して「読み取り」「書き込み」「実行」を、
#「所有グループ」に対して「読み取り」「実行」を、
#「その他」に「読み取り」を付与しています。
```

#chownコマンド
ファイルの所有者やグループを変更するコマンドです。
chownコマンドは管理者ユーザー権限で行わないと、権限なしで操作できない場合があります。
chownコマンドは管理者権限のアカウントで操作した方がよいです。

###基本コマンド
```bash
chown 所有者名 ファイル名またはディレクトリ名
```
###メッセージを表示する
```bash
# 変更があった時にメッセージを表示した場合に使用します。
chown -c 所有者名 ファイル名またはディレクトリ名
```
###シンボリックリンク自体の所有者を変更する
```bash
# chownコマンドを使ってシンボリックリンクを変更した場合、
# シンボリックリンク先を変更することになり、シンボリックリンク自体を変更しません。
# 「-h」オプションを指定することで、シンボリック自体を変更できるようになります。
chown -h 所有者名 ファイル名またはディレクトリ名
```
###ディレクトリ内の所有者も変更する
```bash
# 一度に複数のファイルやディレクトリを変更したい場合があるので、その場合はこれです。
chown -R 所有者名 ディレクトリ名
```

#tailコマンド
ファイルの最終行から数行を表示するコマンドです。
ただ、tailコマンドにあるオプションを使って、ファイル監視でよくお世話になっています。

###基本コマンド
```bash
tail ファイル名
```
###出力する文字数を指定する
```bash
# 指定が無ければ最終行から10行表示です。
# 「-c」オプションで指定した文字数を変更して出力操作します。
# 文字数はバイト単位ですが、文字数にKを付ければ、キロバイトを指定することもできます。
tail -c 文字数 ファイル名
```
###出力する行数を指定する
```bash
# 指定が無ければ最終行から10行表示です。
# 「-n」オプションで指定した行数を変更して出力操作します。
tail -n 行数 ファイル名
```
###ファイルの追記を監視する
```bash
# ファイルの追記を監視するため、待機してくれます。
# ログファイルの監視などで活躍します。
# 動作終了時は、Ctrl＋Cのショートカットキーで終了できます。
tail -f ファイル名
```

#dfコマンド
ディスク容量を確認するコマンドです。

容量は有限なので、データを使い続ければ、いつかは容量がいっぱいになってしまうのは当たり前の話だと思います。
ファイルサーバーの管理者は必須のコマンドだと思います。

###基本コマンド
```bash
df
```
###格納されているディスクの情報のみ表示する
```bash
# 指定したディレクトリが格納されているディスクの情報だけを表示する場合はこれです。
df ディレクトリ名
```
###すべてのディスクを表示する
```bash
# 「-a」オプションで、ダミーのファイルシステムなど容量が0のディスクも表示できます。
df -a
```
###単位を付けて表示する
```bash
# オプションなしでの容量の表示は、桁区切りもされていないので視認性が悪いです。
# 「-H」オプションは「k」「M」「G」の単位を使って表示してくれるので把握しやすいです。
df -H
```

#duコマンド
ディレクトリやファイル容量を確認するコマンドです。
どのディレクトリがデータを使っているかなど調べるときによく利用します。

###基本コマンド
```bash
# duのみの場合は、カレントディレクトリ配下のすべてのディレクトリの容量が表示されます。
du ディレクトリ名
```
###ファイル容量を表示する
```bash
# 「-a」オプションでファイル容量も表示できます。
du -a ディレクトリ名
```
###合計容量を表示する
```bash
# 自分で集計は面倒なので、「-s」オプションで合計容量を表示します。
du -s ディレクトリ名
```
###容量をバイト単位で表示する
```bash
# 「-b」オプションで容量をバイト単位で表示できます。
df -b ディレクトリ名
```
###サイズが大きい順に表示させる
```bash
#（コマンド例：子ディレクトリ内のディレクトリも表示させる場合）
du -k /ディレクトリ名/* | sort -rn | head -表示させたい行数

#（コマンド例：ディレクトリ内のディレクトリは表示させない場合）
du -sk /ディレクトリ名/* | sort -rn | head -表示させたい行数

# ホームディレクトリでどのユーザがデータをため込んでいるかを調べる場合は「-s」を付けたり、
# ユーザのホームディレクトリ内のどのディレクトリに、
# データが多く格納されているのかを確認したい場合は、
# 「-s」オプションを付けないといったように、使い分けます。
```

# まとめ
ファイルの中身に対して編集したりする操作系のコマンドや、
メモリやCPUなどの監視系コマンドは省いていたりしていますので、
もっと便利なコマンドや機会があれば、また書いてみようと思います。

今回は、日頃使ってお世話になっている主なコマンドたちで、
基本的なコマンドばかりだと思いますが、何か参考になればと思います。