[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/10 13:03 / Filesize : 248 KB / Number-of Response : 977
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト相談室



1 名前:デフォルトの名無しさん [2005/04/04(月) 03:43:03 ]
シェルスクリプトに関する質問・回答や議論等を行う相談室スレッド。 


554 名前:デフォルトの名無しさん [2007/04/07(土) 22:25:30 ]
>>553
すいません、ありがとうございます。
何もわかってないんで^^;
ずばり、そのとおりで、取得したいのはルータについてるグローバルIPです。。

555 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 22:42:16 ]
>>554
ダイアルアップルータやモデムにはtelnetサーバが内蔵されていることがある。
叩くコマンドが分かれば、expectを使って取得できるかもしれない。

httpサーバを内蔵していることもあるが、こっちはずばりIPアドレスを確認する
ページを持ってるかもね。


556 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 23:00:35 ]
>>554
誰もおまいのルータの仕様を知っているやつはいないからな・・・

うちのFLASHWAVE 2040 M1ならID:PASS@ルータのIP/doKeeping.htmlを
wgetで取得してvar sIpAddress="*.*.*.*";の場所を取得すればわかる。

557 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 00:37:43 ]
何も考えずにメール出せば、大抵はReceived:にIPアドレスが自動的に書かれる。
書かれないならば、書いてくれるメールサーバを提供しているISPに乗り換える。


558 名前:537 mailto:sage [2007/04/11(水) 10:24:46 ]
ソフトバンクさんからメールの返事が届きました。
正誤表も更新したみたいです。

559 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 12:36:15 ]
alias定義で改行の前に入れる\にはどのような作用があるのでしょうか?
csh でいろいろと試してみたところ、下のようにwhile文などが使えるようになりますが、
一方で、引数を扱ったりwhile文のネストをしたりすると正常に動作しなくなってしまいます。

alias loop '\
set count = 1\
while ( $count <= 5 )\
echo hoge\
@ count++\
end\
'


560 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 12:45:23 ]
未だだね。

561 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 12:46:29 ]
あーいけね、>560は>558の話ね。

>>559
行末のバックスラッシュは改行文字をエスケープする。

562 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 13:19:26 ]
>>561
「改行文字をエスケープする」の意味を具体的に教えて欲しいのです。
>>559のコードで\+改行を空白に置き換えると動かなくなります。
妙な副作用がなぜ出るのかも謎です。



563 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 22:34:26 ]
>>552
診断君とかにアクセスしてIP抜いてもらって
それをパースするのはだめなんか?

564 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 22:36:33 ]
ワンクリ詐欺サイトにアクセスすればIPアドレス教えてくれそうだな。



565 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 23:29:53 ]
>>563
頻度にもよるけどあんま他人様のとこに頼るのもいかんと思う。
自前で取れるんならそうした方が優しいし確実。一応
ttp://info.ddo.jp/remote_addr.php
とか使うとワンライナーでやれるけど。

566 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 12:59:30 ]
>>562
シェルスクリプトにおける改行の意味を調べてみると良いよ。

alias loop 'set count = 1;while ( $count <= 5 );echo hoge;@ count++;end;'


567 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 05:02:58 ]
>>566
while?

568 名前:デフォルトの名無しさん [2007/04/13(金) 21:22:17 ]
質問させてください。
以下のように、test-serverへ接続し、
date;hostname;whoamiを実行するスクリプトを書いてます。
date;hostname;whoamiの結果をリダイレクトし、
スクリプト本体があるサーバに保存したいのですが、
その場合、どう記述すれば良いでしょうか。

#/bin/bash
HOST=test-server
UNAME=root
PASSWD=***

expect -c "
set timeout 20
spawn telnet $HOST
expect login:\ ; send \"$UNAME\r\"
expect sword:\ ; send \"$PASSWD\r\"
expect \"$\" ; send \"ls\r\"
expect \"$\" ; send \"date;hostname;whoami\r\"
expect \"$\" ; send \"exit\r\"

569 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 11:40:37 ]
そのスクリプトの出力をリダイレクトすればいいのではなくて?

570 名前:568 mailto:sage [2007/04/17(火) 21:48:16 ]
その方法が分からないのです。expect内部でリダイレクトすると
接続先にファイルが出来てしまうんじゃ無いでしょうか

