[Litz' UNION] > [Dal Segno] > [UNIXたん] > [その1] // [その2]

UNIXたん その1

マルチユーザシステム

UNIXは「多くの人間が同じシステムを使う」ためのOSです。
このようなシステムをマルチユーザシステムというんですが、なんだ
ログインによってアクセス開始、ログアウトで終了するという手続きが求められます。
ログイン時にはアカウント(ユーザID)・パスワードの入力を求められます。

login

ログインします。無害

logout

ログアウトします。ほぼ無害

exit

現在のシェルを終了します。ほぼ無害

passwd

パスワードを変更します。ほぼ無害

実行すると、現在のパスワード・新しいパスワード・もう1回と入力を求められます。
くれぐれも新規パスワードを忘れないように、また
他人に容易に推測されそうなパスワードは避けるようにしましょう。

id

ユーザのUID, GID, グループ名を表示します。無害

last

最近のブート・シャットダウン.ログインの記録を表示します。無害

引数(ユーザ名)与えると、そのユーザのログイン記録を表示します。
また、引数にreboot, shutdownなどを指定することもできます。

uptime

ホストの情報を表示します。無害

> uptime
11:22AM up 2:45, 2 users, load averages: 0.39, 0.28, 0.23

現在時刻は11:22、ホスト起動から2:45経過、現在2名がログイン
1, 5, 15分前からの平均負荷はそれぞれ0.39, 0.28, 0.23。

who

現在ログインしているユーザの一覧を表示します。無害

w

現在ログインしているユーザと実行中のプロセスを表示します。無害

-h オプションを付けると、uptime情報を表示しません。
-i オプションを付けると、アイドル時間が短い順にソートします。

finger

現在ログイン中のユーザ名を表示します。無害

引数(ユーザ名)を与えると、そのユーザの詳細な情報を表示します。

whoami

自分自身のユーザ名を表示します。無害

who am i とすると、ログイン情報も表示してくれます。

leave

ログアウト予定時刻を覚えさせます。無害

目覚まし時計のセットのようなもんです。
セットした時刻がきたら(5分前と1分後・2分後…にも)アラームとメッセージが出ます。
引数(4桁数字)を与えると、その時刻にアラームがセットされます。
+ を引数の前に付けると、**時間**分後にセットされます。

コマンド操作

基本的には「コマンド オプション 引数」(半角スペースで区切る)として命令文を作ります。
あーだこーだ言うより、実際に使って慣れた方が早いでしょう。

ここで幾つか役立つ入力を紹介しておきます。

[Control]+[C] … 実行中のコマンドを強制的に停止する
[Control]+[D] … 入力の終了を明示する
[.]+[Enter] … (同上)
[Control]+[G] … 実行中の編集系コマンドを強制的に停止する

場合によってはこれらが効かないかも知れません。

オンラインマニュアル

UNIXコマンドにはオンラインマニュアルが用意されているので、
コマンドについて知りたけりゃmanしろってこった(このページの意義については問わない方向で)。

man

オンラインマニュアルを表示します。無害

jman とすると、日本語マニュアルが表示されます(無い場合もある)。
引数(コマンド名)を与えると、該当するマニュアルを表示します。
引数を2つ(#(数字) コマンド名)与えると、該当するマニュアルのセクション#を表示します。
-a オプションを付けると、名前にマッチしたマニュアルを全て表示します。
-d オプションを付けると、マニュアルを探す過程を表示します(デバッグモード)。
-f オプションを付けると、whatis と同じ挙動をします。

シェル

シェルとは、UNIXに対する命令の橋渡しをしてくれるソフトです。
UNIXに命令するためにシェルに命令しているわけだ。

シェルにはbash, tcsh など数多くのものがあります。
bash, tcsh などのシェル名をコマンドとして入力すると、一時的にシェルを変更することができます。
(exit で元に戻る)

異なるシェルをいくつか使って違いを体験してみよう。
シェルスクリプトでも使わない限り実感はあまりできないと思うけど。

シェルの機能

基本的には1行に1つの命令を書くものです。
でも";"で区切って複数の命令を一度に実行することもできるし
連続実行するコマンドを()でまとめるとヒストリー関係で良い事があるかも。

それからワイルドカード展開もやってくれます。
ファイル名を指定する際、いちいち一つずつ入力するのではなく
例えば「.txtで終わる名前のファイル全て」などを一括して指定できます。

? … 任意の1文字
* … 任意の文字列(空でも良い)
[abc] … []中のどれか1文字。-を使った範囲指定も可能
{aa,bb,cc} … {}中のどれかの文字列。

例えば
「*.txt」 … 「.txt」で終わるファイル全て
「[0-9]*.{txt,rtf}」… 数字で始まるファイル名で拡張子が.txtか.rtfのもの全て

chsh

ユーザの個人情報を変更します。やや有害

単独で実行すると、エディタが起動します。使い方はviと同じ。
-s **(シェル名orシェルへの絶対パス) オプションを付けると、ログインシェルのみ変更します。

alias

コマンドの別名(エイリアス)を設定する。ほぼ無害

csh, tcshの場合は alias **(別名) "(命令文)" とします。
sh, bashの場合は alias **(別名)="(命令文)" とします。
いずれも、コマンドの前に \ を付けると一時的にエイリアスを解除します。

tcshの場合の例

> alias LS "ls -al"
→ LS を実行すると、ls -al と同じ結果になる

> alias ls "ls -al"
→ ls を実行すると、ls -al と同じ結果になる。
→ \ls を実行すると、通常の ls と同じ結果になる。

unalias

エイリアスの設定を解除する。ほぼ無害

引数(エイリアス名)を与えたエイリアスを削除します。
この引数にはワイルドカードを使うこともできます。

-a オプションを付けると、現在設定されているエイリアスを全部消します(sh系)。

history

過去に実行したコマンドを表示します。無害

引数(n)を指定すると、最近n件分だけ表示されます。

コマンドではありませんが、コマンドとして便利なものに ! があります。

!! … 直前のコマンドを再実行。
!n(nは数)historyで表示される履歴リストのn番を再実行。
!-n(nは数) … n個前に実行したコマンドを再実行。
!文字列 … 指定文字列で始まるコマンドで最も最近実行したものを再実行。
!?文字列 (!?文字列?) … 指定文字列を含むコマンドで最近のものを再実行。

コマンド履歴を直接コマンドラインに表示することもできます。
[矢印↑] or [Control]+[P] … 1つ古いコマンドを表示。
[矢印↓] or [Control]+[N] … 1つ新しいコマンドを表示。

[Litz' UNION] > [Dal Segno] > [UNIXたん] > [その1] // [その2]