Linuxコマンド チートシート

cheatsheet

ファイルとディレクトリ操作 📂

ファイルシステムの基本的なナビゲーションと操作。

コマンド 説明 主なオプション / 使用例
pwd 現在の作業ディレクトリ (Print Working Directory) を表示します。
pwd
ls ディレクトリの内容を一覧表示します (List)。
  • -l: 詳細表示 (パーミッション、所有者、サイズ、日付など)
  • -a: 隠しファイルを含むすべてを表示 (ドットファイル)
  • -h: 人間が読みやすい形式でサイズを表示 (例: KB, MB)
  • -t: 更新日時順でソート (新しいものが先頭)
  • -r: 逆順でソート
ls -lah
cd ディレクトリを変更します (Change Directory)。
  • cd ディレクトリ名: 指定したディレクトリに移動
  • cd ..: 親ディレクトリに移動
  • cd ~ または cd: ホームディレクトリに移動
  • cd -: 直前にいたディレクトリに移動
cd /var/log
mkdir 新しいディレクトリを作成します (Make Directory)。
  • -p: 必要に応じて親ディレクトリも作成
mkdir -p project/data/raw
rmdir 空のディレクトリを削除します (Remove Directory)。
rmdir empty_dir
touch ファイルのタイムスタンプ (最終アクセス日時、最終更新日時) を更新します。ファイルが存在しない場合は空のファイルを作成します。
touch new_file.txt
touch -t 202504011200 old_file.log # 特定の日時に更新
cp ファイルやディレクトリをコピーします (Copy)。
  • -r or -R: ディレクトリを再帰的にコピー
  • -i: 上書き前に確認を求める (Interactive)
  • -v: コピーの進行状況を表示 (Verbose)
  • -p: パーミッション、所有者、タイムスタンプを保持 (Preserve)
cp source.txt destination.txt
cp -r /path/to/source_dir /path/to/target_dir
mv ファイルやディレクトリを移動、または名前を変更します (Move)。
  • -i: 上書き前に確認を求める (Interactive)
  • -v: 移動の進行状況を表示 (Verbose)
mv old_name.txt new_name.txt # 名前変更
mv file.txt /path/to/destination/ # 移動
rm ファイルやディレクトリを削除します (Remove)。⚠️注意して使用してください。
  • -r or -R: ディレクトリを再帰的に削除
  • -f: 確認メッセージなしで強制的に削除 (Force) (非常に危険!)
  • -i: 削除前に確認を求める (Interactive)
  • -v: 削除の進行状況を表示 (Verbose)
rm file_to_delete.txt
rm -rf directory_to_delete/ # 強制再帰削除 (非常に危険!)
ln ファイルへのリンクを作成します (Link)。
  • -s: シンボリックリンク (ソフトリンク) を作成。デフォルトはハードリンク。
ln -s /path/to/original.file link_name # シンボリックリンク
ln /path/to/original.file hard_link_name # ハードリンク
find 指定した場所から条件に一致するファイルを検索します。
  • find /path/to/search -name "pattern": 名前で検索
  • find . -type f -mtime -7: 現在のディレクトリ以下で、7日以内に更新されたファイルを検索
  • find / -size +100M: ルートディレクトリ以下で、100MBより大きいファイルを検索
  • find . -type f -exec grep "keyword" {} \;: 検索したファイル内でキーワードを検索
du ファイルやディレクトリのディスク使用量を表示します (Disk Usage)。
  • -h: 人間が読みやすい形式で表示 (Human-readable)
  • -s: 合計サイズのみ表示 (Summarize)
  • -d N or --max-depth=N: 指定した深さまでのディレクトリを表示
du -sh /path/to/directory
df ファイルシステムのディスク空き容量を表示します (Disk Free)。
  • -h: 人間が読みやすい形式で表示 (Human-readable)
  • -T: ファイルシステムのタイプを表示
  • -i: inodeの使用状況を表示
df -hT
stat ファイルやファイルシステムの詳細な状態を表示します。
stat filename.txt

テキスト処理 📝

ファイルの内容表示、検索、編集、加工。

コマンド 説明 主なオプション / 使用例
cat ファイルの内容を連結して標準出力に表示します (Concatenate)。
  • -n: 行番号を表示
cat file1.txt file2.txt > combined.txt
less ファイルの内容をページ単位で表示します。more より高機能 (推奨)。

