[過去ログ] シェルスクリプト相談室 (982レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(1): 2005/04/04(月)03:43 AAS
シェルスクリプトに関する質問・回答や議論等を行う相談室スレッド。
856: 2008/04/03(木)00:08 AAS
>>848
source command.txt
857(1): 2008/04/28(月)23:56 AAS
シェルでroot権限で実行してるのに、
ファイルが作れないとか、パーミッションエラーが出る
場合があるんだけどどうしてなの?
OSが同じ他のマシンじゃ正常に実行できる
細かいところでマシンの仕様がちがってるんだろうけど
なんでなんだよ。root権限なのに。。。
858: 2008/04/29(火)00:29 AAS
>>857
情報が少ないな。少なくとも
# ls -ld .
位は欲しい。
859: 2008/04/29(火)00:36 AAS
root でも root の書き込み属性がないと書き込めないよ
860: 2008/04/29(火)02:18 AAS
BSD系ならchflagsあたりが関係してるかもしれん
861(1): 2008/04/29(火)22:02 AAS
bashなのですが
$ tgts=`find . -name \*.\[hc\]`
$ for tgt in $tgts; do
cp ${tgt} ${tgt}.orig
done
で
cp: `ここにファイル名ずらずら` にアクセス中: File name too long
と言われてしまいます。
tgts=`find . -name \*.\[hc\] -printf "%p "`としてIFS=" "でも同じでした。
tgts=`find . -name \*.\[ch\] -print0`だと
cp: `./aaa.h' と `./aaa.h' は同じファイルですとか言われてしまいます><
862: 2008/04/29(火)22:08 AAS
エラーの原因はよくわからないけど、パイプするかfind -execするかしたらどう
863: 861 2008/04/29(火)22:27 AAS
すみません
bashでなくてzshでした
bashだとちゃんと動きました
864: 2008/04/29(火)22:29 AAS
zshなら$tgtsが単語に分割されないから。${=tgts}だといい
865(2): 2008/05/11(日)19:00 AAS
シェルスクリプト修正の工数見積もりにあたって、修正対象のスクリプトのステップ数を出したいのですが、みなさんはどのような方法で行っているのでしょうか?
よろしくお願いいたします。
866: 2008/05/11(日)20:17 AAS
>>865
先に(こっそり)スクリプトを書いて、実績を「工数見積」として出す。
シェルスクリプトを「ステップ数」で見積もるなど馬鹿馬鹿しくてやってられない。
ステップ数換算で、ど〜の・こ〜の言うのは太古のCOBOLの悪習。
867: 2008/05/12(月)06:24 AAS
>>865
そういう話はマ板向きじゃないのだろうか。
まあそれはそれとして、シェルスクリプトなんてやってることは
一般のアプリケーションプログラムに比べて小さくて特定されてるんだから
修正するのは新しく作り直すのと同義だろ。
新規作成と同額でいいんじゃね?
/etc/rc.d/並みの複雑怪奇なスクリプトだったらこの話はあてはまらないが、
そういうのはperl,python,rubyで書かないのが間違い。
868(1): 2008/05/15(木)21:10 AAS
echo "hoge" | read Hage
echo $Hage
これって読み込んでくれないの?
869(1): 2008/05/15(木)22:57 AAS
>>868
echo "hoge" | (read Hage)
の状態になって、サブシェルの変数をセットして終わる。
echo "hoge" | (read Hage; echo $hage)
zshなら大丈夫。
870(1): 2008/05/15(木)23:00 AAS
読み込むよ。これ試して味噌。
--
echo foo | (read; echo $REPLY)
--
って書くために検証してたら先を越されたw
871: 2008/05/15(木)23:37 AAS
>>869>>870
thx.
でもよくわからない。
#!/bin/sh
alert --info "Whitch Resolution" "1600x1200" "1280x1024" "1024x768" >RES
read Res <RES && rm RES
echo "Resolusion is "$Res
case "$Res" in
"1024x768" ) echo "mode 1024 768 32" >/boot/home/config/settings/kernel/drivers/vesa ;;
"1280x1024" ) echo "mode 1280 1024 32" >/boot/home/config/settings/kernel/drivers/vesa ;;
"1600x1200" ) echo "mode 1600 1200 32" >/boot/home/config/settings/kernel/drivers/vesa ;;
esac
#shutdown
これの$Resを得たいんだが、パイプで取得できないのかと思ってのですが。
872(1): 2008/05/16(金)00:04 AAS
できないからファイルに入れてるってことでしょ。
ただ、
Res=`alert ...`
とすりゃいいのにとは思う。
873: 2008/05/16(金)00:25 AAS
>>872
Res=`alert --info ・・・・`でいきます。
Res= `じゃダメなのか、なるほど。
874: 2008/05/17(土)06:03 AAS
bashで乱数を用いてで数値3桁(000〜999)を表示させるにはどうしたらいいでしょうか?
hoge=`${RANDOM} | cut -c 2-4 `
echo $hoge
としてるんですがこれだと表示が2桁や1桁のときに桁数が揃わなくて困っております。
875(1): 2008/05/17(土)09:33 AAS
pりんtf
876(1): 2008/05/17(土)09:39 AAS
”パーセントさんエスバックスラシュn” $ほげ
877: 2008/05/17(土)09:46 AAS
あっ、間違った、>>875,876は忘れてくれ。
878: 2008/05/17(土)10:51 AAS
あってんじゃん。
printf "%03d\n" $hoge
879: 2008/05/17(土)13:32 AAS
おっ、惜しかった、0が必要なんですね。勉強になった。
880: 2008/05/18(日)18:39 AAS
質問した本人はどこに消えたんだろう?
881: 2008/05/21(水)23:08 AAS
/dev/nullの闇に呑まれたのだった・・・
882: 2008/05/22(木)10:26 AAS
歓呼工面でなかってよかったのう。
883: 2008/05/22(木)20:42 AAS
今、プロセス監視ツールについて調べてまして
プロセスに常駐するシェルを作りたいと思ってます。
ps -ef | grep sh を実行して、常時起動しているシェルというのは、
どうやって書けばいいのでしょうか。
また、この際に表示されるPIDは、常時同じ値にしたいと思ってます。
アドバイスお願いいたします。
884: 2008/05/22(木)20:58 AAS
シェルをつくるのですか。
外部リンク[pdf]:jubilo.cis.ibaraki.ac.jp
ここいら辺を参考に頑張ってください。
885: 2008/05/22(木)21:24 AAS
すみません。プロセスが常駐するシェルスクリプトを
作りたいのです。
886(2): 2008/05/22(木)21:33 AAS
#!/bin/sh
while :; do :; done
887(1): 2008/05/22(木)21:43 AAS
OSによってはwatchというコマンドがあるかもしれない。
watch ps -ef
なければ>>886のdoの中身の:をps -ef ; sleep 10とかにすればいいんじゃね。
888: 2008/05/22(木)22:05 AAS
>>886-887
ありがとうございます
今すぐ試せないんですが、Watchやってみます。
sleepはやってみたんですが、シェルスクリプトが
プロセスとして残るのではなく、sleepコマンド自体の
プロセスとして残ってしまいました。
>>886は無限ループというのは分かるんですが、
負荷が上昇したりしないでしょうか。
889(1): 2008/05/22(木)22:18 AAS
sleepは当然残るけど、親プロセスであるshも残ってないか?
890(1): 2008/05/22(木)22:24 AAS
#!/bin/sh
kill -19 $$
891: 2008/05/22(木)22:36 AAS
>>889
それが残らなかったんです。linuxなんですが・・・。
ディストリビューションは多分centosです。
SOLARISはshが出てたんですが・・
892: 2008/05/22(木)22:46 AAS
つか、常駐して、何させたいのよ
893: 2008/05/22(木)23:11 AAS
プロセス監視ツールの検証をしたいんです
894: 2008/05/22(木)23:36 AAS
シェルスクリプトは監視される側?
多少負荷あがっても無駄にループしてりゃいいじゃん
気になるなら、: を sleep 1 にでも変えて
895(1): 2008/05/22(木)23:37 AAS
DOSのTSRみたいなのを作りたいってことかと思ったら違うのか。
もしかしてcronで定期実行させる方が目的にかなってたりしないか?
896: 2008/05/23(金)01:39 AAS
sleepしている間に食うリソースってプロセステーブル1エントリと、
コードが常駐する分のメモリ?
897: 2008/05/23(金)01:46 AAS
あと標準入出力&エラー出力のファイルデスクリプタとPTYのマスター&スレイブ (閉じてなければだが)
898: 2008/05/23(金)01:54 AAS
>>895 私もそう(TSR)思ってた上で冗談のつもりで>>890
を書いたんだが実はそういうのが欲しかったとは。
だまされた気分だぜ。
899(3): 2008/05/24(土)01:44 AAS
エロイ人教えて
$1が a b
$2が c d
出力結果
a c
a d
b c
b d
どうやるの?
900(1): 2008/05/24(土)03:42 AAS
>>899
まず出力結果に至るルールを書かんかい
求めたいものが直積とは限らんからな
901(1): 2008/05/24(土)07:53 AAS
A="a b"
B="c d"
for a in $A; do for b in $B; do echo $a $b; done; done
902: 899 2008/05/24(土)12:08 AAS
>>900
やりたいことは"シェルをテストする"ためのシェルを考えてる。
テストしたいシェルに引数を与えて出力結果を別ファイルに出力する。
シェルはkシェル。
OK?
>>901
サンク
あと、引数にスペース(空白)も含めたいんだけど
A=a b スペース(空白)
A=c d スペース(空白)
出力結果
a c
a d
a
b c
b d
b
c
d
よろしくです
903(1): 2008/05/24(土)12:14 AAS
A="a:b::"
B="c:d::"
OLDIFS=$IFS
IFS=:
for a in $A; do for b in $B; do echo $a $b; done; done
IFS=$OLDIFS
頭に蛆でもわいてるのか
904: 899 2008/05/24(土)12:37 AAS
>>903
おぉーはぇー
サンク!
おめ〜口は悪いけど面倒見の良いエロイ椰子だな
ありがと!
905: 2008/05/25(日)07:32 AAS
scriptの中から呼び出されたprogramの処理が終了していることを
知るにはどうしたらいいですか?
906: 2008/05/25(日)08:09 AAS
kill -0 $! && echo alive
907: 2008/05/25(日)08:55 AAS
thx!
908: 2008/05/25(日)23:52 AAS
root以外で動かすスプリクト内で特定のファイルをchownで所有者を
変更したいんだけsudoもexpectも使わずにできる?
909: 2008/05/26(月)00:07 AAS
Linuxのようにスクリプトのsetuidを無視する環境なら、
スクリプトを呼ぶだけの実行ファイルを作ってそっちをsetuidする。
910(1): 2008/05/29(木)23:13 AAS
tarファイル内のデレクトリとかファイルをリネームできる?
あるいはリネームしながら展開できる?
911: 2008/05/30(金)01:05 AAS
>>910
スレ違い。アーカイバ関連のスレで訊くべし
912: 2008/05/30(金)01:17 AAS
この板的には、tarのフォーマットを調べて、
リネームするツールを作ろうという趣旨かも。
しかしスレ違いか。
913: 2008/05/30(金)01:42 AAS
特定の名前対応付けファイルにしたがって、
一旦目的のファイル/ディレクトリを展開して
mvで目的の場所にリネーム移動させるものを
つくるというスクリプトならかろうじて・・・
そこまでの意図はないと思うが。
914: 2008/05/30(金)01:51 AAS
ヘッダー情報だけ書き換えて展開は本物のtarにやらせれば良い。
前の勤務先で作ったときは50行(perl)くらいで出来たような気がする。
915: 2008/05/30(金)20:04 AAS
文字列中のスペースをエスケープシーケンス付けて"\ "に変換する
スクリプトを作りたいのですが、どうしたら良いでしょう?
sed を使うと連続スペースを
1つのスペースとして扱われてしまい上手く行きません。
"sample sample"(スペース2以上) っていう文字列を "sample\ \ sample"にしたい。
916(1): 2008/05/30(金)22:28 AAS
~$ echo "sample sample" | sed -e 's/ /\\ /g'
sample\ \ sample
917(1): 2008/05/30(金)22:44 AAS
>916
あれ、それで行きます?ってか家のCygwin上でも出来てるな
これでも出来なくて、2〜3時間いろいろ試して、うんうん唸ってたんですが、
バージョンや処理系で動作がちがうとかないですよね・・・
月曜にリトライします。なんか馬鹿やったかな?
918: 2008/05/30(金)22:51 AAS
>>917
gが付いてなかったんじゃないのか?
919: 2008/05/30(金)23:25 AAS
いや、そういうのではなく、記憶が確かなら
echo "sample sample" | sed -e 's/ /:/g'
(sampleの間は連続半角スペースね)
ってやったら、
"sample:sample" スペースを一つとして扱われた
みたいな結果しか帰ってこなかったんだけど。
何かを間違えたんだろうね多分。なにを間違えたやら。
920(1): 2008/05/31(土)02:59 AAS
ubuntu@ubuntu-desktop:~$ echo "sample sample" | sed -e 's/ */:/g'
sample:sample
921: 2008/05/31(土)03:01 AAS
勘違いす。>>920は消去。
922: 2008/05/31(土)03:30 AAS
#!/usr/bin/fontforge
仲間に入れてもらえますか?
923(1): 2008/06/04(水)22:42 AAS
相談に乗ってちゃぶ台!
任意のディレクトリ下の全てのファイルの更新日時を
フルパスで1行づつ取得したい。また更新日時をyyyymmdddHHMMSSで
取得したい。
例)
/home/usr01/aaa/bbb.txt 20080101125525
/home/usr01/aaa/ccc.tar 20080123195530
/home/usr02/ddd.txt 20070811210121
/home/usr03/eee/fff/ggg/hhh/jjj.cfg 20060301042133
よろしくお願いします、みなさん
924: 2008/06/04(水)23:14 AAS
簡単すぐるからパス
925: 2008/06/04(水)23:59 AAS
OSによっては簡単すぐるけど、一般にはそうでもないし、perlが最適だったりもする
>>923
OSを明かした方が適切な回答があるかもよ
926: 2008/06/05(木)00:09 AAS
> 924,925
レス、さんく
とりあえず find でフルパスは取得できよ。
あと、タイムスタンプなんだよね。
OSはAIXでkshでつ
927(1): 2008/06/05(木)01:22 AAS
AIXは、statもないし、lsに-Tもないんじゃないかな。
テキストファイルだけなら diff -c で /dev/null と比較して、
先頭の行を加工すれば何とか取得できるかもしれない。
けど、perl をすすめる。
928: 2008/06/05(木)01:39 AAS
>927
ありがと
よく似たコマンドでistatってのがあったけど
月表示が英語なのよ・・・
$ istat bbb
デバイス 10/8 上の Inode 89 ファイル
保護 : rw-r--r--
所有者 : 8(*****) グループ : 0(system)
リンク・カウント : 1 長さ 4 バイト
最後の更新: Thu Jun 5 01:35:24 JST 2008
最後の修正: Thu Jun 5 01:35:24 JST 2008
最後のアクセス: Thu Jun 5 01:35:24 JST 2008
929(1): 2008/06/05(木)02:12 AAS
ひとつ教えてください。
ファイルからデータを収集して
txtファイルに出力するようなシェルを作成しているのですが
整形がうまくいきません。
touch test.txt
echo "ABCDEF 1_0_2_3" >> test.txt
echo "LMN 3_2_4_5" >> test.txt
当然中身は
ABCDEF 1_0_2_3
LMN 3_2_4_5
となるんですが
ABCDEF 1_0_2_3
LMN 3_2_4_5
としたいんです。
何かいい方法ありませんか?
tabのような整形方法を考えたんですがうまく揃わないので
文字数指定する方法あれば教えていただきたいんですが。。。
(C言語のprint文での %10s のようなのができれば理想ですが)
930: 2008/06/05(木)02:12 AAS
ずれーたorz
番号のところが揃うようにしたいです。
ご教授ください。
931: 2008/06/05(木)02:14 AAS
なら、12種類しかないんだから、caseで分岐して、
一致した月の数字を返すっていう関数書けばいいんじゃ?
932(1): 2008/06/05(木)02:20 AAS
>>929
OSによっては、まさにprintfがあるけどな。
933(1): 2008/06/05(木)02:24 AAS
# echo "ABCDEF 1_0_2_3" | gawk "{printf(\"%10s %s\n\",\$1,\$2);}" > test.txt
# echo "LMN 3_2_4_5" | gawk "{printf(\"%10s %s\n\",\$1,\$2);}" >> test.txt
# cat test.txt
ABCDEF 1_0_2_3
LMN 3_2_4_5
934: 2008/06/05(木)02:24 AAS
ファイルの比較するシェルを作りたいのですが、
うまくいきません。
file_list.txt
-- 内容 --
ABC
DEF
GHI
このファイルとフォルダ内の内容が一致するかチェックしたいのですが
何かいい方法ありませんか?
ls -Rをtxtファイルに吐き出してcmpを使う方法と
read line使った後ls -Rとgrepをつかって比較する方法を思いついたのですが、
もっと綺麗な方法ってあるでしょうか?
935: 2008/06/05(木)02:25 AAS
busyboxにprintfあったよ・・・・・orz
936: 2008/06/05(木)02:28 AAS
>>932
マジですかorz
調べたりなさ杉。ありがとうございます。
>>933
今現在確認できないので研究室についたら試してみます
ありがとうございました。
937: 2008/06/05(木)02:35 AAS
おまえら、いいかがんシェルを作るな。シェルスクリプトを作れ。
938: 2008/06/05(木)04:38 AAS
Cに似たシェルスクリプト言語ってある?
939: 2008/06/05(木)08:29 AAS
cshでスクリプトは書くな
940(1): 2008/06/05(木)08:41 AAS
外部コマンド呼ぶのにいちいちsystem()とか、それさえなくて
fork()とexecve()を駆使しなきゃいけないようなスクリプト言語だとしたら、
かなりいや。
941: 2008/06/05(木)09:05 AAS
while read Filenm
do
if [ -e $Filenm ] ; then
echo $Filenm" ○"
else
echo $Filenm" ×"
fi
done <file_list.txt
942: 2008/06/05(木)20:45 AAS
cat file_list.txt | group { Test-Path $_ }
943: 2008/06/06(金)09:47 AAS
>>940
どうして?
944: 2008/06/06(金)19:28 AAS
インタープリタ言語はスレ違いでしたね
スレタイがシェルスクリプトだもんな
すっかり勘違いしてた
945: 2008/06/07(土)18:48 AAS
cpioのマルチボリューム保存で1本目が終わると
2本目の前にデバイス名の入力を施すメッセージが表示されます。
その際、そのメッセージ(多分、標準エラー出力)を表示させないで
自前の処理で「2本目の保存を行いますか?(y/n)」みたいに行いたいのです。
標準エラー出力をどう扱うかが肝だと思うのですが、良いアイデアが浮かびません。
何か良いヒントはありませんでしょうか?(Bシェル(OS:Solaris))
946: 2008/06/07(土)19:35 AAS
つ expect
947: 2008/06/16(月)11:34 AAS
#!/bin/csh -f
set s=$1
set t=$2
set f=$3
cat $f | tail +$s | head -$t
exit 0
echo ------------------
以上を改良しろ、と言われました。みなさんならどうしますか?教えて下さい。
948: 2008/06/16(月)11:47 AAS
#!/bin/csh -f
tail +$1 $3 | head -$2
949(1): 2008/06/16(月)13:01 AAS
rm -f /bin/csh
950: 2008/06/16(月)13:49 AAS
>>949
Permission denied
951(2): 2008/06/16(月)14:14 AAS
以下のスクリプトで
echo をした時に
AAAeo kakikukeko sasisuseso
AAAituteto naninuneno hahihuheho
と表示されるのですが
どうすれば
tatituteto naninuneno hahihuhehoAAA
と表示できるのでしょう?
環境は実行シェルはbashです
FUGA="'AAA'"
awk '{print;}' hoge.txt | while read LINE; do
MOGE=`echo "$LINE" | cut -d , -f 2-`
echo "$MOGE""$FUGA"
done
hoge.txt
a,aiueo kakikukeko sasisuseso
b,tatituteto naninuneno hahihuheho
952(3): 2008/06/16(月)14:55 AAS
>>951
やりたいことが判らん。awkを使う理由が判らん。手元で再現できん。
つーか、折角awkを使うならawk -F, '{print $2 "AAA";}'じゃいかんの?
953(2): 951 2008/06/16(月)15:09 AAS
>>952
レスありがとうございます
やりたい事としては
ファイルから1行読み込んで1行をパースし
FUGAと連結した文字列を別のコマンドを実行させたい
です
1行の内容としては
aaaaa,hogehoge mogemoge aiueo
という風に書きましたが実際には
aaaa,SQL文
という感じで半角スペースやカンマが入ります
954(1): 2008/06/16(月)15:16 AAS
>>953
他人の話をよく聞きなさいって言われたことないか?
>952をよく読んで、為すべきことを為してから出直せ。
それから、自分の書いた文章を読み返す癖をつけた方がいい。
とてもじゃないが、他人に読んでもらう文章になっていないぞ。
955: 2008/06/16(月)15:48 AAS
>>954
>>952に書いてある内容は理解しています
MOGE=`echo "$LINE" | cut -d , -f 2-`
の代わりとなる部分だと言うことは解っているのですが
>>953にも書いてある通りカンマ等が入ってしまう為記述が簡単な
MOGE=`echo "$LINE" | cut -d , -f 2-`
を選びました
951にカンマ等が複数入る可能性があるという事を
書かなかったのはすみませんでした
956: 2008/06/16(月)16:11 AAS
cut -d',' -f2-
957: 2008/06/16(月)16:18 AAS
~> L="123,uio poi"
~> LB=`echo $L | cut -d',' -f2-`
~> echo $LB
uio poi
~>
958: 2008/06/16(月)17:05 AAS
違ったか・・・
959: 2008/06/16(月)21:03 AAS
tr -d '\015' < hoge.txt | awk ...
960: 2008/06/17(火)11:26 AAS
#!/bin/csh -f
set com=$0
if ($#argv < 1 || $#argv > 3) then
echo Usage:$com start_line total_lines '[file_name]'
exit 1
endif
if ($#argv == 2) then
set s=$1
set t=$2
tail +$s | head -$t
else
set s=$1
set t=$2
set f=$3
cat $f | tail +$s | head -$t
endif
exit 0
echo ------------------
これだとエラーがでます。どなたか改良してください。お願いします。
961: 2008/06/17(火)11:27 AAS
酷いマルチ
962: 2008/06/17(火)13:28 AAS
bashで
while read LINE; do
echo $LINE
done < ファイル
とするとファイルに含まれてるタブ文字が
半角スペースに変換されて表示されるのですが
そのまま取り出したい場合どうすればいいのでしょう?
cat ファイル | whileやfor LINE in `cat ファイル`等はやってみました
963(1): 2008/06/17(火)13:57 AAS
echo "$LINE"
964: 2008/06/17(火)14:05 AAS
>>963
うまくいきました
ありがとう
そんな単純な事に気づかなかったとはorz
965: 2008/06/30(月)21:30 AAS
KORNシェルの質問です。よろしくお願いします。
テキストファイル
id=tanaka age=25
id=takahashi age=2
id=suzuki age=44
を
id age
---------------------
id=tanaka age=25
id=takahashi age=2
id=suzuki age=44
にしたい(体裁を整えたい)です。$@を使ってできますか?
変数wkにabc=e があったとして、=があるかどうかわかりますか?
grepやcutコマンドは変数を対象に使えませんよね・・?
966: 2008/06/30(月)21:42 AAS
AA省
967(1): 2008/06/30(月)23:25 AAS
IFS="=$IFS"
FIRST=t
while read line
do
set -- $line
if [ "$FIRST" ]
then
printf "%-10s %s\n" "$1" "$3"
echo "---------------------"
FIRST=
fi
printf "%-10s %2d\n" "$2" "$4"
done
968: 2008/06/30(月)23:38 AAS
>>967san
有難うございます!今試せないので明日、速攻でやってみます!
969(2): 2008/07/04(金)23:36 AAS
質問させてください。
diffの結果を見易く整形するツール等はありますでしょうか。
環境はCENTOSです。よろしくお願いします。
970: 969 2008/07/04(金)23:37 AAS
すいません。追記します。
シェルスクリプト内で使いたいので、
ツールでもコマンド的なものだとありがたいです。
971: 2008/07/05(土)00:17 AAS
diff -u
972: 2008/07/05(土)00:19 AAS
>>969
> diffの結果を見易く整形
kwsk
973: 2008/07/05(土)01:23 AAS
>972
このファイルだけサイズが違いますよとか
このファイルはこっちにありませんよとかが希望です。
ls -Rlaの結果をファイルにリダイレクトしてます
974: 2008/07/05(土)07:42 AAS
ファイルの差分はいらないのね
find dirA -exec wc -c {}; > /tmp/A
find dirB -exec wc -c {}; > /tmp/B
diff /tmp/A /tmp/B
あるいは単純に
diff -r --brief dirA dirB 2>&1
975(1): 2008/07/07(月)14:20 AAS
私はこんなスクリプト作ってる。
--
#!/bin/sh -f
DIFF="/bin/diff -u"
lsd()
{
find $1 -type f -ls | awk '{printf("%10d %s %2s %5s %s\n", $7, $8, $9, $10, $11);}' | sort +4
}
lsd $1 | sed -e "s- $1- $2-" > /tmp/$$
lsd $2 | $DIFF /tmp/$$ -
rm /tmp/$$
--
これで一応ファイルサイズとタイムスタンプも比較できる。
976: 2008/07/07(月)23:59 AAS
>>975
・空白のあるファイル名の扱い
・日付の出力形式の仮定
に問題。
977(1): 2008/07/09(水)19:42 AAS
sedの置換元の文字列ををコマンドラインで直接指定したいのですが、やり方が見つからなくて困っています。
sed -e 's/^.*\_//' ここに文字列を指定
という風にやりたいのですが、何かやり方ありますでしょうか?
978: 2008/07/09(水)21:30 AAS
>>977
echo "ここに文字列を指定" | sed -e 's/^.*\_//'
じゃだめ?
979: 2008/07/09(水)22:14 AAS
$ cat /usr/local/bin/sed
#!/bin/bash
OPT="$2"
shift 2
echo "$@" |/bin/sed -e "$OPT"
$ export PATH=/usr/local/bin:$PATH
$ sed -e 's/^.*\_//' ここに文字列_を指定
を指定
980: 2008/08/06(水)00:09 AAS
シェルからのPL/SQL呼び出しに詳しい方に質問ですが、
【SQLプラス接続コード】 EOF
@test.sql
EOF
###ここに###
上のようにPL/SQLに接続して以下のようなPL/SQLを実行させると、
-----------------------
DECLEAR
【宣言】
BEGIN
【処理】
END
-----------------------
って形になると思うのですが、このPL/SQL内でINTOとか使って
変数に入れた値を呼び出し元のシェル内に返してやることって可能なんでしょうか?
上の例だと###ここに###って部分にPL/SQL内の変数をそのまま入れたいのですが。
981(1): 2008/08/06(水)00:47 AAS
PL/SQLってゆうのはよく知らんけど、
var1=val1; var2=val2; ... みたいな出力ができるんなら、
eval `接続 <<EOF
hogehoge
EOF
`
とかすればいいのでは?
982: 2008/08/06(水)01:15 AAS
>>981
・標準出力に出力し、それを変数にリダイレクト。
・ファイルに出力し、後続のshellスクリプトで解析。(init.oraの変更が必要)
・素直にperlなど、DB接続機能を持ったスクリプト言語を使う。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.189s*