CheatSheet
日本語 icon日本語English iconEnglish
チートシートとはカンニングペーパーのことです。それが転じて、本来覚えることをまとめておいたものです。
要点をすぐに参照できるようにまとめてみました。

Bash / Shell

エンジニアのためのWebチートシート

Bash(Bourne Again Shell)のチートシートです。 ファイル操作、テキスト処理、変数、条件分岐、ループ、関数など、シェルスクリプトの基本をまとめました。

基本コマンド

ナビゲーション

コマンド説明
cd [dir]ディレクトリを移動
cd ~ホームディレクトリに移動
cd ..親ディレクトリに移動
cd -直前のディレクトリに戻る
lsディレクトリの内容を一覧表示
ls -l詳細情報(権限、所有者、サイズ、日時)を表示
ls -a隠しファイル(.で始まるファイル)も表示
ls -la隠しファイルを含む詳細一覧を表示
pwd現在のディレクトリのパスを表示

ファイル操作

コマンド説明
cp [src] [dst]ファイルをコピー
cp -r [src] [dst]ディレクトリを再帰的にコピー
mv [src] [dst]ファイル/ディレクトリを移動または名前変更
rm [file]ファイルを削除
rm -r [dir]ディレクトリを再帰的に削除
rm -f [file]確認なしで強制削除
mkdir [dir]新しいディレクトリを作成
mkdir -p [dir/sub]親ディレクトリも含めて作成
touch [file]空のファイルを作成、または更新日時を変更

ファイル内容

ファイルの表示

コマンド説明
cat [file]ファイルの内容を表示
head [file]ファイルの先頭部分(デフォルト10行)を表示
head -n 20 [file]先頭のn行を表示
tail [file]ファイルの末尾部分(デフォルト10行)を表示
tail -f [file]ファイルの末尾をリアルタイムで監視
less [file]ファイルをページ単位で表示(スクロール可能)

検索・カウント

コマンド説明
grep [pattern] [file]パターンに一致する行を検索
grep -r [pattern] [dir]ディレクトリ内を再帰的に検索
grep -i [pattern] [file]大文字小文字を区別しない
grep -v [pattern] [file]パターンに一致しない行を表示
grep -c [pattern] [file]一致した行数のみ表示
find [path]ファイルやディレクトリを検索
find . -name "*.txt"名前でファイルを検索
find . -type fタイプで検索(f:ファイル、d:ディレクトリ)
find . -name "*.log" -exec rm {} \;検索結果に対してコマンドを実行
wc [file]行数、単語数、バイト数をカウント
wc -l [file]行数のみカウント
wc -w [file]単語数のみカウント

パーミッション

権限管理

コマンド説明
chmod +x [file]ファイルの権限を変更(シンボリック)
chmod 755 [file]数値で権限を指定(755など)
chmod -R 755 [dir]再帰的に権限を変更
chown [user]:[group] [file]ファイルの所有者を変更
chown -R [user]:[group] [dir]再帰的に所有者を変更
umask現在のumask値を表示
umask 022デフォルトの権限マスクを設定

権限の数値: r=4, w=2, x=1(例: 755 = rwxr-xr-x)

プロセス管理

プロセスの確認

コマンド説明
ps実行中のプロセスを表示
ps aux全プロセスを詳細表示
topリアルタイムでプロセスを監視

プロセスの制御

コマンド説明
kill [pid]プロセスを終了
kill -9 [pid]プロセスを強制終了(SIGKILL)
kill -15 [pid]プロセスを正常終了(SIGTERM)
bg %[job]停止中のジョブをバックグラウンドで実行
fg %[job]バックグラウンドジョブをフォアグラウンドに
jobsバックグラウンドジョブを一覧表示
nohup [command] &ログアウト後もプロセスを継続実行

入出力リダイレクト

リダイレクト・パイプ

構文説明
command > file標準出力をファイルに書き込み(上書き)
command >> file標準出力をファイルに追記
command < fileファイルから標準入力を読み込み
command 2> file標準エラー出力をファイルにリダイレクト
command 2>&1標準エラーを標準出力にリダイレクト
cmd1 | cmd2コマンドの出力を次のコマンドの入力に渡す
command | tee file標準出力をファイルと画面の両方に出力
command | tee -a fileteeで追記モード
command > /dev/null 2>&1出力を破棄
# ヒアドキュメント(複数行の入力)
cat << 'EOF'
line 1
line 2
line 3
EOF

