[Top page]   >   Linux あれこれ

Linux あれこれ

知らない人もたくさんいるでしょうか、一つの選択肢として Linux というものを紹介しようと思います。

Linux って?

Linux とは ... という解説記事や、書籍はおそらく巷にあふれている だろうし、関連する情報はWWWでもたくさんみつかるでしょうからここには 書きません。ものすごく乱暴な言い方をするならば マイクロソフトの Windows のようにコンピュータを操作するためには 必要なものであり、Windows と違うのは Free (無料、そして変更できる自由がある) であるということです。

Linux ディストリビューション

狭義のLinux は普通カーネル(OSの中核)だけを指す。しかし、 カーネルだけでは OS として機能しないのでカーネルのほかに実に様々なものが 必要となる。普通、Linux と呼ばれるシステムは GNU というプロジェクトの成 果物にたよっている。だから、 GNU をつくったストールマンは Linux じゃなく て GNU/Linuxと呼べと発言したりしてる。(間違えてたらごめんなさい、そして 指摘してください) 私が Linux を使いはじめたころは、Linux をひとつのOSと してきちんと動かせるようにパッケージしたディストリビューションというのが できつつあった。実際、私は自分で Slackware というディストリビューション をインストールした。 Slackware はすごくシンプルで、インストールされるファ イルを tar+gzip で固めたものが各ソフトのパッケージだった。だから、システ ム全体を統一して管理するカラクリなんてなかった。その分、自由だったし、必 要なものは自分でコンパイルしてインストールした。そうこうしているうち、初 心者でもインストール、管理がしやすいようにパッケージを管理するカラクリを 導入したディストリビューションが登場した。RedHatだ。RedHatの最大の功績は rpm (redhat package management system)の開発だと思う。ようするに専用のデー タベースファイルをつくって、システムの状態(rpmをつかって何をインストール したか)を記録できるようにしたということなんだけど、このカラクリはシステ ム管理をやりやすくしたし、ツールのインストール/アンインストールをとても 簡単なものにした。Debian というディストリビューションでは似たようなカラ クリをつかっているけど、rpm ほどはやらなかった。それは Debian のポリシー などが関係している。ともあれ、rpm をつかったシステムはLinux ではとても多 く使用されることになった。ということで、rpm をベースにしたディストリビュー ションはたくさんある。何を使うかはお好みでどうぞ。

お父さんのためのLinux講座

シェル

シェル(shell)とは、UNIXオペレーティングシステム(OS)と人間との間にたって、 コマンド(命令)をOSの命令に変換するもの。概念的にUNIXをつつみ込んで、人間 からはそれしか見えないことからシェル(shell: 貝殻)と名付けられた(らしい)。 んなこたぁ、どうでもよくてたいていの Linux ディストリビューションでは bash といわれるものがデフォルトのはず。 tcsh とか使っている人は、以下は 適当に読み換えて。 最近では、計算機を扱う上でGUIが主流にあるように感じるが、キャラクターベー スでコマンドを投げつけるのもあいかわらず便利なのである。
ls
とか
ps aux
などと、コマンドを入力するとシェルはそのコマンドを解釈し、該当する命令を 起動する。便利なのは、単発のコマンドを実行するだけじゃなく、シェルがきち んとしたプログラミング言語として機能するところが便利なのだ。たとえば、私 が、よく使う構文は
for f in *.jpg; do
   やってほしい処理 1
   やってほしい処理 2
   ...
