CLI だけ
CLI とは
CLI とは Comand Line Interface の略です。Linux を
X 抜きでインストールしたときは CLI モードで
コンピュータを動かすことになります。「勘弁してよ」と悲鳴をあげるかも
しれませんが、コンピュータの方は「うん それのほうが CPU もメモリも
多く使えていいよ」と言うでしょう。
CLI の話になるのか
ウェアラブルの中には、グラフィックチップ、ディスク、およびメモリ容量 ならびにバッテリ寿命に問題を抱えているものもあります。テキストモード で動かすなら、バッテリが節約できるし,ディスクアクセスも少なくなり、 同様に多くのメモリと CPU サイクルの節約にもなります。また、グラフィック インタフェースをインストールする必要がないなら、ディスクスペースをすこし 節約することになります。その結果、データ用のスペースが増えます。 しかしテキストモードではなにもできないじゃないか、と思うかも しれませんが、すこし考え方を変えれば、テキストモードとグラフィックモードで 同じことができるのです。
入出力の通路を利用して、その間を情報伝達するプログラムが、ほとんどないと
いうことを考慮することが必要です。こういった環境では、何かするには
全部の指を使わなければなりません。マウスさえ使いません。
X では、エディタ (vi, Emacs,
Jed など)、ゲーム(もっともウェアラブル自体ゲームみたいな
ものですが)、ビューア/ブラウザ ( ?less, ?more,
lynx, links など)、ファイルマネージャ
( mc など) などいろいろ使えます。
CLI はかっこいいのだが、コマンドの設定やオプションをすべて
覚えるのは難しいと思っている人もいます。学習曲線は実際に急勾配ですが、
覚えてしまえば、よりはやく働けるし、速ければ速いほどウェアラブルに
とって良いことです。個人の仕事を加速する例を見てみましょう。
強力なシェルが UNIX の基盤です。 シェルを使うことで
Microsoft の貧弱なバッチ言語に比べて多くのことができます。
UNIX は強力なシェル (tcsh, ksh,
bash など) を数多く備えています。ただし著者は sh を
使っています。これは古くて他に比べて特徴もあまりありませんが、どの
UNIX 類にも搭載されています。sh にはよく使われる
機能/コマンド (echo, test)があります。なぜ
そのことに言及するかというと、 GNU も echo
と test のプログラムを持っており、もしこれをはずせたら、
まあ多いとは言えませんが、約 20k のディスクスペースの節約になります。
sh のバージョンの中には、すごく経済的なものがあります。
シェルスクリプトは、小さなプログラム言語で、繰り返しは
(for, while)、ユーザーインタラクションは
(read)、I/O (< >)です。
スクリプトを学ぶには、 man sh とタイプすればマニュアルが
表示されます(または tcsh ですが、すこし複雑です)。
馬鹿げたスクリプトの例
for i in * .[^.]*; do echo $i; done
(簡単に ls )
sed と awk についてUNIX の世界では awk と sed はよく知られています。
これらのプログラムは汎用性があり、いろいろなことに使えます。
GNU には sed や awk に代わる
ユーティリティ類 (dd、cut、
seqなど) があります。なぜ dd が出てくるのか
と思われる向きには -
dd には、気の利いたちょっとした機能が付いていて、大文字/小文字
の変換でいえば -
あるディレクトリに大文字のファイルネームがあって、それを小文字に
変えたいとします。awk では次のようにします。-
for i in *; do
mv "$i" "`echo $i | awk '{print tolower($0)}'`"; done
sed では大文字を、一つ一つ小文字に変換します。
dd では簡単で、次のようにすればよいでしょう。 -
for i in *; do mv "$i" "`echo $i | dd conv=lcase`"; done
cut はテキストの縦列をプリントするプログラムです。1行の中の
異なった縦列をプリントしたいときは cut が使えます。
cut はこの種のジョブ専用のコマンドで、速く効率的に仕上げたい
なら awk よりベターです。同じことが shell の内部コマンド
でもできます。(IFS 変数を割り当てればできます)
awk、 cut 、 sh での例を
下に示します。単に login : identity のフィールドだけを
示します。
awk -F: '{ print $1" : "$5}' /etc/passwd
cut:
while read line; do echo "`echo $line | cut -d: -f 1` : `echo $line | cut -d: -f 5`"; done < /etc/passwd
IFS=':'; while read a b c d e f; do echo "$a : $e"; done < /etc/passwd; IFS=' '
awk を覚える必要はありません。
awk を知らなくても、どんなことでもできます。
(もっとも、ときには awk のほうが簡単なことがあります)
sed の欠点は、一時ファイルで作業しなければならないことです。
ディスク容量を節約してコマンドラインでファイルを編集したければ
ex があります。これは vi のスクリプトバージョンです。
sed も使えますが必ずしも必要ではありません。
ディスク容量が肝心なら、ほかのプログラムでも同じことができるようなものは
削除することもできます。たとえば - dd があるなら
catはいらないし、vi があるなら ed
は必要ありません。(ほかの例があれば教えてください)
スクリプトの方がエイリアスより強力です。しかしスクリプトはディスク
容量を消費し、動かすたびにロードされます。エイリアスはメモリを消費
しますが CLI モードならひとりでメモリ全てを使えるわけです。
エイリアスはディスクではなくメモリから読み込まれるので、スクリプト
より速いのです。普通、シェルにはエイリアスやスクリプトに代る関数が
あります。関数にはスクリプトと同じ機能がありますが、メモリだけしか
使いません。エイリアスと関数について知りたければ Man ページを見て
ください。