表示中に使えるキー:

  • Space: 次ページ
  • b: 前ページ
  • /キーワード: 前方検索
  • ?キーワード: 後方検索
  • n: 次の検索結果
  • N: 前の検索結果
  • g: ファイル先頭へ
  • G: ファイル末尾へ
  • q: 終了
less large_log_file.log
head ファイルの先頭部分を表示します。
  • -n N: 先頭 N 行を表示 (デフォルトは 10 行)
head -n 20 file.txt
tail ファイルの末尾部分を表示します。ログ監視に便利。
  • -n N: 末尾 N 行を表示 (デフォルトは 10 行)
  • -f: ファイルの更新をリアルタイムで追跡表示 (Follow)
tail -n 50 file.txt
tail -f /var/log/syslog
grep テキストデータから正規表現に一致する行を検索して表示します (Global Regular Expression Print)。
  • -i: 大文字/小文字を区別しない (Ignore case)
  • -v: 一致しない行を表示 (Invert match)
  • -n: 行番号を表示
  • -r or -R: ディレクトリ内を再帰的に検索
  • -E: 拡張正規表現を使用
  • -w: 単語単位で一致するものを検索 (Word regexp)
  • -c: 一致した行数を表示 (Count)
  • -A N: 一致した行の後 N 行も表示 (After)
  • -B N: 一致した行の前 N 行も表示 (Before)
  • -C N: 一致した行の前後 N 行も表示 (Context)
grep "error" logfile.log
grep -rni "keyword" /path/to/search
ps aux | grep httpd
wc ファイル内の行数、単語数、バイト数/文字数をカウントします (Word Count)。
  • -l: 行数を表示
  • -w: 単語数を表示
  • -c: バイト数を表示
  • -m: 文字数を表示 (マルチバイト文字対応)
wc -l file.txt
sort テキストファイルの行をソートします。
  • -r: 逆順 (降順) でソート
  • -n: 数値としてソート
  • -k N: N番目のフィールドをキーとしてソート
  • -t CHAR: フィールド区切り文字を指定
  • -u: 重複行を削除 (Unique)
sort data.txt
sort -nr -k 3 data.csv -t ','
uniq ソート済みのファイルから重複した隣接行を削除または表示します (Unique)。sort と組み合わせて使うことが多い。
  • -c: 各行の出現回数を表示 (Count)
  • -d: 重複している行のみ表示 (Duplicated)
  • -u: 重複していない行のみ表示 (Unique)
sort data.txt | uniq -c
cut ファイルの各行から指定した部分 (フィールドや文字) を切り出します。
  • -d CHAR: フィールド区切り文字を指定 (Delimiter)
  • -f FIELDS: 切り出すフィールド番号を指定 (例: -f 1,3, -f 2-)
  • -c CHARS: 切り出す文字位置を指定 (例: -c 1-5, -c 10)
cut -d ':' -f 1,7 /etc/passwd
cut -c 1-10 file.txt
paste 複数のファイルを横方向 (行単位) で連結します。
  • -d DELIMITERS: 区切り文字を指定 (デフォルトはタブ)
  • -s: 1つのファイルを1行に連結 (Serial)
paste file1.txt file2.txt
tr 文字の置換や削除を行います (Translate)。
cat file.txt | tr 'a-z' 'A-Z' # 小文字を大文字に変換
cat file.txt | tr -d '\r' # CR文字を削除
sed ストリームエディタ。テキストの置換、削除、挿入などを非対話的に行います (Stream Editor)。
  • sed 's/old/new/g' file.txt: ‘old’を’new’に置換 (gは行全体)
  • sed '/pattern/d' file.txt: patternを含む行を削除
  • sed -n '/pattern/p' file.txt: patternを含む行のみ表示 (-nはデフォルト出力を抑制)
  • sed -i 's/old/new/g' file.txt: ファイルを直接編集 (-i) ⚠️注意
awk 高機能なテキスト処理言語。列指向のデータ処理が得意。
awk '{print $1, $3}' data.txt # 1列目と3列目を表示
awk -F',' '$2 > 100 {print $0}' data.csv # CSVの2列目が100より大きい行を表示
ps aux | awk '$3 > 5.0 {print $2, $11}' # CPU使用率が5%超のプロセスのPIDとコマンド表示
diff 2つのファイルの差分を表示します。
  • -u: Unified形式で表示 (パッチ作成に利用)
  • -r: ディレクトリを再帰的に比較
  • -q: 差分があるかどうかだけを表示 (Quiet)
