キラリと光る小技集


ここでは,情報処理センターの主要コンピュータであるc90とcpusについて,便利に使う小技を紹介します.UNIXマニュアル的要素も含みます.
1.シェルをtcshに変えよう!
2.tcshで何が出来る?
3.&を使おう!
4.プロセスを管理しよう!
5.aliasを利用しよう!

1.シェルをtcshに変えよう!
tcsh(tcシェル)はシェルの一つで,UNIXをOSに持つコンピュータとユーザーのやりとりの場がシェルであると思って下さい.デフォルトの場合,csh(cシェル)を使っていることになります.まず先に,tcshへの変更方法から説明します.
c90: chsh(change shell)コマンドを使う.
c90% chsh loing名 /usr/local/bintcsh
と打つだけで終わり. 再度loginすれば,プロンプトがc90>になるはず.
cpus: シェル変更サーバにアクセスして操作を行う. nis-o.cc.titech.ac.jpにアクセスする.login&passwordはcpusに同じ.
cpus-f0[1]% ypchshと打つ.画面に従い,New shell:に/usr/local/bin/tcshと打ち,Password:にlogin時のpasswordを入れれば完了.
なお,cpus以外のmail-o,indy-o,files-o,media-oに対しても有効となる.
なお,その場限りでtcshに変える場合には,プロンプト状態の時にtcshと打つだけで変更になります.
2.tcshで何が出来る?

・コマンド履歴
もっともわかりやすい変化として,コマンドの履歴が残ります.適当にいくつかコマンドを使った後,キーボードの↑を押してみて下さい.一つ前のコマンドに戻ります.履歴がいくつまで残るかわかりませんが,打ち直すよりも戻りたい気分になるくらいは残ってます.戻したコマンドを編集することもできます.BSで消していくこともできるし,キーの←と→で移動させることも可能.ただし,矢印キーで動かすのは実はやんぐ.高名かつ水工研ではほとんど誰も使っていないMuleのカーソル移動コマンドがここで使えます.
上:CTRL+P   下:CTRL+N
左:CTRL+B   右:CTRL+F
行頭:CTRL+A   行末:CTRL+E
一文字削除:CTRL+D   カーソルより後カット:CTRL+K
この行頭,行末移動,カーソルより後カットが感動的.すばらしひ.Muleばんざーい.
とにかく,このカーソル移動でも前のコマンドに戻ったり,編集できたりします.


・検索(補間)
tcshを使うもう一つの利点がディレクトリ名,ファイル名指定の検索,補完機能です.
いま,カレントディレクトリに
  aho.f
  ahoaho.f
  baka/
  nagasugirunamae.f
というファイルとディレクトリがあったとします.
ここでたとえば,more nagasugirunamae.fと打ちたいときに,more nまで打ち込んでから,TABキーを押すと,nから始まるファイル名を検索して,agasugirunamae.fを補間してくれます.涙ちょちょぎれちゃいます.tcsh偉すぎ.
more aでTABキーを押すと,aで始まるファイルは二つあり,ahoまでが共通なので,more ahoまで進みます.そこで一文字足してmore ahoaとしてTABキーを押せば,more ahoaho.fとなります.もちろんこれはbakaというディレクトリに対しても有効です.あと,カレントディレクトリ以外の情報も検索してくれます.
3.&を使おう!

たとえばtelnetウィンドウを一つ立ち上げて操作しているとき,大きなファイルを圧縮している間は操作が出来なくなっちゃいますよね.もう一つ立ち上げてその間に操作しても良いんですが,&を使うことで圧縮作業を裏で処理させることが出来ます.
compress * &
と打つと,すぐに次のコマンド操作が可能になります.その間compressコマンドは有効に動いているわけです.compressが終わると,終わった後に最初に表で処理したコマンドのうしろにDoneが表示されます.途中で動いているかどうかを確かめるには,
jobs
というコマンドを打って見れば判断できます.また,もちろんcompress以外のコマンドに対しても有効です.さらに,fgと打てば,&を使わなかったときの状態に戻れます.メリットは少ないと思いますが・・・.
ただ,一つだけ注意!このコマンドはキューを使うジョブ処理とは違うので,接続を切ったら裏で動かしていたコマンドも死んでしまいます.
4.プロセスを管理しよう!

