2901

チュートリアル

計算工学において OS を効率良く使いこなすのはいつの時代も大切なスキルです。今回のチュートリアルでは特に UNIX 系の OS において作業の自動化を可能とするシェルスクリプ
トと UNIX（Linux や Windows でも可）のコマンドの便利な利用法について、近畿大学の和田義孝先生に解説をお願いいたしました。全2回シリーズの第2回目として、シェルスクリプトの応用、外部プログラムとの連携について解説していただきます。なお、チュートリアル記
事は1ページ目のみを本誌掲載し、続きは日本計算工学会 HP 上で公開していますので、そちらも併せてご参照ください。

第2回

シェルスクリプトの応用、外部プログラムと連携
和田 義孝

1

ファイル名の変更の実際

6行目 basename コマンドはファイル名やディレクトリの場所を示すパスからファイル名だけを取り除いたり、拡張子だけを取り除いたりするコマンドです。詳
しくは man basename と端末で入力しオンラインマニュアルを御覧ください。結果は、拡張子が取り除かれたファイル名が変数 ${bnm} に代入されます。

ファイル名の変更はファイルシステムをもつ OS ではよく行われる作業の1つです。ここでは、フォルダにあるファイル全てについて作成された日付および時間をファイル名に追加するシェルスクリプトを例とします。すでにシェルスクリプトの基本は前回まででほとんど説明してあります。さて、このシェルスクリプトのポイントはなんでしょうか。

プログラム1

7〜10行目 ファイルのもつ作成時刻をナノ秒単位まで表示します。本当に正確な値かどうかは OS にも依存しますが表示可能です。それらを加工し日付と時分秒の部分とナノ秒までの部分にわけて ls コマンドで指定したファイルについて出力させます。awk でさらに加工します。awk ではナノ秒を先頭の3桁まで利用してミリ秒として新しいファイル名を作るために利用します。
以上のようにファイル名を変更するルールが決まれば自在に応用が可能になります。なお、11行目では echoにより画面に結果を出力させているだけなので echo を削除すれば cp（コピー）コマンドが働き実際に複製を作成できます。

shell11.sh

答えは、プログラムを複数組み合わせて目的を達成している点です。プログラム1を解説します。
3〜5行目 拡張子を抜き出すために awk を利用しています。フィールド識別のための文字列を「．」とすることで拡張子を抜き出します。もし拡張子が存在しない場合、split 関数（awk の組み込み関数）は1を返し、拡張子がある場合は2以上の値を返します。

図1

2

shell11.sh の実行結果

複数のグラフを生成し1つの画像にまとめる

次のプログラム例では、gnuplot というグラフ作成のアプリケーションと ImageMagick という画像操作の筆者紹介アプリケーションの2つを利用します。

わだ よしたか近 畿 大 学 理 工 学 部 機 械 工 学 科 准 教 授。 博 士（工学）。東京大学寄付講座助手、財団法人高度情報科学技術研究機構研究員、諏訪東京理科大学を経て2012年より現職。専門は破壊力学、自動格子生成、非接触全視野ひずみ計測。

Vol.18, No.1 2013（23）

続きは Web で
日本計算工学会誌「計算工学（Vol.18, No.1）」HP：http://www.jsces.org/Issue/Journal/

チュートリアル

シェルスクリプトの応用、外部プログラムと連携プログラムが利用可能か調べるため、端末で、$ gnuplotと入力しプログラムが起動すれば利用可能です。終了
は exit と gnuplot のプロンプトで入力して Enter キーを押してください。同様に、以下のコマンドを実行してください。
$ montage
利用方法が画面に出力されれば利用可能です。なお次のように画面に出力された場合（図２）は、利用できない状態です。Cygwin や Linux ではパッケージとして利用可能なので、このパッケージを探してインストールを行なってください。

$ montage
bash: montage: コマンドが見つかりません
図２

図３

コマンドが存在しない場合例

3～14 行目 この部分がヒアドキュメントと呼ばれる部分です。この例では cat コマンドに<<EOS から 14行目の EOS までを流し込み（ストリーム）、ファイルgp.gp へ書き出しています。これだけ分かればいろいろと応用ができます。4～13 行目は gnuplot で解釈されるグラフ作成のための命令です。
15 行目 650×650 ピクセルの画像を作成するために

shell12.sh
12
3
4
5
6
7
8
9
10
111213
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2930