diff file1.txt file2.txt
diff -u original.c modified.c > patchfile.patch
comm ソート済みの2つのファイルを比較し、共通行、ファイル1のみの行、ファイル2のみの行を表示します。
comm sorted_file1.txt sorted_file2.txt

プロセス管理 ⚙️

実行中のプログラム (プロセス) の監視と制御。

コマンド 説明 主なオプション / 使用例
ps 現在実行中のプロセスを表示します (Process Status)。
  • aux: 全ユーザーの全プロセスを詳細表示 (BSD形式)
  • ef: 全プロセスを詳細表示 (System V形式)
  • -eo format: 指定したフォーマットで表示 (例: ps -eo pid,ppid,user,%cpu,%mem,cmd)
  • --forest: プロセスツリーを表示
ps aux
ps aux | grep nginx
top 実行中のプロセスをリアルタイムで対話的に表示・監視します。CPUやメモリ使用率が高い順に表示されます。

表示中に使えるキー:

  • P: CPU使用率順でソート
  • M: メモリ使用率順でソート
  • k: プロセスを終了させる (PID入力)
  • h: ヘルプ表示
  • q: 終了
htop top の改良版。カラー表示で見やすく、マウス操作も可能 (要インストール)。 (top と同様の機能に加え、より直感的な操作が可能)
kill プロセスID (PID) を指定してプロセスにシグナルを送信します。デフォルトはTERMシグナル (正常終了)。
  • kill PID: プロセスにTERMシグナル (15) を送信
  • kill -9 PID or kill -SIGKILL PID: プロセスにKILLシグナル (9) を送信 (強制終了) ⚠️最終手段
  • kill -l: 利用可能なシグナル一覧を表示
kill 12345
kill -9 12345
pkill / killall プロセス名を指定してシグナルを送信します。killall は完全に名前が一致するプロセスのみ、pkill は部分一致も可能。
  • pkill process_name
  • killall process_name
  • pkill -9 process_name (強制終了)
pgrep プロセス名を指定してプロセスID (PID) を検索します。
  • -l: プロセス名も表示
  • -u user: 指定したユーザーのプロセスを検索
pgrep nginx
pgrep -u www-data
jobs 現在のシェルで実行中のバックグラウンドジョブの一覧を表示します。
jobs
bg 停止中のジョブをバックグラウンドで再開します (Background)。
bg %1 # ジョブ番号1をバックグラウンド実行
fg バックグラウンドジョブをフォアグラウンドに戻します (Foreground)。
fg %1 # ジョブ番号1をフォアグラウンド実行
& コマンドの末尾につけると、そのコマンドをバックグラウンドで実行します。
long_running_script.sh &
nohup ログアウト後もプロセスを実行し続けます (No Hang Up)。出力は通常 nohup.out にリダイレクトされます。& と組み合わせて使うことが多い。
nohup ./server_program &
nice プロセスの優先度 (niceness値) を指定してコマンドを実行します。値が大きいほど優先度が低い (-20から19)。
nice -n 10 heavy_task &
renice 実行中のプロセスの優先度を変更します。
renice +15 -p PID # PIDのプロセスの優先度を下げる

システム情報 ℹ️

OS、ハードウェア、稼働状況などの情報を表示。

コマンド 説明 主なオプション / 使用例
uname システム情報 (カーネル名、ホスト名、カーネルバージョンなど) を表示します。
  • -a: すべての情報を表示 (All)
  • -r: カーネルリリースを表示
  • -m: マシンハードウェア名 (アーキテクチャ) を表示
uname -a
hostname システムのホスト名を表示または設定します。
hostname
hostname -I # ローカルIPアドレスを表示
date 現在の日時を表示または設定します。
date
date '+%Y-%m-%d %H:%M:%S' # 指定フォーマットで表示
uptime システムの稼働時間、ログインユーザー数、ロードアベレージを表示します。
uptime
who 現在ログインしているユーザーの情報を表示します。
who
who am i # 自分自身の情報を表示
w ログインしているユーザーの情報と、そのユーザーが実行しているプロセスを表示します。who より詳細。
w
last 最近のログイン履歴を表示します (/var/log/wtmp ファイルを参照)。
last
last -n 10 # 直近10件を表示
free システムのメモリ使用状況 (物理メモリ、スワップ) を表示します。
  • -h: 人間が読みやすい形式で表示 (Human-readable)
  • -m: メガバイト単位で表示
  • -g: ギガバイト単位で表示
