トップページunix
988コメント297KB

シェルスクリプト総合 その24©5ch.net

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001名無しさん@お腹いっぱい。 転載ダメ©2ch.net2014/11/11(火) 00:54:03.43
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
  http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/
  http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その23
http://peace.2ch.net/test/read.cgi/unix/1404204950/
0821名無しさん@お腹いっぱい。2015/06/30(火) 06:02:29.85
>>819
JavaScriptとか使われてたらwgetでは無理
0822名無しさん@お腹いっぱい。2015/06/30(火) 07:54:44.40
>>810
GNU sedでも+は使えないと思っていたけど\+なんて拡張があるんだね。
知らなかった。今後は便利に使わせてもらおう…
0823名無しさん@お腹いっぱい。2015/06/30(火) 10:54:23.76
ブラウザのクッキーが必要で、JavaScriptで得られるリンクの抽出をしたいのですが
ソースを保存してgrepで試したのですがうまくいきませんでした。
なにかいい方法ありますか。
0824名無しさん@お腹いっぱい。2015/06/30(火) 11:12:25.50
もうちょい条件を具体的に
0825名無しさん@お腹いっぱい。2015/06/30(火) 12:12:09.26
>>821>>823
wgetでも切った貼ったすればURLは作れる
まあそれでカバーできないのもあるだろうから100%じゃないけど
自分はフレームが分かれてるページで挫折したというか対応をやめた
0826名無しさん@お腹いっぱい。2015/06/30(火) 12:24:48.15
ブラウザで操作するようなものは
firefoxのアドオンで使えるseleniumが便利なんじゃないかな
0827名無しさん@お腹いっぱい。2015/06/30(火) 13:49:39.60
トイレで大きな音って屁だろ
0828名無しさん@お腹いっぱい。2015/06/30(火) 13:50:38.46
誤爆しましたごめん
0829名無しさん@お腹いっぱい。2015/06/30(火) 19:21:47.66
>>825, >>826
しらべてみる
ありがとう
0830名無しさん@お腹いっぱい。2015/07/01(水) 00:58:33.93
>>796
おじいちゃん。-exec .... +を知らなかった事を必死にごまかそうとしてもダメだよ。


765 名無しさん@お腹いっぱい。[sage] 2015/06/24(水) 15:44:35.63

-execだと見つかったファイルの数だけプロセスつくるんだよね?
xargsだとexecシステムコールの引数個数制限までは1個のプロセス作ってその引数に見つかったファイル全部渡すのかな?
0831名無しさん@お腹いっぱい。2015/07/01(水) 01:13:29.53
つまんね。
0832名無しさん@お腹いっぱい。2015/07/01(水) 07:46:12.63
GNU sedで -rオプション、*BSD sedで -Eオプションつけるとバックスラッシュ
つけなくても+が使えるみたいだ。
0833名無しさん@お腹いっぱい。2015/07/01(水) 13:58:10.28
そりゃ、そっちは拡張正規表現だからな……
0834名無しさん@お腹いっぱい。2015/07/01(水) 14:36:35.81
最近、ポイントがずれた応答するヤツ一人いるなぁ
0835名無しさん@お腹いっぱい。2015/07/01(水) 15:04:35.61
わざとだろう
あんまり相手しちゃいけない
0836名無しさん@お腹いっぱい。2015/07/02(木) 08:18:40.41
言葉が足りなかった。拡張機能なのに素の状態でバックスラッシュつければ
動いてしまうのはどうなのかな?と思ったんだ。
0837名無しさん@お腹いっぱい。2015/07/02(木) 18:33:26.44
>>826

JSなページもいけるらしいが、実際やってみたら、サイトを開く、
ボタン押すなどは記録してくれるが、スクロールするとか、細かい
事は記録されなかった。画像をキャプチャしたいんだが無理の模様。
シェルスクリプトで書こうとして、LinksをJava対応とかにしてみた
ものの、努力実らず。。。
0838名無しさん@お腹いっぱい。2015/07/02(木) 18:41:44.19
>>823

