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

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

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


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

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
0157名無しさん@お腹いっぱい。2006/03/32(土) 21:09:40
>>156
あ、書き忘れました。OS依存だけでなく、CPU依存もなしでお願いします。
0158前スレのクラッカー2006/03/32(土) 21:11:25
>>157



               お前に書いてやるコードなどない



0159前スレのクラッカー2006/03/32(土) 21:18:26
ところでお前ら今何してる?
0160名無しさん@お腹いっぱい。2006/03/32(土) 21:22:06
今から風呂入って、上がったらセクースする予定。
0161前スレのクラッカー2006/03/32(土) 21:24:53
>>160
悪いな、お前の彼女なら俺の隣で寝てるよ
0162名無しさん@お腹いっぱい。2006/03/32(土) 21:33:49
>>155
スクリプト内で動的にコード生成してコンパイルなどして実行すればー。
0163名無しさん@お腹いっぱい。2006/03/32(土) 21:37:43
>>155
なに?シェルスクリプトでインラインアセンブラが使えない?
ジョジョ、それはコンパイル言語と同じにやろうとするからだよ

逆に考えるんだ

「インラインアセンブラからシェルスクリプトを呼べばいい」と
0164前スレのクラッカー2006/03/32(土) 21:40:35
>>162,163



                        何このレベルの低さ

                        自分のスキルの無さを露呈しちゃってるよ
0165名無しさん@お腹いっぱい。2006/03/32(土) 21:56:31
シェルスクリプトで、標準入力に流し込まれたマシンコード(バイナリ)を
実行する方法はありませんか?
あ、テンポラリファイルに cat > tmpfile して、
chmod +x tmpfile する方法以外でお願いします。
0166名無しさん@お腹いっぱい。2006/03/32(土) 21:59:23
どうでもいいが、「前スレのクラッカー」が蜂の巣をつついたように暴れてるのは、
>>126 が図星だったってことか。
0167名無しさん@お腹いっぱい。2006/03/32(土) 22:23:07
オレなんかコンパイリ言語得意だけど。

0168名無しさん@お腹いっぱい。2006/04/02(日) 00:01:42
アセンブラ言語 ワロス wwww

ところで、前スレのクラッカーってなんだ?
0169名無しさん@お腹いっぱい。2006/04/02(日) 00:14:51
>>168
お馬鹿さん。
0170名無しさん@お腹いっぱい。2006/04/02(日) 02:53:52
>>169
死ねよデブ
0171前スレのクラッカー2006/04/02(日) 10:12:42
おはよう屑共。
今日は何をして過ごそうかなあ。
0172前スレのクラッカー2006/04/02(日) 12:14:26
ごめん、もう荒らすの止めるわ・・・
還暦間近でストレス溜まってたんだ、許してくれ
0173名無しさん@お腹いっぱい。2006/04/02(日) 13:38:24
どなたかお知恵をお貸しください。
エロサイトから wget -r http://ero.example.com という形で
ファイルをDLしてきました。このファイルには
エロ画像、エロ画像のlzh、サムネイル、html、css等が含まれています。
目的のエロ画像はero.example.com/members/女の子名/img/ 下にあります。

複数の 女の子名/img を一つのディレクトリに ln -s すれば閲覧が楽になるので
今まではシェルスクリプトを作ってlnをしていたのですが、
、今回 女の子名/img の中にサムネイルファイル t_001.jpg, t_002.jpg ... 等が混ざっており、
単純にln -sしただけではサムネイルと画像本体が混ざってしまい、大変不便な思いをしています。

ブラウザで閲覧する事もあるため、できればサムネイルファイルを消さずに
目的の画像だけを集めたディレクトリを作成したいのですが何かよい方法はないでしょうか。

1. ls -r の結果から、サムネイル以外の全ファイルを一つ一つ ln -s する方法、
2. ディレクトリごとcpしてしまってサムネイルをrmしてしまう方法

を考えたのですが、もっとスマートな方法があればお教えください。
なお、使用している画像ビューワはhtml等のフィルタリングはできますので
本番ファイルとhtmlやcssファイル等が混ざるのは問題ありません。
0174名無しさん@お腹いっぱい。2006/04/02(日) 14:47:46
すみません、ググっても出てこないので教えてください。