free -h
vmstat 仮想メモリ、プロセス、CPUアクティビティなどの統計情報を表示します (Virtual Memory Statistics)。
vmstat 1 5 # 1秒間隔で5回表示
iostat CPU使用率とデバイスのI/O統計情報を表示します (Input/Output Statistics)。(sysstatパッケージが必要な場合あり)
iostat -xtc 1 5 # 1秒間隔で5回、拡張情報とタイムスタンプ付きで表示
lscpu CPUアーキテクチャに関する情報を表示します (List CPU)。
lscpu
lspci システムに接続されているすべてのPCIバスとデバイスの情報を表示します (List PCI)。
lspci
lspci -v # 詳細表示
lsusb システムに接続されているUSBバスとデバイスの情報を表示します (List USB)。
lsusb
lsusb -v # 詳細表示
dmesg カーネルリングバッファ (起動時のメッセージやハードウェア関連のメッセージ) を表示します。
dmesg
dmesg | tail # 最新のメッセージを表示
dmesg -T # タイムスタンプ付きで表示
timedatectl システムの日時やタイムゾーンを管理します。
timedatectl status # 現在の状態を表示
timedatectl list-timezones # 利用可能なタイムゾーン一覧
sudo timedatectl set-timezone Asia/Tokyo # タイムゾーン設定

ネットワーク 🌐

ネットワーク設定の確認、通信テスト、リモート接続など。

コマンド 説明 主なオプション / 使用例
ip addr
(または ifconfig)
ネットワークインターフェースとIPアドレス情報を表示・設定します。ip コマンドが推奨されています。ifconfig は非推奨となりつつあります。
ip addr show
ifconfig -a
ip route
(または route)
カーネルのIPルーティングテーブルを表示・操作します。ip コマンドが推奨されています。
ip route show
route -n # 名前解決せず数値で表示 (routeコマンド)
ping 指定したホストにICMP ECHO_REQUESTパケットを送信し、ネットワークの疎通を確認します。
  • -c N: N回送信して終了 (Count)
ping google.com
ping -c 4 192.168.1.1
traceroute
(または tracepath)
指定したホストまでのネットワーク経路を表示します。
traceroute google.com
ss
(または netstat)
ネットワーク接続、リスニングソケット、ルーティングテーブルなどの情報を表示します。ssnetstat の後継で、より高速で多くの情報を提供します。
  • ss -tulnp: TCP/UDPのリスニングソケットをプロセス情報付きで表示 (TCP, UDP, Listening, Numeric, Processes)
  • netstat -tulnp: 同上 (netstatコマンド)
  • ss -tan: すべてのTCP接続を数値で表示 (TCP, All, Numeric)
ss -tulnp
dig
(または nslookup)
DNS (Domain Name System) サーバーに問い合わせて、ドメイン名に関する情報を取得します。dig の方が高機能。
dig example.com
dig mx example.com # MXレコードを問い合わせ
dig @8.8.8.8 example.com # GoogleのDNSサーバーに問い合わせ
nslookup example.com
wget URLを指定してインターネットからファイルをダウンロードします。
  • -O filename: 出力ファイル名を指定
  • -c: ダウンロードを再開 (Continue)
wget https://example.com/file.zip
curl URLを指定してデータを転送するための多機能ツール。HTTP, HTTPS, FTPなど多くのプロトコルに対応。APIテストなどにも利用されます。
  • -O: URLのファイル名で保存
  • -o filename: 出力ファイル名を指定
  • -L: リダイレクトを追跡
  • -X METHOD: HTTPメソッドを指定 (例: -X POST)
  • -H "Header: Value": カスタムヘッダーを追加
  • -d "data": POSTデータを指定
curl -O https://example.com/file.zip
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com/
ssh リモートのLinux/Unixマシンに安全にログインしたり、コマンドを実行したりします (Secure Shell)。
  • ssh user@hostname: 指定したユーザーでホストに接続
  • ssh user@hostname "command": リモートでコマンドを実行
  • -p PORT: 接続ポート番号を指定 (デフォルトは22)
  • -i identity_file: 秘密鍵ファイルを指定