もしかして、ローカルマシンでの話か?
0839名無しさん@お腹いっぱい。2015/07/02(木) 19:10:07.26
bashでの正規表現、コマンドごとの正規表現。
最初はバカばかしく思えた、たとえばpythonでの

import re

のほうが、思想としては正しいような気がしてきた。
0840名無しさん@お腹いっぱい。2015/07/02(木) 23:42:14.95
bashで
aaa=$(( bbb + ccc ))
という表記の仕方と
aaa=$(( $bbb + $ccc ))
という表記の仕方、どちらも同じ計算結果が得られるんですが
どちらが正しいんでしょうか?どちらで書いても良い仕様なんでしょうか?
0841名無しさん@お腹いっぱい。2015/07/03(金) 00:54:37.65
>>840
yes

function add() # 引数の$1と$2を足す
{
ANSWER=$(( $1 + $2 ))
}

こういうのは $は取れないけどね
0842名無しさん@お腹いっぱい。2015/07/03(金) 05:34:00.18
どうせなら、

((aaa = bbb + ccc))

って書いた方がいい。この方が数値計算らしいね。
0843名無しさん@お腹いっぱい。2015/07/03(金) 09:48:26.01
俺は let aaa=bbb+ccc が好きだな
0844名無しさん@お腹いっぱい。2015/07/03(金) 14:16:50.30
sortせずにuniqしたいんですが、エレガントな方法ありますか?
2回目以降に出てきた重複行をカットして出力です。それ以外はsortしないで元の順のまま出力。
0845名無しさん@お腹いっぱい。2015/07/03(金) 14:44:25.08
>>844
http://www.linuxquestions.org/questions/linux-newbie-8/uniq-values-in-unsorted-file-4175471813/#post5001429
0846名無しさん@お腹いっぱい。2015/07/03(金) 14:55:42.55
>>845
その方法しかありませんか?
頭に数値付ける方法は知ってましたがエレガントじゃないです
0847名無しさん@お腹いっぱい。2015/07/03(金) 15:20:13.81
ちょっといじれば数字なしにできるよ
0848名無しさん@お腹いっぱい。2015/07/03(金) 18:44:31.13
{
 if (count[$0] == 0) {
  print
  count[$0]++
 }
}
0849名無しさん@お腹いっぱい。2015/07/03(金) 19:39:34.12
シェルでは連想配列は使えまへん
0850名無しさん@お腹いっぱい。2015/07/03(金) 19:41:35.86
awkだろw
0851名無しさん@お腹いっぱい。2015/07/03(金) 20:13:46.43
Perlの連想配列便利
何も考えずにVBで同じようにやったらクソ遅かった
0852名無しさん@お腹いっぱい。2015/07/03(金) 21:11:40.93
bash なら連想配列使えるけど遅いので素直に awk でやるのが一番
0853名無しさん@お腹いっぱい。2015/07/04(土) 20:45:32.11
curl -L -O -J http://www.foo.com/bar
をやると、リダイレクト先のファイル名で保存されずにbarで保存されてしまう
リダイレクト先のファイル名で保存するにはどうすればできますか?
0854名無しさん@お腹いっぱい。2015/07/04(土) 21:03:45.47
日本語お上手ですね
0855名無しさん@お腹いっぱい。2015/07/04(土) 22:57:10.62
わからないなら黙ってればいいのに

-Iで情報取得してgrep、sed、展開で抽出
0856名無しさん@お腹いっぱい。2015/07/04(土) 23:36:06.98
すまん、これだと改行が入ってしまう
解決法はわからない
0857名無しさん@お腹いっぱい。2015/07/04(土) 23:37:41.83
>>853
curl -L -J http://www.foo.com/bar > foo

じゃだめなん?
0858名無しさん@お腹いっぱい。2015/07/05(日) 00:24:31.19
展開で%%と*を使えばいい
sedはめんどくさい
0859名無しさん@お腹いっぱい。2015/07/05(日) 06:16:53.25
foo.comの人って日本人なんですか?
0860名無しさん@お腹いっぱい。2015/07/05(日) 08:51:57.76
whoisでも見りゃいいだろ
0861名無しさん@お腹いっぱい。2015/07/05(日) 09:11:05.08
>>857
リダイレクト先のファイル名を取得したいのに決め打ちしてどうするw
0862名無しさん@お腹いっぱい。2015/07/05(日) 11:13:12.10
>>844
nl | sort -k 2 | uniq -f 1 | sort | cut -f 2-

