UNIX/Linux コマンド「超」基本操作

home 一覧 掲示板 リンク 検索方法



コマンドとは?
端末をたちあげよう
ディレクトリ移動しよう
ファイルやディレクトリの基本操作を覚える
プロセスやジョブの操作を覚えよう
ジョブ番号とプロセスID
コマンドを簡便に打つためのTIPS 1--補完機能
コマンドを簡便に打つためのTIPS 2--コマンド履歴
メタキャラクタの便利
>や>>、|の意味
※書いてあることの保障はしません。

コマンドとは?

このページはUNIX/Linux系OSを使い始めたばかりの方向けに書かれています。UNIX/Linux系OSも最近はとても立派なGUI(コマンドではなく画面をクリックしたりして操作するインターフェイス)が充実して、WINDOWSとほぼ変わらない操作ができるようになっています。これは、とてもありがたいことなのですが、やはりコマンドでの操作に慣れることで、飛躍的に仕事の効率が上がると思います。コマンドでUNIX/Linuxを操作するためには、まず端末とよばれるものを立ち上げる必要があります(もともとGUIは使わず、テキストモードではいっている場合はすぐにでもコマンドで操作しなければなりません)。

端末をたちあげよう

つかっているディストリビューションに寄りますが、通常は画面で右クリックをすると、「端末を開く」のような項目があるので、選択すると端末が立ち上がります。さあ、端末が立ち上がりました。では、試しにカレンダーでも見てみましょう。端末で
cal
と入力してみます。今月のカレンダーがでましたか? いま、打ち込んだ「cal」という文字がコマンド(命令)です。これは一見面倒そうですが、たとえばWINDOWSなどでカレンダーを見たい場合を考えると極めて効率的です。すなわち、calというコマンドを覚えていさえすれば、たった3文字でカレンダーが表示できるわけです。
端末を終了するには
exit
と打ちます。

ディレクトリ移動しよう

WINDOWSでフォルダと呼ばれているものがUNIX/Linuxではディレクトリ(Directry)と呼ばれています。端末を立ち上げた当初は、/home/ユーザー名 というディレクトリにいると思います。これを確認するには、
\pwd
と端末に打ってみて下さい。でできた場所が現在いるディレクトリ(カレントディレクトリといいます)です。 このディレクトリというのは木構造という構造をしています。これを図示すると下図のようになります。ちなみに、treeというコマンドを用いれば木構造が表示されます(若干見づらいです)。この図において、いまは、赤い印のついている/home/nameにいるとします。(ユーザー名をnameとします。自分で置き換えて下さい)。

では、一つ上の/homeにいってみましょう。これには
cd ..
と打ちます。さて、また
pwd
で自分の居場所を確認してみましょう。
/home
とでましたか? 違う場所がでたら、最初違うところにいたのかも知れません。こんな場合、直接/homeへいくこともできます。これには
cd /home
と直接打てば良いのです。
いまの二つのコマンドを図示すると下図の青(cd ..)と緑(cd /home)の経路となります。

ここで、もう一つ覚えておくと便利なのが、
cd -
です。これは、一つ前にいたディレクトリに戻ります。直接パスをうって遠くにいった後などに、戻るときに使用します。
ここで、homeより下にあるディレクトリやファイル(図では右側ですね)は何があるか見てみましょう。これには
ls
と打ちます。そうするとユーザ名のディレクトリが少なくともあるはずです。これは、下図では青マルの範囲にあるディレクトリやファイルを表示していることになります。



さあ、では次は
cd
とだけ打って、また
pwd
で場所を確認してみて下さい。このcdで移動する場所、それが、あなたのホームディレクトリと呼ばれるところです。通常は/home/ユーザー名です。
では、つぎは、何かディレクトリを作ってみましょう。これには
mkdir temp
これで、/home/name/tempというディレクトリができたはずです。

さあ、lsで確認してみましょう。ありましたか? ではtempに移動してみましょう。これには直接、
cd /home/name/temp
と場所を指定しても良いですが、
cd ./temp
のように、/home/nameを省略することができます。前者を絶対パス、後者を双対パスといいます。絶対パスというのは、郵便で「東京都世田谷区祖師谷なんとかかんとか」と書くのに、双対パスは世田谷区に住んでいる人が世田谷区に住んでいる人に手紙を出すときに「祖師谷なんとかかんとか」と省略して書くのに似ています。また、現在いるディレクトリ(カレントディレクトリ)にあるディレクトリに移動する場合は単に、
cd temp
でもいけます。

以上がディレクトリ移動の基本ですが、ちょっと上級編としてpushd、popdを使った移動もあります。これは、前いたディレクトリを覚えておきながら移動するといった方法です。

ファイルやディレクトリの基本操作を覚える

