[Exp2015]Unix の基本コマンドの紹介

スケジュール表・各回資料 (08/06)

Unix コマンドに関する基礎知識

Unix のコマンドはシステムにもよりますが最低 200 〜 300 程度はあります. ある目的のために使えるコマンドは 1 つとは限りません. 個々のコマンドは大抵単純な動作をするものばかりですが, コマンドを組み合わせることでいろいろな目的に利用できるようになります. コマンドの組合せの工夫次第で, ある目的の操作が簡単に行えたりします. いきなり上手に組み合わせることはできなくても, 「こんなことができるのでは?」と想像力を豊かにしていろいろ試してみてください.

コマンド入力の約束

以下にコマンド入力時に共通した約束を挙げます.

  • 大文字小文字は区別する.
  • コマンド入力の最後には, 必ずエンターキーを押す.

    エンターを押すことで, コマンド入力が終ったことをシェルに知らせます. 押さないといくら待っても何もおきません.

もし引数 (オプションやファイル名) を指定する場合は,

  • コマンドと引数の間には空白文字 (スペースかタブ) をいれる.
  • 引数と引数の間にも空白文字 (スペースかタブ) をいれる.

引数の分類

コマンドには 1) 引数がいらないもの, 2) 引数を必要とするもの 3) 場合によって引数がいるものがあります. 引数を与える場合, 以下のものが考えられます.

  • オプション (スイッチ)

    コマンドの動作を変化させるものです. 多くの場合 "-" (マイナス, ハイフン)に続く英文字で指定.

  • ファイル名

    相対パスあるいは絶対パスで指定したファイルに対してなんらかの操作をする場合.

  • 文字列

    以上 2 つに分類できないもの. 例えば, 日付やログイン名, 出力したい文字そのものなど.

man についての予備知識

man は Unix のコマンドマニュアルを表示するコマンドです. あるコマンドの動作, 引数の付け方の詳細は man を見るのが王道です. また一度は man 自身のマニュアルに目を通し, 少なくとも下記の事柄をチェックしておきましょう.

  • man に限らず, 多くの Unix の解説書で使われるコマンド書式の約束事が書かれています.
  • コマンドの内容によって章 (section) が存在します. 例えば passwd(1) と passwd(5) はまったく異なる内容の説明です.
  • マニュアルページは決まった構成で書かれています. ("名前", "書式", "説明"...) この構成を知っていると, 知りたいことがらを探すのに役立ちます.

Unix の代表的なコマンド一覧

Unix のコマンドも, やはり実体はファイルです. これらは /bin, /usr/bin, /sbin などにあります. 以下に使用頻度の高いコマンドの一覧と意味, 簡単な使い方をあげます. 詳細な利用方法が書かれたマニュアルを, man コマンドで参照してください. なお, man で表示されるマニュアルは一定の書式, 約束事にしたがって書かれています. マニュアルページで使われている記号の意味等を知るためにも, man コマンド自身のマニュアル (man man と打つ) に是非目を通してみてください.

コマンド名意味
adduser新規ユーザーを追加する
aliasコマンドに別名 (エイリアス) をつける
catファイルの中身を標準出力へ表示する
cd現在のディレクトリ (カレントディレクトリ) を指定されたディレクトリに変更する
chmod指定されたファイルもしくはディレクトリのモードを変更する
chown指定されたファイルもしくはディレクトリの所有者や所有グループを変更する
cpファイルをコピーする
echo文字列を表示する
export環境変数として変数を設定する
less指定されたファイルを表示する
lsファイルやディレクトリの一覧を表示する
manオンラインマニュアルを表示する
mkdir指定された名前のディレクトリを作成する
more指定されたファイルを表示する
rmファイル(ディレクトリも含む)を削除する
rmdir指定されたディレクトリを削除する
passwd指定されたアカウントのパスワードを変更する
pwdカレントディレクトリを表示する
set現在設定されている環境変数を一覧する
vipwパスワードファイルである /etc/passwd と /etc/shadow を編集する
fingerログインしているユーザの情報を表示する

man

  • 書式:
$ man [コマンド]
  • 解説:

    オンラインマニュアル表示コマンド. ほとんどのコマンドは日本語マニュアルが付属しているので, コマンドの使い方がわからない場合には引いてみると良いでしょう. 詳細は,

    $ man man

    を実行してみてください.

  • 例:

    • ls コマンドのマニュアル表示:
    $ man ls
    • host を含む man ファイルの表示:
    $ man -k host

ls

  • 書式:
$ ls [オプション] [ディレクトリ]
$ ls [オプション] [ファイル]
  • 解説:

    ファイルやディレクトリの一覧を表示します. 対象となるファイルやディレクトリを指定しない場合, 現在のディレクトリ(カレントディレクトリ)内の一覧が表示されます.

  • 代表的なオプション

    オプション効果
    -aファイル名が "." で始まるファイルも表示する
    -cソート (-t) やリスト表示 (-l) のとき、修正時刻ではなく状態変更時刻を使う
    -dディレクトリの中身を表示せず、他のファイルと同じようにディレクトリ名をリスト表示する
    -Fディレクトリには "/" 、実行可能なファイルには "*"、シンボリックリンクには "@" を付加表示する
    -lパーミッションや持ち主などの詳細属性 (ファイルモード) も表示する
    -r逆順に並べて表示する
    -Rサブディレクトリ以下の内容も再帰的に表示する
    -sファイルの大きさを表示する
    --color色つきで一覧を表示する
  • 例:

    • ホームディレクトリ内の全ファイル & ディレクトリを詳細情報と共に表示:
    $ ls -la ~/

cat

  • 書式:
$ cat [ファイル]
  • 解説:

    ファイルの中身を標準出力へ表示します. ファイルの閲覧は勿論のこと, 他にも色々と利用可能なコマンドです.

  • 例:

    • au (Sun Audio format) ファイルの再生:
    $ cat sound.au > /dev/audio 

cd

  • 書式:
$ cd [ディレクトリ]
  • 解説:

    現在のディレクトリ (カレントディレクトリ) を, 指定されたディレクトリに変更します. 対象となるディレクトリを指定しない場合, ホームディレクトリが指定されたものと見なされます.

  • 例:

    • ホームディレクトリへ移動する:
    $ cd 

mkdir

  • 書式:
$ mkdir [ディレクトリ]
  • 解説:

    指定された名前のディレクトリを作成します.

  • 例:

    • sample という名前のディレクトリを作成:
    $ mkdir sample 

rm

  • 書式:
$ rm [オプション] [ファイル (ディレクトリ)]
  • 解説:

    ファイル (ディレクトリも含む) を削除します. このコマンドで削除されたものはほとんど元に戻せないため, 慎重に利用して下さい. (特に root)

  • 代表的なオプション

    オプション効果
    -i削除するかどうか確認する
    -f読み取り専用ファイルでも確認なしに強制的に削除する. -i オプションと両方が指定された場合は後ろから指定された方のオプションが有効になる
    -r中にあるファイルごと指定されたディレクトリを再帰的に削除する
  • 例:

    • sample という名前のファイルを削除:
    $ rm sample
    • ディレクトリ sample を中にあるファイルごと強制的に消去:
    $ rm -rf sample

rmdir

  • 書式:
$ rmdir [ディレクトリ]
  • 解説:

    指定されたディレクトリを削除します. ただし, 削除しようとするディレクトリは空でなければなりません. 中身ごとディレクトリを削除するには rm コマンドを使います.

  • 例:

    • 空のディレクトリ sample を削除:
    $ rmdir sample 

more

  • 書式:
$ more [ファイル]
  • 解説:

    指定されたファイルを表示します. cat と違い, 閲覧する上で便利な様に作られています. more の高機能版として less があります.

less

  • 書式
