Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

tcsh% false ; ( echo $? ; pwd )

10 views
Skip to first unread message

NISHIMATSU Takeshi

unread,
Apr 13, 2004, 1:47:05 AM4/13/04
to
西松と申します。

投げたジョブが終わったことを
* 正常に終わったのかどうか
* どこのディレクトリか
の情報とともにメールで

% a_job ; ( echo $? ; pwd ) | mail -s'Your job is finished' メール@アドレス &

などと自分に知らせたいのですが、tcshの場合

% false ; ( echo $? ; pwd )
0
/home/t-nissie

と、()を使うとfalseの返すstatusをうまくひろってくれないようです。
bash, ksh はOKです:

$ false ; ( echo $? ; pwd )
1
/home/t-nissie

たいていのshellに使えて短く書ける方法はないでしょうか。
--
love && peace && free_software
西松 毅


Shinji KONO

unread,
Apr 13, 2004, 3:39:12 AM4/13/04
to
河野真治 @ 琉球大学情報工学です。

In article <yey65c4...@cms26.imr.tohoku.ac.jp>, NISHIMATSU Takeshi <t-ni...@No-spam.imr.tohoku.ac.jp> writes
> たいていのshellに使えて短く書ける方法はないでしょうか。

とりあえず、tcsh を止める.... のではないかと....
僕は Perl で書くでしょう。

> % a_job ; ( echo $? ; pwd ) | mail -s'Your job is finished' メール@アドレス &

a_job
set result=$?
( echo $result ; pwd ) | mail -s'Your job is finished' メール@アドレス &

かな?

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科

Koichi Yasuoka

unread,
Apr 13, 2004, 3:51:32 AM4/13/04
to
 京都大学人文科学研究所附属漢字情報研究センターの安岡孝一です。
西松毅さんは書きました。
> たいていのshellに使えて短く書ける方法はないでしょうか。

この例なら

% a_job ; echo $? `pwd` | mail -s'Your job is finished' メール@アドレス &

じゃダメですか?
=======================================================================
安岡孝一@京都大学人文科学研究所附属漢字情報研究センター
http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/
=======================================================================

NIDE Naoyuki

unread,
Apr 13, 2004, 5:06:36 AM4/13/04
to
In article <yey65c4...@cms26.imr.tohoku.ac.jp>,
t-ni...@No-spam.imr.tohoku.ac.jp writes:
> と、()を使うとfalseの返すstatusをうまくひろってくれないようです。

これは多分、tcshの場合「( )」内がサブシェルに解釈されるので、$?がサブ
シェルのその時点でのstatus、つまり0になるからなんでしょうね。

ということは

false; sh -c "echo $?; pwd" | mail …

にすれば、$?を解釈するのはメインのシェルなのでうまくいくのでは。

ni...@ics.nara-wu.ac.jp

NIDE Naoyuki

unread,
Apr 13, 2004, 5:09:14 AM4/13/04
to
In article <0404131806...@hayabusa.ics.nara-wu.ac.jp>, I write:
> これは多分、tcshの場合「( )」内がサブシェルに解釈されるので、

これは嘘か。echo $$; (echo $$) で同じ番号が2度表示されますものね。

ni...@ics.nara-wu.ac.jp

Hideo Sir MaNMOS Morishita

unread,
Apr 13, 2004, 5:58:51 AM4/13/04
to

In article <0404131809...@izumo.cc.nara-wu.ac.jp>,

$$のパーシングがコマンドライン展開のときに起るからに100かのっさ

--
___ わしは、山吹色のかすてーらが大好きでのぅ
[[o o]] ふぉっふぉっふぉ
'J' 森下 お代官様 MaNMOS 英夫@ステラクラフト
PGP Finger = CD EA D5 A8 AD B2 FE 7D 02 74 87 52 7C B7 39 37

SAITOH Akinori

unread,
Apr 13, 2004, 10:29:37 AM4/13/04
to
大阪大学の齊藤です

Koichi Yasuoka wrote:
> % a_job ; echo $? `pwd` | mail -s'Your job is finished' メール@アドレス &

なるほど。

レポートが本文でなくて良いのなら、

% a_job ; mail -s "Your job is finished $? `pwd`" メール@アドレス
</dev/null &

でもいいかも。しかし、バイト数が増えていますね。。

齊藤明紀 sai...@ist.osaka-u.ac.jp

NISHIMATSU Takeshi

unread,
Apr 13, 2004, 3:27:29 PM4/13/04
to
西松です。

ぼくの質問、投げたジョブが終わったことを
* 正常に終わったのかどうか
* どこのディレクトリか
の情報とともにメールで自分に知らせるにはどうしたらよいか、
に対して、tcshで

% a_job ; ( echo $? ; pwd ) | mail -s'Your job is finished' メール@アドレス &

がうまくstatusをひろわないのは()内がサブシェルによって
実行されるからだ。

% a_job ; echo $? `pwd` | mail -s'Your job is finished' メール@アドレス &

とすればたいていのshellで使える。などたくさんお答えを
いただきありがとうございます。なるほど、なるほど、

% a_job ; echo $? $PWD | mail -s'Your job is finished' メール@アドレス &

でもOKかもしれませんね。

# tcshをやめてbashにchshしたいのはやまやまなのですが、
# bashをインストールしてもらうだけに書類が10枚くらい
# 飛び交ってしまったりするとかしないとか…

Shinji KONO

unread,
Apr 13, 2004, 9:54:41 PM4/13/04
to
河野真治 @ 琉球大学情報工学です。

In article <yeyd66bhe...@pentium3dual.imr.tohoku.ac.jp>, NISHIMATSU Takeshi <t-ni...@No-spam.imr.tohoku.ac.jp> writes
> # tcshをやめてbashにchshしたいのはやまやまなのですが、
> # bashをインストールしてもらうだけに書類が10枚くらい
> # 飛び交ってしまったりするとかしないとか…

大学でそうなのかぁ...

Mac OS X もbashがdefaultになっているみたい。

IIJIMA Hiromitsu

unread,
Apr 14, 2004, 4:05:39 AM4/14/04
to
> Mac OS X もbashがdefaultになっているみたい。

10.2 まで tcsh でしたが、10.3 はデフォルトが bash になりました。
もちろん tcsh も残っていますが。

========================================================================
飯嶋 浩光 / でるもんた・いいじま http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delm...@ht.sakura.ne.jp

Narita Takaoki

unread,
Apr 14, 2004, 5:00:32 AM4/14/04
to
成田です。

Hideo Sir MaNMOS Morishita wrote:

> In article <0404131809...@izumo.cc.nara-wu.ac.jp>,
> ni...@ics.nara-wu.ac.jp (NIDE Naoyuki) writes:
>> In article <0404131806...@hayabusa.ics.nara-wu.ac.jp>, I write:
>> > これは多分、tcshの場合「( )」内がサブシェルに解釈されるので、
>>
>> これは嘘か。echo $$; (echo $$) で同じ番号が2度表示されますものね。


> $$のパーシングがコマンドライン展開のときに起るからに100かのっさ

FreeBSD の man で見る限り、tcsh も sh も $$ は親シェルと同じ値で
あると書かれております。 echo $$; (eval echo '$$') で同じ番号がか
えってくることと、false; (eval echo '$?') で sh だと 1、csh だと
0 になることから、$? に関しての動作の違いは bsh 系と csh 系の $? に
対する初期化処理の違いでしょうか?

--
「十分間で決断し、短い理由を添えよ」
A.I.Soft, Inc. CS・品質推進課 成田隆興

OOTANI TAKASHI

unread,
Apr 14, 2004, 3:36:31 PM4/14/04
to
NISHIMATSU Takeshi <t-ni...@No-spam.imr.tohoku.ac.jp> writes:
> # tcshをやめてbashにchshしたいのはやまやまなのですが、
> # bashをインストールしてもらうだけに書類が10枚くらい
> # 飛び交ってしまったりするとかしないとか…

さすがに、/bin/sh は入っているでしょうから、
ログインシェルはtcshを使うにしても、スクリプトは /bin/sh が
いいと思います。数値計算や文字列操作には外部コマンドの expr
を使わないといけないし、配列変数相当のことをするのがちょっと
手間ですけど、多くの場合は、csh 系よりは書きやすいはず。

--
tksotn

NAKAJI Hiroyuki

unread,
Apr 14, 2004, 10:15:12 PM4/14/04
to
中治@豊橋です。

> NISHIMATSU Takeshi <t-ni...@No-spam.imr.tohoku.ac.jp> writes:
> > # tcshをやめてbashにchshしたいのはやまやまなのですが、
> > # bashをインストールしてもらうだけに書類が10枚くらい
> > # 飛び交ってしまったりするとかしないとか…