#!/bin/sh¥rm -f gA*.png graph.png gA*.gp
cat > gp.gp << EOS
set terminal png size MS,MS enhanced font 'Verdana,20'
set output MN
set size square
set grid
set xrange [-2*pi:2*pi]
set yrange[-1.2:1.2]
set xtics ('-2{/Symbol p}' -2*pi,'-{/Symbol p}' -pi,0, ¥'{/Symbol p}' pi,'2{/Symbol p}' 2*pi)
set title "sin(MAx) and cos(MBx) curves"plot sin(MA*x) w l lw ML, cos(MB*x) w l lw MLEOSSIZE=650
LWIDTH=3
A=("0.10" "0.40" "0.80" "1.60")
B=("0.50" "1.00" "1.25" "1.50")
for i in 0 1 2 3; do
N=gA${A[${i}]}-B${B[${i}]}echo ${A[${i}]} ${B[${i}]} ${N}
sed -e "s/MA/${A[${i}]}/g" ¥-e "s/MB/${B[${i}]}/g" ¥-e "s/MS/${SIZE}/g"¥-e "s/ML/${LWIDTH}/g" ¥-e "s/MN/¥"${N}.png¥"/g" < gp.gp > ${N}.gp
gnuplot ${N}.gp
done
montage gA*.png -tile 2x2 ¥-geometry ${SIZE}x${SIZE} graph.png

プログラム２

変数値として SIZE に代入します。
16 行目 グラフに描かれる線の太さを 3 とするため、変数値として LWIDTH に代入します。
17,18 行目 bash の配列宣言です。A および B は sin
関数と cos 関数に関わるパラメータとして利用されます。
19 行目 配列をアクセスするためにここでは、0 から 3まで i の値を変化させます。値の数が多くなる場合は、
for i in $(seq 0 4)のように seq コマンドを利用すると便利です。
22～26 行目 ここで、ヒアドキュメントで書きだされshell12.shshell12.sh を 実 行 す ると図 ３ に示 すよ うな ４つ のグラフを１枚の画像に出力します。さて、shell12.shを理解するためには次の３つがポイントになります。



ヒアドキュメント(bash の機能)パラメータとなる文字列置換(sed)
複 数 の 外 部 プ ロ グ ラ ム 起 動 (gnuplot とmontage)

これらのポイントに注意しながら解説いたします。

計算工学

shell12.sh の実行結果 graph.png

た gp.gp とう名前のファイルの中身を sed コマンドにより文字列置換を行います。MS, MN, MA, MB がそれぞれグラフのサイズ、出力される画像ファイル名、sin 関数の周期、cos 関数の周期が具体的な名前や数値に置き換えられます。
27 行目 sed の出力先は${N}.gp で指定されたファイルです。gnuplot が起動され、このファイルを読み込みます。
29,30 行目 作成された４つのファイルは図３のように配置された１つの画像として graph.png という名前で保存されます。
最後にグラフのアニメーションを生成する例をプログラム３に示します。shell12.sh から変更された箇所にグレーのハッチをかけてあります。２つのプログ(23-2)

Vol.18, No.1 2013

チュートリアル

シェルスクリプトの応用、外部プログラムと連携

ラムの違いをよく読みといてください。最大の違いは、
bash では実数演算ができないために外部プログラム(bc コ マンド )で実数 計算を 行わせている 点とファイル名に空白を使いたくないために printf コマンドでファイル名に使う文字列を整形している点です。
convert コマンドも ImageMagick のプログラムの一部です。出力結果は graph.gif に保存されます。
gif 画像フォーマットでは簡易的なアニメーションが実現できます。今回はこの機能を用いてアニメーション作成しました。連続した画像ファイルがあればそこから AVI や MPEG などへの変換も可能になります。
先ほどのグラフをタイル状に合体させる方法とアニメーションを作る方法を組み合わせれば効果的なプ
レゼンテーション資料の作成はぐっと身近なものになります。膨大な画像を直接操作せず、スクリプトの中で連続生成、変換が行われます。こういったケースはシェルスクリプトが最も得意とする応用例です。是非活用してください。
shell13.sh1234567891011121314151617181920
21222324
25
26272829303132#!/bin/sh¥rm -f gA*.png graph.gif gA*.gp
cat > gp.gp << EOS
set terminal png size MWS,MHS enhanced font 'Verdana,20'
set output MN
set size ratio 0.67
set samples 2000
set grid
set xrange [-2*pi:2*pi]
set yrange[-1.2:1.2]
set xtics ('-2{/Symbol p}' -2*pi,'-{/Symbol p}' -pi,0, ¥'{/Symbol p}' pi,'2{/Symbol p}' 2*pi)
set title "sin(MAx) curve"
plot sin(MA*x) w l lw MLEOSWSIZE=900
HSIZE=600
LWIDTH=2
OA=0.1for i in $(seq 1 100) ; doT=`echo ${i}*${OA} | bc -l`A=`printf "%05.2f" ${T}`
N=gA${A}echo ${N}
sed -e "s/MA/${A}/g" ¥-e "s/MWS/${WSIZE}/g" ¥-e "s/MHS/${HSIZE}/g" ¥-e "s/ML/${LWIDTH}/g" ¥-e "s/MN/¥"${N}.png¥"/g" < gp.gp > ${N}.gp
gnuplot ${N}.gp
done
convert -geometry 50% -loop 0 -delay 5 gA*.png graph.gif