ssh myuser@remote.server.com
ssh -i ~/.ssh/id_rsa user@host 'ls -l /tmp'
scp SSHプロトコルを使用して、ローカルとリモートホスト間でファイルを安全にコピーします (Secure Copy)。
  • -r: ディレクトリを再帰的にコピー
  • -P PORT: 接続ポート番号を指定 (大文字P注意)
  • -i identity_file: 秘密鍵ファイルを指定
scp local_file.txt user@hostname:/remote/path/
scp -r user@hostname:/remote/dir/ ./local/dir/
rsync ローカルまたはリモート間でファイルやディレクトリを効率的に同期・コピーします。scp より高機能で、差分転送が可能。
  • -a: アーカイブモード (パーミッション、タイムスタンプ等を保持、再帰的コピー)
  • -v: 詳細表示 (Verbose)
  • -z: 転送中にデータを圧縮 (Compress)
  • -h: 人間が読みやすい形式で表示 (Human-readable)
  • --progress: 転送状況を表示
  • --delete: 転送元にないファイルを転送先で削除
  • -e "ssh -p PORT": SSHポートを指定
rsync -avz /local/data/ user@hostname:/remote/backup/
nmap ネットワーク探索とセキュリティ監査のための強力なツール。ポートスキャンなど (要インストール)。
  • nmap target_host: 基本的なポートスキャン
  • nmap -sV target_host: サービスバージョン検出
  • nmap -A target_host: OS検出、バージョン検出、スクリプトスキャン、トレースルートを含む包括的なスキャン
sudo nmap -sS 192.168.1.1 # TCP SYNスキャン

ユーザーと権限 👤🔑

ユーザーアカウント、グループ、ファイルパーミッションの管理。

コマンド 説明 主なオプション / 使用例
whoami 現在ログインしているユーザー名を表示します。
whoami
id 指定したユーザー (デフォルトは自分自身) のユーザーID (UID)、グループID (GID)、所属グループを表示します。
id
id username
su ユーザーを切り替えます (Switch User)。引数なしだとrootユーザーに切り替えようとします (rootパスワードが必要)。
  • su - username: 指定ユーザーに切り替え、そのユーザーの環境設定を読み込む (ログインシェルを起動)
su - otheruser
sudo 設定ファイル (/etc/sudoers) で許可されたユーザーが、一時的に他のユーザー (通常はroot) の権限でコマンドを実行します (Superuser Do)。自分のパスワードを使用します。
sudo apt update # root権限でapt updateを実行
sudo -i # rootユーザーとして対話的シェルを起動
passwd ユーザーのパスワードを変更します。引数なしだと自分のパスワード、ユーザー名を指定するとそのユーザーのパスワードを変更 (root権限が必要)。
passwd
sudo passwd username
useradd
(または adduser)
新しいユーザーアカウントを作成します。adduseruseradd のフロントエンドで、対話的にホームディレクトリ作成なども行ってくれることが多い (ディストリビューションによる)。
  • useradd -m -G group1,group2 -s /bin/bash username: ホームディレクトリ作成、グループ追加、シェル指定
sudo useradd newuser
sudo adduser newuser
userdel
(または deluser)
ユーザーアカウントを削除します。deluser は関連グループからも削除するなど、より丁寧な処理を行うことが多い。
  • userdel -r username: ホームディレクトリとメールスプールも削除
sudo userdel olduser
sudo deluser --remove-home olduser
groupadd
(または addgroup)
新しいグループを作成します。
sudo groupadd newgroup
groupdel
(または delgroup)
グループを削除します。
sudo groupdel oldgroup
usermod 既存のユーザーアカウントの情報を変更します。
  • -aG groupname username: ユーザーを既存のグループに追加 (Append, Group)
  • -l newname oldname: ユーザー名を変更 (Login name)
  • -d /new/home username: ホームディレクトリを変更 (Directory)
  • -s /bin/zsh username: ログインシェルを変更 (Shell)
sudo usermod -aG sudo myuser # myuserをsudoグループに追加
chown ファイルやディレクトリの所有者を変更します (Change Owner)。
  • chown user:group file: 所有者とグループを同時に変更
  • chown user file: 所有者のみ変更
  • chown :group file: グループのみ変更
  • -R: ディレクトリ内を再帰的に変更