$ less [ファイル]
  • 解説:

    指定されたファイルを表示します. more ではできなかったバックスクロールに対応, 他にも gzip で圧縮されたファイルをそのまま見られるなど, いろいろな機能が付け加えられています.

  • キーバインド

    キー説明
    数字指定行に移動
    f SPACE ^F1 画面前進
    b ^B ESC-v1 画面後退
    RETURN e j ^E ^J1 行前進
    y k ^Y ^K1 行後退
    d ^D半画面前進
    u ^U半画面後退
    r ^R画面を再表示
    Rファイルを読み直して再表示
    g < ESC-<先頭行に移動
    G > ESC->最終行に移動
    /[!*@]文字列文字列を前方検索 (正規表現も可能)
    /!文字列文字列を含まない行を検索
    /*文字列コマンドラインで指定した全てのファイルを検索
    /@文字列ファイルの先頭から検索
    ?[!*@]文字列文字列を後方検索. "/" と同じ機能を持つ
    n次検索
    Nnとは逆方向に次検索
    ESC-u検索にマッチした部分の反転表示を解除
    v ^vエディタを起動して現在表示しているファイル編集 (環境変数 EDITOR)
    = :f現在位置の行数・バイト数・パーセンテージを表示
    h簡易ヘルプを表示
    Vバージョンを表示
    q :q :Q ZZlessを終了
    !(リターン)シェルを起動 (環境変数 SHELL)
    !コマンドコマンドを実行
    !!直前の "!コマンド" を再実行

passwd

  • 書式:
$ passwd [アカウント]
  • 解説:

    指定されたアカウントのパスワードを変更します. 何も指定しないと自分のアカウントが指定されたとみなされます. 通常, 自分以外のアカウントのパスワードを変更できるのは root のみです. 詳しくは, パスワードの変更 を参照して下さい.

pwd

  • 書式:
$ pwd
  • 解説:

    カレントディレクトリを表示します.

adduser

  • 書式:
$ adduser [アカウント名]

vipw

  • 書式:
$ vipw
  • 解説:

    パスワードファイルである /etc/passwd と /etc/shadow を編集します. 具体的には, オプション無しで passwd ファイル, -s オプションで shadow ファイルを編集します. 環境変数 EDITOR でエディタを明示的に指定していない場合, vi が起動します.

    vi で直にファイルを編集する場合と異なり, 安全のため, 複数の人間が同時に編集できないよう, vipw が実行中は /etc/passwd や /etc/shadow ファイルがロックされます, 具体的な vi の操作法は, 来週の講義「エディタ vi」を参照して下さい.

    なお情報実験機で vipw を実行するには直接 /usr/sbin/vipw を実行する必要があります.

chmod

  • 書式:
$ chmod [モード] [ファイル]
$ chmod [モード] [ディレクトリ]
  • 解説:

    指定されたファイルもしくはディレクトリのモードを変更します. モードは属性あるいはパーミッションとも表現されます. 詳細は, ファイルモード を参照して下さい.

  • 例:

    • hoge.txt のモードを -rw-rw-r-- に変更する:
    $ chmod 664 hoge.txt

chown

  • 書式:
$ chown [ユーザ名] [ファイル]
$ chown [ユーザ名]:[グループ名] [ファイル]
$ chown :[グループ名] [ファイル]
  • 解説:

    指定されたファイルもしくはディレクトリの所有者や所有グループを変更します. グループ名を指定する場合は, 直前にコロン ":" を付けるのを忘れずに.

  • 例:

    • hoge.txt の所有者を foo, 所有グループを foo に変更する.
    $ chown foo:foo hoge.txt

finger

  • 書式:
$ finger [引数]
  • 解説

    現在ログインしているユーザの情報の表示をします. 引数としてユーザ名を与えると, そのユーザの情報 (/etc/passwd に 書かれた内容) も合わせて表示します. 引数に何も与えないと, 自分の方法を表示します.

export

  • 書式:
$ export [変数名]=[変数]
  • 解説:

    環境変数として変数を設定します.

  • 例:

    • LANG 環境変数を日本語 EUC に設定する:
    $ export LANG=ja_JP.EUC 
    • PAGER 環境変数を less に設定する:
    $ export PAGER=less 

echo

  • 書式:
$ echo [文字列]
  • 解説:

    文字列を表示します. 何も指定しないと標準出力 (モニタ) に表示されますが, リダイレクト ">" を付けることでファイルに書き込むこともできます.

  • 例:

    • モニタに "Hello World" を表示:
    $ echo "Hello World" 
    • test.txt ファイルに "Hello World" を書き込む:
    $ echo "Hello World" > test.txt 
    • test.txt ファイルに "Hello World" を追記:
    $ echo "Hello World" >> test.txt 

alias

  • 書式:
$ alias [別名]='[コマンド名]'
$ alias
  • 解説:

    コマンドに別名 (エイリアス) をつけます. 引数を与えないと, 現在設定されている別名が一覧されます.

  • 例:

    • ls として 'ls --color' を設定:
    $ alias ls='ls --color' 

set

  • 書式:
$ set
  • 解説:

    現在設定されている環境変数を一覧する.

cp

  • 書式:
$ cp [コピー元ファイル名] [コピー先ファイル名]
  • 解説:

    ファイルのコピーを行います.

  • 例:

    • test1.txt を test2.txt にコピー:
    $ cp test1.txt test2.txt 

参考資料

このページは 北海道大学 理学院 情報実験 (INEX)Unix コマンド Tips を基に作成しました.

スケジュール表・各回資料 (08/06)