5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

シェルスクリプト総合 その4

1 :名無しさん@お腹いっぱい。:2005/11/03(木) 23:01:41
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-5くらい)をご覧ください。


□お約束
・特記なき場合はbourne shがデフォルトです。
 bash/csh/tcsh/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashなので特に注意。
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。

2 :名無しさん@お腹いっぱい。:2005/11/03(木) 23:04:05
□前スレや過去スレ:
シェルスクリプト総合 その3
http://pc8.2ch.net/test/read.cgi/unix/1124889646
シェルスクリプト総合 その2
http://pc8.2ch.net/test/read.cgi/unix/1113664637/
シェルスクリプト総合 その1
http://pc8.2ch.net/test/read.cgi/unix/1101820646/
☆シェルスクリプトを勉強するにあたって☆
http://pc8.2ch.net/test/read.cgi/unix/989659936/
便利なシェルスクリプト見せろ
http://pc8.2ch.net/test/read.cgi/unix/996949546/
【貝】第1回シェル講座【殻】
http://fun.kz/test/read.cgi/unix/1016372780/

□関連スレ:
sed
http://pc8.2ch.net/test/read.cgi/unix/1085730992/
正規表現
http://pc8.2ch.net/test/read.cgi/unix/1039165754/
おまえら! shell は何を使っているんですか?
http://pc8.2ch.net/test/read.cgi/unix/1012330865/
Eshell の使い方とか設定とか【Emacs Shell、Lisp】
http://pc8.2ch.net/test/read.cgi/unix/1102921590/

□他板の関連スレ:
【sed】シェルスクリプト総合@LINUX【awk】
http://pc8.2ch.net/test/read.cgi/linux/1121994321
【Shell】どのシェル使ってる?【Script】
http://pc8.2ch.net/test/read.cgi/linux/1067330754/

3 :名無しさん@お腹いっぱい。:2005/11/03(木) 23:05:29
□初心者向けリンク
「誰にでも」シリーズ
ttp://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/publications/dareUni/
/bin/shプログラミング入門
ttp://freebooks.info.nara-k.ac.jp/archive/ShellProgramming/
シェルを使おう - 導入からプログラミングまで -
ttp://www.netfort.gr.jp/~tomokuni/lms/shell/text/

□入門者向け書籍:
プロフェショナルシェルプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4756116329/
入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界
http://www.amazon.co.jp/exec/obidos/ASIN/4797321946/
UNIXシェルプログラミング徹底解説
http://www.amazon.co.jp/exec/obidos/ASIN/4822280489/
入門Kornシェル
http://www.amazon.co.jp/exec/obidos/ASIN/4873110149/
入門bash
http://www.amazon.co.jp/exec/obidos/ASIN/4900900788/

4 :名無しさん@お腹いっぱい。:2005/11/03(木) 23:06:01
□参考リンク:
UNIXの部屋 (沢山のコマンドの簡単な紹介など)
http://x68000.q-e-d.net/~68user/unix/
POSIX: Shell & Utilities (標準規格)
http://www.opengroup.org/onlinepubs/009695399/utilities/contents.html

□関連書籍と関連リンク:
FreeBSD Hypertext Man Pages
http://www.freebsd.org/cgi/man.cgi
Linux JF (Japanese FAQ) Project.
http://www.linux.or.jp/JF/
Unix Programming Frequently Asked Questions 日本語訳
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_toc.html
UNIXプログラミング環境
http://www.amazon.co.jp/exec/obidos/ASIN/4871483517/

5 :名無しさん@お腹いっぱい。:2005/11/03(木) 23:12:27
□人間初心者へのお願い:
・このスレはシェルスクリプトについてのスレです。
 シェルの対話的な利用についての話やスクリプトと関係ないコマンドの
 使い方の質問などはスレ違いなので無用に願います。


6 :名無しさん@お腹いっぱい。:2005/11/04(金) 07:00:25
□シェルスクリプトでよく使うコマンド:
制御・条件判定系:
[,test,expr,true,false,yes,getopts

テキスト処理系:
cat,awk,sed,tr,sort,uniq,grep,wc,head,tail,cut,paste,comm,join

ファイル名・ディレクトリ系:
find,xargs,basename,dirname

出力系:
echo,printf

対話コマンド制御系:
expect

http/ftpの処理自動化:
wget,curl

7 :名無しさん@お腹いっぱい。:2005/11/04(金) 07:11:24
shellscript の中で perl 使うのはありですか?

8 :名無しさん@お腹いっぱい。:2005/11/04(金) 07:13:52
スクリプト本の出版ラッシュらしい・・
Linux 推薦図書/必読書/推薦雑誌/推薦HP
http://pc8.2ch.net/test/read.cgi/linux/1065059126/545
よりコピペ

(2004/03) UNIXシェルスクリプトハンドブック 関根 達夫 (著)
http://amazon.co.jp/o/ASIN/4797326522/
(2004/10) UNIXシェルスクリプト逆引き大全333の極意 中橋 一朗 (著)
http://amazon.co.jp/o/ASIN/4798008842/
(2004/11) 仕事に使えるLinuxシェルスクリプト 千葉 真人 (著)
http://amazon.co.jp/o/ASIN/4822282090/
(2004/12) UNIXシェルスクリプトサンプルブック デイブ・テイラー (著)
http://amazon.co.jp/o/ASIN/4797327286/
(2005/02) シェルスクリプト基本リファレンス 山森 丈範 (著)
http://amazon.co.jp/o/ASIN/4774122610/
(2005/04) LinuxWorldスクリプト 月刊リナックス・ワールド総集編 月刊LinuxWorld特別 (著)
http://amazon.co.jp/o/ASIN/4872802349/
(2005/05) UNIXシェルスクリプトコマンドブック 山下 哲典 (著)
http://amazon.co.jp/o/ASIN/4797330635/
(2005/05) わかる&使える UNIX基礎講座 シェルスクリプト編 中井 獏 (著)
http://amazon.co.jp/o/ASIN/4774123625/
(2005/07) UNIX シェルスクリプト辞典 川井 義治 (著)
http://amazon.co.jp/o/ASIN/4798109231/

9 :名無しさん@お腹いっぱい。:2005/11/04(金) 13:22:35
sudo
でぐぐったら、須藤元気が出てきてワラタ

10 :名無しさん@お腹いっぱい。:2005/11/04(金) 13:34:40
じゃなくて、シェルスクリプトの中で、
あるユーザのホームディレクトリを取得したかったんです。

sudo -u username echo $HOME
としてみました。そしたらrootのディレクトリ教えてくれました・・・

さらに

finger username | grep Directory: | sed "s/ *Shell:.*//" | sed "s/^Directory: //"
もやってみましたが、fingerが入っている必要があるのと、
出力フォーマットに依存するので汎用的じゃないなと・・・

どなたか知恵をお願いします。

11 :名無しさん@お腹いっぱい。:2005/11/04(金) 14:14:26
>sudo -u username echo $HOME

sudo の前に $HOME が展開されとるんじゃねーの?

新しめの sh なら echo ~username でどぞ。
これがうまくいかない古い sh ならば、
csh -c 'echo ~username' で。ksh でもいいけど。


12 :名無しさん@お腹いっぱい。:2005/11/04(金) 14:23:43
>>11
サンクス!

echo ~username
でさらっといけました。
これを使いたいと思います。

ただ、、、sudo の変数、を後に展開させる方法ってあるのでしょうか?

13 :名無しさん@お腹いっぱい。:2005/11/04(金) 14:56:52
あうあ・・・・・・

homedir=`echo ~$username`

$username が後に展開されてしまって。。。。

14 :名無しさん@お腹いっぱい。:2005/11/04(金) 15:12:19
>>13
そういう場合は evalを使う。

username=guest
homedir=`eval echo ~$username`

15 :名無しさん@お腹いっぱい。:2005/11/04(金) 15:19:16
「[」が外部コマンドの場合、内部コマンドで書き換えるとしたら
どういう方法がありますか?

16 :名無しさん@お腹いっぱい。:2005/11/04(金) 15:25:56
>>14
ありがとうございます。
うまくいきました。
シェルは奥が深い・・・

17 :15:2005/11/04(金) 15:30:03
現用のOSで使えるものをお願いします。

18 :名無しさん@お腹いっぱい。:2005/11/04(金) 15:35:32
>>15
がいしゅつだと思うが・・
まあ、新スレ始めだから書いとくけど、

文字列の比較なら case文で代用。
test -f fileなら、
: < file 2> /dev/null
で代用できる。

19 :名無しさん@お腹いっぱい。:2005/11/04(金) 21:11:44
それrビットが落ちてても成功するの?

20 :名無しさん@お腹いっぱい。:2005/11/04(金) 21:33:31
>>19
あくまで「代用」だからこれで桶だろ。
test -f fileを、それに近いtest -r fileで代用し、
それなら < file で代用できるというハナシだろ。

そもそも [ が外部などという、今ではあり得ない仮定のもとに話しても無駄。

21 :名無しさん@お腹いっぱい。:2005/11/04(金) 22:11:24
>>18
それってヌルコマンド必要なのか
俺は単にファイル作りたいときとか、touchとか使わんで単に
$ >file
とかよくやるんだが、これって昔のbourne shellでは動かない?

22 :名無しさん@お腹いっぱい。:2005/11/04(金) 23:36:29
>>21
: は(古いshでも)必要ないけど、ここではわかりやすいように書いてるだけだろ。
「> file」はよくやるけど「< file」は普通はやらない。

あと、
$ < input sed 's/hoge/hage/' > output
みたいな書き方もできるけど、人に説明する時こう書くと混乱するので、
$ sed 's/hoge/hage/' < input > output
と書くみたいなモンだろな。

23 :名無しさん@お腹いっぱい。:2005/11/04(金) 23:38:12
>>14
echoが無駄だよ。それに ` ` も無駄。

username=guest
eval homedir=~$username

だけでOK。

24 :名無しさん@お腹いっぱい。:2005/11/04(金) 23:39:34
data1.dat data2.dat data3.dat ...といくつかあるファイルをprogram1で加工して、
できあがった file1.dat file2.dat ...をprogram2でさらに加工したいです。

for i in 1 2 3 4   #※過程1
do
./program1 data${i}.dat
done

for j in 1 2 3 4 5  #※過程2
do
./program2 file${j}.dat
done

とすれば事は済むのですが、過程1と過程2の中で、program1、program2は
並行して実行しても問題ないので、できれば並行して実行したいです(CPUが複数個あるため)。
過程1で並列実行、過程1が終わったら、過程2を並列実行するような方法てありませんか?

25 :名無しさん@お腹いっぱい。:2005/11/04(金) 23:41:13
>>22
そうか? 俺はいつも↓こう書いてるな。カッコいいだろ。
< input > output sed 's/hoge/hage/'

26 :名無しさん@お腹いっぱい。:2005/11/04(金) 23:44:29
>>24


for i in 1 2 3 4   #※過程1
do
./program1 data${i}.dat &
done

wait # 過程1すべてを待つ

for j in 1 2 3 4 5  #※過程2
do
./program2 file${j}.dat &
done

でいいんでないの?

27 :名無しさん@お腹いっぱい。:2005/11/04(金) 23:47:46
>>24

質問の意味が曖昧だけど、

for i in 1 2 3 4
do
{ ./program1 data${i}.dat; ./program2 file${i}.dat; } &
done

としたいということである可能性もあるな。

28 :名無しさん@お腹いっぱい。:2005/11/05(土) 02:14:57
>>26
たぶんそれでできそうです。waitコマンドってのがあるのですね。

>>27
わかりづらくてすみません。

./program1 に data1.dat data2.dat data3.dat data4.dat

を処理させて、これが全部終わったら

./program2 に file1.dat file2.dat file3.dat file4.dat file5.dat

とやりたいのです。data1とfile1は1対1に対応しないので、待つ必要があります。

29 :名無しさん@お腹いっぱい。:2005/11/05(土) 15:01:22
>>20
> そもそも [ が外部などという、今ではあり得ない仮定のもとに話しても無駄。
Minixの最新版では外部コマンドだよ

30 :名無しさん@お腹いっぱい。:2005/11/05(土) 18:23:03
>>29
そもそもMinixなどという、今ではあり得ないOSの話をしても無駄。

Minix厨よ、君のネタはもう飽きたから、よそへ行ってくれ。
↓とか。
MINIXを実用的にしよう。
http://pc8.2ch.net/test/read.cgi/os/995207452/l50

31 :名無しさん@お腹いっぱい。:2005/11/05(土) 18:46:32
あり得ない〜は無駄厨もよそへ行ってやってくれ。


32 :名無しさん@お腹いっぱい。:2005/11/05(土) 19:02:27
OS依存じゃなくてshell依存だ

内部コマンドにこだわるのは
外部コマンドを使えないパラノイアなのか
それとも遊びたいだけなのか
っていつも気になる

33 :名無しさん@お腹いっぱい。:2005/11/05(土) 22:04:24
この前シェルスクリプトを書いた時、
うっかり #!/bin/sh を書き忘れたんですが、
それでも動いてしまいました。
これってバグでしょうか? それともシェル依存の現象でしょうか?
そもそも、#!/bin/sh と書く必要あるのでしょうか?
これってコメントアウトされてますよね?

34 :名無しさん@お腹いっぱい。:2005/11/05(土) 22:29:17
>>33
shebangでぐぐれ。
#で始まっている行だから、インタプリタ(この場合はシェル)にとっては
ただのコメント行で、kernelにとっては先頭の#!が実行ファイルを
識別するためのマジックナンバーになっている。

shebangが無いスクリプトを実行しようとした場合、kernelはENOEXECエラーを
シェルに返す。ではなぜそれが実行されるかというと、あんたが使っている
シェルが、ENOEXECが返されたとき、自分でそれをスクリプトとして
実行するように作られているからだ。

35 :名無しさん@お腹いっぱい。:2005/11/06(日) 00:53:02
>>33
>そもそも、#!/bin/sh と書く必要あるのでしょうか?

試しにシェルスクリプトに
#!/usr/bin/env perl とか #! /usr/bin/env cat とか
色々入れて実行してみな。

36 :名無しさん@お腹いっぱい。:2005/11/06(日) 02:02:36
>>30
いまどきPOSIXも知らない貴様こそ死んでください。

37 :名無しさん@お腹いっぱい。:2005/11/06(日) 09:27:34
>>35
欲嫁。
perlの話じゃなくて、/bin/shの場合の話だろ。

38 :名無しさん@お腹いっぱい。:2005/11/06(日) 15:27:42
冒頭数バイトのマジックなんとかがないと
カーネルが自動的に /bin/sh に渡すわけ?

39 :名無しさん@お腹いっぱい。:2005/11/06(日) 17:07:39
>>38
>>34に一応書いたつもりだが。

まずシェルは、コマンド名が与えられた場合、それがバイナリの実行ファイルか
スクリプトかは考えずに、それ自体をexecしようとする。
execで与えられたファイルのマジックナンバーが正しくない場合、つまり
アーキテクチャで実行可能なバイナリイメージ(ELFだとかa.outだとか)のもの
でなくて、#!でもない場合は、「kernelは」実行を拒否る。
kernelに実行を拒否られた場合、「シェルが」シェルスクリプトとして
実行しようとする。要するに、
スクリプト自体をexecするのではなく、
/bin/shをexecし、引数として渡す。

一方、マジックナンバーが#!の場合は、「kernelが」
#!の後で指定されているインタプリタを起動する。


40 :38:2005/11/06(日) 17:23:41
>>39
ごめん >>34 を読み飛ばしてた。
すごくよくわかった。サンクス。

41 :名無しさん@お腹いっぱい。:2005/11/06(日) 17:33:31
>>37
そっちこそ欲嫁。

シェルスクリプトの一行目に #! /bin/sh 以外の
コマンドを書いたらどうなるか試してみろという意味だ。


42 :名無しさん@お腹いっぱい。:2005/11/06(日) 17:37:54
> 欲嫁

むしょうに腹が立ったのはなぜだろう (;´Д⊂)

43 :名無しさん@お腹いっぱい。:2005/11/06(日) 18:18:02
shbangで始まっていない場合、 csh/tcshは、shと異なる動作をするので注意が必要。
1行目が # で始まっていれば csh スクリプトとして実行しようとし、
それ以外ならば sh スクリプトとして実行しようとする。

#!/bin/sh と書くつもりで、 #/bin/sh などと書いていると、
ログインシェルがtcshな人が使うと動かないスクリプトができあがる。


44 :名無しさん@お腹いっぱい。:2005/11/06(日) 18:19:12
s/shbang/shebang/


45 :名無しさん@お腹いっぱい。:2005/11/06(日) 18:54:52
数字じゃなくてもマジックナンバーって言うのは、UNIXではフツーのこと?
「それを書くと何か特別な作用がある文字列」=マジックナンバー
という解釈で合ってるかな?


46 :名無しさん@お腹いっぱい。:2005/11/06(日) 19:13:25
http://www.catb.org/~esr/jargon/html/M/magic-number.html

47 :33:2005/11/06(日) 20:48:04
皆さんありがとうございました。
#! がなくても/bin/shが起動するのはシェルの挙動だったのですね。

>>35 >>41
それは知ってますよ(苦笑)。
env経由で起動させてPATHから探させる技とかも含めてね。

48 :名無しさん@お腹いっぱい。:2005/11/07(月) 00:52:23
>>39
FreeBSDってそんなうんこ実装してるのか?
さすがだ。

49 :名無しさん@お腹いっぱい。:2005/11/07(月) 01:09:29
>>48
どこから"FreeBSD"って言葉が出てきたのか知りたい。

50 :名無しさん@お腹いっぱい。:2005/11/07(月) 01:10:28
通はWindowsに限りますな。

51 :名無しさん@お腹いっぱい。:2005/11/08(火) 01:15:42
>>49
うんこみたいな実装はFreeBSDに決まっているから

52 :名無しさん@お腹いっぱい。:2005/11/08(火) 01:19:21
□人間初心者へのお願い:
・OSの良し悪しはスレ違い


53 :名無しさん@お腹いっぱい。:2005/11/08(火) 11:09:40
でも、Linuxさんはもーっとうんこです。

54 :名無しさん@お腹いっぱい。:2005/11/08(火) 19:33:37
くさすのもいいが、せめてもっとマシな実装例とそのOSを示せよ

55 :名無しさん@お腹いっぱい。:2005/11/08(火) 21:24:16
Windowsは>>39のようなうんこ実装はしてないよ

56 :名無しさん@お腹いっぱい。:2005/11/08(火) 21:49:49
Windowsはどんなうんこですか?

57 :名無しさん@お腹いっぱい。:2005/11/08(火) 21:56:01
ノーエアーうんこ

58 :名無しさん@お腹いっぱい。:2005/11/08(火) 23:34:40
うんこ、かっこわるい。 ( by 前園

59 :名無しさん@お腹いっぱい。:2005/11/09(水) 11:49:48
grep -f file.txt
のコマンドでどうも欲しい結果が得られないのでなんでかなと思って調べたら
file.txtの中身に「*」が含まれてたのが原因でした。
なにか良い対策方法がありましたら教えてください。

60 :名無しさん@お腹いっぱい。:2005/11/09(水) 11:56:44
シェルスクリプトと何の関係もないが、fgrep(1)

61 :名無しさん@お腹いっぱい。:2005/11/09(水) 11:57:35
>>59
fgrepを使う。
fgrepなら*などが正規表現じゃなく、単なる文字として解釈される。


62 :59:2005/11/09(水) 12:20:49
>>60
>>61
サンクス!!

63 :名無しさん@お腹いっぱい。:2005/11/09(水) 19:27:20
スレ違いかも知れないですけど教えてください。

[TEST.ksh]
#! /bin/ksh
while true
do
echo `ps -ef | grep TEST.ksh | grep -v grep | grep -v more | grep -v view | grep -v vi | grep -v cat`
sleep 2
done

こんなシェルを流すと・・・

# TEST.ksh
root 20624 19170 0 17:58:09 pts/0 0:00 /bin/ksh TEST.ksh
root 10854 20624 0 17:58:36 pts/0 0:00 /bin/ksh TEST.ksh root 20624 19170 0 17:58:09 pts/0 0:00 /bin/ksh TEST.ksh
root 20624 19170 0 17:58:09 pts/0 0:00 /bin/ksh TEST.ksh
root 10862 20624 0 17:58:40 pts/0 0:00 /bin/ksh TEST.ksh root 20624 19170 0 17:58:09 pts/0 0:00 /bin/ksh TEST.ksh
root 20624 19170 0 17:58:09 pts/0 0:00 /bin/ksh TEST.ksh
root 20624 19170 0 17:58:09 pts/0 0:00 /bin/ksh TEST.ksh

2秒毎に1行づつ結果が出てくるんですけど、
結果の2行目とか4行目とかみたいに、たまに TEST.ksh を2つ検出してしまうのはなぜなんでしょう?
もちろんTEST.kshを2つ動かしてる訳じゃないです。

タイミングとかによるのかな・・・

64 :名無しさん@お腹いっぱい。:2005/11/09(水) 23:17:53
・シェルスクリプトのことをシェルってゆーな


65 :名無しさん@お腹いっぱい。:2005/11/09(水) 23:40:58
ヒント:ppid

66 :名無しさん@お腹いっぱい。:2005/11/10(木) 02:05:07
>>63
FreeBSDを使っているとそうなる。別のOSを使ってください。

67 :名無しさん@お腹いっぱい。:2005/11/10(木) 04:57:00
>>63
> echo `ps -ef | grep TEST.ksh | grep -v grep | grep -v more | grep -v view | grep -v vi | grep -v cat`
(...)
> もちろんTEST.kshを2つ動かしてる訳じゃないです。

backquoteの中はサブシェルで動くから、kshのプロセスは2つでしょ。
そうすると、シェルがforkしてサブシェル作るときにargvをわざわざ
変更しなければそうなるのは自然じゃないかと思うけど。


68 :名無しさん@お腹いっぱい。:2005/11/10(木) 04:58:19
>>65
ごめんなさい。わからないです。
上の例で言うとPIDが 20624 が自分のTEST.kshだというのはわかりますけど
PPID が20624となってるTEST.kshがなぜ生まれるのでしょうか?

>>66
FreeBSDじゃないです。AIXです

69 :名無しさん@お腹いっぱい。:2005/11/10(木) 05:06:49
>>67
なるほど、ありがとうございます
backquoteの部分は内部的にはもう一つプロセスを作ってそこで処理してるって事なんですね

> argvをわざわざ変更しなければ・・・
この辺はどうやればいいのかわからないのでちょっと調べてみます。

正直言うと、簡単な自シェルスクリプトの二重起動防止を作りたかったんですけど
排他ファイルを書き出す方法だと、シェルスクリプトが途中で落ちたときにファイルが残ってしまい困るし
psで検出すると上のように2行検出してしまう事があるし、どうしたものかと思ってた次第です。

もう少しいろいろと調べてみます。

70 :名無しさん@お腹いっぱい。:2005/11/10(木) 05:25:54
>排他ファイルを書き出す方法だと、シェルスクリプトが途中で落ちたときにファイルが残ってしまい困るし


trap

71 :名無しさん@お腹いっぱい。:2005/11/10(木) 05:27:11
>>69
lockf()あたりを利用することを勧める。lockf()によるロックはプロセスが
死ねば解除されるので、ゴミ掃除の問題は無い。

話題のw FreeBSDにはlockf(1)というコマンドがあるが、無ければ無いで
似たようなものを作るのは簡単だ。
lockf()をF_TLOCK指定で実行→成功したら引数で与えられたプログラムを
execvp()するだけのプログラムを書き、それ経由で実行するようにする。
Cで書いてもいいし、より手軽にPerlなどで書いてもいいだろう。

72 :名無しさん@お腹いっぱい。:2005/11/10(木) 05:27:50
>>70
kill -KILL

73 :名無しさん@お腹いっぱい。:2005/11/10(木) 05:52:18
>>70
こう書かれると何がマズイのか良くわからないんですが・・・
排他といっても
「ここにこのファイルがある時はTEST.kshが動いてる証拠ですよ」
くらいの処理しか考えてなかったのですが・・・

>>71
助言ありがとうございます。
lockf(1)があればOKだけど、なければCか何かで書いて作るって事ですね
うーん、お手軽にシェルスクリプトとコマンドだけでは作れないって事ですか・・・

74 :名無しさん@お腹いっぱい。:2005/11/10(木) 16:44:07
lockf ってクローズ(つまりプログラム終了でも)でロックが解除されるから
外部コマンドには出来ないんだよね
FreeBSDのはシェル組み込みなのか?

75 :74:2005/11/10(木) 16:52:51
ググったら分かった
lockfコマンドの中で自分のコマンドを動かすのか
こりゃいいアイデアだ

76 :名無しさん@お腹いっぱい。:2005/11/11(金) 02:08:20
>>74
だ〜か〜ら〜 FreeBSDは糞実装だから真面目に考えちゃだめだってば。
実際なぜFreeBSDがUnix like OSだと名乗る資格があるか疑問だ。

77 :名無しさん@お腹いっぱい。:2005/11/11(金) 08:00:09
ついこないだまではNetBSD、FreeBSDとl足並みを揃えてたりしてたのに、
カーネルが糞とまで言われるようになってるとは、、、FreeBSD何したん?

78 :名無しさん@お腹いっぱい。:2005/11/11(金) 09:43:19
何もしてないよ。
わけわからんイチャモンをつけるアホがいるだけ。

79 :名無しさん@お腹いっぱい。:2005/11/11(金) 10:25:26
>>76の脳が糞実装なのは衆目の一致するところだ。

80 :名無しさん@お腹いっぱい。:2005/11/11(金) 10:36:44
>>76
かわいそう

81 :名無しさん@お腹いっぱい。:2005/11/11(金) 11:00:51
>>76
と目をあわせると伝染るよ

82 :名無しさん@お腹いっぱい。:2005/11/11(金) 13:06:47
糞実装だと言われて糞実装じゃない証拠を提示できないということは
つまり糞実装だという点については皆さん同意ってことですな。

#簡単なやつらだ

83 :名無しさん@お腹いっぱい。:2005/11/11(金) 13:16:12
>>82
何に対して糞実装って言ってるんだ?


84 :名無しさん@お腹いっぱい。:2005/11/11(金) 13:50:50
>>82
そもそもどこがどう糞実装なのか示せないということは
つまり糞実装ではないということですな。

85 :名無しさん@お腹いっぱい。:2005/11/11(金) 16:35:25
>>82
かわいそう

86 :名無しさん@お腹いっぱい。:2005/11/11(金) 17:02:28
おまえらスレタイ100回嫁

87 :名無しさん@お腹いっぱい。:2005/11/11(金) 18:08:25
ずいぶん昔に、ゴミ箱スクリプト書いたかた居たかと思ったのですが、
そのときのソース揚げてもらえませんか?

88 :名無しさん@お腹いっぱい。:2005/11/11(金) 23:26:29
>>87
rm を どっかにmv するようにラップするだけじゃないの?

89 :名無しさん@お腹いっぱい。:2005/11/12(土) 00:03:31
>>87
このスレのどこかにあった気がする。

root で rm -rf /
http://pc8.2ch.net/test/read.cgi/unix/1015160064/


90 :名無しさん@お腹いっぱい。:2005/11/12(土) 01:54:23
>>83-85
糞実装だと言われて糞実装じゃない証拠を提示できないということは
つまり糞実装だという点については皆さん同意ってことですな。

お疲れさん。よくできました。

91 :名無しさん@お腹いっぱい。:2005/11/12(土) 02:02:10
と、ペンギンが騒いでいます。

92 :名無しさん@お腹いっぱい。:2005/11/12(土) 07:45:42
いいかげんにしろ。

93 :名無しさん@お腹いっぱい。:2005/11/12(土) 08:02:17
糞実装とは具体的に何を指すのかを説明しないと反論のしようがない
ってこともわからないのではアホとしか言いようがない。


94 :名無しさん@お腹いっぱい。:2005/11/12(土) 08:10:38
OpenBSDスレとレスのタイミングが近いな。

95 :名無しさん@お腹いっぱい。:2005/11/12(土) 09:48:06
bシェルですが
insert into sample values ( ${i} )
go

のようなイメージでインサート文作りたいのですが
()の表現が上手くできません。
括弧を文字として扱う方法を教えていただきたいのですが。
宜しくお願いします。

96 :名無しさん@お腹いっぱい。:2005/11/12(土) 12:26:30
>>95
質問が不明確だね。

i=hoge
echo insert into sample values \( ${i} \)

ということをやりたいのかな?

97 :名無しさん@お腹いっぱい。:2005/11/12(土) 13:47:08
>>93
過去レス読めよ

98 :名無しさん@お腹いっぱい。:2005/11/12(土) 16:04:10
文字列を空白で分割したときに、いくつのブロックに分割されるかシェルのコマンドで調べるには
どうすればできますか?

たとえば、

$ CMD "foo bar"
2

$ CMD "foo"
1

$ CMD "foo bar hoge"
3

のような感じです。パイプとかを使うのはまったく問題ありません。
よろしくお願いします。

99 :名無しさん@お腹いっぱい。:2005/11/12(土) 16:17:46
str="foo bar hoge"
set -- $str
echo $#


100 :名無しさん@お腹いっぱい。:2005/11/12(土) 17:23:06
wc じゃあかんのか?

101 :名無しさん@お腹いっぱい。:2005/11/12(土) 18:22:39
korn shellでdateで現在の日付を取得して

その日付の数ヵ月後、数年後などを出す

ものはありますか?-vは使えませんでした。

102 :名無しさん@お腹いっぱい。:2005/11/12(土) 18:32:16
>>101
http://pc8.2ch.net/test/read.cgi/unix/1131541664/13

103 :名無しさん@お腹いっぱい。:2005/11/12(土) 18:41:12
質問です。シェルスクリプトの中でPerlを使う際に、
シェルスクリプトで値を入れた変数を渡すにはどうしたらいいのでしょうか?
アホな質問ですが、よろしくお願いします。

■失敗したスクリプト
#!/bin/sh

pageurl="http://hogehoge.com/img/"
curl "$pageurl" | perl -wne 'm/href=.([^>]+.jpg)/;print $pageurl$1;'

※Perlのスクリプトの中の$pageurlの値が定義されてないというエラーになる。

104 :名無しさん@お腹いっぱい。:2005/11/12(土) 18:50:29
> curl "$pageurl" | perl -wne "m/href=.([^>]+.jpg)/;print \"$pageurl\$1\";"

105 :名無しさん@お腹いっぱい。:2005/11/12(土) 18:57:15
>>104
早速のレスありがとうございます!
あー。そうか。クォートの問題なんですね。エスケープをどうするか考えないといけないのか。
早速試してみます!ありがとうございました!

106 :名無しさん@お腹いっぱい。:2005/11/13(日) 00:37:32
>>104
お前、つまんない。

107 :名無しさん@お腹いっぱい。:2005/11/13(日) 01:02:39
bashで、プロセス名から、プロセスIDだけを取り出して、
それをkillするには、どうすればいいですか?


108 :名無しさん@お腹いっぱい。:2005/11/13(日) 01:23:11
スクリプト書くより pkill を使うといい。
あれば。

109 :名無しさん@お腹いっぱい。:2005/11/13(日) 02:27:52
>>107 こんな感じ?
ps ax | grep [p]rocess | cut -d ' ' -f 1 | xargs kill


110 :名無しさん@お腹いっぱい。:2005/11/13(日) 03:49:11
>>109
2点

111 :名無しさん@お腹いっぱい。:2005/11/13(日) 03:50:56
>>109
grep 自身のプロセスを引っ掛けてしまうのでは?

112 :名無しさん@お腹いっぱい。:2005/11/13(日) 07:24:17
>>111
やってみ。

113 :名無しさん@お腹いっぱい。:2005/11/13(日) 08:57:18
>>109
grep自身は引っかけないが、コマンド名と同じ文字列を引数などに含む
別コマンドが引っかかる可能性があるし、かなり無駄で不確実な方法だな。

114 :名無しさん@お腹いっぱい。:2005/11/13(日) 09:44:41
>>111
もう気が付いてるかも知れんが、
「grep [p]rocess」は、シェル展開で「grep process」を実行することになる。
一方、ps axの出力で該grepプロセスは、「grep [p]rocess」を含む行として表われるから、
ヒットしない。


115 :名無しさん@お腹いっぱい。:2005/11/13(日) 10:46:18
banner grepとかは即死じゃん

116 :名無しさん@お腹いっぱい。:2005/11/13(日) 11:19:46
>>114
ちがうよ。 [p]rocess はシェルでは展開されず、
[p]rocessのままgrepに渡される。
grepは[p]rocessを正規表現と解釈するからprocessとして検索する。
その結果、やはりprocessという文字列を引数に含むコマンドがあると、
それが引っかかって誤ってkillされてしまう。

117 :名無しさん@お腹いっぱい。:2005/11/13(日) 11:51:31
[p]rocess はシェルで展開されて process という名前のファイルがあればそれを返す。
なければ [p]rocess という文字列が返る。
'[p]rocess' だと展開されない。


118 :名無しさん@お腹いっぱい。:2005/11/13(日) 11:53:33
>>109,114,116
. に process がある場合と無い場合で振る舞いかわらんか?


119 :名無しさん@お腹いっぱい。:2005/11/13(日) 11:53:37
まだまだ青いな坊や。
カレントディレクトリにprocessというエントリがあるとシェルが展開する。

120 :名無しさん@お腹いっぱい。:2005/11/13(日) 11:55:05
そういうことだ。
カレントディレクトリに”process”が無ければ、だな。


121 :名無しさん@お腹いっぱい。:2005/11/13(日) 12:02:16
>>109
grep [p]rocess などというのは旧世代のバッドノウハウ。
若いモンから「どうしてpkill使わないんですか?」と言われる前に、
古いやり方は忘れた方がいい。
無罪のプロセスが誤killされることに変わりないのだから。

122 :名無しさん@お腹いっぱい。:2005/11/13(日) 12:36:10
無罪の -> 無実の

123 :名無しさん@お腹いっぱい。:2005/11/13(日) 12:41:49
pkillがどのバージョンから使えるか憶えるくらいならpsの
出力を正しくパースするほうが楽。

124 :名無しさん@お腹いっぱい。:2005/11/13(日) 12:46:22
>>123
じゃ、正しくパースしてみろよ。
>>109 だと正しくないからね。

125 :名無しさん@お腹いっぱい。:2005/11/13(日) 12:59:08
`parse' は「パーズ」じゃね?

126 :府中の怪人:2005/11/13(日) 13:04:36
確かになかなかよい方法が浮かびませんね。

1. pkill,pgrep,killall,pidof などを使用する。
2. /proc 以下を調べる。
3. デーモンなら /var/run/pid とかにあらかじめ pid を記録しておく。
4. ps -o "pid,command" として grep "^[c]ommand" で絞る。


127 :名無しさん@お腹いっぱい。:2005/11/13(日) 13:10:07
>>125
辞書の発音記号だと、
(英)[pa:rz]
(米)[pa:rs]
だから、パースでもイイよん。

128 :名無しさん@お腹いっぱい。:2005/11/13(日) 13:47:53
>>124
何ムキになってんの?
ps x |awk '{ if ($5 == "command") {print $1}}'

129 :名無しさん@お腹いっぱい。:2005/11/13(日) 13:58:05
>>128
不正解。
コマンド名がフルパスだったりすると期待通り動作しない。

130 :名無しさん@お腹いっぱい。:2005/11/13(日) 14:31:12
>>127
その辞書は間違い or 情報が古い。
現在では米標準発音も英南部標準発音もいずれもパーズ。

131 :名無しさん@お腹いっぱい。:2005/11/13(日) 14:42:34
>>129
必死だね。あえて'=='で比較したのに。

132 :名無しさん@お腹いっぱい。:2005/11/13(日) 15:49:38
>>130
んじゃ、三省堂に「お前の辞書は古くさい」と抗議しなさい。
http://dictionary.goo.ne.jp/search.php?MT=parse&kind=&kwassist=0&mode=0&ej.x=27&ej.y=9

133 :名無しさん@お腹いっぱい。:2005/11/13(日) 16:01:13
ALC の辞書はパースしか載せていないな。
どっちも聞く気がするけど。

134 :名無しさん@お腹いっぱい。:2005/11/13(日) 16:10:32
>>132
いやだ。三省堂の辞書がどうだろうと知ったこっちゃねえ。

135 :名無しさん@お腹いっぱい。:2005/11/13(日) 16:13:00
くだらないな

にわかに知って語りたがってるだけだろう
放置推奨

136 :名無しさん@お腹いっぱい。:2005/11/13(日) 17:11:46
pkillすげぇ。
argv[0]変更して起動したコマンドでも、
argv[0]変更前の本来のコマンド名で見つけてくれる。
こりゃ、psの出力をパースしたんじゃ不可能だな。

137 :名無しさん@お腹いっぱい。:2005/11/13(日) 17:39:14
ls -l /proc/[1-9]*/file
E2BIG喰らわないように工夫しなさい。

138 :名無しさん@お腹いっぱい。:2005/11/13(日) 18:11:59
>>136
さすがに専用コマンドだけあって抜かりないな。

139 :名無しさん@お腹いっぱい。:2005/11/13(日) 21:12:54
pkill にもいろいろあったりしないのかな。

140 :名無しさん@お腹いっぱい。:2005/11/14(月) 12:23:27
ディレクトリ、/binにある全ての実行可能ファイルのman一行出力をテキストファイルに書き出す。
ファイルの数は膨大なので、スクリプトを書いて処理すること。
大学でこのような課題を出されたのですが、正直何をして良いのか全くわからず途方にくれてます。
forを使うらしいのですが、そこから先に進めません。どうしたらいいでしょう?

141 :名無しさん@お腹いっぱい。:2005/11/14(月) 12:27:38
>>140
来年ちゃんと授業を聞くといいよ。

142 :名無しさん@お腹いっぱい。:2005/11/14(月) 12:34:08
マジレスすると初心者スレ行った方がいいと思う。

143 :名無しさん@お腹いっぱい。:2005/11/14(月) 13:06:44
くだ質でも同じこと言われるだけだと思う。

144 :名無しさん@お腹いっぱい。:2005/11/14(月) 13:22:48
>man一行出力をテキストファイルに書き出す。
これはどのコマンドを使うの?

145 :ヽ(´ー`)ノ ◆.ogCuANUcE :2005/11/14(月) 13:33:02
>>144
whatis(1) のことじゃないかな。


146 :名無しさん@お腹いっぱい。:2005/11/14(月) 14:06:51
>>145
どうも。

147 :名無しさん@お腹いっぱい。:2005/11/14(月) 16:38:25
そうそう.
>>144のような質問だけで解決するとよい.
間違ってもいきなり,どうやってやんの?
とか聞かないほうがいいぞ.

148 :名無しさん@お腹いっぱい。:2005/11/14(月) 20:04:36
本来単位取れないヤツを周りの力で誤魔化して点取らせても
社会的に迷惑でしかないだろ

149 :名無しさん@お腹いっぱい。:2005/11/14(月) 20:48:51
逆に大学で頑張ってもそんな知識社会だとほとんど役にたたんだろ

俺大学でいろんなプログラム言語とかやったけど
今では会社入ってから覚えたインフラ構築とかばっか

150 :名無しさん@お腹いっぱい。:2005/11/14(月) 22:35:35
それは本質において「学校の数学が何の役に立った?」とか言うのと同じ愚を犯している。
学校で学ぶものは知識ではないよん。

151 :名無しさん@お腹いっぱい。:2005/11/14(月) 22:36:59
まあでも、すぐ腐る「専門知識」とやらばかりを教える専門学校が幅を利かせ、
三流大学もその轍を踏む時代ではあるな。

152 :名無しさん@お腹いっぱい。:2005/11/14(月) 22:54:28
>>150
その通り
しかし今の学校ではテストとやらで結果を出さないと卒業できない仕組みになってる
その為には学ぶものではないとは言え知識なんだよな

153 :名無しさん@お腹いっぱい。:2005/11/14(月) 23:00:45
要領よくテストやレポートを切り抜けるテクニックは卒業後も大いに役立つと思われ

154 :名無しさん@お腹いっぱい。:2005/11/14(月) 23:02:13
140のような人物は、大学の成績うんぬんに関係なく
「ウチに来ても使えなさげ」なのは確かだろ?

その意味では、学校の勉強や成績つーのも案外バカにならない。

155 :名無しさん@お腹いっぱい。:2005/11/14(月) 23:18:17
初心者の俺も挑戦してみた。
`ls /bin/*` って書いて失敗した。

156 :名無しさん@お腹いっぱい。:2005/11/14(月) 23:58:35
man -f man が動かないと思ったら /usr/sbin/makewhatis しないとだめなのか。。。

find /bin -perm +111 | xargs man -f > /var/tmp/result.txt
で良い気がするけど for 文使うの?(w

157 :名無しさん@お腹いっぱい。:2005/11/15(火) 00:10:33
>>156
自己れす。
パスが入っちゃうからダメだった。

find /bin -type f -perm +111 | grep -v '^bin/[^/]*/' | sed 's/^.*\///' | xargs man -f > /var/tmp/result.txt


158 :名無しさん@お腹いっぱい。:2005/11/15(火) 00:47:22
これだけ具体的に問題を訊いておいて
ここにある答えコピペしたら聞いた奴が
誰か丸分かりじゃないのか?

>>156
こういう書き方を期待しているのでは?

for i in /bin/* ; do
if [ -x "$i" ] ; then
man ...


159 :名無しさん@お腹いっぱい。:2005/11/15(火) 03:20:39
その方が簡潔やね

160 :名無しさん@お腹いっぱい。:2005/11/15(火) 05:22:30
>>157
後半、こっちの方がお勧め。

find /bin -type f -perm +111 -exec basename {} \; -exec man -f {} \;


161 :名無しさん@お腹いっぱい。:2005/11/15(火) 08:45:18
>>160
findのexecは続けられるのか。メモメモ、

162 :名無しさん@お腹いっぱい。:2005/11/16(水) 22:41:57
>>160
それって、>>157 とはだいぶ動作が違うよ。
それに >>157 の方がプロセス呼び出し回数がはるかに少なくて速い。

163 :名無しさん@お腹いっぱい。:2005/11/19(土) 13:48:51
>>136
「パーズ」が正しい発音です。

164 :名無しさん@お腹いっぱい。:2005/11/19(土) 14:02:15
>>163
きみおもしろいね。

165 :名無しさん@お腹いっぱい。:2005/11/19(土) 14:03:19
>>136
「パース」が正しい発音です。


166 :名無しさん@お腹いっぱい。:2005/11/19(土) 14:05:55
粘着きんもーっ☆

167 :名無しさん@お腹いっぱい。:2005/11/19(土) 14:08:19
カタカナで書いて、発音が正しいも何もあるかい。

168 :名無しさん@お腹いっぱい。:2005/11/19(土) 14:28:28
parse【発音】pα':(r)s

169 :名無しさん@お腹いっぱい。:2005/11/19(土) 14:39:01
>>167
だからといって parse を「ゴメス」とか発音してはだめだろ

170 :名無しさん@お腹いっぱい。:2005/11/19(土) 14:48:28
ゴメスをparseと発音すれば問題ない

171 :名無しさん@お腹いっぱい。:2005/11/19(土) 15:12:40
s/z

172 :名無しさん@お腹いっぱい。:2005/11/19(土) 15:40:59
パースでもパーズでもない

parseはparse

173 :名無しさん@お腹いっぱい。:2005/11/19(土) 15:45:20
リュシータ

174 :名無しさん@お腹いっぱい。:2005/11/19(土) 17:22:05
パンパース

175 :名無しさん@お腹いっぱい。:2005/11/19(土) 18:32:02
>> 172
あんたの発音を IPA で書いてけろ

176 :名無しさん@お腹いっぱい。:2005/11/19(土) 19:53:15
>>175
この板でIPAって書くと別のIPAと間違われるから、 国際発音字母 って書いたほうがよさげ。

177 :名無しさん@お腹いっぱい。:2005/11/19(土) 20:52:35
UNIXに関する言葉のひらがな読みスレッド
http://pc8.2ch.net/test/read.cgi/unix/1001358861/

でさ、これ何て読むのよ in Linux板 2
http://pc8.2ch.net/test/read.cgi/linux/1116764992/


178 :名無しさん@お腹いっぱい。:2005/11/21(月) 19:13:34
すまんが誰か教えておくれ
シェルスクリプトでビット演算する方法ってあるんだろうか?

179 :名無しさん@お腹いっぱい。:2005/11/21(月) 19:25:15
$ uname
FreeBSD
$ echo $((5|10))
15
$ echo $((5&4))
4
$ echo $((5^5))
0
$


180 :名無しさん@お腹いっぱい。:2005/11/21(月) 19:32:21
>>179
ありがとう
大変助かりました。

181 :名無しさん@お腹いっぱい。:2005/11/22(火) 01:54:21
質問させてください
シェルスクリプトでpasswd hogeを実行すると
パスワードを求められますが
パスワード入力もシェルスクリプトでやることってできますか?
できるならやり方おしえて欲しいです。
よろしくおねがいします。

182 :名無しさん@お腹いっぱい。:2005/11/22(火) 07:16:55
expect

183 :名無しさん@お腹いっぱい。:2005/11/22(火) 10:27:23
>>182
できました!
ありがとうございますー!


184 :名無しさん@お腹いっぱい。:2005/11/22(火) 10:33:50
>>182->>183

おれ、ここの、こういう会話好き。

185 :名無しさん@お腹いっぱい。:2005/11/22(火) 17:51:17
シェルスクリプトを実行するとpsコマンドとかで引数が見えちゃいますよね。
パスワードのたぐいなら引数などで渡さずに、パイプやファイル経由で取り扱えば
よさそうですが。perlなんかだと$0に代入しちゃう安易な手段もあるようです。
シェルスクリプトで、ちょっと何やってるのか見せたくない場合の裏技とかってありますかね?
まあ。これが出来ちゃうとセキュリティ上の問題にもなるような気がしますが。
詳しい人教えてくださいませ。

186 :名無しさん@お腹いっぱい。:2005/11/22(火) 22:01:55
でも、じさくじえんなんだよね。

187 :名無しさん@お腹いっぱい。:2005/11/22(火) 22:12:17
>>185
ヒント: スパゲティを量産する自称プログラマー

188 :名無しさん@お腹いっぱい。:2005/11/22(火) 22:13:58
spaGheTTYって名前のターミナル開発したら、プログラマは誰も使わないだろうな・・・。

189 :名無しさん@お腹いっぱい。:2005/11/22(火) 22:21:46
spamghetti という製品はあったけどな。名を体を表すというコードだったが。


190 :185:2005/11/23(水) 00:41:00
うむ、やっぱ方法ないのかな。
ググってみたけどrootkitのたぐいの話しか出てこない。
>>187
全部自分で書いたものじゃないからしかたないのだ。中身を書き直す時間が
無いので穴だけ塞ぎたいのだ。

191 :名無しさん@お腹いっぱい。:2005/11/23(水) 00:49:12
パーミッション絞ったファイルに書いて読ませる、とか?

192 :名無しさん@お腹いっぱい。:2005/11/23(水) 00:58:19
>>185
シェルスクリプトから起動されてる個々のコマンドの引数を隠したいということ?
それは無理だろ。
引数を隠すのは起動されたコマンドの仕事だが、
あらゆるコマンドがそんな機能を持つわけじゃない。
それにそんな機能があったとしても、起動直後は残るから、
糞重い環境とかだとタイミングの問題でいずれ漏れる。


193 :名無しさん@お腹いっぱい。:2005/11/23(水) 01:00:38
つか危ないやつからpsの実行権を取り上げろ

194 :185:2005/11/23(水) 02:05:44
>>191
書き換え箇所が多いので避けました。
>>192
うむ、起動直後だけちょっと見えちゃう方法なら知ってました。

とりあえず少々面倒だが方法は見つかったです。
セキュリティモジュールぶっ込むことにしました。
しかしちゃんと動くのだろうかコレ。

195 :名無しさん@お腹いっぱい。:2005/11/26(土) 11:07:15
シェルの実行時に引数が与えられたかどうかの判定はどうやるのがいいのでしょうか?

今は

if [ ! $1 ]
then
else
fi

としているのですが、bashではこうやるもの、見たいな定石はありますか?

196 :名無しさん@お腹いっぱい。:2005/11/26(土) 11:53:13
bashは知らんが
#!/bin/sh
case $# in 0) echo no;; *) echo yes;; esac
あと、
・シェルスクリプトのことをシェルってゆーな


197 :名無しさん@お腹いっぱい。:2005/11/26(土) 13:33:29
>>195
argc をチェックする。

198 :名無しさん@お腹いっぱい。:2005/11/26(土) 13:33:56
>>196
>・シェルスクリプトのことをシェルってゆーな
根拠は?

199 :名無しさん@お腹いっぱい。:2005/11/26(土) 13:49:39
>>198
>>1 読め。


200 :名無しさん@お腹いっぱい。:2005/11/26(土) 13:50:17
バカっぽいから。

違うものを違う名前で呼ぶのは混乱を防ぐために当然のこと。

201 :名無しさん@お腹いっぱい。:2005/11/26(土) 13:52:36
sedスクリプトをsedとは呼ばない。
awkスクリプトをawkとは呼ばない。
perlスクリプトをperlとは呼ばない。
phpスクリプトをphpとは呼ばない。
JavaスクリプトをJavaとは呼ばない。


202 :名無しさん@お腹いっぱい。:2005/11/26(土) 14:10:18
>>198
シェルと呼ぶのが適切だという根拠は?

203 :名無しさん@お腹いっぱい。:2005/11/26(土) 14:30:05
>>202 「お約束」って書いてあるのが読めないのか。このあきめくらが。


204 :名無しさん@お腹いっぱい。:2005/11/26(土) 14:39:40
JavaScriptをJavaと呼ばない

205 :名無しさん@お腹いっぱい。:2005/11/26(土) 14:41:21
って >>201 に書いてあった。(*´ー`*)

206 :名無しさん@お腹いっぱい。:2005/11/26(土) 15:11:50
JavaScriptのスクリプトってなんていうの?

207 :名無しさん@お腹いっぱい。:2005/11/26(土) 15:28:01
じゃばすくりぷとすくりぷと

208 :名無しさん@お腹いっぱい。:2005/11/26(土) 17:25:14
PostScriptのことをPostと呼んだら、(たとえ好意的に解釈してもらったとしても)
絶対に通じない。
しかし、SellScriptのことをShellと呼んだ場合は相手が好意的に解釈すれば
一応通じる。

209 :名無しさん@お腹いっぱい。:2005/11/26(土) 18:12:17
SellScriptのことをShellと呼んだ場合は好意的に解釈してもらっていた相手でも
それ以降( ´_ゝ`)プッ

210 :名無しさん@お腹いっぱい。:2005/11/26(土) 18:14:46
>>209
たぶん君には言ってないと思うよ。

211 :名無しさん@お腹いっぱい。:2005/11/26(土) 18:42:05
馬鹿を判別する目安にしたいので
あえていい加減な言葉遣いを続けていただきたい

212 :名無しさん@お腹いっぱい。:2005/11/26(土) 18:47:19
おまえあたまいいな

213 :名無しさん@お腹いっぱい。:2005/11/26(土) 19:25:20
>>211
てんさい

214 :名無しさん@お腹いっぱい。:2005/11/26(土) 19:40:00
>>208
SellScriptって、販売用の営業マニュアルか何かですか?
それをShellと呼んでも通じませんね。ShellScriptならともかく・・

215 :名無しさん@お腹いっぱい。:2005/11/26(土) 19:43:52
シャルスクリプト

216 :名無しさん@お腹いっぱい。:2005/11/26(土) 19:59:44
今度UNIXで使うプリンターを買いたいのですが、
プリンターの設定でハマるといやなので、
UNIXに繋ぎやすいプリンターを探しています。
やっぱり、UNIXからプリントアウトする場合は
ポスト対応のプリンターがいいのでしょうか?

217 :名無しさん@お腹いっぱい。:2005/11/26(土) 20:34:00
>>216
PostScriptつながり?

218 :名無しさん@お腹いっぱい。:2005/11/26(土) 20:56:14
みんな騙されるな!
>>216
「ポストプリンター」は、「POSTメソッドでリクエストを受け付けるプリンタ」、すなわち
IPP対応プリンタのことだったんだ!

219 :名無しさん@お腹いっぱい。:2005/11/26(土) 21:07:47
はいはいなんだってなんだって

220 :名無しさん@お腹いっぱい。:2005/11/26(土) 21:27:24
>>216
ポスト対応のプリンタは高い。それより、ゴーストのドライバが対応してる
プリンタを買った方がよい。設定は、ゴーストにそのプリンタ用の
オプションを付けたシェルを書いて、そのシェルををlpd or cupsの
フィルタにすればいいだけ。

221 :名無しさん@お腹いっぱい。:2005/11/26(土) 21:58:19
よそでやれ。

222 :名無しさん@お腹いっぱい。:2005/11/26(土) 23:19:16
だから、ポストスクリプトをポストと略すなと

223 :名無しさん@お腹いっぱい。:2005/11/26(土) 23:44:23
え、ポスト対応ってパワーオンセルフテストに対応してるってことだろ?

224 :198:2005/11/27(日) 01:13:48
>>202
漏れは別に「シェルと呼ぶのが適切」などとは主張してないよ。
単に「・シェルスクリプトのことをシェルってゆーな 」の根拠の
提示を要求しているだけ。

225 :名無しさん@お腹いっぱい。:2005/11/27(日) 01:37:13
要求はのまない。諦めろ。

226 :名無しさん@お腹いっぱい。:2005/11/27(日) 01:55:12
シエルがどうしたって?

227 :名無しさん@お腹いっぱい。:2005/11/27(日) 02:00:56
違うものを違う名前で呼ぶのは混乱を防ぐために当然のこと。

228 :名無しさん@お腹いっぱい。:2005/11/27(日) 02:06:02
酸化とか用語直してくれよ。

229 :名無しさん@お腹いっぱい。:2005/11/27(日) 04:00:59
シェルスクリプトをシェルと呼ぶのは
シェルスクリプトをシェルと呼ぶこと自体が問題なのではなくて
シェルと呼ばれる別のものがあるのに、シェルスクリプトをそれと同じシェルという呼び方する点に問題がある。

230 :名無しさん@お腹いっぱい。:2005/11/27(日) 08:20:42
>>229
シェルスクリプトの実行インタープリタと、
コマンドラインのインタープリタが別物なら >>229 の主張は成り立つ。
しかし、実際にはどちらも同じシェル。よって、
「シェルと呼ばれる別のもの」は「無い」ので >>229 の主張は成り立たない。

たとえば、perlスクリプトを書いて処理した方が楽な場合、
「こういうのはperlでやった方が楽」と言う。この言い方には異論はない。
ならば同様に、
シェルスクリプトを書いて処理するのが適している場合、
「こういうのはシェルでやった方がよい」と言っても良いことになる。

231 :名無しさん@お腹いっぱい。:2005/11/27(日) 08:28:29
でも「シェルを書く」は違うだろ。
「perlを書く」と言わないように。

232 :名無しさん@お腹いっぱい。:2005/11/27(日) 08:53:47
>>231
「シェルで書く」と言えば無問題。

233 :名無しさん@お腹いっぱい。:2005/11/27(日) 09:15:49
そうだけど、「シェルを」って言うやついるじゃん。
>>63 >>220 とか。

234 :名無しさん@お腹いっぱい。:2005/11/27(日) 10:34:46
粘着は放置、ってのが2chのルールだと思っていたんだが。

・・・スマン、俺も釣られた?

235 :名無しさん@お腹いっぱい。:2005/11/27(日) 12:46:42
釣られるであれば気にはなっている問題だと認識しているのでしょ。

236 :名無しさん@お腹いっぱい。:2005/11/27(日) 12:52:27
くだらねぇ。

237 :名無しさん@お腹いっぱい。:2005/11/27(日) 13:34:41
UNIXの達人になるとシェルでメールが打てると聞きました。
それってすごいですよね。でも、メールはシェルで打てても、
シェルではインターネットはできないですよね?
それとも達人になるとシェルでインターネットを見ることもできるんですか?

238 :名無しさん@お腹いっぱい。:2005/11/27(日) 14:02:50
迷惑メールの自動送信の話ですか?

239 :名無しさん@お腹いっぱい。:2005/11/27(日) 14:13:48
くだらねぇ。

240 :名無しさん@お腹いっぱい。:2005/11/27(日) 14:25:15
初カキコ

シェルスクリプトで書く
シェルで書く
どっちとも、言うよね?bashスクリプトを書くとはイワねーだろw
そんなに、厳密に定義した言語体系でしか喋れないと、実世界で人に理解して貰えないし、人を理解出来ないマニア

241 :名無しさん@お腹いっぱい。:2005/11/27(日) 14:31:50
おまえの回りはヴァカばっかだからそうかもしれんが。

普通は言わない。言うべきでもない。必要があれば「bashスクリプト」も使うべき。

242 :名無しさん@お腹いっぱい。:2005/11/27(日) 14:47:59
シェルスクリプトを書く。
シェルで書く。


243 :名無しさん@お腹いっぱい。:2005/11/27(日) 14:53:10
シェルで書くと言った場合はコマンドラインからの打ち込みを想像するな。

244 :名無しさん@お腹いっぱい。:2005/11/27(日) 14:53:42
お前は携帯電話を携帯と呼ぶことは無いのか?
間違ってもインターネットするなんて梨田炉?
損なことばっかり、いってるから女もできないし、友達も少ないんだよ。
とりあえず、話し方教室っていうのがあるから、行って見るといいぞw


245 :名無しさん@お腹いっぱい。:2005/11/27(日) 14:54:24
3連投は自演の基本だ

246 :名無しさん@お腹いっぱい。:2005/11/27(日) 15:05:34
くだらねぇ。

247 :名無しさん@お腹いっぱい。:2005/11/27(日) 15:45:29
>>237
メール
Wanderlust - http://www.gohome.org/wl/index.ja.html
mew - http://www.mew.org/
webブラウザ
w3m - http://w3m.sourceforge.net/index.ja.html
lynx - http://lynx.browser.org/
links - http://artax.karlin.mff.cuni.cz/%7Emikulas/links/
Wanderlustやw3mなんかは割とお手軽

248 :名無しさん@お腹いっぱい。:2005/11/27(日) 15:47:41
ホームページを持っていますが、
携帯からインターネットを見ているかどうかを判断する
シェルを書くにはどうすればいいでしょうか?

249 :名無しさん@お腹いっぱい。:2005/11/27(日) 16:05:46
携帯電話はシェルスクリプトじゃないし、ケータイはシェルじゃない。

でも、UNIX屋ってPHS派が多そうだな。漏れのイメージ的には。

250 :名無しさん@お腹いっぱい。:2005/11/27(日) 16:07:26
くだらねぇ。

251 :名無しさん@お腹いっぱい。:2005/11/27(日) 17:14:47
おっぱいは
見て良し。
触って良し。
揉んで良し。
舐めて良し。
吸って良し。
良いとこだらけ。

252 :名無しさん@お腹いっぱい。:2005/11/27(日) 18:17:10
誰の
どんな

によるだろ。

253 :名無しさん@お腹いっぱい。:2005/11/27(日) 18:54:23
正直おっぱいがなければおれの人生はもっとましなものだった。

254 :名無しさん@お腹いっぱい。:2005/11/27(日) 19:01:03
一度や二度のおっぱいがなんだ!

255 :名無しさん@お腹いっぱい。:2005/11/27(日) 19:03:46
おっぱいは成功の元

256 :名無しさん@お腹いっぱい。:2005/11/27(日) 19:12:47
×成功
○性交

257 :名無しさん@お腹いっぱい。:2005/11/27(日) 19:27:15
くだらねぇ。

258 :198:2005/11/27(日) 22:37:22
つうわけで「・シェルスクリプトのことをシェルってゆーな 」の根拠は
誰も提示できませんでしたね。

259 :名無しさん@お腹いっぱい。:2005/11/27(日) 23:19:08
>>247
Telnetを忘れるな。

260 :名無しさん@お腹いっぱい。:2005/11/27(日) 23:52:03
男のおっぱいはどうなんだ?

261 :名無しさん@お腹いっぱい。:2005/11/28(月) 00:15:57
あれはいわゆるトマソンというやつです

262 :名無しさん@お腹いっぱい。:2005/11/28(月) 02:05:41
>>198
うん。
馬鹿判定に使うからどんどん使っていいよ。

263 :198:2005/11/28(月) 23:27:44
>>262
なるほど。具体的反論ができないってことですな。告白乙。

264 :名無しさん@お腹いっぱい。:2005/11/28(月) 23:45:20
>>263
お前面白いからついでにコテハン名乗っとけ

265 :名無しさん@お腹いっぱい。:2005/11/29(火) 18:53:05
盛 り 上 が っ て ま い り ま し た 。

266 :198:2005/11/30(水) 00:42:53
>>264-265
なるほど。いまだ具体的反論はないってことですな。ご苦労さん。

267 :名無しさん@お腹いっぱい。:2005/11/30(水) 03:06:09
もう一回書いたら笑ってやろう。

268 :名無しさん@お腹いっぱい。:2005/11/30(水) 03:18:35
くだらねぇ。

269 :名無しさん@お腹いっぱい。:2005/11/30(水) 03:21:04
横からスマンが、>>262の完敗だな。(´・ω・`)ショボーン


270 :名無しさん@お腹いっぱい。:2005/11/30(水) 03:48:14
ふふふ

271 :名無しさん@お腹いっぱい。:2005/11/30(水) 06:03:21
ループスレと聞いて飛んできました!

272 :名無しさん@お腹いっぱい。:2005/11/30(水) 09:08:54
そんなに>>262がくやしかったのか?

273 :名無しさん@お腹いっぱい。:2005/11/30(水) 09:43:08
あんまりかまうな。

274 :名無しさん@お腹いっぱい。:2005/11/30(水) 18:08:14
おいら的には, 直感的には以下のような違いが...

シェルを書く:
sh でも bash でも csh でも zsh でも scsh でも独自のものでも良いが,
シェル自体ををデザインして実装する行為

シェルスクリプトを書く:
sh でも bash でも csh でも zsh でも scsh でも独自のものでも良いが,
実装されたシェルの文法にしたがって, 何らかの処理を記述する行為


275 :名無しさん@お腹いっぱい。:2005/11/30(水) 21:24:27
所詮個人の直観にすぎないのですな。

276 :名無しさん@お腹いっぱい。:2005/11/30(水) 21:40:17
うむ。

シェルを自分で書ける人にとっては、「シェルを書く」と
「シェルスクリプトを書く」は完全に別物なんだが、
いかんせんシェルを書けない人にとっては、「シェルを
書く」=「(シェルそのものを書ける訳ないんだから)
シェルスクリプトを書く」って自動変換されちゃうみたい
なんだよね。

そういうのを自分で公言して、恥ずかしいだろうにと
自分でシェル作ってみたりした人は思って、「シェルって
いうな」なんて助言してみるのだけど、どうにもシェルを
自分で作れない人は、略しても通じる言葉と通じない
言葉の区別すらつかなくなってるわけです。

例えばアルコール飲料や雑酒をビールビールと言い張って
ビール好きから眉を顰められたりするって感じかな。ま、
それで恥ずかしくないならいいんだけどね。きっといつか
市民権も取れることでしょう。ガンガレ。

277 :名無しさん@お腹いっぱい。:2005/11/30(水) 21:40:48
>>274
>シェル自体をデザインして実装する行為
納得。

278 :名無しさん@お腹いっぱい。:2005/12/01(木) 00:22:25
教授もシェルを書くといっていた。(もちろんシェルスクリプトのこと)

279 :名無しさん@お腹いっぱい。:2005/12/01(木) 00:24:29
すかさずつっこまないと。

280 :名無しさん@お腹いっぱい。:2005/12/01(木) 00:56:54
木村泉センセとか村井純センセあたりが「シェルを書く」と言ってたら、
漏れは「シェル」派に転校するぞ〜

281 :名無しさん@お腹いっぱい。:2005/12/01(木) 01:06:25
「シェルを書く」を「シェルスクリプトを書く」ことだと類推できると
いうことは「シェルを書く」という言葉の意味が正しく伝わっていると
いうこと。つまり十分通用する慣用表現なのである。

282 :Kトンプソン:2005/12/01(木) 01:08:05
>>276
はあ? とっくに市民権を得てるがな。ほんと馬鹿が多いな最近のUnix板は。

283 :名無しさん@お腹いっぱい。:2005/12/01(木) 01:13:56
タネンバウム先生が「シェルを書く」と言ってたらどうしようと思ったが、
MINIX2では確認できず…
MINIX3ではashが標準シェルになってる模様。

284 :名無しさん@お腹いっぱい。:2005/12/01(木) 01:16:11
「類推」とか「慣用表現」とか言い出すあたりが苦しいな。
わざわざあいまいさを持ち込む必要などないし、
そもそも漏れはそんなに寛容な表現を認めませんよと。

285 :名無しさん@お腹いっぱい。:2005/12/01(木) 01:26:17
駄洒落はいかんよう

286 :名無しさん@お腹いっぱい。:2005/12/01(木) 01:35:05
シェルのスクリプティングは簡単なコツを覚えるだけで広く応用することができる
これを「一を聞いて十をシェル」という

287 :名無しさん@お腹いっぱい。:2005/12/01(木) 02:26:00
なんだかギャル文字を認めるか否かの争いに似てるな。
肯定派と否定派に世代の差があると見た。

288 :名無しさん@お腹いっぱい。:2005/12/01(木) 02:35:04
↓そろそろ誰かが何事もなかったかのように良問を投げる

289 :名無しさん@お腹いっぱい。:2005/12/01(木) 02:40:03
くだらねぇ。

290 :名無しさん@お腹いっぱい。:2005/12/01(木) 03:50:32
>>284
「漏れ」ってなんだ?俺はそんな日本語は認めないぜ。

291 :名無しさん@お腹いっぱい。:2005/12/01(木) 03:53:16
どうみても糞スレです。
ありがとうございました。

292 :名無しさん@お腹いっぱい。:2005/12/01(木) 07:00:12
おれはスクリプトと言う。perl sed を含めて。
手順書のイメージだな。

293 :名無しさん@お腹いっぱい。:2005/12/01(木) 09:34:56
たとえばこう考えたらどうだろう

おまんこする。
おまんこは固有の部位で動詞にするには無理がありそうだが
おまんこにちんこを挿入するという表現はなかなか
公に使いにくい
そこで「おまんこする」拳を握って人差し指と中指の間から親指
それが最強

ジェルスクリプトを作ると露骨な表現をしなくても
シェルを作るで通じればそれが文化になる

294 :名無しさん@お腹いっぱい。:2005/12/01(木) 10:07:02
>>293
シェルはチン皮さん

295 :名無しさん@お腹いっぱい。:2005/12/01(木) 10:21:33
>>293
> ジェルスクリプトを作ると露骨な表現をしなくても
> シェルを作るで通じればそれが文化になる
てのは、>>274 的な立場からみると、シェルのデザイン/実装もできない
無能者集団の文化だけどな。
それでも、一応、文化ではあるか…


296 :名無しさん@お腹いっぱい。:2005/12/01(木) 10:32:27
思考能力の差を世代のせいにしてはいけない。

297 :名無しさん@お腹いっぱい。:2005/12/01(木) 11:47:44
そうそう。オバサンにも多いよ。自分の都合さえつく命名方法なら
他人のそれと矛盾しても全然気にしないどころかそれを理解することを
回りに要求する人。
だから少なくとも世代だけが原因というわけではない。

298 :名無しさん@お腹いっぱい。:2005/12/01(木) 12:00:20
身障者を蔑視するような用語は放送、書籍、教育から排除されて
それに異議も唱えず民衆から自然に排除されていくだろう

同様に排除されてる「まんこ おまんこ」であるが
これは差別用語に比べて排除される傾向はない
教育、放送等の標準語からいくら排除してもマンコは消えない
それに変わる言葉があまりにも出てこないから
陰部、女性性器、膣、性行為といくら代替の言葉をさがしても
まんこには適わない
言葉狩りが浸透した昨今でも若い女性におまんこしない?と
言えば良くも悪くも通じる
方言要素の大きい言葉であるが地方出身者でもおおよそ通ずる浸透率
このマンコという言葉の浸透率や使用率や継承率を研究することで
俗語のメカニズムのなかで90%は解明されると考えられている
俗語は日々創造され続けているので100%は無理だが
まずおまんこである
それがシェルスクリプトなのにシェルを作るという誤表現の解明の近道

299 :名無しさん@お腹いっぱい。:2005/12/01(木) 13:03:34
>>298
ここは正規表現のスレッドではありませんよ。

300 :名無しさん@お腹いっぱい。:2005/12/01(木) 14:24:22
>>299
うまいこと言うね、こりゃ。


301 :名無しさん@お腹いっぱい。:2005/12/01(木) 14:59:20
>>295
大抵はコンテクスト上どちらを指しているかは理解可能。
……というか普通に現場でシェルスクリプトを指してシェルと呼ぶ
同業者が結構多いので、理解できなければやっていけない。

ま、せいぜい象牙の塔にでも引きこもっててくれ。

302 :295:2005/12/01(木) 15:44:55
>>301
> 大抵はコンテクスト上どちらを指しているかは理解可能。

て、言うのは否定しないよ。「だけど心情的には…」って話なんだが。


303 :名無しさん@お腹いっぱい。:2005/12/01(木) 15:50:45
>普通に現場でシェルスクリプトを指してシェルと呼ぶ
>同業者が結構多い
駄目業界

304 :名無しさん@お腹いっぱい。:2005/12/01(木) 16:00:15
>>280
村井氏はねとわくの人だけどUNIXの人じゃないから。

>>283
たぶんタネンバウム先生が使う言語(英語)では、
write with shell
では?↑の意味で
write a shell
とか言ってたら普通に変だけど。

>>301
>普通に現場でシェルスクリプトを指してシェルと呼ぶ
>同業者が結構多い
どこの業界の話ですか(w

305 :名無しさん@お腹いっぱい。:2005/12/01(木) 16:42:34
同級生と書き間違ったのだろう。

306 :名無しさん@お腹いっぱい。:2005/12/01(木) 17:45:27
>>301だけど、
システム屋だよ。「俺は」そうは略さないが、シェルスクリプトのことを
シェルと呼ぶ人は本当に多い。
こっちも面倒だから、仕様書のような正確性を必要とする文書の中で
使われているのでなければ、一々指摘しない。

実のところ、システム屋が仕事で「シェルを書く」と言ったら100%それは
シェルスクリプトのことだから、間違う余地はない。

307 :名無しさん@お腹いっぱい。:2005/12/01(木) 18:02:52
>>306
システム屋はバカでFA?

308 :名無しさん@お腹いっぱい。:2005/12/01(木) 18:28:10
>>307
少なくとも、それを前提とすることを他人に要求する人がシステム屋には多いということだね。

309 :名無しさん@お腹いっぱい。:2005/12/01(木) 18:50:27
>>307
FAって何だ?そんな日本語、通用すると思ってんのか?
>>308
俺は何も要求しとらん。「漏れ」とか「FA」とか言ってる連中が下らない
呼称のことに拘っているのを鼻でワラットルだけだ。


310 :名無しさん@お腹いっぱい。:2005/12/01(木) 19:00:14
>>309
シェルスクリプトを書くことをシェルを書くというなら、それはすなわち
受け手にシステム屋は「シェルを書く」という言葉を本来の意味で使うことが
できない人種だから諦めて合わせてやれ、という前提を受け入れることを
受け手に要求していることにほかならないわけだが、
もしかしてそれが理解できないのだろうか。


311 :名無しさん@お腹いっぱい。:2005/12/01(木) 19:11:07
>>310
別に言ってる奴には「要求」してる意識なんぞ無いだろう。
「漏れ」といってる奴は、「漏れ」という日本語がある種のコンテキストで
使われているときに、それは「俺」を意味する、そう理解しろ、と
要求しているのだろうか?
単に皆がそう言ってるからそう言ってるだけだろう。
で、未だに「漏れ」という用語を使う人間は、それがネナベテストに利用されている
ことも知らないのだろう。

で、あんたには「そういう言い方は正しくないから止めろ」と言うか、
一々そう言う面倒だから受け入れる、という選択肢がある。それは
あんたの自由だ。

312 :名無しさん@お腹いっぱい。:2005/12/01(木) 19:12:36
縮めて「シェる」でいいじゃん。

313 :名無しさん@お腹いっぱい。:2005/12/01(木) 19:15:54
追加。
それを自由だと言いつつ何で鼻で笑ってるかって、
そりゃ滑稽だからだよ。
何の思想性も一貫性も無い、平気で崩れた日本語を使ってる人間が、
意味が理解できない訳でもないのに、特定のタームに対してヲタク的拘りを
見せるのがな。
俺から見れば、「シェルスクリプトをシェルと呼ぶな」という主張は
2chで「半角カナを使うな」と主張するのと同じぐらいに滑稽に見える。

まあ、俺が勝手に「滑稽だ」と思っているだけだから、せいぜい自由に主義主張を
通したまえ。

314 :名無しさん@お腹いっぱい。:2005/12/01(木) 19:18:42
あなたを一番滑稽です

315 :名無しさん@お腹いっぱい。:2005/12/01(木) 19:20:08
>>309
> >>307
> FAって何だ?そんな日本語、通用すると思ってんのか?
> >>308
> 俺は何も要求しとらん。「漏れ」とか「FA」とか言ってる連中が下らない

>>313
> 俺から見れば、「シェルスクリプトをシェルと呼ぶな」という主張は
> 2chで「半角カナを使うな」と主張するのと同じぐらいに滑稽に見える。

( ゚д゚)ポカーン


316 :名無しさん@お腹いっぱい。:2005/12/01(木) 19:20:42
>>314
小学校に入りなおして「てにをは」ぐらい勉強して来い

317 :名無しさん@お腹いっぱい。:2005/12/01(木) 19:22:48
>>315
何にポカーンとしてるのか知らないが、出来れば説明してもらえないだろうか。
俺の態度が一貫していないというのなら、その理由は簡単だ。

>>309のは「皮肉」であって、別に俺は「漏れ」や「FA」を否定しとらん。
まあ今時「漏れ」もどうかとは思うがな。

318 :名無しさん@お腹いっぱい。:2005/12/01(木) 19:23:14
>>316
せいぜい自由に主義主張を通したまえ

> そりゃ滑稽だからだよ。
> 何の思想性も一貫性も無い、平気で崩れた日本語を使ってる人間が、
> 意味が理解できない訳でもないのに、特定のタームに対してヲタク的拘りを
> 見せるのがな。


319 :名無しさん@お腹いっぱい。:2005/12/01(木) 19:23:56
なにこの糞スレwww

320 :名無しさん@お腹いっぱい。:2005/12/01(木) 19:25:06
安心しろ、このところずーっと糞スレだから。
ちなみに俺は最初にあらわれてシェル云々と言い出した人物とは別人だぜ。

321 :名無しさん@お腹いっぱい。:2005/12/01(木) 19:38:48
>>316 に誰もツッコミをいれない件について

322 :名無しさん@お腹いっぱい。:2005/12/01(木) 19:47:23
>>318が突っ込んでるじゃね

323 :名無しさん@お腹いっぱい。:2005/12/01(木) 20:21:59
くだらないスレになったお

324 :名無しさん@お腹いっぱい。:2005/12/01(木) 20:50:21
>>316を、翡翠ちゃんです。

325 :名無しさん@お腹いっぱい。:2005/12/01(木) 21:33:12
シエルの話しようぜ。

326 :324:2005/12/01(木) 21:45:45
× >>316
>>314

いかん、洗脳探偵効果が・・・。

327 :名無しさん@お腹いっぱい。:2005/12/01(木) 22:24:18
>309、>313
正直、こだわってんのはお前w

こだわってないなら、2chなんざ笑って流せばおk。
なのに流せないばかりか、こだわりまくって、
挙句の果てにはオタク的拘りみたいなレッテル
貼り始めてさw

UNIX板では微妙なこだわりを装う、もしくは本当にこだわるのが
スタイルなわけです。そこら辺勘違いして、他人も自分と一緒で、
必死にこだわってるとか考えてちゃ、何時までたっても笑い者の
ままですYo!

328 :名無しさん@お腹いっぱい。:2005/12/01(木) 22:32:57
くだらねぇ。


329 :名無しさん@お腹いっぱい。:2005/12/01(木) 22:36:21
↑まねスンナ

330 :名無しさん@お腹いっぱい。:2005/12/01(木) 22:58:02
ともかくこのスレでは、>>1のとおり
・シェルスクリプトのことをシェルってゆーな
だ。

気に入らんなら、「シェル総合」スレ作って、
>>1に「シェルといえばシェルスクリプトのこと」って書いとけ。


331 :名無しさん@お腹いっぱい。:2005/12/01(木) 23:09:36
俺はそうは言わないが、システム屋のことをヴァカと呼ぶ人は本当に多い
実のところ、このスレではシステム屋と言ったら
100%それはヴァカのことであって、間違う余地はない

332 :名無しさん@お腹いっぱい。:2005/12/01(木) 23:24:06
まあいくら言い訳しても、シェルを書くとか言っちゃった人間は
100%それは馬鹿扱いされることに疑う余地はない。

333 :名無しさん@お腹いっぱい。:2005/12/01(木) 23:33:31
>>332
たかがその程度のことで他人の知性程度を判断できるアンタのバカさ加減に
俺は乾杯するよ……
お前ら、社会に出たことないだろ

334 :名無しさん@お腹いっぱい。:2005/12/01(木) 23:39:25
言い訳しても無駄だと言っている。

335 :名無しさん@お腹いっぱい。:2005/12/01(木) 23:42:48
「言い訳」も何も、俺は「シェルスクリプト」の代わりに「シェル」なんて
言わないけどな。ただ、その言い方を認めてるだけだ。客や協力会社の
人間に言い方ぐらいでいちいちつっかかってられるか。

ま、俺が悪かったよ。「シェルスクリプト」と「シェル」の違いが三度の飯より
重要な希少な人種の溜まり場で、客や他社の人間、別の世界に生きてる人間と
話したことも無いんだろ?そういうスレだもんな。
実に場違いな煽りでしたよw

336 :名無しさん@お腹いっぱい。:2005/12/01(木) 23:49:37
言い訳しても無駄だと言っている。


337 :名無しさん@お腹いっぱい。:2005/12/01(木) 23:53:58
言い訳しても無駄だと言っている。


338 :名無しさん@お腹いっぱい。:2005/12/01(木) 23:57:57
俺もリーマンやってるが、客が間違っているからといって
自分が間違えていいということにはならない。甘ったれるな。

339 :名無しさん@お腹いっぱい。:2005/12/02(金) 00:01:39
このスレが質問者に対する教育や矯正の側面ももってることを忘れるな
もちろん、ごまかしたり釣ったり煽ったりからかったりもするがな

340 :名無しさん@お腹いっぱい。:2005/12/02(金) 00:10:40
甘ったれるな。


341 :名無しさん@お腹いっぱい。:2005/12/02(金) 00:13:50
>>338
は?誰に言ってんの?「リーマン」は正しくて「シェル」は間違いだという
あんたの根拠は何?

>>339
ま、本来それだよな。ただ俺的にはもうこういうfj.usage行き的な
void的なネタは飽き飽きしてる。
いつまで「は?レスって何ですか?」みたいなネタ続けんのよ、という。

342 :名無しさん@お腹いっぱい。:2005/12/02(金) 00:18:30
いい割れ目して無駄毛も剃っている。

343 :名無しさん@お腹いっぱい。:2005/12/02(金) 00:20:32
呼び方の話題はいつまで続くの?

344 :名無しさん@お腹いっぱい。:2005/12/02(金) 00:21:40
はん?

345 :名無しさん@お腹いっぱい。:2005/12/02(金) 00:43:43
>>339
> このスレが質問者に対する教育や矯正の側面ももってることを忘れるな
ここ最近のスレでそんなのは大嘘かつ欺瞞であることが完全に証明されました。

346 :名無しさん@お腹いっぱい。:2005/12/02(金) 01:06:11
・シェルスクリプトのことをシェルってゆーな
・シェルスクリプトのことをシェルってゆーな、っていちいちゆーな
・シェルスクリプトのことをシェルってゆーな、って言われていちいち反発するな

347 :名無しさん@お腹いっぱい。:2005/12/02(金) 02:17:31
このスレでは「ぬるぽ」の代わりに「シェルを書く」と
書けばいいのですね?

348 :名無しさん@お腹いっぱい。:2005/12/02(金) 02:22:52
「ガッ!」の代わりは何にしたら良いだろう?

しかし、>>198から延々とひっぱってたのか… いやはや

349 :名無しさん@お腹いっぱい。:2005/12/02(金) 03:17:49
スクリプトッ!

350 :名無しさん@お腹いっぱい。:2005/12/02(金) 10:23:07
>>335
そういう相手と関わって「シェルを書く」という言い方を受け入れる
のも必要だと理解する人なら、区別する文化圏の人を相手にするときは
逆にきちんと区別するのも重要だと理解できる筈だけど。
特にアカデミックな相手のときはそうだし、自分より相手が詳しい分野について
はいくらでもそういうことがある。
でもそういう場所であるこのスレで、シェルを書くという言い方をする人たちが
いるということにだけこだわりまくって
「〜の違いが三度の飯より重要な希少な人種の溜まり場」
なんて言うってことは、そういう人を相手に商売したことがなく、
要は、「区別しない人種を知ってる自分は知らない(とあなたが勝手に思ってる)
キミたちより偉いんだぞ」という優越感を覚えるための煽りだったということでしょ。



351 :名無しさん@お腹いっぱい。:2005/12/02(金) 10:31:08
シェルを書く

352 :名無しさん@お腹いっぱい。:2005/12/02(金) 10:32:41
言い訳しても無駄だと言っている。

353 :名無しさん@お腹いっぱい。:2005/12/02(金) 12:01:11
C 言語でシェルを書く

354 :名無しさん@お腹いっぱい。:2005/12/02(金) 12:36:03
>>353
自動的にシェルスクリプトを作成出力するC言語のプログラムあるよ。
その(C言語で書かれたコマンド)を使って自動的にシェルスクリプトを書く
という意味だよね?

355 :名無しさん@お腹いっぱい。:2005/12/02(金) 13:23:05
C言語のプログラムをC言語ってゆーな。

356 :名無しさん@お腹いっぱい。:2005/12/02(金) 14:05:00
なんだこの糞スレ
いつからこんなスレになったのか…

357 :名無しさん@お腹いっぱい。:2005/12/02(金) 14:08:48
>>356
198 あたりから.


358 :名無しさん@お腹いっぱい。:2005/12/02(金) 15:44:46
プッ!

359 :名無しさん@お腹いっぱい。:2005/12/02(金) 15:53:18
プッ!プッ!プッ!

360 :名無しさん@お腹いっぱい。:2005/12/02(金) 16:33:04
ようは「シェルスクリプト」が長いからうまく喋れないんでしょ?
そういう人は「シェルスク」でいいじゃん

361 :312:2005/12/02(金) 16:46:22
「シェる」でいいじゃん

362 :名無しさん@お腹いっぱい。:2005/12/02(金) 16:46:53
「シェル」というよりも「スクリプト」と言ってくれたほうがナンボかマシ。

363 :名無しさん@お腹いっぱい。:2005/12/02(金) 16:49:15
・シェルスクリプトのことをスク水ってゆーな

364 :名無しさん@お腹いっぱい。:2005/12/02(金) 16:54:14
>>357
その前からFreeBSDへの根拠のない煽りや
パース or パーズ論争などのくだらない要素満載

単にレベルが低いというだけならはるか昔から……

365 :名無しさん@お腹いっぱい。:2005/12/02(金) 16:56:42
「FreeBSDへの根拠のない煽り」

FreeBSDは、どうみたって糞だろ。


366 :名無しさん@お腹いっぱい。:2005/12/02(金) 17:03:05
>>365
お前はスレタイ100回読んだ上でさっさと巣に帰りな
坊や。

367 :名無しさん@お腹いっぱい。:2005/12/02(金) 17:17:19
糞を糞といって何が悪い。

368 :名無しさん@お腹いっぱい。:2005/12/02(金) 17:18:20
>>361
勝手に人を騙るなよ。
単にスレを荒らしたいだけの愉快犯だな。

369 :198:2005/12/02(金) 18:12:00
FreeBSD
C shell

糞を糞といって何が悪い。


370 :名無しさん@お腹いっぱい。:2005/12/02(金) 18:33:46
お前が糞というのが悪い

371 :名無しさん@お腹いっぱい。:2005/12/02(金) 20:17:07
「シェる」何げにいいな。書くときしか使えんけど。

372 :名無しさん@お腹いっぱい。:2005/12/02(金) 20:49:30
UNIX原理主義に法り、
正しい用語をしない奴を、徹底的に叩く。


373 :324:2005/12/02(金) 21:34:09
さ ら に 盛 り 上 が っ て ま い り ま し た 。

374 :名無しさん@お腹いっぱい。:2005/12/02(金) 22:24:30
>>372
おじゃまもん

375 :名無しさん@お腹いっぱい。:2005/12/02(金) 22:38:02
□お約束
・シェルスクリプトのことをシェルってゆーな
・約束を守れないヤツは来るな。


376 :名無しさん@お腹いっぱい。:2005/12/02(金) 22:42:27
シェルスクリプトをシェルって言うやつって、
データベースからデータを「吸いあげる」とか言うやつと同じタイプ。

SI屋っつうかIT土方特有の言葉使いをするんだよな。


377 :名無しさん@お腹いっぱい。:2005/12/02(金) 22:57:24
違うよ。むしろウェブページをホームページというのに近い。

378 :名無しさん@お腹いっぱい。:2005/12/02(金) 23:00:45
IPアドレスをIPっていう方が近い。

379 :名無しさん@お腹いっぱい。:2005/12/02(金) 23:04:08
一時期、ハードディスクを「ハード」と呼ぶ香具師が多かったなあ
おじさんはめまいがしたよ
定着しなかったようでなにより

380 :324:2005/12/02(金) 23:06:23
ディスクトップとかインストロールとか。聞いてるこっちが恥ずかしい。

381 :名無しさん@お腹いっぱい。:2005/12/02(金) 23:08:38
なんかどんどんスレ違いになってきているわけだが。

382 :名無しさん@お腹いっぱい。:2005/12/02(金) 23:11:09
インスカトロール

383 :名無しさん@お腹いっぱい。:2005/12/02(金) 23:19:55
パッパラフニフニ パッパラほえほえ
パッパラフニフニ たまご!
パッパラフニフニ パッパラほえほえ
焼いたらこげちゃった

パッパラフニフニ パッパラほえほえ
パッパラフニフニ おイモ
パッパラフニフニ パッパラほえほえ
ゆでたらとけちゃった

とっても とっても クールなあなたに
アンアン すっかり 夢中
うっとり ねっとり ハートがどっきり
ちょっぴり見せちゃうわ

天気がいいから どっかへ行きたい
ヤンヤン お願い 聞いて
ウッフン 特別 豪華なランチを どっかで
あげるからンラララン
ランラララン ヤンヤヤヤン ヤンヤヤヤン

東(とう)西(ざい)南(なん)北(ぼく) 東(トン)南(ナン)西(シャー)北(ペー)
ランラララン ランラララン ヤンヤヤヤン
ヤンヤヤヤン
1(ワン)2(ツー)3(スリー)4(フォー) 1(イー)2(アル)3(サン)4(スー)

あん トマトはダメ 私のもの
    たこはあげる 見ためが キライ



384 :名無しさん@お腹いっぱい。:2005/12/02(金) 23:21:05
パッパラフニフニ パッパラほえほえ
パッパラフニフニ たまご!
パッパラフニフニ パッパラほえほえ
ゆでなきゃ生たまご

パッパラフニフニ パッパラほえほえ
パッパラフニフニ ビール!
パッパラフニフニ パッパラほえほえ
ゆでなきゃ生ビール

なんだか ちょっぴり その気になってる
アンアン あなたの 瞳
うっとり しっとり ムードをぴったり
すりすり しちゃおかな

何にも 知らない うぶな 少女に
ヤンヤン 言わせちゃ やあよ
ウッフン さいごの 殺し文句は
やっぱり あなたからンラララン
ランラララン ヤンヤヤヤン ヤンヤヤヤン

カムサハムニダ アイムソーリー
ランラララン ランラララン ヤンヤヤヤン
ヤンヤヤヤン
ラオチューカンペー 卒業万歳

七転八倒(しちてんばっとう) 七勝八敗(ななしょうはちはい)
弱肉強食 焼肉定食

あん たまごはダメ 私のもの
ヤン たまご! たまご!


385 :198:2005/12/02(金) 23:23:27
なるほど。有耶無耶のうちに誤魔化してしまおうという魂胆ですな。

386 :名無しさん@お腹いっぱい。:2005/12/02(金) 23:31:03
根拠は?

387 :名無しさん@お腹いっぱい。:2005/12/02(金) 23:48:55
ねーよwwwwwwwww

388 :名無しさん@お腹いっぱい。:2005/12/02(金) 23:53:47
なあに、198の真似をしてみただけさ。

389 :名無しさん@お腹いっぱい。:2005/12/02(金) 23:57:33
いや、385は本物の198だ。

390 :名無しさん@お腹いっぱい。:2005/12/03(土) 00:39:16
根拠は?

391 :名無しさん@お腹いっぱい。:2005/12/03(土) 00:40:40
この一週間のこのスレ流行語大賞は決まったな

392 :名無しさん@お腹いっぱい。:2005/12/03(土) 01:17:51
パッパラフニフニだな。

393 :名無しさん@お腹いっぱい。:2005/12/03(土) 10:53:09
>>378
それは言うだろ

394 :名無しさん@お腹いっぱい。:2005/12/03(土) 11:37:29
>>392=198
なるほど。有耶無耶のうちに誤魔化してしまおうという魂胆ですな。

395 :名無しさん@お腹いっぱい。:2005/12/03(土) 11:38:47
シェルスクリプトをシェルとか言うやつは、
シェルを書けるようなレベルにないので。
>>376のいうように、IT土方。

まあ、文脈で分かるけどね。気にはなる。

396 :名無しさん@お腹いっぱい。:2005/12/03(土) 12:50:28
必死だな。( ̄ー ̄)ニヤリッ
せいぜい、2chで吠えてればいいんだよ。キモヲタは。
人と話す時に、シェルで書くって言われて、どうせリアルじゃ否定できないくせにw



397 :名無しさん@お腹いっぱい。:2005/12/03(土) 13:02:01
根拠は?
っていいかげん芸がないか。まるで198みたいだ。

まあ、客が言ってるからそれに合わせるってのは、リーマン的にはおk
でも、それが正しい/好ましいかどうかは別問題だし、
ローカルなルールがどこでも通じると思うのも間違い

398 :名無しさん@お腹いっぱい。:2005/12/03(土) 17:08:42
言葉を正しく使えない奴がシェルスクリプトを
正しく書けるんだろうか。

#!/bin/sh

とか書いておきながら bash の文法で書いてそう。

399 :名無しさん@お腹いっぱい。:2005/12/03(土) 18:25:05
システム屋だよ。「俺は」そうは略さないが、bashのことを
shと呼ぶ人は本当に多い。
こっちも面倒だから、仕様書のような正確性を必要とする文書の中で
使われているのでなければ、一々指摘しない。

って言われるぞ。

400 :名無しさん@お腹いっぱい。:2005/12/03(土) 18:32:21
そもそもLinux系では
/bin/sh = /bin/bashのシンボリックリンク
なので、"Linuxについての話の中では"全く問題ないわけだが。

*BSDとか他のUNIX系OSは知らん。

401 :名無しさん@お腹いっぱい。:2005/12/03(土) 18:32:36
ジャーゴンやスラングの類を全く使わないITドカタの方が珍しい。
Hackers' Dictionaryに乗らないような日本特有の言い回しも多い。
土管屋だの金物屋だの
パスを「切る」、ディレクトリを「掘る」、レコードを「舐める」、...

インターネットサービスプロバイダは普通単にISPまたはプロバイダと呼ばれるし、
誰もWWWを「ワールドワイドウェブ」とは呼ばない。

402 :名無しさん@お腹いっぱい。:2005/12/03(土) 18:43:00
シェルでサイトを見るのに、インターネットがインスツールされてなくても
いいんですかぁ?というか、UNIXにはインターネットは付属してませんよね?

403 :名無しさん@お腹いっぱい。:2005/12/03(土) 19:05:21
わかっていってるのとそうでないのでは違うよね。
素人に解説するときはホームページっていうよ。

404 :名無しさん@お腹いっぱい。:2005/12/03(土) 19:29:19
システム屋が勝手に使う分には結構だが、2ch にまで持ち出さなくても…。
逆に 2ch 語をリアルで喋ってたらキモいだろ。

405 :名無しさん@お腹いっぱい。:2005/12/03(土) 19:36:25
>>404
「パスを切る」とか「データを吸い上げる」とか言うのにも一々突っ込むのか?



406 :名無しさん@お腹いっぱい。:2005/12/03(土) 22:25:12
突っ込むとすれば突然関係ないことを語り始めた>>401の精神状態についてだ。

とりあえず乗ると載るが区別できないくらい言語能力が足りないのを
ジャーゴンと言ってごまかしている件について。

407 :名無しさん@お腹いっぱい。:2005/12/04(日) 03:12:37
あのさ、自演か何か若欄がシェルスクリプトをシェルって4でもいいっしょ。
駄目って言う奴は、同定決定

で、scriptの仕様書書いてるやつって、どこの企業?

408 :名無しさん@お腹いっぱい。:2005/12/04(日) 03:18:33
>>407
同意

409 :名無しさん@お腹いっぱい。:2005/12/04(日) 03:44:07
>>407
そこまで適当に変換されると読みづらいよ

410 :名無しさん@お腹いっぱい。:2005/12/04(日) 10:13:21
正しく変換する自信が無い時に誤変換でごまかすってのは良くあるよね。
特にDQNの人とか。

411 :名無しさん@お腹いっぱい。:2005/12/04(日) 10:44:08
漢字書けないってのはまあ今の時代よくある話っちゃあよくある話だけど、
読むこともできないってのは問題だな。

412 :名無しさん@お腹いっぱい。:2005/12/04(日) 11:47:24
>>407
ダメにきまっとるだろ。

413 :名無しさん@お腹いっぱい。:2005/12/04(日) 11:55:01
意地でもこの話題でクリスマスまで持ちこたえる。

414 :名無しさん@お腹いっぱい。:2005/12/04(日) 11:56:18
最初はシェルっていうのに抵抗があったけど、慣れたら気にならなくなった

415 :名無しさん@お腹いっぱい。:2005/12/04(日) 12:08:49
↑二度と来るな。

416 :262:2005/12/04(日) 12:12:28
一週間ぶりに来てみたけど、まだやってんのかよ。
好きに使えっていてるだろ。頭悪いな。

417 :名無しさん@お腹いっぱい。:2005/12/04(日) 12:13:31
 _|: : : :\, . : ´: : : : : : : : : : : : : `ヽ- ―¬     ||
 : : : : : :/: \:./: : : /:/\: : : ヽ:\: : \:.└-- ァ j|   /   | ¬
 : : : : /: : /:. ,:イ:、:// /   \: : :ト、: X: ヽ\: : / ||  \  | ー
 : : :./:.:.:./:.〃//\':/      \|/: :.}: : ヽ \>||.  /   ヽ__ぃ
. ‐ 7: : :/:.// |/ ̄ ̄ヾ      /  ̄ヽハ: : :.',: |  ||  /^し  (_
  |: : :.|:./ |   ○  |     {  ○  |ヽ: :.|:.|  ||  ナ ヽ ヽ__
  | ¬|/ ヽ     ノ       ヽ     ノ  ヽN  ||   t」ー  (_
  / .ス      ̄ ̄         ̄ ̄     |   ||  / /
  { ||      /  ̄ ̄ ̄ ̄ ̄ ト.     |  〃 o o
 入 し       /         |:i       /   ||
 : : : ーi.     ,            |:|     ,ハ   jj  _____
 7: : : : ヽ     '          |:!   /|┘  }}/'  ̄ ̄ ̄`\ 〃
..厶 -‐''::¨:::ヽ  {             リ /ヽ┘   /'         }'
::::::::::::::::::::::::::::::{. `=ニ二二ニニ= '.::::::::::::::::\
::::::::::::::::::::/\:\       /:/\::::::::::::::::::\

418 :名無しさん@お腹いっぱい。:2005/12/04(日) 12:31:43
おれはジルだな。

419 :名無しさん@お腹いっぱい。:2005/12/04(日) 13:00:12
氏ね

420 :名無しさん@お腹いっぱい。:2005/12/04(日) 14:01:36
マリオカートをマリオって言うようなもんだな

421 :名無しさん@お腹いっぱい。:2005/12/04(日) 14:16:56
素朴な疑問です。
シェルを書く時、bash依存の命令を使うとすぐに「bash依存!」と言って叩かれるのに、
makeを書く時、GNUやBSD依存の命令を使っても、別に叩かれないのはなぜですか?

422 :名無しさん@お腹いっぱい。:2005/12/04(日) 14:35:05
shとbashの違いとかポータビリティとか、
覚えたての初心者だから、言ってみたいんだろ。
makeの違いがわかるような時期にはもうそういうのは卒業してる。

423 :名無しさん@お腹いっぱい。:2005/12/04(日) 15:19:24
>>421
頭悪そうだな。

424 :名無しさん@お腹いっぱい。:2005/12/04(日) 15:19:48
違いのわかる男キタ━━━━━━(゚∀゚)━━━━━━ !!!!

425 :名無しさん@お腹いっぱい。:2005/12/04(日) 15:42:58
>>421
シェルは手で書くもの。だから書き方に拘りが出てくる。
いろんな場面で即席でシェルを書くこともある。

makeはイマドキ手では書かない。./configureに作らせる。
だから、記述内容について拘らない。

426 :名無しさん@お腹いっぱい。:2005/12/04(日) 15:45:10
>>425
どんな仕事をしてる方ですか?

427 :名無しさん@お腹いっぱい。:2005/12/04(日) 15:46:07
久々に別パターンの釣り>>425が来た。

428 :名無しさん@お腹いっぱい。:2005/12/04(日) 15:49:30
bash 依存は書いてもいいけど、
#!/bin/sh 指定するなって話じゃないのか。

429 :名無しさん@お腹いっぱい。:2005/12/04(日) 16:03:46
makeスクリブトの話はスレ違い

430 :名無しさん@お腹いっぱい。:2005/12/04(日) 16:07:08
makeを書く

431 :名無しさん@お腹いっぱい。:2005/12/04(日) 16:09:37
そんなにシェル量産するのか?

432 :名無しさん@お腹いっぱい。:2005/12/04(日) 16:22:40
ttp://www.showa-shell.co.jp/

433 :名無しさん@お腹いっぱい。:2005/12/04(日) 16:44:40
>>425
「シェルを書く」
じゃねぇ
「シェルスクリプトを書く」



434 :名無しさん@お腹いっぱい。:2005/12/04(日) 16:53:07
Makefileのことをmakeってゆーな

435 :名無しさん@お腹いっぱい。:2005/12/04(日) 17:25:19
お前等おもろいな。「makeを書く」が壷にはまりまくり。

次は、「m4を書く」「configureを書く」「configを書く」「perlを書く」
「inetdを書く」「ntpを書く」「namedを書く」「pfを書く」「NISを書く」
「NFSを書く」「UMLを書く」もうバンバンいっちゃうぞ〜。

システム屋ってスゲエなwww

436 :名無しさん@お腹いっぱい。:2005/12/04(日) 17:39:16
>>416
262:2005/11/28(月) 02:05:41
416:2005/12/04(日) 12:12:28

>一週間ぶりに来てみたけど

437 :名無しさん@お腹いっぱい。:2005/12/04(日) 18:42:56
>>436
はいはいワロスワロス

438 :名無しさん@お腹いっぱい。:2005/12/04(日) 21:46:24
そもそもLinux!=UNIXだしぃー。


439 :名無しさん@お腹いっぱい。:2005/12/04(日) 22:24:14
まだやっての?このネタ…

440 :名無しさん@お腹いっぱい。:2005/12/05(月) 18:32:34
運用シェル
perlで書いても
運用シェル


441 :名無しさん@お腹いっぱい。:2005/12/05(月) 19:24:55
1 1.9898
2 1.9900
3 1.9789
4 1.9920

というようなファイル「val」というのがあったとします
この中の2列目だけを参照して例えば1.98以上のものが何個あるか数えるというスクリプトを作りたいのですが可能でしょうか?
もし可能ならばどのように作ればよいか教えてもらえますか
半日本やらインターネットやら見てもわかりませんでしたので


442 :名無しさん@お腹いっぱい。:2005/12/05(月) 19:39:30
>>441
小数点を含んだ数値処理はシェルでやるには無理がある。
awkかperlを使った方が早い。ということで、スレ違い。

敢えてやるなら、まず小数点を取り除く前処理して、
readで読んでtestで比較しながらカウンタ用変数をインクリメント、
最後に変数の値をechoかな。

443 :名無しさん@お腹いっぱい。:2005/12/05(月) 19:49:25
そうでしたか
強引な質問にもかかわらずやり方も教えていただいてありがとうございました

444 :名無しさん@お腹いっぱい。:2005/12/05(月) 20:00:04
まあ待てよ。
それぞれの数値をbcで判定して結果をもらえば可能。

445 :名無しさん@お腹いっぱい。:2005/12/05(月) 20:23:00
>>441
cat val |while read aa1 aa2;
do tt=`echo "if( $aa2 >= 1.98){ print 1, \"\n\";} else { print 0, \"\n\";}" |bc`;
if [ $tt -gt 0 ]; then echo $aa1 $aa2 $tt; fi;
done |wc -l

446 :名無しさん@お腹いっぱい。:2005/12/05(月) 20:45:12
>>442
シェルスクリプトのことをシェルってゆーな

447 :名無しさん@お腹いっぱい。:2005/12/05(月) 20:51:10
残念、442の用法は間違ってない。

448 :名無しさん@お腹いっぱい。:2005/12/05(月) 21:06:40
>>446
m9(^Д^)プギャー

449 :名無しさん@お腹いっぱい。:2005/12/05(月) 21:24:03
>>447
いや、間違ってるだろ。
小数点のあるなしはともかく、コマンドライン上で数値計算することはありえない。
だから、数値処理の話が出ている段階でシェルスクリプトであることが確定している。
それをシェルと呼んでしまっているから、やはり間違い。

450 :名無しさん@お腹いっぱい。:2005/12/05(月) 21:37:06
いいからてにをはを勉強してこいと

451 :名無しさん@お腹いっぱい。:2005/12/05(月) 21:39:02
>>449
日本語不自由ですか?

452 :名無しさん@お腹いっぱい。:2005/12/05(月) 21:51:21
#!/usr/bin/sh
for fn in ./work/*.JPG
do
if java Test $fn
then
echo "This is OK."
else
echo "This is NG."
fi
done
あるフォルダの中の画像を調べてOKかNGかを判定して表示するスクリプトを
書いているのですが動いてくれません(T_T)
JavaのTestというプログラムは判定を行って正しければ
  System.out.println(0);
正しくなければ
  System.out.println(1);
という命令を実行します.

453 :名無しさん@お腹いっぱい。:2005/12/05(月) 22:09:15
>>452
標準出力と終了ステータスの違いわかってる?
System.out.println()は標準出力に出すだけで、
終了ステータスとは関係ない。
このままでやるなら、
if [ `java Test $fn` = 0 ]
とかで判定するんだろな。

あと、#!/usr/bin/sh はSolaris依存だから、#!/bin/shと書いた方がいい。

454 :名無しさん@お腹いっぱい。:2005/12/05(月) 22:15:22
>>452
シェルスクリプトのことをスクリプトってゆーな

455 :名無しさん@お腹いっぱい。:2005/12/05(月) 22:18:12
>>451
442 の用法は間違ってはいないとは思うが、
>>449 の日本語も別に不自由じゃないと思うぞ。
>>451>>449 のどの「てにをは」が変だと言ってるの?

456 :452:2005/12/05(月) 22:20:31
>>453
ありがとうございますm(_ _)m
自分で試行錯誤してみて完成しました。私の場合は
   if [ `java Test $fn` -eq 0 ]
としてみました。
レスの内容からすると私のプログラムはあまり綺麗じゃない感じですね。
判定プログラムは標準出力で終えるよりも
  System.exit(0); もしくは System.exit(1);
とした方がよいのでしょうか

457 :名無しさん@お腹いっぱい。:2005/12/05(月) 23:35:24
>>456
この場合のように、リターンが整数値の判定だけを行うんであれば、exitのほうがいいだろうね。


458 :名無しさん@お腹いっぱい。:2005/12/06(火) 00:48:11
シェルスクリプトのことをシェルって呼ぶ風習が一部にあるのは知ってたけど、
実際にそういう風習のある部署に来たてみたら、
「シェルを削除しといて」ってさらっと言われたりするのが不思議なかんじ。


459 :名無しさん@お腹いっぱい。:2005/12/06(火) 01:13:56
さらりと削除して「業務命令ですから削除しときましたっ」っていっとけ

460 :名無しさん@お腹いっぱい。:2005/12/06(火) 01:49:39
>>449は高度な釣り

461 :名無しさん@お腹いっぱい。:2005/12/06(火) 01:51:39
シェルってのはシェルのことなんだよ。それだけのことだ。

462 :名無しさん@お腹いっぱい。:2005/12/06(火) 03:37:13
シェルがどうのこうのと話してると思ったら、セルのことだった


そんな経験はありませんか?

463 :名無しさん@お腹いっぱい。:2005/12/06(火) 03:39:15
セルビデオのことをセルってゆーな

464 :名無しさん@お腹いっぱい。:2005/12/06(火) 07:11:00
ワロス

465 :名無しさん@お腹いっぱい。:2005/12/06(火) 07:29:35
>>452
なぜそのJavaの中で直接
System.out.println("This is OK.");
System.out.println("This is NG.");
とやっちゃダメなの?
わざわざシェルで受ける必要ないじゃん。

466 :名無しさん@お腹いっぱい。:2005/12/06(火) 08:56:26
>>465
おまえ、頭の固いやつだな。
質問用に要件を絞ってるんだろ。

467 :名無しさん@お腹いっぱい。:2005/12/06(火) 11:26:42
>>465
JavaスクリプトのことをJavaってゆーな

468 :名無しさん@お腹いっぱい。:2005/12/06(火) 13:46:19
VisualBasicをVisualと呼ぶオレ様がやってきましたよ

469 :名無しさん@お腹いっぱい。:2005/12/06(火) 16:33:12
おぉ、ビジュアル系プログラマーか。聞いたことある

470 :名無しさん@お腹いっぱい。:2005/12/06(火) 17:30:00
だが見たことはない

471 :名無しさん@お腹いっぱい。:2005/12/06(火) 18:20:12
>>465
ていうか>>452だと1ファイル毎にいちいちクソ重いJVM起動しないといかんのが癌だ。

俺の好みから言うと、引数でファイルのリストを渡せるようにして、
各ファイル毎に処理して

ファイル名1 OK
ファイル名2 NG

のような形式で結果を標準出力に出力するようにJavaプログラムを組んだほうがいいと思う。

472 :名無しさん@お腹いっぱい。:2005/12/06(火) 19:46:50
すいません。ちょっと教えて下さい。

空白を含むテキストファイルを
1行ずつ読みこんで処理したいんですが、
for line in `cat filename`とすると、
各行の最初のスペースまでしか$lineに入りません。

for line in "`cat filename`"とすると、
今度は全行一度に$lineに入ってしまい、
各行毎に処理することができません。

何かいい方法はありませんでしょうか?


473 :名無しさん@お腹いっぱい。:2005/12/06(火) 19:51:35
while read line; do
  echo $line
done < filename  

474 :472:2005/12/06(火) 20:08:15
>>473
どうもありがとうございます。
ちょっと今試せないので、後で試してみたいと思います。

475 :名無しさん@お腹いっぱい。:2005/12/07(水) 00:28:37
>>471
JVMが糞重いのはあなたの環境が糞まみれだからです

476 :名無しさん@お腹いっぱい。:2005/12/07(水) 01:23:17
あ、そ。ならJava製のechoコマンドでも作って今度からそれ使えば?

477 :名無しさん@お腹いっぱい。:2005/12/07(水) 01:29:28
lsがjavaの方が効きそう

478 :名無しさん@お腹いっぱい。:2005/12/07(水) 01:40:38
一度でいいから見てみたい
Javaで書かれたXサーバ

479 :名無しさん@お腹いっぱい。:2005/12/07(水) 01:58:08
http://www.jcraft.com/weirdx/

480 :名無しさん@お腹いっぱい。:2005/12/07(水) 02:21:04
結構有名なのにな。

481 :名無しさん@お腹いっぱい。:2005/12/07(水) 05:13:44
もう煽り合うのやめてください。
お願いします。
少しの人間のプライドとエゴでスレを汚さないでください。
うううううううう。

482 :名無しさん@お腹いっぱい。:2005/12/07(水) 05:38:56
エゴエゴ

483 :名無しさん@お腹いっぱい。:2005/12/07(水) 07:32:35
>>475
欲嫁。
>>471 は「JVMが」重いとは言っていない。
「JVMの起動が」重いと言っている。
だから、シェルから毎回ファイル毎にJVMを起動するのが重いから、
JVMの中だけですべてのファイルに付いて(ファイルリストで)
処理した方がいいと言ってるんだよ。

「JVMの起動が」重いのは、現在のJavaの最新版+ハイスペックマシンでも
変わっていない。

484 :名無しさん@お腹いっぱい。:2005/12/07(水) 09:01:08
>>483
氏ね。
「シェルを書く」を徹底的に叩く高尚なスレに、
Javaなぞ低級品の話を持ち込むな。


485 :名無しさん@お腹いっぱい。:2005/12/07(水) 10:16:05
>>484
> 「シェルを書く」を徹底的に叩く高尚なスレに、

mkdir my-shell; cd my-shell
vi parse.y
vi main.c
vi Makefile
make

とかやってると叩かれるんですか?


486 :名無しさん@お腹いっぱい。:2005/12/07(水) 10:27:40
それは「シェルを書こう」スレあたり作ってそっちでやらんとここでは叩かれる

487 :名無しさん@お腹いっぱい。:2005/12/07(水) 12:27:27
>>484
Javaはコンパイラ言語。
シェルはインタラクティブ言語。
一般に、コンパイラ言語とインタラクティブ言語を合わせて
高級言語と呼ぶ。よってJavaも高級言語。
それを低級と呼んでいる >>484 はヴァカ。

488 :名無しさん@お腹いっぱい。:2005/12/07(水) 13:29:36
>>487
お前こそ、日本語をきちんと理解できない、かたわ。

489 :名無しさん@お腹いっぱい。:2005/12/07(水) 13:31:09
うわー…下手な釣り…びっくりした。今時珍しいぞこんなの。
みんな見ろよ >>487

490 :名無しさん@お腹いっぱい。:2005/12/07(水) 14:34:52
>>487
Javaはインタープリター言語だろ。
自力で実行できないわけだし。

491 :名無しさん@お腹いっぱい。:2005/12/07(水) 15:01:34
VMタイプのをインタプリタというのはちょっと違うと思う。
Javaコンパイラは仮想計算機用のマシン語コードを生成する。

つまり、そのマシン語を解釈できるようなハードウェアならば、
直接実行できる。そうでない一般的なハード上ではVMやJITのような
仕組みを使うわけだけれども。

492 :名無しさん@お腹いっぱい。:2005/12/07(水) 15:11:15
通常
o 入力ストリームを逐次実行するのがインタプリタ
o なにがしかのマシンコード(VM含む)に変換するのがコンパイラ
なわけだが, >>487 高級言語の定義が滅茶苦茶だってのは認める.

ちなみに >>487 はインタプリタとは言ってない件に関してひとこと > 490


493 :名無しさん@お腹いっぱい。:2005/12/07(水) 16:26:39
どう見ても釣りです。
本当にありがとうございました。

494 :名無しさん@お腹いっぱい。:2005/12/07(水) 17:25:10
まあJavaじゃなくてもプロセス起動は遅いからねえ。
for i
do
  sed 's/foo/bar/' $i > $$
  mv $i ${i}.bak
  mv $$ $i
done
みたいなラッパーループを使うよりは
perl -pi.bak -e 's/foo/bar/' *
の方が格段に速いし。

あまりツールボックスアプローチ的ではないかもしれないけれども。


495 :名無しさん@お腹いっぱい。:2005/12/07(水) 17:38:31
>>494
単なる外部コマンドの起動と一緒にしちゃいかん。
javaの起動は別段重い。
sedやmvの起動とは比べものにならない。
sedやmvは、シェル内部コマンドよりは遅いというだけで、十分使えるが、
javaを起動したりすると使いものにならん。

496 :名無しさん@お腹いっぱい。:2005/12/07(水) 18:03:26
>>495
いやそれは十分わかってるよ。だから>>471のように書いたのだけれども。

ま、findやxargsのようなコマンドとの相性もいいし、最低限ファイルのリストを処理できるように
しといたほうが何かと便利だよね。

497 :名無しさん@お腹いっぱい。:2005/12/07(水) 18:23:09
おまえらバカだねー
そんなに気になるならクラスローダを書けばいいじゃん

498 :名無しさん@お腹いっぱい。:2005/12/07(水) 19:25:25
>>497
スレタイ100回嫁。
ここは「シェルスクリプト」のスレであって、あくまでシェルのツールボックスの
一つとしてJavaプログラムを組み込む際の一般的な相性の悪さ/問題について
論じられているに過ぎない。

それに、>>452を複数ファイル対応に改造するのと、カスタムのクラスローダを
記述するのとどちらが効果が高くて楽だと思う?

499 :名無しさん@お腹いっぱい。:2005/12/07(水) 23:20:41
>>497はクラスローダをシェルスクリプトで書くつもりだよ。 多分

500 :名無しさん@お腹いっぱい。:2005/12/08(木) 00:01:07
×「シェルスクリプトで」
○「シェルで」

501 :名無しさん@お腹いっぱい。:2005/12/08(木) 00:07:07
朝来たときに仕事終わってりゃ良いのでどうでも良いです。

502 :名無しさん@お腹いっぱい。:2005/12/08(木) 00:21:47
キリ番とりつつ「シェル」ゆうなクズ。

503 :名無しさん@お腹いっぱい。:2005/12/08(木) 00:49:34
シェルウィーダンス?

504 :名無しさん@お腹いっぱい。:2005/12/08(木) 01:26:08
日本unix界の人材における停滞とマンネリぶりを
このスレの実によくあらわしてるな。

505 :名無しさん@お腹いっぱい。:2005/12/08(木) 01:30:05
ま、とりあえず「てにをは」を勉強しなおそうな。

506 :名無しさん@お腹いっぱい。:2005/12/08(木) 13:10:38
>>496
xargsは仕様バグがあるので使っちゃいけないコマンドなわけだが・・

507 :名無しさん@お腹いっぱい。:2005/12/08(木) 13:52:12
今時の xargs は -0 があるから、その問題は回避できる。
xargs に -0 のない OS では、GNU の奴を入れるべきかも。

508 :名無しさん@お腹いっぱい。:2005/12/08(木) 23:50:40
>>506
その使用とやらの影響しない範囲での使用ですが遣っちゃダメなんですか?

509 :名無しさん@お腹いっぱい。:2005/12/09(金) 00:05:17
xargsの仕様の問題を避けてきちんと使える奴は、「使っちゃダメなんですか?」
とか質問しない。なぜなら、使って良い場面か悪い場面か自分で判断できるから。

使っていいか悪いか質問する奴は、その時点でもうxargs使っちゃいけない。
なぜなら、仕様の問題を把握できてなくて、自分で判断できてないということだから。

510 :名無しさん@お腹いっぱい。:2005/12/09(金) 00:05:49
>>508
処理するファイル名に仮定を置けるんなら、別に使ってもいいでしょ。

511 :名無しさん@お腹いっぱい。:2005/12/09(金) 00:16:43
>>509
使っちゃダメと言っている>>506は自分で判断できてないということですね。

512 :名無しさん@お腹いっぱい。:2005/12/09(金) 00:19:44
毒のないフグは食べてもいいというのも知恵なら、
毒のないフグだとは思うけど念のため食べないというのも知恵というものだろう。

513 :名無しさん@お腹いっぱい。:2005/12/09(金) 00:22:11
>>512
毒がない部位を食べるつもりなんですが食べない方が良いですか?

514 :名無しさん@お腹いっぱい。:2005/12/09(金) 00:22:38
つまり>>506は正確な判断ができないわけですね。

515 :名無しさん@お腹いっぱい。:2005/12/09(金) 00:40:27
>>514
ちがう。まともなシェルの1つも書けないゴリラ以下の知能の持ち主。

516 :名無しさん@お腹いっぱい。:2005/12/09(金) 01:07:33
ググっても man を読んでも xargs のバグの解説が見つからない。
教えてえろい人。

517 :名無しさん@お腹いっぱい。:2005/12/09(金) 01:30:22
>>506 の脳内にのみ存在するので無理。

518 :名無しさん@お腹いっぱい。:2005/12/09(金) 01:42:56
('A`)エェー

519 :名無しさん@お腹いっぱい。:2005/12/09(金) 02:08:47
ファイル名にスペースやタブが含まれてると、そこで別のファイル名に
分離されてしまって正しく動かないという問題だよ。
*BSD や Linux なら、find では -print の代わりに -print0 を使い、
xargs には -0 オプションをつければ問題を解決できる。
常にそうする癖をつけてれば、念のためとか考えなくていいから簡単。

商用 UNIX で、これらのオプションがない場合には、GNU のをインス
トールして使うのがいいと思う。xargs 使わずに個別にコマンド起動
すると、かなり遅くなるので。

520 :名無しさん@お腹いっぱい。:2005/12/09(金) 02:19:06
8つぐらい走らせたいプロセスがあるのだけど。
CPUが4個あるマシン使ってるので、一度に4つ起動したいのだけど、なにかうまい方法ある?

A、B、C、D、E、F、G、Hとプログラムがあるとしたら
最初ABCDを起動させて、どれか終わったらE、さらにどれか終わったらFを実行する…って感じ。

521 : :2005/12/09(金) 02:20:43
make

522 :名無しさん@お腹いっぱい。:2005/12/09(金) 02:23:28
makefile に依存規則を書いて make -j4 ですな。
I/O 待ちの空き時間を有効に利用するには、make -j6 ぐらいが
いいかもしれん。

*BSD か Linux ならデフォルトの make で OK だけど、商用 UNIX
だと並列機能がない make が入ってる場合があるから、そういう場合
は GNU make あたりを入れるて使うように。

523 :名無しさん@お腹いっぱい。:2005/12/09(金) 02:37:00
4CPUあれば、8つ同時に投入ぐらいなら、それほどオーバヘッドは
ないだろうけどね。ただし、8プロセス分の、十分なメモリがあれば
の話だけど。メモリを溢れてページングしだすと極端に遅くなるから。
A & B & C & D & E & F & G & H で済むので簡単。

524 :名無しさん@お腹いっぱい。:2005/12/09(金) 08:27:34
IOがそれほどないプロセスだったら、4並列が最適かも。

525 :名無しさん@お腹いっぱい。:2005/12/09(金) 11:13:15
FUDを使って布教しようとするGNU者が居ます。

526 :名無しさん@お腹いっぱい。:2005/12/09(金) 11:19:16
えー、FUDってなによ。
てゆーか、自分では GNU者じゃなくて、NetBSD者のつもりなんだけど…

UNIXでしか使ってないなら、空白入りのパス名なんて作る方が悪い→終了
で済むことも多いけど、samba で Windows のファイルサーバとかやらせ
てると、ユーザが勝手に作っちゃうからどうしようもないのよ。

527 :名無しさん@お腹いっぱい。:2005/12/09(金) 11:46:22
何だかんだいって、GNU のツールの拡張機能は便利なものが多い。

528 :名無しさん@お腹いっぱい。:2005/12/09(金) 12:16:50
GNU以外の、たとえばSolarisのxargsに-0が実装されるまでは
xargsは封印(使用禁止)にする、でFA。

529 :名無しさん@お腹いっぱい。:2005/12/09(金) 12:59:58
> Solarisのxargsに-0が実装されるまでは

条件が抜けてる
1. そのスクリプトを、-0 をサポートしてない商用UNIX上でも動作させる必要があり
2. その商用UNIX上にGNU のツールをインストールできない、やむをえない事情があり
3. そのスクリプトを走らせる環境で、空白を含むパス名が使われている (例えば
 samba サーバを走らせている) 可能性を考慮すべきであると考えられる場合
に限ってなら、FA。
上記の条件の一つでも欠けていれば、FAじゃあないねえ。

530 :名無しさん@お腹いっぱい。:2005/12/09(金) 14:16:22
ソラリスで-0が未だに無いのは、つまり無くても困らねってことだ

531 :名無しさん@お腹いっぱい。:2005/12/09(金) 14:22:32
同じく Solaris に xargs コマンドが存在するのは、xargs コマ
ンドが必要だからだってことだな。
つまり、xargs 使用禁止ってのは自己矛盾した規則だってことだ。

532 :名無しさん@お腹いっぱい。:2005/12/09(金) 15:08:28
>>531
単にPosix2やらUNIX98やらの標準規格への適合性の問題じゃないの。
ま、使いどころ間違えなければ便利なコマンドなのは間違いないんだけど。

$ touch a\
-r
のようにして、xargs rmとかに渡すと危険なことが起きかねないファイルを作るのは簡単だ。


533 :名無しさん@お腹いっぱい。:2005/12/09(金) 15:27:07
でも、その問題なら Solaris でも「… | xargs rm --」とすれば回避できる
から、-0 オプションなんてなくても大丈夫だよ。

534 :名無しさん@お腹いっぱい。:2005/12/09(金) 16:45:40
じゃ>>532にインスパイア(wされて、
% touch a\
../なんとかかんとか
とかは?

という風にさ、色々なケースを一つ一つ細かく潰さなきゃならないところが問題。
しかもuniversalな解決法がないからxargsを使う場面場面ごとに毎度考察が必要。
そりゃ、個々のケースはそれぞれ>>532のように潰していけるんだろうけどさ。

535 :名無しさん@お腹いっぱい。:2005/12/09(金) 16:54:30
universal な解決法がないから使っちゃいけないって阿呆かねwww
場面ごとに考察して、問題がなければ使えばいいだろ。
細かいことでガタガタ抜かすなよ。

536 :名無しさん@お腹いっぱい。:2005/12/09(金) 17:08:55
商用 UNIX 以外のプラットフォームなら
xargs -0 <command> --
で、十分 universal な解決法なんだけどね。
まあ、そのうち Solaris の xargs にも -0 が入るんじゃないの。

537 :名無しさん@お腹いっぱい。:2005/12/09(金) 17:17:42
やってみれば分かるけど、>>534 は勘違い、というか、
その touch コマンドは失敗します。
理由は、「/」は常にディレクトリの区切りと解釈されて、パス名の
中に含むことはできないから。
(もちろんカレントディレクトリ直下に「a改行..」という名前の
ディレクトリがあり、そのディレクトリへの書き込み権限があれば、
touch はできるけど、そういう意味じゃないよね。)

だから、>>532 のような方法は、たとえ Solaris であっても「rm --」
のように常に「--」を使う習慣さえつけていれば、touch コマンドを
実行した人が書き込みを行なえるディレクトリ以下に対してしか影響
を及ぼさないので、普通の運用では、セキュリティホールには入らない
と思う。

538 :名無しさん@お腹いっぱい。:2005/12/09(金) 17:26:50
話は少し変わるが、
(古い?)Solarisの rmって、-- が使えないんじゃなかったかな?
なので、常に rm -- とする習慣を付けるのも万能ではないから困りもの。

539 :名無しさん@お腹いっぱい。:2005/12/09(金) 17:49:39
Solaris 1 ならともかく、Solaris 2 なら全て「--」をサポート
してるよ。Solaris 2 の元になった SVR4 が「--」をサポート
してるから。
さすがに Solaris 1 (SunOS 4) はもう end of life です。

540 :名無しさん@お腹いっぱい。:2005/12/09(金) 18:12:35
まとめると

1) 空白含みのファイル名に対応するにはfind -print0とxargs -0を使え(findとxargsが対応さえしてれば問題ない)

2) オプションに見えるファイル名に対応するには -- を使え

ってことか。--使えないコマンドには、ファイル名に仮定が置けないならば
xargsは使えないってことになるのかな。

541 :名無しさん@お腹いっぱい。:2005/12/09(金) 18:20:48
> --使えないコマンドには、ファイル名に仮定が置けないならば
> xargsは使えないってことになるのかな。

そうでもないでしょ。
rm は副作用が致命的だから -- つけて気をつけないと
いけないけど、もし xargs で実行するコマンドが rm
じゃなくて du -s だったら特に問題は起きない。

まあ、いまどき -- に対応してないコマンドは、標準コマンドには
ほとんどないと思うけどね。


542 :名無しさん@お腹いっぱい。:2005/12/09(金) 19:44:03
セキュアでポータブルなシェルスクリプトってのは作れないな。

543 :名無しさん@お腹いっぱい。:2005/12/09(金) 20:17:03
セキュアでポータブルな……何だって?

シェルスクリプトなら簡単だよな。書くときに気をつければいいだけ。
シェルなら今のシェルでもセキュアだよな。セキュアじゃないのは
実行されるコマンドなわけで。

544 :名無しさん@お腹いっぱい。:2005/12/10(土) 01:09:37
任意のコマンドが実行できる時点でセキュアでない。

545 :名無しさん@お腹いっぱい。:2005/12/10(土) 03:13:17
その論法はおかしい

system(3)のようなのがある言語はすべてセキュアでない,ということになるな.

まぁ,実際この世にセキュアな言語などというものが存在するのかが謎だがな.

546 :名無しさん@お腹いっぱい。:2005/12/10(土) 03:22:26
>>545
perl4本の用語解説をインスパイアしたような流れだな...


547 :名無しさん@お腹いっぱい。:2005/12/10(土) 03:38:09
>書くときに気をつければいいだけ。
きっとここに突っ込んで欲しかったんだろう。

548 :名無しさん@お腹いっぱい。:2005/12/10(土) 03:48:43
いわゆるバッドノウハウの総本山みたいな感じ?

549 :名無しさん@お腹いっぱい。:2005/12/10(土) 13:02:36
setuidされてなければ大丈夫

550 :名無しさん@お腹いっぱい。:2005/12/10(土) 15:31:23
>>545
>system(3)のようなのがある言語はすべてセキュアでない,ということになるな.
その通り

551 :名無しさん@お腹いっぱい。:2005/12/10(土) 17:14:44
馬鹿晒しage

552 :名無しさん@お腹いっぱい。:2005/12/10(土) 17:15:26
>>550
おまえ中卒だろ?w

553 :名無しさん@お腹いっぱい。:2005/12/10(土) 17:25:44
>>551
>>552

554 :名無しさん@お腹いっぱい。:2005/12/10(土) 17:46:47
Solaris8の/bin/shの変数の挙動について教えてください。

COUNTという変数があって

----
COUNT=0 ・・・0で初期化
while ほげ
do
   :
  (whileループ中にカウントアップ処理)
  echo "COUNT=$COUNT" ・・・・(1)
   :
done
echo "ループ終了後のCOUNT=$COUNT" ・・・・(2)
----

という処理を実行させたところ、whileループ中の(1)の処理では
正常にカウントアップされた値が表示されるのですが、
ループ終了直後の(2)の値は、何度実行させても0になります。(;´Д`)

こうなる原因はなんでしょうか?また改善方法についてヒントをください。
おながいします。

555 :名無しさん@お腹いっぱい。:2005/12/10(土) 18:01:22
>>554
サブシェルで実行されてるから

556 :名無しさん@お腹いっぱい。:2005/12/10(土) 18:08:24
サブシェルの問題だと思うが、そのコードだと説明不十分
たとえば下のコードならちゃんと 10 と出る。(Sol8)

#!/bin/sh
count=0
while [ $count -lt 10 ]
do
 count=`expr $count + 1`
 echo "count=$count"
done
echo "last:$count"

サブシェルの問題はUNIX FAQに載ってる
http://www.nurs.or.jp/~asada/FAQ/UNIX/section3.8.html


557 :554:2005/12/10(土) 23:17:02
>>555-556
ありがとうございますた。

とりあえず下記のサンプルで試してみました

パターン1
----------------
#!/bin/sh
COUNT=0
while read i
do
    COUNT=`expr $COUNT + 1`
    echo "now count = $COUNT"
done < /etc/passwd
echo "Last count = $COUNT"
----------------

パターン2
----------------
#!/bin/sh
COUNT=0
cat /etc/passwd | while read i
do
    COUNT=`expr $COUNT + 1`
    echo "now count = $COUNT"
done
echo "Last count = $COUNT"
----------------

558 :554:2005/12/10(土) 23:17:33
パターン3
----------------
#!/bin/sh
COUNT=0
exec 9<&0 < /etc/passwd
while read i
do
    COUNT=`expr $COUNT + 1`
    echo "now count = $COUNT"
done
exec 0<&9 9<&-
echo "Last count = $COUNT"
----------------

そうしたら、パターン1とパターン2のLast countは0のままで、
パターン3は正確な値がでました。
ちなみにパターン1のシェル指定を/bin/bashに変えたらあっさりと
正確な値が出たので、とりあえずはbashで逃げることにします。(;´Д`)

559 :名無しさん@お腹いっぱい。:2005/12/10(土) 23:33:09
>>558
bashismですね。

560 :名無しさん@お腹いっぱい。:2005/12/11(日) 01:13:02
bourne シェルの有名な欠点だな。

kshにすれば、パターン1もパターン2も値を引き継げる。

ちなみに、bashは変態仕様なんで、
パターン1は値を引き継げるけど、パターン2はダメ。


561 : :2005/12/11(日) 01:56:05
うん、Solaris決め打ちでいいならkshにすべきだよね。

562 :名無しさん@お腹いっぱい。:2005/12/11(日) 03:10:01
zsh も、ksh と同様パターン1〜パターン3全て動くんだよね。

ksh だと対話的に使った場合の機能がちょっと足らんという場合、
bash を使う人が多いんだけど、zsh の方が幸せだと思う。

スクリプトで使う場合には、ksh の方が小さいからいいだろうね。

563 :名無しさん@お腹いっぱい。:2005/12/11(日) 03:40:29
>>560
bash はパイプライン中に変数を定義しても
ダメみたいだな。

$ bash
$ a=1
$ echo $a
1
$ ls | a=2
$ echo $a
1


564 :名無しさん@お腹いっぱい。:2005/12/11(日) 10:11:03
kshって昔からSolaris(というかSVR4)に入っているのに
あんまり使われてないね。
メニュー表示(select)とかシェルスクリプトに向いてる機能があるのに

565 :554:2005/12/11(日) 10:43:33
コメントありがとうございます。
bashにもそういうクセがあるとは知らなかったし、Solaris標準のシェルであれば
何でもいいので、kshかzshを使ってみようと思います。

566 :名無しさん@お腹いっぱい。:2005/12/11(日) 10:59:04
zsh は Solaris 標準じゃねーぞ。
今は勝手に入ってることが多いのはたしかだけど、
インストールのしかたによっては zsh は入らないこともあったはず。

567 :名無しさん@お腹いっぱい。:2005/12/11(日) 12:03:08
でも、この例題だったらwcを使う。

568 :名無しさん@お腹いっぱい。:2005/12/11(日) 12:57:29
ジャー、ゴボゴボ

569 :名無しさん@お腹いっぱい。:2005/12/13(火) 19:05:37
>>567
バカ丸出し

570 :名無しさん@お腹いっぱい。:2005/12/13(火) 20:48:22
>>564
kshは結構つかわれていたよ。
売り物ソフトのインストーラーに利用されていたりして。

571 :名無しさん@お腹いっぱい。:2005/12/13(火) 23:54:45
結構っつうか素人と日本とかFreeBSD界隈以外はシェルといえば普通はkshのこと。

572 :名無しさん@お腹いっぱい。:2005/12/14(水) 01:00:44
('A`)エェー

573 :名無しさん@お腹いっぱい。:2005/12/14(水) 14:45:55
SunOS4.x使ってたけど、cshだった。

574 :名無しさん@お腹いっぱい。:2005/12/14(水) 15:15:37
シェルと言えば宮沢ミッシェル(*´∀`)

575 :名無しさん@お腹いっぱい。:2005/12/14(水) 20:37:54
>571
それはないな。

インストールスクリプトがkshスクリプトになってヴァーとかあったが、
普通はkshなんて思ってるのは中の人だけ。

576 :名無しさん@お腹いっぱい。:2005/12/14(水) 23:31:03
「自分はこう思う」ということだけを理由にして、
他人を納得させられるとでも思っているのか?

577 :名無しさん@お腹いっぱい。:2005/12/14(水) 23:44:28
自分の普通が他人にも普通とは限らないと思ってればいいよ。

578 :名無しさん@お腹いっぱい。:2005/12/15(木) 00:17:14
CDEの標準シェルはksh

579 :名無しさん@お腹いっぱい。:2005/12/15(木) 00:19:04
商用UNIXのほぼ100%でkshが標準。POSIX標準シェルもほとんどkshと同じ。
つうかkshがPOSIX標準になったって感じかな。

kshが標準に思えないやつは>>571でも言及したとおりただのアマチュア。

580 :名無しさん@お腹いっぱい。:2005/12/15(木) 02:17:57
今や商用UNIXなんて、シェア食われてるだけのガラクタじゃないか…。

581 :名無しさん@お腹いっぱい。:2005/12/15(木) 03:01:34
商用UNIXだけがプロ志向と考えるなら正しい

だがその前提がありえない

582 :名無しさん@お腹いっぱい。:2005/12/15(木) 09:12:17
>>580
UNIXにはブランドがある。

583 :名無しさん@お腹いっぱい。:2005/12/15(木) 12:21:55
kshからポートされたものにシェル関数があるんだけど、否定者はこれは使わないの?

584 :名無しさん@お腹いっぱい。:2005/12/15(木) 13:51:06
kshも使うことあるけどさ...

シェル関数は、使う前にポータビリティその他のバランスをよく考えるようにしてる。
避けてはいないけど、結果として滅多に使わないことになる(当社比)。
関数使うような場面では、perlに行っちゃっていい場合も結構あるし。

585 :名無しさん@お腹いっぱい。:2005/12/15(木) 14:35:09
>>583
意味不明。

586 :名無しさん@お腹いっぱい。:2005/12/15(木) 16:13:39
すいません、教えてください。

test_N.txt
foo_N.txt
bar_N.txt



test.txt
foo.txt
bar.txt

にリネームしたいんですが、どうすればよいのでしょうか?
なんかすごい簡単そうに出来そうなんですが、挫折しました_| ̄|○

587 :名無しさん@お腹いっぱい。:2005/12/15(木) 16:29:24
まぁいろいろあるだろうが、
expr $i : hoge でどう?

588 :名無しさん@お腹いっぱい。:2005/12/15(木) 16:49:36
for f in *_N*; do mv $f ${F%_N*}${f#*_N}; done
てのはどうかな。

589 :名無しさん@お腹いっぱい。:2005/12/15(木) 17:55:44
とあるjavaプログラムをcronで実行する為のシェルを作成しようとしています。

通常に何も考えなく実行するとCLASSPATHが通っていないため、実行できませんでした。
でためしに
CLASSPATH="目的のパス"
を追加してみたのですが、同シェル内のenvで吐き出してみても確かにCLASSPATHの環境が入っていません。
入れる方法ってどうしたらよいのでしょうか

590 :名無しさん@お腹いっぱい。:2005/12/15(木) 17:56:17
最善の方法ではないだろうけれど、一番最初に思いついたのは

for file in *_N.txt; do mv "$file" "$(echo $file | sed 's/_N.txt$/.txt/')"; done

展開とかはどうにも覚えきれない。

591 :名無しさん@お腹いっぱい。:2005/12/15(木) 18:08:44
>>589 スルーすべきところはスルーするとして
とりあえず java -help かなにか見れ。 -cp だとか -classpath とかオプションがあるから。

592 :名無しさん@お腹いっぱい。:2005/12/15(木) 18:19:48
スルーできない俺はどうすればいい?

593 :586:2005/12/15(木) 18:53:41
>>587
>>588
>>590
お返事ありがとうございます!
ご参考にさせていただきます。

594 :名無しさん@お腹いっぱい。:2005/12/15(木) 19:11:08
>>586
マジレス。perlのrenameスクリプト使え。その用途では超便利だから。
rename 's/_N//' *_N.txt
でオシマイ。

595 :名無しさん@お腹いっぱい。:2005/12/15(木) 19:15:56
>>586
rename _N "" *txt

おまえらバカかぁ

596 :名無しさん@お腹いっぱい。:2005/12/15(木) 22:42:54
>>594
すれ違いはやめてくださいね

597 :名無しさん@お腹いっぱい。:2005/12/16(金) 00:42:33
>583は大嘘なのだが、なんで585以外誰も文句いわんのん?

598 :名無しさん@お腹いっぱい。:2005/12/16(金) 00:58:21
いやまあ「583が嘘」と信じるに足る資料でもあれば
いっしょに文句言ってあげるよ、585さん。

599 :名無しさん@お腹いっぱい。:2005/12/16(金) 01:11:53
kshこそがUnixのシェルにふさわしく正しいシェル。
プログラミング言語としても最も一貫性が高く確実な動作が期待できる。

bashやzsh、tcshにはFreeBSDに似たうさんくささが漂いまくっている。

600 :名無しさん@お腹いっぱい。:2005/12/16(金) 01:21:50
プログラミング言語としてはrcの方が上だな

601 :名無しさん@お腹いっぱい。:2005/12/16(金) 01:25:55
俺はSolarisユーザなんだが、kshが一番標準(POSIXとかSUSとか)への準拠度が高い。
これは他のプラットフォームでも当てはまるのかな?

602 :名無しさん@お腹いっぱい。:2005/12/16(金) 01:34:46
>>601
つうかkshがPOSIX標準に昇華したのが実情。

603 :名無しさん@お腹いっぱい。:2005/12/16(金) 02:34:37
一人で頑張ってるな。

604 :名無しさん@お腹いっぱい。:2005/12/16(金) 03:49:53
ま、俺は /bin/sh か bash を使うけどな。

605 :名無しさん@お腹いっぱい。:2005/12/16(金) 10:27:30
bash(笑)

606 :名無しさん@お腹いっぱい。:2005/12/16(金) 16:53:00
スクリプトでもzsh使ってるな。

インストールできない環境では仕方なく
bashかshとなるけど。


607 :名無しさん@お腹いっぱい。:2005/12/16(金) 18:23:22
おれもボーンしか使わない。他のなんかあり得ない。

608 :名無しさん@お腹いっぱい。:2005/12/16(金) 21:04:12
スクリプト書くならshだな。
普段はbashかksh

609 :名無しさん@お腹いっぱい。:2005/12/16(金) 22:02:45
でも sh だけだと機能が足りなくて記述しにくい場合があって、
そんなときは、zsh や非標準的なコマンドをつかいまくるときがある。

610 :585:2005/12/16(金) 22:58:49
ばわ。忘年会終了っと。
んじゃ、事実の列挙いきます。

まずはhttp://en.wikipedia.org/wiki/System_Vを見ろと。
shell functionはSVR2 1984から実装されました。
kshが一般にでてきたのはkshがSVR4に付属してから。
SVR4のリリースは1990です。

なのにshell functionがksh由来と誤解してる人が多い理由は、
BSDの元になったSystemIIIでは、shell functionがなかったせいかと。
BSD系を使っていた人は、1990年にはいってSVR4系のSolarisやOSF1を使って
初めてshell functionに触れたわけです。もしくは、kshの亜流で触れたか。
そんなわけでksh=shell functionの源流と誤解する人が続出。

ただ、問題の焦点になってるkshと/bin/shでどっちが最初にshell functionを実装したか?
っていう点だけに絞るとちょっと微妙。というのも、誰も最初にfunctionを実装!とか言ってないん
だよね。kshは1983年に実装された奴が最初の実装。SVR2の/bin/shは1984年リリース。
もしkshがfuncionを最初に実装してたら・・・みたいな。

まあ、kshは1983年の実装で世界で最初にtty editingでviモードとemacsモードを
用意したシェルだ!とか叫んでるわけで、、、もしfunctionを最初に実装してたなら、
黙ってるわけ無いよな。pgr。という感じかな〜。

611 :名無しさん@お腹いっぱい。:2005/12/16(金) 23:00:01
失敗。俺は585じゃないぜ。597=610だ!くそ。598め、引っ掛けかよ!

612 :名無しさん@お腹いっぱい。:2005/12/16(金) 23:24:51
びっくりした俺が本物の585。

613 :名無しさん@お腹いっぱい。:2005/12/17(土) 00:00:05
> BSDの元になったSystemIIIでは
これだけでお前の話は信用できないことがわかる。

614 :名無しさん@お腹いっぱい。:2005/12/17(土) 00:21:22
あはは。Version 7とかいった方がよかったかな。

ググってたら/bin/shについてはBSD系で利用されてるshの元はSystem IIIという
記述がでてきたのでそのまま引用しちゃったよ。間違ってると思うなら、否定じゃなくて、
「訂正」よろ。

615 :名無しさん@お腹いっぱい。:2005/12/17(土) 00:36:00
boneとbash知ってれば良いでしょ。

それでなくても少ない飯の種。
シェルスクリプトを仕事で書くことも限られている。数はどんどん減っている。
Linuxに注がれる税金で食っていかないなど信じられない。


616 :名無しさん@お腹いっぱい。:2005/12/17(土) 00:39:18
> kshが一般にでてきたのはkshがSVR4に付属してから。

そうだっけ?
SVR4 よりもはるかに前から、ベル研がUUCPでソースを配ってた
ような…

617 :名無しさん@お腹いっぱい。:2005/12/17(土) 01:01:24
こういう話はNetNewsだな。検索してみた。

ksh の機能自体は、USENIXでの発表で、1983年7月から知られていた。
ttp://groups.google.co.jp/group/net.usenix/msg/fa6e1f7de3b63bba

1985年3月から、kshの入手が一般に可能になった。
ライセンス料は 1サイトあたり 2,000US$。そんなに高くない。
ttp://groups.google.co.jp/group/net.general/msg/c1d4828b1c297327

618 :名無しさん@お腹いっぱい。:2005/12/17(土) 01:10:22
あと、ksh は、最初の USENIX の発表の時点、すなわち 1983 年には
既に shell function を実装していたと思うよ。
発表のタイトルが、
KSH - A Shell Programming Language
というように、対話的機能じゃなくて、プログラミング機能の方を
表題としていたぐらいだし。

少なくとも1984年10月には、shell function を使ってる例があった。
ttp://groups.google.co.jp/group/net.sources/msg/c0aa7b7333d21f60

619 :名無しさん@お腹いっぱい。:2005/12/17(土) 01:20:26
> boneとbash知ってれば良いでしょ。

boneじゃなくて、Bourne sehll だよ。
ポータビリティが必要な場合のために、Bourne shell の知識は確かに必要。
そうじゃない場合には、bash よりは ksh や zsh の方が好きだな。
zsh と比べて bash の利点って、なにかあったっけ。特にない気がする。

620 :名無しさん@お腹いっぱい。:2005/12/17(土) 01:29:31
>>619
普及率

621 :名無しさん@お腹いっぱい。:2005/12/17(土) 01:35:05
つまり、車はトヨタ、CPUはインテル、OSはWindowsってタイプの
人が bash を選ぶと。(ぉ

622 :名無しさん@お腹いっぱい。:2005/12/17(土) 01:47:10
bone<ハズかシス(=///∇///)ゞ

仕事上必死こいてUnix(Linux)勉強しとりますが、想像してたより遥かにWindowsばっかり。
今の職場を離れたら何処で技術を生かせばよいのか・・・
勢いでLinuxを入れてしまった自治体以外に、10年後もうシェル餌は無いのではと思います。

>>621
Linux様が仕事を与えてくださる以上、そこに文句をいうなど信じられませぬ。

ただまあ職場にはWindowsは当然のこと、HP-Unix、FreeBSD、Linux、更には汎用機(へのアクセス環境)まであるんですが・・・




10年後、だれがこれ、管理するんだろう?
おまいら、せめてスクリプトはBourne shellで書いてください。

623 :名無しさん@お腹いっぱい。:2005/12/17(土) 02:24:43
>>619
bashの利点は、Linuxが動いていればおおむね入っている。かな。

624 :名無しさん@お腹いっぱい。:2005/12/17(土) 02:40:22
ほとんどの Linux ディストリでは、zsh もデフォルトで入ってると思うが。
RedHat, Fedora Core, SuSE、どれも特に何も選ばなくても最初から入るぞ。

625 :名無しさん@お腹いっぱい。:2005/12/17(土) 03:20:47
Linuxzaurusや玄箱、CobaltRAQなんかのLinuxは標準状態ではbashはあるけどzshはないかな。

626 :名無しさん@お腹いっぱい。:2005/12/17(土) 03:27:20
>>624
それ全部rpm系のディストリビューションだから列挙の意味がない。
SuSEは微妙に違うけど、FCとRedhatはほぼ同じだし。
Redhatって最低限のパッケージ選んでもzsh入ったっけ?


627 :名無しさん@お腹いっぱい。:2005/12/17(土) 04:05:57
> それ全部rpm系のディストリビューションだから列挙の意味がない。

rpm かどうかって、パッケージシステムの違いであって、
パッケージの取捨選択とは独立でしょ。
Fedora Core と RedHat も相当違う。

628 :名無しさん@お腹いっぱい。:2005/12/17(土) 08:59:02
スレ違いもいい加減にしろや。ここはkshのスレだ。

629 :名無しさん@お腹いっぱい。:2005/12/17(土) 12:01:45
>>619
>zsh と比べて bash の利点って、なにかあったっけ。

bashはあくまでBourne Shellの上位互換になっている。
Bourne Shell用のスクリプトはすべてbashでも動く。

しかし、zshは機能拡張の際に上位互換性(の一部)を犠牲にしたので、
Bourne Shell用のスクリプトの一部は zshでは動かない。

なので、あくまでBourne Shellの拡張と言う立場を守るなら
bashが優位。

zshはあくまで独自拡張シェル。

630 :名無しさん@お腹いっぱい。:2005/12/17(土) 12:06:40
bashはposix shellの拡張だ、ボケ。
bourneは実装によって区々だから、全てのbourne スクリプトが、bash上で動くとは限らない。


631 :名無しさん@お腹いっぱい。:2005/12/17(土) 12:13:49
>>630
結果的にbashはBourne Shellの上位互換性が保たれてるよ。
厳密には、ブレース展開がデフォルトで非互換だから、
set +B して、ブレース展開を無効にすると完全互換になる。

zshの場合は互換性はない。

632 :名無しさん@お腹いっぱい。:2005/12/17(土) 13:00:15
おまいら ^ がパイプだったころを思い出しながらスクリプト書いてまつか?



633 :名無しさん@お腹いっぱい。:2005/12/17(土) 14:42:24
今でもパイプは^ですが

634 :名無しさん@お腹いっぱい。:2005/12/17(土) 16:30:39
> 結果的にbashはBourne Shellの上位互換性が保たれてるよ。

これは嘘。
bourne shell にはいろいろ変種があるので、その全てについて
互換性があるとは限らない。

> zshの場合は互換性はない。

これも嘘。
現時点で、bourne shell とは何かを定義するなら、POSIX の
/bin/sh の仕様とするのが妥当だが、
http://pc8.2ch.net/test/read.cgi/unix/1131026501/556-563
を見ても分かる通り、zsh は POSIX 互換だが、bash は非互換。

すなわち、bourne shell との互換性を重視するなら、zsh を
使うべきであって、bash は捨てないといけない。

635 :名無しさん@お腹いっぱい。:2005/12/17(土) 16:51:51
>>634
>現時点で、bourne shell とは何かを定義するなら、POSIX の
>/bin/sh の仕様とするのが妥当だが、

ここに理論の飛躍がある。
長年使われてきた多くのUNIXの/bin/shはPOSIX互換ではない。
しかし、これが事実上の/bin/shとして業界標準的に定着している。
bourne shell とは何かを定義するなら、POSIXではなく、
事実上定着している/bin/shの仕様と考えるのが妥当。
逆に、POSIX互換にすると事実上定着している/bin/shとは非互換になる。

そういう意味で、bashは/bin/shの上位互換。
zshは非互換。

636 :名無しさん@お腹いっぱい。:2005/12/17(土) 17:08:40
だから、スクリプトならkshをつかえよ。

637 :名無しさん@お腹いっぱい。:2005/12/17(土) 17:08:58
> bourne shell とは何かを定義するなら、POSIXではなく、
> 事実上定着している/bin/shの仕様と考えるのが妥当。

そういう意味では、bash も Bourne shell 互換じゃないね。
たとえば Bourne shell では「~user」は single quotation
をつけなくても「~user」そのままと解釈されるされるが、
bash だと「/home/user」のように展開されてしまうから
互換性がない。
これに限らず、bash が Bourne shell と互換性がないところは
いくらでもある。zsh が Bourne shell と互換性がないという
なら、それは bash でも同じ。


638 :名無しさん@お腹いっぱい。:2005/12/17(土) 17:23:23
>635
bash使ったことないだろ?

あれ使った経験があって上位互換だなんて寝言が言えるならマジ尊敬するよ。

639 :名無しさん@お腹いっぱい。:2005/12/17(土) 17:26:23
bash 使ったことがないんじゃなくて、むしろ、本物の Bourne shell
を使ったことがないのでは?

bashism (ないし bashizm) って、良くバグレポートのタイトルにも
なってるぐらい有名だよねえ。

640 :名無しさん@お腹いっぱい。:2005/12/17(土) 21:53:03
>>637
Bourne shでは ~user のような記述はしないし、
たまたまチルダーがそのまま文字列に使われる確率も低いので、
その点は問題にならない。

しかし、zshでは変数の展開時の解釈が変わってしまったので、
この点が大きな問題になる。

たとえば、
var='hoge hage'
と代入した後、
some_command $var
という記述があったとすると、
zshでは$varの展開でhogeとhageが分離されず、
スペースを含めてそのまま1個の引数として解釈される。

つまり、zshの$varは、Bourne shの"$var"に等価なわけだ。
なので、あえてダブルクォートせずに$varで解釈させたい場合、
そのBourne sh用のスクリプトをzshで実行すると期待通り動かない。

しかし、bashなら問題なく動く。


641 :名無しさん@お腹いっぱい。:2005/12/17(土) 22:17:14
コマンド名を sh として起動した場合、zsh は、その変数展開の
解釈についても、自動的に Bourne shell 互換になるよ。

zsh として起動した場合も、.zshenv に
setopt SH_WORD_SPLIT
と書いておけば Bourne shell 互換になる。

642 :名無しさん@お腹いっぱい。:2005/12/17(土) 22:21:12
>>641
その点ならbashも同様の"はず"だが。


643 :名無しさん@お腹いっぱい。:2005/12/17(土) 22:35:33
>>641
裏を返せば、コマンド名shでzshを起動するなどのことを
明示的にやらないとBourne shell互換ではないってことだね。
(bashだと、コマンド名bashで起動しても互換だけど)

で、実際問題zshをshの代わりに使うためには sh -> zsh の
symlinkが必要だと思うが、sh -> zsh などというリンク張ってるホストは
見たことないな。
sh -> bash ならよく見るけど。

644 :名無しさん@お腹いっぱい。:2005/12/17(土) 22:38:54
シェルスクリプトのスレなんだから、シェルの優劣の宗教論争なんて
ほかのスレでやってくれ。


645 :名無しさん@お腹いっぱい。:2005/12/17(土) 22:45:34
>640


>641


zsh使っててsetopt SH_WORD_SPLITしてない奴がいたのか。珍しす。
そのオプションの存在すら忘れるくらいずっとONにしっぱなしだぜw

ま、非互換ってことでいいよ。zshは非互換。>631がいってるみたいにbashも非互換。
仲良くやれよな。

646 :名無しさん@お腹いっぱい。:2005/12/17(土) 22:50:41
>>645
setopt SH_WORD_SPLIT しちゃったらzsh使う意味が半減するじゃん。
いちいちダブルクォートしなくても変数が使えるのが
zshのメリットのひとつだろ?

647 :名無しさん@お腹いっぱい。:2005/12/17(土) 23:10:31
>symlinkが必要だと思うが、sh -> zsh などというリンク張ってるホストは
>見たことないな。

MacOSX 10.[01]

648 :名無しさん@お腹いっぱい。:2005/12/18(日) 01:11:53
つまりkshを使うのが常人ということだな。

649 :名無しさん@お腹いっぱい。:2005/12/18(日) 01:13:49
>>648
正しい。
常人の定義によるがな。


650 :名無しさん@お腹いっぱい。:2005/12/18(日) 04:15:39
>>648が定義なのだろう。

651 :名無しさん@お腹いっぱい。:2005/12/18(日) 06:46:21
空白を含むパスにおいてあるコマンドを実行するにはどうしたらいいのでしょう?
#! /bin/sh
...
netSDK="/c/Program Files/Microsoft Visual Studio .NET 2003/SDK/v2.0/Bin/"
...
try_execute (){
 echo "Trying execute: $@" >> $config_log
 $@ >> $config_log 2>&1
 ret=$?
 echo "Execution status code: $ret." >> $config_log
 return $ret;
}
...
try_execute "\"${netSDK}ildasm.exe\" /?"
...

Trying execute: "/c/Program Files/Microsoft Visual Studio .NET 2003/SDK/v2.0/Bin/ildasm.exe" /?
./configure: "/c/Program: No such file or directory
低脳bash('A`)

652 :名無しさん@お腹いっぱい。:2005/12/18(日) 07:21:58
自分の無能をbashのせいにするなよ。

653 :名無しさん@お腹いっぱい。:2005/12/18(日) 07:32:21
bash・zsh依存の話題はlinux板のスレでやるといいんでなかろか。
せっかくあるんだから。

【sed】シェルスクリプト総合@LINUX【awk】
http://pc8.2ch.net/test/read.cgi/linux/1121994321

654 :651:2005/12/18(日) 07:38:13
ryoukai!!

655 :名無しさん@お腹いっぱい。:2005/12/18(日) 08:24:11
>>651
$@ >> $config_log 2>&1
のところを、
"$@" >> "$config_log" 2>&1
にすればいいだけの話。

変数参照時は、常に " " を付ける癖を付けろ。
今や空白を含むパス名は日常茶飯事だからダブルクォートは必須。

>>653
bash依存の話題じゃないのでこのスレに書いていいんだよ。

656 :名無しさん@お腹いっぱい。:2005/12/18(日) 08:28:58
でもまあ #! /bin/sh ではじまってbashという質問者さんは
向こうでやった方がなにかと幸せになれると思ふ

657 :名無しさん@お腹いっぱい。:2005/12/18(日) 08:32:04
>>647
本当? sh -> bashじゃないの?

658 :名無しさん@お腹いっぱい。:2005/12/18(日) 08:51:29
>>655
だね。
zshの件にしても、Bourne Shell互換で使うにはbash/zshのどちらが
適しているか、という話題なので、このスレに書くべきだ。
(bash/zsh依存の話題ではない)

>>653 は余計なお世話ということでFA。

659 :名無しさん@お腹いっぱい。:2005/12/18(日) 09:03:34
向こうだってシェルスクリプト総合スレなんだから、
こちらに書く「べき」なんてロジックはどこからも成り立たないだろう。
658は妄言ということでFA。

660 :名無しさん@お腹いっぱい。:2005/12/18(日) 09:20:19
それにしても >>653 の理由にはならないけどな。

661 :名無しさん@お腹いっぱい。:2005/12/18(日) 11:44:51
互換ってことだけいうと、bashはどれだけ互換モードで走らせても
動作しないシェルスクリプトがある。そのせいでashとか作るハメに
なってる。ditributerもbashじゃ駄目だと認めてるわけね。

一方経験上zshのsh互換モードで動かなかったことはない。

俺はzshを押すな。まあ、/bin/shがbourne shellな普通のシステムには
関係ないことだけどね。linuxとかashが存在してるのにデフォのshは
互換性に乏しいbashのまま。一度bashを標準にしたから元に戻せない
ってことなんだろうけど、馬鹿だよな。

662 :名無しさん@お腹いっぱい。:2005/12/18(日) 12:01:00
そこで経験上とか言っちゃうと説得力がないので具体例をおながいします。
shの互換性チェックスクリプトとかどっかないんだろうか。ありそうなもんだけど。

663 :名無しさん@お腹いっぱい。:2005/12/18(日) 12:50:23
>>651
一行目が間違っている。
正しくは

#!/bin/ksh

だ。

664 :名無しさん@お腹いっぱい。:2005/12/18(日) 12:52:19
>>662
POSIX.org から互換性検証プログラムを入手してチェック。

665 :名無しさん@お腹いっぱい。:2005/12/18(日) 12:56:56
>664
どこから落とすの?
あそこ見づらくてよくわからないからもうちょっと詳しく

666 :名無しさん@お腹いっぱい。:2005/12/18(日) 14:24:25
年寄りは、bashつかえないんだよ。
新しいことにもついて行けないじじいたち...かわいそす

667 :名無しさん@お腹いっぱい。:2005/12/18(日) 14:29:15
シェルスクリプトの互換性についての議論スレはここ?

668 :名無しさん@お腹いっぱい。:2005/12/18(日) 14:44:13
今やってるのはシェルの互換性だろ?
シェルスクリプトの互換性っていうと、このスクリプトは
Solarisに持ってっても動くか、とかそういう話になる。

個人的には後者はこのスレの範疇だけど前者はスレ違いのような気がする。
bashやzshや俺様専用シェルを開発してる人のスレってわけじゃないから
やったとしても建設的な結果は得られないだろうし。


669 :名無しさん@お腹いっぱい。:2005/12/18(日) 14:48:22
>>661
>ashとか作るハメになってる。

それは違う。
ashがあるのは、起動フロッピーの中に入れるため。
bashの互換性の問題ではない。
でも、最近はもうフロッピー起動なんてしないし、
CD起動またはUSBメモリ起動が当たり前になったから、
ashの役目も終った。
事実、Fedora Coreとかではashは削除された。
bashがあればすべて桶。Bourne Shell互換完璧。

670 :名無しさん@お腹いっぱい。:2005/12/18(日) 15:22:06
互換完璧ってwww

つい先日もなんかのメイク用スクリプトで行末に空白があったから
bashが乗ってるLinuxじゃ動かなくて、スクリプト修正するハメになりましたが?

671 :名無しさん@お腹いっぱい。:2005/12/18(日) 15:28:07
オヤジ臭が漂うスレでつね。

672 :名無しさん@お腹いっぱい。:2005/12/18(日) 15:34:49
確かにbashの狭い世界に固執するのは年寄りくさい。

673 :名無しさん@お腹いっぱい。:2005/12/18(日) 23:06:08
tclsh

674 :名無しさん@お腹いっぱい。:2005/12/18(日) 23:24:40
>>670
その行末の空白にどんな存在意味があるのかを問いたい。

675 :名無しさん@お腹いっぱい。:2005/12/19(月) 00:46:35
>674
存在意味の無い空白があるぐらいで動かなくなるbashのどこが互換だと問いたい。

676 :名無しさん@お腹いっぱい。:2005/12/19(月) 00:57:30
>>675
全角空白だったとか改行コードが違ったとかじゃないよな?
どんなスクリプトか、ぜひ見せてくれ。


677 :名無しさん@お腹いっぱい。:2005/12/19(月) 01:35:46
真面目な話、bashは本当に互換性バッチリだと信じて
そういう質問をしてるわけ?釣りじゃなくて?

普通にbashが/bin/shなLinux使ってりゃ(使わされてりゃ)、
非互換問題に日々遭遇するだろうに、そんな状況で目を
キラキラさせてbashは互換なんですとか言ってる奴は
全員釣りだと思ってたよ。

何でエラーが出たかは覚えてないけど、多分まだtarファイルは
消さずにおいてあるから調べりゃ見つけれる。覚えてたら
調べとくわ。

678 :名無しさん@お腹いっぱい。:2005/12/19(月) 01:56:45
>>677
俺は bash と sh の互換性にはあまり興味が無い。

単純に >>670 のエラーの原因が何なのか
興味が湧いたから俺も検証したくなっただけ。

そういうわけで、気が向いたら >>670 のソースよろしくな。

679 :名無しさん@お腹いっぱい。:2005/12/19(月) 02:54:39
bash/shの非互換性かあ。まとまったら結構いい資料になると思うなあ。

bashのtype -pは便利だけど少なくともSolaris /bin/shで動かない。

bashのechoが-nを受け付けるのはPOSIX的におかしい。

bashでexport VAR=VALUEと書けるのは悪くない(POSIXで許されてる)。

680 :名無しさん@お腹いっぱい。:2005/12/19(月) 03:06:58
自作のスクリプトをソラリソに持ってったらじぇんじぇん動かなくて結局Perlしか使わなくなった俺ガイル

681 :名無しさん@お腹いっぱい。:2005/12/19(月) 06:51:53
>>679
欲嫁。
bashとshが相互互換という話じゃないよ。
bashがshの上位互換という話。
だから、bashでのみ使えるtype -pとかexport VAR=VALUEは
この議論とは関係ない。
sh用のスクリプトがすべてbashでもそのまま動くという話。
bash用のスクリプトがshでは動かないのは当たり前なので、
そういう話をしているんじゃないよ。

で、shのスクリプトはzshではそのままでは動かないということ。

682 :名無しさん@お腹いっぱい。:2005/12/19(月) 08:41:48
上位互換、下位互換、相互互換の区別も付かんのか…。


683 :名無しさん@お腹いっぱい。:2005/12/19(月) 09:30:53
ksh使っとけ

684 :名無しさん@お腹いっぱい。:2005/12/19(月) 19:21:10
上の方でもでてるが、whileにパイプやリダイレクト使った場合の挙動の違いとかあるしな。
bashがshの上位互換というのは、間違い。
単に「互換」というからには、100%で無ければならない。


685 :名無しさん@お腹いっぱい。:2005/12/19(月) 20:44:33
>>684
上の方のwhileのパイプの件で書いてあったのは、
shでは動かなかったが、bashにしたら動いたという話。
なので関係ない。
ここで関係あるのは、「shで動いたのにbashでは動かない」ことはない、
ということ。

686 :名無しさん@お腹いっぱい。:2005/12/19(月) 20:59:51
>上の方のwhileのパイプの件で書いてあったのは、
>shでは動かなかったが、bashにしたら動いたという話。

この場合はたまたま bash の方が希望の動作だったというだけのことでしょ。
逆に sh の挙動の方が望みという状況だってありえる。
同じものが同じに動かないってのは互換とは言わん。

687 :名無しさん@お腹いっぱい。:2005/12/19(月) 21:05:39
>>686
「動かない」「意味をなした動作をしない」のが希望の動作であるはずがない。
なので、上の例についてはshの挙動が希望の動作のわけがない。

反論するなら実例を挙げろ。

688 :名無しさん@お腹いっぱい。:2005/12/19(月) 21:15:19
上の方の while の例は動いとる(=エラーになっとらん)だろ。
スクリプトを書いた人間の意図と違う(使い方を間違ってる)だけ。
バグは互換性以前の問題。

689 :名無しさん@お腹いっぱい。:2005/12/19(月) 21:27:41
だからksh使っとけって

690 :名無しさん@お腹いっぱい。:2005/12/19(月) 21:46:53
シェルを書くのと、正統談義をひっくるめて、
これからケーシェルを書くスレということにします

691 :名無しさん@お腹いっぱい。:2005/12/19(月) 23:39:56
>>690
ケーシェルって、MS-DOS時代にコマンド環境だけUNIX風にするために
command.comの代わりにインスコしたやつだろ。
今で言うCygwinみたいな。

692 :名無しさん@お腹いっぱい。:2005/12/20(火) 16:00:09
KI-shellか?

693 :名無しさん@お腹いっぱい。:2005/12/20(火) 22:53:48
石野さんのシェル


694 :名無しさん@お腹いっぱい。:2005/12/21(水) 00:17:13
非互換性、けっこう情報集まったな。wikiにするか?

695 :名無しさん@お腹いっぱい。:2005/12/21(水) 00:22:15
>>694
いらん。ksh を使えば何の問題もない。

696 :名無しさん@お腹いっぱい。:2005/12/26(月) 18:41:02
伸びるときと過疎るときの差が凄いなw

697 :名無しさん@お腹いっぱい。:2005/12/27(火) 00:55:09
伸びるためには魔法の言葉が必要です。

「シェルを書いてるんですが・・・・」

さあ皆さんもご一緒に。

698 :名無しさん@お腹いっぱい。:2005/12/27(火) 01:02:16
「シェルを書いているんですが…」が「シェルスクリプトを
書いているんですが…」の誤用であるかのように認識できる
ということはつまりちゃんと通じているということだ。

699 :名無しさん@お腹いっぱい。:2005/12/27(火) 01:16:55
す げ え 釣 ら れ た く な っ た 俺 ガ イ ル

700 :名無しさん@お腹いっぱい。:2005/12/27(火) 01:34:05
ところで ksh 連呼してる奴は全然釣れてなくて惨めだな。

701 :名無しさん@お腹いっぱい。:2005/12/27(火) 02:42:59
Solarisスレにも来てたなあ。
だれからも相手にされてなかったみたいだけど。

702 :名無しさん@お腹いっぱい。:2005/12/27(火) 09:24:57
別に釣りでも何でもないが。単なる正論。有効な反論が一切無いのがその証拠。

703 :名無しさん@お腹いっぱい。:2005/12/27(火) 12:49:30
ksh連呼は俺以外に一人はいる。

704 :名無しさん@お腹いっぱい。:2005/12/27(火) 12:58:37
>>698
通じてはいるが誤用だな。

705 :名無しさん@お腹いっぱい。:2005/12/27(火) 13:05:22
じゃあ、シェルスクリブトを書いてるときの擬音は「しぇるしぇる」にしようぜ

706 :名無しさん@お腹いっぱい。:2005/12/27(火) 13:09:04
「スクリブト」ってのは新しいな

707 :名無しさん@お腹いっぱい。:2005/12/27(火) 14:43:30
ネタがなくなったからってわざわざ供給しなくてもいいんだよ

708 :名無しさん@お腹いっぱい。:2005/12/27(火) 19:47:25
自作シェル

709 :名無しさん@お腹いっぱい。:2005/12/27(火) 23:12:24
>>704
誤用と正しい用法との境界はあいまい。奈良時代の日本語から見れば
現代日本語はもう誤用のオンパレード。

710 :名無しさん@お腹いっぱい。:2005/12/27(火) 23:12:31
>>699
ごめっ、言わずにはいられない。

既に釣られてんじゃん

711 :名無しさん@お腹いっぱい。:2005/12/28(水) 00:02:41
スレが順調に伸びております。

712 :名無しさん@お腹いっぱい。:2005/12/28(水) 00:42:44
あのころほどではぜんぜんない

713 :名無しさん@お腹いっぱい。:2005/12/28(水) 07:09:32
冬休みの課題として、シェルを始めたいと思います。
まずは何からやればいいか、皆さんの経験を教えてください。
あと、今はフリーのシェルをしていますが、
仕事でシェルをやる場合、やっぱり有料のシェルを買ってじゃないと
身につかないですか?

714 :名無しさん@お腹いっぱい。:2005/12/28(水) 07:37:56
>>713
そのとおりです。

はい、次〜

715 :名無しさん@お腹いっぱい。:2005/12/28(水) 07:48:40
>>713 皆さんの経験を教えてください。
>>714 そのとおりです。

日本語勉強汁!

716 :名無しさん@お腹いっぱい。:2005/12/28(水) 08:33:17
>> 身につかないですか?
> そのとおりです。

717 :名無しさん@お腹いっぱい。:2005/12/28(水) 09:08:21
2行目までしか読まない>>715

718 :名無しさん@お腹いっぱい。:2005/12/28(水) 09:32:20
Excuse me. Where is the station ?
Yes, I do.
Waaahhh !!!

719 :名無しさん@お腹いっぱい。:2005/12/28(水) 11:04:32
冬休みですか?










いいえ、ここにいるのはオジサン達だけです。

720 :名無しさん@お腹いっぱい。:2005/12/28(水) 13:14:43
シェルスクリプトのプロンプトを保存するにはどうすればいいでしょうか?
今はTELNETでシェルスクリプトを起動してから、
シェルスクリプト変数PS1に代入していますが、
TELNETを終了すると消えてしまいます。
TELNETのメニューのどこかに設定すればいいのだと思いますが、
どうすればいいでしょうか?

721 :クマ:2005/12/28(水) 13:25:07
クマー!
まあ冬休みだし、勉強の意味で、つたない自分の知識を整理してみっか。

>>720
まず、対話的に用いるのは「シェル」で、シェルスクリプトではありません。
シェルスクリプトとは、動的にシェルに命令を与えるのではなく、
一連のコマンド列をあらかじめ静的にファイルなどにまとめたものの
ことをいいます。

また、telnetは相手側ホストとの通信路を確保するためのプログラムで、
その通信内容(ここではシェルを使った対話)までは関与しません。
通常はホスト上のシェルが相手をしてくれますが、そうでない場合もあります。
(telnetでhttpサーバやメールサーバと通信することもできる)

プロンプトを管理しているのは、シェル自身で、telnetは関係ありません。

さて、シェル変数$PS1の内容をシェル起動時に設定するには、.profile等の
ファイル(多分w)に
PS1="オマエの好きなプロンプト"
と書いておけばよいはず。シェルは、起動時に.profileを読み込みます。

↓偉い人採点ヨロ

722 :名無しさん@お腹いっぱい。:2005/12/28(水) 13:52:21
シェルのことをシェルスクリプトってゆーな

723 :名無しさん@お腹いっぱい。:2005/12/28(水) 13:54:04
>>719
18歳ですが何か?

724 :名無しさん@お腹いっぱい。:2005/12/28(水) 19:18:30
若いのにジジくさいのが最悪だよな

725 :名無しさん@お腹いっぱい。:2005/12/28(水) 23:17:14
外国へいくと8〜12年くらい若く見られてしまう俺としてはうらやましい。



726 :名無しさん@お腹いっぱい。:2005/12/29(木) 00:33:27
>>725
拉致被害者?

727 :名無しさん@お腹いっぱい。:2005/12/29(木) 05:14:10
どこからそういう発想に…
これはもうネットゥョ脳としか言いようがないなあ

728 :名無しさん@お腹いっぱい。:2005/12/29(木) 05:23:32
どこからそういう発想に…
これはもうアサピ脳としか言いようがないなあ

729 :名無しさん@お腹いっぱい。:2005/12/29(木) 23:22:56
$?はメモリ空間を持ってるのかな。レジスタをみてるだけかな。
どのタイミングまでコマンドの戻り値を正しく保管しているといえるかエロい人教えて。

730 :名無しさん@お腹いっぱい。:2005/12/29(木) 23:44:08
エロい人ならttp://sakura01.bbspink.com/hneta/に沢山居るから、
そっちで聞くといいですよ。

731 :名無しさん@お腹いっぱい。:2005/12/30(金) 01:13:05
>>729
ソース読めば一発で分かる。ソースなくてもデバッガがあれば分かる。

732 :名無しさん@お腹いっぱい。:2005/12/30(金) 13:45:54
>>729
>$?はメモリ空間を持ってるのかな。
 意味不明

>レジスタをみてるだけかな。
  $? の値はアクセスするまでメモリに入っているのが普通だろう

>どのタイミングまでコマンドの戻り値を正しく保管しているといえるかエロい人教えて。
  最後まで正しく保管している



733 :名無しさん@お腹いっぱい。:2005/12/30(金) 13:54:42
喜べ>>729。おまえよりも>>732のほうがかなり重症のアホだ。


734 :名無しさん@お腹いっぱい。:2005/12/30(金) 18:11:08
>>733
お前の回答を聞こうか

735 :名無しさん@お腹いっぱい。:2005/12/30(金) 18:19:46
香ばしくなる悪寒

736 :名無しさん@お腹いっぱい。:2005/12/30(金) 18:42:32
シェルってゆうな、クズ。

737 :名無しさん@お腹いっぱい。:2005/12/30(金) 18:48:25
年始とお盆はリーマンが休みだから普段より馬鹿そうなのが沸く確率が高い

738 :名無しさん@お腹いっぱい。:2005/12/30(金) 22:42:46
シェルスクリプトの話って大抵の疑問は古いスレで解決されてるし
新しい問題は基本的に出てこない話題だから、
若いスレになるほど馬鹿率が上がるのは仕方ないよ。


739 :名無しさん@お腹いっぱい。:2005/12/31(土) 01:01:49
そう?年季の入った馬鹿が暴れてるような印象があるんだが。

740 :名無しさん@お腹いっぱい。:2005/12/31(土) 01:14:38
やばいのが開発系の営業だな。知ってるような知らないような微妙な知識w

741 :名無しさん@お腹いっぱい。:2005/12/31(土) 02:05:04
少なくとも739という年季の入った馬鹿の実例が生息していることは証明されたな


742 :名無しさん@お腹いっぱい。:2005/12/31(土) 02:29:26
このスレに限ったことではないが、なんかここ2〜3日、
相手の言ったことをおうむ返しにする程度の妙にヒネリのないレスが目立つ気が。

743 :名無しさん@お腹いっぱい。:2005/12/31(土) 03:31:47
>>742
>>742みたいな?

744 :名無しさん@お腹いっぱい。:2005/12/31(土) 09:01:08
あけシェル。おめシェル。

745 :名無しさん@お腹いっぱい。:2005/12/31(土) 10:08:35
>>744
早いよ。

746 :名無しさん@お腹いっぱい。:2005/12/31(土) 12:37:21
シェルってゆうな、クズ。

747 :名無しさん@お腹いっぱい。:2005/12/31(土) 13:28:39
>>742
>>737


748 :名無しさん@お腹いっぱい。:2005/12/31(土) 13:32:33
俺いまシェル書いてるんだけど、スクリプトの文法はどうしよう?

749 :名無しさん@お腹いっぱい。:2005/12/31(土) 13:51:47
>>748
y.tab.c をパクればいい。

750 :名無しさん@お腹いっぱい。:2006/01/02(月) 14:57:42
あけおめ。今年こそ犬厨がUNIX板から一掃されますように。

751 :名無しさん@お腹いっぱい。:2006/01/02(月) 15:42:25
あけおめ。負け犬の化石ジジイどもが業界から引退しますように。

752 :名無しさん@お腹いっぱい。:2006/01/02(月) 15:46:59
あけおめ。
sh/cshのクイックハックのかたまりになっている業務システムに、
来年度こそ予算がとれますように。

753 :名無しさん@お腹いっぱい。:2006/01/03(火) 23:24:04
コマンドライン引数で指定されたファイルが、$HOME/trashboxの中に存在するかどうかを知りたいと
思っているのですが、何か良い方法はないですか。

754 :名無しさん@お腹いっぱい。:2006/01/03(火) 23:56:53
if [ -f "$HOME/trashbox/$1" ] ...
みたいな?

ていうか、どこがわからんってのよ。
コマンドライン引数の参照の仕方?
ファイルの存在の検査法?


755 :名無しさん@お腹いっぱい。:2006/01/04(水) 00:17:08
rm代替用のごみ箱スクリプトで、$HOME/trashbox/日時/の中に対象ファイルを移動するよ
うにしているのですが、
もし$HOME/trashbox/の中のファイルを削除しようとした場合、警告を出すようにしたい>
と思っています。

756 :名無しさん@お腹いっぱい。:2006/01/04(水) 03:32:17
>>755
やめとけ

757 :名無しさん@お腹いっぱい。:2006/01/04(水) 04:47:20
その用途のためのパッケージとかないのかな?

758 :名無しさん@お腹いっぱい。:2006/01/04(水) 05:14:55
FAQも読めないやつらが増殖中

759 :名無しさん@お腹いっぱい。:2006/01/04(水) 17:43:33
いろいろと探しているとrealpathというコマンドを見つけられました。
if realpath $target | grep ^`realpath $HOME/trashbox` > /dev/null 2>&1; then
でなんとかなりそうです。
スレ汚しすいませんでした。

760 :名無しさん@お腹いっぱい。:2006/01/04(水) 18:04:13
はぁあ?
そもそも質問>>753と解決策>>759の中身が全然違うじゃんか。

761 :名無しさん@お腹いっぱい。:2006/01/04(水) 19:13:42
満足してて治まりそうなんだから良いじゃないか。

762 :名無しさん@お腹いっぱい。:2006/01/04(水) 23:32:18
UNIXのデバイスには文字型とブロック型がありますが、
シェルでは文字型しか実行できないのでしょうか?
シェルでブロック型を実行すると、
Can't open displayとしか出ません。
文字型は問題なく実行できてます。

763 :名無しさん@お腹いっぱい。:2006/01/04(水) 23:37:11
実行なんてどっちもできない。

764 :名無しさん@お腹いっぱい。:2006/01/05(木) 00:05:18
シェルってゆうな、クズ。

765 :名無しさん@お腹いっぱい。:2006/01/05(木) 00:18:09
最近さ、意味わからない質問が続いているの俺だけ?

デバイスを実行するって、言葉通りにデバイスファイルをexecve(2)に渡す
という意味にとっていいの?

766 :名無しさん@お腹いっぱい。:2006/01/05(木) 00:53:16
>>765
最初の質問の意味が分からない。

767 :名無しさん@お腹いっぱい。:2006/01/05(木) 00:58:38
>>763
どっちも可能

768 :名無しさん@お腹いっぱい。:2006/01/05(木) 00:59:43
>>764
これからは/bin/shのほうのシェルは「シェル」、シェルスクリプトは「シエル」と
呼ぶってのはどうだい?

769 :名無しさん@お腹いっぱい。:2006/01/05(木) 02:51:37
シエルとシェル総合スレでも立てて勝手にやってくれ。

770 :名無しさん@お腹いっぱい。:2006/01/05(木) 04:10:04
シエルといえば先輩(・∀・)

771 :名無しさん@お腹いっぱい。:2006/01/05(木) 09:25:22
>>762
そうです。UNIXのコマンドには文字型とブロック型があります。
シェルで実行できるのは文字型だけです。
ブロック型を実行するためにはKDEなどで
グラフィカルログインする必要があります。
なので、TELNETのシェルでは無理です。

772 : :2006/01/05(木) 12:27:04
OS依存なのに、よくそう一般論的に会話をすすめるのね。

773 :名無しさん@お腹いっぱい。:2006/01/05(木) 13:18:31
>>772
どこにOS依存の話題があるんだよ? 欲嫁。それに話の流れと関係ないし。

774 :名無しさん@お腹いっぱい。:2006/01/05(木) 13:30:45
>>771
コマンド(=executable=execve(2)が受け付けるprocess fileやインタプリタファイル)
に文字型とブロック型があるって???

ないでしょ...そんなの....。と信じたい。

というか、「シェルスクリプト」の話とは最初>>762から無関係な気がする。

775 :名無しさん@お腹いっぱい。:2006/01/05(木) 13:32:41
ネタにまj

776 :名無しさん@お腹いっぱい。:2006/01/05(木) 13:33:59
771 はさっさと解説しろよ

762 見ると X が関係していそうだが果たして…!?

777 :名無しさん@お腹いっぱい。:2006/01/05(木) 13:37:11
コマンド入力で起動すると実行結果が文字で表示されるのが
文字型コマンド。(ls rm など)

マウスをクリックするとウィンドウ枠(=ブロック)が表示されるのが、
ブロック型コマンド。(xterm xclock など)

778 :名無しさん@お腹いっぱい。:2006/01/05(木) 13:43:07
誰だよ「ブロック型コマンド」なんて言葉を超初心者に教えた奴は。
プンプン。

779 :名無しさん@お腹いっぱい。:2006/01/05(木) 13:47:24
ネタじゃなかったのかョ。

私、たったいま、文字型コマンドとかブロック型コマンドでググりました。はい。

780 :名無しさん@お腹いっぱい。:2006/01/05(木) 13:57:58
>>777
初耳。てかネタだろ?ネタだよな・・・。

781 :名無しさん@お腹いっぱい。:2006/01/05(木) 14:39:56
ググってもでてこなかった
ネタだよな・・・

782 :名無しさん@お腹いっぱい。:2006/01/05(木) 14:50:56
収拾つかなくなってるぞ、>>762出て来い。

783 :名無しさん@お腹いっぱい。:2006/01/05(木) 15:35:06
GUIならぬBUIってか

784 :名無しさん@お腹いっぱい。:2006/01/05(木) 18:21:49
マジレスしていい?

ブロックデバイスとキャラクターデバイスのことだよね.

785 :名無しさん@お腹いっぱい。:2006/01/05(木) 18:39:13
>>784
> マジレスしていい?
駄目。>>762以外のマジレス禁止。

786 :名無しさん@お腹いっぱい。:2006/01/05(木) 22:51:32
めまいがしてきた

787 :名無しさん@お腹いっぱい。:2006/01/05(木) 23:53:16
  ∧_∧ クワッ!
 ∩`iWi´∩  < >>762 はどこいった!
 ヽ |m| .ノ
  |. ̄|  
  U⌒U

788 :名無しさん@お腹いっぱい。:2006/01/06(金) 00:34:49
>>784 それだ!

789 :名無しさん@お腹いっぱい。:2006/01/06(金) 03:37:48
あるディレクトリにある*.datファイル内の文字列 japan
を全て jp に置換したいんですが、どーしたらいいでしょうか?
bashとかいうやつ使ってます。

790 :名無しさん@お腹いっぱい。:2006/01/06(金) 04:01:33
sed に置き換えオプションってないよね。
そういう意味で perl の -i 使うと楽だな。
とはいっても、失敗が怖いから
結局作業用の別ディレクトリで同名ファイル作るようにするんだけど。

791 :789:2006/01/06(金) 04:21:27
>>790
perl -i -p -e 's/japan/jp/g;' *.dat
でできました。ありがとうございました。

792 :名無しさん@お腹いっぱい。:2006/01/06(金) 06:55:29
>>789
rename japan jp *japan*.dat
じゃだめ?

793 :名無しさん@お腹いっぱい。:2006/01/06(金) 06:56:04
>>792
取り消します

794 :名無しさん@お腹いっぱい。:2006/01/06(金) 07:48:14
>>790
sed にもあるべ?
あれ、それとも GNU sed だけ?

795 :名無しさん@お腹いっぱい。:2006/01/06(金) 08:45:07
-i は in-place edit 機能のあるsed のみですね。
とりあえず3.95または2001-9-25以降のGNU sedと4.7R または5.0R以降のFreeBSDのやつ。

796 :名無しさん@お腹いっぱい。:2006/01/06(金) 08:46:09
edのスクリプトなら汎用かもねー

797 :名無しさん@お腹いっぱい。:2006/01/06(金) 10:03:25
for d in *.dat; do
mv ${d} ${d}.tmp
cat ${d}.tmp | sed -e "s;japan;jp;gi" > ${d}
rm -f ${d}.tmp
done
じゃいかんの?

798 :名無しさん@お腹いっぱい。:2006/01/06(金) 10:07:18
>>797
本題とは違う部分だが、
・${d}ではなく"${d}"または"$d"と書くべき。(今時スペースを含んだファイル名はザラ)
・catが無駄

799 :名無しさん@お腹いっぱい。:2006/01/06(金) 10:39:50
rmも消せるかな。

for d in *.dat; do
sed -e 's/japan/jp/gi' "$d" > "$d.tmp"
mv -f "$d.tmp" "$d"
done

800 :名無しさん@お腹いっぱい。:2006/01/06(金) 10:52:42
for f in *.dat; do (echo ,s/japan/jp/g; echo w; echo q) | ed "$f"; done

801 :名無しさん@お腹いっぱい。:2006/01/06(金) 11:14:55
同一ファイルへの書き込みもできるよ。
テンポラリファイル不要。


for F in *.dat; do (rm "$F"; sed 's/japan/jp/g' > "$F") < "$F"; done

UNIXではファイルのオープン中は rmしても実体が消えないことを利用。

802 :名無しさん@お腹いっぱい。:2006/01/06(金) 11:28:06
>>790
-i は sed がオリジナルでそwwww

803 :名無しさん@お腹いっぱい。:2006/01/06(金) 11:42:17
>>801
カッコイイ。と思ったが、msdosfs上だと失敗する予感。

804 :名無しさん@お腹いっぱい。:2006/01/06(金) 11:59:54
>>801>>803
こういうin-placeな処理っていかにもFAQっぽいけど汎用的なやり方って確立されてないの?

805 :名無しさん@お腹いっぱい。:2006/01/06(金) 13:03:32
「UNIXプログラミング環境」(古典ですね)には、この目的で
汎用的に使える overwrite というスクリプトが紹介されてます。
手元の版だと233ページ。

806 :804:2006/01/06(金) 13:13:04
これか。やっぱりスクリプト書いてしまうのが一番手っ取り早いのかな。
http://web.archive.org/web/20041103075604/http://www.taisbox.jp/~adachi/memo/linux/shellcom.html#overwrite

探したらsafeというのもあった
ftp://metalab.unc.edu/pub/Linux/utils/text/safe-2.0.9.1.lsm
ftp://metalab.unc.edu/pub/Linux/utils/text/safe-2.0.9.1.tar.gz

807 :名無しさん@お腹いっぱい。:2006/01/06(金) 17:50:02
>>801
ufsのセマンティクスはそうだけど、windowsの共有をマウントしたsmbfsとか
でもちゃんと動くのかな?


808 :名無しさん@お腹いっぱい。:2006/01/06(金) 18:22:07
年に二回くらいの割合でそういう置き換え作業やることあるけど、
そのたびになんかいい方法ないかなと思いながら
>>799 みたいなワンライナー書いてごまかしてたな。
かといって汎用のラッパーがあっても、使う機会自体がまれなので
使い方すぐ忘れるだろうから、やっぱりワンライナーで済ませそうだ。


809 :名無しさん@お腹いっぱい。:2006/01/06(金) 23:03:21
このテの処理は何も考えずにPerlを使うに一票

810 :名無しさん@お腹いっぱい。:2006/01/06(金) 23:52:59
perlでやる方が難しいに一票

811 :789:2006/01/07(土) 00:17:51
うを、なんかいろいろあるなー。
Perlは初めて使ったけど、ソースの短さにはびびってしまった。
おらに使いこなせるのだろうか。
シェルスクリプト参考にさしてもらいます。

812 :名無しさん@お腹いっぱい。:2006/01/07(土) 02:51:16
セマンティクスってシマンテックと関係ありますか?

813 :名無しさん@お腹いっぱい。:2006/01/07(土) 07:00:20
ない

814 :名無しさん@お腹いっぱい。:2006/01/07(土) 12:28:02
セマンティックスがブロック型で、シマンテックはキャラクタ型です。

815 :名無しさん@お腹いっぱい。:2006/01/08(日) 03:08:47
あけおめ。今年こそFreeBSDユーザが絶滅しますように。

816 :名無しさん@お腹いっぱい。:2006/01/08(日) 04:38:06
cshのスクリプトが亡くなればどうでも良い。

817 :名無しさん@お腹いっぱい。:2006/01/08(日) 09:30:30
さすがに今時cshスクリプトなんてもう存在してないだろ。
あとは、今でも過去の惰性で少数存在する、
(t)cshユーザーの撲滅だな。

818 :名無しさん@お腹いっぱい。:2006/01/08(日) 09:49:04
cshでスクリプトを書く池沼はどのように発生したんだ?
去年からうちにきてる派遣も、「cshスクリプト」の経験ありと恥ずかしげも無くアピールしてる。

819 :名無しさん@お腹いっぱい。:2006/01/08(日) 10:33:16
>>818
cshスクリプトを保守しないといけない環境もあるんじゃねーの?

820 :名無しさん@お腹いっぱい。:2006/01/08(日) 12:48:02
投稿大情工のschemeの授業の課題提出スクリプトがcshだったのは秘密

821 :名無しさん@お腹いっぱい。:2006/01/08(日) 12:58:33
うむ。何故かcsherはまだ結構いる。配列が使いたいのか?

822 :名無しさん@お腹いっぱい。:2006/01/08(日) 13:49:51
>>821
そんな積極的理由なわけがないだろ。最初のログインシェルがcshだったとか
適当な理由だよ。

それより、あけおめ。今年こそFreeBSDがUNIX板から一掃されますように。

823 :名無しさん@お腹いっぱい。:2006/01/08(日) 16:05:34
正月から一人で何やってるんだ。

824 :名無しさん@お腹いっぱい。:2006/01/08(日) 16:15:43
>>819
そのスクリプトを書いたやつはなぜcshを選択したのかってことだよ。
「スクリプトはcshで」とか煽動した戦犯がいるんじゃないのか?

825 :名無しさん@お腹いっぱい。:2006/01/08(日) 17:03:07
>>824
煽動っていうほどでもないでしょ。
配列が使いたいがためにcshのスクリプトを使っている例は良く見るよ。

826 :名無しさん@お腹いっぱい。:2006/01/08(日) 18:05:58
csh はバグが多いけど、短いスクリプトなら、csh で問題ない
配列以外でも、ファイルパス周りの演算や、ちょっとした算術演算が使えるので
shよりも都合がいいことも多い


827 :名無しさん@お腹いっぱい。:2006/01/08(日) 18:32:48
つーか、csh-whynot に書かれているような件を扱わないようなものならば、
csh で書いても問題ないよ。
なぜ csh を使っちゃいけないのかをわかっていれば、
逆に、使っても問題ないケースというのもちゃんとわかるはず。
何がなんでも使うな、というのはバカのひとつ覚え以外の何物でもない。

もっとも、問題あるものとないものを csh と別のもので使いわけるのが面倒だから
はじめから csh なんか使わないようになるけどな。

828 :名無しさん@お腹いっぱい。:2006/01/08(日) 18:41:26
ってか、プロジェクトに言ったらcshだっただけだった俺がいる
しかも3つ連続

829 :名無しさん@お腹いっぱい。:2006/01/08(日) 19:31:04
>828
イキロwww

ついでに上司かなんかにcsh-whynotを読ませろ。

830 :名無しさん@お腹いっぱい。:2006/01/09(月) 00:18:26
つう訳で最大の悪人はビルジョイでFA?

そういやこのおっさんが関わったものって全部コケてしまったな。

831 :名無しさん@お腹いっぱい。:2006/01/09(月) 00:32:18
viが煽られた

832 :名無しさん@お腹いっぱい。:2006/01/09(月) 01:08:25
違うな。>>830が煽ってるのはJavaだろう。

833 :名無しさん@お腹いっぱい。:2006/01/09(月) 02:15:21
cshスクリプトしか出来ないのは問題だが、+αでcshスクリプトが使えるって事なら買い。
cshスクリプトを触ってもらうときに便利w

834 :名無しさん@お腹いっぱい。:2006/01/09(月) 03:53:45
viもJavaもこけたな。BSDももはや立ち直れない状態だし。

835 :名無しさん@お腹いっぱい。:2006/01/09(月) 07:16:03
Bill嫌いの834に、煽られすらしないcshカワイソス

836 :名無しさん@お腹いっぱい。:2006/01/09(月) 13:07:13
Billって今どのシェル使ってるんだろう。
csh+viでJavaプログラミングしてるのかな。

837 :名無しさん@お腹いっぱい。:2006/01/09(月) 13:11:34
よく考えると、いまだに vi に代わるエディタってないな
emacs は資源食いすぎるんで標準搭載とは言いがたいし

838 :名無しさん@お腹いっぱい。:2006/01/09(月) 13:13:22
emacsが資源食いすぎってどんな貧乏HWなんだよ。

839 :名無しさん@お腹いっぱい。:2006/01/09(月) 13:23:27
富豪自慢かよ!

840 :名無しさん@お腹いっぱい。:2006/01/09(月) 18:07:38
いまだに標準とはいえないでしょ > emacs
みな
EDITOR=emacs
がきたらそれはそれでこわいけど


841 :名無しさん@お腹いっぱい。:2006/01/09(月) 19:34:31
今時は,
「Emacs ないとシステム管理できません!!!」
てな, 連中がゴロゴロ要るんだが...


842 :名無しさん@お腹いっぱい。:2006/01/09(月) 19:44:47
tramp 使っている俺は勝ち組

843 :名無しさん@お腹いっぱい。:2006/01/09(月) 20:09:33
普通 ed だろ。

844 :名無しさん@お腹いっぱい。:2006/01/09(月) 20:22:00
まあechoとcatがあればなんとか


845 :名無しさん@お腹いっぱい。:2006/01/09(月) 21:32:36
システム管理にはキャラクター型コマンドは必須ですね。

846 :名無しさん@お腹いっぱい。:2006/01/09(月) 22:21:38
ブロック型エディターを使ってる俺は勝ち組

847 :名無しさん@お腹いっぱい。:2006/01/09(月) 22:38:32
なに?そのブロック型とかキャラクター型とかって標準になったの?
俺にはその言葉、全然イメージわかなくて正直使いたくない。
ギャグで使ってるにしては面白くないし・・・

848 :名無しさん@お腹いっぱい。:2006/01/09(月) 23:00:57
>>847 禿同

849 :名無しさん@お腹いっぱい。:2006/01/10(火) 00:24:30
ごめん
十分おもしろかったわ

850 :名無しさん@お腹いっぱい。:2006/01/10(火) 02:04:34
catはキャラクタ型、ddはブロック型。

851 :名無しさん@お腹いっぱい。:2006/01/10(火) 02:22:14
コマンド自体にはそんな区別ないよね?

852 :名無しさん@お腹いっぱい。:2006/01/10(火) 06:22:58
マジレスしてる今時純朴な奴は>>777あたりを見とけ。

853 :名無しさん@お腹いっぱい。:2006/01/10(火) 10:41:11
oclock は?

854 :名無しさん@お腹いっぱい。:2006/01/10(火) 12:47:56
777を見たらすごくつまらなかった

855 :名無しさん@お腹いっぱい。:2006/01/10(火) 15:23:09
そうなんだよ。>>777 それで皆迷惑してる。

856 :名無しさん@お腹いっぱい。:2006/01/11(水) 00:46:46
Bill Joy って結局どんな貢献したの?
ここまで軒並みこけたのに平然としているのが理解できない。

857 :名無しさん@お腹いっぱい。:2006/01/11(水) 01:04:47
「軒並みこけた」って>>856が書けるってことはさ、
Bill Joyのこれまでの仕事とその結末を既に自分で把握できてるんだろ?
わざわざ質問することないよ。

858 :名無しさん@お腹いっぱい。:2006/01/11(水) 20:38:34
たくさんのファイルの中からある文字列を含むファイルだけをgrepとawkを用いて別のあるディレクトリに移動する
みたいなことってどんなスクリプトで出来ますか?

わかりにくかったらすいません

859 :名無しさん@お腹いっぱい。:2006/01/11(水) 20:57:03
grep(とスクリプト)だけでできる。
awkはいらん。

860 :名無しさん@お腹いっぱい。:2006/01/11(水) 21:03:22
>>858
GNU grep だと -l かな?

861 :名無しさん@お腹いっぱい。:2006/01/11(水) 21:08:42
>>858
mv `grep -l * ある文字列` /betsuno/aru/directory
だな。

ただし、ファイル名にスペースとかを含むものがある場合は
さらに工夫が必要。

862 :名無しさん@お腹いっぱい。:2006/01/11(水) 22:45:20
>>861
バッククォートの中、
`grep -l ある文字列 *`
だな。

863 :858:2006/01/12(木) 00:21:29
みなさん回答ありです。参考になります。
>>861さんのやり方でできないんすよねー。
ファイル名に@とか入ってるとだめでしたっけ・・・
emacs上のmuleで編集してるのですがmuleを終了するとそのスクリプトの内容が消えてしまう
という現象が・・・

864 :名無しさん@お腹いっぱい。:2006/01/12(木) 00:27:26
参考までに、emacs 上の mule のやり方教えてください。

865 :名無しさん@お腹いっぱい。:2006/01/12(木) 01:07:55
rec(){
for FILE in *
if [ -d $FILE ] ;then
cd $FILE
rec
cd ..
fi
done
}

みたいな再帰処理が可能な理由を教えてください。
呼び出し側の変数「FILE」の値は何故保持されるんでしょう。

866 :名無しさん@お腹いっぱい。:2006/01/12(木) 01:10:46
>>865
シラネ。次の方どうぞ。

867 :名無しさん@お腹いっぱい。:2006/01/12(木) 01:24:04
>>865
サブシェルだから?

868 :名無しさん@お腹いっぱい。:2006/01/12(木) 01:42:36
FILEの値は上書きされまくってるんじゃないの?
rec(){
for FILE in *
   if [ -d $FILE ] ;then
       cd $FILE
       echo $FILE   # ここと
       rec
       echo $FILE   # ここ、では値が違うと思われ
       cd ..
   fi
done
}

869 :名無しさん@お腹いっぱい。:2006/01/12(木) 04:02:09
/test/test/test
/test/abc/test
というディレクトリを
/hoge/hoge/hoge
/hoge/abc/hoge
というディレクトリに一括リネームしたいのですが、
簡単にできそうにありません。
どうしたらよいか教えていただけないでしょうか?

870 :名無しさん@お腹いっぱい。:2006/01/12(木) 11:25:26

> 簡単にできそうにありません
いいえ

871 :名無しさん@お腹いっぱい。:2006/01/12(木) 12:27:04
オレも簡単に出来ないと思う
複雑な方法でやればいいんじゃね?

872 :1/2:2006/01/12(木) 14:02:49
済みません、``(バッククォート)を使ったコマンド実行について教えてください。

【環境】
Solaris 9
C-Shell

【やりたいこと】
あるディレクトリのファイル一覧を取得し、各ファイルに対して処理を行いたい。



873 :2/2:2006/01/12(木) 14:04:59
【困ったこと】
以下のようなシェルを作成しました。

foreach file ( `ls -1 ディレクトリ` )

・・・処理・・・

end

ここで、指定したディレクトリに含まれるファイルが少なければ問題ないのですが、
ファイル数が5000あるディレクトリを指定するとエラーが表示されてしまいます。
試しに、以下のとおりコマンドラインから実行しても同様でした。

% echo `ls -1 ディレクトリ`
`` から展開する単語が多すぎます。

「`` から展開する単語が多すぎます。」というエラーが表示されます。
このエラーメッセージでGoogle等を検索しても1件もヒットしませんでした。

どうにか解決できないものでしょうか。
よろしくお願いいたします。

※先ほど別スレに書き込みましたが、こちらに誘導していただきました

874 :名無しさん@お腹いっぱい。:2006/01/12(木) 14:20:49
>>873
find とか xargs を使うんじゃだめなん?

875 :名無しさん@お腹いっぱい。:2006/01/12(木) 15:24:24
>>873
とりあえず cshを使うのをやめろ。
cshと見ただけで誰も答えてくれないだろう。
エラーメッセージでググって1件もヒットしなかった原因の一つは、
誰もcshは使わないから。

876 :名無しさん@お腹いっぱい。:2006/01/12(木) 15:28:50
ひっかからないのは web に書くまでもないからだろ。

877 :873:2006/01/12(木) 15:31:43
>>874
ありがとうございます!
やりたかったことはあるディレクトリ以下(サブディレクトリ含む)の
ファイルのフルパスとファイルサイズの一覧を出力したかったのです。
ファイルの一覧を取得して、ファイルなら出力、ディレクトリなら再帰的に処理をする、
といった感じで難しく考えていました。
find と xargs を調べ、以下のコマンド一発で実現できました!
find ディレクトリ -type f | xargs ls -l | awk '{ printf( "%s (%s)\n" , $9, $5 ) }'

>>875
そうですね。。。
今はcshを使用しなければいかない状況になってしまったのですが、
今後はksh等に変更していきていと思います。

ありがとうございました。

878 :名無しさん@お腹いっぱい。:2006/01/12(木) 18:57:28
>>874 >>877
はい、そこのあなた、xargsいけませんよ!
社内標準守ってね。

879 :名無しさん@お腹いっぱい。:2006/01/12(木) 19:03:13
いつもの人キタ

880 :名無しさん@お腹いっぱい。:2006/01/12(木) 19:11:42
nslookupを使っちゃいけない理由って、一言で言うと何だっけ?

881 :名無しさん@お腹いっぱい。:2006/01/12(木) 19:16:16
一言で言うとスレ違い。

882 :名無しさん@お腹いっぱい。:2006/01/12(木) 19:24:45
>>877
パスにスペースとか入ってると予期せぬ挙動になることがあるんで
find -print0 | xrags -0
する癖をつけといたほうがいいよ。

883 :名無しさん@お腹いっぱい。:2006/01/12(木) 19:48:33
nslookupはWindows(DOS窓)のコマンド。
知らずにUNIXシェルで使っても動くわけがない。

884 :名無しさん@お腹いっぱい。:2006/01/12(木) 20:02:13
お前もしかして平成生まれ?>>883

885 :名無しさん@お腹いっぱい。:2006/01/12(木) 20:26:09
>>883
そんな釣りに俺がつられクマー

>>880
BIND的には廃止の方向。
dig とか host とかが推奨。
djb 教徒は勝手にしてくれ


886 :名無しさん@お腹いっぱい。:2006/01/12(木) 21:30:19
>>882
で、-print0とかが使えないSolarisは使わない癖をつけといたほうがいいよ。

887 :名無しさん@お腹いっぱい。:2006/01/12(木) 22:01:08
そこで GNU find & GNU xargs ですよ。

888 :名無しさん@お腹いっぱい。:2006/01/12(木) 23:20:05
>869
lsの出力をexcelで編集してターミナルでコピペして実行。2分でできる。

889 :名無しさん@お腹いっぱい。:2006/01/13(金) 00:08:18
find . -type f -name "*/test*" > 1.txt
sed 's/\/test/\/hoge/g' 1.txt > 2.txt
sed 's/^/mv /' 1.txt > 3.txt
paste 3.txt 2.txt > tmp.sh
chmod +x tmp.sh
tmp.sh

890 :名無しさん@お腹いっぱい。:2006/01/13(金) 00:14:35
>>869
数回mvするんじゃだめなの?

891 :名無しさん@お腹いっぱい。:2006/01/13(金) 00:17:51
シェルスレだからシェルで答えてあげたら?

892 :889:2006/01/13(金) 00:19:55
>>869に対するスレね

893 :名無しさん@お腹いっぱい。:2006/01/13(金) 00:27:33
>>891
シェルスクリプトをシェルと言うな

894 :名無しさん@お腹いっぱい。:2006/01/13(金) 00:29:08
(´・ω・`)

895 :名無しさん@お腹いっぱい。:2006/01/13(金) 01:15:09
find . -type d -name '*/test/*' | while read
do mv "$REPLY" "`echo "$REPLY" | sed 's/test/hoge/g'`"
done

スペースに対応してみたが、いまいちオサレじゃないな。

896 :名無しさん@お腹いっぱい。:2006/01/13(金) 01:25:55
↑その場合、宛先側のディレクトリを作成する手続きを入れなければいけない気がする。

897 :名無しさん@お腹いっぱい。:2006/01/13(金) 01:32:15
>>892
レスをスレと言うな

898 :名無しさん@お腹いっぱい。:2006/01/13(金) 02:07:13
>>895
改行に対応してないから駄目

899 :名無しさん@お腹いっぱい。:2006/01/13(金) 02:17:20
>895
./test/test/testディレクトリを./hoge/hoge/hogeディレクトリに直すことを考えてみよう。


find="find . -name test -print -prune";
files=`eval $find`;
until [ -z $files ]; do
for i in $files; do mv $i `echo $i | sed -e s/test/hoge/`; done;
files=`eval $find`;
done

空白改行対応は任せた。>898

900 :名無しさん@お腹いっぱい。:2006/01/13(金) 05:42:56
kシェルでワイルドカード"*"を環境変数に入れたあと、これを文字として使いたい。
A="*"

こんな感じで入れたんだけど、これを呼び出そうとすると
環境変数に定義してるものが全部出てきてしまう。

上記のようなセットの仕方では文字と認識してくれないの?

901 :名無しさん@お腹いっぱい。:2006/01/13(金) 06:03:48
898ではないが、testimonyがhogeimonyに変換されちゃ困るだろう。てことでzshで。

for f in ./**/*(^/); do
g=${(j:/:)${${(s:/:)f}:/test/hoge}}
[[ $f == $g ]] || (mkdir -p ${${g%/*}:-/} && mv $f $g)
done

gの計算以外試してないけど。zshなので変数中の空白は問題ない筈。
毎回mkdir -pは遅いからifで分けりゃいいんだが、単純さ優先で。

>>889
testimonyという名前がhogeimonyに変換されてしまう。
>>895
-name '*/test/*' では何も出ないだろう。あと末尾のみtestの場合を忘れてるのでは。
>>899
それ./test/test/testが./hoge/test/testに移っただけで終わってしまうんでは。


902 :901:2006/01/13(金) 06:42:52
飯食ってからよく見たら>>869の要求と違ってたわ。ディレクトリをリネームか。
再挑戦。これでいいんかな?

ds=(./**/test(/))
for f in ${(O)ds}; do
g=${f:h}/${${f:t}:/test/hoge}
[[ $f == $g ]] || mv $f $g
done


903 :901:2006/01/13(金) 06:43:35
[[ $f == $g ]] || mv $f $g は単に mv $f $g でいいか。



904 :899:2006/01/13(金) 07:57:41
おはよ。

>901
>>899
>それ./test/test/testが./hoge/test/testに移っただけで終わってしまうんでは。


899が何で二重ループになってるか、考えてみよう。

./test/test/testの例だと、一回目の$fileは"./test"、二回目の$fileは"./hoge/test"
三回目の$fileは"./hoge/hoge/test"、になって回るので、正常に、
test->hoge、hoge/test->hoge/hoge、hoge/hoge/test->hoge/hoge/hogeと
mvされる。

>902こそ、一重ループで済ますなら、一発で
test->hoge、hoge/test->hoge/hoge、hoge/hoge/test->hoge/hoge/hoge
やらないといけないようなのに、やってる?f:tとかってどうなるんだっけ。

905 :名無しさん@お腹いっぱい。:2006/01/13(金) 08:45:11
>>882
-r もね

906 :901:2006/01/13(金) 12:18:25
>>904
ああそうか。毎回findを.でスタートしてるから問題ないんだな。
test/から始めるのと勘違いした。
zshの${(O)ds}は配列dsの逆順ソート。findにも-depthオプションがある。
だから毎回findなんてのは必要ない。

902の$f:tはtestに決まってるんだからg=$f:h/hogeで良かったな。結局こうか。
ds=(./**/test(/))
for f in ${(O)ds}; mv $f $f:h/hoge
ここまで単純にできたらまあ満足。

これをfindで書くとしたら
find . -depth -type d -name test -exec mv \{\} \{\}/../hoge \;
これは対象がディレクトリなのを利用しているけど、
その条件が使えなければ単一のリネームだけする処理を書いてそれを-execとか。
無理矢理一行に押し込むと
find (中略) -exec sh -c 'f="{}";g=$(dirname "$f");mv "$f" "$g/test"' \;
くらいか。

907 :901:2006/01/13(金) 12:22:23
最後の "$g/test" は $g/hoge" の間違い。

908 :名無しさん@お腹いっぱい。:2006/01/13(金) 16:16:33
ぐだぐだ
本人はテクニカルなこと書いてるつもりかもしれんが
もういいよ

ちなみにhogeと同じディレクトリにtestがあると失敗するので
まえの方にあった一見ダサい方法のがいいだろうな

909 :899:2006/01/13(金) 20:59:27
ただいま。

>906
ああ、逆順ソートが使えたか。それなら、
find . -depth -name test -print|sed -e 's/\(.*\)\/test/mv "\1\/test" "\1\/hoge"/' | sh
でいいね。directoryだけに限定したいなら-type dってfindのとこにつけてね。

>908
すまんな。

910 :名無しさん@お腹いっぱい。:2006/01/13(金) 23:13:06
現代人には>888が一番楽に目的が達成できるだろう。

911 :名無しさん@お腹いっぱい。:2006/01/13(金) 23:23:13
自画自賛来たw

912 :名無しさん@お腹いっぱい。:2006/01/13(金) 23:29:34
>910
excelはないけどviがシェルな奴って結構いるんじゃね?

$ vi
!!ls *.orig
:s/\(.*\)/mv \1 \1.orig; cp \1.orig \1/
:%!sh

とかrenameが出てくるまでは結構使ってた。
慣れると便利よ。

913 :912:2006/01/13(金) 23:30:25
あ、例題まちがったw

ま、想像つくよね。そんな感じです。

914 :名無しさん@お腹いっぱい。:2006/01/14(土) 02:45:05
>>911
時代についていけない香具師?

そういうやついるんだよなあ、ものすごく生産性低くて周りは
困っているのに「おれはハッカーだ」とか思い込んでる馬鹿が。

915 :名無しさん@お腹いっぱい。:2006/01/14(土) 02:54:32
時代に関係なく、自画自賛はみっともない

916 :名無しさん@お腹いっぱい。:2006/01/14(土) 09:57:39
自画自賛の次は屁理屈来たw

917 :名無しさん@お腹いっぱい。:2006/01/14(土) 09:58:09
時代についていけてない単語: 香具師

918 :名無しさん@お腹いっぱい。:2006/01/14(土) 13:34:27
俺の事これからは吟遊詩人と呼んでください

919 :名無しさん@お腹いっぱい。:2006/01/14(土) 14:55:30
>>915-917
で、おまえらはその生産性低い邪魔者であることは認めるわけだなw

920 :名無しさん@お腹いっぱい。:2006/01/14(土) 14:56:20
つうわけで以降はシェルスクリプトをエクセルで編集し活用するスレに変更

921 :名無しさん@お腹いっぱい。:2006/01/14(土) 16:09:15
>>919
くだらないからスルーされてることに気が付かないのか。
恥ずかしい奴…

922 :名無しさん@お腹いっぱい。:2006/01/14(土) 16:22:06
この「その4」は2か月ちょいで終わりそうだが
しかし正直これまでに比してもかなり内容が薄かったな。


クソレスを
  集めて速し
    駄スレかな

923 :名無しさん@お腹いっぱい。:2006/01/14(土) 16:46:28
>>921
で、生産性の低いじゃまものであることはあくまでも否定しないわけですな。
ご苦労さん。

実際なんでもかんでもシェルスクリプトだけで解決しようとする
馬鹿は生きていてはいけないな。

924 :名無しさん@お腹いっぱい。:2006/01/14(土) 17:13:50
馬鹿がいると困るのも馬鹿

925 :名無しさん@お腹いっぱい。:2006/01/14(土) 18:14:27
どこかで見た流れだと思ったら >>198 これか。
同一人物だったら笑えるな。

926 :名無しさん@お腹いっぱい。:2006/01/15(日) 02:20:49
思うんだが、最近何気にシェルスクリプトの地位が向上してる希ガス。

インターネット普及して、有力なツールが沢山出てきて、GUIで、便利で、間違いなくて、
「自作シェルで文字列扱うなんてもう時代遅れだぽ」と思ってたけど、
昨今の情勢(ISMSが一番キツイ)により、会社で自由にソフトをインストールできなくなった。
手続きは面倒だし、説明責任も必要だし、上司は良く知らないものを承認したがらないし、
そうした時、再びシェルスクリプトの時代がくるのではないだろうか?

もしや、シェルスクリプトの本が出版ラッシュだったのはそのせいかも!?

927 :名無しさん@お腹いっぱい。:2006/01/15(日) 02:26:01
何を言ってるのか全然わからん。

928 :名無しさん@お腹いっぱい。:2006/01/15(日) 02:26:09
   、__人__人__人__人__人__人__人__人__人__人__人__人__人__人__人__,
   _)                                     (_
   _)         な  なんだって〜〜〜〜!!         (_
   )                                      (
   ⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒
    l´  r'´ ̄` '''ー-‐、く , -─‐- 、.__  r''"´ ̄ ̄``≦_
   _| ./ ─- 、  u uV    , ,ィ 、 ≦l ,.ィィjノノl i 、 ミ. ,. -─- 、__
.   |rヾノ  i ̄r;`ヽァj,∠7  ,∠ノノハトNヘ「l / ̄ニゞノ_ハlゝ〃     , ⌒ミ、
    l〈r_ ij   ̄ " '{.ゞ'ィスi/ <´n`ー'rf;Yi、ソij ゙ー゚=゙ {セ7′  ,.ィィァ'ハトAlヾ
_r/^`ーl   , - 、._‐ノ v}r_ ij "" _ -フ''〈;ァl. u , - 、_-フ 〉r_、∠f テcj:Hr。ァ!
  lヽ   ::\. 〈ニ=;‐-/ ./!ー.l   /ー`ニ7vノ、ヽ. l_ ̄`/./ l lヘ! ヽ.ニノ└Lノ
  | \ ::   ヽ`ー‐'// | : \ヾ三//l \: ヽニ´ィ、 _,r゙7‐i ij /二ニ7 .〉
  |  _\  ::  ̄∧\.  \:   ̄/| \ヽ /ヽ. ∠ .lヽ l ヽ、\ヾ二ソ/

929 :名無しさん@お腹いっぱい。:2006/01/15(日) 02:39:02
>>927
そうですね。要は、

「ああもう! 一々名前変えるの面倒! 中の設定変えるのも一個一個テキストファイル開かなきゃいけないし・・・」
単純作業に悶える婦女子。

そこに通りかかった2人のパソヲタ。
一人はツール厨房、もう一人はシェル厨房、
前者は「良いツールあるんだけどな・・・ホント会社ルール厳しすぎだよ」
後者は「何がしたいの? ふんふん。カタカタカタ・・・ できたよ。これでいい?」

婦女子「シェル男君すごーい! 今まで手作業でやってたの、私、馬鹿みたいだよね。」
シェル男「いや、君の努力が損なわれるわけじゃないさ。寧ろ、余計なことしちゃったかな?」
婦女子「全然! ホントありがとう! ・・・シェル男くんって・・・」

〜以下略〜

みたいな世界が待っているということですよ。

930 :名無しさん@お腹いっぱい。:2006/01/15(日) 03:23:55
昔からシェルスクリプトはそれなりに使われてるし



931 :名無しさん@お腹いっぱい。:2006/01/15(日) 03:27:31
>>927は「ん、まあそういうこともあるかな?」程度だが、
>>929は「絶対そんなわけねーべ」レベルww

932 :名無しさん@お腹いっぱい。:2006/01/15(日) 04:09:39
>>929
(前略)
シェル男「何がしたいの?」

婦女子「うるさい話しかけるな。臭いから寄るな。」

〜完〜

933 :名無しさん@お腹いっぱい。:2006/01/15(日) 04:55:42
ええ話や

934 :名無しさん@お腹いっぱい。:2006/01/15(日) 07:52:23
じゃあ。あたしのジェルでお礼を、、、、

935 :名無しさん@お腹いっぱい。:2006/01/15(日) 11:06:20
その後、ルビーの宝石を送り目出度くゴール。

あとは真珠の入った○○○で、(以下ry


936 :名無しさん@お腹いっぱい。:2006/01/16(月) 02:42:53
以下のようなスクリプト test.sh で

$ test.sh -a "aaa bbb"
aaa
bbb

となってしまいます.これを

$ ~/test.sh -a "aaa bbb"
aaa bbb

となるようにするにはどうすればいいでしょうか?
環境は Cygwin で
$ getopt -V
getopt (enhanced) 1.1.2
です.

---
#!/bin/sh
eval set -- $(getopt -o "a:" -- $@)
while true; do
case $1 in
-a) a=$2;;
--) shift; break;;
esac
shift
done
echo $a
echo $@

937 :名無しさん@お腹いっぱい。:2006/01/16(月) 02:57:12
"$@"やろ


938 :名無しさん@お腹いっぱい。:2006/01/16(月) 03:12:12
$@だとコマンド実行する時にデリミタで展開されるよ。
"$@"ってやらないと駄目。

更に、getoptの戻り値は文字列なので、それをshが読み込む時に
また展開されるのでエスケープしないと駄目。getoptの-oオプションが
それなのかな?ま、そっちは自分で確認してください。

$ ./mytest.sh "hello world"
hello world

hello world

hello
world

-- test.sh
#!/bin/sh
echo $1
echo $2
set -- "$@"
echo $1
echo $2
set -- $@
echo $1
echo $2

939 :名無しさん@お腹いっぱい。:2006/01/16(月) 03:23:38
>>937,938
できました.
ありがとうございます.

940 :名無しさん@お腹いっぱい。:2006/01/16(月) 12:09:26
このスレ的にはシェルスクリプト男くんだろ

941 :名無しさん@お腹いっぱい。:2006/01/16(月) 16:33:20
シェルが名前でスクリプトが名字
17才の金髪美少女

942 :名無しさん@お腹いっぱい。:2006/01/16(月) 16:35:19
俺は、性はビジュアル、名はベイシック。
ビジュアル・ベイシッ君
ビジュアル系

943 :名無しさん@お腹いっぱい。:2006/01/16(月) 16:39:56
あなたの性別は?
 男
 女
→ビジュアル

944 :名無しさん@お腹いっぱい。:2006/01/16(月) 17:43:26
>>942
べーしっ君?
http://images.google.co.jp/images?q=%E3%81%B9%E3%83%BC%E3%81%97%E3%81%A3%E5%90%9B&hl=ja&lr=lang_ja&ie=utf-8&oe=utf-8&client=firefox&rls=org.mozilla:ja-JP:official&sa=N&tab=wi

945 :名無しさん@お腹いっぱい。:2006/01/16(月) 21:08:52
↑歳バレ

946 :名無しさん@お腹いっぱい。:2006/01/16(月) 21:12:23
>>945
ス、スライム先生!

947 :名無しさん@お腹いっぱい。:2006/01/17(火) 00:13:01
>>941だと滝川クリステルみたいだな


948 :名無しさん@お腹いっぱい。:2006/01/17(火) 01:00:33
( ゚д゚)ポカーン

949 :名無しさん@お腹いっぱい。:2006/01/17(火) 08:41:43
パターンをシングルクオートした引数(例えば'*.{h,cpp}')をスクリプト内のある時点で
「明示的に」展開する方法はありますでしょうか。





950 :名無しさん@お腹いっぱい。:2006/01/17(火) 09:10:13
>>949
eval

951 :名無しさん@お腹いっぱい。:2006/01/17(火) 20:06:54
>>949

ext='*.c'
echo $ext
echo "$ext"
files=$(eval echo '*.c')
echo $files

952 :名無しさん@お腹いっぱい。:2006/01/18(水) 09:06:14
詳解 シェルスクリプト
ttp://www.oreilly.co.jp/books/4873112672/
Arnold Robbins、Nelson H. F. Beebe 著
日向 あおい 訳
2006年01月27日 発売予定
372ページ
定価2,940円
ISBN4-87311-267-2
原書: Classic Shell Scripting

953 :名無しさん@お腹いっぱい。:2006/01/18(水) 09:49:48
よんだことないけど、原書は評価高いな。
http://www.amazon.com/gp/product/0596005954/

954 :名無しさん@お腹いっぱい。:2006/01/18(水) 12:49:13
詳しそうだけど、ここに出入りしてる人間にとっては、読むのだるそう

955 :名無しさん@お腹いっぱい。:2006/01/19(木) 00:29:11
>>949
Ctrl-C の後「値の貼り付け」。

956 :名無しさん@お腹いっぱい。:2006/01/19(木) 01:21:10
>>951
最近、Mac OS Xとかmp3なファイルとか、
空白を含むパス名が増えてきたから、

> files=$(eval echo '*.c')
> echo $files

こういう展開されたのを保持するやり方は厳しくなったな。

> ext='*.c'
> echo $ext

じゃないと空白入りのパス名が分離されちゃう。


957 :名無しさん@お腹いっぱい。:2006/01/19(木) 01:56:32
>>949
hogehoge=`eval "echo $1"`

958 :名無しさん@お腹いっぱい。:2006/01/19(木) 23:11:24
192.168.1.2 と 255.255.0.0 の論理和を出したいのですが、どうするのが手軽
でしょうか? perl を使ってもいいので教えてください。


959 :名無しさん@お腹いっぱい。:2006/01/19(木) 23:30:16
>>958
論理*和*なら
echo 255.255.`expr 192.168.1.2 : '[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\.[0-9][0-9]*\)'`

960 :名無しさん@お腹いっぱい。:2006/01/19(木) 23:31:53
本当に論理和でよかったのだろうか・・・orz

961 :名無しさん@お腹いっぱい。:2006/01/19(木) 23:47:27
bitwise orだったとしても

$ perl -e '$ip="192.168.1.2"; @a=split(/\./,$ip); @b=split(/\./,"255.255.0.0");\
for ($i = 0; $i < $#a; $i++) { $l=int($a[$i])|int($b[$i]); print "$l."; }\
$l=int($a[$i])|int($b[$i]); print "$l\n";'
255.255.1.2

なわけで、何がやりたいのか悩む...

普通はbitwise andだよな。

962 :名無しさん@お腹いっぱい。:2006/01/20(金) 00:10:33
#!/bin/sh
sed 's/a//g' < /dev/stdin

標準入力からのデータを加工する上記のようなスクリプト foo があったとして

echo hage | foo

のように使えば問題ないですが、foo 単独で実行した場合に stdin を見にいっ
て返ってこなくなります。stdin からデータが渡されてるかどうかを判別する
うまい方法ってあります?


963 :名無しさん@お腹いっぱい。:2006/01/20(金) 00:28:51
% tty
/dev/ttyp1
% tty </dev/null
not a tty


964 :名無しさん@お腹いっぱい。:2006/01/20(金) 00:55:09
うちの部署になんでもかんでもシェルスクリプトでやろうとする人が
いるのですがどうやったらいいでしょうか?

965 :名無しさん@お腹いっぱい。:2006/01/20(金) 00:59:32
黙ってついて行きなさい

966 :名無しさん@お腹いっぱい。:2006/01/20(金) 01:19:32
>>962

#!/bin/sh
[ -t 0 ] || sed 's//g/'

これでどう?

967 :名無しさん@お腹いっぱい。:2006/01/20(金) 10:21:00
すんません。ネットワークアドレスを計算したかったんです。。

968 :名無しさん@お腹いっぱい。:2006/01/20(金) 10:26:04
>>967
だったら論理和じゃなくて論理積だろ。

969 :名無しさん@お腹いっぱい。:2006/01/20(金) 12:36:10
>>963,966
なるほど、そうすればいいのか。サンクスでした。

970 :名無しさん@お腹いっぱい。:2006/01/20(金) 13:07:02
>>958
Net::Netmask

971 :名無しさん@お腹いっぱい。:2006/01/20(金) 13:44:59
>>975氏に次スレをおながいします

972 :名無しさん@お腹いっぱい。:2006/01/20(金) 14:40:33
>>957
>>956は無視かよ…

973 :名無しさん@お腹いっぱい。:2006/01/20(金) 14:44:09
>>962
> foo 単独で実行した場合に stdin を見にいって返ってこなくなります。
> stdin からデータが渡されてるかどうかを判別するうまい方法ってあります?

それが普通だから気にするな。
cat, sed, grep...

> sed 's/a//g' < /dev/stdin

"< /dev/stdin"は冗長。


974 :名無しさん@お腹いっぱい。:2006/01/20(金) 18:13:08
>>972
まあいいじゃん。
空白を含むファイル名を前提とするかどうかは、人によって違うわけだし。

975 :名無しさん@お腹いっぱい。:2006/01/20(金) 21:10:11
>>974
普通は前提にするけどな。

976 :名無しさん@お腹いっぱい。:2006/01/20(金) 21:16:04
>>975
次スレよろ

977 :名無しさん@お腹いっぱい。:2006/01/20(金) 21:25:29
>>975
そうでもないよ。

978 :名無しさん@お腹いっぱい。:2006/01/20(金) 21:41:10
いや、普通、前提にする。
$1 $hoge とか、" "なしで書いてあるスクリプトを見るとすぐ「ダメー」と思う。
とくに、$@とか書いてあるとアフォかと思う。
そういう感覚が大切。

979 :名無しさん@お腹いっぱい。:2006/01/20(金) 22:03:07
>>978
お前の普通は世間の普通じゃない、とだけ言っておく。


980 :名無しさん@お腹いっぱい。:2006/01/20(金) 22:12:01
"$@"じゃなくて、$*ってのはよくみるなあ。残念。
"$1"じゃなくて、$1なのはもう話にならないと思う。

981 :978:2006/01/20(金) 22:17:46
>>979
俺は >>975>>980 とは別人だよ。
俺以外に「$var は "$var"と書け」という主張をしている人を複数見ているので、
これが世間一般の普通の考えだと思うが。

982 :名無しさん@お腹いっぱい。:2006/01/20(金) 22:21:01
理屈にもなんにもなってねえな

983 :名無しさん@お腹いっぱい。:2006/01/20(金) 22:33:13
"$1"と書かずに$1と書くメリットはまったくない。

984 :名無しさん@お腹いっぱい。:2006/01/20(金) 22:59:14
スレ違いだが、

sshは引数をスペースを間に入れて結合した文字列をsshdに送る。
sshdは
argv[0] = shell
argv[1] = "-c"
argv[2] = 送られた文字列
のように実行する。
なので'1 2 3'というファイルを指定するためには
ssh localhost touch "'1 2 3'"
のように''をつける必要がある。

シェルを経由して実行する場合は引数(の数と内容)を保ったまま渡
すのは無理なのかもしれんが。

985 :名無しさん@お腹いっぱい。:2006/01/20(金) 23:07:19
無理じゃない。ここ最近の議論を良く理解しろ。

986 :名無しさん@お腹いっぱい。:2006/01/20(金) 23:13:11
>>983
めんどい時。

987 :984:2006/01/20(金) 23:29:30
>>985
シェルを経由して実行って書いたのは
sh -c コマンド
の形式で実行という意味です。

与えられた引数をそのまま sh -c で起動したシェルに渡すのは無
理ではないかと言っているのです。もし可能なら方法をください。

988 :名無しさん@お腹いっぱい。:2006/01/20(金) 23:30:51
×方法をください
○方法を教えてください

989 :名無しさん@お腹いっぱい。:2006/01/20(金) 23:59:55
ふつーにできるけど何でできないと思ったんだろ?

$ cat hoge.sh
#!/bin/sh
echo "1:[$1]"
echo "2:[$2]"
echo "3:[$3]"
$ sh -c './hoge.sh "123" "A B C" "x
y
z"'
1:[123]
2:[A B C]
3:[x
y
z]


990 :名無しさん@お腹いっぱい。:2006/01/21(土) 00:08:16
>>989
ごめん。説明が悪かった。

$ cat hoge.sh
#!/bin/sh
sh -c "$*"

$ hoge.sh touch 'hoge hoge'

これでは'hoge hoge'というファイルは作られない。
hoge.shを書き換えて、hoge.shに渡された引数がhoge.shから起動さ
れたシェルにそのまま渡されるようにしたい。

991 :名無しさん@お腹いっぱい。:2006/01/21(土) 00:14:16
>>990
お前は馬鹿か? ここ最近の議論を良く理解しろ。



992 :名無しさん@お腹いっぱい。:2006/01/21(土) 00:25:17
>>991
わかりません><

993 :名無しさん@お腹いっぱい。:2006/01/21(土) 07:52:25
固定の引数じゃなくて、
すでに "$@" に入っている引数をそのまま、
sh -c の形で引き渡すのはちょっと大変だね。
sh -c だと引数解釈が結果的に2回行なわれるから、
"$@"は1回解釈のものに対してで引数をそのまま渡せるけど、
2回解釈されると困る。

ようするに、"$@" の2回解釈版がシェル文法に存在すれば簡単なのだけど。。

994 :名無しさん@お腹いっぱい。:2006/01/21(土) 13:48:11
>>993
sh -c は引数を1つしか取らないので"$@"は使えませんよ。使うなら"$*"

995 :名無しさん@お腹いっぱい。:2006/01/21(土) 13:57:05
sh -c 'foo "$@"' なんて日常茶飯事ですよ。
sh -c 'foo \'some pattern\' "$@"' とか、
sh -c "foo $bar \"$@\"" とかさ。

>>993はevalや〜 Expansionを理解してないね。

996 :名無しさん@お腹いっぱい。:2006/01/21(土) 13:58:48
>>995
> sh -c 'foo \'some pattern\' "$@"' とか、
おまえこそわかっていないようだな。

997 :名無しさん@お腹いっぱい。:2006/01/21(土) 13:58:54
>>995
> sh -c "foo $bar \"$@\"" とかさ。

sh -c "foo $bar \"\$@\""

一つ\忘れました。


998 :名無しさん@お腹いっぱい。:2006/01/21(土) 14:00:17
続きはこつら

シェルスクリプト総合 その5
http://pc8.2ch.net/test/read.cgi/unix/1137801629/

999 :名無しさん@お腹いっぱい。:2006/01/21(土) 14:00:52
問題はsh -cが引数を1つしか取らないことで、引数を複数許すなら
何も問題はない。

1000 :名無しさん@お腹いっぱい。:2006/01/21(土) 14:11:55
1000000000000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

223 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)