次は、ファイルやディレクトリの基本操作を覚えます。まずは、ディレクトリの作り方を復習すると、
mkdir ディレクトリ名
でした。では、tempというディレクトリを作って、そこに移動します(前説を読んだ方はもう移動しています)。では、簡単なファイルを作ってみましょう。ファイルはemacsで作っても良いし、viでつくってもいいですが、ここは簡単に、
echo abcde > test.txt
としてみましょう。これで「abcde」という文字を書いたtest.txtができます。この「echo」というコマンドや「>」という記号の意味は若干難しいので、あとで学べば良いと思います。では、このファイルがちゃんとできているのか調べてみましょう。
ls --color
この--colorというの部分はコマンドのオプションといわれる部分です。これで、ファイルやディレクトリなどの種類ごとに色分けされていると思います。
ファイルtest.txtはありましたでしょうか? では、このファイルの中身を見てみましょう。これには、
cat test.txt
とします。
abcde
と出力されましたか? されていたら成功です。ではこのファイルを、/home/name/に動かしてみましょう。これには、
mv test.txt /home/name/
とします。さあ、自分も/home/nameヘ動きます。
cd ..
ls --color
ファイルが動いていますか? では次はファイルを削除します。
rm test.txt
ls --color
ファイルが消えているでしょうか? しかし、パソコンというのは削除されたといっても、たいがいはデータとしては、残っているのです。だから、パソコンを廃棄するときに誰かにデータを復元されてしまうかも知れません。本当に復元できないように削除したいならばshredを使いますが、通常はrmで充分でしょう。
さあ、最後にディレクトリtempも消してしまいましょう。
rmdir temp
ls --color
ディレクトリの中にファイルが存在する場合、これでは消えません。この場合は、
rm -rf temp
とするのですが、このオプション-rfは危険なオプションです。有無を言わさず消してしまうからです。昔から、rm -rf / という冗談があるくらいです。(絶対にやってはだめですよ、意味を考えて下さい。/というのは、木構造の図で最もおおもとにあるところでルートディレクトリと言います。ただし、一般ユーザーでは権限がないので、そこまで被害は大きくないですが。) 気を付けましょう。

プロセスやジョブの操作を覚えよう

次は、コマンドを打っていろいろな作業をするときの基本的な操作を覚えます。まず、例としてemacsを立ち上げてみましょう。(emacsとはエディタです)
emacs
emacsが立ち上がりましたか?たとえば、emacsで作業をしながら、mp3プレーヤーmpg321で音楽が聴きたいとします。こんなとき、emacsが立ち上がっていて、新たにコマンドを打てなくなっています。この状態をemacsがフォアグラウンド(前面とでも約せば良いのでしょうか?)で動いているといいます。これを解消するにはemacsをバックグラウンドに持って行けば良いのです。フォアグラウンドのジョブは一個だけ、バックグラウンドのジョブは幾つでも、というのが基本です。フォアグランドのジョブをバックグラウンドに持って行くには、Ctrl-zを押した後、
bg
とします。これで新たにコマンドが打てるようになりました。さて、次のコマンドは最初からバックグラウンドに流しておきましょう。これにはコマンドの最後に&をつければよいです。
mpg321 /music/giant_steps.mp3 &
これで、最初からバックグラウンドで流れます。

では、次にこのmpg321を強制終了したいときは? こんなときは
fg
でフォアグラウンドに持ってきて終了すれば良いのです。では、mpg321ではなくて先にバックグラウンドにしたemacsを強制終了するには? いろいろ方法がありますが、例えば、こんな方法があります。まず
ps
とします。すると、今働いているプロセスとプロセスID(PID)が表示されます。emacsのPIDを覚えておいて、
kill emacsのPID
とすれば、emacsを強制終了できます。 もっと簡便な方法としては、
killall emacs
でも良いですが、これは例えば、他の端末で開いているemacsなども全部強制終了してしまうので注意が必要です。ちなみに今は例としてemacsを強制終了させましたが、emacsは通常、emacsのほうでctrl-x ctrl-cで終了させるのが普通です。強制終了すると保存していないファイルが失われてしまいます(ただ、リカバリーできることもあります。)

ジョブ番号とプロセスID

たとえば、emacsを起動したとき、 プロセスとしてのID、プロセスID(PID)というのが振られます。これを見るには、
ps
と打てば、PIDを知ることができます。 表示画面は
  PID TTY          TIME CMD
 3366 pts/1    00:00:00 bash
 3493 pts/1    00:00:12 emacs-x
 3600 pts/1    00:00:00 ps
のようになるとおもいます。この場合、emacsのPIDは3493だということがわかります。PIDからemacsを強制終了するには、
kill 3493
のようにPIDを指定してkillします。
一方、このPIDとは別にジョブ番号というのも振られます。これはジョブごとに番号をつけいていくのでPIDのように何桁にもなりません。ジョブ番号を知るには、
jobs
とします。
  [1]+  Running                 emacs &