$HOME/bin/bash にインストールしてしまって、~/.login に

exec $HOME/bin/bash

なんてのは不許可ですか。

>>>>> OOTANI TAKASHI <tks...@anet.ne.jp> wrote:

> さすがに、/bin/sh は入っているでしょうから、
> ログインシェルはtcshを使うにしても、スクリプトは /bin/sh が
> いいと思います。数値計算や文字列操作には外部コマンドの expr
> を使わないといけないし、配列変数相当のことをするのがちょっと
> 手間ですけど、多くの場合は、csh 系よりは書きやすいはず。

同意します。ログインシェルを bash に変えたら、端末で (t)csh を使えなく
なってしまいました。
--
NAKAJI Hiroyuki (中治 弘行)

Takashi SHIRAI

unread,
Apr 15, 2004, 9:43:33 AM4/15/04
to
 しらいです。

In article <407CF0D3...@ht.sakura.ne.jp>,


IIJIMA Hiromitsu <delm...@ht.sakura.ne.jp> wrote:
>> Mac OS X もbashがdefaultになっているみたい。
>
>10.2 まで tcsh でしたが、10.3 はデフォルトが bash になりました。
>もちろん tcsh も残っていますが。

 この文脈では、Mac OS X の標準で login shell に設定されてい
る shell のことを言っているんだと思いますが、まさか 10.2 で
は /bin/sh の実体まで tcsh だったりはしませんよね?
 10.1 の頃は /bin/sh の実体が zsh で往生したものですが、こ
ちらの変遷はどうなっているんでしょう?10.3 では bash なんで
しょうけど 10.2 では?

 login shell は書換えれば変えられますけど /bin/sh は影響が
大きくて無闇に置換えられないので、ちゃんと考えた上で設定して
おいて欲しいものです。

# /bin/sh が bash な Linux もそれなりに困りものだけど、か
#と言って dash に置換えた Debian が良いかと言うとそうでもな
#さそうだし。

--
しらい たかし

IIJIMA Hiromitsu

unread,
Apr 16, 2004, 11:48:29 AM4/16/04
to
いいじまです。

> >10.2 まで tcsh でしたが、10.3 はデフォルトが bash になりました。
> >もちろん tcsh も残っていますが。
>
>  この文脈では、Mac OS X の標準で login shell に設定されてい
> る shell のことを言っているんだと思いますが、まさか 10.2 で
> は /bin/sh の実体まで tcsh だったりはしませんよね?
>  10.1 の頃は /bin/sh の実体が zsh で往生したものですが、こ
> ちらの変遷はどうなっているんでしょう?10.3 では bash なんで
> しょうけど 10.2 では?

私は MacOS X に触ったのは 10.3 が初めてなので何も知らないのですが、
少なくとも、/bin/sh を起動したときに tcsh の文法が適用されるという
ことはありえないと思います。csh/tcsh と sh/bash/zsh は全く互換性のない
別々の言語だと思っていますので。

> # /bin/sh が bash な Linux もそれなりに困りものだけど、か
> #と言って dash に置換えた Debian が良いかと言うとそうでもな
> #さそうだし。

でも、bash は sh の名前で起動されたときと bash の名前で起動されたときとで
挙動を変えていますから、きちんと sh の文法の範囲内で書いていれば、実体が
bash であっても問題ないと私は認識しているのですが……なにか問題が起こる
具体例がありましたら示してもらえませんか?

むしろ、#!/bin/sh と書きながら bash の拡張を使っているスクリプトの横行が
問題。

HIROSE, Masaaki

unread,
Apr 16, 2004, 8:17:41 PM4/16/04
to
ひろせといいます

on "Re: [Summary] tcsh% false ; ( echo $? ; pwd )"
<4080004D...@ht.sakura.ne.jp>
at Sat, 17 Apr 2004 00:48:29 +0900
IIJIMA Hiromitsu <delm...@ht.sakura.ne.jp> wrote:

> むしろ、#!/bin/sh と書きながら bash の拡張を使っているスクリプトの横行が
> 問題。

どこかに正しい #! /bin/sh なスクリプトの書き方の指針となる資料とかない
ですかね?

o 各 UNIX の /bin/sh の実体
o どこでも動くような /bin/sh の syntax
o そもそも本当の /bin/sh の実装は現在あるのか

のような。

ではでは

--
ひろせ

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Apr 17, 2004, 7:12:01 AM4/17/04
to
久野です。

hiro...@t3.rim.or.jpさん:


> どこかに正しい #! /bin/sh なスクリプトの書き方の指針となる資料とかない
> ですかね?

「UNIXプログラミング環境」じゃないですかね。あとBourneさんの
UNIXの本なんかもあったけどこれはもう売ってないかも。

> o 各 UNIX の /bin/sh の実体

> o そもそも本当の /bin/sh の実装は現在あるのか

SVR4系なら純正Bourne Shellでしょ。

> o どこでも動くような /bin/sh の syntax

別に難しくないと思うけどな。上記のシステムでman shすればいいような。

対話的はcsh系、スクリプトは/bin/shって「ふつー」でしょ? 久野

Shibuya, Nobuhiro

unread,
Apr 17, 2004, 9:01:43 AM4/17/04
to
ku...@gssm.otsuka.tsukuba.ac.jp wrote:

> 久野です。

> 「UNIXプログラミング環境」じゃないですかね。あとBourneさんの
> UNIXの本なんかもあったけどこれはもう売ってないかも。

和書で探すとダメダメかもしれないけど
アマゾン・ドット・コムで検索したら類書が複数ヒットしたです。

わたしのおすすめは

Portable Shell Programming
by Bruce Blinn (Author)
# Publisher: Prentice Hall PTR; Book and Disk edition (October 19, 1995)
# ISBN: 0134514947

本書中のサンプルスクリプトがプレンティス・ホールから無償で自由に
ダウンロードできたはず。ライバル本も多くはそんな風なのではないかと。

> 対話的はcsh系、スクリプトは/bin/shって「ふつー」でしょ? 久野

最大手某F社のUNIXサーバ向けプロダクトにKorn Shellを暗黙に強要する
とんでもないアプリケーションが存在します。
あの製品を作った連中とくに製品開発マネージャはいったい何を考えてんだか。
--
mailto:shi...@dd.iij4u.or.jp 渋谷伸浩

Junn Ohta

unread,
Apr 17, 2004, 9:18:25 AM4/17/04
to
fj.unix.shellsの記事<c5r3e1$2t...@utogw.gssm.otsuka.tsukuba.ac.jp>で
ku...@gssm.otsuka.tsukuba.ac.jpさんは書きました。

> > o 各 UNIX の /bin/sh の実体
> > o そもそも本当の /bin/sh の実装は現在あるのか
>
> SVR4系なら純正Bourne Shellでしょ。

SunOS 5.xの/bin/shには

name () { list; }

なシェル関数があるのでオリジナルではないみたいです
ね。ほかのSVR4もそうだったような。

シェル関数はkshで実装されたのが最初だと思うのです
が、あとからshにも取り入れられたのかな。
--
太田純(Junn Ohta) (株)リコー/新横浜事業所
oh...@sdg.mdd.ricoh.co.jp

Norimasa Nabeta

unread,
Apr 17, 2004, 9:13:04 AM4/17/04
to
>> ("Shibuya, Nobuhiro" <shi...@dd.iij4u.or.jp>) さんは
>> 『Re: [Summary] tcsh% false ; ( echo $? ; pwd )』の中で書きました。

> ku...@gssm.otsuka.tsukuba.ac.jp wrote:

>> 久野です。

>> 「UNIXプログラミング環境」じゃないですかね。あとBourneさんの
>> UNIXの本なんかもあったけどこれはもう売ってないかも。

> 和書で探すとダメダメかもしれないけど
> アマゾン・ドット・コムで検索したら類書が複数ヒットしたです。

> わたしのおすすめは

> 本書中のサンプルスクリプトがプレンティス・ホールから無償で自由に
> ダウンロードできたはず。ライバル本も多くはそんな風なのではないかと。

> 最大手某F社のUNIXサーバ向けプロダクトにKorn Shellを暗黙に強要する
> とんでもないアプリケーションが存在します。
> あの製品を作った連中とくに製品開発マネージャはいったい何を考えてんだか。

世界最大手某I社と某H社のUNIXサーバはKorn Shellがデフォルトという
とんでもない構成ですが、ちまたではアレはUNIXじゃないというもっぱらの
うわさです。

Shibuya, Nobuhiro

