IT pass HikiWiki - [Exp2019]Unix の基本コマンドの紹介 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}

((<"スケジュール表・各回資料 (08/04)"|[Exp2019]スケジュール表・各回資料#08-2F04>))

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

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

== コマンド入力の約束

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

* 大文字小文字は区別する.

* コマンド入力の最後には, 必ずエンターキーを押す.

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

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

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

* 引数と引数の間にも空白文字 (スペースかタブ) をいれる.

== 引数の分類

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

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

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

* ファイル名

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

* 文字列

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

== man についての予備知識

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

* man に限らず, 多くの Unix の解説書で使われるコマンド書式の約束事が書かれています.

* コマンドの内容によって章 (section) が存在します. 例えば passwd(1) と passwd(5) はまったく異なる内容の説明です.

* マニュアルページは決まった構成で書かれています. ("名前", "書式", "説明"...) この構成を知っていると, 知りたいことがらを探すのに役立ちます.

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

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

# RT
コマンド名, 意味
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 [オプション] [ファイル]

* 解説:

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

* 代表的なオプション

   # RT
   オプション, 効果
   -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)

* 代表的なオプション

   # RT
   オプション, 効果
   -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 で圧縮されたファイルをそのまま見られるなど, いろいろな機能が付け加えられています.

* キーバインド

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

=== passwd

* 書式:

$ passwd [アカウント]

* 解説:

  指定されたアカウントのパスワードを変更します. 何も指定しないと自分のアカウントが指定されたとみなされます. 通常, 自分以外のアカウントのパスワードを変更できるのは root のみです. 詳しくは, ((<パスワードの変更|[Exp2018]|[Exp2019]情報実験機のアカウント作成#パスワード変更の方法>)) を参照して下さい.

=== pwd

* 書式:

$ pwd

* 解説:

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

=== adduser

* 書式:

$ adduser [アカウント名]

* 解説:

  新規ユーザーを追加します. 詳細は, ((<アカウントの作成|[Exp2018]|[Exp2019]情報実験機のアカウント作成#アカウントの作成>)) を参照して下さい.

=== 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 [モード] [ディレクトリ]

* 解説:

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

* 例:

  * 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)"|URL:http://www.ep.sci.hokudai.ac.jp/~inex>))

((<"Unix コマンド Tips"|URL:http://www.ep.sci.hokudai.ac.jp/~inex/y2007/1019/command.html>))
を基に作成しました.


((<"スケジュール表・各回資料 (08/04)"|[Exp2019]スケジュール表・各回資料#08-2F04>))