プログラム３

肝心な配列変数に相当する部分やデータそのものはどれでしょうか。それはファイルそのものです。ファイルに対して操作をしているのです。今回の例ではファイルの名前を変更や加工するために変数を利用して操作しました。また、ファイルを生成して中身を書き換えて、グラフを作り、そのグラフを１つにするといったことも行いました。捉え方はいろいろあるかと思いますが、シェルはユーザーが操作するファイルに対してその実行をプログラム化しサポートしてくれる便利なスクリプト言語です。デメリットとして実行速度が遅い、大規模なメモリを扱えない、などがあります。
ファイルに対して操作するのでシェルがメモリを大量に使うことは想定していないのでしょう。メリットは、ファイル操作するためのコマンドとの親和性は抜群によく複数のコマンドを組み合わせて使うことに長けています。以上の特徴を覚えていただければ、ヒアドキ
ュメントや外部のファイルを積極的に置換で書き換え、実行の自動化が容易にできます。gnuplot を利用する例で示した方法そのものです。
シェルスクリプトを作業に活用するもう１つの基準はその言語がファイル操作に長けているかどうかが基準となります。ファイル操作には文字列の操作も大きく関係します。たとえば、octave は数値計算が非常に得意です。また、文字列操作も C 言語と同等以上に行い易い言語です。理由は変数の型を意識しないプログラミングが可能だからです。しかし、少々面倒くさいのは特定のファイルのみ操作するだとか、ファイルの一覧を加工するだとか、そういったシェルが得意なことは苦手です。一方で perl 言語はシェルの良い所が利用できます。数値計算はできますが得意ではありません。別の例として、汎用有限用法プログラムであ る ANSYS の ADPL(ANSYS Parametric DesignLanguage)という言語があります。この言語では変数や配列変数は自由に使えますが文字列操作が FORTRAN言語に近い考えで作られているので最新の言語に比べると扱いにくいです。
以上まとめると、次のようにシェルの利用を判断すればよいでしょう。

shell13.sh

３スクリプトのスクリプト の 適用範囲とは適用範囲 とは通常のプログラムの場合は入出力関数、文字列操作関数、数学関数などが用意されています。また入力された数値や文字列などのデータは配列変数に保存され言語はその配列変数に対してさまざまな操作を行い所望の結果を得ることができます。この考え方は「言語」であればどれも同じだと思います。さて、一方でシェ
ルスクリプトや Cygwin や Linux で使えるコマンドはどうでしょうか。コマンドも C 言語などの言語により実装されているので基本は同じはずです。しかし、シェルスクリプトの実際を見てみると少し違うように感じます。理由は、明確な「入力」「出力」が無い上に、変数や配列変数の存在は必要最小限だからです。では、計算工学



言語が苦手な部分をサポートさせる，例えば複数のコマンドの実行やファイル処理全般
文字列の置換や整形など（sed,awk,perl が得意とする作業）
シェルが苦手な作業は数値計算、高速な処理が要求される作業４FEM プログラムとプログラム と シェルスクリプトのシェルスクリプト の 利用例
最後に商用の汎用有限要素法プログラムである
ANSYS を動かすスクリプトを紹介します。この２つのスクリプトの基本を抑えておけば、有限要素法計算の自動実行からグラフ化までが可能になります。全体の処理は次のようになっています。

(23-3)

Vol.18, No.1 2013

チュートリアル

シェルスクリプトの応用、外部プログラムと連携

