シェルスクリプト総合 その21at UNIX
シェルスクリプト総合 その21 - 暇つぶし2ch1:名無しさん@お腹いっぱい。
12/11/15 18:57:33.11
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
  URLリンク(src.opensolaris.org)
  URLリンク(heirloom.sourceforge.net)
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その20
スレリンク(unix板)

2:名無しさん@お腹いっぱい。
12/11/15 19:26:11.32
Q. シェルは UNIX の勉強に使えますか?
A. シェルは UNIX に慣れた人間がスクリプトを書いて楽するのには向いていますが、
  UNIX の勉強には向いていません。

3:名無しさん@お腹いっぱい。
12/11/15 19:55:58.11
今月はじめ、職場に新しいPC(Core i7の結構ハイエンド構成)が入りました。
多分私が運用保守をまかされそうな雰囲気です。業務的にとある構造分析や
シミュレーションなど行う必要があり、制御コマンドとしてシェルスクリプトを
使用するのは聞いていたのですが、そのファイルを開いて1行目に書かれていたのは
#!/bin/tcshという文字列でした。

「うへぇ~、よりによってtcshかよ」

ファイル記述子のリダイレクト不可、クオートのネスティング等に無理あり、
今の奴でさえシェル関数は使えないし、パイプラインの終了ステータスもおかしいし、
今時の担当者が扱ってセキュリティは大丈夫なのか不安はつきませんし、
スクリプトとしてのcshは嫌われるのでネット上の情報も少なく調べるのも大変です。
おそらく導入に際して、大学など教育機関で最初にcshに触れて刷りこまれた人間が
強気の知ったかぶりをして発言権を得て「俺流」をつらぬき紛れ込ませたのでしょう。

昔、当時、シェルで唯一aliasやhistoryやジョブコントロールの機能が使えた
cshは大学など教育機関に浸透していて、日本のシェル界に多くのバカが輩出しました。

これから私は、おそらくそういうバカが、$*でスペース入りファイル名が扱えないとか
$<でファイルから読めないのかとか、変数に*を入れた場合だけ構文エラーになって
実行できないなどと、シェル通気取りの偏ったどうでもいい我侭を言い出し
(だからcshスクリプト書くんじゃねーよ)それと戦わなければならないのでしょう。
そして時代によって決着している、過去25年のシェル界隈のくだらないそれらの議論が
再現され、それに巻き込まれるのでしょう。もう今からうんざりです。

だからお願いです。教育現場ではbashでもzshでもkshでもashでも
Bourne shでもなんでもいいですがBシェル系のシェルにしてください。

教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。

4:名無しさん@お腹いっぱい。
12/11/15 20:00:38.47
>>2
シェルとシェルスクリプトの区別がついてないアホレスをコピペすんなよ

5:名無しさん@お腹いっぱい。
12/11/15 20:05:57.42
確かにww
シェルがないとコマンド実行すらできないし
何がユーザーの入力を受け付けるんだ

6:名無しさん@お腹いっぱい。
12/11/15 20:10:10.87
前スレ最後の頓珍漢は私です
アドバイス通り$args[1]→$1にしたらすんなりいきました。
ありがとうございました。スレなめるように見て勉強させて頂きます。

7:名無しさん@お腹いっぱい。
12/11/15 20:30:38.10
俺のもなめて。

8:名無しさん@お腹いっぱい。
12/11/18 11:50:01.58
Gnome Shellのスクリプトの話題もここでいいのか?

9:名無しさん@お腹いっぱい。
12/11/20 18:14:10.06
以下のような文章があったとします。
~aaa~bbbaaa~bbbaaa~bbb~
(~は文字数の定まっていない文字列を表しています。)
ここから、それぞれ最初のaaa~bbbだけを抽出、真ん中のaaa~bbbだけを抽出、最後のaaa~bbbだけをgrepなどで抽出したい時、どう正規表現で表せばよいのでしょうか?

10:名無しさん@お腹いっぱい。
12/11/20 18:23:34.33
grepは抽出するというより、マッチした行は全部表示しちゃうけど?
sedなら
sed 's/\(aaa.*bbb\)\(aaa.*bbb\)\(aaa.*bbb\)/\2/'
みたいな?

11:名無しさん@お腹いっぱい。
12/11/20 18:31:07.64
>>9
>>1
>正規表現の話題はスレ違い(正規表現スレへ)

12:名無しさん@お腹いっぱい。
12/11/20 18:34:56.83
>>11
いや、それは
>>1
> ・シェルで使えるワイルドカード等は正規表現ではありません。
って話だからまた違う。

13:名無しさん@お腹いっぱい。
12/11/20 18:38:12.26
>>12
恥ずかしい奴。

14:名無しさん@お腹いっぱい。
12/11/20 18:40:22.60
正規表現スレはまともに機能してないし、ここでいいだろ。

15:名無しさん@お腹いっぱい。
12/11/20 18:45:22.53
だな。

16:名無しさん@お腹いっぱい。
12/11/20 18:47:12.07
正規表現スレがまともに機能してないというなら
まともに機能させるためにも正規表現スレに行くべき。

sedスレもあるし、sedスレでもいいよ。

17:名無しさん@お腹いっぱい。
12/11/20 20:02:12.24
了解です
正規表現スレに行ってきます

>>10
grep -oとしてマッチした部分のみ出力しようと考えてます

18:名無しさん@お腹いっぱい。
12/11/20 20:25:59.98
>>9
ってかこれ俺も分かんないんだけど
どうやんのさ

19:名無しさん@お腹いっぱい。
12/11/20 21:32:57.96
>>17
$ echo "~aaa~bbbaaa~bbbaaa~bbb~" | grep -o "aaa~bb"

ってやったら3個表示されちゃうな。。。

20:名無しさん@お腹いっぱい。
12/11/21 14:15:55.18
あとは、sed -n 1p 等でいいじゃない

21:名無しさん@お腹いっぱい。
12/11/22 18:12:58.50
あるシェルスクリプトに渡された空白を含む可変長引数を、別のコマンドに転送したいのですが書き方がわかりません
具体的にはシェルスクリプトhoge.shを./hoge.sh "a b" "c d"…と実行すると,内部で別のコマンドcmdを引数"a b" "c d"…で実行するような場合です.
引数の数が固定であればhoge.shの中にcmd "$1" "$2"…と記述すれば良いのですが,可変長に対応しようと$*をそのまま用いると
展開されてcmd a b c dというコマンドになり,引数が4つになります.