のように表示されます。この場合、emacsのジョブ番号は1です。PIDにくらべ、分りやすい番号になっています。ジョブ番号から強制終了するには、
jobs %1
のようにします。
PIDやジョブ番号は実はバックグラウンドで流したときに両方共ちゃんと表示されています。例えば、
emacs &
としたときに、
[2] 3737
のような数字が表示されるとおもいます。これがそれぞれemacsに割当られたジョブ番号とPIDなのです。

コマンドを簡便に打つためのTIPS 1--補完機能

コマンド名を打つとき、省略して打つことができます。例えばPDFビューワーacroreadで./pdffile/hogekoge.pdfを見たいとき、
acroread ./pdffile/hogekoge.pdf
とうてばいいのですが更に簡単に打つ方法があります。それは補完機能を利用することです。例えば、
acr
ぐらいまで打って、tabキーを押すのです。するとacrがつくコマンドがほかにない場合は、
acroread
と補完され、他にあっても侯補が表示されるので、もうすこし打てばtabで補完されます。それから、./pdffile/hogekoge.pdfも
acroread ./pd
ぐらいでtabを打ち、さらに acroread ./pdffile/ho
でまたtabをうって補完すれば一瞬です。もっといえばわざわざlsなどでファイル名を確認しなくても、
acroread ./pdffile/
でtabをうてば、pdffile内のファイルが表示されるので、そこから探せば良いので便利です。

コマンドを簡便に打つためのTIPS 2--コマンド履歴

コマンドは長くてもせいぜいたった十数文字で良いとはいえ、毎回、打つのが面倒ということもあります。例えば、プログラムのコンパイルは毎回
gcc -o program program.c
とかいうコマンドを打つので、毎回打つのは面倒です。こういうときはコマンド履歴を利用します。これは端末で↑キーを押すと一個前に実行したコマンドが、もう1回押すと2個前がというふうに、履歴が表示されるのです。UNIX/Linuxに慣れた人は、このコマンド履歴を多用して、早くコマンドを打っているのです。
また、結構前に打ったコマンドをもう一度打つときはhistoryが有効です。相当前に打ったコマンドを知りたい場合、
history | grep emacs
のようにすると、
537 emacs &
539 killall emacs
726 emacs result.tex
736 killall emacs
807 emacs /home/abc/ewn/result.tex
866 emacs sitemap.xml
869 emacs result.tex &
914 emacs proposal.txt
945 emacs result.tex
1002 emacs Makefile
1008 emacs make.html
1011 emacs make.html
1031 emacs beginner.html
1105 history | grep emacs
のように、emacsで開いたものがでてくるので、例えば、
!807
のようにして、簡単に開けるのです。これは、自分が実行したコマンドを忘れたときなどにも有効な方法です。

メタキャラクタの便利

コマンド入力ならではの便利にメタキャラクタの使用があります。例えば、ディレクトリtempのなかに様々な種類のファイルが入っていて、このなかからPDFファイル(なんとか.pdf)だけを移動させたいとします。こんなときにメタキャラクタ「*」をつかいます。
mv *.pdf 移動先
とすれば、*のところが何であっても何文字でも.pdfのつくものだけ、移動させることができます。これに対し、
mv id?.pdf 移動先
の場合は、?に一文字入る場合だけ、すなわちid1.pdf、id2.pdf、idx.pdfなどのみを動かすことになります。この「*」や「?」のように、特別な意味を文字をメタキャラクタといいます。これら、*や?をうまく使うことにより、飛躍的に効率が上がります。

>や>>、|の意味

端末に結果が表示されるコマンドが多くあります。例えばdateがそうです。
date
と打つと、
2006年 1月 24日 火曜日 18:18:06 JST
のように日付が端末に表示されます。これを標準出力といいます。では、これをファイルに書きこむにはどうすれば良いでしょうか?それにはこの様にします。
date > hoge.txt
これで、hoge.txtにdateコマンドで出された標準出力が書きこまれます。しかし、この>はもともとあった(あればの話ですが)hoge.txtを上書きしてしまいます。上書きしないで追記していくにはどうすればいいでしょうか?その答えが、
date >> hoge.txt
です。>>を用いると、hoge.txtの一番最後の行にdateの結果が書き加わります。UNIX/Linux業界ではこれらのことをリダイレクトすると言います。
また、ファイルが存在するときの上書きを禁止することもできます。
次に、dateで表示される結果(標準出力)を他のコマンドの入力(標準入力)にいれるにはどうすればよいでしょうか?たとえば、
awk '{print $3}' ファイル名
は、ファイルの3列目だけをとりだして表示します。では、このコマンドを利用して、さきほどのdateの3行目、(「24日」の部分)を取りだしてみましょう。これには、
date | awk '{print $3}'
とします。この|が、dateの標準出力をawkの標準入力に繋いでくれているので、|をパイプと呼びます。
上の話にでてきた「標準出力」、「標準入力」については、少し難しい話になってしまうので、別ページ「図解:標準入力、標準出力、標準エラー出力、パイプとは ?」に別途まとめました。よろしければご覧下さい。