解析対象は片持ちはりです。２次元で解析をします。はりの長さ、はりの断面高さ、与える荷重を変化させています。
縦主軸上にある節点を選び y 方向の変位をグラフに描きます。
ANSYS を制御する言語である APDL が記述してあるファイルをプログラム５に示すように外部ファイルとして保存します。長いのでヒアドキュメントにしていません。
ANSYS の解析を行うバッチファイルはヒアドキ
ュメントと内部で生成する文字列で作り出します。

全体の作業は次のとおりです。
 ADPL によるはりの解析をするプログラムを形状と境界条件を変更
 ANSYS を実行するバッチファイル生成
 gnuplot でグラフを描く命令を記述するファイル生成
 バッチファイルで ANSYS による FEM 解析
 gnuplot で二次元グラフ生成

図４ⅱ．bash およびシェルスクリプト
本稿の中心になる話題です。現状では、多少の文法の違いはあれシェルでできることが拡張され現在に至っています。bash を標準として学ぶのがよいでしょう。
shell14.sh で２点注意があります。１つは改行コードに関連する話です。Cygwin や Linux ではテキストフ
ァイルの改行コードに 1byte の文字コード「LF」のみで表現します。一方、Windows は、テキストファイルの改行コードに 1byte の文字コード「CR」「LF」の２つで表現します。この「CR」に相当するのが「^M」という表記で表されています。Cygwin はどちらでも動作しますが、Windows は「CR」が無いとエラーになります。入力方法は、お使いのエディタにもよりますのでコントロールコードの入力方法は調べてください。
Emacs では、「ctrl-q」を押してから「Enter」で入力できます。また vi エディタは「ctrl-v」を押してから「Enter」で入力できます。画面に現れる「^M」は２文字相当ですが、実際の「^M」は１文字です。ご注意ください。このスクリプトは十数秒から数十秒程
度 で 終 わ り ま す 。 得 ら れ る 画 像 名 は「 CANT2D_graph.png」 で す 。 この 結 果を 図４ に 示します。ANSYS でもグラフはかけますがクオリティの高い可視化を行おうとするとやはり専用のプログラムのほうが、融通がきくと思います。
５ より進より 進 んだ学
んだ 学 習 のためにより進んだ使い方をマスターするために書籍やネットのサイトを紹介いたします。
ⅰ．正規表現次の書籍がおすすめです。また、正規表現の取り扱
いはメタキャラクタの取り扱いの違いにより若干の差異が生じます。合わせて、bash, sed, awk の書籍も参考にしたほうがよいでしょう。


詳説 正規表現 第 3 版、Jeffrey E.F. Friedl 著、オライリージャパン、ISBN-10: 4873113598

計算工学

shell14.sh の実行結果:CANT2D_graph.png



入門 bash 第 3 版、Cameron Newham, Bill
Rosenblatt 著、オライリージャパン、ISBN-10:
4873112540
bash クックブック、Carl Albing, JP Vossen,
Cameron Newham 著、オライリージャパン 、ISBN-10: 4873113768
詳解 シェルスクリプト、Arnold Robbins, Nelson H.
F. Beebe 著、オライリージャパン、ISBN-10:
4873112672

ⅲ．sed と awk
シェルスクリプトの能力を最大に活用することはこの２つのストリームエディタを使いこなすことと同義です。この本一冊あれば大抵のことはこなせると思います。
sed & awk プログラミング 改訂版 (A nutshellhandbook)、Dale Dougherty, Arnold Robbins 著、オライリージャパン、ISBN-10: 4900900583

ⅳ．その他 UNIX(Linux, Cygwin)のコマンド等
UNIX プログラミング環境は参考書です。かなり古い書籍ですが、今回の執筆でもだいぶ参考にしました。
UNIX のコマンドを組み合わせて出力を整形し所望の結果が得られることがこの本を通じてよくわかります。
シェルスクリプトの可能性を余すことなく解説しています。また２冊目の本は、UNIX のコマンドがどのような考えで設計され実装されているのかを知ることができます。中身をしれば自ずと利用方法が理解されます。Brian W. Kernighan 氏は C 言語の開発および UNIXシステムへの多くの貢献で知られています。また awkの開発者の一人でもあります。

(23-4)

Vol.18, No.1 2013

チュートリアル

123456789101112131415161718192021222324252627282930313233343536373839404142434445
46
4748
49
50
51
52
53
54
55
56
57
58
5960
616263
64
65
66
67
68
69
7071
72
73
7475
76

シェルスクリプトの応用、外部プログラムと連携
JSCES_CANT2D.txt

