No. 255/622 Index Prev Next
Path: titcca!sragwa!srava!yosikazu
From: yosikazu@srava.sra.JUNET (Yoshikazu Hayashi)
Newsgroups: fj.lang.misc,fj.kanji
Subject: Re: Nihonngo C-shell (In Japanese/Kanji)
Message-ID: < 1384@srava.sra.JUNET>
Date: 1 Feb 88 11:54:55 GMT
References: < 1238@titcce.cc.titech.JUNET> < 193@soumd4.soum.JUNET> < 985@cskvax.csk.JUNET>
Reply-To: yosikazu@srava.JUNET (Yoshikazu Hayashi)
Distribution: fj
Organization: Software Research Associates, Inc., Japan
Lines: 246
Xref: titcca fj.lang.misc:139 fj.kanji:314
ちょいと日本語Cシェルのシンタクスを考えてみました。御用とお急ぎでない方
は見ていただけませんか。なに、テーブルがだらだら続いているだけで、本分は
長くありませんから。
わたしは日本語もどきのプログラミング言語があってもいいじゃないかと考える
一人ですが、それはあくまで可読性が理由でです。ですからやみくもに既成言語
の単語だけ日本語にしたものは良いとは思いません。
また、可読性のみが関心事ですので、入力時には、(わたしの例の場合)、普通
のCシェルを書いていけば良いと思います。
そこで、Cシェルのスクリプトを「日本語シェル」のスクリプトに直すプログラ
ムと、その逆の変換を行なうプログラムがあれば、とりあえずわたしの考えは
試してみられる、と考えて、以下のような変換表を作ってみました。中にはかな
り冗談っぽいのや、構文解析がつらそうなものもありますが、試してみたかった
ことは、簡単な仕掛けで、日本語入力の煩わしさに付き合うことなく、可読性を
上げることができるか、ということです。どれぐらい読みやすい/にくいか、ご
批判いただければ幸いです。
変換表の後ろに、その変換にしたがったスクリプトの例を付けてあります。
なお、実際の変換プログラムはまだ作っていません(情けない)。
* * * 変換表 * * *
コマンド:
alias 別名
alias name name の 別名
alias name wordlist wordlist を name の 別名で呼ぶ
alloc 割り付け
alloc arg arg の 割り付け
bg 裏にまわす
bg %job ... %job ... を 裏にまわす
break ループを抜ける
breaksw 抜ける
cd 移る
cd name name に 移る
chdir 移る
chdir name name に 移る
continue 続ける
default: どれでもない:
dirs ディレクトリ・スタック
echo wordlist wordlist を こだまする
echo -n wordlist wordlist を 改行せずに こだまする
eval arg ... arg ... を 評価する
exec command command を 実行してしまう
exit 終了する
exit (expre) (expr) で 終了する
fg 表に出す
fg %job ... %job ... を 表に出す
foreach name (wordlist) name (wordlist) のそれぞれに対して
... ...
end 終わり
glob wordlist wordlist を ファイル名展開に使う
goto word word に 行く
hashstat ハッシュ統計
history 履歴
history n n 個前までの 履歴
history -r n n 個前までの 逆順の 履歴
if (expr) command (expr) ならば command
if (expr) then (expr) ならば
... ...
else if (expr2) then そうではなく (expr2) ならば
... ...
else そうでなければ
... ...
endif と実行
jobs ジョブ
jobs -l プロセス番号付きの ジョブ
kill %job %job ... を 切る
kill -sig %job %job ... を sig で 切る
kill pid pid ... を 切る
kill -sig pid pid ... を sig で 切る
kill -l 信号リスト
limit 制限
limit resource resource の 制限
limit resource maximum-use resource を maximum-use に 制限する
cputime CPU時間
filesize ファイルの大きさ
datasize データの大きさ
stacksize スタックの大きさ
coredumpsize コア・ダンプの大きさ
login ログインする
logout ログアウトする
nice 遅く実行する
nice +number +number で 遅く実行する
nice command command を 遅く実行する
nice +number command command を +number で 遅く実行する
nohup HUPなしで実行する
nohup command command を HUPなしで実行する
notify ジョブの変化を知らせる
notify %job ... %job ... の ジョブの変化を知らせる
onintr intr 処理 の 解除をする
onintr - intr 処理 を しない
onintr label intr 処理 で label へ 行く
popd ディレクトリ を ポップする
popd +n +n 番目のディレクトリ を ポップする
pushd 現在ディレクトリ を プッシュして \
先頭ディレクトリ を ポップする
pushd name name ディレクトリ を プッシュする
pushd +n +n 番目の ディレクトリ と 位置交換する
rehash 再ハッシュする
repeat count command command を count 回 繰り返す
set 設定
set name ... name ... を 設定する
set name=word ... name=word ...を 設定する
set name = word name に word を 設定する
set name[index]=word ... name[index]=word ... を 設定する
set name=(wordlist) name=(wordlist) を 設定する
setenv name value name を value に 環境設定する
shift ずらす
shift variable variable を ずらす
source name name を 読み込む
source -h name name を 履歴表に 読み込む
stop 止める
stop %job ... %job ... を 止める
suspend 一旦休む
switch (string) (string) が
case strl: strl の 際:
... ...
breaksw 抜ける
... ...
default: どれでもない:
... ...
breaksw 抜ける
endsw と実行する
time 時間を計る
time command command の 時間を計る
umask Uマスク
umask value value に Uマスクを設定する
unalias pattern patten の 別名を解除する
unhash ハッシュを解除する
unlimit resource resource の 制限を解除する
unlimit 制限を解除する
unset pattern pattern の 設定を解除する
unsetenv pattern pattern の 環境設定を解除する
wait 待つ
while (expr) (expr) の間
... ...
end 終わり
%job %job
%job & %job &
@ 設定
@ name = expr name に expr の 値を設定する
@ name[index] = expr name[index] に expr の 値を設定する
変数:
argv 引数
cdpath 移動路
cwd 現在ディレクトリ
echo こだま
histchars 履歴用文字
history 履歴
home 本拠地
ignoreeof EOF無視
mail 郵便箱
noclobber ぶち壊しなし
noglob ファイル名展開なし
nonomatch 合致せずなし
notify ジョブ変化の告知
path 探索路
prompt 入力促進
savehist 履歴貯蔵
shell シェル
status 状態
term 端末
time 時間
user 使用者
verbose 多弁
* * * スクリプトの例 * * *
022 に Uマスクを設定する
ファイル名展開なし を 設定する
~/.envset を 読み込む
移る
告知 を 設定する
myname を `whoami` に 環境設定する
VECFONT を /usr/new/lib/X/font/vsfont32 に 環境設定する
DISPLAY を unix:0 に 環境設定する
JSERVER を sranantara に 環境設定する
郵便箱 を (/usr/spool/mail/$myname ~/.mail/pobox) に 設定する
コア・ダンプの大きさ を 0 に 制限する
EOF無視 を 設定する
'cd \!*; /bin/ls -F' を cdl の 別名で呼ぶ
'~/lib/alcmds を 読み込む' を src の 別名で呼ぶ
( ( ! $?login ) & & $?端末 ) ならば
使用者 を $myname に 設定する
~/.login を 読み込む
と実行
biff y
#
HUPなしで実行する
( $?login ) ならば END へ 行く
login を 設定する
hn を `hostname` に 設定する
START:
( $端末 ) が
su の場合:
" Terminal type? " を 改行せずに こだまする
端末 を $< に 設定する
START に 行く
news の場合:
egterm の場合:
stty new crt erase intr mskanji -even -odd
TTYPE を mskanji に 環境設定する
入力促進 を " $hn [\!] " に 設定する
抜ける
d0 の場合:
stty new crt erase intr
( `tty` == " /dev/tty51" ) ならば
入力促進 を " ${hn}: MacVt [\!] " に 設定する
そうでなければ
入力促進 を " ${hn}:[7me[1mliz[m[7mabeth[m [\!] " \
に 設定する
と実行
可視ベル を 設定する
抜ける
どれでもない:
" Sorry, I don't recognize your terminal type." を こだまする
抜ける
と実行する
tset -k
( `tty` == /dev/console ) ならば
XWSTART を first に 環境設定する
xinit =80x8+0-0 -C -fn 6x10 -n console を 実行してしまう
そうではなく ($?XWSTART) ならば
( $XWSTART == first ) ならば
~/.xset を 読み込む
そうでなければ
XWSTART を third に 環境設定する
と実行
と実行
clear
終了する
#
END:
( 0 ) で 終了する;
* * * * * *
おそまつでした。
--
よしかず@sra
yosikazu@srava.sra.junet
Next
Continue