Linux

よく使うコマンドとオプション

目的からコマンドを選び、オプションの意味を理解して組み合わせましょう。

01

書式とオプションの読み方

マニュアルのcommand [OPTION]... FILE...では、角括弧は省略可能、...は複数指定可能という意味です。角括弧自体は入力しません。

短い形式と長い形式COMMAND
ls -a -l
ls -al
ls --all --format=long

上の3つは概ね同じ指定です。短いオプションはまとめられる場合がありますが、引数を取るオプションの位置には注意します。

確認方法用途
command --help短い使い方を端末に表示
man command詳しいマニュアルを表示
type command外部コマンド、組み込み、別名のどれか確認
command -v name実行されるコマンドの場所を確認
コマンドの種類COMMAND
type cd
command -v ls
Bashでの表示例OUTPUT
cd is a shell builtin
/usr/bin/ls
02

移動と一覧:pwd・cd・ls

コマンド/指定意味
pwd現在のディレクトリを絶対パスで表示
cd pathpathへ移動
cd ..cd ~cd -一つ上/ホーム/直前へ移動
ls -l権限、所有者、容量、日時を長い形式で表示
ls -aドットで始まる項目も表示
ls -h-lの容量をKiB、MiBなどで読みやすく表示
ls -t-r更新日時順/並びを逆順
ls -d */現在地のディレクトリ名だけを表示
新しい順に詳細表示COMMAND
ls -lahtr

-l -a -h -t -rの組み合わせです。-tで新しい順にした後、-rで反転するため古い項目が先になります。

03

ファイル操作:mkdir・touch・cp・mv・rm

意味
mkdir -p a/b親も含めて作成。存在済みでもエラーにしない
touch file空ファイル作成。存在すれば日時を更新
cp -i source destコピー。上書き前に確認
cp -r dir backupディレクトリを再帰コピー
cp -a source backup属性を保ちながら再帰コピー
mv -i old new移動・改名。上書き前に確認
rm -i file削除前に確認
rmdir empty-dir空ディレクトリだけを削除
練習例COMMAND
mkdir -p ~/linux-practice/commands/docs
touch ~/linux-practice/commands/docs/memo.txt
cp -iv ~/linux-practice/commands/docs/memo.txt ~/linux-practice/commands/memo-copy.txt
表示例OUTPUT
'.../docs/memo.txt' -> '.../memo-copy.txt'
危険な組み合わせ rm -rは配下、-fは確認なしで削除します。特にsudo、変数、*と組み合わせず、まずpwdls -- targetで対象を確認してください。--は以降をオプションではなく名前として扱わせます。
04

内容表示:cat・less・head・tail

意味
cat file全内容を標準出力へ表示
cat -n file全行へ行番号を付ける
less file長い内容をスクロール表示。qで終了
head -n 5 file先頭5行
tail -n 20 file末尾20行
tail -f app.log追記を監視。Ctrl+Cで終了
行番号付き表示COMMAND
printf 'red\ngreen\nblue\n' > colors.txt
cat -n colors.txt
実行結果OUTPUT
     1  red
     2  green
     3  blue

バイナリファイルをcatすると端末表示が乱れることがあります。種類が不明なら先にfile filenameで確認します。

06

テキスト処理:sort・uniq・wc・cut・tr

意味
sort file行を文字順に並べる
sort -n-r数値順/逆順
uniq -c連続する同じ行を数える。通常sortと併用
wc -l-w-c行数/単語数/バイト数
cut -d, -f2カンマ区切りの2列目
tr 'a-z' 'A-Z'標準入力の小文字を大文字へ置換
tee file画面表示しながらファイルにも保存
xargs標準入力をコマンド引数へ変換。空白を含む名前に注意
値を数えるCOMMAND
printf 'apple\norange\napple\n' | sort | uniq -c
実行結果OUTPUT
      2 apple
      1 orange

CSVには引用符や改行を含められるため、複雑なCSVをcutだけで正確に解析することはできません。専用ツールやプログラミング言語のCSVライブラリを使います。

07

容量とシステム情報:df・du・free・uname