変数と環境変数

変数の基本

構文説明
NAME="value"変数に値を代入(=の前後にスペースを入れない)
$NAME / ${NAME}変数の値を参照
readonly NAME="value"読み取り専用変数を定義
unset NAME変数を削除
${NAME:-default}変数が未設定の場合にデフォルト値を使用
${NAME:=default}変数が未設定の場合にデフォルト値を代入
${NAME:?error message}変数が未設定の場合にエラーを表示

環境変数

コマンド説明
export NAME="value"変数を環境変数としてエクスポート
env現在の環境変数を一覧表示
$PATHコマンドの検索パス
$HOMEホームディレクトリのパス
$USER現在のユーザー名
$SHELL使用中のシェルのパス

特殊変数

構文説明
$0スクリプト名
$1, $2, ...n番目の引数
$#引数の個数
$@全ての引数(個別に展開)
$*全ての引数(1つの文字列として展開)
$?直前のコマンドの終了ステータス
$$現在のシェルのプロセスID
$!直前のバックグラウンドプロセスのPID

条件分岐

基本的なif文

#!/bin/bash

if [[ -f "file.txt" ]]; then
    echo "File exists"
fi

if-elif-else文

#!/bin/bash

if [[ $num -gt 10 ]]; then
    echo "Greater than 10"
elif [[ $num -eq 10 ]]; then
    echo "Equal to 10"
else
    echo "Less than 10"
fi

テスト演算子

構文説明
-f file通常ファイルかどうか
-d dirディレクトリかどうか
-e pathファイルが存在するかどうか
-r file読み取り可能かどうか
-w file書き込み可能かどうか
-x file実行可能かどうか
-s fileファイルサイズが0より大きいかどうか
n1 -eq n2数値が等しい
n1 -ne n2数値が等しくない
n1 -gt n2数値が大きい
n1 -lt n2数値が小さい
n1 -ge n2数値が以上
n1 -le n2数値が以下
-z string文字列が空
-n string文字列が空でない
str1 == str2文字列が等しい(パターンマッチ対応)
str1 != str2文字列が等しくない

case文

#!/bin/bash

case "$1" in
    start)
        echo "Starting..."
        ;;
    stop)
        echo "Stopping..."
        ;;
    restart)
        echo "Restarting..."
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

ループ

基本的なforループ

#!/bin/bash

# List iteration
for item in apple banana cherry; do
    echo "$item"
done

# File iteration
for file in *.txt; do
    echo "Processing $file"
done

# Command substitution
for user in $(cat users.txt); do
    echo "User: $user"
done

# Range
for i in {1..5}; do
    echo "Number: $i"
done

# Range with step
for i in {0..20..5}; do
    echo "Value: $i"
done

C言語スタイルのforループ

#!/bin/bash

for ((i = 0; i < 10; i++)); do
    echo "Index: $i"
done

whileループ

#!/bin/bash

count=0
while [[ $count -lt 5 ]]; do
    echo "Count: $count"
    ((count++))
done

# Read file line by line
while IFS= read -r line; do
    echo "$line"
done < input.txt

untilループ

#!/bin/bash

count=0
until [[ $count -ge 5 ]]; do
    echo "Count: $count"
    ((count++))
done

ループ制御

コマンド説明
breakループを終了
continue次のイテレーションにスキップ

関数

基本的な関数

#!/bin/bash

# Syntax 1
function greet() {
    echo "Hello, $1!"
}

# Syntax 2 (POSIX compatible)
greet() {
    echo "Hello, $1!"
}

# Call
greet "World"

戻り値のある関数

#!/bin/bash

is_even() {
    if (( $1 % 2 == 0 )); then
        return 0  # true
    else
        return 1  # false
    fi
}

if is_even 4; then
    echo "4 is even"
fi

# Capture output as return value
get_date() {
    local result=$(date +%Y-%m-%d)
    echo "$result"
}

today=$(get_date)
echo "Today: $today"

関数の引数

構文説明
$11番目の引数
$22番目の引数
$@全ての引数
$#引数の個数
return [n]関数の終了ステータスを返す(0-255)
local var="value"ローカル変数を定義
#!/bin/bash