sudo chown www-data:www-data /var/www/html/file.php
sudo chown -R user1:developers /opt/project
chgrp ファイルやディレクトリの所有グループを変更します (Change Group)。chown :group file と同等。
  • -R: ディレクトリ内を再帰的に変更
sudo chgrp developers /shared/document.txt
chmod ファイルやディレクトリのアクセス権限 (パーミッション) を変更します (Change Mode)。数値モード (8進数) と記号モードがあります。

数値モード: (所有者)(グループ)(その他)

  • 4: 読み取り (r)
  • 2: 書き込み (w)
  • 1: 実行 (x)
  • 例: 755 -> rwxr-xr-x, 644 -> rw-r--r--

記号モード: (対象)(操作)(権限)

  • 対象: u(user), g(group), o(others), a(all)
  • 操作: +(追加), -(削除), =(設定)
  • 権限: r, w, x
  • 例: chmod u+x file (所有者に実行権限を追加)
  • 例: chmod go-w file (グループとその他から書き込み権限を削除)
  • 例: chmod a=r file (全員に読み取り権限のみ設定)
  • -R: ディレクトリ内を再帰的に変更
chmod 755 script.sh
chmod 644 data.txt
chmod u+x script.sh
chmod -R go-w /sensitive/directory
umask 新規作成されるファイルやディレクトリのデフォルトパーミッションを設定します。表示される値は「差し引かれる」権限を示します (例: 022 は、ファイルなら 666-022=644、ディレクトリなら 777-022=755)。
umask # 現在のumask値を表示
umask 077 # 自分以外アクセス不可に設定

パッケージ管理 📦

ソフトウェア (パッケージ) のインストール、更新、削除。ディストリビューションによりコマンドが異なります。

Debian / Ubuntu (apt)

コマンド 説明
sudo apt update 利用可能なパッケージのリストを更新します。インストールやアップグレードの前に実行します。
sudo apt upgrade インストール済みの全パッケージを最新バージョンに更新します。
sudo apt full-upgrade パッケージを更新し、必要に応じて依存関係の解決のために古いパッケージを削除したり新しいパッケージをインストールしたりします。
sudo apt install <package_name> 指定したパッケージをインストールします。
sudo apt remove <package_name> 指定したパッケージを削除します (設定ファイルは残る場合があります)。
sudo apt purge <package_name> 指定したパッケージを完全に削除します (設定ファイルも含む)。
sudo apt autoremove 依存関係で自動インストールされたが、現在は不要になったパッケージを削除します。
apt search <keyword> キーワードに一致するパッケージを検索します。
apt show <package_name> 指定したパッケージの詳細情報を表示します。
apt list --installed インストール済みのパッケージ一覧を表示します。
apt list --upgradable アップグレード可能なパッケージ一覧を表示します。

RHEL / CentOS / Fedora (dnf / yum)

※ 最近のバージョンでは dnf が推奨されています。古いシステムでは yum を使用します。

コマンド (dnf / yum) 説明
sudo dnf check-update
sudo yum check-update
利用可能なパッケージの更新を確認します。
sudo dnf update
sudo yum update
インストール済みの全パッケージを最新バージョンに更新します。
sudo dnf install <package_name>
sudo yum install <package_name>
指定したパッケージをインストールします。
sudo dnf remove <package_name>
sudo yum remove <package_name>
指定したパッケージを削除します。
sudo dnf autoremove
sudo yum autoremove
依存関係でインストールされたが、現在は不要になったパッケージを削除します。
dnf search <keyword>
yum search <keyword>
キーワードに一致するパッケージを検索します。
dnf info <package_name>
yum info <package_name>
指定したパッケージの詳細情報を表示します。
dnf list installed
yum list installed
インストール済みのパッケージ一覧を表示します。
dnf provides <filename>
yum provides <filename>
指定したファイルを提供するパッケージを検索します。

圧縮とアーカイブ 🗜️

ファイルのアーカイブ化と圧縮・展開。

コマンド 説明 主なオプション / 使用例
tar 複数のファイルやディレクトリを1つのアーカイブファイル (.tar) にまとめたり、展開したりします (Tape Archive)。多くの場合、圧縮も同時に行います。

