ESC
Bash / ターミナルコマンド

ナビゲーション

コマンド オプション 出力 説明
ls -la, -lh, -R ls -la /etc ファイル一覧 ディレクトリの内容を一覧表示;-l 詳細形式、-a 隠しファイル表示、-h サイズを人間が読みやすい形式で表示
cd -, ~, .. cd ~/projects ディレクトリ移動 ディレクトリを変更;cd - で直前のディレクトリへ戻る、cd ~ でホームへ移動
pwd pwd /home/user 現在の作業ディレクトリのフルパスを表示
tree -L n, -a tree -L 2 ツリー表示 ディレクトリツリーを表示;-L で深さを制限(要インストールの場合あり)
find -name -type -mtime find . -name '*.log' ファイルパス 条件に一致するファイル・ディレクトリを検索
locate -i locate nginx.conf ファイルパス データベースインデックスを使った高速ファイル検索;事前に updatedb を実行すること

ファイル操作

コマンド オプション 出力 説明
cp -r, -i, -u cp -r src/ dst/ ファイルをコピー ファイルをコピー;-r でディレクトリを再帰的にコピー、-i で上書き前に確認
mv -i, -n mv old.txt new.txt 移動・名前変更 ファイルの移動または名前変更;-i で上書き前に確認
rm -r, -f, -i rm -rf dist/ 削除済み ファイル・ディレクトリを削除;-r 再帰的、-f 強制削除 — 慎重に使用すること
mkdir -p mkdir -p a/b/c 新規ディレクトリ ディレクトリを作成;-p で必要な親ディレクトリも合わせて作成
touch touch index.html 空ファイル 空のファイルを作成、またはファイルのタイムスタンプを更新
ln -s ln -s /etc/nginx nginx シンボリックリンク ハードリンクを作成;-s でシンボリックリンク(symlink)を作成

ファイル表示

コマンド オプション 出力 説明
cat -n, -A cat -n file.txt ファイル内容 ファイルを表示;-n で行番号を付加、-A で印字不可能な文字を表示
head -n N head -n 20 log.txt 先頭 N 行 ファイルの先頭行を表示(デフォルトは10行)
tail -n N, -f tail -f app.log 末尾 N 行 末尾行を表示;-f でリアルタイムに新しい内容を追跡
less /search, q less large.log ページ表示 ファイルをページ単位で閲覧;/ で検索、q で終了、スペースでページ送り
wc -l, -w, -c wc -l file.txt カウント 文字・単語・行を数える;-l 行数、-w 単語数、-c バイト・文字数

検索とテキスト処理

コマンド オプション 出力 説明
grep -r -i -n -v -E grep -rn 'error' logs/ 一致した行 テキストパターンを検索;-r 再帰的、-i 大文字小文字を区別しない、-n 行番号を表示
grep -v grep -v 'debug' app.log 不一致の行 一致を反転 — パターンを含まない行を表示
grep -E grep -E 'warn|error' log 一致した行 拡張 regex を使用 — | で OR、+ で1回以上の繰り返し
awk '{print $N}' awk '{print $1}' f 列の値 パターン・アクション型テキスト処理;$1 で先頭フィールド、$NF で最後のフィールドを参照
sed -i 's/a/b/g' sed -i 's/foo/bar/g' f 変換後テキスト ストリームエディタ;s/検索/置換/g でグローバルに置換
sort -n -r -k N sort -n numbers.txt ソート済み出力 行をソート;-n 数値順、-r 逆順、-k で列 N を基準にソート
uniq -c, -d sort f | uniq -c ユニーク行 隣接する重複行を削除;通常は sort の後にパイプで使用

パーミッション

コマンド オプション 出力 説明
chmod 755, 644, +x chmod +x script.sh パーミッション変更 ファイルのパーミッションを変更;755=rwxr-xr-x、644=rw-r--r--
chown -R user:group chown -R www-data:www-data /var/www 所有者変更 ファイルの所有者とグループを変更;-R で再帰的に変更
ls -la ls -la /var/www パーミッション一覧 すべてのファイルのパーミッション・所有者・グループ・サイズを表示
umask 022, 027 umask 022 デフォルトパーミッション 新規ファイルのデフォルトパーミッションマスクを設定(022 → ファイルは 644)
sudo -u user sudo systemctl restart nginx 昇格実行 スーパーユーザーとしてコマンドを実行;-u で別のユーザーとして実行

プロセス管理

コマンド オプション 出力 説明
ps aux, -ef ps aux | grep nginx プロセス一覧 プロセスを一覧表示;aux=全ユーザー、-ef=フルフォーマット
top q, k, M top リアルタイム表示 インタラクティブなプロセスモニタ;q で終了、k でkill、M でメモリ順にソート
htop F3, F9 htop リアルタイム表示 カラー表示の拡張版 top;F3 で検索、F9 でkill(要インストールの場合あり)
kill -9, -15 kill -9 1234 シグナル送信 PID にシグナルを送信;-15 SIGTERM(正常終了)、-9 SIGKILL(強制終了)
killall -9, -u killall node シグナル送信 名前で指定したすべてのプロセスを終了
jobs -l jobs -l ジョブ一覧 現在のシェルのバックグラウンド・停止中のジョブを一覧表示
bg / fg %N fg %1 再開 bg でジョブをバックグラウンドへ、fg でフォアグラウンドへ戻す

ネットワーク

コマンド オプション 出力 説明
curl -o -L -X -H -d curl -O https://example.com/f レスポンス HTTP/FTP でデータ転送;-L リダイレクトを追跡、-o ファイルに保存
wget -O -r -q wget -q https://example.com 保存済みファイル ファイルをダウンロード;-O 出力ファイル名を指定、-r 再帰的、-q 静かに実行
ping -c N ping -c 4 google.com RTT ミリ秒 ネットワーク疎通を確認;-c でパケット送信回数を制限
ssh -i -p -L ssh user@host -p 2222 シェル接続 セキュアシェル接続;-i 鍵ファイル、-p ポート番号、-L ローカルポートフォワード
scp -r -P -i scp file user@host:~/ コピー済み SSH 経由でファイルを安全にコピー;-r 再帰的、-P ポート番号(大文字)
netstat -tuln netstat -tuln ポート一覧 ネットワーク接続を表示;-t TCP、-u UDP、-l リスニング、-n 数値表示
ss -tuln ss -tuln ポート一覧 netstat の新しい代替コマンド;より高速で詳細な情報を提供

アーカイブと圧縮

コマンド オプション 出力 説明
tar -czf -czf out.tar.gz tar -czf arc.tar.gz dir/ アーカイブ gzip 圧縮 tarball を作成;c=作成、z=gzip 圧縮、f=ファイル名指定
tar -xzf -xzf file.tar.gz tar -xzf arc.tar.gz -C /tmp 展開済み gzip tarball を展開;x=展開、-C で展開先ディレクトリを指定
tar -tf tar -tf archive.tar.gz ファイル一覧 展開せずに tarball の内容を一覧表示
zip -r, -9 zip -r out.zip dir/ zip ファイル zip アーカイブを作成;-r 再帰的、-9 最大圧縮
unzip -d, -l unzip archive.zip -d out/ 展開済み zip を展開;-d 展開先ディレクトリ、-l 展開せずに内容を一覧表示
gzip / gunzip -k, -d gzip -k file.txt 圧縮済み 単一ファイルを gzip 圧縮;-k 元ファイルを保持、gunzip で解凍

環境とシェル

コマンド オプション 出力 説明
env env | grep PATH 変数=値 すべての環境変数を表示;grep とパイプで絞り込み可能
export export NODE_ENV=production 変数設定 現在のセッションと子プロセスに環境変数を設定
echo $VAR echo $HOME 変数の値 変数の値を表示;文字列内で曖昧さを避けるには ${VAR} を使用
which which node パス コマンドの実行ファイルのフルパスを表示
alias alias ll='ls -la' ショートカット コマンドのショートカットを作成;永続化するには ~/.bashrc に追記
source source ~/.bashrc 再読み込み 現在のシェルコンテキストでファイルを実行(. ~/.bashrc でも可)
history !N, !! history | tail -20 コマンド履歴 コマンド履歴を表示;!! で最後のコマンドを再実行、!N で N 番目のコマンドを実行

Git クイックリファレンス

コマンド オプション 出力 説明
git init git init my-project リポジトリ作成 ディレクトリに新しい Git リポジトリを初期化
git clone --depth 1 git clone url リポジトリをクローン リモートリポジトリをクローン;--depth 1 で shallow clone
git status -s git status -s 変更状態 作業ツリーの状態を表示;-s で短縮形式
git add -A, -p git add -p ステージ済み 変更をステージングエリアに追加;-A で全変更、-p でインタラクティブなパッチモード
git commit -m, --amend git commit -m 'msg' コミット済み ステージした変更をコミット;--amend で直前のコミットを修正
git push -u origin git push -u origin main プッシュ済み リモートにプッシュ;-u で上流トラッキングブランチを設定
git pull --rebase git pull --rebase 同期済み リモートの変更を取得して統合;--rebase でマージの代わりにリベース
git log --oneline --graph git log --oneline -10 履歴 コミット履歴を表示;--oneline でコンパクト表示、--graph でブランチをビジュアル表示
git stash pop, list git stash pop 復元済み 未コミットの作業を一時退避;pop で復元
git diff --staged git diff --staged 差分 変更を表示;--staged でステージ済みだが未コミットの変更を表示

よくある質問

sh(Bourne Shell)はPOSIXによって標準化されたオリジナルのUnixシェルです。bash(Bourne Again Shell)はその後継であり上位セットで、配列、拡張テスト構文[[]]、算術展開$(( ))、履歴、タブ補完などを追加します。ほとんどのLinuxシステムでは/bin/shはbashまたはdash(POSIXのみの軽量シェル)へのシンボリックリンクです。

3つのステップ:(1)最初の行としてshebang行を追加:#!/bin/bash。(2)chmod +x script.shで実行可能にする。(3)./script.shで実行する(現在のディレクトリはデフォルトで$PATHにないため./が必要です)。どこからでも実行するには、PATHのディレクトリに移動:mv script.sh ~/bin/。

Bashには3つの標準ストリームがあります:stdin(0)、stdout(1)、stderr(2)。stdoutをファイルへリダイレクト:command > file.txt(上書き)またはcommand >> file.txt(追加)。stderrリダイレクト:command 2> errors.txt。両方リダイレクト:command > output.txt 2>&1。出力を破棄:command > /dev/null 2>&1。stdoutをパイプ:command1 | command2。