98/06/15 筧記
99/02/23 加筆
00/01/07 目次追加
00/05/26 Vine 2.0CRにシステム更新時に修正
UNIXの基礎知識
目次
1.UNIXの特徴
2.絶対にやってはいけないこと
3.一般ユーザーとスーパーユーザー
4.loginとlogout
5.ファイルシステムとホームディレクトリ
6.絶対パス名と相対パス名
7.UNIXのコマンド
8.リダイレクションとパイプ
9.メタキャラクタ
10.エディタmule(またはemacs)の使い方
11.プログラムのコンパイルと実行
12.環境設定ファイルいろいろ
13.ファイルの印刷
14.PSファイルの表示
15.telnet,rlogin,ftpそしてIP addressとhostname
16.メディア(FD,CD-ROM,ZIP,JAZなど)の使い方
17.バックアップのとり方
18.プロセス(ジョブ)の管理
19.マシンが死んだらどうするか
コマンド解説
1.UNIXの特徴
マルチユーザー,マルチジョブであること。Windows95やMacでもマルチジョブ(例えばNetscapeとWordを両方起ち上げることができるということ)は実現できていますが,マルチユーザーではありません。UNIXマシンの場合さすがにそのマシンの(ディスプレイとキーボードの)前に座れるのはさすがに1人やけど,他のマシン(UNIXマシン,Windows95マシン,Mac)からもtelnetやrloginでログインできます。ウィンドウシステムも(設定はいるけど)使うことができます(ただし,Windows95やMacから使う場合は商用のXサーバーソフトを買わないとダメ,フリーでもあるとは思うけど)。あとネットワークに強い,とか他にもいろいろ長所(もちろん短所も)はあるけど,詳しくはいろんな本を読んで下さい。WWWを検索してみると解説ページを結構みんな作っていたりもします。
あ,そうそうGUI(Graphical User Interface要はマウスでボタン操作できるような画面ということ)もすごく充実しているとは言え,基本的にUNIXはキーボードでコマンドを打ち込んで使うことを指向している,というのはMacやWindows95との大きな違いかもしれない。コマンド打ち込みなんて,と思うかもしれませんが,なれるとこっちのほうが速かったりするのである(もちろん慣れるまではうっとおしいけど)。
あ,それから「削除してしまったファイルはどうあがいても戻らない」というのも大事な特徴かも。rmコマンドは慎重に使いましょう。
2.絶対にやってはいけないこと(これは非常に重要です)
正常な手続きを踏まず電源を切ったり,リセットボタンを押したりしてはいけない。これをやると最悪の場合ファイルシステムが壊れてしまう(一部または全てのファイルが読めなくなってしまう)ことがあります。ここが「死んだら安直にリセットボタンを押せるWindows95やMac」との最大の相違点(ホンマはWindows95やMacでもリセットボタンを押すというのは最終手段に近いので(やらんですむなら)やらん方がええんやけど)。ということでUNIXマシンは必要に迫られて電源を落とす場合を除いて年がら年中電源は入りっぱなしです。「帰宅するときにコンピューターの電源OFFを忘れずに」という心構えは美しいのですが,UNIXマシンについては発揮しないように。
いきなり電源を切ってはいけない理由は2つある。
(1)UNIXのファイルシステム管理方法に起因する理由。UNIXでは処理速度を早くするためファイルシステムの書き換えがあっても,その度にディスクに書き込みにいくのではなくファイルシステムの変更情報をメモリにためていて定期的に(30秒ごと?)にディスクに書き込みにいくということをしている。したがっていきなり電源を落とすとOSが認識しているファイルシステム情報と実際にディスクに書き込まれているファイル情報が食い違ってしまい,まずい場合は読めないファイルができてしまう。
(2)マルチユーザーなので他の人がネットワーク越しに使っているかもしれない(これはwhoコマンドで確認できる)。さらに他の人がログインしていなくてもバックグラウンドでプロセス(というかジョブというか)を走らせているかもしれない(時間のかかるジョブだと1週間ぶっつづけで走らせるということもある)。それにOS自体がいろんなバックグラウンドでプロセスを走らせている。従って突然電源を切るとこういうプロセスが異常終了することになる。
ということで,UNIXマシンの電源は絶対にうかつに切ってはいけないもので,従ってSUNのWSなんかにはリセットボタンがついてない(電源ボタンは本体背面にある←いじらないでね)。しかし研究室にあるLinuxをOSとするマシンは元々Windows95用のマシンにLinuxをインストールしたものなので思いっ切り本体の前面の押しやすいところに電源ボタンとリセットボタンがついていたりします。決して触れないように注意しましょう。
では,電源を落としたいときやマシンを最起動したい時はどうするか?これはスーパーユーザーという管理権限をもった人がシャットダウンという手続きを踏んで行います。ということでスーパーユーザーがいないことには電源OFFも再起動もできないわけです。
停電の時や落雷で瞬間的に大電流が流れる(雷サージという)と大いにまずいので,そういう場合は事前にマシンをシャットダウンしないといけません。しかし,スーパーユーザーが留守にしているときや突然の停電の場合はどうしようもないので,一応の防御策としてマシンとコンセントの間に無停電電源(UPS:Uninterruptible Power System←中身は制御装置のついたバッテリーだと思えばよい,と思う,よってすごく重い)を入れています。しかし,これとて停電の場合にもつのは20分程度らしいし,しかもそんなに信頼性はなくて,単に「瞬断防止」のためのものくらいに思っておいたほうがよいらしい,うーん。現在電圧低下を関知して自動でシャットダウンするソフトの購入を検討中。そうそう注意事項があって,無停電電源装置の電源ボタンが本体前面にあってうっかり触ってしまいそうになるのであった(笑)。今はカバーをつけて防いでますが,こういう作りってヤバイんでないの?
3.一般ユーザーとスーパーユーザー
UNIXの場合セキュリティの関係上スーパーユーザーという特別の(というか何でもできる)権限を持った人がシステムの管理を行う仕組になっています。スーパーユーザーの行うことは例えば
・マシンの起動,停止
・ユーザー管理(登録,変更,削除)
・ファイルシステムの管理
・ネットワーク関係の設定
・プリンターの設定
などなどで,まあ要は管理人です。でこういったことは一般ユーザーにはできないようになっていて,例えばシステムの設定ファイルがいろいろと入っている/etcというディレクトリの下にあるファイルを一般ユーザーがいじろうとしても「Permission denied(いじる権限がないよ)」とヤキを入れられていじれなくなっています。
4.loginとlogout
これはやってみりゃわかるでしょう,ということで省略。ただし,login時に勝手にウィンドウシステム(XウィンドウシステムとかSUNならOpenWindowsとか)を起動するかしないかとか,ウィンドウシステムを抜けるといきなり勝手にlogoutするようにするかしないかとか,設定は自分でいろいろできます。詳しくは「設定ファイル」の項を参照。ただ,最初のうちは設定ファイル見ても呪文の羅列にしか見えんかも(笑)。
5.ファイルシステムとホームディレクトリ
UNIXのファイルの構造はツリー構造になっています。まあコンピューターはみなそうやわなあ。で,例えばdaredareというユーザーがloginすると,ツリー構造の中の
/home/daredare
にいることになります(pwdコマンドで確認できるよ)。ここで/はツリー構造のてっぺんで,/home/daredareと書くと,/の下のhomeというディレクトリの下のdaredareというディレクトリを表します。daredareさんは自分のプログラムやデータファイルをこの/home/daredareディレクトリの下に置くことになります。で,この/home/daredarをdaredareさんのホームディレクトリと呼びます。もちろんファイルの数が増えてくると分類・整理しないと収拾がつかなくなるので,daredareさんは自分のホームディレクトリの下に適当に自分でディレクトリを作りながら,自分のツリー構造をこさえていくわけです。
ディレクトリを作ったりファイルの移動,コピー,削除はコマンドで行いますが,Xを使っているならXfm(Xファイルマネージャー)というGUIベースのファイルマネージャーが使えて便利です。
6.絶対パス名と相対パス名
例えば今自分が/home/daredare/test1/programにいるとして,/home/daredare/test2/dataに移動したいときは,絶対パス名を使うなら
% cd /home/daredare/test2/data
とします。つまり絶対パス名とはディレクトリ名やファイル名を/から始めるフルパスで指定すること。
これに対して相対パス名というのはあるディレクトリを基準にしてそこからの相対的な位置でディレクトリ名やファイル名を指定すること。例の場合なら
% cd ../../test1/data
となります。ここで..は「ひとつ上のディレクトリ」の意。「.」はカレントディレクトリ,「~」は自分のホームディレクトリを表します。
7.UNIXのコマンド
1.にも書いたようにUNIXはコマンド打ち込み指向が強いOSなのでコマンドの使い方を覚えんと話になりまへん。と書いておきながら具体的には別紙参照のこと。
分からなければ
% man コマンド名
としてみよう。
8.リダイレクションとパイプ
リダイレクションというのはファイルへの書き込み、ファイルからの読み出しを表す矢印のことで
> test1.txt 標準出力をtest1.txtに書き込む
>> test1.txt 標準出力をtest1.txtに追加で書き込む
< test1.txt 標準入力をtest1.txt(の中身)にする
ということですが,具体例で見てみます。
% ls -al
の結果は標準出力に出ますが,
% ls -al > test1.txt
とするとls -alの結果がtest1.txtに保存されます。表示がダーッとたくさん出るコマンドの結果をファイルに保存して後でじっくり見たいときや,標準出力に結果を吐き出すプログラムの結果をファイルに保存するのに便利です。
入力パラメーターを標準入力から入れるプログラム(の実行形式)test1の入力パラメーターをあらかじめtest1.ctlに書き込んでおけば
% test1 < test1.ctl
として,入力をファイルから食わせることができます。
パイプ|を使えば,あるコマンドの標準出力を別のコマンドの標準入力に食わせることができて便利です。具体的な使用例を以下に挙げます。
% ls -al | less
% a2ps test.txt | lpr
% ps -ax | grep mountd
% gzip -cd test.tar.gz | tar xvf -
詳しくは「続・たのしいUNIX」を読んでね。
9.メタキャラクタ
「続・たのしいUNIX」を読んでね。
10.エディタmule(またはemacs)の使い方
使ってみて,本を見て,チュートリアル機能を使って,お勉強しましょう。
11.プログラムのコンパイルと実行
プログラムは基本的にFortranで書くことになると思う(筧はFortranしかしらない)。地震学の世界ではプログラミング言語はまだFortranの方がCより使われているのではないかと思う(ホンマかな)。Fortranは古いと思われがちだが数値計算の世界ではまだまだよく使われているらしい(主流かどうかは知らんけど)。ということで話はFortranに限るけど,Vine 2.0のマシンにはg77というcompilerとfort77というcompiler(というかperlスクリプト)が入っている。SUNのSPARCstation 5にはg77というcompilerが入っている。使い方はfort77を例を以下に書くが、g77でも同じである(もっとも細かいオプションは両者で異なる)。
(!!! 注意 !!!)g77はデフォルトでは変数の初期化を行ってくれないので、プログラム中できちんと宣言をしていない変数を使っていると(←よっぽど几帳面なプログラムでない限りはこれがある)誤った結果を出すことがある。従って、変数の初期化を行う
-fno-automatic -finit-local-zero
というオプションを常につけて使わねばならない。これを毎回タイプするのは面倒なので、.cshrcに
alias g77 'g77 -fno-automatic -finit-local-zero'
と書いておいて、g77というコマンドを打ち込めば黙っていても -fno-automatic -finit-local-zero というオプションがつくようにしないといけない。
(0)大切な前提−Fortranプログラムのファイル名は.fという拡張子をつけること。
(1)test1.fというFortranプログラムソースファイルをコンパイルしてtest1という名の実行形式ファイルを作る
これはオプション-oを使って
% fort77 -o test1 test1.f
とする。このように実行形式ファイル名は(好きな名前がつけられるんやけど)元のソースファイル名から拡張子をとったものをつけるのが一般的。もし,
% fort77 test1.f
として実行形式ファイル名を指定しなかったら,できる実行形式ファイル名は勝手にa.outとつけられる。
(2)test1.fというFortranプログラムをlibtest2.aというライブラリをリンクしてコンパイルしてtest1という名の実行形式ファイルを作る
libraryにはlib***.aという名前をつけるのが決まり。libraryをリンクするには-lオプションを使う。linkしたいlibraryが/usr/libや/usr/local/libなどの「ちゃんとしたlibrary置き場」に置いてある場合はlibrary名の***の部分だけ使えばよくて
% fort77 -o test1 test1.f -ltest2
とする。もしlibtest2.aがちゃんとした置き場でなく例えば/home/kakehiに置いてあるならば
% fort77 -o test1 test1.f /home/kakehi/libtest2.a
とパス名を含めたlibrary名をそのまま最後に書けばよい。
libraryというのは,汎用性の高い(つまりいろんなプログラムで使われる)関数やsubroutineの場合いちいち個々のソースプログラムの中に入れるのはうざったいので,そういうのを(オブジェクトファイルの段階まで)コンパイルしたものをまとめて,それを利用するプログラムのコンパイル時にリンク(=つなげる)できるようにしたもの。
(3)プログラムの実行
実行形式になったプログラムは,言わばコマンドになったわけなんで
% test1
のように実行形式ファイル名を打ち込めばよい。test1.fの中でread(5,*)なんかで標準入力(画面からの入力)からの読み込みがある場合,もちろん手でいちいち打ち込んでいってもよいが,例えばファイルtest1.ctlにあらかじめ入力を書いておいて,
% test1 < test1.ctl
とリダイレクション<を使ってファイルの中身を食わせることができる(便利なので普通こうする)。さらにtest1.fの中でwrite(6,*)なんかで標準出力(画面への出力)に出力を吐き出すようになっている場合,
% test1 < test1.ctl > test1.out
という風にリダイレクション>を使うと標準出力の内容をファイルtest1.outに吐き出させることができる。
12.環境設定ファイルいろいろ(作成中)
(1).login
(2).logout
(3).cshrc
(1)(2)(3)については「続・たのしいUNIX」を読んでね。
13.ファイルの印刷
印刷に関係するコマンドは以下の通り。
(1)PSファイルの印刷
印刷のコマンドはlpr。UNIXでは使うプリンターに名前をつける。xxxという名前のプリンターにtest.psというPSファイルを出力するには,プリンタ名を指定するオプション-Pを使って
% lpr -Pxxx test.ps
とする。地震学講座で使えるプリンター名は以下の通り。
プリンター名
|
用途
|
プリンター
|
lp
|
モノクロ印刷
|
Canon LBP-450
|
col
|
普通紙にカラー印刷
|
Canon LBP-2040
|
ohp
|
OHP用紙にカラー印刷(手差し)
|
Canon LBP-2040
|
例えばtest.psというPSファイルをCanon LBP-450でモノクロ印刷したいときは
% lpr -Plp test.ps
とするのだが,lpはdefault printerなのでプリンター名の指定が省略できて
% lpr test.ps
でいける。
test.psというPSファイルをCanon LBP-2040で普通紙にカラー印刷したいときは
% lpr -Pcol test.ps
とする。他も同様。
(2)テキストファイルの印刷
テキストファイルを一度PSファイルに変換してそれを印刷する。a2psというテキストファイルをPSファイルに変換するコマンドというかソフト(a2psはascii
to PostScriptの意)を使う。今入っているa2psはPSへの変換結果を標準出力に吐き出すのでパイプ(|)を使って
% a2ps test.txt | lpr
とすればよい。もちろん
% a2ps test.txt > test.ps
とリダイレクション(>)を使って変換結果をファイルに落として,そのPSファイルを
% lpr test.ps
として印刷してもよい。まあこれやと(不要ならば)test.psを後で削除せんといかんけど。
(3)プリントキュー(プリントの順番待ち)の確認
% lpq
とすると印刷のjob番号とjobの状態が表示される。プリンタ名を指定するときはlprと同じく -Pオプションを使う。
(4)順番待ちをしているやつの印刷をやめるには
lpqコマンドでjob番号を確認して
% lprm job番号
とすればよい。プリンタ名を指定するときはlprと同じく -Pオプションを使う。以下に実行例を示しておく。
% lpr tiger.ps
% lpr article9.ps
% lpq
lp is ready and printing
Rank Owner Job Files Total Size
active kakehi 11 tiger.ps 78519 bytes
1st kakehi 12 article9.ps 2411 bytes
% lprm 12
dfA012Aa08456 dequeued
cfA012Aa08456 dequeued
%
14.PSファイルの表示
Ghostviewというソフトを使います。使い方は
% gv&
で起動してメニューにしたがってファイル名を指定して開くか,
% gv test1.ps&
とファイル名を指定してGhostviewを起動するかのどちらか。
研究室のSUNのマシンにはGhostviewが入っていませんが,Openwindowsを起ち上げてファイルマネージャーで見たいPSファイルをダルブクリックすれば「イメージビューアー」という表示ソフトが勝手に起動します。
15.telnet,rlogin,ftpそしてIP addressとhostname(作成中)
telnet,rlogin,ftpについてはコマンド解説を参照のこと。
16.メディア(FD,CD-ROM,ZIP,JAZなど)の使い方(作成中)
17.バックアップのとり方
基本的にはtar + gzipでファイルを圧縮してメディアに落とす(書き込む)ということをすればよいわけ。もちろん大量のファイルでなければ圧縮する必要はないけど。以下にDOS/Vフォーマットのzipにバックアップをとる例を示す。sc208、sc209、sc210にはzipドライブが付いていて、DOS/Vフォーマットのzipをドライブに入れて/misc/zipというディレクトリにアクセス(そのディレクトリに移動するとか、lsで中身を見るとか、書き込みに行くとか)すれば自動でされるよう設定してあります。
(1)dataというディレクトリとその中身のバックアップをdata.tar.gzという名前でDOS/Vフォーマットのzipにとる
sc208かsc209かsc210でDOS/Vフォーマットのzipをzipドライブに入れておいて
% tar cvf - data | gzip > /misc/zip/data.tar.gz
とやる。でもsc208、sc209、sc210のLinuxマシンのtarはGNU tarなのでもっと簡単に
% tar cvzf - data > /misc/zip/data.tar.gz
でOK。
できたdata.tar.gzを解凍するには、解凍したいディレクトリに移って
% gzip -cd /misc/zip/data.tar.gz | tar xvf -
とすればよい。でもGNU tarなので
% tar xvzf /misc/zip/data.tar.gz
ですんでしまう。解凍すると今自分が居るディレクトリにdataというディレクトリができてその下にダーッとファイルが展開されるよ。
(2)自分のホームディレクトリのバックアップをとる。
この場合、必要に迫られて圧縮ファイルを解凍する時のことを考えると、(1)のように解凍したらディレクトリができてしまうのはまずい。というのは自分のホームディレクトリの圧縮ファイルを/homeの下で解凍してユーザー名のついたディレクトリを作ろうとしても一般ユーザーには/homeに書き込み権限がないから。従ってこういう場合は以下のように「ホームディレクトリに居てカレントディレクトリの中身を全て圧縮する」という作戦をとればよい。以下面倒くさいのでGNU tarの場合だけを示す。
まず自分のホームディレクトリに移動しておいてから
% tar cvzf - . > /misc/zip/ユーザー名.tar.gz
とする。おしまい。
こうしておけば解凍する時は、まず自分のホームディレクトリに移動しておいてから
% tar xvzf /misc/zip/ユーザー名.tar.gz
でカレントディレクトリであるホームディレクトリに圧縮ファイルの中身を展開することができる。
18.プロセス(ジョブ)の管理
バックグラウンドでプロセス(ジョブ)を走らせるには
% gv&
のように最後に&をつける。時間のかかるプログラムを実行するときにはバックグラウンドで実行するとよい。途中でlogoutしても大丈夫。バックグラウンドで走っているプロセス(ジョブ)を殺すにはkillコマンドを使う。使い方は
% kill プロセス(ジョブ)番号
このプロセス(ジョブ)番号はpsコマンドで調べる。linuxなら
% ps -ax
Solarisなら
% ps -ef
とすりゃよい。
フォアグラウンドジョブを殺すには
Ctrl+c
とする。
19.マシンが死んだらどうするか
リセットや電源オフはファイルシステム(最悪の場合HDDそのものが)が壊れることを覚悟して行う最終手段なので,本当にどうしようもない場合しかやっていはいけない。
●画面が固まったら
まずは管理者を呼ぶ。
他のマシンから入ってプロセスを見て,怪しいプロセスをkillする。
Ctrl + Alt + BSでXを抜ける
●画面が真っ黒になったら
まずは管理者を呼ぶ。
キーを押しても何も表示されないとなると「どうしようもない」と思ってしまいがちだが,単にXの異常だけの場合もする。よってまず「Ctrl + Alt + BSでXを抜ける」ことを試してみる。ダメなら他のマシンから入ってプロセスを見て,怪しいプロセスをkillする。
これでもダメなら管理者が他のマシンから入って,rootになってshutdownする。
他のマシンから入れない,となるとちとつらいものがある。
コマンド解説
ファイルの一覧を表示する(LiSt)
ファイルの作成
ファイルの移動,ファイル名の変更(MoVe)
ファイルのコピー(CoPy)
ファイルの削除(注意!)(ReMove)
ファイルの中身を表示する(その1)(conCATinate)
ファイルの中身を表示する(その2)(more)
ファイルの中身を表示する(その3ーその2よりこっちがよい)(less)
ディレクトリの作成(MaKe DIRectory)
空のディレクトリの削除(ReMove DIRectory)
中身ごとディレクトリを削除する
居場所を移動する(Change Directory)
現在の居場所を確認する(Print Working Directory)
ファイルやディレクトリを探す(find)
特定の文字列を持つファイルを探す(Globally find Regular Expression and Print)
ファイルの属性を変える(CHange MODe)
他のホストにloginする(その1)(telnet)
他のホストにloginする(その2)(rlogin)
他のホストとファイルのやりとりをする(File Transfer Program)
コマンドの入力履歴を表示させる(便利!)(history)
(でかい)ファイルの中身の頭の部分を表示する(head)
(でかい)ファイルの中身の最後の部分を表示する(tail)
コマンドの入力履歴,画面に表示される実行結果,warningなどをファイルに保存する(script)
フォアグラウンドで走っているプロセス(ジョブ)を殺す
バックグラウンドで走っているプロセス(ジョブ)を殺す(kill)
プロセスを確認する(その1)(ProceSs)
プロセスを確認する(その2)(top)
メモリの使用状況を確認する(free)
Xウィンドウシステムをキー操作で抜ける
ディスクの使用量をパーティション単位で見る(Display Free disk space)
ディスクの使用量をディレクトリ,ファイル単位で見る(Directry or file Usage)
ファイルをまとめる,圧縮する,解凍する(tarとgzip,この2つはよく組み合わせて使う
ファイルを圧縮,解凍する(その2)(compress, uncompress)
●ファイルの一覧を表示する(LiSt)
hogehogeというディレクトリにあるファイルの一覧を表示する
% ls hogehoge
hogehogeというディレクトリにあるファイルの詳しい一覧を表示する
% ls -l hogehoge
hogehogeというディレクトリにあるファイル(ドットファイルも含む)の一覧を表示する
% ls -a hogehoge
なお,カレントディレクトリの中身を表示させるのならディレクトリ名は不要。
●ファイルの作成
ファイルの作成コマンドというのはなくて,まあ,何かエディタを起動してファイルを編集するということになると思うが,エディタとしてmuleを使い,test1.txtというファイルを編集するなら
% mule test1.txt&
とすりゃよい。ここで&は「バックグラウンドジョブで起動するよ」の意。
●ファイルの移動,ファイル名の変更(MoVe)
カレントディレクトリにあるtest1.txtをディレクトリhogehogeの下に移すには
% mv test1.txt hogehoge
test1.txtの名前をtest2.txtに変えるには
% mv test1.txt test2.txt
test1.txtの名前をtest2.txtに変えたいけど,もしtest2.txtが既にあって上書きしてしまうとイヤやな,という時は
% mv -i test1.txt test2.txt
とすると,もし既にtest2.txtがあるなら「上書きしてもええか?」と聞いてくる。
●ファイルのコピー(CoPy)
カレントディレクトリにあるtest1.txt同じ名前でディレクトリhogehogeの下に作るには
% cp test1.txt hogehoge
test1.txtをtest2.txtにコピーするには
% cp test1.txt test2.txt
test1.txtをtest2.txtにコピーしたいけど,もしtest2.txtが既にあって上書きしてしまうとイヤやな,という時は
% cp -i test1.txt test2.txt
とすると,もし既にtest2.txtがあるなら「上書きしてもええか?」と聞いてくる。
●ファイルの削除(注意!)(ReMove)
test1.txtを削除するには
% rm test1.txt
だが,削除してしまうと2度と戻らないし,タイプミスということもありうるので
% rm -i test1.txt
と-iオプションを使って「削除してもええか?」と確認させるのがよい。それでも危険なので.cshrcファイルの中で
alias rm rm -i
としておいて単にrmコマンドは黙っとっても-iオプションつきで実行されるようにしておくのがよい。
●ファイルの中身を表示する(その1)(conCATinate)
% cat test1.txt
●ファイルの中身を表示する(その2)(more)
% more test1.txt
スペースキーで次に進む。
ファイルの中身を表示する(その3ーその2よりこっちがよい)(less)
●
% less test1.txt
スペースキーで次に進む。bで前に戻る。
●ディレクトリの作成(MaKe DIRectory)
% mkdir hogehoge
●空のディレクトリの削除(ReMove DIRectory)
% rmdir hogehoge
空でないと「空でないので削除でけまへん」と言われる。
●中身ごとディレクトリを削除する
ディレクトリhogehogeの下のファイルを1個1個確認しつつ(最後に空になったディレクトリも)削除していくには
% rm -r hogehoge
確認せずに一気に削除するには
% rm -rf hogehoge
●居場所を移動する(Change Directory)
カレントディレクトリの横(というか一つ上のディレクトリの下)にあるディレクトリhogehogeに移動するには
% cd ../hogehoge
●現在の居場所を確認する(Print Working Directory)
% pwd
●ファイルやディレクトリを探す(find)
基本は
% find 起点ディレクトリ 探索条件 処理
だから,
探す場所:/home/daredare以下
探すファイルの名前:test1.txt
% find /home/daredare -name test1.txt -print
探す場所:/home/daredare以下
探すファイルの名前:testという文字列を含むファイル
% find /home/daredare -name ヤ*test*ユ -print
●特定の文字列を持つファイルを探す(Globally find Regular Expression and Print)
基本は
grep ヤ検索文字列ユ 対象ファイル名
だから,カレントディレクトリにある拡張子が.fのファイルを対象に,realという文字列を含むファイルをさがすには
% grep ヤrealユ *.f
●ファイルの属性を変える(CHange MODe)
ファイルhonyararaに実行権を与えるには
% chmod +x honyarara
ファイルhonyararaの実行権をなくすには
% chmod -x honyarara
結果は
% ls -l honyarara
で確認してみよう。
●他のホストにloginする(その1)(telnet)
% telnet IPアドレス
または
% telnet ホスト名
出るときはlogout。
●他のホストにloginする(その2)(rlogin)
% rlogin IPアドレス
または
% rlogin ホスト名
出るときはlogout。
●他のホストとファイルのやりとりをする(File Transfer Program)
% ftp IPアドレス
または
% ftp ホスト名
ftpはlogoutでなくquitで抜ける。
ftpのコマンド名はhelpか?と入力すると一覧が表示されるが,主なものは以下の通り。
ascii asciiファイル(テキストファイル)の転送用のモードにする
binary binaryファイルの転送用のモードにする
get ファイルをとってくる
put ファイルを送る
mget 複数のファイルをとってくる
mput 複数のファイルを送る
prompt 複数のファイルをやり取りするときに個々のファイルについて「とってきて(送って)いいか」をy/nで確認しつつ行うか,いちいち確認せずに行うかを変える
例えばmgetを使って「そこにあるファイルを全て頂き!」とする場合は
ftp> mget *
とすればよい。
「anonymous ftp」サイトと呼ばれるサイトから(フリーウェア等の)ファイルをとってくるときはlogin時のユーザー名は「anonymous」(「匿名」の意)とする。パスワードは大抵メールアドレスを入力するように求められる。
注:ファイル転送のプロトコル名としてのftpはFile Transfer Protocolの略。
●コマンドの入力履歴を表示させる(便利!)(history)
% history
とするとそのkterm(やxterm)やコンソールで今まで入力したコマンドが順番つきで,例えば次のように表示されます。
1 17: 16 ls
2 17: 16 cd program
3 17: 16 mule test1.f
4 17: 19 mule test1.ctl
5 17: 20 fort77 -o test1 test1.f
6 17: 20 test1
で,例えばfort77 -o test1 test1.fをもう一度実行したければ
% !5
と入力すればよい。絶対番号で指定するのでなく「3つ前に入力したコマンド」という指定の方法もあって
% !-3
とすればよい。また「ひとつ前のコマンド」は!-1でもよいが
% !!
でも行ける。これはプログラムを作るとき,プログラムの修正,コンパイル,実行を何度も繰り返すときなんかはごっつい便利。
といいながら↑キーでそれまでに入力したコマンドが順次表示されるので、使いたいのを出してリターンキーを押す、というのが一番簡単やったりする。
●(でかい)ファイルの中身の頭の部分を表示する(head)
% head test1.txt
●(でかい)ファイルの中身の最後の部分を表示する(tail)
% tail test1.txt
これはソフトをインストールするときのmake時に表示されるメッセージをファイルに吐き出させる場合,そのケツをtailコマンドで表示させて進行状況を知る,といった便利な使い方ができるコマンド。
●コマンドの入力履歴,画面に表示される実行結果,warningなどをファイルに保存する(script)
% script -a example.log
とするとそのkterm(やxterm)やコンソールの中の画面表示(コマンドの入力履歴,画面に表示される実行結果,warningなど)がexample.logというファイルに保存される。
% exit
でおしまいにする。
●フォアグラウンドで走っているプロセス(ジョブ)を殺す
Ctrl + c
●バックグラウンドで走っているプロセス(ジョブ)を殺す(kill)
% kill プロセス(ジョブ)番号
プロセス(ジョブ)番号はpsコマンドで確認する。
●プロセスを確認する(その1)(ProceSs)
全てのプロセスを表示させるには,OSがlinuxのマシンでは
% ps -ax
OSがSolarisのマシンでは
% ps -ef
とする。
●プロセスを確認する(その2)(top)
% top
とするとCPUを消費している順にプロセスをリアルタイムで表示する。メモリの使用量も表示される。終わるにはqキーを押す。
●メモリの使用状況を確認する(free)
% free
topコマンドでも確認できる。
●Xウィンドウシステムをキー操作で抜ける
Ctrl + Alt + BS
これはXが死んだり真っ黒になったりした時に便利。画面が真っ黒になったとしてもマシンが死んだと安直に考えてはいけない。単にXが死んどるだけかもしれんし。
●ディスクの使用量をパーティション単位で見る(Display Free disk space)
% df
●ディスクの使用量をディレクトリ,ファイル単位で見る(Directry or file Usage)
カレントディレクトリの使用量を含まれるファイルごとに表示させる
% du -a
カレントディレクトリの使用量のディレクトリ全体の合計を表示させる
% du -s
●ファイルをまとめる,圧縮する,解凍する(tarとgzip,この2つはよく組み合わせて使う)
tarは「複数のファイルをまとめたファイルを作ったり,tarでまとめたファイルをばらす」コマンド(圧縮はしない)。gzipは「ファイルを圧縮したり,gzipで圧縮されたファイルを解凍する」コマンド。
2つの典型的な場合を示す。
(1)カレントディレクトリにあるdataというディレクトリとその中身をtarでまとめてgzipで圧縮して,(カレントディレクトリの)data.tar.gzというファイルにする。
% tar cvf - data | gzip > data.tar.gz
LinuxにはGNU tarが入っているのでもう少し簡単に
% tar cvzf - data > data.tar.gz
これでいけます。
(2)(1)で作ったdata.tar.gzというファイルを解凍する。
% gzip -cd data.tar.gz | tar xvf -
これでカレントディレクトリにdataというディレクトリができてその下にファイルがダーッとできる。
LinuxにはGNU tarが入っているのでもう少し簡単に
% tar xvzf data.tar.gz
これでいけます。
tgzという拡張子を持つファイルも全く同じやりかたで解凍できる:
% gzip -cd freeware.tgz | tar xvf -
GNU tarなら
% tar xvzf freeware.tgz
●ファイルを圧縮,解凍する(その2)(compress, uncompress)
古いやり方で圧縮率はよくないが,compressというファイル圧縮コマンドがあって
% compress example.dat
でexample.datが圧縮され,example.dat.ZというZという拡張子のついたファイルになる。
解凍するにはuncompressコマンドを使って
% uncompress example.dat.Z
とやればよい。「bitが違う云々」と文句を言われてuncompressで解凍できない時はgzipを使って
% gzip -d example.dat.Z
とすればよい。
もし、解凍したファイルに違う名前をつけたいときは、オプション -c を使って
% gzip -cd example.dat.Z > example.txt
などとすればよい。
UNIXのコマンドについては例えば ここ で解説してあります(これは隣の太陽系のホームページだ)。他にも世の中のいろんな人が作っていると思うのでgooなんかで検索してみよう。
計算機関連のページへ戻る
地震学講座のホームページへ戻る
筧のホームへ戻る
最終更新日:00/01/07