基本操作:

  • -c: 新しいアーカイブを作成 (Create)
  • -x: アーカイブを展開 (Extract)
  • -t: アーカイブの内容を表示 (List)
  • -v: 処理中のファイル名を表示 (Verbose)
  • -f <filename>: 操作対象のアーカイブファイルを指定 (File)

圧縮形式 (上記と組み合わせて使用):

  • -z: gzip (.gz) で圧縮/展開
  • -j: bzip2 (.bz2) で圧縮/展開
  • -J: xz (.xz) で圧縮/展開

使用例:

# gzip圧縮アーカイブを作成
tar -czvf archive.tar.gz directory/ file1.txt

# gzip圧縮アーカイブを展開
tar -xzvf archive.tar.gz

# bzip2圧縮アーカイブを作成
tar -cjvf archive.tar.bz2 directory/

# bzip2圧縮アーカイブを展開
tar -xjvf archive.tar.bz2

# xz圧縮アーカイブを作成
tar -cJvf archive.tar.xz directory/

# xz圧縮アーカイブを展開
tar -xJvf archive.tar.xz

# アーカイブの内容を表示 (gzip)
tar -tzvf archive.tar.gz
gzip / gunzip ファイルをgzip形式 (.gz) で圧縮/展開します。通常、元のファイルは削除されます。
gzip filename # filename.gz を作成
gunzip filename.gz # filename を展開
gzip -c filename > filename.gz # 元ファイルを残して圧縮
gunzip -c filename.gz > filename # 元ファイルを残して展開
bzip2 / bunzip2 ファイルをbzip2形式 (.bz2) で圧縮/展開します。gzipより圧縮率が高いことが多いですが、時間がかかります。
bzip2 filename # filename.bz2 を作成
bunzip2 filename.bz2 # filename を展開
xz / unxz ファイルをxz形式 (.xz) で圧縮/展開します。bzip2よりもさらに圧縮率が高いことが多いですが、時間もかかります。
xz filename # filename.xz を作成
unxz filename.xz # filename を展開
zip / unzip ファイルをzip形式 (.zip) で圧縮/展開します。Windows環境との互換性が高い。
zip archive.zip file1 dir1/ # アーカイブ作成
zip -r archive.zip directory/ # ディレクトリを再帰的に圧縮
unzip archive.zip # 展開
unzip -l archive.zip # 内容を表示

検索 🔍

ファイルやコマンド、テキストの検索。

コマンド 説明 主なオプション / 使用例
find ファイルシステム内を様々な条件 (名前、種類、サイズ、更新日時、パーミッションなど) でファイルを検索します。非常に強力。 (「ファイルとディレクトリ操作」セクションも参照)
  • find / -name "config.php": ルート以下で `config.php` という名前のファイルを検索
  • find . -type d: 現在のディレクトリ以下のディレクトリを検索
  • find /var/log -mtime +30 -type f -delete: `/var/log` 以下で30日以上更新されていないファイルを削除 ⚠️注意
  • find ~ -iname "*.jpg": ホームディレクトリ以下で拡張子が `.jpg` のファイルを大文字小文字無視で検索
  • find /etc -user root -perm /u=s: `/etc` 以下で所有者が root で SUID ビットが立っているファイルを検索
locate 事前に作成されたデータベースを使って高速にファイル名で検索します。データベースの更新が必要な場合があります (sudo updatedb)。
locate mydocument.txt
sudo updatedb # データベース更新
grep ファイルの内容から指定したパターン (文字列や正規表現) を検索します。 (「テキスト処理」セクションを参照)
grep -rl "API_KEY" /etc/
which 実行可能なコマンドのフルパスを検索して表示します。PATH環境変数で設定されたディレクトリ内を検索します。
which ls
which python3
whereis コマンドの実行ファイル、ソースファイル、マニュアルページの場所を検索します。
whereis bash

シェル操作とその他 ✨

コマンドラインの効率化、制御、便利なユーティリティ。

機能/コマンド 説明 主なオプション / 使用例
リダイレクション コマンドの標準入力、標準出力、標準エラー出力をファイルや他のコマンドに切り替えます。
  • > file: 標準出力をfileに上書き
  • >> file: 標準出力をfileに追記
  • < file: fileを標準入力にする
  • 2> file: 標準エラー出力をfileに上書き
  • &> file or >& file: 標準出力と標準エラー出力をfileに上書き
  • << EOF: ヒアドキュメント (複数行入力を指定)
