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 file | teeで追記モード |
| command > /dev/null 2>&1 | 出力を破棄 |
変数と環境変数
変数の基本
| 構文 | 説明 |
|---|---|
| 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文
if-elif-else文
テスト演算子
| 構文 | 説明 |
|---|---|
| -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文
ループ
基本的なforループ
C言語スタイルのforループ
whileループ
untilループ
ループ制御
| コマンド | 説明 |
|---|---|
| break | ループを終了 |
| continue | 次のイテレーションにスキップ |
関数
基本的な関数
戻り値のある関数
関数の引数
| 構文 | 説明 |
|---|---|
| $1 | 1番目の引数 |
| $2 | 2番目の引数 |
| $@ | 全ての引数 |
| $# | 引数の個数 |
| return [n] | 関数の終了ステータスを返す(0-255) |
| local var="value" | ローカル変数を定義 |
文字列操作
文字列操作
| 構文 | 説明 |
|---|---|
| ${#string} | 文字列の長さ |
| ${string:offset:length} | 部分文字列の取得(位置:長さ) |
| ${string/pattern/replacement} | 最初のマッチを置換 |
| ${string//pattern/replacement} | 全てのマッチを置換 |
| ${string#pattern} | 先頭から最短一致を削除 |
| ${string%pattern} | 末尾から最短一致を削除 |
| ${string^^} | 大文字に変換 |
| ${string,,} | 小文字に変換 |
正規表現マッチング
便利なワンライナー
よく使うワンライナー
| コマンド | 説明 |
|---|---|
| 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 f | 100MB以上のファイルを検索 |
| sort file.txt | uniq -c | sort -rn | テキストの出現頻度順にソート |
| find . -name "*.log" | xargs -P 4 gzip | xargsで並列実行 |
| cut -d',' -f2 data.csv | CSVの特定の列を抽出 |
引用・参考リンク
Related Cheatsheets
- Linuxコマンド-Linuxの基本的なコマンドのチートシートです。ファイル操作、テキスト処理、プロセス管理、ネットワーク、システム情報など、日常的に使用するコマンドをまとめました。
- Git-Gitとはソースコードの変更履歴を記録・追跡するための分散型バージョン管理システムです。過去のファイルの状態に戻したり、チームで変更履歴を共有して効率良くチーム開発を行うことができます。 そんな便利なGitをチートシートにまとめてみました。
- Vim-Vimは高機能なテキストエディタです。 モード操作、移動、編集、検索・置換、ウィンドウ操作など、よく使うキーバインドをチートシートにまとめました。
- パッケージマネージャー-npm、yarn、pnpmの3つのJavaScriptパッケージマネージャーのコマンド比較チートシートです。 インストール、アップデート、削除など、日常的に使うコマンドを対比表形式でまとめました。
Related Goods
WebTerm - Recommended tools
WebTermは、ブラウザでLinuxコマンド・Gitコマンドを安全に実行でき、チュートリアル式で学べるターミナルサンドボックスです。
AIコーディングツールの普及に伴い、CLIの基礎知識を身につける重要性は増しています。実際のターミナルを操作するのに抵抗がある方でも、WebTermはローカル環境を壊す心配がありません。「会員登録不要・無料」で利用でき、学習環境として最適です。

WebTerm
Browser Terminal Sandbox for Learning CLI
開く
All Cheatsheets
エンジニア・プログラマー向けの便利なチートシートを多数まとめています(SP/Tablet/PC対応)
すべてのチートシートを見る