shell14.sh#!/bin/sh¥rm -f CANT2D_*cat > JSCES_CANT2D.bat << EOL1
set ANSYS110_PRODUCT=ANE3FL^M
set ANS_CONSEC=YES^M
EOL1
cat > JSCES_CANT2D.gp << EOL2
set terminal png size 1200,804 enhanced font
"Verdana,14"
set output "/dev/null"set size ratio 0.67
set grid
set key left top
set format y '%4.2tx10^{%T}'set xrange [0:20]
set xlabel "X along longitudinal of cantilever [m]" font
"Verdana,16"
set ylabel "Deflection [m]" font "Verdana,16"
set title "Deflection curves of cantilevers" font
"Verdana,24"
EOL2nl=`wc -l JSCES_CANT2D.gp | awk '{ print $1+1 }'`for l in 5 10 20 ; dofor h in 2 3 4 ; dofor f in 100 ; doFNAME=`printf "CANT2D_L%02d_H%02d_F%03d" ${l} ${h} ${f}`echo $FNAME
let ndl=l*1
let ndh=h*4fce=`echo 10*${f}/${l}¥^2 | bc -l`tce=`printf "%.2f" ${fce}`cat > _file << EOL3s/MCANT/${FNAME}/gs/=MLENGTH/=${l}/s/=MHEIGHT/=${h}/s/=MFORCE/=${fce}/s/=MNDL/=${ndl}/
s/=MNDH/=${ndh}/
EOL3

この部分は環境により書き換え必要です。動作確認はWindows7, Cygwin,

ANSYS11

教育版です。

sed -f _file JSCES_CANT2D.txt > $FNAME.txt
echo ¥"C:¥¥Program Files ¥(x86¥)¥¥ANSYS ¥Inc¥¥v110¥¥ANSYS¥¥bin¥¥intel¥¥ansys110¥" ¥-b -i ${FNAME}.txt -o ${FNAME}.out^M ¥>> JSCES_CANT2D.batecho replot ¥"${FNAME}-RESULT.txt¥" ¥u 2:4 w lp lw 2 ¥ti ¥"Length=${l}[m],Height=${h}[m],Load F=${tce}[N]¥" ¥>> JSCES_CANT2D.gp
donedonedone
cmd < JSCES_CANT2D.bat
cat > _file << EOL4${nl}s/replot/ plot/
EOL4
sed -f _file JSCES_CANT2D.gp > _file2¥mv _file2 JSCES_CANT2D.gp
for RNAME in CANT2D_*-RESULT.txt ; doecho $RNAME
sort -g -k 2 ${RNAME} > _file¥mv -f _file ${RNAME}
doneecho set output ¥"JSCES_CANT2D_graph.png¥" >>JSCES_CANT2D.gp
echo replot >> JSCES_CANT2D.gp
gnuplot JSCES_CANT2D.gp¥rm -f _file

プログラム４ 片持はりのたわみを解析、たわみ分布
グラフを生成するシェルスクリプト


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2930
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

UNIX プログラミング環境、Brian W. Kernighan,
Rob Pike 著、アスキー、ISBN-10: 4871483517
プログラム書法 第 2 版、Brian W. Kernighan, P. J.
Plauger 著、共立出版, ISBN-10: 4320020855

計算工学/CLEAR,NOSTARTFNAME='MCANT'RNAME='MCANT-RESULT'/TITLE,FNAME/FILENAME,FNAME,1!-- 形状や要素分割に関するパラメータ --------------LENGTH=MLENGTHHEIGHT=MHEIGHTFORCE=MFORCE
NDIV_LEN=MNDL
NDIV_HIG=MNDH!-- 要素と材料定数の設定 ----------------------/PREP7
ET,1,PLANE183
KEYOPT,1,1,0
KEYOPT,1,3,2
KEYOPT,1,6,0
KEYOPT,1,10,0
MP,NUXY,1,0.3
MP,EX,1,70.6E9!-- 矩形頂点４つと矩形線分４つを生成--------------K,1,0,0
K,2,LENGTH,0K,3,LENGTH,HEIGHT
K,4,0,HEIGHT
L,1,2
L,2,3
L,3,4
L,4,1
AL,1,2,3,4!-- 線分の要素分割数 ---------------------------LSEL,ALL
LSEL,S,LOC,X,0LESIZE,ALL,,,NDIV_HIG,,,,,1LSEL,ALL
LSEL,S,LOC,X,LENGTHLESIZE,ALL,,,NDIV_HIG,,,,,1LSEL,ALL
LSEL,S,LOC,Y,0LESIZE,ALL,,,NDIV_LEN,,,,,1LSEL,ALL
LSEL,S,LOC,Y,HEIGHTLESIZE,ALL,,,NDIV_LEN,,,,,1ASEL,ALL
AMESH,ALL!-- 境界条件 ---------------------------------ESEL,ALL
NSEL,ALL
NSEL,S,LOC,X,0
D,ALL,ALL,0
ESEL,ALL
NSEL,ALL
NSEL,S,LOC,X,LENGTH
NSEL,R,LOC,Y,HEIGHT
F,ALL,FY,FORCE
NSEL,ALL
ESEL,ALL!-- 解析実行 --------------------------------/SOLUSOLVELSWRITE!-- 主軸にある節点座標とY方向変位の出力 ----------*GET,NNODES,NODE,0,NUM,MAXD
NSEL,ALL
NSEL,S,LOC,Y,HEIGHT/2/OUTPUT,RNAME,txt/OUTPUT*DO,I,1,NNODES*IF,NSEL(I),EQ,1,THEN/OUTPUT,RNAME,txt,,APPEND*VWRITE,I,NX(I),NY(I),UY(I)%6d %14.7e %14.7e %14.7e/OUTPUT*ENDIF*ENDDOFINISH
SAVE