unread,
Apr 17, 2004, 10:16:58 AM4/17/04
to
Junn Ohta wrote:

> SunOS 5.xの/bin/shには
>
> name () { list; }
>
> なシェル関数があるのでオリジナルではないみたいです
> ね。ほかのSVR4もそうだったような。

HP-UX でも root の .profile に
ll (){...}
la (){...}
などのcshのalias相当のものが同様の流儀で
あれこれちりばめられています。
遅くともHP-UX 7.x時代以降から。
--
mailto:shi...@dd.iij4u.or.jp 渋谷伸浩

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Apr 17, 2004, 9:48:17 AM4/17/04
to
久野です。

oh...@src.ricoh.co.jpさん:


> SunOS 5.xの/bin/shには
>
> name () { list; }
>
> なシェル関数があるのでオリジナルではないみたいです
> ね。ほかのSVR4もそうだったような。

そうなると「何がBourne Shellか」になってしまうのですが…

> シェル関数はkshで実装されたのが最初だと思うのです
> が、あとからshにも取り入れられたのかな。

1984にSVR2で導入されたようです。Korn Shellは1983にリリースされ
たようですから、太田さんのおっしゃるストーリーのようですね。

http://www.in-ulm.de/~mascheck/bourne/

で、このページっていちおう「Bourne Shellの歴史」ですよね。広義に
とるなら全部Bourne Shellだし、狭く取るならほんとにVersion 7 その
まま、これが入っているのはあとはたぶん32Vだけね。BSDですらちょっ
とだけど変わっている。確かに「#」があったらcshというのはそりゃ
BSDだなあ。

BSD使いだった自分がよく知ってるのはその/bin/shですけど 久野

P.S. おや、V7のBourne Shellのmanページのリンクがあるじゃないです
か。これに準拠しておけば安全 :-)

MAEDA Atusi

unread,
Apr 17, 2004, 11:03:59 AM4/17/04
to
ku...@gssm.otsuka.tsukuba.ac.jp writes:

> > o どこでも動くような /bin/sh の syntax

POSIX (Single Unix Specification)の規格とか。

http://www.unix-systems.org/single_unix_specification/ で登録すれば
誰でも読めます。 Shell & Utilities Volumeに sh の仕様があります(cshや
kshはないです)。

> 別に難しくないと思うけどな。上記のシステムでman shすればいいような。
>
> 対話的はcsh系、スクリプトは/bin/shって「ふつー」でしょ? 久野

対話的にも、csh系を使う利点はもはや無いように思います。

前田敦司

Shibuya, Nobuhiro

unread,
Apr 17, 2004, 11:12:53 AM4/17/04
to
MAEDA Atusi wrote:

> 対話的にも、csh系を使う利点はもはや無いように思います。

for i in LIST
do
done

よりも
foreach i LIST
end

の方が短くて済むとかいうのはあります。
--
mailto:shi...@dd.iij4u.or.jp 渋谷伸浩

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Apr 17, 2004, 11:40:01 AM4/17/04
to
久野です。

maeda...@ialab.is.tsukuba.ac.jpさん:
> 対話的にも、csh系を使う利点はもはや無いように思います。

単に慣れてるだけです。ああそうだ、

set path = ( ディレクトリ ディレクトリ … )

の方が

PATH=デイレクトリ:デイレクトリ:…:デイレクトリ

より打ちやすいとか。

まあこれも慣れですかね 久野

P.S. プログラマブル補完なんかはbashは何でもできるけどtcshのが
ささっと設定できるという印象あります。

Takashi SHIRAI

unread,
Apr 17, 2004, 1:22:22 PM4/17/04
to
 しらいです。

In article <c5rar1$3qc$1...@ns.src.ricoh.co.jp>,
Junn Ohta <oh...@src.ricoh.co.jp> wrote:
>> SVR4系なら純正Bourne Shellでしょ。

 SVR4 系で純正 Bourne shell を実装してる OS って Solaris し
か見たことがありませんけど、他に何があるでしょうか?他の一般
的な SVR4 だと Korn shell が /bin/sh になってますよね。


>SunOS 5.xの/bin/shには
>
> name () { list; }
>
>なシェル関数があるのでオリジナルではないみたいです
>ね。ほかのSVR4もそうだったような。

 確かに 4.3BSD-Reno の Bourne shell には関数は実装されてい
ないんですが、SunOS 5.x の /bin/sh は、当時 Sun microsystems
に在籍中の Steve Bourne 氏自身が書いてた筈なので、正真正銘の
Bourne shell なんじゃないでしょうか。

# Bourne 氏が Sun Mocrosystems にいたのが 89-94 で、SunOS
#5.[01] が 92 年、5.[23] が 93 年に release されています。


>シェル関数はkshで実装されたのが最初だと思うのです
>が、あとからshにも取り入れられたのかな。

 SunOS の /bin/sh も Korn shell も、商用 OS で source が参
照出来ないんですが、SunOS 版 /bin/sh の系譜としては、結構よ
そからの機能を精力的に実装していたみたいです。
 echo が builtin になったのも Korn shell -> Bourne shell じ
ゃありませんでしたっけ?どっちも SunOS 4.1 の頃には実装され
てました。

--
しらい たかし

Junn Ohta

unread,
Apr 17, 2004, 2:33:36 PM4/17/04
to
fj.unix.shellsの記事<c5rovr$qoi$1...@nsvn01.zaq.ne.jp>で
shi...@unixusers.netさんは書きました。

> SunOS 5.x の /bin/sh は、当時 Sun microsystems
> に在籍中の Steve Bourne 氏自身が書いてた筈なので、正真正銘の
> Bourne shell なんじゃないでしょうか。

なるほど。するとこれもやはり、とてもCのソースには
見えないあのヘンタイなマクロを使って書かれているの
でしょうか? :-)

Junn Ohta

unread,
Apr 17, 2004, 2:48:52 PM4/17/04
to
fj.unix.shellsの記事<m34qri8...@nospam.maedapc.cc.tsukuba.ac.jp>で
maeda...@ialab.is.tsukuba.ac.jpさんは書きました。

> > > o どこでも動くような /bin/sh の syntax
> POSIX (Single Unix Specification)の規格とか。

XPG4のshはkshでした。

Junn Ohta

unread,
Apr 17, 2004, 2:40:40 PM4/17/04
to
fj.unix.shellsの記事<c5rcj1$4...@utogw.gssm.otsuka.tsukuba.ac.jp>で
ku...@gssm.otsuka.tsukuba.ac.jpさんは書きました。
> そうなると「何がBourne Shellか」になってしまうのですが…

たしかに「Bourne ShellといったらV7の/bin/shだけだ」
なんていったらシェルスクリプトにコメントも書けなく
なっちゃいますね。(^^;

> 1984にSVR2で導入されたようです。Korn Shellは1983にリリースされ
> たようですから、太田さんのおっしゃるストーリーのようですね。
> http://www.in-ulm.de/~mascheck/bourne/

おお、いいサイトですね、ここ。

> BSD使いだった自分がよく知ってるのはその/bin/shですけど 久野

私もちゃんと知ってるBourne Shellといったら4.1BSD以
降のBSD variantだけです。

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Apr 17, 2004, 7:08:37 PM4/17/04
to
久野です。

oh...@src.ricoh.co.jpさん:


> たしかに「Bourne ShellといったらV7の/bin/shだけだ」
> なんていったらシェルスクリプトにコメントも書けなく
> なっちゃいますね。(^^;

まあ「:」とか「#」とかいう何もしないコマンドを/binあたりに
作っておけば…

昔のcshだかはそういう実装だったような 久野

P.S. あれ、「:」って組み込みコマンドでしたっけ… はっ! 誰かを召
喚しているような気が ^_^;;

NIDE Naoyuki

unread,
Apr 18, 2004, 4:31:54 AM4/18/04
to
In article <40814975...@dd.iij4u.or.jp>,

shi...@dd.iij4u.or.jp writes:
> foreach i LIST
> end
> の方が短くて済むとかいうのはあります。

でも、

foreach i LIST

end | command

とかできなくて不便。というわけで結局sh系に落ち着いちゃいますね。

ni...@ics.nara-wu.ac.jp

Takashi SHIRAI

unread,
Apr 18, 2004, 8:00:05 AM4/18/04
to
 しらいです。

In article <c5sddl$16...@utogw.gssm.otsuka.tsukuba.ac.jp>,
<ku...@gssm.otsuka.tsukuba.ac.jp> wrote:
>久野です。

> まあ「:」とか「#」とかいう何もしないコマンドを/binあたりに
>作っておけば…
>
> 昔のcshだかはそういう実装だったような 久野

 csh の「:」は command ではなくて label 定義なので、Bourne
shell のつもりで「:」を記述すると、一見何も行なわないように
見えますが、空の label 名を定義してくれます。
 ややこしいのは、csh では「空の label 名」という代物が存在
を許されていて、しかも lebel として機能してしまう点ですね。

--
しらい たかし

OOTANI TAKASHI

unread,
Apr 18, 2004, 3:53:34 PM4/18/04
to
大谷です。
ku...@gssm.otsuka.tsukuba.ac.jp writes:
> 久野です。
> http://www.in-ulm.de/~mascheck/bourne/

これ面白いですね。20年前私が最初に触れたシャープのOA-UXって、
SystemIII系のように記憶してたんですけど、これで見ると V7のshのようで
記憶違いだったようです。そう言えば csh も存在しなかった。
testが外部コマンドなんで、caseでもif testでも書ける場合は
caseを使う癖が付いてました。

>P.S. あれ、「:」って組み込みコマンドでしたっけ…

組み込みコマンドだったと思います。

その後使ったSystemIIIのcshは、スクリプトの1文字目が#ならcshでそうで無ければ
shで実行だったので、csh無しと比べて上位互換でしたけど、(#!の機能は無かった)
逆に、1文字目が : のときだけshで、そうでなければcshで実行する
某SVR2のcshもありびっくりしたことがあります。何故そんな仕様なのか不思議。
--
tksotn

Hiroshi Fujishima

unread,
Apr 19, 2004, 12:56:39 AM4/19/04
to
"Shibuya, Nobuhiro" <shi...@dd.iij4u.or.jp> writes:

>> 対話的にも、csh系を使う利点はもはや無いように思います。
>
> for i in LIST
> do
> done
>
> よりも
> foreach i LIST
> end

zsh だとどちらでも、OK です。

--
Hiroshi Fujishima

Hiroshi Fujishima

unread,
Apr 19, 2004, 12:59:33 AM4/19/04
to
ku...@gssm.otsuka.tsukuba.ac.jp writes:

>> 対話的にも、csh系を使う利点はもはや無いように思います。
>
> 単に慣れてるだけです。ああそうだ、
>
> set path = ( ディレクトリ ディレクトリ … )
>
> の方が
>
> PATH=デイレクトリ:デイレクトリ:…:デイレクトリ
>
> より打ちやすいとか。

zsh だと
path=( ディレクトリ ディレクトリ … )
PATH=デイレクトリ:デイレクトリ:…:デイレクトリ
のどちらでも OK です。

> P.S. プログラマブル補完なんかはbashは何でもできるけどtcshのが
> ささっと設定できるという印象あります。

autoload -U compinit
compinit

だけで、ほとんど設定がおわってしまいます。

--
Hiroshi Fujishima

HIROSE, Masaaki

unread,
Apr 19, 2004, 1:15:13 AM4/19/04
to
ひろせといいます

on "Re: [Summary] tcsh% false ; ( echo $? ; pwd )"

<c5rcj1$4...@utogw.gssm.otsuka.tsukuba.ac.jp>
at 17 Apr 2004 13:48:17 GMT
ku...@gssm.otsuka.tsukuba.ac.jp wrote:

(snip)


> 1984にSVR2で導入されたようです。Korn Shellは1983にリリースされ
> たようですから、太田さんのおっしゃるストーリーのようですね。
>
> http://www.in-ulm.de/~mascheck/bourne/
>
> で、このページっていちおう「Bourne Shellの歴史」ですよね。広義に
> とるなら全部Bourne Shellだし、狭く取るならほんとにVersion 7 その
> まま、これが入っているのはあとはたぶん32Vだけね。BSDですらちょっ
> とだけど変わっている。確かに「#」があったらcshというのはそりゃ
> BSDだなあ。

(snip)

同じサイトの

Various system shells
http://www.in-ulm.de/~mascheck/various/shells/

によれば、最近の UNIX ファミリに限れば /bin/sh は ash, ksh (の眷属),
bash のいずれかで、これら三者の文法の最大公約数は (恐らく) ash なので、

商用/非商用に限らず、ここ最近 (5年以内ぐらい) のどの UNIX ファミリに
おいても動作する #! /bin/sh なスクリプトを書くには、ash の文法に従え
ばよい。

という方針でいいと思うのですが、他に気をつけるべき点などありますでしょ
うか。

# これで安心して `command` の代わりに $(command) が、`expr n + m` の代
# わりに $((n + m)) が使えそうです。

ではでは

--
ひろせ
http://www.irori.org/

Junn Ohta

unread,
Apr 19, 2004, 2:03:13 AM4/19/04
to
fj.unix.shellsの記事<yf1ekqkeefy.wl%hiro...@t3.rim.or.jp>で
hiro...@t3.rim.or.jpさんは書きました。

> 商用/非商用に限らず、ここ最近 (5年以内ぐらい) のどの UNIX ファミリに
> おいても動作する #! /bin/sh なスクリプトを書くには、ash の文法に従え
> ばよい。

最近のashがどうなっているのか知らないのですが、

> # これで安心して `command` の代わりに $(command) が、`expr n + m` の代
> # わりに $((n + m)) が使えそうです。

初期のashではこれらは使えなかったような気がします。

# FreeBSD 2.xあたりのsh(ash)はどうだったかな?

Masamichi Takatsu

unread,
Apr 19, 2004, 3:02:03 AM4/19/04
to
高津@ドーガです。

記事 <40814975...@dd.iij4u.or.jp> で
"Shibuya, Nobuhiro"さんは書きました


> for i in LIST
> do
> done

> よりも
> foreach i LIST
> end

> の方が短くて済むとかいうのはあります。


sh 系だと
for i in LIST ; do (コマンド); done
と 1 liner にできるのが、
csh 系だとできないんですよね。

でもって、ループの中身は history に入らない。

history を元に、ループ内容をちょっと修正しては再実行、ということを
やってるとcsh系はちょっと不便です。

#私はtcsh使いなのですが、そういう時は「sh -c "ほげほげ"」ってやってたり…


PROJECT TEAM DoGA 高津正道 ta...@doga.jp
TBD0...@nifty.ne.jp
PROJECT TEAM DoGAのホームページ → http://doga.jp/
4月19日(月) 今日のマーフィーの法則 [ストックメイヤーの定理]
簡単に見えるものは、難しい。難しく見えたら、どうやったって不可能だ。

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Apr 19, 2004, 4:14:12 AM4/19/04
to
久野です。

hir...@first.tsukuba.ac.jpさん:


> autoload -U compinit
> compinit
>
> だけで、ほとんど設定がおわってしまいます。

それでどんなコマンドでも自分の思い通りに補完がカスタマイズ
されるのかなあ。

それならすごいけど。 久野

SAITOH Akinori

unread,
Apr 19, 2004, 5:19:15 AM4/19/04
to
大阪大学の齊藤です

OOTANI TAKASHI wrote:

> これ面白いですね。20年前私が最初に触れたシャープのOA-UXって、
> SystemIII系のように記憶してたんですけど、これで見ると V7のshのようで
> 記憶違いだったようです。そう言えば csh も存在しなかった。

cshは存在したような記憶があるのですが、後日バージョンアップして
SystemVになったOA-UXIIの記憶と混同しているのかなぁ。
SystemIII時代のOA-UXは数ヶ月しか使ってないので。

シャープのOAシリーズは下位機種は独自設計製造でしたが、最上位
機種はピラミッドのOEMでしたよねぇ。。。

齊藤明紀 sai...@ist.osaka-u.ac.jp

NAKAMURA Kazushi

unread,
Apr 19, 2004, 6:44:12 AM4/19/04
to
In article <c5vq31$h0v$1...@ns.src.ricoh.co.jp>

oh...@src.ricoh.co.jp writes:
>> 商用/非商用に限らず、ここ最近 (5年以内ぐらい) のどの UNIX ファミリに
>> おいても動作する #! /bin/sh なスクリプトを書くには、ash の文法に従え
>> ばよい。
>
>最近のashがどうなっているのか知らないのですが、
>
>> # これで安心して `command` の代わりに $(command) が、`expr n + m` の代
>> # わりに $((n + m)) が使えそうです。
>
>初期のashではこれらは使えなかったような気がします。
>
># FreeBSD 2.xあたりのsh(ash)はどうだったかな?

FreeBSD2.2.8で使えました。exprをfork&execしなくて済むと知ってしまった今、
tcshを使う理由が無くなってしまったような…。

FreeBSDのshがashになったのは3.xからではないかと/usr/srcをまさぐって
みたのですが、ディレクトリ名がshなだけで、TOURという名のチュートリアル
を見たらしっかり ash と書いてありました。
--
中村和志@神戸 <mailto:k...@kobe1995.net>
NAKAMURA Kazushi@KOBE <http://kobe1995.net/>
- Break the hate chain. No more kill!
administrator@[127.1]

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Apr 19, 2004, 5:57:21 AM4/19/04
to
久野です。

sai...@ist.osaka-u.ac.jp.NOSPAMさん:
> シャープのOAシリーズは下位機種は独自設計製造でしたが、最上位
> 機種はピラミッドのOEMでしたよねぇ。。。

OSその他のソフト部分は下位と上位で同一だったのでしょうか。

ところでピラミッドって形はピラミッド形だったのですか?

すごく今更な質問ですが… 久野

P.S. Sequent Balanceはやじろべえ形をしていたとか(嘘)

Takashi SHIRAI

unread,
Apr 19, 2004, 8:37:29 AM4/19/04
to
 しらいです。

In article <0404191944...@ns.kobe1995.net>,


NAKAMURA Kazushi <k...@kobe1995.net> wrote:
>>> 商用/非商用に限らず、ここ最近 (5年以内ぐらい) のどの UNIX ファミリに
>>> おいても動作する #! /bin/sh なスクリプトを書くには、ash の文法に従え
>>> ばよい。

 ダウト。Mac OS 10.1.x の /bin/sh は zsh なので ash どころ
か Bourne shell とも互換性のない箇所が散見されます。`` を評
価する前後での変数展開が zsh はちょい特殊。


>>最近のashがどうなっているのか知らないのですが、

 「最近の ash」というのが果して Kenneth Almquist 氏の手によ
るものなのかどうかはともかく、4.4BSD Alpha に実装されていた
ash は POSIX 準拠なので $(()) を実装しています。
 その後 POSIX 規格の方が大幅に機能追加されてしまって、今で
は POSIX 非準拠の部分がありますが、それを厳密に POSIX 準拠に
実装し直したのが Dedian proj. の dash ですね。


>>> # これで安心して `command` の代わりに $(command) が、`expr n + m` の代
>>> # わりに $((n + m)) が使えそうです。
>>
>>初期のashではこれらは使えなかったような気がします。

 4.3BSD NET/2 の ash は $(()) を実装していませんが、$() の
方は実装しています。「初期の ash」と言っても、これより前のも
のは多分世に出ていないんじゃないでしょうか。

http://www.freebsd.org/cgi/man.cgi?query=sh&apropos=0&sektion=0&manpath=4.3BSD+NET%2F2&format=html


>># FreeBSD 2.xあたりのsh(ash)はどうだったかな?
>
>FreeBSD2.2.8で使えました。exprをfork&execしなくて済むと知ってしまった今、
>tcshを使う理由が無くなってしまったような…。

 4.4BSD Alpha の ash で既にどちらも実装されていた訳ですから、
そこから派生した 4.4BSD-Lite を元にした *BSD 達は最初から使
えていた筈です。
 386BSD に由来していた時代の *BSD は NET/2 時代の $(()) を
使えない ash を持っていたようですが、FreeBSD だと 1.1.5.1 ま
で、NetBSD だと 0.9 までですね。


>FreeBSDのshがashになったのは3.xからではないかと/usr/srcをまさぐって
>みたのですが、ディレクトリ名がshなだけで、TOURという名のチュートリアル
>を見たらしっかり ash と書いてありました。

 BSD の系譜の中で /bin/sh に Bourne shell が使われていたの
は 4.3BSD Reno までで、4.3BSD NET/2 からは ash に取って代わ
られています。
 現在の *BSD 各種のうち、Reno 以前の BSD から分派した一派は
存在しませんので、*BSD に限って言えば最初から ash は使われて
いた筈です。
 但し、OpenBSD は 2.2 辺りで ash じゃなくて pdksh に代わっ
ちゃったみたいですね。何があったんでしょうね?

--
しらい たかし

Junn Ohta

unread,
Apr 19, 2004, 11:38:24 AM4/19/04
to
fj.unix.shellsの記事<c60h1j$30j8$1...@nsvn01.zaq.ne.jp>で
shi...@unixusers.netさんは書きました。

>  4.3BSD NET/2 の ash は $(()) を実装していませんが、$() の
> 方は実装しています。「初期の ash」と言っても、これより前のも
> のは多分世に出ていないんじゃないでしょうか。

ashを最初に見たのはUSENET News(comp.sourcesあたり?)
だった記憶があるのですが...。OSの一部ではなくて、単
体で配布されたバージョンです。BNR/2より前だと思うの
ですが、記憶はあいまいです。

NISHIMATSU Takeshi

unread,
Apr 20, 2004, 2:26:59 AM4/20/04
to
西松です.

fjの長老がたの昔話が延々とつづいておりますが,
ここらで若者むけにぼくが少し解説をしておきます.

● csh系でシェルスクリプトを書いてはいけません.
Tom Christiansen 著 森 大毅 訳
「なぜ csh でプログラムを書くのが良くないのか」
(原題 "Csh Programming Considered Harmful")
http://www.klab.ee.utsunomiya-u.ac.jp/~hiroki/csh-whynot.euc
を読みましょう.

● ログインシェルは「慣れの問題」という面もあり
ますが, sh系を使う方がのちのち楽かもしれません.

● shスクリプトの書き方は
木村 孝道 著
平林 浩一 監修
Bourne Shell 自習テキスト
http://www.tsden.org/takamiti/shText/index.html
や man page, info で自習しましょう.

● a=`expr $a + 1` vs a=$(( $a + 1 ))
後者のほうが外部のコマンドexprを呼び出す overhead
cost がかからなくてよいです. ただし, 長老がたが
現在も使われているような古くて遅いマシンでもな
ければあまり気にする必要はないでしょう. 後方互
換性を気にする場合は前者を使いましょう.

#いまどきの若者はfjを読んでいるのだろうか.
--
love && peace && free_software
西松 毅 % 若者

SAITOH Akinori

unread,
Apr 22, 2004, 2:08:04 AM4/22/04
to
齊藤です

ku...@gssm.otsuka.tsukuba.ac.jp wrote:
>>シャープのOAシリーズは下位機種は独自設計製造でしたが、最上位
>>機種はピラミッドのOEMでしたよねぇ。。。

> OSその他のソフト部分は下位と上位で同一だったのでしょうか。

違いました。ピラミッドは独自OSで、SystemVとBSDの両方が入った
変なUNIXでした。UNIVERSE切り替えという概念を持っていて、ユーザ
環境をSysVにしたりBSDにしたりできた。。。と記憶しています。

> ところでピラミッドって形はピラミッド形だったのですか?
ただの四角い筐体でしたけど、たしか、シャープがOEMしていた
モデルは最大4CPUだったはず。


齊藤明紀 saitoh@IST.OSAKA-U.AC.JP

HIROSE, Masaaki

unread,
Apr 22, 2004, 9:24:57 PM4/22/04
to
ひろせです

on "Re: [Summary] tcsh% false ; ( echo $? ; pwd )"

<c60h1j$30j8$1...@nsvn01.zaq.ne.jp>
at Mon, 19 Apr 2004 21:37:29 +0900
Takashi SHIRAI wrote:

> >>> 商用/非商用に限らず、ここ最近 (5年以内ぐらい) のどの UNIX ファミリに
> >>> おいても動作する #! /bin/sh なスクリプトを書くには、ash の文法に従え
> >>> ばよい。
>
>  ダウト。Mac OS 10.1.x の /bin/sh は zsh なので ash どころ
> か Bourne shell とも互換性のない箇所が散見されます。`` を評
> 価する前後での変数展開が zsh はちょい特殊。

(snip)

う"。後程 zsh の挙動を調べてみます。

//

追加でお願いなのですが、
手元の Mac OS X 10.2.8 の /bin/*sh の情報を "Various system shells" の
ページの作者の方に送ったところ、他の Mac OS X のバージョンの shell の
情報知らない? ときかれました。

手元で動いているのは 10.2.8 しかないので、10.0.x, 10.1.x, 10.3.x の環境
をお持ちの方がいましたら、/bin/*sh の情報を教えていただけないでしょう
か。

因みに 10.2.8 では以下のようになっています。

$ ls -l /bin/*sh
-rwxr-xr-x 1 root wheel 540884 Oct 6 2003 /bin/bash
-r-xr-xr-x 1 root wheel 315136 Oct 6 2003 /bin/csh
-r-xr-xr-x 1 root wheel 540884 Oct 6 2003 /bin/sh
-r-xr-xr-x 1 root wheel 315136 Oct 6 2003 /bin/tcsh
-rwxr-xr-x 1 root wheel 828780 Oct 6 2003 /bin/zsh

$ md5sum /bin/bash /bin/sh
745658963ed0921d490457685caeaf44 /bin/bash
745658963ed0921d490457685caeaf44 /bin/sh

$ md5sum /bin/csh /bin/tcsh
ced4afe1d62c8aef28e113ded7bf6599 /bin/csh
ced4afe1d62c8aef28e113ded7bf6599 /bin/tcsh

$ /bin/bash --version
GNU bash, version 2.05a.0(1)-release (powerpc-apple-darwin6.0)
Copyright 2001 Free Software Foundation, Inc.

$ /bin/sh --version
GNU bash, version 2.05a.0(1)-release (powerpc-apple-darwin6.0)
Copyright 2001 Free Software Foundation, Inc.

$ /bin/zsh --version
zsh 4.0.4 (powerpc-apple-darwin6.0)

$ /bin/tcsh -c 'echo $version'
tcsh 6.10.00 (Astron) 2000-11-19 (powerpc-apple-darwin) options 8b,nls,dl,al,sm,rh,color

$ /bin/csh -c 'echo $version'
tcsh 6.10.00 (Astron) 2000-11-19 (powerpc-apple-darwin) options 8b,nls,dl,al,sm,rh,color

# Mac OS X 関係の ML でも尋ねてみようと思っています。

ei-...@foc.jp

unread,
Apr 25, 2004, 10:05:08 AM4/25/04
to
In article <m34qri8...@nospam.maedapc.cc.tsukuba.ac.jp> on fj.unix.shells,

maeda...@ialab.is.tsukuba.ac.jp wrote:
| > 対話的はcsh系、スクリプトは/bin/shって「ふつー」でしょ? 久野
| 対話的にも、csh系を使う利点はもはや無いように思います。

tcshを捨てたい捨てたいと思っているのですが、プログラム補完機能がbashに
無いので、もう何年も我慢しています。そのうちにzshかなとも思い続けていま
す。


…と投稿しようとして何げにman bashすると、……在るぢゃん。というわけで、
1週間かけてちまちまと~/.bash*を整備し、無事tcshと決別できました。明日か
らは、職場で撲滅を始めます。(Solaris8に付いて来るbash 2.03にはプログラム
補完が無いのですが、使用頻度が少ないので良しとします。)

# ただ ` や $( に続いての補完が意図通りに動きませんが、許容範囲です。

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Apr 25, 2004, 11:21:37 AM4/25/04
to
久野です。

ei-...@foc.jpさん:
> …と投稿しようとして何げにman bashすると、……在るぢゃん。

わりと新しいんですよね。綺麗かと言われるとよく分からないけど…

tcshみたいなのも好きですけどね 久野

ei-...@foc.jp

unread,
Apr 25, 2004, 12:33:10 PM4/25/04
to
In article <c6gl21$10...@utogw.gssm.otsuka.tsukuba.ac.jp> on fj.unix.shells,

CHANGES曰く

> This document details the changes between this version, bash-2.04-alpha1,
> and the previous version, bash-2.04-devel.
...
> 3. New Features in Bash
>
> a. A new programmable completion facility, with two new builtin commands:
> complete and compgen.

なので、2.04からですね。

# でも半年以上(私はSlackware遣い。)気付かなかったのが情けなゐ。

綺麗か否かはおいて、-Fで函數を使うと決めた時点で語単位でも文字単位でも行
全体を見れるので、自由度は優っていると思います。

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Apr 25, 2004, 7:17:07 PM4/25/04
to
久野です。

ei-...@foc.jpさん:
> 綺麗か否かはおいて、-Fで函數を使うと決めた時点で語単位でも文字単位でも行
> 全体を見れるので、自由度は優っていると思います。

bashの方がデザイン的には「綺麗」「自由度優っている」と思います
が力技っぽい。tcshのは特定用途決め打ちでさっとできるようにした
「いかにも」な感じがします。それはそれで好きというか。

Zshのはどうやってカスタマイズするか知らない 久野

HIROSE, Masaaki

unread,
Apr 26, 2004, 12:32:31 AM4/26/04
to
ひろせといいます

on "Re: [Summary] tcsh% false ; ( echo $? ; pwd )"

<0404252305...@bureau.foc.jp>
at Sun, 25 Apr 2004 14:05:08 GMT
ei-...@foc.jp wrote:

> tcshを捨てたい捨てたいと思っているのですが、プログラム補完機能がbashに
> 無いので、もう何年も我慢しています。そのうちにzshかなとも思い続けていま
> す。
>
>
> …と投稿しようとして何げにman bashすると、……在るぢゃん。というわけで、
> 1週間かけてちまちまと~/.bash*を整備し、無事tcshと決別できました。明日か
> らは、職場で撲滅を始めます。(Solaris8に付いて来るbash 2.03にはプログラム
> 補完が無いのですが、使用頻度が少ないので良しとします。)

その programmable completion を集めた

bash-completion
<URL:http://www.caliban.org/bash/index.shtml#completion>

というものがあります。参考までに。

Tanaka-Qtaro-Yasuhiro

unread,
Apr 26, 2004, 2:07:41 AM4/26/04
to
田中久太郎です。

HIROSE, Masaakiさんの<yf1hdv7mk9s.wl%hiro...@t3.rim.or.jp>から


>bash-completion
><URL:http://www.caliban.org/bash/index.shtml#completion>
>
>というものがあります。参考までに。

お、僕もコレ入れよう、と思ってたら、
Debian(woody)にはすでに /etc/bash_complete として入ってました。

知らんかった・・・・


--
Tanaka-Qtaro-Yasuhiro mailto:ta...@ca2.so-net.ne.jp

Takashi SHIRAI

unread,
Apr 26, 2004, 9:33:01 AM4/26/04
to
 しらいです。

In article <c6hgtj$1q...@utogw.gssm.otsuka.tsukuba.ac.jp>,
<ku...@gssm.otsuka.tsukuba.ac.jp> wrote:
>久野です。

> bashの方がデザイン的には「綺麗」「自由度優っている」と思います
>が力技っぽい。tcshのは特定用途決め打ちでさっとできるようにした
>「いかにも」な感じがします。それはそれで好きというか。

 一般論としても、bash には bash なりの美学なり設計なりがあ
って、多分最初はそのとおりに実装されていて奇麗だったんだと思
いますが、仕様変更やら機能追加やらを繰り返すうちに完全性が崩
れていって、力業による実装部分が増えていったように思えます。
 その基本設計を頑なに守り続ける故のデメリットもあるのですが、
後先考えずに動けばおっけーなのか、ちゃんと考えて ad-hoc には
実装しないのか、その辺りの選択でジレンマがあるのかなという気
もします。
 飽くまでも source から見た印象でしかありませんけどね。

# 例えば 2pass parse に拘ってるのでいつまで経っても $() の
#中に case statement を書けないとか :-)

--
しらい たかし

ei-...@foc.jp

unread,
Apr 26, 2004, 9:56:43 AM4/26/04
to
In article <yf1hdv7mk9s.wl%hiro...@t3.rim.or.jp> on fj.unix.shells,

hiro...@t3.rim.or.jp wrote:
| bash-completion
| <URL:http://www.caliban.org/bash/index.shtml#completion>
| というものがあります。参考までに。

ありがとうございます。

In article <c6i8vd$bmp$1...@news-wst.ocn.ad.jp> on fj.unix.shells,


ta...@ca2.so-net.ne.jp wrote:
| お、僕もコレ入れよう、と思ってたら、
| Debian(woody)にはすでに /etc/bash_complete として入ってました。

Slackware 9.1にも、extra/bash-completion-20030911/ 以下に在りました。
ちょい古めなので、上記URLから最新版を取って来て入れ、パッケージにしまし
た。明日朝、<ftp://pub.foc.jp/slackware-alteration/pkg-Slackware-9.1/>に
置きます。

Tanaka-Qtaro-Yasuhiro

unread,
Apr 26, 2004, 8:50:11 PM4/26/04
to
田中久太郎です。

Tanaka-Qtaro-Yasuhiroさんの<c6i8vd$bmp$1...@news-wst.ocn.ad.jp>から
>Debian(woody)にはすでに /etc/bash_complete として入ってました。

/etc/bash_completion の間違いでした。すいません。


--
Tanaka-Qtaro-Yasuhiro mailto:ta...@ca2.so-net.ne.jp

IIJIMA Hiromitsu

unread,
Apr 26, 2004, 10:39:44 PM4/26/04
to
いいじまです。

10.3(サブバージョン不明)での情報です。

$ ls -l /bin/*sh
-rwxr-xr-x 1 root wheel 603488 3 24 10:42 /bin/bash
-r-xr-xr-x 1 root wheel 348068 3 24 10:42 /bin/csh
-r-xr-xr-x 1 root wheel 603488 3 24 10:41 /bin/sh
-r-xr-xr-x 1 root wheel 348068 3 24 10:42 /bin/tcsh
-rwxr-xr-x 1 root wheel 479120 3 24 10:42 /bin/zsh

$ md5sum /bin/bash /bin/sh
c290c1ebaadfba5444bc111bb37e8fcd /bin/bash
c290c1ebaadfba5444bc111bb37e8fcd /bin/sh

$ md5sum /bin/csh /bin/tcsh
f2c43adf1fb25d6aac3ca2c2fbc6431a /bin/csh
f2c43adf1fb25d6aac3ca2c2fbc6431a /bin/tcsh

$ /bin/sh --version
GNU bash, version 2.05b.0(1)-release (powerpc-apple-darwin7.0)
Copyright (C) 2002 Free Software Foundation, Inc.

$ /bin/csh --version
tcsh 6.12.00 (Astron) 2002-07-23 (powerpc-apple-darwin) options 8b,nls,dl,al,kan,sm,rh,color,dspm,filec

$ /bin/zsh --version
zsh 4.1.1 (powerpc-apple-darwin7.0)

========================================================================
飯嶋 浩光 / でるもんた・いいじま http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delm...@ht.sakura.ne.jp

NAKAMURA Kazushi

unread,
Apr 27, 2004, 5:55:38 AM4/27/04
to
In article <408DC7F0...@ht.sakura.ne.jp>

delm...@ht.sakura.ne.jp writes:
>10.3(サブバージョン不明)での情報です。
>$ ls -l /bin/*sh

uname -aと
ls -li /bin/*sh

で良いような。Macはよく知らんけど。

Hideo Sir MaNMOS Morishita

unread,
Apr 27, 2004, 6:40:07 AM4/27/04
to

In article <0404271855...@ns.kobe1995.net>,

k...@kobe1995.net (NAKAMURA Kazushi) writes:
> In article <408DC7F0...@ht.sakura.ne.jp>
> delm...@ht.sakura.ne.jp writes:
> >10.3(サブバージョン不明)での情報です。
> >$ ls -l /bin/*sh
>
> uname -aと
> ls -li /bin/*sh
>
> で良いような。Macはよく知らんけど。

MacOS Xだとビルドバージョンとかあると良いかも。

[このMacについて]->[詳しい情報]くらいでみれたり
--
___ わしは、山吹色のかすてーらが大好きでのぅ
[[o o]] ふぉっふぉっふぉ
'J' 森下 お代官様 MaNMOS 英夫@ステラクラフト
PGP Finger = CD EA D5 A8 AD B2 FE 7D 02 74 87 52 7C B7 39 37

HIROSE, Masaaki

unread,
Apr 27, 2004, 9:49:48 AM4/27/04
to
ひろせです

on "Re: [Summary] tcsh% false ; ( echo $? ; pwd )"

<yf1smevo592.wl%hiro...@t3.rim.or.jp>
at Fri, 23 Apr 2004 10:24:57 +0900
ひ@RIM wrote:

> 手元の Mac OS X 10.2.8 の /bin/*sh の情報を "Various system shells" の
> ページの作者の方に送ったところ、他の Mac OS X のバージョンの shell の
> 情報知らない? ときかれました。
>
> 手元で動いているのは 10.2.8 しかないので、10.0.x, 10.1.x, 10.3.x の環境
> をお持ちの方がいましたら、/bin/*sh の情報を教えていただけないでしょう
> か。

(snip)

情報いただいた方、ありがとうございました。これをまとめて Sven 氏に送っ
てみます。

参考までに、10.0, 10.2, 10.3 の /bin/*sh はこんなふうになっていました。

* Mac OS X 10.3.3 (clean typical install 10.3.0 + Apple Software Update )
o /bin/sh: bash 2.05b.0 (NOT {sym,hard}link to /bin/bash)
o /bin/bash: bash 2.05b.0
o /bin/csh: tcsh 6.12.00 (Astron) (NOT {sym,hard}link to /bin/tcsh)
o /bin/tcsh: tcsh 6.12.00 (Astron)
o /bin/zsh: 4.1.1

* Mac OS X 10.2.8 (pre-installed 10.2 + Apple Software Update)
o /bin/sh: bash 2.05a.0 (NOT {sym,hard}link to /bin/bash)
o /bin/bash: bash 2.05a.0
o /bin/csh: tcsh 6.10.00 (Astron) (NOT {sym,hard}link to /bin/tcsh)
o /bin/tcsh: tcsh 6.10.00 (Astron)
o /bin/zsh: 4.0.4

* Mac OS X 10.2.0 (clean typical install)
o /bin/sh: bash 2.05a.0 (NOT {sym,hard}link to /bin/bash)
o /bin/bash: bash 2.05a.0
o /bin/csh, /bin/tcsh (hard link): tcsh 6.10.00 (Astron)
o /bin/zsh: 4.0.4

* Mac OS X 10.0.0 (clean typical install)
o /bin/sh: zsh 3.0.8 (not {sym,hard}link to /bin/zsh)
o /bin/zsh: 3.0.8
o /bin/csh, /bin/tcsh (hard link): tcsh 6.08.00 (Astron)

NAKAMURA Kazushi

unread,
Apr 28, 2004, 5:09:43 PM4/28/04
to
中村和志@神戸です。

In article <c67ng1$1v8h$1...@newsserv.ics.es.osaka-u.ac.jp>


sai...@ist.osaka-u.ac.jp.NOSPAM writes:
>>>シャープのOAシリーズは下位機種は独自設計製造でしたが、最上位
>>>機種はピラミッドのOEMでしたよねぇ。。。
>
>> OSその他のソフト部分は下位と上位で同一だったのでしょうか。
>
>違いました。ピラミッドは独自OSで、SystemVとBSDの両方が入った
>変なUNIXでした。UNIVERSE切り替えという概念を持っていて、ユーザ
>環境をSysVにしたりBSDにしたりできた。。。と記憶しています。

まるでconvexみたい。MIPS-OSもSysVとBSD風のコマンドが両方入って
いて、PATHを通す順序で挙動を変えることが出来たような。

>> ところでピラミッドって形はピラミッド形だったのですか?
>ただの四角い筐体でしたけど、たしか、シャープがOEMしていた
>モデルは最大4CPUだったはず。

某A社のやつは、ディスクだかドラムだかの筐体とかもフロア一杯に
広がっていてどれが本体だか分からなかったですが、どの箱も四角
でした。OSもA社謹製の日本語4.2BSDでした。

NAKAMURA Kazushi

unread,
May 15, 2004, 10:17:34 AM5/15/04
to
中村和志@神戸です。

In article <0404191944...@ns.kobe1995.net>


k...@kobe1995.net writes:
>>> # これで安心して `command` の代わりに $(command) が、`expr n + m` の代
>>> # わりに $((n + m)) が使えそうです。
>>
>>初期のashではこれらは使えなかったような気がします。
>>
>># FreeBSD 2.xあたりのsh(ash)はどうだったかな?
>
>FreeBSD2.2.8で使えました。exprをfork&execしなくて済むと知ってしまった今、
>tcshを使う理由が無くなってしまったような…。

まだ残っていました。$変数:r 等です。
デジカメ画像をまとめて変換したい時、

% foreach i (*.jpg *.tif *.ppm)
> convert -resize 750x500 $i $i:r.jpeg
> end

$ for i in *.jpg *.tif *.ppm;do convert -resize 750x500 $i $i:r.jpeg;done

てな感じでワンライナーにしたいのですが、shだと $i:r が働きません。
$(basename .jpg .tif .ppm) という訳にもいきません。
何とか上手くワンライナーに出来ないものでしょうか?
--
中村和志@神戸 @mailto:k...@kobe1995.net@
NAKAMURA Kazushi@KOBE @http://kobe1995.net/@

Koichi Yasuoka

unread,
May 15, 2004, 10:24:45 AM5/15/04
to
 京都大学人文科学研究所附属漢字情報研究センターの安岡です。
神戸の中村和志さんは書きました。

>$ for i in *.jpg *.tif *.ppm;do convert -resize 750x500 $i $i:r.jpeg;done

そりゃもう、exprを駆使して

for i in *.jpg *.tif *.ppm ; do convert -resize 750x500 $i `expr $i : '\(.*\.\)'`jpeg ; done

でしょう。でも、これ、1行に「おさまってない」気がするなぁ…。
=======================================================================
安岡孝一@京都大学人文科学研究所附属漢字情報研究センター
http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/
=======================================================================

Takashi SHIRAI

unread,
May 15, 2004, 12:35:12 PM5/15/04
to
 しらいです。

In article <0405152317...@ns.kobe1995.net>,
NAKAMURA Kazushi <k...@kobe1995.net> wrote:
>中村和志@神戸です。

>>FreeBSD2.2.8で使えました。exprをfork&execしなくて済むと知ってしまった今、
>>tcshを使う理由が無くなってしまったような…。
>
>まだ残っていました。$変数:r 等です。

 対象は FreeBSD 2.2.8 以降の ash でいいんですね?その辺りに
なると POSIX 準拠がほぼ実現されていますので、${%} や ${#} が
使える筈です。少なくとも 2.2.6 の /bin/sh では使えました。


>$ for i in *.jpg *.tif *.ppm;do convert -resize 750x500 $i $i:r.jpeg;done
>
>てな感じでワンライナーにしたいのですが、shだと $i:r が働きません。

$ for i in *.jpg *.tif *.ppm; do convert -resize 750x500 $i ${i%.*}.jpeg; done

 拡張子が「.tar.gz」のように複数から成る場合は「${i%%.*}」
ですね。
 流石に「package-1.0.4b-beta」みたいな「.」付の basename の
後ろに「.tar.gz」やら「.patch」やらついてる filename 群から
basename を取出すのは無理でしょうね。
 尤もこれは csh でも無理っぽいけど。

--
しらい たかし

Kawaguti Ginga

unread,
May 15, 2004, 9:56:49 PM5/15/04
to
川口です

まあ,言い始めたらきりがないですが,
あの機能もこの機能も,というのが望みの場合には
ash にこだわるよりも zsh に逃げてしまうのは
ダメなんでしょうか?

<0405152317...@ns.kobe1995.net>の記事において
k...@kobe1995.netさんは書きました。


> まだ残っていました。$変数:r 等です。
> デジカメ画像をまとめて変換したい時、
>
> % foreach i (*.jpg *.tif *.ppm)
> > convert -resize 750x500 $i $i:r.jpeg
> > end

zsh% for i in *.{jpg,tif,ppm}
for> convert -resize 750x500 $i $i:r.jpeg
とか
zsh% for i in *.{jpg,tif,ppm};do;convert -resize 750x500 $i $i:r.jpeg;done
でいけます.

ところで,

> てな感じでワンライナーにしたいのですが、shだと $i:r が働きません。

one liner というのは "一行程度で済むだろ" という
ことを言うときに意味があるだけで普段1行に納めなければと
必死に考える必要はないんじゃないでしょうか?

(zsh なら history search でも複数行呼び返せます)

# まあ,昔の環境で zsh を入れていないということなら
# 仕方ないですけど
--
∧∧
Zzz.. (- - )⌒⌒⊇~ 川口 銀河
############## ginga-fj-s...@ginganet.org

NIDE Naoyuki

unread,
May 16, 2004, 7:49:11 AM5/16/04
to
In article <0405161056...@athena.ginganet.org>,

ginga-fj-s...@ginganet.org writes:
> one liner というのは "一行程度で済むだろ" という
> ことを言うときに意味があるだけで普段1行に納めなければと
> 必死に考える必要はないんじゃないでしょうか?

ワンライナーにしたい時、その理由は「短く済ませたい」であることもありま
すけど、「他の作業の部品として使える1つの構文に収めたい」であることもあ
りますよね。今回のお題をshで for … done で済ませることには、そういう利
点もあると思うわけです。for … done 2> /tmp/hoge とか、for … done 2>&1
| fuga とかできますからね。同じことがcshでできないのが、cshで基本的に辛
いことの1つ。試しに手元で

% foreach i (a b c)
foreach? ls $i
foreach? end >& /tmp/hoge

とかやってみるといかにも動作が怪しい…
ni...@ics.nara-wu.ac.jp

Kawaguti Ginga

unread,
May 17, 2004, 7:30:39 AM5/17/04
to
川口です

<0405162049...@hayabusa.ics.nara-wu.ac.jp>の記事において
ni...@ics.nara-wu.ac.jpさんは書きました。


> > one liner というのは "一行程度で済むだろ" という
> > ことを言うときに意味があるだけで普段1行に納めなければと
> > 必死に考える必要はないんじゃないでしょうか?
>
> ワンライナーにしたい時、その理由は「短く済ませたい」であることもありま
> すけど、「他の作業の部品として使える1つの構文に収めたい」であることもあ
> りますよね。今回のお題をshで for … done で済ませることには、そういう利
> 点もあると思うわけです。for … done 2> /tmp/hoge とか、for … done 2>&1
> | fuga とかできますからね。同じことがcshでできないのが、cshで基本的に辛
> いことの1つ。試しに手元で

なるほど.sh (zshも)の for ... は,
私は "one line" とは思っていなかった(";" で切った複数行ですよね)ので,
そもそもそういうのがでてきている時点で one line の議論になってない,
と思ったのですが,csh's foreach との比較においてはそういう意味も
あったんですね.

あまりにも当然と思って気づきませんでした.

(そういや,python だと インデントベースの構文なので
これもまた one line に出来ない言語ですね)

NAKAMURA Kazushi

unread,
May 17, 2004, 10:46:38 AM5/17/04
to
中村和志@神戸です。

In article <0405162049...@hayabusa.ics.nara-wu.ac.jp>


ni...@ics.nara-wu.ac.jp writes:
>> one liner というのは "一行程度で済むだろ" という
>> ことを言うときに意味があるだけで普段1行に納めなければと
>> 必死に考える必要はないんじゃないでしょうか?
>
> ワンライナーにしたい時、その理由は「短く済ませたい」であることもありま
>すけど、「他の作業の部品として使える1つの構文に収めたい」であることもあ
>りますよね。今回のお題をshで for … done で済ませることには、そういう利
>点もあると思うわけです。for … done 2> /tmp/hoge とか、for … done 2>&1
>| fuga とかできますからね。同じことがcshでできないのが、cshで基本的に辛
>いことの1つ。試しに手元で
>
> % foreach i (a b c)
> foreach? ls $i
> foreach? end >& /tmp/hoge
>
>とかやってみるといかにも動作が怪しい…

そうです。他にも、シェルのヒストリや行編集機能を使うのに困ります。
今回の例も、実際には-resizeだけでなく、圧縮の-qualityやら、
-unasharp #x# とか、コンポジットで重ねたり…というのをパラメータを
変えて試行錯誤を繰り返すのですが、"foreach? "の中では前回のforeach
の内容をヒストリで呼び出して、編集して…というのが出来ないので。

sh(ash)でfor i in ...だと1 linerに出来る代わりに、$i:rを`basename ...`
とfork&execしないといけないのがカッタルくて。最近のデジカメは画素数が
多過ぎて、メモリが4GBくらい欲しくなる状況なので、少しでも効率良く
処理したいのでした。Fuji S2Proをdcrawで現像処理すると2千万画素に
なってしまう。

結果として、しらいさんの ${i%.*}で上手くいきました。感謝。

Kawaguti Ginga

unread,
May 17, 2004, 8:42:59 PM5/17/04
to
川口です

ま,脱線なんですけどね

<0405172346...@ns.kobe1995.net>の記事において
k...@kobe1995.netさんは書きました。
> そうです。他にも、シェルのヒストリや行編集機能を使うのに困ります。

そこで
<0405161056...@athena.ginganet.org>:


> (zsh なら history search でも複数行呼び返せます)

なのですよ.

IWAMOTO, Kouichi

unread,
May 18, 2004, 2:02:08 AM5/18/04
to
岩本といいます。

本題ではない所への反応ですが、

<0405152317...@ns.kobe1995.net>の記事において
k...@kobe1995.netさんは書きました。

>デジカメ画像をまとめて変換したい時、
>
>% foreach i (*.jpg *.tif *.ppm)
>> convert -resize 750x500 $i $i:r.jpeg
>> end

複数のファイルに対してconvertを実行したい時は、mogrifyが便利です。
上記の例の場合、以下のようにします。

% mogrify -format jpeg -resize 750x500 *.jpg *.tif *.ppm

--
いわもと こういち(doda...@iwmt.org)
# なるようになれ、明日もイケイケ♪

0 new messages