この記事では、システム管理、ファイル操作、テキスト処理など、日常の作業で必須となる主要なUNIXコマンドを厳選し、名前の由来、用途、そして実際の使用例を交えて徹底的に解説します。
目次
ファイル・ディレクトリ操作系コマンド
ファイルやフォルダ(ディレクトリ)の作成、移動、削除など、基本的な操作を行うコマンド群です。
ls
- 由来: List
- 用途: カレントディレクトリや指定した場所のファイル・ディレクトリ一覧を表示します。
-
主要なオプション:
-
-l: 詳細表示 (long、パーミッション、サイズなど)。 -
-a: 隠しファイル(.で始まる)を含むすべてを表示 (all)。 -
-h: サイズを読みやすい形式で表示 (human-readable、-lと併用)。
-
-
使用例:
ls -lah
cd
- 由来: Change Directory
- 用途: カレントディレクトリ(現在地)を移動します。
-
特殊な引数:
-
..: 1つ上の階層へ移動。 -
~: ログインユーザーのホームディレクトリへ移動。 -
-: 直前にいたディレクトリへ移動。
-
-
使用例:
cd .. cd ~/Documents
cp
- 由来: Copy
- 用途: ファイルやディレクトリをコピーします。
-
主要なオプション:
-
-r: ディレクトリを再帰的にコピーする (recursive、ディレクトリのコピーに必須)。 -
-i: コピー先に同名のファイルがある場合に上書きを確認します (interactive)。 -
-p: ファイルのタイムスタンプやパーミッションなどの属性を保持してコピーします (preserve)。
-
-
使用例:
# ファイルを同じディレクトリ内にコピーし、別名をつける cp config.yml config_backup.yml # ディレクトリを丸ごとコピー cp -r templates/ new_templates/
rm
- 由来: Remove
- 用途: ファイルやディレクトリを削除します。
-
主要なオプション:
-
-r: ディレクトリを再帰的に削除 (recursive、ディレクトリ削除に必須)。 -
-i: 削除前に確認メッセージを表示 (interactive)。 -
-f: 警告なしに強制的に削除 (force、使用注意)。
-
-
使用例:
# 確認メッセージ付きでファイルを削除 rm -i outdated_file.txt # ディレクトリとその中身を強制的に削除 rm -rf old_project/
mv
- 由来: Move
- 用途: ファイルやディレクトリの移動、または**リネーム(名前変更)**を行います。
-
主要なオプション:
-
-i: 移動先に同名のファイルがある場合に上書きを確認します。
-
-
使用例:
# ファイル名を変更 mv old_name.txt new_name.txt # ファイルを別のディレクトリに移動 mv data.csv archive/
テキスト処理・検索系コマンド
ファイルの内容確認、特定の文字列検索など、データ処理に不可欠なコマンド群です。
grep
- 由来: Globally search for a Regular Expression and Print
- 用途: 指定したファイルの中から、特定の文字列やパターン(正規表現)を含む行を検索・抽出します。
-
主要なオプション:
-
-i: 大文字・小文字を区別しない (ignore-case)。 -
-v: 検索パターンに一致しない行を表示 (invert-match)。 -
-n: 一致した行の行番号を表示。 -
-r: サブディレクトリまで再帰的に検索。
-
-
使用例:
# ログファイルから "ERROR" を含む行とその行番号を表示(大文字・小文字無視) grep -in "error" app.log
less
-
由来: (機能が)
moreコマンドより優れていることを示す(less is more の一種)。 - 用途: 大規模なテキストファイルを画面単位で表示するページャー。ファイルの先頭に戻ったり、下から検索したりできます。
-
主な操作:
-
/: ファイル内検索。 -
Space: 次ページへ。 -
q: 終了。
-
-
使用例:
less /var/log/syslog
tail
- 由来: ファイルの尾 (tail)
- 用途: ファイルの末尾から数行(デフォルト10行)を表示します。ログのリアルタイム監視に多用されます。
-
主要なオプション:
-
-n [数字]: 表示する行数を指定。 -
-f: ファイルの末尾に追加されるデータをリアルタイムで表示し続ける (follow)。
-
-
使用例:
# アクセスログをリアルタイムで監視 tail -f access.log
システム管理・権限操作系コマンド
プロセス管理、ユーザー権限の変更、アーカイブ作成など、より高度な操作に用いられます。
ps
- 由来: Process Status
- 用途: 現在実行中のプロセス(プログラム)の状態を一覧表示します。
-
主要なオプション:
-
aux: 全ユーザーのプロセスをユーザー志向の形式で表示(最も一般的)。 -
-ef: UNIX標準のプロセス一覧表示形式。
-
-
使用例:
# 実行中のプロセスを詳細に表示 ps aux
kill
- 由来: Kill a process
- 用途: 指定したプロセスID(PID)にシグナルを送り、プロセスを終了させます。
-
主要なオプション:
-
-9: SIGKILLシグナルを送り、強制的に終了させる(最も強力)。 -
-15: SIGTERMシグナルを送り、正常終了を促す(デフォルト)。
-
-
使用例:
# PID 1234 のプロセスに正常終了を促す kill 1234 # プロセスを強制終了 kill -9 5678
chmod
- 由来: Change Mode
- 用途: ファイルやディレクトリの**パーミッション(アクセス権)**を変更します。
-
指定方法:
-
数値モード(例:
755)で設定。 -
シンボリックモード(例:
u+x、所有者に実行権限を付与)で設定。
-
数値モード(例:
-
使用例:
# ファイルに所有者(u)の実行権限(x)を追加 chmod u+x script.sh # 一般的なディレクトリのパーミッション設定(所有者:読み書き実行、グループ/その他:読み書き) chmod 755 my_dir
tar
- 由来: Tape Archiver
- 用途: 複数のファイルを1つにまとめる(アーカイブ)および展開(解凍)を行います。
-
主要なオプション:
-
-c: アーカイブを作成 (create)。 -
-x: アーカイブを展開 (extract)。 -
-f: ファイル名を指定 (file)。 -
-z: gzip形式で圧縮・展開。
-
-
使用例:
# ディレクトリを tar.gz 形式で圧縮(アーカイブ作成) tar -czf archive_name.tar.gz my_directory/ # アーカイブを展開 tar -xf archive_name.tar.gz
UNIXの根幹:パイプとリダイレクト
UNIXコマンドの真価は、これらの単体コマンドを組み合わせて利用することにあります。
1. パイプ(|)
あるコマンドの標準出力を、別のコマンドの標準入力へ渡す機能です。
例: 実行中のプロセス一覧から特定の名前(httpd)を含む行だけを抽出し、さらに表示数を制限する。
ps aux | grep httpd | head -n 5
2. リダイレクト
コマンドの入出力先を変更する機能です。
-
>(上書き): コマンドの出力をファイルに上書き保存。ls -l > file_list.txt -
>>(追記): コマンドの出力をファイルの末尾に追記。tail -n 10 access.log >> audit.log
コマンドのヘルプを確認する
より詳細な情報や、この記事に記載されていないオプションを知りたい場合は、以下の方法でシステム内の公式情報を確認しましょう。
# manコマンドでマニュアルページを表示
man [コマンド名]
# 多くのGNU系コマンドで利用できる簡略ヘルプ
[コマンド名] --help
# 例
man find