# Example with multiple arguments
log_message() {
    local level="$1"
    shift
    local message="$@"
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $message"
}

log_message "INFO" "Application started"
log_message "ERROR" "Connection failed"

文字列操作

文字列操作

構文説明
${#string}文字列の長さ
${string:offset:length}部分文字列の取得(位置:長さ)
${string/pattern/replacement}最初のマッチを置換
${string//pattern/replacement}全てのマッチを置換
${string#pattern}先頭から最短一致を削除
${string%pattern}末尾から最短一致を削除
${string^^}大文字に変換
${string,,}小文字に変換
#!/bin/bash

str="Hello, World!"

# Length
echo ${#str}         # 13

# Substring
echo ${str:0:5}      # Hello

# Replace
echo ${str/World/Bash}   # Hello, Bash!

# Remove prefix
path="/home/user/file.txt"
echo ${path##*/}     # file.txt

# Remove suffix
echo ${path%/*}      # /home/user

filename="archive.tar.gz"
echo ${filename%%.*}  # archive
echo ${filename#*.}   # tar.gz

正規表現マッチング

#!/bin/bash

email="user@example.com"

if [[ $email =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$ ]]; then
    echo "Valid email"
    echo "Match: ${BASH_REMATCH[0]}"
fi

便利なワンライナー

よく使うワンライナー

コマンド説明
find . -name "*.txt" -exec sed -i 's/old/new/g' {} +ファイル内の文字列を一括置換
find . -type f | wc -lディレクトリ内のファイル数をカウント
du -sh */ | sort -rh | head -10ディスク使用量の大きいディレクトリTOP10
lsof -i :8080特定のポートを使用しているプロセスを確認
tail -f /var/log/syslog | grep --line-buffered "ERROR"特定のパターンを含むログをリアルタイム監視
cp file.txt file.txt.$(date +%Y%m%d_%H%M%S).bakタイムスタンプ付きバックアップの作成
find . -size +100M -type f100MB以上のファイルを検索
sort file.txt | uniq -c | sort -rnテキストの出現頻度順にソート
find . -name "*.log" | xargs -P 4 gzipxargsで並列実行
cut -d',' -f2 data.csvCSVの特定の列を抽出

引用・参考リンク

Related Goods

  • Linux OSの操作に必要なLinuxコマンドを「200本ノック」というコンセプトで学べます。
    Linux OSの操作に必要なLinuxコマンドを「200本ノック」というコンセプトで学べます。
    詳細をみる
  • エンジニアとして必須のLinuxの知識を豊富な図解付きで解説。
ソースコードは今風にGo, Pythonにアップデートされています。
    エンジニアとして必須のLinuxの知識を豊富な図解付きで解説。 ソースコードは今風にGo, Pythonにアップデートされています。
    詳細をみる
  • Vimを何気なく使っている方にこそおすすめしたい一冊!
目から鱗の機能が見つかるはずです。
    Vimを何気なく使っている方にこそおすすめしたい一冊! 目から鱗の機能が見つかるはずです。
    詳細をみる
  • ケーブルに取り付け可能なTypeCとLightningの変換アダプタです。
スタイリッシュなデザインで、Apple製品との相性抜群です。
    ケーブルに取り付け可能なTypeCとLightningの変換アダプタです。 スタイリッシュなデザインで、Apple製品との相性抜群です。
    詳細をみる
  • お気に入りのサウンドデバイスをすぐ取り出せる位置にディスプレイさせておくことができます。
    お気に入りのサウンドデバイスをすぐ取り出せる位置にディスプレイさせておくことができます。
    詳細をみる

WebTerm - Recommended tools

WebTermは、ブラウザでLinuxコマンド・Gitコマンドを安全に実行でき、チュートリアル式で学べるターミナルサンドボックスです。
AIコーディングツールの普及に伴い、CLIの基礎知識を身につける重要性は増しています。実際のターミナルを操作するのに抵抗がある方でも、WebTermはローカル環境を壊す心配がありません。「会員登録不要・無料」で利用でき、学習環境として最適です。

WebTerm Logo

WebTerm

Browser Terminal Sandbox for Learning CLI

開く

All Cheatsheets

エンジニア・プログラマー向けの便利なチートシートを多数まとめています(SP/Tablet/PC対応)
すべてのチートシートを見る