done
のような for 文といわれる制御構造だ。たとえば、hoge001.jpg hoge002.jpg ... hoge200.jpg というファイルがあったとしよう。これを moge001.jpg moge002.jpg ... moge200.jpg というようにファイル名を変更するためには
for f in hoge*.jpg; do
  mv $f moge${f#hoge}
done
なんてなことをする。ここで、fというのは変数で設定の際だけそのまま用いて、 参照する際には $ をつける。たとえば
msg="Hello. Today is hotday."
echo $msg
のように用いる。

WWWからファイルをダウンロード

時々
http://www.hogehoge.com/hoge0[01-99].pdf
のようにファイルに番号が振られて保存されている場合がある。こんなときにこ ういうファイルをダウンロードするためによく使うのは curl というコマンドだ。 上の場合は
curl -O http://www.hogehoge.com/hoge0[01-99].pdf
とすればいい。プロクシを通すとか細かい設定もできる。 詳しくはマニュアルを読みましょう。

他にも wget というコマンドがある。しかし wget は http://www.hogehoge.com/hoge0[01-99].pdf のようなファイル指定 を理解しない。だから

declare -i n=1
while [ $n -le 9 ]; do
   wget -c http://www.hogehoge.com/hoge00$n.pdf
   n=$n+1
done
while [ $n -le 99 ]; do
    wget -c http://www.hogehoge.com/hoge0$n.pdf
    n=$n+1
done
のようにシェルスクリプトを組むとか、何か工夫が必要。 -c オプションが使えるのがうれしい。 -c (continue)オプションはタイムアフトしたときなど、その続きから ファイルの残りの部分をダウンロードしてくれる。

日本語のパスワードがかかったzipを展開

普通に ASCII キャラクタのパスワードがかけられた ZIP を展開するなら
unzip file.zip
... password: [ここでパスワードを入れる]
を実行して普通にパスワードを入れればいい。でも、日本語(Shift-JIS)のパス ワードがかかった ZIPファイルを展開するにはどうしたらいいだろうか。このた めには、まず、端末で日本語を入力できるようにしておかなければならない。 kinput2 や ATOK などお好みのものを使えばよい。そうした上で
unzip -P`nkf -s` file.zip
[ここでパスワードを入力]
Ctrl-d (コントロールキーを押したまま d を押す)
とすると、パスワードが正しければ展開されるはずだ。 上で端末で入力する方法を書いたけどエディタでパスワードを書いたファイルを つくって、それを Shift-JIS で保存しておいても同じようにできる。そのファ イルをpasswd.txtとしよう。
unzip -P`cat passwd.txt` file.zip
で大丈夫のはず。

PDFの閲覧

PDF は今やすっかり一ドキュメントフォーマットとして定着していますね。 Linuxでも adobe から出ている Acrobat reader が利用できます。でも、それ以 外にたいていの PDF は ghostscript で処理できるので gv などを使えます。そ れに xpdf という便利なものもあります。ときどき、印刷を許可していない PDF ファイルがありますが、 xpdf はその暗号を無視するらしく、印刷ができてしま います。まぁ、今後 version があがるなどするとできなくなるかもしれません が。参考までに。(2004.12.1) あと、xpdf で全てのこういったファイルが印刷 できるわけではありません。xpdf でも印刷できないようにちゃんと処理されて いるファイルもあります。(2004.12.24)

Exif 情報の表示

Exif というのが何かわからない人は無視してください。簡単に言うと jpeg ファイルに埋め込まれている写真撮影に関するデータです。すでにできあいのものを使ってもいいのですが、表示するだけなら perl をつかえば簡単にできます。 perl と Image::EXIF というperlパッケージを用意してインストールしておきます。あとは簡単
#!/usr/bin/perl

use Image::EXIF;
#use Data::Dumper;

die "Usage: $0 file names...\n" unless(@ARGV);

foreach $file (@ARGV) {
    my $exif = new Image::EXIF($file);
    my $all_info = $exif->get_all_info();

    print "---Camera information---\n";
    my $key="camera";
    foreach my $key2 (sort keys %{$all_info->{$key}}) {
        print "$key2: $all_info->{$key}->{$key2}\n";
    }
    print "---Image information---\n";
    $key="image";
    foreach my $key2 (sort keys %{$all_info->{$key}}) {
        print "$key2: $all_info->{$key}->{$key2}\n";
    }
    print "---Other information---\n";
    $key="other";
    foreach my $key2 (sort keys %{$all_info->{$key}}) {
        print "$key2: $all_info->{$key}->{$key2}\n";
    }
}
を exifprint.pl などのファイル名で保存し実行属性を与えておきます。
chmod 755 exifprint.pl
など。あとは、普通に実行します。
exifprint.pl file1.jpg

画像の表示は?

画像の表示をするためだけなら実に様々なツールがあります。たとえば、 ImageMagick というパッケージには display というコマンドがありますし、 GNOME や KDE といったデスクトップ環境にもそれぞれそれなりのツールがある かと思います。ですが、私のおすすめは「xv」です。 xv はシェアウェアです。 でも、期限が、機能に限定があるわけではなく完全なかたちで利用できます。個 人利用は25$で、詳細は http://www.trilon.com/xv/pricing.html をどうぞ。 Google などで検索すると、パッケージをすぐにみつけることができると思いま す。もちろんソースも配布されているので、自分でコンパイルすることができま す。XV は単に viewer としてだけでなく、ファイラーとしてもとても使いやす い洗練された機能を持っています。私が学部の学生のころからありましたからも う10年以上存在していることになりますね。 簡単な使い方を紹介しておくと Ctrl-v でファイラーを起動。あとは表示したい画像をダブルクリック。これが 基本。あとはマウスの右や左のボタンを押して適当なコマンドを選択。たいてい のことはこれで済むはず。

asxのストリーミングを保存

mplayer を使います。 mplayer はいろんな使い方ができるのでインストールしておくと便利。
mplayer -dumpstream -dumpfile hoge.asx mms://hoge.moge/hoge.asx
とすると、 hoge.asx としてファイルが保存されます。 当然のことながら WMV の DRM とかがかかっていると保存できません。

Thinkpad X31 で Linux

自分で使っている ThinkPad X31 で Linux を使用するときの メモなどを置いておきます。 使用しているディストリビューションは Debian (sid)です。

Linux kernel 2.6系列を使用するときのメモ