プログラム５ADPL による片持はりの解析プログラ
ムのためのひな形

ⅳ．gnuplot
現在ではかなり強力なグラフ作成ソフトウェアに進化しました。GUI を用いないスクリプト化が可能で、自動化するのに最も適しているグラフソフトの１つで(23-5)

Vol.18, No.1 2013

チュートリアル

シェルスクリプトの応用、外部プログラムと連携す。また数多くのパラメータを調整すれば描きたいグラフが作成できます。

プログラミング Perl VOLUME2、Larry Wall, Jon
Orwant, Tom Christiansen 著、オライリージャパン、ISBN-10: 4873110971



日本語マニュアルのサイト：
http://takeno.iee.niit.ac.jp/~foo/gp-jman/gnuplot サイト：http://www.gnuplot.info/



not so Frequently Asked Questions:
http://security.riit.tsinghua.edu.cn/~bhyang/ref/gnupl
ot/index.html

６ⅴ．ImageMagick
極めて多機能な画像処理プログラムです。静止画が最も得意ですがやりたいことはこのパッケージでなんでも可能だと思ってよいでしょう。自動化処理するには必須です。C、Perl、などからも利用可能です。
おわりにかなり駆け足に正規表現、シェル、sed や awk の使い方を中心に解説いたしました。まずは、「できる」ことを示し、やってみる動機付けになって欲しいと思います。私の研究室にいる学生数名に shell14.sh とJSCES_CANT2D.txt が合計 130 行程度のスクリプトであることを見せ、実行の様子を見せました。全員驚いていました。学生が手作業で行ったら半日以上かかるかも知れません。それをわずか２０秒足らずでグラフ化まで行なってくれます。作業の効率化はまだまだ可能です。是非、古い技術を最新の環境で実行してみてください。

ImageMagick サイト：
http://www.imagemagick.org/script/index.php

ⅵ．pdfjam
pdf を加工するフリーのソフトウェアです。外部のプログラムも必要とします。Linux や Cygwin 環境ではパッケージとしてインストール可能です。例えば、
shell13.sh の出力を PostScript に変更し ps2pdf コ
マンドで PDF フォーマットに変換した後、このコマンドで４つのグラフを１ページに再配置できます。
pdfjam サイト：
http://www2.warwick.ac.uk/fac/sci/statistics/staff/aca
demic-research/firth/software/pdfjam/ⅶ．perlLarry Wall 氏により開発された実用性を重視して開発されました。C や sed、awk、シェルスクリプトなど他のプログラミング言語の優れた機能を取り入れた、どの OS でも利用可能な言語の１つです。特にシェルや sed, awk が持つ強力なパターンマッチングや文字列への操作などが特徴です。シェルスクリプトでできることは perl でも可能です。
初めての Perl 第 6 版、Randal L. Schwartz , brian dfoy, Tom Phoenix 著、オライリージャパン、ISBN-10: 4873115671



続・初めての Perl 改訂版、Randal L. Schwartz, briand foy, Tom Phoenix 著、オライリージャパン、ISBN-10: 4873113059



プログラミング Perl VOLUME1、Larry Wall, Jon
Orwant, Tom Christiansen 著、オライリージャパン、ISBN-10: 4873110963

計算工学(23-6)

Vol.18, No.1 2013