脱落しないように,自分で考えて確かめながら,しっかり理解すること. ここで引き離されると,今後の挽回は難しい. 最後のチャンスである.
標準入力装置 標準出力装置
入力 ---------------> コマンド ---------------> 出力
こうしたコマンドを組み合わせて.あるコマンドcommand1の処理結果(標準出力装置への出力)を別のコマンドcommand2の入力に"繋ぎ換える"ことをパイプ(pipe)という.
標準入力装置 標準出力 標準入力 標準出力装置
入力 ------------> command1 -------> | --------> command2 -----------> 出力
コマンドを連ねてパイプするには縦棒記号『|』を使う.
UNIXではパイプを実現しているのはシェルのパイプ機能による.
これは,次の処理を続けて行なっていることに相当する.% jdvi2kps report.dvi | lpr
jdvi2kpsはLaTeXで生成されたDVIファイルを入力すると,それをPostscriptコードに変換して標準出力の返すPSドライバーである.
jdvi2kpsによってPostscriptコードに変換された出力をlprの標準入力にパイプしている.
lprは標準入力から受け取った内容をプリンタ装置に送り出す.
パイプによって入力されたPostscriptコードがlprによってプリンタに送られる.
上のようにパイプ処理を経ないてプリンタに印刷するには,次のようにリダイレクションによってPostscriptファイルを作成し,これを改めてlprに渡してやる.
ファイルの種類を表すために,拡張を必ず付けねばならないことに注意する. Postscriptファイルの拡張子は,通常『% jdvi2kps report.dvi > report.ps % lpr report.ps
.ps』である(場合によっては,『.eps』も使う).
演習1:DVIファイルをパイプを使わないで印刷してみよ.
cat
として,ファイル% cat file1 file2 file3 ....
file1,file2,file3,...の内容をつなげて(連接して)表示することができる.
は同じ結果をもたらす.% ls | cat と % ls
nkf
fileをシフトJIS(Windows95やMacintoshの漢字コード)に変換して,その結果をファイルsjisに書き出すには次のようにする.
% nkf -s file > sjis または % cat file | nkf -s > sjis
| オプション | 意味 |
|---|---|
-j | JIS漢字コードに変換 |
-e | EUC漢字コードに変換 |
-s | シフトJISコードに変換 |
演習2:シフトJIS漢字コードで書かれたテキストファイルsjis.txtの内容をPostscriptプリンタに印刷するにはどうするか.
cat,moreやlessでその内容が表示できるファイルである.
テキストファイルをPostscriptに変換するためのプログラムはいくつか知られている. 本学で使えるコマンドk2psはその一つである. ただし、漢字ファイルはJISコードに変換されていることが前提である(以下の例は、既にJISコードになってファイルを想定している)。
たとえばテキストファイルreport.texをPostscriptプリンタで印刷するには次のようにする.
プログラムの解説によく見られるように,行番号を付けて印刷するには% k2ps report.tex | lpr
と% k2ps -n report.tex | lpr
-nのオプションを付ければよい.
知っていると便利なオプションを,表に示した.
| オプション | 意味 |
|---|---|
-n | 行番号を付ける |
-dx | xとしてdまたは2を指定すると2段組で印刷する. |
-kfont | 漢字フォントを指定する.
fontとしてgを指定するとゴシック体,jならJISフォントになる.mはデフォルトで明朝体. |
-npg | ページ枠を印刷しない. |
-nph | ヘッダを印刷しない. |
-npn | ページ番号を印刷しない |
-tname | 印刷されるタイトルをnameにする. デフォルトはファイル名. |
-Tn | タブの文字数をn文字にする.デフォルトは8文字. |
演習3:テキストファイルindex.htmlをPostscriptプリンタで印刷するにはどうするか.
sort
| オプション | 意味 |
|---|---|
-n | 数値として比較 |
-r | 逆順にソート |
-f | 大文字と小文字を区別しない |
+i | i番目のフィールド以降を比較(最初のフィールドは0番目). |
フィールドとは"単一の空白文字(空白またはタブ)で区切られた領域"である. 空白が2つ以上続いた場合,先頭の空白が区切り文字として扱われ,2番目以降は次のフィールドに含まれる.
演習4:オプション-lのついたコマンドls -lが表示する行の各フィールドの意味を調べて述べよ.
演習5:指定したディレクトリにあるファイルを,ファイルサイズの`大きい順'にならべよ.
fold
fileを50文字で折り返して表示するには,次のようにする.
% fold -w50 file または % cat file | fold -w50
演習:いろいろなファイルでこれを確かめよ.
head
fileの先頭20行を表示するには
% head -20 file
tail
fileの末尾20行を表示するには
% tail -20 file
演習6:次のコマンドの意味は何か.
% cat file | head -50 | tail -10
wc
% wc file
100 340 1234 number
は,左からファイルfileの行数,単語数,文字数(コントロール文字を含む)である.
個々の情報だけを表示するには,次のオプションを使う.
| オプション | 意味 |
|---|---|
-l | 行(Line)数の表示 |
-w | 単語(Word)数の表示 |
-c | 文字(Character)数の表示 |
オプションを複数指定すれば,指定した順番に表示させることができる.
は,拡張子% wc -l *.tex
.texの付くファイルの行数を表示する.
演習7:public_html直下にあるHTML文書ファイルをその行数の少ない順に表示せよ.
\begin{enumerate}
\item 1番目の回答
....
\item 7番目の回答
\end{enumerate}
のように書け.
さらに,% ls -l > list
\begin{verbatim}
% ls -l > list
\end{verbatim}
また,「コマンドlsを使って」というようにコマンドを文中に書くときには
コマンド{\tt ls}を使って
のように{\tt ....}を使って,コマンドをタイプライタ体のフォントで表せ(verbatim環境も英数字はタイプライタ体となる).
注意: 7題すべてに答えていること,およびLaTeX文書として『美しく』書かれていることが絶対条件.