571 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 23:45:47 ]
>>570
にほんごよめますか?

572 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 00:08:52 ]
ラッパー側のスクリプトの出力をリダイレクトしようとしても、
expectの中で起動したプロセスの出力はexpectが全部食っちゃうん
じゃないの?




573 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 18:39:33 ]
あるプログラムをバックグラウンド実行して、
そのプログラムが一定時間後に終了していなかったら終了させる、みたいなことはできますか?

こんなイメージです。

#!/bin/sh

/bin/hoge & # 数十分かかる。途中で固まるかもしれない。

sleep 3600 # 念のため一時間待ってみる

[ hoge が終了していなかったら hogeをkillする。終了していたら無視 ]

exit

574 名前:デフォルトの名無しさん mailto:age [2007/04/21(土) 18:41:17 ]
あげ

575 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 18:50:35 ]
>>573
こういう事?

#!/bin/sh -x
DURATION=3600

hoge &
PID=$!

echo ${PID}
sleep ${DURATION}

kill ${PID}
exit

576 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 18:51:49 ]
>>573
pid控えておいて、atコマンドで終了スクリプトを仕込むとか。


577 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 19:30:31 ]
一時間の間にpidが再利用されない保証があるなら。

578 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 19:44:35 ]
kill する前に親プロセスの PID を確認すれば。

579 名前:デフォルトの名無しさん [2007/04/21(土) 20:11:19 ]
データを 1バイトだけ 読み込むコマンドってなんだっけ?

580 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 22:21:18 ]
>>579
head -c 1 ?

581 名前:573 mailto:age [2007/04/21(土) 22:39:07 ]
>>575
こういうことです!ありがとうございます。

>>576
atd動いていないッス。。。

>>577
>>578
pidが再利用されない補償はもちろん無いです。
ググっていますがPPIDを確認をするコマンドが見あたらないorz
$!や$$でPIDが取れるようなのでpsコマンドの結果から何とかしてみます。


582 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 17:22:43 ]
waitか何かで子プロセスの終了待てなかったっけ?



583 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 18:14:45 ]
>>573

pid=$!
count=0
while [ $count -lt 60 ]; do
sleep 60
kill -0 $pid || break
count=`expr $count + 1`
done
[ $count -lt 60 ] || kill $pid

584 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 18:15:16 ]
待つよ。

585 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 18:16:01 ]
むぅ、30秒差で…

>>582
waitで待つよ。

586 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 11:19:01 ]
>>583
kill -0 $pid
ってどういう意味?

587 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 20:32:55 ]
kill -0 $pid 2>/dev/null || break
の方がベターだな。

>>586
man 2 kill
The kill() system call sends the signal given by sig to pid, a process or
a group of processes. The sig argument may be one of the signals speci-
fied in sigaction(2) or it may be 0, in which case error checking is per-
formed but no signal is actually sent. This can be used to check the
validity of pid.

プロセスが存在してそのプロセスにシグナルを送る権限があれば正常終了。
それ以外はエラー。つまり、プロセスの生存確認に使用できる。

588 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 20:58:56 ]
>>587
なるほど。
日本語man読んでも意味がわかんなかったんだ

ありがとう

589 名前:デフォルトの名無しさん [2007/04/27(金) 13:30:22 ]
シェルブリッド

590 名前:デフォルトの名無しさん [2007/04/28(土) 16:07:15 ]

♪ア・ソ〜レ

ア・チョン! ア・チョン!

ア・チョン! チョン! チョン! バカ!

591 名前:デフォルトの名無しさん [2007/05/04(金) 00:27:06 ]
a.txt
2
4
23
87
483
3
b.txt
89
34
111
8
3
97
とある場合
program a.txt b.txt
と打てば
以下のようにに表示されるシェルスクリプトってできませぬか?

2+89=91
4+34=38
23+111=134
87+8=95
483+3=486
3+97=100

592 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:35:51 ]
>>591
スクリプトにするまでもないが、

#!/bin/sh
paste a.txt b.txt | awk '{ print $1 "+" $2 "=" $1 + $2}'




593 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:36:40 ]
あああ、paste $* | awk 以下略

594 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 22:00:14 ]
ああpasteって知らなんだサンキュー

