トップページunix
1001コメント285KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2005/04/17(日) 00:17:17
シェルスクリプトの総合スレです。スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-10くらい)をご覧ください。

□前スレや過去スレ:
シェルスクリプト総合 その1
http://pc8.2ch.net/test/read.cgi/unix/1101820646/
☆シェルスクリプトを勉強するにあたって☆
http://pc5.2ch.net/test/read.cgi/unix/989659936/
便利なシェルスクリプト見せろ
http://pc5.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/
おまえら! shell は何を使っているんですか?
http://pc5.2ch.net/test/read.cgi/unix/1012330865/
Eshell の使い方とか設定とか【Emacs Shell、Lisp】
http://pc8.2ch.net/test/read.cgi/unix/1102921590/

□他板の関連スレ:
Macでシェルスクリプト総合 Part 1
http://pc7.2ch.net/test/read.cgi/mac/1105074933/
【Shell】どのシェル使ってる?【Script】
http://pc8.2ch.net/test/read.cgi/linux/1067330754/
0166名無しさん@お腹いっぱい。2005/05/14(土) 00:14:57
>>163
time_tの値を返すコマンドを作れ。
0167名無しさん@お腹いっぱい。2005/05/14(土) 02:12:30
>> 163
こんなの書いてみた

# 05:30 -> 530 数値に書き換える
function timeToInt() {
 if [ x"$1" = x"00:00" ] ; then
  echo "0"
  return
 fi
 echo $1 | sed s/:// | sed s/^0*//
}

if [ `timeToInt $A` -lt `timeToInt $B` ] ; then
 C="OK"
else
 C="NG"
fi
0168名無しさん@お腹いっぱい。2005/05/14(土) 08:34:04
>>163
俺も
a=09:39; b=05:30; if [ $((10#${a/:/})) -lt $((10#${b/:/})) ]; then c=OK; else c=NG; fi; echo $c
0169名無しさん@お腹いっぱい。2005/05/14(土) 09:07:10
>>165
の言う通り。
”:”だけ削除するロジックを入れれば、変数文字列の先頭に0が残っていても、数字として比較できる。
0170名無しさん@お腹いっぱい。2005/05/14(土) 09:17:46
>>169
0が残っていると8進数になるんじゃない。
0171名無しさん@お腹いっぱい。2005/05/14(土) 11:49:13
>158(>159)です。

>160
>161
>162

ありがとうつД`)・゚・。・゚゚・*:.。..。.:*・゚
でけました。

SUBSEPって言うawk変数の存在さえ知らなかったので
そこから調べました。ちなみに、キー項目はユーザの
入力項目なので初期値の "@" から変更しようかなとか
思ってます。
0172名無しさん@お腹いっぱい。2005/05/14(土) 13:51:47
いや、今は SUBSEP は知らんでいいと思う。
昔の GNU awk は多次元配列の扱いがタコだったので
$1 SUBSEP $2 in a と書かないと動かなかったけど、
最近のは gawk に限らず ($1, $2) in a という書き方ができるので。
0173名無しさん@お腹いっぱい。2005/05/14(土) 13:57:54
あと、SUBSEP のデフォルトは @ じゃないので。
0174名無しさん@お腹いっぱい。2005/05/14(土) 14:03:29
なんかねぼけてるなー。
if((i,j) in a) はできるけど、
for((i,j) in a) はできないから SUBSEP を使うんだな。
0175名無しさん@お腹いっぱい。2005/05/14(土) 14:55:46
2,球技,20050514_120050
1,球技,20050514_120050
1,文化,20050514_160000
2,生活,20050514_170000

というテキストを

2,生活,20050514_170000
1,文化,20050514_160000
1,球技,20050514_120050
2,球技,20050514_120050

のようにしたいです。

ソートの優先条件は
1.日付の降順 ( sort -t , -k 3 -r)
2.先頭の番号の昇順 ( sort -t , -k 1 )
を一緒に実行したいってことです(降順と昇順を同時に指定)。

できますか??
0176名無しさん@お腹いっぱい。2005/05/14(土) 15:03:29
宿題を装った釣りも禁止
01771632005/05/14(土) 21:59:46
>>164>>165>>166>>167>>168>>169>>170

返事が遅れてしまい、申し訳ありませんでした。
色々考えて下さいまして、ありがとうございました。

あの後、色々当方でも考えましたが、
結局辞書式比較を諦めて、数値比較を行うことにしました。
(その直後に、秒単位まで見ることになってorz)

最初は、時、分、秒とパーツに分け、それぞれで比較を
行ってましたが、すごく馬鹿らしくなってきたので、
>>167氏のようにsedコマンドで":”を外し、それを
比較していく形にしたら、あっさりと出来てしまいました。
頭の"0"を気にしなくても良かったっぽいです。
肝心なのは、その数値の大小を見る事でしたから。

(余談ですが、このロジックが解決した後、色々悩んでた
 問題が次々解決していく状態になりましたw
 例えるとチューリップ開きっ放しみたいな感じ。
 プログラム組んでる時って、こういう事たまにありますよねw)
0178名無しさん@お腹いっぱい。2005/05/18(水) 08:08:13
>>122
AND:
echo 00110 01010 |\
sed -e "s/^/%/; :ll; s/%\(.\)\(.*\) \(.\)\(.*\)/#\1\3%\2 \4/; tll; s/%//; s/#11/1/g; s/#[01]\{2\}/0/g;"

OR:
echo 00110 01010 |\
sed -e "s/^/%/; :ll; s/%\(.\)\(.*\) \(.\)\(.*\)/#\1\3%\2 \4/; tll; s/%//; s/#00/0/g; s/#[01]\{2\}/1/g;"
0179名無しさん@お腹いっぱい。2005/05/18(水) 09:49:41
うひょー
0180名無しさん@お腹いっぱい。2005/05/18(水) 16:47:19
質問があります。
/work/foo/bar/test
のtestだけを取得したいのですが、どのようにすればいいのでしょうか。
情けないがお手上げです・・・
簡単な質問だと思いますがよろしくお願いいたします。
0181名無しさん@お腹いっぱい。2005/05/18(水) 16:50:16
man basename

って basename 知らなくてもどうにでもなるでしょ。
0182名無しさん@お腹いっぱい。2005/05/18(水) 16:52:27
変数なら${foo##*/}とか。
0183名無しさん@お腹いっぱい。2005/05/18(水) 16:52:47
あ、basenameで拾えました。
すいません。。。

ってもうカキコある・・・

ちなみにexprでやろうとがんばってたんですが
exprやって取得するにはどうすればよいのでしょうか?
0184名無しさん@お腹いっぱい。2005/05/18(水) 17:25:56
Solaris で man expr すると、そのまま答が載ってたりなんかする。


Example 2:

basename(1) をエミュレートします。basename(1) は、$a という
パス名の最後の要素を返します。$a が /usr/abc/file か、ただの
file のいずれかと等価の場合に、この例は、file を返します。引
数 としての単独の / に注意してください。expr は / を除数演算
子とみなします (後述の「注意事項」を参照)。

example$ expr $a : '.*/\(.*\)' \| $a
01851832005/05/18(水) 18:09:19
おぉ
ありがとうございます!
0186名無しさん@お腹いっぱい。2005/05/19(木) 21:10:25
環境:cygwin
!#/bin/sh
rsync.exe -arvz -e ssh /cygdrive/c/Documents\ and\ Settings/hoge/Local\ Settings/Application\ Data/Microsoft/Outlook ugo@mogo:/cygdrive/c/backup/

というviで作成したバックアップのスクリプトを実行させたのですが、rsyncから、t/Outlook: not foundというエラーが返ってきてしまいます。

viで作成したとき、途中で改行されてしまっているのが原因らしいのですが、回避する方法はありませんか?
'や"などを付けて実行しても同じような結果です。
初歩的な質問で申し訳ありません。


0187名無しさん@お腹いっぱい。2005/05/19(木) 21:12:50
\
0188名無しさん@お腹いっぱい。2005/05/19(木) 21:41:10
>>187
> \

やはり、viが画面の端っこまで文字が来ると勝手に折り返して、改行コードを入れてしまうのが問題のようです。
\
を使うといいということですか?

回答ありがとう御座います。

0189名無しさん@お腹いっぱい。2005/05/19(木) 21:51:37
入れねぇだろw
0190名無しさん@お腹いっぱい。2005/05/19(木) 21:52:24
>>189
> 入れねぇだろw

やっぱりそうでしたか。何となく気づいてました。
viの設定で何とかしなければいけないようですね。
0191名無しさん@お腹いっぱい。2005/05/19(木) 23:56:36
>Microsoft/Outlook
ここか?
0192名無しさん@お腹いっぱい。2005/05/20(金) 10:15:02
>>191
> >Microsoft/Outlook
> ここか?

vimだと、t/Outlookで折り返されてしまうのです。
その状態で保存すると、Microsof t/Outlookという感じでパスが区切られてしますのです。
別のエディタでやれば問題なのです。
viの設定でしょうね。
ところで、スクリプトを書くときはどんなエディタを使っていますか?
0193名無しさん@お腹いっぱい。2005/05/20(金) 19:19:45
>>192
KWrite
0194名無しさん@お腹いっぱい。2005/05/20(金) 19:42:10
>>192
~/.vimrc あたりで breakat とか設定しとるか?
いずれにせよ無駄レス繰り返すよりも使ってる .vimrc 貼ったほうがなんぼか
確実なレスが付くし,解決も早いはず.
01951942005/05/20(金) 19:44:37
ってか,ここってシェルスクリプトスレじゃんかよ>>192
vimスレ逝け
0196名無しさん@お腹いっぱい。2005/05/21(土) 00:34:32
"Documents\ and\ Settings"とか、"Local\ Settings/Application\ Data"
とか邪悪なディレクトリ名を直接スクリプトに書くなんて。。。
OutLookの設定で、データの保存ディレクトリをもっとマシな場所に変えれば済むんじゃないの?
0197名無しさん@お腹いっぱい。2005/05/21(土) 01:31:52
windows 使ってる限り Program Files とか Documents and Settings は
避けて通れないよ。
0198名無しさん@お腹いっぱい。2005/05/21(土) 02:20:52
>>197
素人発見
0199名無しさん@お腹いっぱい。2005/05/21(土) 03:17:52
マイPCしか触らないんならともかく
職業的にWindowsに触れる機会があるんなら
郷に入っては郷に従うべきだろう
02001862005/05/21(土) 08:59:30
無駄なレスを食ってします。申し訳ありません。
答えて方々ありがとう御座います。
オライリー「入門vi」を読んで、勉強することにします。

とりあえず、xyzzyで編集してしのいでます。
"Documents\ and\ Settings"とか、"Local\ Settings/Application\ Data"
はイヤなんですけど、そこらへんは、どういうわけかあんまり変えたくないのですよ。

0201名無しさん@お腹いっぱい。2005/05/21(土) 10:00:53
>200
いっそのこと Docume~1 とかロングファイルネームを諦めちゃえば?
0202名無しさん@お腹いっぱい。2005/05/22(日) 17:47:28
sshを使って、リモートでマシンの電源を切るスクリプトを作ったのですが、
sshでログインしたところで止まってしまいます。
仕方がないので、ログアウトするためにexitを実行すると、
shutdownコマンドが実行されて、ローカルのマシンの電源が切れてしますのです。

シェルスクリプトでは、リモートのPCを操作して、自動的にログアウトするようなことは、
無理なのでしょうか?

コマンド
#!/sh/bin
ssh hoge@ugo
shutdown -s -t 0
exit


0203名無しさん@お腹いっぱい。2005/05/22(日) 18:07:24
ネタなのかマジなのか。。。
1行目はなんじゃ?
ちなみに、”shutdown -s -t 0”
これってなんていうOSのコマンド?
0204名無しさん@お腹いっぱい。2005/05/22(日) 18:16:39
>>202
man ssh
0205名無しさん@お腹いっぱい。2005/05/22(日) 18:21:29
>>202
ssh hoge@ugo shutdown -s -t 0
0206名無しさん@お腹いっぱい。2005/05/22(日) 18:21:43
ssh hoge@ugo shutdown -s -t 0
0207名無しさん@お腹いっぱい。2005/05/22(日) 19:45:53
>>206
> ssh hoge@ugo shutdown -s -t 0

助かりました。これをスクリプトに保存しておきます。

#!/bin/sh
ssh hoge@ugo shutdown -s -t 0

186の方のように、Windowsを使っています。
0208名無しさん@お腹いっぱい。2005/05/23(月) 16:10:05
>>196
時代遅れ。

KDEでthunderbird使うと
~/.thunderbird/abcdefgh.default/Mail/Local\ Folders/Unsent\ Messages/
だったり、
~/.kde/share/apps/RecentDocuments/Mozilla\ Thunderbird.desktop
だったりするぞ。
0209名無しさん@お腹いっぱい。2005/05/23(月) 21:46:11
他人の書いたシェルを読んでたら
何してるかわからない箇所が出てきて困ってます(>_<)
これってどう解釈したら良いの?
ファイル名の何かをピリオドと比較してるようだけど・・・
詳しくは何してるのかなぁ

#!/bin/sh
filename=$1
if[ "${filename%${filename#?}}"="." ] ; then
0210名無しさん@お腹いっぱい。2005/05/23(月) 22:00:39
他人の書いたシェルを読んでたら
何してるかわからない箇所が出てきて困ってます(>_<)
これってどう解釈したら良いの?
ファイル名の何かをピリオドと比較してるようだけど・・・
詳しくは何してるのかなぁ

#!/bin/sh
filename=$1
if[ "${filename%${filename#?}}"="." ] ; then
0211名無しさん@お腹いっぱい。2005/05/23(月) 22:21:22
>>209
man sh して、Parameter Expansion の項を参照せよ。
0212名無しさん@お腹いっぱい。2005/05/23(月) 22:28:19
先頭が '.' で始まっているかどうか判別してるんじゃねえの?
# expr を使わずに、shell の中だけでやるあたりが。。。
0213名無しさん@お腹いっぱい。2005/05/23(月) 22:34:08
#!/bin/sh
for name in *;do
echo ${name%${name#?}}
echo $name
done

これを実行するとわかってしまう。
0214名無しさん@お腹いっぱい。2005/05/23(月) 22:35:53
${filename:0:1} ってbash固有なの?
/bin/sh がなくって試せないや。
0215名無しさん@お腹いっぱい。2005/05/23(月) 23:01:56
>>214
sh にはないね。Bad substitution エラーになりますた。
0216名無しさん@お腹いっぱい。2005/05/23(月) 23:18:39
${filename:0:1}はbash独自だが、
${name#?}や${name%xxx}も、
巣の/bin/shでは使えない。

ファイル名の先頭が.かどうかを判断するなら、

case "$filename" in
.*)
hoge;;
esac

でやるべきだな。
これなら移植性抜群。
0217名無しさん@お腹いっぱい。2005/05/24(火) 00:20:30
PSコマンドとgrepを利用し、特定のプロセスをkillしたいのですが、
プロセスid(pid)をうまく取得する方法はありますか。

何桁目で取得しているのですが、うまくいかずに困っています。
アドバイスお願いいたしまし。
0218名無しさん@お腹いっぱい。2005/05/24(火) 00:29:11
>>217
pgrep(1) で出来ると思うけど、そのままずばり pkill(1) 使えば?
Solaris 由来のコマンドだけど、最近の Linux にも入ってるらしい

シェルスクリプトでやりたいなら、ps(1) の出力を read(1) で
読んで処理すれば良いと思う

ps -ef | grep [m]y_command | read i j k; kill -9 $i

# i j k は適当。man 読んでね
0219名無しさん@お腹いっぱい。2005/05/24(火) 00:37:54
>>218
スマソ. こっちが正解

ps -ef | grep [m]y_command | while read uidx pidx rest; do kill -9 ${pidx}; done
0220名無しさん@お腹いっぱい。2005/05/24(火) 01:10:55
>>217,218,219
ps -o pid,command
0221名無しさん@お腹いっぱい。2005/05/24(火) 01:29:27
>>209
それって[ ]の中が引数1つだから常に真のような気がするが。
0222名無しさん@お腹いっぱい。2005/05/24(火) 02:02:32
>>221
grep [m]y_command は、my_commandにはマッチさせて
grep自身にはマッチさせないための常套手段。

んでも、grep '[m]y_command' みたいにクォートしないとダメかも。
0223名無しさん@お腹いっぱい。2005/05/24(火) 02:11:09
>>222
そういう話ではない。
02242182005/05/24(火) 02:11:32
>>222
多分レス番違ってる...

bash はシングルクォートで囲わなくてもオッケーでした
zsh はダメみたい

デフォで囲っておくかエスケープした方が良かったですね
訂正サンクス
0225名無しさん@お腹いっぱい。2005/05/24(火) 19:24:08
zshまで、考える必要はない。
0226名無しさん@お腹いっぱい。2005/05/24(火) 20:32:56
この場合はzshかどうかの問題じゃない。
たまたまカレントディレクトリに、
my_command
という名前のファイルが存在していると、
grep [m]y_command
を実行しても、シェルによって
grep my_command
に展開されてしまい、せっかくの用をなさなくなる。
なので、基本的には常にシングルクォートを使って
grep '[m]y_command'
とするものと覚えた方がいい
0227名無しさん@お腹いっぱい。2005/05/24(火) 20:45:52
>たまたまカレントディレクトリに、

なんでやねん。
アホか。
0228名無しさん@お腹いっぱい。2005/05/24(火) 20:53:50
>>226
おお、なるほど! こういうの、意外に見つけにくい盲点だよな。
作った時は動いたのに、ある日突然動かなくなるシェルスクリプトは、
原因が [m] とかの展開にあったりする。
カレントディレクトリはどこになるかわからないから、
こういう名前のファイルはない、とか、仮定しちゃいけないね。

>>227
あなたの方がアホですね。
0229名無しさん@お腹いっぱい。2005/05/24(火) 21:30:11
grep
file指定がない場合、標準入力からの読み込みのはずだが?
0230名無しさん@お腹いっぱい。2005/05/24(火) 21:34:16
>>229
Hah?
grepが起動される前に、[m]y_commandという文字列が
シェルによって、カレントディレクトリと照合されて
展開されてしまうことを問題にしているわけだが?
頭大丈夫?
0231名無しさん@お腹いっぱい。2005/05/24(火) 21:43:37
話の流れが読めてないよね
0232名無しさん@お腹いっぱい。2005/05/24(火) 21:54:36
[m] という文字列は、
シェルにとってはファイル名展開(ワイルドカードの一種)
grepにとっては正規表現であること、
および、シェルの引数解釈とコマンド実行の順序関係について、

>>227 = >>229 は理解していないと見た。
0233名無しさん@お腹いっぱい。2005/05/24(火) 22:01:15
>>224
間違ってないっしょ。
0234名無しさん@お腹いっぱい。2005/05/24(火) 22:34:42
>>233
ゴミンナサイ
221 は 209 の test コマンドに対して突っ込み入れてるのかと
思ってたけど違うか
0235名無しさん@お腹いっぱい。2005/05/24(火) 22:45:37
説明しよう。

221 は 209 の testコマンドの = の両側にスペースがないことに
突っ込みを入れた。(この突っ込みは正しい)


222 は、221が自分への突っ込みかと誤解した。
しかし、その後、222が [m]y_command の意味について
説明していること自体は正しい。

上記の2つは全然別の話題。
0236名無しさん@お腹いっぱい。2005/05/24(火) 22:53:41
ナルホド、ありがとう。
ちなみに 222 != 218 です。自分が 218, 219 なので。
02372212005/05/25(水) 00:42:17
>>235
ワロス

全然話が噛み合ってないと思ったらそういうことか。[]が紛らわし
かったのね。
0238名無しさん@お腹いっぱい。2005/05/25(水) 01:56:43
よく読みといたな。バグでも探すみたいだ。
0239名無しさん@お腹いっぱい。2005/05/28(土) 16:08:43
すみません。ちょっとご教授願いたいのですが、

シェルスクリプトで
--------------------------------------
YYYY/MM/dd HH*MM:SS AAAAAAAAA BBBBBBB
CCCCC DDDDD
YYYY/MM/dd HH*MM:SS AAAAAAAAA BBBBBBB
CCCCC DDDDD
--------------------------------------
こういう形のログがある場合に
--------------------------------------
YYYY/MM/dd HH*MM:SS AAAAAAAAA BBBBBBB CCCCC DDDDD
YYYY/MM/dd HH*MM:SS AAAAAAAAA BBBBBBB CCCCC DDDDD
--------------------------------------
こういう風に直したいのですが、どのようにすればいいのですか?
要するに改行を取り除きたいのですが・・・。
0240名無しさん@お腹いっぱい。2005/05/28(土) 16:16:56
>>239
シェルスクリプトでもreadを使えばできるが、
普通はsedを使った方が楽。
よって、sedスレで質問しなさい。

http://pc8.2ch.net/test/read.cgi/unix/1085730992/l50
0241名無しさん@お腹いっぱい。2005/05/28(土) 16:18:13
239はマルチ
0242名無しさん@お腹いっぱい。2005/05/28(土) 16:19:25
>>239
cat log |sed -ne "N; s/\n/ /; p;"
0243名無しさん@お腹いっぱい。2005/05/28(土) 16:20:41
>>239
必ず2行単位で並んでいて、
その改行を取るだけなら、


while read a_line
do
 echo -n "$a_line"
 read b_line
 echo "$b_line"
done
0244名無しさん@お腹いっぱい。2005/05/28(土) 16:26:46
>>241
どことのマルチか書かないと。
0245名無しさん@お腹いっぱい。2005/05/28(土) 16:31:19
すいません、Solarisスレで最初聞いてしまいました。
こちらに誘導されましたので、こちらで質問させていただきました。
>>242殿、>>243殿 ありがとうございました。
0246名無しさん@お腹いっぱい。2005/05/28(土) 16:37:06
>>245
移動したなら元スレにそう書いといてくれよ。
0247名無しさん@お腹いっぱい。2005/05/28(土) 17:58:29
それにしたって、誘導しといてマルチ呼ばわりする必要ないだろ。
礼儀の足りないやつだとでも心の中で思っとけ。
0248名無しさん@お腹いっぱい。2005/06/02(木) 19:50:43
# clear; while :; do echo -n "^[[1;1H"; netstat -nr; sleep 1; done
   (ttp://codezine.jp/a/article.aspx?aid=67 より)
上のスクリプトのechoの部分は、「echo "^[[1;1H"として画面左上隅にカーソルを
移動させる」とあります。
しかし、bash(2.05b)で動かしてみましたが、^[[1;1Hが表示されるだけです。
何が問題なのでしょうか?
0249名無しさん@お腹いっぱい。2005/06/02(木) 20:07:40
>>248
^[ をどうやって打ち込んだか
0250名無しさん@お腹いっぱい。2005/06/02(木) 20:19:10
echo -ne "¥e[1;1H"
0251名無しさん@お腹いっぱい。2005/06/02(木) 22:08:39
tput crまたはecho -e '\r'の方がいいと思われ。
0252名無しさん@お腹いっぱい。2005/06/02(木) 22:09:01
すまん。echo -ne '\r'だった
02532512005/06/02(木) 22:13:48
さらに、ごめん。出力は1行じゃないのね。じゃあ毎回clearでもい
いと思うが。
0254名無しさん@お腹いっぱい。2005/06/02(木) 22:18:46
>>253
そういう話じゃなくて>>249ってだけだと思うが
0255名無しさん@お腹いっぱい。2005/06/02(木) 22:30:21
>>254
すまん。
0256名無しさん@お腹いっぱい。2005/06/03(金) 14:01:33
tput cup 0 0
0257名無しさん@お腹いっぱい。2005/06/03(金) 17:29:18
OSを特定できないヘテロな環境(POSIXは仮定できる)で
ファイルのサイズを取得するのはどうすればいいのでしょう?

ls -lのサイズのカラムは決まっていないようですし、
-sオプションの振舞いも微妙に異なるので困ってます。
0258名無しさん@お腹いっぱい。2005/06/03(金) 17:35:19
>>257
stat(2)
02592572005/06/03(金) 17:42:10
>>258
シェルスクリプトの中でcc起動してってことでしょうか?
Cのコードを書くとなると、そこでまたポータビリティに気を
使ったりしなきゃならないので、なるべく避けたいです。

wc呼ぶぐらいなら、Cのコードで行くとは思いますが...
0260名無しさん@お腹いっぱい。2005/06/03(金) 17:45:51
昔のSolarisだとccがついてこなかったような。
0261名無しさん@お腹いっぱい。2005/06/03(金) 18:42:01
stat(1)でいいじゃん
02622572005/06/03(金) 19:08:53
>>261
stat(1)のない古めのOSもあるんです。

POSIX標準の話を付け加えれば、stat(1)は標準にないようです。
0263名無しさん@お腹いっぱい。2005/06/03(金) 19:21:44
とりあえず進む。ダメな環境にぶち当たった時点で個別に考える。
0264名無しさん@お腹いっぱい。2005/06/03(金) 22:06:44
>>259
なんでwc嫌なの? wcだってfstatしてるだけじゃない。
0265名無しさん@お腹いっぱい。2005/06/04(土) 00:40:25
>264
どのUNIXでも、wc -cはfstatするの?
■ このスレッドは過去ログ倉庫に格納されています