[情報知識ネットワーク研究室へ]

有村博紀:ちょっとしたプログラム (cygwin || linux)

ちょっとした事務作業で手で打つのが面倒なことってありますね. そういうときは,昔覚えたshell programming の出番です. Webの隆盛で影が薄いですが,perlやスクリプト言語の隆盛もありますし,しょうもないプログラミングは便利です.

(ブライアン・カーニハンの「UNIXプログラミング環境」という本もありましたね)

なお,下記のプログラムの使用は,当研究室での使用を目的としたものです.使用の際は,自己責任でお願いします.いかなる損害をうけても当方は感知しませんので,あしからず.


backcp (bash)

使い方

ファイル名の後ろに日付(年月日)をつけて,バックアップ用のコピーをとる.同じ日付のバックアップがすでにあれば,うしろに通し番号を打って区別する. /etcの設定ファイルを修正する前にこれでコピーをとっておくと便利. 引数なしで打つとヘルプを出力する.

ダウンロード

[download]  (text, sjis, bash on cygwin/linux)

インストール

必要なものは,bash のみ.パスの通ったところにおいてください.

使用例

ファイル work.txt のバックアップコピーをとる.
% backcp work.txt
backup work.txt to work.txt.080528 ...

% backcp work.txt
incr: 1: bak=work.txt.080528.1
backup work.txt to work.txt.080528.1 ...

% ls -1
work.txt
work.txt.080528
work.txt.080528.1

トラブル

シェルbashの位置が違うときは,ファイル先頭の「#!/bin/bash」を書き換えてください.いろいろ問題あると思います.

nittei (perl)

ダウンロード

[download]  (text, sjis, perl on cygwin/linux)

使い方

引数に今日の日付と,出力したい日数を空白で区切って入れると,テキストでその日数分の空のカレンダー(日付リスト)を出力してくれる.大学の委員会等で「日程伺い」をメールで送るときに便利(笑).オプションとして,出力書式は,自分で指定できる.引数なしで打つとヘルプを出力する.

インストール

必要なものは,perl のみ.パスの通ったところにおいてください.

使用例

  5月ファイル work.txt のバックアップコピーをとる.
例1)2008年5月25日から出力する.
% nittei 2008 5 25 
08/05/25(日)  :
08/05/26(月)  :
08/05/27(火)  :
08/05/28(水)  :
08/05/29(木)  :
08/05/30(金)  :
(以下略.標準で14日分出力される)

例2)
2008年5月25日から日数(3日間)を指定して出力する.
% nittei 08 5 25 3
08/05/25(日)  :
08/05/26(月)  :
08/05/27(火)  :

例3)書式文字列を使って,英文書式で出力する.
% nittei 08 05 25 7 "DD ME YE, WE: "
25 May 2008, Sun:
26 May 2008, Mon:
27 May 2008, Tue:
(以下,出力略)

例4)書式文字列を使って,時間帯を付加して和文書式で出力する.
% nittei 08 05 25 7 "MJ/DD(WJ): 10:30-12:00, 13:00-14:30 14:45-16:15 16:30-18:00"
05/25(日): 10:30-12:00, 13:00-14:30 14:45-16:15 16:30-18:00
05/26(月): 10:30-12:00, 13:00-14:30 14:45-16:15 16:30-18:00
(以下,出力略)

例5)書式文字列を使って,時間帯を付加して英文書式で出力する.
% nittei 08 05 25 7 "ME DD, WE: 10:30-12:00, 13:00-14:30 14:45-16:15 16:30-18:00"
May 25, Sun: 10:30-12:00, 13:00-14:30 14:45-16:15 16:30-18:00
May 26, Mon: 10:30-12:00, 13:00-14:30 14:45-16:15 16:30-18:00
(以下,出力略)

オプション

書式指定文字列は,次の変数を自由に使って書いてよい.それぞれの変数が実際の値に置き換えられる.標準では,「"YY/MM/DD(WJ) :"」.
#年
YY: 08, 09, 10, ..
YJ: YY (平成にすべき?)
YE: 2008, 2009, 2010, ...
#月
MM: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12
MJ: MM
ME: "Jan", "Feb", "Mar", "Apr", "May", "Jun", 
    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
#日
DD: 01, 02, 03, ..., 30, 31
DJ: DD
DE: DD
#曜日
WW: "月", "火", "水", "木", "金", "土", "日"
WJ: WW
WE: "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"

トラブル

コマンドperlの位置が違うときは,ファイル先頭の「#!/bin/perl」を書き換えてください.うるう年や通算日数の計算がいいかげんかも.困ったら,次のパラメータ生成プログラムを使ってパラメータを作り直してください.とりあえず,数年は大丈夫?

ダウンロード

[download パラメータ生成プログラム]

今後の課題

入力日付の指定をもっと真面目につくる.書式指定の変数YJを平成にする. 開始日付を入れなければ,デフォールトで,`date`コマンドで今日の日付を使うようにしたい.これもいろいろ問題あるかも.(そもそもメールで日程伺いをする前に書いたので.). (2008/07/03修正)
IKN Lab: Information Knowledge Network Laboratory
Last updated: 03 July 2008, IKN lab; $Id: myprog.html,v 1.1.1.1 2008/11/06 03:05:48 arim Exp $
E-mail: webmaster @ www-ikn.ist.hokudai.ac.jp