ls -l > filelist.txt
command_that_errors 2> error.log
grep pattern < input.txt
パイプ | あるコマンドの標準出力を、別のコマンドの標準入力に繋ぎます。コマンドを連携させる基本的な方法。
ps aux | grep httpd | wc -l
cat access.log | cut -d ' ' -f 1 | sort | uniq -c | sort -nr
コマンド置換 コマンドの実行結果を、別のコマンドの引数や文字列の一部として埋め込みます。
  • $(command): (推奨される形式)
  • `command`: (バッククォート、古い形式)
echo "Today is $(date +%Y-%m-%d)"
cp important_file.txt backup_$(date +%F).txt
コマンド連結 複数のコマンドを1行で実行する方法を制御します。
  • ;: 前のコマンドが成功しても失敗しても、次のコマンドを実行
  • &&: 前のコマンドが成功した場合のみ、次のコマンドを実行 (AND)
  • ||: 前のコマンドが失敗した場合のみ、次のコマンドを実行 (OR)
cd /tmp ; pwd
make && sudo make install
ping -c 1 host || echo "Host is down"
alias / unalias 長いコマンドやよく使うオプション付きコマンドに短い別名を付けます (エイリアス)。unaliasで解除します。
alias ll='ls -lah'
alias update='sudo apt update && sudo apt upgrade -y'
unalias ll
alias # 設定されているエイリアス一覧を表示

(通常 ~/.bashrc~/.zshrc に記述して永続化)

環境変数 シェルの動作やプログラムの挙動に影響を与える変数。exportで子プロセスに引き継がれます。
  • export VAR_NAME="value": 環境変数を設定
  • unset VAR_NAME: 環境変数を削除
  • env or printenv: 現在の環境変数一覧を表示
  • echo $VAR_NAME: 特定の環境変数の値を表示
export PATH=$PATH:/usr/local/bin
printenv HOME
履歴 history 過去に実行したコマンドの履歴を表示・再実行します。
  • history: コマンド履歴を表示
  • !N: 履歴番号Nのコマンドを実行
  • !!: 直前のコマンドを実行
  • !-N: N個前のコマンドを実行
  • !string: ‘string’で始まる直近のコマンドを実行
  • Ctrl+R: 履歴をインクリメンタル検索
ワイルドカード ファイル名を指定する際に、複数のファイルをまとめて扱うための特殊文字。
  • *: 任意の0文字以上の文字列に一致
  • ?: 任意の1文字に一致
  • []: 角括弧内のいずれか1文字に一致 (例: [abc], [0-9])
ls *.log
rm file?.txt
cp image[0-9][0-9].jpg /backup/
ブレース展開 {} カンマ区切りや連番のリストを展開して複数の文字列を生成します。ファイル操作などで便利。
echo file{1,2,3}.txt # file1.txt file2.txt file3.txt
mkdir /data/{raw,processed,backup} # 3つのディレクトリを作成
touch report_{2023..2025}.md
read 標準入力から1行読み込み、シェル変数に代入します。スクリプトで対話的な入力を受け付ける際に使用。
echo -n "Enter your name: "; read user_name; echo "Hello, $user_name"
echo 引数として与えられた文字列や変数の値を標準出力に表示します。
  • -n: 末尾の改行を出力しない
  • -e: バックスラッシュによるエスケープシーケンス (\n, \t など) を解釈
echo "Processing file: $filename"
printf 書式を指定して文字列や数値を標準出力に表示します。echoより高機能。
printf "Name: %-10s Age: %d\n" "Alice" 30
xargs 標準入力から受け取ったリストを、後続のコマンドの引数として渡して実行します。find と組み合わせて使われることが多い。
find . -name "*.tmp" | xargs rm -f
cat urllist.txt | xargs wget
tee 標準入力から読み込んだデータを、標準出力と指定したファイルの両方に出力します。ログを取りながら画面でも確認したい場合に便利。
  • -a: ファイルに追記 (Append)
some_command | tee output.log
ls -l | tee filelist.txt | grep ".sh"
script ターミナルセッションの全内容(入力と出力)をファイルに記録します。
script session.log # 記録開始
exit # 記録終了
clear ターミナルの画面をクリアします。
clear
(ショートカット: Ctrl+L)

コメント

タイトルとURLをコピーしました