意味
df -hファイルシステム単位の空き容量を読みやすく表示
du -sh pathpathが使用する合計容量
du -h --max-depth=1直下ごとの容量。GNU版で利用可能
free -hメモリとスワップの使用状況
uname -aカーネルを含むシステム情報
uptime稼働時間とロードアベレージ
date '+%F %T'年月日と時刻を指定形式で表示
容量を確認COMMAND
df -h /
du -sh ~/linux-practice
表示例OUTPUT
Filesystem Size Used Avail Use% Mounted on
/dev/vda1   40G  12G   26G  32% /
24K /home/mity/linux-practice

dfはファイルシステム全体、duは指定した項目を走査した合計です。削除済みファイルをプロセスが開いたままの場合など、値が一致しないことがあります。

08

プロセス:ps・pgrep・kill・jobs

意味
ps aux全ユーザーのプロセスを詳細表示
ps -ef親子関係を含む別形式の全プロセス表示
pgrep -a name名前に一致するPIDとコマンド行
topCPU・メモリ使用状況を継続表示。qで終了
jobs -l現在のシェルのバックグラウンドジョブ
kill PIDPIDへSIGTERMを送信
kill -lシグナル一覧
安全な練習COMMAND
sleep 60 &
pgrep -a sleep
kill $!
表示例OUTPUT
4210 sleep 60

$!は直前にバックグラウンド実行したプロセスのPIDです。他の利用者やシステムのPIDを確認せず終了させないでください。

09

ネットワーク:ip・ss・getent・curl

意味
ip -brief addressインターフェースとアドレスを短く表示
ip route経路表を表示
ss -lntTCP待受を数値で表示
ss -lntp可能ならプロセスも表示
getent hosts nameシステム設定に従い名前解決
curl -I URLHTTPレスポンスヘッダーを取得
curl -L URLリダイレクトに追従
curl -fS URLHTTPエラーを失敗にする。-S-s併用時もエラーを表示
HTTP状態を表示COMMAND
curl -sS -o /dev/null -w '%{http_code}\n' https://example.com/
表示例OUTPUT
200

-sSは通常の進捗を消しつつエラーを表示、-o /dev/nullは本文を捨て、-wは指定情報を表示します。URLから取得したスクリプトをそのままシェルへ渡さないでください。

10

アーカイブ:tar・gzip・zip

意味
tar -cf a.tar dirtarアーカイブを作成
tar -czf a.tar.gz dirgzip圧縮して作成
tar -tf a.tar展開せず内容一覧
tar -xzf a.tar.gz -C destdestへ展開
gzip filegunzip file.gz単一ファイルの圧縮/展開
zip -r a.zip dirZIPを再帰作成。別途導入の場合あり
unzip -l a.zipZIPの内容一覧
内容を確認して展開COMMAND
tar -czf docs.tar.gz docs
tar -tzf docs.tar.gz
mkdir -p restored
tar -xzf docs.tar.gz -C restored
展開前に一覧を見る 信頼できないアーカイブには、現在地の外を指すパスや既存ファイルと同じ名前が含まれる可能性があります。空の練習ディレクトリへ展開します。
11

パイプ・リダイレクト・終了ステータス

記号意味
|左の標準出力を右の標準入力へ渡す
>>>標準出力を上書き保存/追記
2>標準エラー出力を保存
&>標準出力と標準エラーを保存(Bash)
&&左が成功したときだけ右を実行
||左が失敗したときだけ右を実行
$?直前の終了ステータス。通常0は成功
"$name"変数展開後も一つの引数として扱う
成功時だけ続けるCOMMAND
mkdir -p output && printf 'done\n' > output/result.txt
cat output/result.txt
echo $?
実行結果OUTPUT
done
0
変数は引用する rm $fileでは空白やワイルドカードが再解釈されます。通常はrm -- "$file"のように引用し、オプションの終端も示します。
PRACTICE

ミニ課題:大きいログを探して集計する

練習ディレクトリから.logを探し、ERRORを含む行数をファイル別に表示してください。

準備と解答例COMMAND
mkdir -p ~/linux-practice/logs
printf 'INFO\nERROR\nERROR\n' > ~/linux-practice/logs/app.log
grep -Hc 'ERROR' ~/linux-practice/logs/*.log
実行結果OUTPUT
/home/mity/linux-practice/logs/app.log:2

-Hはファイル名、-cは一致した行数を表示します。ファイルが非常に多い場合や名前に改行を含み得る場合は、単純なワイルドカードやxargsではなくfind -print0xargs -0などを検討します。