GNUとUnixコマンド超入門 #1

6 min 47 views
Linuxコマンド

LPIC-1対策にもなる、よく使う基本コマンドまとめ

Linuxを触り始めると、必ずと言っていいほど登場するのが「黒い画面」――コマンドラインです。
マウス操作に慣れていると最初はとっつきにくく感じますが、コマンドに慣れてしまえば、GUIよりも素早く・柔軟に作業できるようになります。

この記事では、LPIC-1(特に101試験)の出題範囲にも含まれる

  • コマンドラインでの基本操作コマンド
  • テキスト加工用コマンド
  • ファイル操作・圧縮・検索系コマンド
  • viエディタの超基本
  • パイプ・リダイレクト・tee / xargs まわり

を一気に整理します。
「実務でよく使うポイント」と「試験で押さえておきたいキーワード」を両方おさえる構成にしています。

1. コマンドラインでよく使う基本コマンド

 1-1. 位置や環境を確認する系

コマンドざっくり役割
pwd今いるディレクトリ(カレントディレクトリ)をフルパスで表示
unameOS やカーネルなど、システムの情報を表示
env / printenv設定されている環境変数の一覧を表示
which指定したコマンドがどこにあるか(パス)を表示
typeコマンドの種類(組み込みか外部か、エイリアスか等)を表示

例:現在位置を確認

$ pwd
/home/taro

例:システム情報の確認

$ uname
Linux

$ uname -a
Linux localhost 3.10.0-1160.el7.x86_64 #1 SMP ... x86_64 GNU/Linux

 1-2. ヘルプ・履歴・メッセージ表示系

コマンド役割
manコマンドのマニュアル表示
history実行したコマンド履歴を一覧表示
echo文字列や変数の中身を表示

man の使い方

$ man pwd
  • 上下キー:スクロール
  • q:終了
  • h:ヘルプ

historyと“!番号”で再実行

$ history
  1  pwd
  2  uname
  3  uname -a
  4  man pwd

$ !1   # 1番のコマンドを再実行
pwd
/home/taro

 1-3. 環境変数とシェル変数

  • シェル変数:そのシェルの中だけで有効な変数
  • 環境変数:新しく起動したシェルやコマンドにも引き継がれる変数
コマンド役割
export環境変数を新しく設定したり、シェル変数を環境変数に昇格させる
setシェル変数やシェルの設定を一覧で表示
unset変数を削除

シェル変数 → 環境変数

$ VAR2='fuga'    # シェル変数
$ export VAR2    # 環境変数に昇格

変数の削除

$ unset VAR2

 1-4. PATH(パスを通す)とは?

  • PATH 環境変数には「コマンドを探しに行くディレクトリ」がコロン区切りで並んでいます。
  • コマンド名だけで実行できるのは、この中から見つけてきてくれているため。
$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:...

ディレクトリを追加したいときは:

export PATH=$PATH:/my/custom/bin

これを「PATHを通す」と表現します。

2. テキストを表示・加工するコマンド

ログや設定ファイルを読む・切り出す・集計するための定番コマンドです。
LPIC 的にも実務的にも、ここは絶対に押さえておきたいところ。

 2-1. 表示・先頭/末尾・行番号

コマンド役割
catファイル内容をそのまま出力(連結も可)
zcat / bzcat / xzcat圧縮ファイルを解凍せず中身だけ表示
nl行番号付きで表示
head最初の数行を表示(デフォルト10行)
tail最後の数行、またはリアルタイム追従表示

先頭5行だけ見たい

$ head -n 5 /etc/default/grub

ログを追いかける(リアルタイム)

# tail -f /var/log/messages

Ctrl + C で終了します。

 2-2. バイナリ内容や指定部分を抜き出す

コマンド役割
odファイルを 8進数 / 16進数 などでダンプ
cut行の一部(文字位置 or フィールド)だけ切り出し
paste複数ファイルを横にくっつける
sort行を並び替える(昇順・降順)
splitファイルを分割する(行数やサイズ基準)

フィールド切り出し例

$ cut -d ':' -f 3 sample.txt
  • -d … 区切り文字(デリミタ)
  • -f … 何番目のフィールドか

 2-3. 文字の置換・削除、重複排除、集計

コマンド役割
tr文字の置換・削除(標準入力向け)
uniq連続する重複行をまとめる
wc行数・単語数・文字数をカウント

文字置換の例

$ cat sample.txt | tr 'abc' 'XYZ'

重複除去の鉄板パターン

$ sort sample.txt | uniq

 2-4. ハッシュ値を計算する

  • データが壊れていないか・改ざんされていないかを確認する用途によく使われます。
コマンドアルゴリズム
md5sumMD5
sha1sumSHA-1
sha256sumSHA-256
sha512sumSHA-512

3. ファイル操作・圧縮・検索の基本コマンド

 3-1. ファイルとディレクトリの基本操作

コマンド役割
ls中身を一覧表示(-l, -a などオプション多数)
cpコピー
mv移動・リネーム
mkdirディレクトリ作成
rmファイル / ディレクトリ削除
rmdir空ディレクトリだけ削除
touch時刻情報変更 or 空ファイル作成
fileファイルが何者か(テキスト?バイナリ?)を判定

よく使うオプションだけ押さえておくと便利です。

  • cp -r … ディレクトリごとコピー
  • cp -i / mv -i … 上書き前に確認
  • rm -r … ディレクトリごと削除
  • mkdir -p … 親ディレクトリもまとめて作成

 3-2. 圧縮・解凍

コマンド拡張子特徴
gzip / gunzip.gz速度そこそこ、よく使われる
bzip2 / bunzip2.bz2圧縮率高め、時間は余計にかかる
xz / unxz.xzさらに高圧縮、その分重い