595 名前:デフォルトの名無しさん [2007/05/10(木) 19:24:42 ]
自演さらしあげ

596 名前:デフォルトの名無しさん [2007/06/18(月) 22:07:54 ]
既存ファイルの一部のみ書き換える事ってできますか?
(ファイル名変えずに)

NHK,1
NTV,4
TBS,6
FTV,8
ANB,10

というテキストがあったとして
sed 's/N/X/g' という操作をして

XHK,1
XTV,4
TBS,6
FTV,8
AXB,10

としたいです。

597 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 22:23:39 ]
別のファイルに出力した後で、mvかcp

598 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 22:34:19 ]
-i オプションあるならそれ使え

599 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 06:36:31 ]
(mv file file.bak&& sed -e 's/N/X/g' >file) <file

600 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 06:47:14 ]
sed -i 's/N/X/g' file

601 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 10:04:16 ]
sed -i ってどんな機能??

602 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 10:23:41 ]
手元のsedにはないオプションだ。



603 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 10:47:04 ]
なら perl 使っとけ。
perl -i -pe 's/N/X/g' file

604 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 23:36:49 ]
edでいいんじゃね?

605 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:30:13 ]
ファイルのある文字列を含む行と行の間を取得するにはどうしたらいいのでしょうか?
例えば「abc」「def」を含む行の間、2・3・4行目を取得をしたいです。
grepでやろうとしたのですが、どうしてもうまくいきません。。

abcaa
aaaaa
bbbbb
ccccc
defbb

606 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:36:36 ]
>>605
sed -n '/abc/,/def/p' < text | sed '1d;$d'

なんか冗長なのと、該当箇所が複数あると駄目だな。


607 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:37:59 ]
パイプの後段を sed '/abc/d;/def/d' にすれば該当箇所が複数あってもOKかも。


608 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:47:05 ]
>>605
sed -n '1,/abc/b; /def/q; p'

609 名前:605 mailto:sage [2007/06/27(水) 01:12:46 ]
レスありがとうございます。

無理やりawkで冗長なものを作ろうとしてました。
もっと修行して出直します。

610 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 01:37:53 ]
>>609
別にawkでいいんじゃね。ラクだし
↓複数箇所でも大丈夫
awk '/aaa/{f=1;next} /bbb/{f=0} f{print}'

611 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 23:03:01 ]
つーかやり無理一行で作らんでも、perlとかで普通に作ればいいんじゃね。
冗長だろうがなんだろうが。

612 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 12:04:28 ]
awkでがんばって一行で作ったのの速度と
perlでシコシコださく書いたのの速度は
どっちが速いですかね



613 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 12:11:24 ]
別に全然頑張ってない

614 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 12:19:38 ]
awkで一行で書けるものがperlで一行で書けない理由は無い。

615 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 15:09:13 ]
一行に納める必要はないです。
バックリファレンスなどの特殊な機能を使わなければ
遅延評価DFAで動くawkは行数が増えても遅くなりません。
逆に頑張って一行で書いてもあんまり高速化しません。

616 名前:デフォルトの名無しさん [2007/07/04(水) 23:12:58 ]
九九の表を作るスクリプトなんですけど
cshで@を使わないで書き直したらどうなりますか?

#!/bin/csh -f

echo " | 1 2 3 4 5 6 7 8 9"
echo "--|------------------"

foreach i (1 2 3 4 5 6 7 8 9)
eaco -n " $i|"
foreach j (1 2 3 4 5 6 7 8 9)
@ seki = $i
@ seki *= $j
printf "%3d" $seki
end
echo ""
end
echo "--|------------------"


617 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:21:45 ]
@を使わないならBourne Shellでやるようにexprを使えば?


618 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:25:05 ]
>>617
Borne shellで書き換えは出来るんですけど
課題としてcshで@を使わないで書き直すように指示されてるんです

619 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:35:33 ]
ばか?

620 名前:デフォルトの名無しさん [2007/07/05(木) 00:28:33 ]
しつもん

スイッチのポートとその先のPCのMACをSNMPで対応付けたいのですが、

#!/bin/bash
while [MACアドレスがある限り];do

snmpwalk -c コミュ IP .1.3.6.1.2.1.17.4.3.1.1 >aa
snmpwalk -c コミュ IP .1.3.6.1.2.1.17.4.3.1.2 >bb
snmpwalk -c コミュ IP .1.3.6.1.2.1.17.1.4.1.2 >cc
snmpwalk -c コミュ IP .1.3.6.1.2.1.31.1.1.1.1 >dd

grep MAC aa > mib
grep mibの右側 bb >bridge
grep bridgeの右側 cc >ifindex
grep ifindexの右側 dd >port

paste MAC,port >output.txt
done <mac.txt

みたいなたらい回ししか出来ないんですか?


関係ないけどどうして演算結果を変数に入れるのがあんなに変な形式なんだろう?


621 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 00:40:18 ]
>>618
#!/bin/csh -f

echo '
@を使わないことに何の意味があるの?'
echo 'あんた馬鹿じゃねーの?'

622 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 01:02:45 ]
>>618
Bourne Shellでやる「ように」と書いたのが見えませんでしたか?
・cshでも``記法は使えるでしょ?
・exprはBourne Shellの内部コマンドじゃないでしょ?




623 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 01:37:06 ]
>>620
コマンド置換を山ほどネストすれば一時ファイルはもっと減るんじゃね?
つかこの程度のことにbash使うな
で、変な形式って?


624 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 00:53:44 ]
文字列+数値(たまに数値の無い行がある)の並んだファイルを置換したいです
○○○1
××××200
△△
□□66

とか並んでるのを、
○○○2
××××201
△△
□□67

みたいに。
sedで左 >file1
sedで右 | sed -e "s/\([0-9][0-9]*\)/&+1/" | bc >file2
paste file1 file2 > file3
で解決かと思ったら、△△の行がbcで勝手に詰められて結果がずれてしまう…
私の頭ではこれ以上思いつきませんでした。助けて


625 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 00:56:27 ]
awkでいいじゃん。

626 名前:赤帽勉強中 mailto:sage [2007/08/02(木) 21:45:16 ]
・lftpを使用してファイルアップロードと削除を行う(mirrorは使わない)
・アップロードと削除の対象ファイルはリストから読み込ませる

って機能のスクリプトを作ろうとしているんですけど、
ファイル名をリストから読み込ませてのアップロードと削除がどうやれば良いのか。。。
どなたかlftpに詳しい方、アドバイスを下さいませ。(-∧-;) ナムナム

627 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:19:08 ]
lftp使ったことないのでmanを見てみたが、manの範囲でできる。

実行するコマンドをテキストファイルに羅列して
lftp -f そのファイル

標準出力からコマンドを食わせることができればきれいなんだけどな。

cat <<EOF > commands
user hoge pass
cd hoge
EOF
sed 's!^!put !' < put_file_names >> commands
sed 's!^!del !' < del_file_names >> commands
lftp -f commands

とかそんな感じじゃね?


628 名前:赤帽勉強中 mailto:sage [2007/08/02(木) 23:10:38 ]
>>627
レスありがとうございます♪おかげで何とかなりそうですよ。
実はmanを見たりググったりしていたんですが何じゃこりゃ?って感じで理解できていませんでした(汗
まだまだ全然勉強が足りませんですね。。。ヾ(´▽`;)ゝアセアセ

629 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 00:52:33 ]
ふつうrsync

630 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 12:59:17 ]
ついでなので、ワタシの使っているコマンドライン公開
lftp -u USER,PASS HOST -e 'set ftp:passive-mode 0;set ftp:ssl-allow 0;mirror -Rev' 2>&1

>>629
ftp しか使えない環境でも、rsync って使えますか?


631 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 14:37:12 ]
>>630
使えません

632 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 14:49:39 ]
sshオーバーで耐えろ



633 名前:デフォルトの名無しさん [2007/08/13(月) 00:26:07 ]
シェルスクリプトでURLのリンク先を開くにはどうしたらいいでしょうか?

634 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 01:06:27 ]
>>633
汎用的なのは telnet + expect
SSL や TLS を使用しているなら openssl
接続先が http なら wget とか curl とか
ftp なら ftp コマンド

635 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 04:04:17 ]
UNIXパワーツールの92Pに
PS1='`date "+%D %T"` $PWD $ '
というカスタマイズが紹介されていたんですが
+%D %Tをダブルクォートで囲むのは何故なんでしょうか?

636 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 08:04:47 ]
>>635
そのPS1への代入の段階で展開させず、PS1に%Dを引き渡すため。
勿論それは、プロンプト表示の段階で展開されることを期待している。

637 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 16:05:22 ]
>>636
シングルクォートで囲んでいるので、ダブルクォートで囲まなくても
代入の時点ではdateコマンドは実行されないのではないでしょうか?

638 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 16:19:05 ]
>>637
date +%D %T
と実行してみろ。話はそれからだ。

>>636
それでは"が必要な理由の説明になっていない。

639 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 22:55:46 ]
>>635
論点とは違うが、

PS1='\d \t \w \$ '

これと大差ない気がする。

640 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 08:41:29 ]
>>639
それ移植性ある?(PS1に移植性も何もないが、移植性のある.profileとか
一時期凝ってたんで)


641 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 01:16:48 ]
>>640
移植性というか、依存するのはシェルのバージョンだから、

ttp://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html#lbBZ

bash なら上の「プロンプト」の項に載っている奴は
少なくとも bash 2.05b 以降で使えるはず。

ついでに bash 3.2.17 の info を確認したら、二つ新しいのがあった。
これには移植性が無いって事だな。w

`\D{FORMAT}'
The FORMAT is passed to `strftime'(3) and the result is inserted
into the prompt string; an empty FORMAT results in a
locale-specific time representation. The braces are required.

`\A'
The time, in 24-hour HH:MM format.

642 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 01:59:47 ]
echo $
とすると$が出力されるのに
echo $"" や echo $''
とするとなにも出力されなくなるのはどうしてなんでしょうか?



643 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 02:15:52 ]
>>642
後者は$が変数参照の一部と見做されるから。
抑止するには$を''で囲むか\でエスケープすればいい。

644 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 02:31:25 ]
>>643
>>後者は$が変数参照の一部と見做されるから。

変数名が空の文字列の変数を参照しようとするってことなんでしょうか?

645 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 11:25:41 ]
そんなようなもんじゃない?
その割には、そんな変数は定義できないと思ったけど。

646 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 15:26:44 ]
bash の話だと、 $"" と $'' は特殊な quoting の構文になってる。
zsh にも $'' はあるみたいだね。

647 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 19:47:15 ]
man hogeの結果に対してgrepをしたい場合、どのように書けばいいのでしょうか?

648 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 21:41:37 ]
うちのMacではそのまま man man | grep -i optionとかできるんだけど、
これって特殊?


649 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 21:51:12 ]
>>647
PAGERをcatにしたらどう?

650 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 22:04:53 ]
>>648
いやそんなことはないと思う
linuxとかでもそうでしょ

んでも、grep前にcol -bとかはさんだほうがモアベターだと思う

651 名前:647 mailto:sage [2007/08/28(火) 22:18:05 ]
今の環境はUbuntuなんですが
デフォルトの状態でman hoge | grep "文字"
をやるとエラーか文字化けか再フォーマットしてます〜というメッセージが出て止まってしまう
みたいです。
言われたとおりPAGERをcatにしてみたら普通の文字はgrepできるようになったんですが、
man ls | grep -i
のように-iの行を見ようとすると

man: コマンドはステータス 13 で終了しました: /usr/bin/zsoelim /tmp/zman9mAoS0 | iconv -c -f EUC-JP -t UTF-8 | /usr/bin/tbl | /usr/bin/nroff -mandoc -Tutf8 | /usr/bin/col -b -p -x | /usr/bin/pager -s

このようなメッセージが出て終了してしまいます。

652 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 22:47:15 ]
nroff -man manページのtroffソース | grep ...
はどう?




653 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 23:51:44 ]
grep -e -i

654 名前:647 mailto:sage [2007/08/29(水) 09:18:30 ]
>>652
実行してみると↓のようなエラーが出てきました。
普通にmanを実行するときちんと表示されるのに、それをリダイレクトしたりすると
文字化けするあたり、どこかがおかしいのだと思います。

653さんのようにやってみたところ日本語の部分が文字化けしてることを
除けばmanの情報をgrepできるようになりました。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<248KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef