2010年
1
コンピュータ入門 第16回
UNIXのツールたちシェルスクリプト⼊⾨シェルスクリプト⼊⾨
本日の話題
とっても便利なUNIXのツール(コマンド)たちテキスト12章cut, touch, sort ....
正規表現⼊⾨テキスト12章 12.7.1いろんな⽂字列パターンを簡単に表現grep, sed を使ってみよう
2010年度コンピュータ入門 2
シェルプログラミング⼊⾨テキスト3章,13章シェルスクリプトって?変数,制御制御⽂
2010年
2
UNIXのツールたち
便利に使って作業効率UP!
UNIXのコマンド
UNIXはもともと科学技術関係の研究⽤システムとして開発
研究・開発に必要・便利なさまざまなコマンドがある
⾼機能なコマンドからシンプルなものまでUNIXコマンドは,⼩さな機能をもつコマンドを組み合わせて複雑
2010年度コンピュータ入門 4
⼩さな機能をもつコマンドを組み合わせて複雑な処理をさせることができる!!
リダイレクションやパイプを⽤いたコマンド間のデータの受け渡し機能を存分に利⽤
2010年
3
UNIXのツールの考え方
UNIXはもともと科学技術関係の研究⽤システムとして開発
⼤量のデータに対して、同じ処理を繰り返し⾏うのに適している。誰がいつ実⾏しても同じ実験結果が出るようにするのに適している。
つまり
処理の⾃動化が簡単にできるように作られている。
2010年度コンピュータ入門 5
つまり
紹介するコマンド
すべては紹介できないテキストには,よく使う便利なものを選びに選んで掲載掲載
ここではさらに選りすぐった以下のコマンドを紹介
cut : ⼊⼒⽂字列から指定された部分を切り出しsort: あるルールに従ってデータを整列tr : ⽂字を置き換え
2010年度コンピュータ入門 6
touch: ファイルにお触りgrep: 指定された⽂字列を含むものを表⽰sed: ⼊⼒⽂字列中の指定されたパターンを置換
2010年
4
オンラインマニュアル(おさらい)
UNIXでは,ほとんどすべてのコマンドに対するオンラインマニュアルを完備
コマンドや,ファイル,機能に関する詳細な説明“man”コマンドで参照
例 “cse$ man man”: manコマンドに関するマニュアル
UNIXを利⽤する上で,オンラインマニュアルの活⽤は必須.
2010年度コンピュータ入門 7
たいていのことはマニュアルに記載⼈に聞く前にマニュアルを読む
最近はほとんど⽇本語のマニュアルになっている
オンラインマニュアルの見方
$ man ls
• [space] で Page Down
• ‘b’ で Page Up
• ‘q’ で終了
2010年度コンピュータ入門 8
q で終了
2010年
5
日本語マニュアルに関する注意
ほとんどのマニュアルはもともと英語で書かれている。
どこかの親切な⼈がボランティアで⽇本語に訳してくれている。⽇本語版を販売しているメーカーが嫌々訳している。
ありがたいんだけどあまりいい⽇本語ではな
2010年度コンピュータ入門 9
ありがたいんだけどあまりいい⽇本語ではない場合が多い。興味のある⼈は英語のマニュアルを探して読んでみよう。
コマンドの紹介
2010年
6
UNIXでよく用いられるデータ形式
エディタで作成できる「テキスト」これを「プレーンテキスト」データなどというこれを「プレ ンテキスト」デ タなどという
⾏列形式各⾏の区切りは改⾏記号各列(フィールド)は区切り⽂字(スペース、”,”など)で区切られている
⾏ 意味 あ た デ タ1⾏に意味のあるひとかたまりのデータ
データ作成に⽤いたプログラムが無くなっても、これなら何とかなる。
2010年度コンピュータ入門 11
データファイルの例
TOTO 1982 TOTO IV Rosanna 5:32
TOTO 1982 TOTO IV Make Believe 3:48
TOTO 1979 Hydra All Us Boys 5:03TOTO 1979 Hydra All Us Boys 5:03
TOTO 1981 Turn Back Goodbye Elenore 4:54
Journey 1981 Escape Keep On Runnin’ 3:40
Journey 1983 Frontiers Separate Ways 5:27
• 区切り文字は
2010年度コンピュータ入門 12
区切り文字は
2010年
7
実際のデータ
TOTO1982TOTO IVRosanna5:32TOTO1982TOTO IVMake Believe3:48TOTO197982TOTO IVMake Believe3:48TOTO1979HydraAll Us Boys5:03TOTO1981Turn BackGoodbye Elenore4:54Journey1981EscapeKeep On Runnin’3:40Journey1983FrontiersSeparate Ways5:27
2010年度コンピュータ入門 13
以下紹介するコマンドは、このようなプレーンテキストデータを処理するのに適したもの
cut コマンド
名前通り…切り出すプログラム指定された⽂字を区切り⽂字(delimiter, separator)としてフィールド(カラム)に分離( )指定したフィールドのみを出⼒
よく使うオプション-d 区切り⽂字 : 区切り⽂字を指定
スペースなどシェルに対する特殊⽂字は “ “で囲む例 -d“ “ ←スペースを区切り⽂字にしたい時
-f フィールド番号 : 最初から何番⽬のフィールドを出⼒
2010年度コンピュータ入門 14
f フィ ルド番号 : 最初から何番⽬のフィ ルドを出⼒するか?
複数指定するときは,”,(コンマ)”で区切る例 -f1,2,5
-c ⽂字リスト : 任意⽂字⽬を区切りにする-b バイトリスト : 任意のバイト⽬を区切りにする
2010年
8
cut の使用例
$ echo “aaa:bbb:ccc:ddd:eee”| cut -d: -f1,3aaa:ccc
$ ls *.texreport1.tex report2.tex report3.tex$ ls *.tex | cut -d. -f1report1report2report3
2010年度コンピュータ入門 15
“cut [オプション] ファイル名”のように⼊⼒ファイル名を指定すると,ファイル内のデータを cut!!
“cat ファイル名 | cut [オプション]” と同じファイルの中身を表示するコマンド
やってみよう
echo "aaa,bbb,ccc,ddd"echo "aaa,bbb,ccc,ddd" | cut -d, -f1,3whowho | cut -d" " -f1
ls -1 *.texl 1 * t | t d f1
2010年度コンピュータ入門 16
ls -1 *.tex | cut -d. -f1
ls -1 コマンドは1⾏に1ファイル名で出⼒される
2010年
9
sort コマンド
名前通り…整列する(並べ替える)コマンド⼊⼒データの各列を数字 or アルファベット順に並べ替えて出⼒えて出⼒
よく使うオプション-n : 番号順に整列
これをつけないと,⼀⽂字ずつ辞書順で整列例 111と23を与えた時,-n なし: 111, 23-n あり: 23, 111
2010年度コンピュータ入門 17
-t 区切り⽂字 : フィールドの区切り指定-k フィールド番号: 何番⽬のフィールドを使って整列させるか?-r : 逆順整列(普通は昇順)
sort の使用例
$ cat sort-datakatayama:200:takumi:100:
$ sort sort-datakatayama:200:katayama:30:
katayama:30:takumi:90:
katayama:30:takumi:100:takumi:90:
$ sort -t : -k 2 sort-datatakumi:100:
$ sort -n -t : -k 2 sort-datakatayama:30:
2010年度コンピュータ入門 18
takumi:100:katayama:200:katayama:30:takumi:90:
katayama:30:takumi:90:takumi:100:katayama:200:
2010年
10
やってみよう
ls -l
ls -l | sort -n -k 5ファイルサイズでソートされるはず
ls -l | sort -k 6⽇付でソートされるはず
2010年度コンピュータ入門 19
⽇付でソ トされるはず⽇付は数字じゃないので -n は指定していない
tr コマンド
tr … TRanslates characters1⽂字単位での⽂字の置き換えコマンド1⽂字単位での⽂字の置き換えコマンド
sed は複数の⽂字(⽂字列)の置き換え使⽤例
tr ʼ[a-z]ʼ ʼ[A-Z]ʼ⼊⼒⽂字列の⼩⽂字をすべて⼤⽂字に変換
2010年度コンピュータ入門 20
tr ʼ[A-Z]ʼ ʼ[a-z]ʼ⼊⼒⽂字列の⼤⽂字すべて⼩⽂字に変換
tr -d ʼ¥nʼ⼊⼒データから改⾏(¥n)をすべて削除
2010年
11
touch コマンド(テキストなし)
指定されたファイルが存在する場合,ファイルの更新⽇時を更新指定されたファイルが存在しない場合,新しくファイルを作成(中⾝は空っぽ)
よく使うオプション
2010年度コンピュータ入門 21
-a : アクセス時刻のみ変更-m : 変更時刻のみ変更-c : ファイルがない場合作らない-t 時刻 : 指定時刻に変更(普通は現在時刻)
touch の使用例
$ ls -l
rw 1 e000010 system 49 05月27日 19:03 sort data-rw------- 1 e000010 system 49 05月27日 19:03 sort-data
$ touch chotto
$ ls -l
-rw------- 1 e000010 system 0 05月27日 19:12 chotto
-rw------- 1 e000010 system 49 05月27日 19:03 sort-data
$ touch sort data
2010年度コンピュータ入門 22
$ touch sort-data
-rw------- 1 e000010 system 0 05月27日 19:12 chotto
-rw------- 1 e000010 system 49 05月27日 19:13 sort-data
2010年
12
正規表現入門
正規表現とは?
詳しくは計算機⾔語等の講義でここでは以下のように考える⽂字やその繰り返しを表す特殊な表現(特殊⽂字)を⽂字 繰り返 表 特殊な表現(特殊⽂字)⽤いて,任意の⽂字列パターンを現すもの
例「⼩⽂字のアルファベット5⽂字からなる⽂字列」という意味の正規表現
[a-z][a-z][a-z][a-z][a-z]「⼩⽂字のアルファベットの後ろに数字がくっついている⽂字列」と う意味の正規表現
2010年度コンピュータ入門 24
という意味の正規表現[a-z]*[0-9]*
正規表現にもいろいろな種類があるここでは,sed, grep で⽤いられるものを扱う
オンラインマニュアル regexp を参照!!
2010年
13
正規表現での特殊文字
特殊⽂字⽂字列のパターンを現すために⽤いる記号(⽂字)特殊⽂字 組み合わせ 好きな⽂字列 パタ ンを表特殊⽂字の組み合わせで,好きな⽂字列のパターンを表現
特殊⽂字の種類と意味. : 任意の1⽂字[abc] : a,b,c のいずれか1⽂字[^abc] : a,b,c 以外の1⽂字
中 「
^ : ⾏の先頭$ : ⾏の末尾¥{m¥} :直前で指定した⽂字のm回の繰り返し
2010年度コンピュータ入門 25
^ は [ ] の中で⽤いると,「〜でない」という意味
[0-9] : 0から9のいずれか1⽂字* : 直前の⽂字の0回以上の繰り返し
⽂字のm回の繰り返し¥ : 特殊⽂字を特殊⽂字として扱いたくない場合にエスケープ
テキストに,他にもいろいろ載っているので,各⾃確認すること.
より詳細には,オンラインマニュアル参照の事
正規表現の例
みなさんの基盤ID例 cin15000, cht15000…
先頭の⼀⽂字が”c” 続いて⼩⽂字のアルファベット先頭の ⽂字が c ,続いて⼩⽂字のアルファベットが2⽂字、数字が5⽂字
正規表現で現すと…^c[a-z][a-z][0-9][0-9][0-9][0-9][0-9]or ^c[a-z]¥{2¥}[0-9]¥{5¥}
基盤 は
2010年度コンピュータ入門 26
基盤IDは⽇本語では「先頭が"c"でそのあとに⼩⽂字のアルファベットが2⽂字、数字が5⽂字続く⽂字列」正規表現では「 ^c[a-z]¥{2¥}[0-9]¥{5¥} 」
2010年
14
正規表現の例
パスワードのエントリ例cin15000:xxxxxx:100:200:TEST:/home/22115/cin1
“ypcat passwd” というコマンドで確認できます
cin15000:xxxxxx:100:200:TEST:/home/22115/cin15000:/bin/bash
: で区切られた7つのフィールドユーザ名:パスワード:UID:GID:GCOS:ホーム:ログインシェル
⽇本語で表すと「":"で区切られた7つの⽂字列からなり、そのうち3,4番⽬の部分は数字。また各⽂字列は空でもいい。」
正規表現で現すと
2010年度コンピュータ入門 27
正規表現で現すと^[^:]*:[^:]*:[0-9]*:[0-9]*:[^:]*:[^:]*:[^:]*ユーザ名やファイル名に使える⽂字は限定されているので、厳密には正確ではないが…
正規表現を使うコマンド
正規表現を利⽤して,さまざまな⽂字列マッチングを⾏う事で便利に使えるコマンドがある
grep : Global Regular Expression Print与えられた正規表現にマッチする⽂字列を含む⾏を出⼒つまり検索を⾏うコマンドよく使うオプション
-v : 指定された正規表現にマッチする⽂字列を含まない⾏を出⼒
d S i
2010年度コンピュータ入門 28
sed : Stream EDitorsed コマンドにデータを流し込むと,正規表現で書かれた⽂字列パターンにマッチ(合致)する⽂字列を次々に処理
⼤量のデータの⾃動変更に便利
2010年
15
grep の例
パスワードファイルから,cin15で始まるユーザ名のエントリのみ出⼒
t d | ʼ^ i 15[0 9]* ʼypcat passwd | grep ʼ^cin15[0-9]*:ʼもうちょっと正確にはypcat passwd | grep ʼ^cin15[0-9]¥{3¥}ʼ(cin15で始まりその後に数字が3つ続くエントリ)もうちょっとずるをするとypcat passwd | grep cin15(パスワードファイルにcin15を含むエントリ)
2010年度コンピュータ入門 29
(パスワ ドファイルにcin15を含むエントリ)
「ログインシェルが/bin/bashの⼈」以外を出⼒
ypcat passwd | grep -v ʼ/bin/bash$ʼ
なぜ ' が出てくるの?
おさらいeconomy tex macro tex micro c micro texeconomy.tex, macro.tex, micro.c, micro.tex
があったとする
ls *.tex
ls economy tex macro tex micro texshellが置き換えてくれる
2009年度コンピュータ入門 30
ls economy.tex macro.tex micro.tex
OSが上記コマンドを実⾏OSは置き換えられた結果だけを実⾏している!
2010年
16
なぜ ' が出てくるの?
shellにも*などのメタキャラクタがある。grep ^cin[0-9]*: とするとgrepに渡される以前にg p [ ] g pshellが*を変換しようとしてしまう。(変換されない場合もある。)
ルールshell は ' ' で囲まれた部分は変換しないshell は で囲まれた部分は変換しない。該当するファイル名がない場合はメタキャラクタを変換せずにそのままコマンドに渡す。
2009年度コンピュータ入門 31
やってみよう
ypcat passwd
ypcat passwd | grep 22115
ypcat passwd | grep ⾃分のlogin名ypcat passwd | grep bw
2010年度コンピュータ入門 32
2010年
17
sed の例
ファイル中の bigin を begin に変換sed ’s/bigin/begin/g’ ファイル名g g g
s: 変換しなさい/変換前⽂字パターン/変換後⽂字パターン/g: 同じ⾏に複数ある場合はすべて
g をつけないと,⼀度変換してしまうとその⾏は終了
⾏頭のスペースを削除
2010年度コンピュータ入門 33
sed ’s/^[(スペース) ]*//’先頭(^)のスペースの繰り返し(*)を空⽂字列に変換.つまり削除
sed のちょっと複雑な変換例
パスワードエントリからユーザ名とログインシェルを抜き出す
出⼒は 「 ザ名 グインシ ル 」 形式としよう出⼒は 「ユーザ名:ログインシェル 」の形式としようパスワードのエントリは以下の通りユーザ名:パスワード:UID:GID:GCOS:ホーム:ログインシェル
つまり:で区切られた7つのフィールドの1つめと7つめを出⼒する
2009年度コンピュータ入門 34
パスワードエントリの正規表現[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*
[^:]* (:以外の⽂字列)を ☆で表すとすると☆:☆:☆:☆:☆: ☆:☆
2010年
18
sed のちょっと複雑な変換例
sed では ¥(¥)でくくるとその部分が保存され,後から ¥数字 で参照できる後 数字 参照
☆で表現すると
ypcat passwd | sed 's/¥(☆¥):☆:☆:☆:☆:☆: ¥(☆¥)/¥1:¥2/'
正規表現に戻すと
2009年度コンピュータ入門 35
正規表現に戻すと
ypcat passwd | sed ʼs/¥([^:]*¥):[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:¥([^:]*¥)/¥1:¥2/ʼ
実際は改行なし
「答えは一つじゃない」
UNIXでは同じことをするのにいろいろな⽅法が考えられますそれでいい! ⾃分の好みの⽅法を使いましょうそれでいい! ⾃分の好みの⽅法を使いましょう。100⼈いれば100種類の答えがあってあたりまえ。
「パスワードエントリからユーザ名とログインシェルを抜き出す」
さっきはsedで実現したcut コマンドでもできる
2010年度コンピュータ入門 36
cut コマンドでもできるawk という別のコマンドを使う⽅法もある(⿊柳の好きな⽅法)最近のはやりは perl という⾔語を使う⽅法Emacs の⽅形カット機能(M-x kill-rectangle)を使ってもできるEmacs で⼿動で(⼒業で)削除するのもありといえばあり
2010年
19
シェルプログラミング入門
シェルプログラミングってなに?
シェルプログラミングシェルスクリプト(shell script)を作成し,実⾏する事
script = 芝居などの台本のことshell script = shell の台本= 複数コマンドの⾃動実⾏のための台本
上 ⼒す ドを
2010年度コンピュータ入門 38
gnome-terminal上で⼊⼒するコマンドをそのままファイルに記述して⼀気に実⾏する台本を書くことができる!
2010年
20
はじめに注意事項を
皆さんが使っている shell は bash です。echo $SHELL とやってみようecho $SHELL とやってみよう
bash を⽤いた shell script もあります。
が、ここでは基本となる sh を使う shell
2010年度コンピュータ入門 39
script について勉強することにします。bash は sh の上位互換 (sh で実⾏可能なものはbashでも実⾏可能)
シェルスクリプトの作成法
$ pwdfoo
よく行う作業ファイルにそのまま書く
$ date$ ls pwd
date ls
foo
そのファイル名で中に書いてある連の作業を実行できる
2010年度コンピュータ入門 40
$ foo
一連の作業を実行できる
簡単!
2010年
21
シェルスクリプト
既存のコマンドと全く同様に使える(リダイレクション、パイプなど)
⾃分専⽤のコマンドを簡単に作成することができる。if for などの条件⽂やループ処理も使えるの
2010年度コンピュータ入門 41
if, for などの条件⽂やル プ処理も使えるので、⼀種のプログラムを作ることができる
シェルスクリプトの作成法 (ちょっと大げさでした)
foo#!/bin/sh
pwd date ls
% chmod u+x foo
先頭で「shを使って実行してください」という宣言を
する
2010年度コンピュータ入門 42
% chmod u+x foo
一つのファイルにつき一回でOK。
2010年
22
やってみよう
emacs foo &
foo というファイル名で以下の内容を保存#! /bin/shpwddatels
2010年度コンピュータ入門 43
chmod u+x foo
./foo
./foo | sort | less
シェルプログラミングの基本事項(1)
基本事項コメント
# 始まる⾏は プ グラムとし 実⾏されな# で始まる⾏は,プログラムとして実⾏されない変数(後述)
変数とは,値を⼊れておく⼊れ物変数名=値 で変数に値を代⼊変数の中⾝を参照する時は,$変数名
#/bi / h
2010年度コンピュータ入門 44
#/bin/sh# ここはコメントi=Helloecho iecho $iecho $iWorldecho ${i}World
% ./helloiHello
HelloWorld
実行
2010年
23
シェルプログラミングの基本事項(2)
コマンド置換` (バッククオート) で囲むと,その部分がコマンドの実⾏結果に置き換わる( ʼ (シングルクオート)ではないので注意)に置き換わる( (シングルクオ ト)ではないので注意)
#!/bin/shecho “Now, it is `date`”
% ./nowdateNow, it is 2010年05月28日 16時36分43秒
2010年度コンピュータ入門 45
他にもいくつか注意点があるので,テキストに目を通しておく事!!
以下、プログラミングに関する話があります
詳しいことについては、後半の授業、「プログラミングI」にてプログラミングについて勉強した後に、書 内容が ず書いてある内容がわかるようになるはずです。
でも、ちょっとやってみればきっと理解できます。
来週からの課題で若⼲使⽤しています。
2010年度コンピュータ入門 46
来週からの課題で若⼲使⽤しています。プログラミングの講義の前に,がんばって理解してみましょう。
2010年
24
制御構造
計算機に仕事をさせる時の基本的な構造逐次処理逐次処理
命令を書かれた順に処理今までの例はすべて逐次処理
選択処理条件にしたがって処理する内容を変更
反復処理
2010年度コンピュータ入門 47
反復処理同じ処理を繰り返し
選択処理
if ⽂条件によって処理する内容を変える
if 条件then条件が真の時の処理(複数⾏可)fiif 条件then
2009年度コンピュータ入門 48
then条件が真の時の処理(複数⾏可)else条件が偽の時の処理(複数⾏可)fi
2010年
25
選択処理
条件によって処理する内容を変える
いくつでも書ける
if 条件then処理1elif 条件2then処理2
2009年度コンピュータ入門 49
なくてもよい
else処理3fi
選択処理
#!/bin/shffname=xxxx.txt
if [ -f $fname ] thenecho $fname exists.
elseecho $fname is not found.
fi
$fname が存在していたら
2010年度コンピュータ入門 50
fi
[ -f filename ] は,filename というファイルが存在した時に成り立つ詳しくは 13.3.1, 13.3.4参照
2010年
26
変数
⽂字列を保存することが出来る箱任意の名前をつけることが出来る任意の名前をつけることが出来る
filename=hoge.txt
echo $filenamefilename という名前の変数
echo $filename
echo $filename exists.
2009年度コンピュータ入門 51
filename という変数の中身
選択処理の例
#!/bin/sh#!/bin/shfname=hoge.txt
if [ -f $fname] thenecho $fname exists.
elseecho $fname is not found.
2009年度コンピュータ入門
52
fi
2010年
27
なにがうれしいの?
変数 fname の定義を⼀⾏変えるだけで、いろいろな名前のファイルが存在するかどうかを確認できる。変数 fname の中⾝を変えて、繰り返しこのシェルスクリプトを実⾏すれば、⾃動的にたくさんの名前のファイルが存在するかどうかを確認できるを確認できる。
2009年度コンピュータ入門 53
反復処理
同じ内容を繰り返すfor ⽂
#!/bin/shfor syurui in txt tex dvi psdofor ⽂
for 変数 in 単語リストdo処理1処理2
…done
doecho $syurui
done
%./for-testtxt tex
2010年度コンピュータ入門 54
donedvips
変数に単語リスト中の単語をひとつずつ代入し,
do と done の間の処理を繰り返し行
2010年
28
おさらい(ファイル名の展開)
aaa, bbb, ccc という3つのファイルが存在するディレクトリの場合、
% ls -l *
% ls -l aaa bbb ccc
Shell が * を存在するファイルのリストに展開してくれる
Shell の内部処理
2010年度コンピュータ入門 55
「ファイルリストが出力される」
よく用いる反復処理の例
For filename in *dols l $filenamels -l $filenamewc $filename
done
$filename が存在するファイルの名前に順番に置き換えられて、ファイルの存在する回数だけ繰り返し実⾏される
2010年度コンピュータ入門 56
る。
このスクリプトを実⾏したディレクトリに存在するファイルすべて(ʼ*ʼの部分)について、ʼls -lʼとʼwcʼを順番に実⾏する
2010年
29
その他
選択処理他にも,case ⽂(13.3.5) がある
反復処理反復処理他にも,while ⽂(13.3.3) がある
スクリプト作成時の注意事項単語は全て空⽩で区切ること。
2010年度コンピュータ入門 57
全⾓の⽂字と半⾓の記号を区別すること。コメント以外に全⾓の⽂字は使わない!
最後に改⾏を忘れないこと。
#!/bin/shWD report
その他
if と for を使った例xxxx.tex というファイル名に対して この部分でWD=report
cdcd $WD
for filename in *.texdoif [ -f `echo $filename | cut -d. -f1`.dvi ]then
echo $filename has already compiled.
対して,この部分でxxxxという名前を⽣成している
$filename を受け取って,区切り⽂字 .⼀番⽬のフィールド出⼒その後ろに,”.dvi” をくっつける
2009年度コンピュータ入門 58
echo $filename has already compiled.elseplatex $filename
fidone
xxxx.tex というファイル名に対して,この部分でxxxx.dvi という名前を⽣成している
2010年
30
たとえばこんなスクリプトも
1. 指定されたLaTeXファイルに platex コマンドを実⾏
2. platexが成功したら xdvi で表⽰する3. OK? と聞く4. 'y'と⼊⼒があったら5. dvipdfmxで dviファイルをpdfファイルに
2010年度コンピュータ入門 59
5. dvipdfmxで dviファイルをpdfファイルに変換する
簡単に作れます!
こんなスクリプトも
platexコマンドで⽣成されるファイル(* aux * log * dvi)を削除する(*.aux, *.log, *.dvi)を削除する。作成から1ヶ⽉以上たった古いファイルを全てoldというディレクトリに移動する。友⼈5⼈がいまどの計算機の前に座っている
2010年度コンピュータ入門 60
かを調べて出⼒する。
簡単に作れます!
2010年
31
今回の演習予告
passwd ファイルを cut, sed を使っていろいろ遊ぶシェルスクリプトを読むif, for などを使ったシェルスクリプトを作成する
2010年度コンピュータ入門 61
今回の講義資料,テキストだけでは⾜りないオンラインマニュアルを活⽤しよう!!
Top Related