gzipの例

$ gzip file.txt           # file.txt.gz に圧縮
$ gunzip file.txt.gz      # 解凍

 3-3. アーカイブとバックアップ

  • 圧縮ファイル:サイズを小さくするための加工
  • アーカイブファイル:複数のファイルを一つにまとめたもの(tar など)

tar

# アーカイブ + gzip圧縮
$ tar -czvf backup.tar.gz target_dir

# 展開
$ tar -xzvf backup.tar.gz

主なオプション

  • -c:アーカイブ作成
  • -x:展開
  • -z:gzip
  • -j:bzip2
  • -J:xz
  • -v:詳しく表示
  • -f:アーカイブファイル名指定

cpio

モードごとに動きが変わるタイプです。

  • cpio -o … アーカイブ作成(out)
  • cpio -i … アーカイブから展開(in)
  • cpio -p … アーカイブにせずディレクトリ間コピー(pass)
# カレント以下を backup.cpio というアーカイブに
$ ls | cpio -o > backup.cpio

dd

「生のデータをそのままコピーする」コマンド。ディスク丸ごとのコピーなどに使われます。

# /dev/sda の内容を /dev/sdb に丸ごとコピー
# (実行注意!)
# dd if=/dev/sda of=/dev/sdb

 3-4. ファイルを探す:find とメタキャラクタ

$ find . -name '*.log'
  • -name で名前パターン
  • -type f でファイルだけ
  • -type d でディレクトリだけ

メタキャラクタのイメージ

  • *:0文字以上の何か
  • ?:任意の1文字
  • [abc]:a, b, c のどれか1文字
  • {1,2,3}:文字列の組み合わせを一気に展開
$ touch sample{1,2,3}.txt
# sample1.txt / sample2.txt / sample3.txt が作成される

4. viエディタの超基本

ほとんどのディストリビューションに入っている標準的なテキストエディタが vi / Vim です。
モード切り替えが独特ですが、設定ファイル編集などで頻繁に使います。

 4-1. 起動とモード

$ vi filename

vi には大きく分けて2つのモードがあります。

  • コマンドモード:移動・削除・保存など
  • 入力モード:文字入力

起動直後はコマンドモードです。
文字を打ち込みたいときは「入力モード」に切り替え、入力が終わったら Esc でコマンドモードへ戻ります。

 4-2. カーソル移動(コマンドモード)

キー動き
h
j
k
l
0行頭へ
$行末へ
G最終行へ
nGn 行目にジャンプ

 4-3. 編集系コマンド(コマンドモード)

コマンド内容
xカーソル位置の1文字削除
dd行ごと削除
yy行をコピー
pコピーした行を下に貼り付け

 4-4. 検索と保存・終了

検索

コマンド内容
/文字列カーソルより下に向かって検索
?文字列カーソルより上に向かって検索

保存・終了

コマンド内容
:w保存
:q終了(未保存があると警告)
:q!保存せず終了
:wq保存して終了

 4-5. 入力モードに入る

コマンド動き
iカーソル位置から入力
I行頭から入力
aカーソルの次の位置から入力
A行末から入力
o下に新しい行を作って入力
O上に新しい行を作って入力

Esc キーでコマンドモードに戻ります。

 4-6. EDITOR 環境変数

デフォルトのエディタを指定する変数です。

export EDITOR=vim

crontab など一部コマンドが、この EDITOR を参照してエディタを起動します。

5. パイプ・リダイレクト・tee・xargs

 5-1. リダイレクト(出力先・入力元を差し替え)

記法意味
コマンド > ファイル出力をファイルに上書き保存
コマンド >> ファイル出力をファイルに追記
コマンド < ファイルファイル内容をそのコマンドの入力にする

 5-2. パイプ(コマンド同士をつなぐ)

コマンド1 | コマンド2
  • コマンド1の出力を、そのままコマンド2の入力として渡す。

例:重複行をまとめる

$ sort sample.txt | uniq

 5-3. tee:画面にもファイルにも出したいとき

tee は

  • 標準入力で受け取った内容を「画面」と「ファイル」の両方に流す

コマンドです。

$ echo $PATH | tee path.txt
/usr/local/bin:...
  • -a … 追記モード(>> 相当)
$ some_command | tee -a log.txt

 5-4. xargs:文字列をまとめて引数に渡す

xargs は、

  • 標準入力で受け取った文字列を、指定したコマンドの「引数」に変換する

コマンドです。

例:.txt をまとめて削除

$ find . -name '*.txt' | xargs rm
  • find で列挙したファイル名を、rm の引数として一気に渡しています。

6. まとめ:LPIC的な押さえどころ

最後に、この記事で登場した中で LPIC 的に特に意識したいポイントを整理します。

  • 環境変数と PATH
    • env / printenv / export / unset / PATH の意味
  • 内部コマンド・外部コマンド
    • type で確認する、という流れを覚える
  • リダイレクトとパイプ
    • > / >> / <| の違い
  • テキスト処理定番コマンド
    • cat, head, tail, cut, sort, uniq, wc
  • 圧縮・アーカイブ
    • gzip / bzip2 / xz
    • tar-c, -x, -z, -j, -J, -f
  • ファイル検索・大量処理
    • find + メタキャラクタ + xargs
  • vi の基本操作
    • モード切り替え(i / Esc)、保存・終了(:wq, :q!

ここまでを何度か手で打ちながら練習しておくと、LPIC の問題文を見たときに「これ、いつも使ってるやつだ」と直感的に判断できるようになります。


次のステップとしては「正規表現」「プロセス管理系コマンド」あたりをセットで押さえていくと、101試験のコマンド領域がかなり安心ゾーンになっていきます。

関連記事