管理と言えば聞こえが良いですが,ログアウトがうまくいかなかったときに残ったゴミプロセスを殺す手法です.これは是非覚えておきましょう.
まず,自分が今操作しているプロセス一覧を見るコマンドです.
ps -ef | grep [login名]
と打ちます.「ps -ef」はすべてのプロセスを表示させるコマンドで,パイプコマンド「|」を使って,その中から自分のlogin名がつているものだけを検索して表示させます.たとえば,ps -ef | grep yinoueと打つと
yinoue 74019 74002 0 - p000 0:00 [ps]
yinoue 74002 74001 0 - p000 0:00 [tcsh]
yinoue 74018 74002 0 - p000 0:01 [mule]
yinoue 74020 74002 0 - p000 0:00 [grep]
余り多くを解説しませんが,この場合,4つのコマンドが現在使われていることを意味しています.シェルとps,grepは普通必ず出てくるでしょう.
で,仮にこのときのシェルがハングアップしてしまったとします.そのときはまず新たにそのマシンにログインしてから,新しい順に一つずつプロセスを殺していきましょう.やったことはないですが,いきなりシェルを殺すのは危険だと思います.上の場合,grep,ps,mule,tcshの順番が良いと思います.プロセスを殺すコマンドは
kill -KILL [プロセス番号]
です.たとえばまず,kill -KILL 74020と打てばgrepコマンドを停止させられます.もう一度ps -ef | grep [ログイン名]で確認してみて下さい.
自分でしくじった処理,ときには強制的に(これのほうが多いですが)接続が切られて,プロセスだけが残るときがあります.自分で後始末を付けられるようにしましょう.
5.aliasを利用しよう!

aliasとは簡単に言うとコマンドの名前を変更するものです.様々なオプションを含めて別名に置き換えることが出来ます.例えば,avsの起動には
avs -nohw -gamma 2
をよく使いますが,これを,
alias avs 'avs -nohw -gamma 2'
と打てば,avsだけで起動が可能となります.aliasというコマンドを使う方法もあるのですが,スタートアップ的に,ログインしたときに.aliasという隠しファイルを読み込ませる方が便利です.
ということで,まず.aliasという隠しファイルを作成します.ボクが使っている.aliasを紹介すると,

alias x 'xterm -fn r16'
alias mule 'mule -nw'
alias mulele '/usr/local/bin/mule'
alias rm 'rm -i'
alias tarc 'tar cvf'
alias tarx 'tar xvf'
alias tart 'tar tvf'
alias lhac 'lha cvf'
alias lhax 'lha xvf'
alias lhat 'lha tvf'
alias avs 'avs -nohw -gamma 2'
alias 77 /bin/f77
alias ps 'ps -ef | grep yinoue'

という具合です,どれもこれも便利ですが,特にcpusでは'rm -i'は必須といえます.これを付けないとrmコマンドに対して,yes,noを問われずに削除となってしまいますので.あと,c90では
alias a.out ./a.out
もかなり使えますね.
注意).aliasファイルは,一番下に改行のみの行をいれておかないと最後の文が認識されません.気を付けて下さい.

.aliasファイルが出来上がったら,そのファイルをスタートアップのように登録しなければいけません.面倒に思うかも知れませんがその後の便利さに比べればカスみたいな作業です.自分のホームディレクトリにある.cshrcというファイルをいじります.そのファイルのどこでも良いので,
source /home/usr3/yinoue/.alias
のように,.aliasファイルを読み込ませる設定を加えます.もちろん指定する場所に.aliasファイルを置いて下さい.