どなたかわかる方がいましたら,ご教授ください.

22:名無しさん@お腹いっぱい。
12/11/22 18:17:06.55
>>21
"$@"

23:22
12/11/22 18:22:31.99
ありがとうございます.これで彼女ができそうです><

24:名無しさん@お腹いっぱい。
12/11/24 16:38:01.78
ffmpeg(avconv)では連番のpngファイルから動画ファイルを作り出すことができます.
このような機能を利用して,画像生成スクリプトの吐き出す静止画群から動画を作っています.

これを,中間ファイルのpngを作ることなく実現したいのですが何かいい方法はないでしょうか.
静止画をまとめて標準出力に書き出すことはできそうなので,標準入力からの複数の静止画を
avconvが認識できれば簡単に実現できそうな気がするのですが.

25:名無しさん@お腹いっぱい。
12/11/24 16:41:34.97
>>24

動画編集ソフト
スレリンク(unix板)

26:名無しさん@お腹いっぱい。
12/11/24 20:36:48.33
>>24
良い事を教えてやろうwebブラウザでURLリンク(www.google.com)を開くんだ。
まんなかにテキストボックスがあらわれるから
ffmpeg jpeg
ここまで入れれば候補に
ffmpeg jpeg 動画
がでてくるから、それをクリックする。あとは上から順番に開いていけばいい。

わかったか? URLリンク(www.google.com)はブックマーク(お気に入り)しとくと捗るぞ。

27:名無しさん@お腹いっぱい。
12/11/24 21:15:55.69
すみませんが詳しい方のみ回答をお願いします

28:名無しさん@お腹いっぱい。
12/11/25 03:38:19.25
賢者タイムの方のみお願いします

29:名無しさん@お腹いっぱい。
12/11/25 09:34:07.71
おかずもあげずに

30:名無しさん@お腹いっぱい。
12/11/28 00:27:12.03
質問です。

まず、以下のファイルがあります。
--------
$ cat hoge.dat
aaa
bbb
ccc
--------

次に、下記のスクリプトを用意します。
--------
$ cat hoge.sh
#!/bin/sh
cat hoge.dat | while read -r line
do
alldata=$alldata$line
done
echo $alldata
--------

処理結果は以下のようになりました。
--------
$ ./hoge.sh

$
--------

自分のイメージとしては、処理結果は、aaabbbcccと表示されるはずなのですが、
なぜ表示されないのでしょうか?表示するためにはどうすればいいでしょうか?

31:名無しさん@お腹いっぱい。
12/11/28 00:52:03.02
>>30
パイプ使うとサブシェルが作成されるから。この場合ループの中身はサブシェルで実行される。
bashでこれを避けるにはcatとパイプの代わりに<でファイルを渡せばいい。

#!/bin/sh
while read -r line
do
alldata=$alldata$line
done < hoge.dat
echo $alldata

32:名無しさん@お腹いっぱい。
12/11/28 00:54:33.58
ただのファイルなら < でいいけど、どうしてもパイプが必要ならこうかな

#!/bin/sh
alldata=`cat hoge.dat | (while read -r line
do
alldata=$alldata$line
done; echo $alldata)`
echo $alldata

あんまりエレガントじゃないか

33:名無しさん@お腹いっぱい。
12/11/28 01:02:24.57
<() 使うのはナシですか

34:名無しさん@お腹いっぱい。
12/11/28 07:45:45.49
sh(bash)ではなく、kshに変えるのが一番手っ取り早いな。

35:名無しさん@お腹いっぱい。
12/11/28 09:52:28.20
#!/bin/sh
while read -r line
do
alldata=$alldata$line
done <<EOF
`cat hoge.dat`
EOF

36:名無しさん@お腹いっぱい。
12/11/28 10:07:00.10
ほほー

37:名無しさん@お腹いっぱい。
12/11/28 21:38:42.24
やっぱカッケーな

38:名無しさん@お腹いっぱい。
12/11/28 23:36:34.31
>>32
これじゃだめ?
#!/bin/sh
cat hoge.dat | (while read -r line
do
alldata=$alldata$line
done
echo $alldata)

質問がほんとうにやりたいことなら、こんなのもあるかも。

#!/bin/sh
cat hoge.dat | while read -r line
do
echo -n $line
done
echo

39:>>30
12/11/29 01:07:49.13
みなさん、ご丁寧にありがとうございました。
なぜ、期待どおりにならないか理解しました。

ちなみに、こういうやりかたもありますね。
-----------
for line in `cat hoge.dat`
do
alldata=$alldata$line
done
echo $alldata
-----------

40:名無しさん@お腹いっぱい。
12/12/02 21:10:12.06
求めてるのと違うだろうけど、これでもできた

sed -n 'H;${g;s/\n//gp}' hoge.dat

41:名無しさん@お腹いっぱい。
12/12/06 22:17:50.48
bash の brace expansion {...} について教えてください.
環境は bash 4.2.39 MacOSX 10.7.5 です.

1$ a=foo
2$ echo $a{_a,_b,_c}

3$ echo $a{,_a,_b,_c}
foo
4$ echo ${a}{,_a,_b,_c}
foo foo_a foo_b foo_c

この変数aの区切りを明示しない時(2$,3$)の挙動がよく分かりません.
どう解釈すればいいのでしょうか?

42:名無しさん@お腹いっぱい。
12/12/06 22:24:28.37
>>41
このように展開される

$a{_a,_b,_c}→$a_a $a_b $a_c
$a{,_a,_b,_c}→$a $a_a $a_b $a_c
${a}{,_a,_b,_c}→${a} ${a}_a ${a}_b ${a}_c

43:名無しさん@お腹いっぱい。
12/12/06 22:32:45.24
>>42
ああ、よく分かりました。ありがとうございます。

44:名無しさん@お腹いっぱい。
12/12/06 22:33:08.64
>>41
手元で動作を確認する限り

2$ は {} の展開を先にしてる
つまり $a_a $a_b $a_c としてから変数の処理
=> 何も出力されない

3$ も同様
$a $a_a $a_b $a_c としてから変数の処理
=> $a だけ定義されてるから foo が出力

どこかマニュアルに展開の優先順位があるかもしれないがそれは確認してない