kshを使ってるんですが、どなたか「[」のPATHを知らないでしょうか?

$[ -z ];echo $?
とすると「空文字」判定で「0」が出力されます。
しかし、シェルスクリプトの中に同じ命令を書くと、
「testの引数が足りない」というエラーになります。

そこで、「[」のPATHを指定してないからだとwhichを実行したのですが、
「PATHの中にはない」というエラーになります。
お手数ですけどどなたかご教示ください。
0175名無しさん@お腹いっぱい。2006/04/02(日) 14:56:39
どうみてもくだ質スレです
ありがとうございました
0176名無しさん@お腹いっぱい。2006/04/02(日) 14:57:45
>>174
OSにもよるけど、今時のkshやshでは [ は内部コマンドになってるよ。
/bin/test とか外部コマンドはあるけど。
[ -z ] で何がしたいの?
変数が定義されてるかどうかなら [ -z "$x" ]
0177名無しさん@お腹いっぱい。2006/04/02(日) 15:03:42
>>176
ありがとうございます。

やりたいことは
[ -z `grep $id $listfile`]
で「$idがリストファイルにある」「ない」で条件分岐をしたいのです。
grepでなければthen以下を実行するという感じです。
0178名無しさん@お腹いっぱい。2006/04/02(日) 15:29:03
>>177
コマンドの終了状態は $? という変数で見る

grep -q hoge file 2> /dev/null
if [ $? -eq 0 ]; then
......
else
......
fi

が素直じゃない。
0179名無しさん@お腹いっぱい。2006/04/02(日) 15:29:52
>>177
そういうときって・・・

grep hoge file > /dev/null 2>&1
if (($?==0)) ; then
  moge
fi
みたいに書かない?
俺だけ?
0180名無しさん@お腹いっぱい。2006/04/02(日) 15:36:14
それなんてbash?
0181名無しさん@お腹いっぱい。2006/04/02(日) 15:37:41
>>177
どうしても [ -z ] 方式でやりたいなら、
[ -z `grep $id $listfile` ] じゃなくて、
[ -z "`grep $id $listfile`" ] みたいに、
ダフルクォートを付けろ。
こうすれば、grepの結果がなくても "" の空文字列が残るので、
testがエラーにならない。

それより、testを使わずに、
if ! grep $id $listfile; then
で行けるよ。(!を使うのはksh依存だけど)

Bourne Shなら
if grep $id $listfile; then :; else

とやるのが普通。
0182名無しさん@お腹いっぱい。2006/04/02(日) 15:42:44
>>178-179
この場合はわざわざ $? を呼び出す必要が無いな。

if grep ...
then
...
else
...
fi

else がいらないならこれでも可。

grep ... || {
...
}
0183名無しさん@お腹いっぱい。2006/04/02(日) 15:43:30
>>178-182
すんません。ありがとうございます。
常に独習でやっていたので知ってる方法しか考えてませんでした。
定石みたいなのがちゃんとあるもんなのですね。
くだ質になって申し訳なかったですけど勉強になりました。
0184名無しさん@お腹いっぱい。2006/04/02(日) 15:51:59
>>179
(( )) の算術式は、kshやbashでは使えるけど、
Bourne Shellでは使えないから、わざわざ使うことはないな。
0185名無しさん@お腹いっぱい。2006/04/02(日) 17:55:06
シェル変数 iに数値が入っている時、
以下のシェル文法の違いを説明せよ。(30点)

(1) [ $i = 3 ]
(2) [ $i == 3 ]
(3) [ $i -eq 3 ]
(4) [[ $i = 3 ]]
(5) [[ $i == 3 ]]
(6) [[ $i -eq 3 ]]
(7) [[ i -eq 3 ]]
(8) (($i == 3))
(9) ((i == 3))
(10) test $i -eq 3
0186名無しさん@お腹いっぱい。2006/04/02(日) 17:59:31
JISだと「アセンブラ言語」なんだよ。
だからJISをふまえた文書だと全て「アセンブラ言語」になってる。
0187前スレのクラッカー2006/04/02(日) 18:11:53
>>186
今さら擁護はよしてくれ。
どうせ俺を叩いてたのは、世間知らずのガキ共だったのだろうから・・・
0188名無しさん@お腹いっぱい。2006/04/02(日) 19:22:34
問 2
>>185 の問でシェル変数 i の中身が i='1+2' である
場合はどうなるか説明せよ。(30点)
0189名無しさん@お腹いっぱい。2006/04/02(日) 19:52:14
>>185
Solarisでの実行例

$ (1) [ $i = 3 ]
syntax error: `[' unexpected
$ (2) [ $i == 3 ]
syntax error: `[' unexpected
$ (3) [ $i -eq 3 ]
syntax error: `[' unexpected
$ (4) [[ $i = 3 ]]
syntax error: `[[' unexpected
$ (5) [[ $i == 3 ]]
syntax error: `[[' unexpected
$ (6) [[ $i -eq 3 ]]
syntax error: `[[' unexpected
$ (7) [[ i -eq 3 ]]
syntax error: `[[' unexpected
$ (8) (($i == 3))
syntax error: `(' unexpected
$ (9) ((i == 3))
syntax error: `(' unexpected
$ (10) test $i -eq 3
syntax error: `test' unexpected
0190名無しさん@お腹いっぱい。2006/04/02(日) 19:59:03
>>187
"assembler language" の検索結果 約 270,000 件
"assembly language" の検索結果 約 6,690,000
海外だと君は下位4%以下の阿呆だ。良かったね。0.1%に入らなくて。

>>186
へー、そうなのか。勉強になった。
変な言葉を使う割合が世界全体と比べて日本が5倍も多いのは
JIS のせいなのね。JIS もたいがいだなあ。まあこの件に限らんが。
セションとかね。
大学ではアセンブリ言語って習ったけどね。
"アセンブラ言語 site:u-tokyo.ac.jp" 38件
"アセンブリ言語 site:u-tokyo.ac.jp" 245件
38/(38+245) = 13.4%
東大は日本の平均よりは若干マシのようだな。
0191名無しさん@お腹いっぱい。2006/04/02(日) 20:41:17
>>189
はいはい。 ワロス ワロス。
で、本当の回答は?
0192名無しさん@お腹いっぱい。2006/04/02(日) 21:02:34
>>185
十人十色と言いましょうか、みなそれぞれ個性を持っております。
一言では語りつくせません。

>>188
一つも真となるものはありません。
0193名無しさん@お腹いっぱい。2006/04/02(日) 21:24:07
>>192
>一つも真となるものはありません。
違います。真となるものがあります。
0194名無しさん@お腹いっぱい。2006/04/02(日) 21:26:42
>>185
(1)(3)(10)以外は bash依存。よって論じる価値なし。

(3)と(10)は同義で、数値としての比較。
よって、仮に i=03でも真になる。

(1)は文字列としての比較。
よって、i=03の場合は偽になる。
0195名無しさん@お腹いっぱい。2006/04/02(日) 22:10:31
i="i='1+2'" としたときにどうなるか教えてください。
どうしても真になるものがあるとは思えないのですが...
0196名無しさん@お腹いっぱい。2006/04/02(日) 22:16:46
>>195
真になるところはbash依存だから、覚えなくていいよ。
0197173 2006/04/02(日) 23:38:01
僕の質問もお願いします^^;;;
0198名無しさん@お腹いっぱい。2006/04/02(日) 23:46:18
>>173
いやそれで間違ってないんじゃないでしょうか^^;;;
0199名無しさん@お腹いっぱい。2006/04/03(月) 04:17:38
bashでcase文の入れ子はどう書けばいいのでしょうか?
0200名無しさん@お腹いっぱい。2006/04/03(月) 05:20:53
shなら普通に書けばいい。bashでも多分そうだろ。何を悩んでるんだ?
0201名無しさん@お腹いっぱい。2006/04/03(月) 08:50:29
インデントとかw
0202名無しさん@お腹いっぱい。2006/04/03(月) 09:38:12
入れ子の内側の esacのあとの ;; を忘れがち、
とか、エスパーしてみるテスト。
0203名無しさん@お腹いっぱい。2006/04/03(月) 13:52:51
>>198 は絶対忘れないだろうな
0204名無しさん@お腹いっぱい。2006/04/03(月) 19:11:36
zshのシグナル(trap)回りの挙動を、Bourne Shellと同じにするには
どうすればいいでしょうか。argv[0]を shにして zshを起動しても、
shと同じにはなりません。setoptあたりかと思いましたが、
シグナルに関するオプションは見つかりませんでした。
やっぱり、zshをBourne Shellとして使うのは無理ってことでしょうか?

ちなみに、bashだと問題ありません。
0205名無しさん@お腹いっぱい。2006/04/04(火) 00:35:14
bashとashは挙動が違う。
0206名無しさん@お腹いっぱい。2006/04/04(火) 12:10:53
cpコマンドで複数のファイルをあるディレクトリ以下にコピーする際、
コピー元のファイルの相対パスを保ったままコピーするには
どうすればいいでしょうか?

具体的には、
cp -p hoge.txt aaa/fuga.txt bbb/ccc/boke.txt /dokoka/sonohen
を実行すると、hoge.txt fuga.txt boke.txtが、
/dokoka/sonohenの直下にコピーされてしまいますが、
hoge.txtは /dokoka/sonohen/hoge.txtでいいですが、
aaa/fuga.txtは /dokoka/sonohen/aaa/fuga.txtに、
bbb/ccc/boke.txtは /dokoka/sonohen/bbb/ccc/boke.txtに、
コピーしたいのです。

シェルでパス名を文字列処理すればできると思いますが、
できればもっと簡単にコマンド一発の方法を希望します。

あと、tar等を使うのは無しでお願いします。
0207名無しさん@お腹いっぱい。2006/04/04(火) 12:17:57
cp -R
0208名無しさん@お腹いっぱい。2006/04/04(火) 12:19:06
>>207
早とちり厨ハケン。質問欲嫁。
0209名無しさん@お腹いっぱい。2006/04/04(火) 12:23:57
質問、わかりにくすぎて途中で読むのやめた
0210名無しさん@お腹いっぱい。2006/04/04(火) 12:25:26
tarが無しな理由は何?
0211名無しさん@お腹いっぱい。2006/04/04(火) 12:30:23
cp -P hoge.txt aaa/fuga.txt bbb/ccc/boke.txt /dokoka/sonohen
かな?
0212名無しさん@お腹いっぱい。2006/04/04(火) 12:33:18
>208
んなん、forで回せばいいだろ。
0213名無しさん@お腹いっぱい。2006/04/04(火) 12:38:52
tarなら
tar -c hoge.txt aaa/fuga.txt bbb/ccc/boke.txt |(cd /dokoka/sonohen; tar xf -)
で済むんだけど、使わないのは宿題かなんか?
0214名無しさん@お腹いっぱい。2006/04/04(火) 12:45:16
>>206
GNU cpなら、
cp --parents hoge.txt aaa/fuga.txt bbb/ccc/boke.txt /dokoka/sonohen
だな。

>>211
GNU cpだと、-Pはシンボリックリンク保存オプションなので違うと思うが。
0215名無しさん@お腹いっぱい。2006/04/04(火) 12:59:33
>>210,213
tarが無しな理由は、コピー元ファイルがシンボリックリンクだった場合に、
実体ファイルに展開して欲しいからです。

>>214
ありがとうございます。でもGNU cpが無い場合はどうすればいいですか?
0216名無しさん@お腹いっぱい。2006/04/04(火) 13:11:00
>>215
symlinkだけの問題なら tarに hオプションを付ければいい。
でも cp --parentsが使える環境ならその方が簡単。
0217名無しさん@お腹いっぱい。2006/04/04(火) 21:31:16
>>206
シェルってゆうな。クズ。
0218名無しさん@お腹いっぱい。2006/04/04(火) 21:37:47
>>217
残念。この場合は「シェル」でもOK。
0219名無しさん@お腹いっぱい。2006/04/04(火) 22:26:22
いや、ダメだろ
0220名無しさん@お腹いっぱい。2006/04/04(火) 22:40:27
>>217 >>219
シェルとシェルスクリプトの違いもわからんのか?
0221名無しさん@お腹いっぱい。2006/04/04(火) 22:44:29
もうその議論秋田。
>>206 の質問だと、シェルスクリプトにせずに
直接コマンド(シェルの構文を含む)を打つとも解釈できるから、
「シェル」でもOKと思われ。
それより、いちいち「シェルってゆうな」の反応の方が鵜剤。
0222名無しさん@お腹いっぱい。2006/04/04(火) 22:55:16
いい加減飽きたのは事実だが、
シェルスクリプトをシェルと言う馬鹿が絶えないのがそもそもの原因であって、
それを指摘するほうにいちいちつっかかるほうが間違い。
0223名無しさん@お腹いっぱい。2006/04/04(火) 23:06:48
ウザイと思わせるためにやってるのでこれからも好き放題に書き込ませてもらうよ
0224名無しさん@お腹いっぱい。2006/04/04(火) 23:13:44
今度、仕事柄、シェルを始めることにしました。
そこでお聞きしたいのですが、皆さんが最初に書いたシェルは何ですか?
やっぱり、echo hello worldとかでしょうか?
0225名無しさん@お腹いっぱい。2006/04/04(火) 23:19:43
>>224
まず、その仕事とやらを紹介してみたまえ。
0226名無しさん@お腹いっぱい。2006/04/04(火) 23:21:29
仕事は、力×距離です。
0227名無しさん@お腹いっぱい。2006/04/05(水) 01:37:57
>226
正解!
0228名無しさん@お腹いっぱい。2006/04/05(水) 07:04:12
>224
つまんねーんだよ
死ねデブ
0229前.ス.レ.の.ク.ラ.ッ.カ.ー2006/04/05(水) 15:26:02
>>224のラベルでネットワーク管理者だったら笑い事だぞ。
俺の方がよっぽどスキルある。
0230名無しさん@お腹いっぱい。2006/04/05(水) 15:39:25
シェルはじめました
UNIXはじめました

と春になると焼き肉屋に案内が出ますが
どっちがブちがいがありますか?
0231名無しさん@お腹いっぱい。2006/04/05(水) 16:14:33
ネットワーク管理なら、シェル作らなくてもUNIXだけで十分だよ。
ネットワーク管理で使うUNIXはパターンが限られているので、
よく使うUNIXを、コメントとともにメモ帳などで保存しておけば良い。
で、これを適宜、TELNETにコピペしてUNIXを打つ。
変にシェルを作っても、そのシェルの名前を忘れそうだし、
シェル自体がブラックボックスになって、結局使わなくなってしまうのがオチだよ。
0232名無しさん@お腹いっぱい。2006/04/05(水) 16:26:39
>>231
じゃシェルはぶたなくても良いのね

UNIXを6回くらいぶつのをまとめて
スクリプトにしたいんだけど使うときは
UNIXをぶつで良いの?
0233名無しさん@お腹いっぱい。2006/04/05(水) 17:10:04
次の流行語予想:UNIXを作る
0234名無しさん@お腹いっぱい。2006/04/05(水) 18:12:38
シェルでUNIXを出すにはどうすればいいですか?
0235名無しさん@お腹いっぱい。2006/04/05(水) 18:38:29
>>234
シェルの中で shを実行すれば UNIXが出せる。
UNIXを終る時は exitを打てば、シェルに戻る。
0236名無しさん@お腹いっぱい。2006/04/05(水) 22:29:44
シェルスクリプトって略すと

シェ
シェル
シェス
シェスク
シェルスクリ
スクリプト
プト

どれが正しいですか?
0237名無しさん@お腹いっぱい。2006/04/05(水) 22:36:52
全部間違い。略せない。
0238名無しさん@お腹いっぱい。2006/04/05(水) 22:49:54
正解は

ェルスクリプ
0239名無しさん@お腹いっぱい。2006/04/05(水) 22:51:37
いや、文脈からシェルスクリプトであることが明らかな場合なら、
「スクリプト」と略すのはありだと思うよ。
そういう場合でも、「シェル」と略すのはまずいと思われ。

ただ、スクリプトだけだと、perl とか ruby のスクリプトも
含まれるから、あくまで文脈からシェルスクリプトだと分かる場合
のみ。
0240名無しさん@お腹いっぱい。2006/04/05(水) 23:10:51
>>236
クリ
0241名無しさん@お腹いっぱい。2006/04/06(木) 00:04:20
本当に文脈から明らかならどういう表現をしたって勝手だろう。
ただ発言者の人格や知性が疑われることはあるだろうが、それもまたよし。
0242名無しさん@お腹いっぱい。2006/04/06(木) 00:17:51
ちょっとまて

UNIXとシェルの使い方が少しラフだ
0243名無しさん@お腹いっぱい。2006/04/06(木) 10:36:15
よくわかんないけど単に「スクリプト」と表現したとき、
それがkshなりperlやpythonで記述されてるかどうかなんてふつう気にする?

>>236
シエル
0244名無しさん@お腹いっぱい。2006/04/06(木) 11:12:06
単に「スクリプト」と表現されると、多分「何スクリプト?」って聞くと思う
0245名無しさん@お腹いっぱい。2006/04/06(木) 11:27:20
>>243
先輩のことかーっ!!
0246名無しさん@お腹いっぱい。2006/04/06(木) 11:47:25
UNIXを打たれるくらいなら
シェルを作られる方がガマンできる
0247ななし2006/04/06(木) 16:54:17
$1 が -a の時に、
[ $1 = -a ] とやるとうまくいきません。
何かいい方法はありませんか?
0248名無しさん@お腹いっぱい。2006/04/06(木) 17:11:26
うまくいくよ
0249名無しさん@お腹いっぱい。2006/04/06(木) 17:20:01
>>247
現行のシェルだとそのままでうまくいく。
うまく行かないのはかなり古いBourne Shell。
ちなみにどのOSのshか教えて。

うまく行かないシェルの場合は、

[ X"$1" = X-a ]

とやって回避する。が、この回避方法はバッドノウハウなので、
もうobsoleteなはずなんだが、、
0250名無しさん@お腹いっぱい。2006/04/06(木) 17:24:13
>>249
なんで廃れたとか原始的とか古典的とか
爺さんの知恵袋とか
文脈に的確な日本語を当てないで
【obsolete】なんて形容詞や動詞として使うの?
0251名無しさん@お腹いっぱい。2006/04/06(木) 17:33:48
>>247
イマドキのシェルだと、>>249 の回避方法を使わなくても
そのままで桶なはずだが、それ以前の問題として、
$1を " " で囲んだ方がいい。
[ "$1" = -a ] ね。
でないと、$1が -aだった場合じゃなくて、
$1がスペースだった場合とかにエラーになる。
0252名無しさん@お腹いっぱい。2006/04/06(木) 23:40:45
>>237
.sh
0253名無しさん@お腹いっぱい。2006/04/07(金) 00:01:00
>>250
重箱の隅をつついいてひとり悦に入る非生産的な奴だね君
0254名無しさん@お腹いっぱい。2006/04/08(土) 00:33:08
>>206
>cp -p hoge.txt aaa/fuga.txt bbb/ccc/boke.txt /dokoka/sonohen
>を実行すると、hoge.txt fuga.txt boke.txtが、
>bbb/ccc/boke.txtは /dokoka/sonohen/bbb/ccc/boke.txtに、
>コピーしたいのです。

find hoge.txt aaa/fuga.txt bbb/ccc/boke.txt -print -depth | cpio -pdmuv /dokoka/sonohen
でできる。
コピー元がリンクなら、コピー後もリンクのまんまだよ。
0255名無しさん@お腹いっぱい。2006/04/08(土) 07:52:08
>>254
欲嫁。>>206 に「tar等を使うのは無しで」とある。
tar等には cpioも含まれると思われる。
それに、コピー後もsymlinkのままでは困るという質問だよ。
(ファイル本体をコピーして欲しいというのが質問の意図)

で、>>214 の cp --parents ですでに解決済み。
0256名無しさん@お腹いっぱい。2006/04/09(日) 18:49:03
あるファイル-Aをcatで別ファイルに出力するプログラムを作っています。
権限関係の理由で sudo と expect を使って
パスワード認証を行ってから cat する方法を取りたいと考えています。
cat だけなら問題ないのですが、

# cat A > hoge1.txt
# ./cat.exp ID PASS A > hoge2.txt

上記のようにした場合、
hoge2.txt の方が10〜300バイトほど量が増えてしまいます。
おそらくcat.expの中で無駄な出力が出てしまっているためかと
思うのですが、改善方法を教えていただけないでしょうか?
expectのマニュアルを見ましたが解決しません
ttp://kansai.anesth.or.jp/gijutu/expect/howto-expect.html

--cat.exp--------------------------------------
#!/usr/bin/expect
set username [lindex $argv 0]
set password [lindex $argv 1]
set file [lindex $argv 2]
log_user 0
spawn sudo -u $username /bin/cat $file
expect "assword:"
send "$password\r"
expect eof
log_user 1
exit
■ このスレッドは過去ログ倉庫に格納されています