>>853
http://stackoverflow.com/questions/6881034/curl-to-grab-remote-filename-after-following-location



何か違和感が有るが、まあいいか
0863名無しさん@お腹いっぱい。2015/07/07(火) 01:55:38.74
集団ストーカーももう時間切れかもしれないよ
予定よりも相当早いペースで突き進んでるよ
ギリシャのこと笑ってられないかもしれない
潰れる会社も出るだろうし、失業者も出るかもしれない
アウシュビッツレベルのネタだからオリンピックどころじゃないかもしれない
私の勝手な想像だけどね
でもバレテルよと何年も前から言ってるのに今日もバカの一つ覚えの電気通信で嫌がらせ
だからみんながそれが答えなのね、世界中に暴露して聞いてみろってことなのね
ということで動きが止まらない方向になっている
揉み消すとか臭いものにふたをする犯罪者の心理行動しか取れないクズは終わりかもしれない
観光客がちょっと増えたと喜んでいる場合じゃないよ、知っている人間は日本なんかに来てないよ
事実は言った人間が悪いんじゃないよ、作った人間が悪いんだよ
知ってる人間は後悔しないためにも正しい行動をしたほうがいいよ
ダメなものは世界中誰が見てもダメなんだからね
0864名無しさん@お腹いっぱい。2015/07/07(火) 17:07:44.73
>>853

barって、ディレクトリ? ファイル?
0865名無しさん@お腹いっぱい。2015/07/11(土) 02:16:43.69
メタ文字を含むパターンを変数に入れておいて
${var#pattern}
みたいな使い方はできないのですか?
0866名無しさん@お腹いっぱい。2015/07/11(土) 05:21:37.10
>>865
できるけど。

${var#$pattern}

patternに$が必要
0867名無しさん@お腹いっぱい。2015/07/12(日) 06:30:34.52
>>866
すみません、$ が抜けていました
どうやら zsh のデフォルトの仕様のせいで、
GLOB_SUBST オプションを有効にするか、${var#$~pattern} で望みどおりになりました
0868名無しさん@お腹いっぱい。2015/07/12(日) 23:45:48.39
for f inの中でsedでの置換に$fを使うには度すればいいのですか?
0869名無しさん@お腹いっぱい。2015/07/13(月) 03:08:28.34
sed -e "s/$f/fumofumo/"

とか
0870名無しさん@お腹いっぱい。2015/07/13(月) 04:53:41.61
全部ダブルクォートにせずに、必要なところだけダブルクォートにするのがお勧め。

sed '/aaa/,$s/'"$f"'/bbbb/g'
0871名無しさん@お腹いっぱい。2015/07/13(月) 13:45:08.39
count=1
for f in
do
file_name="${f##*/}"
sed -e 's/foo/foo_$f/g' /hoge/hoge.txt> ${count}_hoge.txt
mv $f ${par_dir2}/${file_name}
count=$(($count + 1))
done
これはダメ

sed -e 's/foo/foo_"$f"/g'
もだめでした

なんでだろう?
0872名無しさん@お腹いっぱい。2015/07/13(月) 13:50:39.03
>>871
クォートの対応、良く見ろよ

sed -e 's/foo/foo_"$f"/g' ←じゃなくて
sed -e 's/foo/foo_'"$f"'/g'

な。' 'を一回閉じてから" "を開き直す。スペースを空けずに。
0873名無しさん@お腹いっぱい。2015/07/13(月) 16:07:08.78
(全部ダブルクオートでいいのに・・・)
0874名無しさん@お腹いっぱい。2015/07/13(月) 17:05:32.16
クォートなんていらないのに・・・と思いかけたが$fの中身がわからないから必要なのか
というか$fだけをダブルクォートでも問題ないのかな?
0875名無しさん@お腹いっぱい。2015/07/13(月) 20:53:18.32
ファイル名を構成する文字とsedの正規表現の区切り問題は厄介だよ。
0876名無しさん@お腹いっぱい。2015/07/13(月) 23:15:54.08
>>870
全部ダブルでええやん
0877名無しさん@お腹いっぱい。2015/07/13(月) 23:41:43.94
>>870
/aaa/,$ 文字列aaaとマッチする行から行末まで次のコマンドを適用
s/"$f"/bbbb/g シェル変数$fとマッチした文字列をbbbbに置き換えるコマンド
全体をダブルクォートしたら$sがシェル変数として解釈されちゃうからいやん
0878名無しさん@お腹いっぱい。2015/07/13(月) 23:50:57.72
行末までじゃねえや最終行までね
0879名無しさん@お腹いっぱい。2015/07/14(火) 03:14:11.34
>>872
sed -e 's/foo/foo_'"$f"'/g'
でいけました。
クォートの挙動の勉強になりました。
ありとうございます。
0880名無しさん@お腹いっぱい。2015/07/18(土) 11:58:15.66
あるコマンドの出力をgrepで引っ掛けたいんだけど、できない・・・
何故でしょう。わかる方いますか

$ postmulti -i hogehoge -e destroy
postmulti: fatal: No instance named hogehoge

上のように、Noという文字列が出力されたら処理をしたいので

$ postmulti -i hogehoge -e destroy 2>&1 | grep No
$

とするが、ヒットしない。
0881名無しさん@お腹いっぱい。2015/07/18(土) 12:10:12.95
* 1,2以外に出力されている。(プログラム中で/dev/tty開けるとか)
* 何か間違えている。
前者は
$ postmulti -i hogehoge -e destroy >/dev/null
$ postmulti -i hogehoge -e destroy 2>/dev/null
で確認すれば良い。
0882名無しさん@お腹いっぱい。2015/07/18(土) 12:21:00.88
>>880 の後半、| grep No でヒットしなくて、しかも何も表示でないんだよね?
fdの1,2以外とか/dev/tty直接に出力されてるなら素通りの表示はされるはず。
なので、postmultiが出力がパイプの場合は出力を自分で抑制してるのかも。
0883名無しさん@お腹いっぱい。2015/07/18(土) 12:29:23.71
daemon系で、fork()とかsetsid()とか絡んでそうな悪寒
08848802015/07/18(土) 13:58:51.80
>>881
>>882

$ postmulti -i hogehoge -e destroy >/dev/null
postmulti: fatal: No instance named hogehoge

$ postmulti -i hogehoge -e destroy 2>/dev/null
$

確認すると、こんな感じ
なので確実に2番ですよね

だが、ファイルに書き出しても
$ postmulti -i hogehoge -e destroy 2>output
$ cat output
なにもでない。



>>883
そうなんですか。
ちょっと調べてみます
0885名無しさん@お腹いっぱい。2015/07/18(土) 14:55:40.11
やっぱり tty か redirect/pipe か判断してるみたい

Linux で以下を実行すると output ファイルにエラーメッセージが
書き込まれている。

$ echo 'int isatty(int fd) { return 1; }' | gcc -xc -shared -o isatty.so -
$ LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH LD_PRELOAD=isatty.so postmulti -v -i hogehoge -e destroy 2>output
0886名無しさん@お腹いっぱい。2015/07/18(土) 17:24:55.19
>>885
ありがとうございます!
上のコード理解してきました。そういうことなのですね。

一応ソースも確認したけど、その通りでした
postfix-3.0.1: ./src/postmulti/postmulti.c
1684 if (isatty(STDERR_FILENO))
1685 msg_vstream_init(argv[0], VSTREAM_ERR);
1686 msg_syslog_init(argv[0], LOG_PID, LOG_FACILITY);

isatty()を外から騙せるか試行錯誤してますが、だめならそのまま
利用させていただきます!
0887名無しさん@お腹いっぱい。2015/07/18(土) 23:59:07.25
expect コマンドがあれば expect -c 'コマンド 引数 ... ; expect eof'
で実行すればいいかも。
expect -c 'spawn pstmulti -i hogehoge -e destroy ; expect eof' | grep No
0888名無しさん@お腹いっぱい。2015/07/19(日) 00:06:30.73
expect -c 'spawn コマンド 引数... ; expect eof' だた...
例文の方は正しいです。
08898802015/07/19(日) 11:47:38.55
おおお!ありがとうございます。できました。
まことに感謝です
0890名無しさん@お腹いっぱい。2015/07/19(日) 15:45:46.71
var=$( command 1 | command 2 )
で、command 1とcommand 2のエラーレベルを取得数方法てありますか?
$?やPIPESTATUSではうまくいきませんでした。
0891名無しさん@お腹いっぱい。2015/07/19(日) 16:44:41.05
var=$( command 1 | command 2; echo ${PIPESTATUS[@]} >&2 )
0892名無しさん@お腹いっぱい。2015/07/19(日) 19:00:45.99
error_evel=(${PIPESTATUS[@]})
といった具合に格納したいのですが、できそうですか?
思いつかないです
0893名無しさん@お腹いっぱい。2015/07/19(日) 19:16:46.14
command 1 | command 2 > hoge
error_evel=(${PIPESTATUS[@]})
var=$(cat hoge); rm hoge
0894名無しさん@お腹いっぱい。2015/07/19(日) 20:37:20.22
var=$(command 1 | command; echo ${PIPESTATUS[@]})
error_evel=$(echo "$var" | tail -1)
var=$(echo "$var" | sed '$d')
0895名無しさん@お腹いっぱい。2015/07/19(日) 22:00:11.98
fun () {
 echo abc
}

# 1
res = "$(fun)"

# 2
res = `fun`


質問です。#1 と #2 は両方とも関数funの返り値を受け取って変数resへ代入していますが、
両方に特別な違いはあるのでしょうか?
見た目の好みの問題でどちらを使ってもよいものでしょうか?
0896名無しさん@お腹いっぱい。2015/07/19(日) 23:16:03.23
前者は純正シェルに拘ってるキチガイに絡まれる。
0897名無しさん@お腹いっぱい。2015/07/19(日) 23:26:38.65
>>895
$() は `` だから、"$(fun)" は "`fun`" で等価

違いは ’’はネストできないけど $() はネストできる

$ echo `date -r `pwd``
date: オプションには引数が必要です -- 'r'
Try 'date --help' for more information.
pwd

※これは echo $(date -r)pwd$()になってしまう

$ echo $(date -r $(pwd))
xxxx年 x月 x日 火曜日 xx:xx:xx JST
0898名無しさん@お腹いっぱい。2015/07/20(月) 05:43:37.07
$ echo $(echo $(echo hage))
hage
$ echo `echo `echo hage``
echo hage

後者は`echo `と``の中身がコマンドとして解釈されてこれは空っぽで、残ったecho hageが単純な文字列としてechoされるのかw
0899名無しさん@お腹いっぱい。2015/07/22(水) 16:37:21.58
いつも、変数取得と\rの消去をgrepと変数展開で
hoge=$(grep foo /bar/bar2)
hoge2=${hoge%?}
としているのですけど、?だとwinで作られたテキストか確認しなければ怖いのです。
\r、\r\n、^M、^M$では消せなかったです。
sedやtr使えばいいのですが、変数展開のほうが速いので
変数展開で安心して使いたいのです。
どうすればうまくできますか?
0900名無しさん@お腹いっぱい。2015/07/22(水) 17:20:17.87
grepで複数行がマッチすることはないのかな
0901名無しさん@お腹いっぱい。2015/07/22(水) 17:30:47.13
r=$(printf '\xd')

ってやっておいて

hoge2=${hoge%$r}
0902名無しさん@お腹いっぱい。2015/07/22(水) 17:43:05.00
>>900
もちろん、やるときにはgrep -m 1やってます

>>901
パターンを作ってしまえばいいのか
d
0903名無しさん@お腹いっぱい。2015/07/31(金) 19:13:47.94
すみません、自分用メモです
sedを使った改行を挟んだ置換
abcd
efg

aaaefgに
sed '/abcd/N;s/abcd\n/aaa/g' hoge.txt

abcd
efg

aaa
bbbに
LF=$(printf '\\\n_'); LF=${LF%_}
sed '/abcd/N;s/abcd\nefg/aaa'"$LF"'bbb/g' hoge.txt
0904名無しさん@お腹いっぱい。2015/07/31(金) 19:14:46.10
あと、printfがわかっていないので質問させてください。
>>901のr=$(printf '\xd')は、r=$(printf '\r')や$(echo -e '\r')ではまずいのでしょうか?
\xdはどういう意味なのですか?
もし、LFをprintfで作るときには$(printf '\n')、echoで作るときには$(echo -e '\n')で大丈夫なのでしょうか?
0905名無しさん@お腹いっぱい。2015/08/02(日) 06:43:49.16
>>904
echoでやってもいいよ。ただシェルによってechoの-eオプションが要ったり要らなかったりするから、
printfならどちらでも動くと。xdは16進の0xdの意味。
0906名無しさん@お腹いっぱい。2015/08/02(日) 13:55:04.46
ありがとうございます
うちのechoのmanみたら-e使えませんでした。
でも、bashのechoを見たらつかえました。
実感できました。

LFならxaになるんですね。
0907名無しさん@お腹いっぱい。2015/08/05(水) 12:50:25.59
grep "hogehoge" | head -1
0908名無しさん@お腹いっぱい。2015/08/05(水) 18:34:40.69
>>907 は誰に何を言いたいのだろうか?
grep -m 1 知らない人?
0909名無しさん@お腹いっぱい。2015/08/05(水) 18:42:34.72
>>903をマネして
a
b
c

d
e
f
にしようと
LF=$(printf '\\\n_'); LF=${LF%_}
sed '/abc/N;s/a\nb\nc/d'"$LF"'e'"$LF"'f/g' hoge.txt
をしたけど、ダメでした。
どうしてなんですか?どうすればいいのですか?
sedの改行から解放されると思ったのに。
0910名無しさん@お腹いっぱい。2015/08/05(水) 18:54:13.85
>>908
2つのプログラムの呼び出し、メモリ増といいことが見えない
しかも上にgrep -m 1 があるのに
誤爆か、シェルの覚えたてじゃないか
直後の>>908はいい勉強になるのでは
0911名無しさん@お腹いっぱい。2015/08/05(水) 19:18:30.92
>>910
脳メモリの節約
0912名無しさん@お腹いっぱい。2015/08/06(木) 03:47:34.20
むしろフィルタ指向のスクリプトを入れると最適化して、パイプの段数を減らしたスクリプトを吐いてくれるような
賢いオプティマイザ誰か作ってくれないかな?
0913名無しさん@お腹いっぱい。2015/08/06(木) 09:43:47.44
細かいオプション憶える負担を人に負わせるより、パイプ1段増やす方が合理的。
0914名無しさん@お腹いっぱい。2015/08/06(木) 13:25:47.04
head -1 は老害互換性オプション。
正しくは
head -n 1

新規作成スクリプトでは head -1 形式で記述してはいけない
0915名無しさん@お腹いっぱい。2015/08/06(木) 13:48:36.71
ケースバイケース
0916名無しさん@お腹いっぱい。2015/08/06(木) 14:02:13.45
動くからいいや
0917名無しさん@お腹いっぱい。2015/08/06(木) 14:08:49.62
head -1 を使わせないためにせっかくmanからも記述削除してあるのに。。
0918名無しさん@お腹いっぱい。2015/08/06(木) 14:57:15.89
manなんて読まんよ
実装を変えないと
0919名無しさん@お腹いっぱい。2015/08/06(木) 15:33:08.88
実装は互換性のためにあえて変えてない。既存スクリプト用。
0920名無しさん@お腹いっぱい。2015/08/06(木) 16:03:54.91
実装変わらなきゃ使う人なくならんね
0921名無しさん@お腹いっぱい。2015/08/06(木) 16:32:44.92
歴史的経緯をなかったことにはできない。unixなんだから
レス数が900を超えています。1000を超えると表示できなくなるよ。