45:44
12/12/06 22:34:57.60
リロードしてなかった(´・ω・`)
すまない...

46:名無しさん@お腹いっぱい。
12/12/07 14:07:46.57
screen使いです。
bash_historyって何行ぐらいにしている?
直近のhistory | grep hoge | lessってするなら3桁の900行で十分だよね。
もうちょっと前のも検索したいなら4桁の9900行。 # 自分は余裕もってこれ。
9366$

メモリ食いそうだから、スクリプトを組んで今までの全部の履歴十数万行を検索するのも
超ひさしぶりのコマンド用途としてはありそう。その超ひさしぶりに使うコマンド用途なら
# とコメントをつけておくとちょっと使いやすいかも。

47:名無しさん@お腹いっぱい。
12/12/07 14:16:03.49
好きにしろ。

48:名無しさん@お腹いっぱい。
12/12/07 14:57:28.68
ヒストリーは何行にしてても
端末複数開いてたら消えちゃうし
いつ打ったかの時間情報ないし
あんまり意味がないよね

49:名無しさん@お腹いっぱい。
12/12/07 15:29:36.16
>>48
> ヒストリーは何行にしてても
> 端末複数開いてたら消えちゃうし
自分の力量の視野の狭さだとちゃんとexitって閉じると残るよ。
> いつ打ったかの時間情報ないし
> あんまり意味がないよね
時間情報は環境変数の設定で秒数まで残るかな。秒数の小数点はスクリプトで工夫すれば
残せそうかな。そこまでの必要性がないからやっていないけど。

50:名無しさん@お腹いっぱい。
12/12/07 15:43:25.01
シェルスクリプトでヒストリ残して何がうれしいの?

51:名無しさん@お腹いっぱい。
12/12/07 17:11:43.25
シェルスクリプト内でhistory使う方法教えて。

#!/bin/sh
コマンド1
コマンド2
history

と書いて実行してもhistoryが何も表示されない><

52:名無しさん@お腹いっぱい。
12/12/07 17:17:08.00
>>51
set -o history でどうかな。

53:名無しさん@お腹いっぱい。
12/12/07 19:52:21.63
>>46
zsh使いなら死ぬまで履歴を残すもんだってばっちゃが言ってたから
50万行にしてる。
もちろん複数の端末起動してもちゃんとshare_historyされる設定。

54:名無しさん@お腹いっぱい。
12/12/07 23:24:10.48
プログラミング初心者です。
以下のコードがシェルの文法的におかしい点を教えて下さい。
ex1はargvでファイル名を読み込む外部のC++プログラムです。
不足してる情報もあると思いますが、分かる範囲で教えていただけたら助かります。

#!/bin/sh

DIRx=$1
DIRy=$2

filesA=`ls $DIRx/*.data`
filesB=`ls $DIRy/*.data`
for x in $filesA;
for y in $filesB;

do
./ex1 $f $fi
done

55:名無しさん@お腹いっぱい。
12/12/07 23:31:28.06
なんでそんな間違い方するのか意味不明
釣りっぽい

56:名無しさん@お腹いっぱい。
12/12/07 23:39:25.77
すみません、釣りじゃないです。
ちょっと調べて、これでできたかもしれないです。
もし間違っていたら教えて頂けないでしょうか。
如何せんコンパイルはできるものの実行結果が合っているか確認する術が無いもので…

for x in $filesA;
do
for y in $filesB;
do
./ex1 $x $y
done
done

57:名無しさん@お腹いっぱい。
12/12/07 23:51:12.55
質問者ではないのですが この for/do/done の構文
言語仕様策定の上で、do の存在はどうしても必要だったの?
改行かセミコロンでループブロックの区切りは付きますよね
もし無かったらアレができないよみたいな do の活用法なんてあるのでしょうか?
単に do/done なら覚え易いよね!程度だったら残念かも

58:名無しさん@お腹いっぱい。
12/12/08 00:12:36.76
>>56
*.data で得るファイル名に空白がないのなら問題ない
空白があれば
IFS=$'\n'
が必要

文法はいい。というか文法以外のex1の意図がわからないけど

59:名無しさん@お腹いっぱい。
12/12/08 01:40:05.03
>>58
ありがとうございます、空白はありません。
お陰様でなんとかできました、ありがとうございました。
ex1はただの実行ファイルで、名前に特に意味はありません。

60:名無しさん@お腹いっぱい。
12/12/08 08:14:05.32
>>54,>>56
釣りとは思わないけど、やりたいことはなんとなくわかるけどケアレスミスが多すぎて
判読不可能。
>>57
どの力が働いて、今の構文なのかはわからない。おまじないってことでいいんじゃないのw

Unix創世期はほとんどがディスプレイなし、テレタイプ端末、スペック貧弱と想像できるから
テキストエディタvi, emacsは使えずに開発環境はラインエディタ。
創世期シェルを作った開発形態・志向も違うだろうし、for-do-doneを言うならcase-esac,
if-fiもどうなのってツッコミたくなるしなあ。その当時回文みたいなのが流行っていたの?
教育言語のPascalも律儀に{}だからね。
現在のemacsでksh, bashのfor文テンプレート使うとdo-doneってつくね。過剰に装飾している
だけかもしれないけど。

61:名無しさん@お腹いっぱい。
12/12/08 09:21:06.89
>>60

ラクダ本(オライリーのPerlの本)の初版用語集によると、ある語の逆綴りを
採用するのはALGOL主義、だそうだが、elif(fileの逆綴りでもある)がない
理由として半ばジョークめいた書き方だったので話半分に。

# Pascalはbegin/endじゃ…

62:名無しさん@お腹いっぱい。
12/12/08 14:39:25.53
>>60
born shellの作者がAlgolが好きだったから。

63:名無しさん@お腹いっぱい。
12/12/08 16:02:40.46
骨?

64:名無しさん@お腹いっぱい。
12/12/08 17:03:07.57
>>62-63
英語の成績悪かったらしい奴が2人いるみたいだが、突っ込んだら負け。

65:名無しさん@お腹いっぱい。
12/12/08 22:04:44.58
?マークの意味が分からない奴がいるな・・・

66:名無しさん@お腹いっぱい。
12/12/08 22:22:47.71
任意の一文字マッチって意味でしょ。それぐらい知ってるよ。

67:名無しさん@お腹いっぱい。
12/12/09 10:42:10.50
シェルスレなんだから変数が未設定かどうかの確認って答えるべきだな

68:名無しさん@お腹いっぱい。
12/12/09 10:43:37.85
シェルglobだから>>66で正しい。

69:名無しさん@お腹いっぱい。
12/12/09 10:46:03.34
>>66
bo?rn?

70:名無しさん@お腹いっぱい。
12/12/09 18:39:45.90
誰もシェルグロブなんて言ってないけどな

71:名無しさん@お腹いっぱい。
12/12/10 09:34:25.06
>>67
どういう意味? ?で変数の何が分かるの?

72:名無しさん@お腹いっぱい。
12/12/10 10:11:21.88
>>71
${hoge:?}

73:名無しさん@お腹いっぱい。
12/12/10 13:52:17.02
${foo:+hello}
fooが nullかunset なら "", それ以外は "hello"

${foo+hello}
fooが unsetなら "", それ以外は "hello"

前者は man bash にて仕様が
${parameter:+word}
Use Alternate Value. If parameter is null or unset, nothing is
substituted, otherwise the expansion of word is substituted.
のように確認できたのですが、後者が見あたりません
どの辺を見れば載っているでしょうか? 或いは man レベルでは載っていない仕様でしょうか?

74:名無しさん@お腹いっぱい。
12/12/10 14:13:26.18
>>73
あ、それちょうど今週のレポートで学生に課したネタなんで、
知ってる人も答をここには書かないでね。(偶然は恐ろしい)

75:名無しさん@お腹いっぱい。
12/12/10 14:36:02.61
うち学生じゃないんですが・・・
ならせめてレポート提出日が過ぎたら教えてください

76:名無しさん@お腹いっぱい。
12/12/10 14:38:03.86
さっきのは null か unset の判別はどうやったらいいのか調べていたら見つけた小技です

77:名無しさん@お腹いっぱい。
12/12/10 14:57:36.75
>>73
URLリンク(linuxjm.sourceforge.jp)
> コロンを省略した場合には設定されているかどうかのみを調べます。
これじゃね。

78:名無しさん@お腹いっぱい。
12/12/10 17:47:50.38
>>77
ありがとうございます。それですね。
辿ってみたら man bash でも該当する箇所がありました。

79:名無しさん@お腹いっぱい。
12/12/10 17:55:03.11
そりゃman bashの和訳だもの。

80:名無しさん@お腹いっぱい。
12/12/10 18:53:49.37
わらかすなよ

81:名無しさん@お腹いっぱい。
12/12/13 04:02:30.30
>>79
意味不明

82:名無しさん@お腹いっぱい。
12/12/13 11:02:31.60
>>81
もともとbashのmanは英語で書かれていたんだよ

83:名無しさん@お腹いっぱい。
12/12/13 23:00:47.57
わかる方がいたら教えてください。

引数で入力した値で、設定ファイル(~/test.conf)の置換文字列(%replace%)を置換することを考えています。

replace_str=%replace%
input=$1
sed -e "s/${replace_str}/${input}/" ~/test.conf

上記のようなことを考えていますが、入力値に /(スラッシュ)があると、sedコマンドがエラーになってしまい、うまく置換ができません。
入力値に /(スラッシュ)がある場合でも正しく置換する方法はありますか?

また、/(スラッシュ)以外でもNGになってしまう文字はありますか?
その文字も正しく置換することは可能でしょうか。

84:名無しさん@お腹いっぱい。
12/12/13 23:11:09.68
>>83
入力値に絶対入らない文字はある?
あれば / のかわりにそれを使う。

sed -e "s,${replace_str},${input}," ~/test.conf

みたいに。

85:名無しさん@お腹いっぱい。
12/12/13 23:14:17.61
そんな文字を仮定できないなら、
$1中の / を \/ に置換してからinputに入れるしかないかな。
この置換がまたやっかいかもだが。

86:名無しさん@お腹いっぱい。
12/12/13 23:29:11.48
replace_str=${replace_str//\//\\/}
たぶんこれでいけるでしょう

87:名無しさん@お腹いっぱい。
12/12/14 12:41:31.89
>>83
\や&も特殊な意味を持つと思うよ
俺なら、sedを使わざるをえないなら$inputに使える文字に制限を付けるかな

88:名無しさん@お腹いっぱい。
12/12/14 12:52:19.32
sed 's/%replace%/_replace_/g' | m4 -D_replace_="$input"

89:名無しさん@お腹いっぱい。
12/12/14 20:54:59.74
>>87
相手がWebの先の人間だったりするとそういう制限は難しいんじゃ

90:名無しさん@お腹いっぱい。
13/01/03 00:00:22.31
シェルスクリプトでHex値を書き換える事は出来ますか?

バイナリファイルAのHex値
00100000のようなものを01100000のように書き換えたいです。
駄目元で、
cat A | sed -

e 's/00100000/01100000/' > A
のようにやってみましたがダメでした。

91:名無しさん@お腹いっぱい。
13/01/03 00:02:32.45
>>90
きみのsedは16進数値をかけるsedなのかい?

92:名無しさん@お腹いっぱい。
13/01/03 00:23:12.33
>>91
やっぱり無理なんでしょうか。…

93:名無しさん@お腹いっぱい。
13/01/03 01:02:55.97
bcかawkでも使っとけ

94:名無しさん@お腹いっぱい。
13/01/04 01:11:51.48
シェルスクリプト バイナリファイル でぐぐると最初になかなか面白そうなのが出てきた
個人的にはperl使うのが楽だと思うけど

95:名無しさん@お腹いっぱい。
13/01/04 10:22:05.55
>>94
これ?
URLリンク(www.flat7th.org)

96:名無しさん@お腹いっぱい。
13/01/05 23:39:03.74
FreeBSDの/bin/shのソースって単体配布されてないのん?

97:名無しさん@お腹いっぱい。
13/01/06 00:05:05.98
これを見る限り、それさえ既に魔改造版でしかないみたいw

URLリンク(www.in-ulm.de)

98:名無しさん@お腹いっぱい。
13/01/06 00:25:20.45
shのソースV7のでおなかいっぱい

99:名無しさん@お腹いっぱい。
13/01/06 04:34:44.00
>>96
基本的に全部まとめて配布なのが
BSDの良い所の一つだよ。

でも単体取得する方法もある。

100:名無しさん@お腹いっぱい。
13/01/06 09:24:06.28
その方法とは!?

101:名無しさん@お腹いっぱい。
13/01/06 10:44:45.32
>>92
xxdで変換したの編集してからxxdで復元

102:名無しさん@お腹いっぱい。
13/01/07 00:09:45.57
>>100
svnからゲッツ、じゃね
URLリンク(svn.freebsd.org)

103:名無しさん@お腹いっぱい。
13/01/07 13:31:44.54
>>91
うちのsedは書ける

104:名無しさん@お腹いっぱい。
13/01/07 22:27:46.05
>>102
僕のケータイでも読めた。
でもインストールがわからない。
みんなどーやってインストールしてるの?
僕のケータイリナックスってやつらしいけど
客がシェル使えるよーになってないから
これインストールしたら客もシェル使えるんだ。
でもインストールがわからない。

105:名無しさん@お腹いっぱい。
13/01/08 11:07:30.16
>>104
configureしてmake install

106:名無しさん@お腹いっぱい。
13/01/08 15:17:53.67
でもライブラリに分割されるとか魔改造されてて、あっさりとコンパイルできないのが常。
baseシステムに組み込まれてるのは取り出せないと思った方がいい。

107:名無しさん@お腹いっぱい。
13/01/08 16:40:37.49
MINIX(86)のシェルを移植するのだ!

108:名無しさん@お腹いっぱい。
13/01/08 18:03:08.60
フリーなの無いでしょ。

109:名無しさん@お腹いっぱい。
13/01/12 21:11:02.86
2> /dev/null

2>&amp;-
って書くとまずいことあるの?

おしえて先生!

110:名無しさん@お腹いっぱい。
13/01/12 22:41:52.39
>>106
ほとんど手が入っていないであろう net2 のソース持ってくるってのは?

111:名無しさん@お腹いっぱい。
13/01/13 14:15:52.18
>>109
writeの失敗を検出するようなコードが書いてあると困る

112:名無しさん@お腹いっぱい。
13/01/13 14:36:10.22
どこにですか?

113:名無しさん@お腹いっぱい。
13/01/13 15:03:28.37
#include <unistd.h>
int main(){
if(write(2,"hello",5) == -1){
return 1;
}
return 0;
}
こんな感じかな。

114:名無しさん@お腹いっぱい。
13/01/19 01:07:47.55
>>109 &amp;- ってどういう構文なの? htmlとか?
>>111 エラーを返さない方が困ります

115:名無しさん@お腹いっぱい。
13/01/19 02:20:17.72
仕様変更した2chと、
それに対応してない専ブラ使うやつと、
&amp;が何かも知らずにつっこむやつ

116:名無しさん@お腹いっぱい。
13/01/19 02:32:56.96
と、ドヤ顔で解説する奴と

ニヤニヤしながら傍観してるオレ。

117:名無しさん@お腹いっぱい。
13/01/19 10:36:37.19
あー &ー なのか
失礼

118:名無しさん@お腹いっぱい。
13/01/19 18:28:47.20
初心者だから使えるコマンドがlsとかなのは共通事項。
たまにネットがおかしいと聞くと言われて打った
ifconfigは command not found になったりするんだよね。

119:名無しさん@お腹いっぱい。
13/01/19 18:39:44.08
ifconfigは/usr/sbinにあったりするからな。

120:名無しさん@お腹いっぱい。
13/01/19 18:50:09.03
解決策を聞いてるんじゃないよ。(というか知ってるし)
そうそうと共感してくれればいいのに。
面倒臭い人ね。

121:名無しさん@お腹いっぱい。
13/01/19 21:26:02.44
そういう大事なコマンドは/sbinだろ。

122:名無しさん@お腹いっぱい。
13/01/20 00:53:25.44
どこにシェルスクリプト要素があるんだ?

123:名無しさん@お腹いっぱい。
13/01/20 02:42:53.88
>>120
誰でも知ってるような事を書いて
共感しろとは、勘違いも甚だしい

124:名無しさん@お腹いっぱい。
13/01/20 03:42:08.87
さすがに生まれたての赤ん坊は知らねぇだろ

125:名無しさん@お腹いっぱい。
13/01/20 05:26:07.60
赤ん坊が無知を装うのは大昔からの通例だろ

126:名無しさん@お腹いっぱい。
13/01/20 05:38:37.73
会話できない以上知ってるかどうか確認する手段がないからな。

127:名無しさん@お腹いっぱい。
13/01/20 10:43:48.19
くだらない質問ですが、
次のシェルスクリプトで★マークに入る方法があれば教えてください。
ARG0="$0"
while [ -h "$ARG0" ]; do
ls=`ls -ld "$ARG0"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
  ★
ARG0="$link"
else
ARG0="`dirname $ARG0`/$link"
fi
done

処理時代はシンボリックリンクの実体を辿る処理だという事は調べて、
なんとか分かったんですが、★の処理にはいる条件がどうしても分かりません。
別に入らなくてもいいのですが、気になってしまって・・・

128:名無しさん@お腹いっぱい。
13/01/20 10:50:31.37
絶対パスへのリンク、じゃないの?

129:名無しさん@お腹いっぱい。
13/01/20 10:54:20.46
>>127
解答を聞いてるんじゃないよ。
そうそう、こういう構文だと条件がわかりにくいよねぇー、
って共感してくれればいいんだけど。

130:名無しさん@お腹いっぱい。
13/01/20 11:06:43.97
ってかreadlinkを自分で分かりにくく書いてみたってことでいいの?

131:127
13/01/20 11:12:54.89
>>128
ありがとうございます。
絶対パスで調べて、リンクを作りなおしたら通りました。

132:127
13/01/20 11:25:51.23
>>130
Linuxを使い始めたばかりで、
とりあえず適当なソフトをWebを見ながらインストールしていました。
その中でTomcatというソフトをインストールするのに、
シェルスクリプトの設置が必要と書かれており、そのサンプルが記載されていました。
しかし、サンプルの意味が全く分からなくて、そのまま使っていいのかも分からず
一から調べている最中でした。

133:名無しさん@お腹いっぱい。
13/01/20 13:47:00.29
>>130
URLリンク(svn.apache.org)
の事だな。特定の環境にしか存在しないreadlinkは使いたくなかったんだろ。
素人は黙ってなよ。

134:名無しさん@お腹いっぱい。
13/01/20 14:49:14.74
リテラシ高いな
感心感心

135:名無しさん@お腹いっぱい
13/01/23 14:41:17.73
もし、Aのディレクト内が空だったら、○○しなさい

の一番簡単なスクリプトは?

136:名無しさん@お腹いっぱい。
13/01/23 14:56:34.29
find A -empty | fgrep -x A >/dev/null && ○○

137:名無しさん@お腹いっぱい。
13/01/23 15:51:12.07
解答を聞いてるんじゃないよ。
そうそう、ディレクトリが空かどうかの判断って簡単にできないよねぇー
って共感してくれればいいんだけど。

138:名無しさん@お腹いっぱい。
13/01/23 16:51:23.23
簡単にできるけど、回答知りたくないらしいから黙っておこう。

139:名無しさん@お腹いっぱい。
13/01/23 17:03:26.94
コピペやん

140:名無しさん@お腹いっぱい。
13/01/23 19:43:01.34
>>137
さぁ、お前のハードリンクを数えろ

141:名無しさん@お腹いっぱい。
13/01/23 20:37:43.99
それだと内部のディレクトリ数しかわかんねえよ

142:名無しさん@お腹いっぱい。
13/01/23 21:01:24.46
141が何を主張しているのかエスパーお願い

143:名無しさん@お腹いっぱい。
13/01/23 21:27:00.12
エスパーしよう。
>>141 は、ディレクトリのハードリンク数が2かどうかで空ディレクトリを判断しても、
それは「サブディレクトリ数+2」の値でしかないから、
内部のディレクトリ数が0で通常ファイルだけ存在する場合まで
空ディレクトリと誤判定してしまう、と主張しているようだ。

要するに、空ディレクトリ≠葉(leaf)ディレクトリ

144:名無しさん@お腹いっぱい。
13/01/23 21:31:31.38
.と..が必ず存在するから、空ディレクトは存在しない。
ゆえに判定式は定数式。

145:名無しさん@お腹いっぱい。
13/01/23 21:56:03.02
エスパーってほどじゃないだろ

146:名無しさん@お腹いっぱい。
13/01/23 23:08:40.40
>>137
消してみればいいんだしね。

147:名無しさん@お腹いっぱい。
13/01/23 23:09:52.41
権限がなかったり

148:名無しさん@お腹いっぱい。
13/01/24 01:17:26.13
>>137
共感できない。

149:名無しさん@お腹いっぱい。
13/01/24 05:53:53.02
教官!できない…

150:名無しさん@お腹いっぱい。
13/01/24 08:38:20.39
ようするに >>141 は . と .. がリンク数に含まれることを知らないってことかな

151:名無しさん@お腹いっぱい。
13/01/24 08:43:24.58
>>150
すでに>>143が解説済み。

152:名無しさん@お腹いっぱい。
13/01/24 09:15:47.01
空ディレクトリが存在しないのであれば
rmdirはどのディレクトリも削除できないのでは?

153:名無しさん@お腹いっぱい。
13/01/24 09:35:00.86
こまけぇことは気にしないで消せばいいんだよ

154:名無しさん@お腹いっぱい。
13/01/24 11:20:22.52
>>152
空ディレクトリは.と..以外のファイル/ディレクトリが無いディレクトリのこと

155:名無しさん@お腹いっぱい。
13/01/24 18:41:29.19
/a.appを起動
プロセスを終了

を5秒ごとに繰り返すコマンド書いてくださいな

156:名無しさん@お腹いっぱい。
13/01/24 18:47:02.12
なんでそんな傲慢なの?

157:名無しさん@お腹いっぱい。
13/01/24 18:51:36.35
そうそう、アプリを起動してプロセスを終了を、
5秒ごとに繰り返したりしたいこと多いよね、共感します。

158:名無しさん@お腹いっぱい。
13/01/24 21:04:28.31
>>155
プロセスを終了 って、どのプロセスでもいい?

159:名無しさん@お腹いっぱい。
13/01/24 21:33:59.04
>>155
while sleep 5;do pkill a.app;/a.app &;done

ほんとはpid拾うべきか。$?だっけ。

160:名無しさん@お腹いっぱい。
13/01/25 01:43:15.60
$! な

161:名無しさん@お腹いっぱい。
13/01/25 11:02:15.89
.appって拡張子はMac OS Xのbundleか?
だとするとopen -a /a.appだろうけど、まあapplescriptで書いた方がいいよ。
ジェントルに終了させられるし。

162:名無しさん@お腹いっぱい。
13/01/25 11:31:59.01
applescriptって#がコメントにならないから
#!/usr/bin/osascriptって書けないんだよね…。

163:名無しさん@お腹いっぱい。
13/01/25 11:46:54.65
ファイルの一行目だけ特殊扱いしてくれればいいんだけどな。
そういうLisp系のインタープリタある。(そもそもLisp系は行頭の#がちと特殊だが)

164:名無しさん@お腹いっぱい。
13/01/25 13:38:52.29
>>162
2行目以降を使うスクリプトを書いてそれをシェバングにしたら?

165:名無しさん@お腹いっぱい。
13/01/25 14:09:28.74
>>164
残念。
シェバングに指定できるのはバイナリだけ。(スクリプトじゃ駄目)

166:名無しさん@お腹いっぱい。
13/01/25 16:53:20.52
>>165
じゃあperlかなんかで1行に凝縮させればおk

167:名無しさん@お腹いっぱい。
13/01/25 16:57:50.64
あれ?バイナリじゃなくても動くぞ?
うちの壊れたか?

168:名無しさん@お腹いっぱい。
13/01/25 17:47:21.06
shellが実行する場合もある。

169:名無しさん@お腹いっぱい。
13/01/25 17:48:02.97
いずれにせよexecve(2)の中でやることだし、
最近は自分で処理するシェルもいるし。

170:名無しさん@お腹いっぱい。
13/01/25 21:06:05.27
osascript は Leopard 以降なら sh-bang を理解するお。

171:名無しさん@お腹いっぱい。
13/01/25 22:24:03.73
うろ覚えだけどbashの挙動は
とりあえずexec*してみる -> 駄目だったら/bin/bashで実行してみる
の2段構えだったような。

172:名無しさん@お腹いっぱい。
13/01/26 13:02:07.76
FreeBSDだと #!インタプリタ にバイナリしか指定できないが、
Linuxだとインタプリタがスクリプトでも動くようだ。

173:名無しさん@お腹いっぱい。
13/01/26 13:06:41.79
BSDはダメだな
ずいぶんと中途半端な意識だな

174:名無しさん@お腹いっぱい。
13/01/26 17:08:04.37
>>172
だから、それはLinuxの機能じゃなくてbashの機能でしょ。

175:名無しさん@お腹いっぱい。
13/01/26 17:11:06.38
_人人人人人人人_
> bashの機能 <
 ̄Y^Y^Y^Y^Y^Y ̄

176:名無しさん@お腹いっぱい。
13/01/26 17:39:24.66
>>174
bashの機能じゃなくてカーネル(システムコール)のexecve(2)の機能なんだけど。

177:名無しさん@お腹いっぱい。
13/01/26 19:52:37.75
URLリンク(git.kernel.org)

178:名無しさん@お腹いっぱい。
13/01/26 23:23:34.63
BSD系って結構厳密みたいだね。
#!/usr/bin/env PATH=/bin:/usr/bin:/usr/local/bin sh
のどこか適当なshを使ってという方法もできないような。

179:名無しさん@お腹いっぱい。
13/01/26 23:31:57.82
それって厳密か?

180:名無しさん@お腹いっぱい。
13/01/27 03:11:09.66
何を厳密といってるのか知らないけど、#!行ではオプションは一つしか指定できない。
↓これはダメ
#!/usr/bin/env PATH=/bin:/usr/bin:/usr/local/bin sh

181:名無しさん@お腹いっぱい。
13/01/27 08:31:23.75
>>180
だから、それはFreeBSDの仕様じゃなくてashの仕様でしょ。

182:名無しさん@お腹いっぱい。
13/01/27 08:38:44.48
_人人人人人人人_
>  ashの仕様 <
 ̄Y^Y^Y^Y^Y^Y ̄

183:名無しさん@お腹いっぱい。
13/01/27 09:16:38.06
>>176
URLリンク(linux.die.net)
The interpreter must be a valid pathname for an executable which is not itself a script.
って書いてあるけど。

>>177
URLリンク(www.tamacom.com) だと
26 if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!') || (bprm->sh_bang))
27 return -ENOEXEC;
となってるので、仕様変えたのかな。

これ、
# cat /bin/aho
#!/bin/baka

$ cat /bin/baka
#!/bin/aho

とループしてたらどうなる?

184:名無しさん@お腹いっぱい。
13/01/27 09:31:47.72
>>183
仕様変えた。Linuxでも古いカーネルだと#!/スクリプトは不可。

#!スクリプトがループしてた場合は単にexecve(2)がエラーになるだけ。
一応ループ判定はしてるみたい。

185:名無しさん@お腹いっぱい。
13/01/27 09:43:22.30
>>183
スクリプトのネスティングが4回程度でエラーになるようになってるから、
ループしてたらそれでエラーになる。無限ループでハマることはない。

186:名無しさん@お腹いっぱい。
13/01/27 10:16:14.90
なるほど、
>>177
25 if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!') ||
26 (bprm->recursion_depth > BINPRM_MAX_RECURSION))
BINPRM_MAX_RECURSIONまでは再帰するのか。
>>183の例では/bin/aho, /bin/bakaの実行を何回も試みてBINPRM_MAX_RECURSIONに
達してやっとエラーか。 ダサッ

187:名無しさん@お腹いっぱい。
13/01/27 10:42:07.89
シンボリックリンクのループ検出と一緒だろ。OSによらず。
2つだけでループしててもMAXに達するまでずっとたどってようやくエラー。

188:名無しさん@お腹いっぱい。
13/01/27 12:47:54.49
そういえばそうだな。でも自己参照くらいはその場でチェックしてもいいだろ。
$ cat /bin/aho
#!/bin/aho

189:名無しさん@お腹いっぱい。
13/01/27 12:52:21.55
その場でチェック()

190:名無しさん@お腹いっぱい。
13/01/27 13:55:52.24
Patches Welcome

191:名無しさん@お腹いっぱい。
13/01/27 14:29:29.40
そもそも自己参照していない正常なスクリプトの方が圧倒的に多いんだから、
自己参照をチェックするとそのオーバーヘッドが、全ての正常なスクリプトにも
負担させられることになって、実行速度がかえって遅くなるかと。

192:名無しさん@お腹いっぱい。
13/01/27 16:42:35.29
ファイルからの読み込み行ってるんだから、スクリプトファイル名の比較の
負荷なんてゴミでしょ。

193:名無しさん@お腹いっぱい。
13/01/27 17:04:30.10
>>192 のプログラマのセンスのなさはわかった。

194:名無しさん@お腹いっぱい。
13/01/27 17:42:33.16
>>193
具体的に解説ヨロシク

195:名無しさん@お腹いっぱい。
13/01/27 17:53:16.99
まずコードを書け、話はそれからだ

196:名無しさん@お腹いっぱい。
13/01/27 18:21:24.09
>>195
だよな
>>193には具体的なコードを示す義務がある

197:名無しさん@お腹いっぱい。
13/01/27 18:25:49.84
>>196
何を言ってるんだ?コードの話をしているお前ら全員だよ

198:名無しさん@お腹いっぱい。
13/01/27 19:34:09.72
>>187
> シンボリックリンクのループ検出と一緒だろ。OSによらず。

シンボリックリンクのループ検出なんてある?
どういった場合に検出する?

199:名無しさん@お腹いっぱい。
13/01/27 19:56:14.74
>>198
$ ln -s hoge /tmp/hoge
$ cat /tmp/hoge
cat: /tmp/hoge: Too many levels of symbolic links

200:名無しさん@お腹いっぱい。
13/02/12 18:33:08.66
URLリンク(d.hatena.ne.jp)
some-command 3>&amp;1 >/dev/null 2>&amp;3 3>&amp;- | less

1番の値が最終的にどこいったのがかわからんのです・・・
1→3→2とコピーされて標準エラー出力になるんじゃないの?

201:名無しさん@お腹いっぱい。
13/02/12 18:46:22.72
>>200
1は/dev/nullだよ。

202:名無しさん@お腹いっぱい。
13/02/12 18:53:12.63
>>200
1は3経由で最終的に2にコピーされて、その状態でsome-command が実行されてる、
で合ってるよ。

その「2にコピーされたもの」はパイプの入力だから、
結果的にsome-commandの標準エラー出力がパイプにつながる。

some-commandの標準出力は >>201 のとおり /dev/nullに捨てられてる。

203:名無しさん@お腹いっぱい。
13/02/12 19:05:35.88
リダイレクトは左から順番に解釈していけば良いよ。
(1) 3は1(標準出力)に向けられる。
(2) 1は/dev/nullに向けられる。
(3) 2は3(標準出力)に向けられる。
(4) 3は閉じられる。
結果として
1は/dev/nullに2は標準出力に向いてる。

204:名無しさん@お腹いっぱい。
13/02/12 20:55:57.35
再度質問です
shの機能で >>200 みたいに だーってリダイレクトが出来るじゃないですか
その文法から「1」が最終的にどこ行ったのか わーって追跡したいんです
出来ますの?勿論ググりましたが、当方馬鹿なのでわかりません
サルでも分かるような回答を強く期待します
僕はこういう小バカにしたような書き方しか出来ませんが、凄く切実に知りたいです
さぁどうぞ↓

205:200
13/02/12 21:09:43.68
うごごごご

206:名無しさん@お腹いっぱい。
13/02/12 21:24:31.15
>>204
> aその文法から「1」が最終的にどこ行ったのか わーって追跡したいんです
ktrace とか truss とか strace ってのはダメ?

207:名無しさん@お腹いっぱい。
13/02/14 11:04:26.66
シェル変数にコマンドを文字列として設定しておいて、それを実行したい。

CMD="printf '%x %x\n'" #これはダメ
$CMD 13 32
を実行して
printf '%x %x\n' 13 32
と同じ出力を得たい。
$CMD 13 32の行は変更不可。

CMD="printf '%x %x\n'"ではダメでした。
CMDにどのような文字列を与えると実現できるでしょうか?
bashの拡張機能を使ってもよいですが、なるべく使わない方向で。

208:名無しさん@お腹いっぱい。
13/02/14 11:09:32.45
お題が不正確でした
> $CMD 13 32の行は変更不可。

$CMD 13 32

を含むシェルスクリプトがある。環境変数としてCMDを与えて
printf '%x %x\n' 13 32
と同じ出力を得たい。
CMDに
#!/bin/sh
printf '%x %x\n' "$@"
というスクリプトのパスを与える方法は思いつきましたが、スクリプトファイルを作成しないで実現したい。

209:名無しさん@お腹いっぱい。
13/02/14 11:44:48.59
>>208
CMD='printf %x\040%x\n'

バックスラッシュが化けるので全角にしたので半角に直してね

210:名無しさん@お腹いっぱい。
13/02/14 13:05:11.46
evalって知ってる?便利だよ

211:名無しさん@お腹いっぱい。
13/02/14 13:12:07.63
>>210
> $CMD 13 32の行は変更不可。

evalも使用不可

212:名無しさん@お腹いっぱい。
13/02/14 14:38:40.47
>>211
CMDの中にeval入れれば行けるだろ

CMD="eval print ..以下略

213:名無しさん@お腹いっぱい。
13/02/16 14:38:00.54
>>212
それでOKでした。

214:名無しさん@お腹いっぱい。
13/02/16 21:58:07.02
>>211
>>211
>>211

215:名無しさん@お腹いっぱい。
13/02/17 00:35:16.20
ももクロはズリネタ探しをしている人には理解出来ないよ

216:名無しさん@お腹いっぱい。
13/02/17 00:51:10.81
awkのprintで
1, print $2
2, print \$2
3. print\ \$2
1、2は2列目て事だと思うけど3てどうなるの?

217:215
13/02/17 01:31:05.17
あれ・・盛大に誤爆ってたwごめん

218:名無しさん@お腹いっぱい。
13/02/17 02:55:22.76
>>214
呼び出すところが変わってないから良いんじゃないの?

219:名無しさん@お腹いっぱい。
13/02/20 21:18:41.67
2chの画像スレ開いて、Ctrl+aでコピーしたのをdl.txtにコピーしておいて
そのカレントフォルダでこれ実行すると、びっくりするほどユートピア
grep -E "(^http|^ttp)" dl.txt |sed -e "s/http/ttp/g; s/ttp/http/g"| wget -A jpg,png,gif -N -i -

220:名無しさん@お腹いっぱい。
13/02/20 21:43:00.53
昔そういう事やってたけど
グロ画像が紛れ込んじゃうからやめたよ
安心してシコシコできない

221:219
13/02/20 21:54:17.39
>>220
それなんだよ...URLのブラックリストとか出来ないかな?まぁ出来ても遅くなりそうだけど

222:名無しさん@お腹いっぱい。
13/02/20 22:04:29.90
ブラックリスト作っておいてgrep -vで除外するくらいかな?
いちいちグロ画像調べてNG登録するのが嫌でね…

223:名無しさん@お腹いっぱい。
13/02/20 22:48:10.03
grepしてからsedですか、そうですか

224:名無しさん@お腹いっぱい。
13/02/21 00:53:50.25
>>221
専ブラ使えよ。
グロってレスがついてたら、モザイクかけてくれたり。

225:名無しさん@お腹いっぱい。
13/02/21 01:03:43.88
>>219
スレとってくんのもwgetでいいだろ。なぜに手動。

226:名無しさん@お腹いっぱい。
13/02/21 10:19:46.09
>>224
>グロってレスがついてたら、モザイク
それ便利そうだな! どこの専ブラ?
うちはかちゅ~しゃ使ってるけど

227:名無しさん@お腹いっぱい。
13/02/21 13:17:14.46
>>220
いやいや、落としたら、シコシコする前に、まず賢者モードで分類とか整理しろよ。

228:名無しさん@お腹いっぱい。
13/02/21 15:56:58.86
>>227
モード切替どうやってするつもりだよ

229:名無しさん@お腹いっぱい。
13/02/21 21:47:15.77
>>226
2chmate

230:名無しさん@お腹いっぱい。
13/02/22 12:12:03.87
シェルスクリプト内でtarアーカイブ化するとき、アーカイブ名に変数を指定したいのですが、
エラーが出てtarが生成されません。なにが間違っているか教えてください。

strArch="~/Desktop/a.tar"
/usr/bin/tar cf ${strArch} 1.jpg 2.jpg 3.jpg
と書くと
/usr/bin/tar: ~/Desktop/a.tar: open 不能: No such file or directory
/usr/bin/tar: Error is not recoverable: exiting now
というエラーが出ます。

一方、
/usr/bin/tar cf ~/Desktop/a.tar 1.jpg 2.jpg 3.jpg
と書くと正常にa.tarが生成されます。

231:230
13/02/22 12:13:52.84
環境はcygwinで、シェルはbashです。

232:名無しさん@お腹いっぱい。
13/02/22 12:40:05.30
>>230
変数の中のチルダは展開されない。
$HOME/Desktop/a.tar
を使え。

233:名無しさん@お腹いっぱい。
13/02/22 13:01:39.80
>>232
できました!
ありがとうございました。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch