シェルスクリプト総合 その25at UNIX
シェルスクリプト総合 その25 - 暇つぶし2ch2:名無しさん@お腹いっぱい。
15/08/14 23:42:43.85 .net
シェルスクリプトの総合スレです。
初心者、学生、アマチュア、プロ、シェルの種類や OS を問いません。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずはテンプレートをご覧下さい。
□A. お約束
1. 特記なき場合は #!/bin/sh がデフォルトです。この場合可搬性に注意し、
 Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。
 bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。
 良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。
2. 質問する前に、まず自分で調べましょう。ただし、
 「聞くは一時の恥、聞かぬは一生の恥」です。積極的に参加しましょう。
3. 相手を侮辱する発言、失礼な発言は差し控え、知的な議論を楽しみましょう。
4. 他者には様々な環境や事情、目的が有る事に留意し、無下に扱う様な発言は
 控えましょう。
□B. お約束の補足
1. Mac OS X では、/bin/sh の実体は bash です。また、一般的に BSD 系 や
 GNU/Linux の方は、/bin/sh がシンボリックリンクですので、注意して下さい。
 ls -l /bin/sh や readlink -e /bin/sh で確かめて下さい。
2. 可搬性については、下記 F.1 を参照して下さい。
3. POSIX については、man 7 standards や下記 F.2 ( の特に Shell & Utilities )
 を参照して下さい。
4. Traditional Bourne Shell とは、UNIX Version 7 から SVR4.2 の /bin/sh を元に
 小さなの改変を加え主に商用 UNIX で残されているものです。( 下記 F.3 参照 )
5. Traditional Bourne Shell で入手しやすい sh は、後期 SVR4.0 から派生し、
 SunOS 5 / OpenSolaris を経た、Heirloom Bourne Shell です。
 SVR4 / SVID3 相当です。同様の Unix utilities も扱っています。
 ( 下記 F.3 参照 )

3:名無しさん@お腹いっぱい。
15/08/14 23:44:39.30 .net
□C. 初心者へのアドバイス
1. シェルスクリプトのことをシェルってゆーな
2. 知らないコマンドが出てきたら man コマンドで調べましょう。
3. UNIX には、シェルスクリプトに便利な小さなコマンドが色々あります。
 apropos ないしは man -k でそれらしい単語による簡単な検索もできます。
4. シェルの構文や内部コマンドは man sh で。英語は LANG=C man shで。
5. 思い通りに動かないときは、まずは #!/bin/sh -x でトレースしましょう。
6. 適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awk / perl / javascript / ruby / python 等、他の (スクリプト) 言語の方が
 適した処理にはそちらを使いましょう。
7. シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題は正規表現スレへ
8. csh / tcsh のシェルスクリプトは推奨されません。理由は下記を参照
 URLリンク(www.speech-lab.org)
9. cat file|すんなハゲ
 a. 詳細は "Useless Use of Cat" UUOC で検索して下さい
 b. 有用な場合も有ります Useful use of cat(1) 英文
  URLリンク(www.in-ulm.de)
□D. シェルスクリプトでよく使うコマンド
1. 制御・条件判定系: [, test, expr, true, false, yes, getopts
2. テキスト処理系: cat, awk, sed, tr, sort, uniq, grep, wc, head, tail, cut,
 paste, comm, join
3. ファイル検索系: find ( スペースなどを含むファイル名を正しく処理するため、
 find は -exec command {} + を推奨。
 他に -print0、xargs は -0 オプションという方法もあるが Solaris 非対応 )
4. ディレクトリ系: basename, dirname
5. 出力系: echo, printf
6. 対話コマンド制御系: expect
7. http / ftp の処理自動化: wget, curl

4:名無しさん@お腹いっぱい。
15/08/14 23:50:19.57 .net
□E. 学習用テキスト
1. Bourne Shell自習テキスト ( 1993年 ) pdf お薦め
 URLリンク(lagendra.s.kanazawa-u.ac.jp)
 (↑サイト消滅かも)
 URLリンク(ayapin.film.s.dendai.ac.jp)
2. UNIX FAQ LIST
 URLリンク(www.nurs.or.jp)
(3. シェルを使おう - 導入からプログラミングまで - ( 2002年 )
 URLリンク(www.netfort.gr.jp) (リンク切れ))
□F. 参考リンク
1. 可搬性関連
 a. autoconf マニュアル 移植性のあるシェルプログラム
  URLリンク(www.gnu.org)
  URLリンク(www.geocities.jp)
 b. Portability talk [Bash Hackers Wiki] 英文
  Obsolete and deprecated syntax も見る価値有り
  URLリンク(wiki.bash-hackers.org)
 c. How to make bash scripts work in dash 英文
  URLリンク(mywiki.wooledge.org)
 d. DashAsBinSh 英文
  URLリンク(wiki.ubuntu.com)
 e. Portable Shell Programming 英文
  URLリンク(www.in-ulm.de)

5:名無しさん@お腹いっぱい。
15/08/14 23:53:33.73 .net
2. POSIX
 The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition 英文
 URLリンク(pubs.opengroup.org)
3. Traditional Bourne Shell 関連
 a. The Traditional Bourne Shell Family History and Development 英文
  URLリンク(www.in-ulm.de)
 b. BourneShell / Where does the Bourne shell live? 英文
  URLリンク(mywiki.wooledge.org)
 c. The Heirloom Bourne Shell 英文
  URLリンク(heirloom.sourceforge.net)
4. マニュアル
 a. The Base Specifications Issue 7, 2013 Edition 英文
  URLリンク(pubs.opengroup.org)
 b. FreeBSD 日本語マニュアル検索
  URLリンク(www.jp.freebsd.org)
 c. JM Project (Japanese)
  URLリンク(linuxjm.sourceforge.jp)
5. FAQ 等
 a. UNIXの部屋 ( 2011年 )
  URLリンク(x68000.q-e-d.net)
 b. Linux JF (Japanese FAQ) Project
  URLリンク(linuxjf.osdn.jp)
 c. Advanced Bash-Scripting Guide 英文
  URLリンク(www.tldp.org)
 d. Unix Programming FAQ 日本語訳 ( 2000年 )
  URLリンク(www.race.u-tokyo.ac.jp)

6:名無しさん@お腹いっぱい。
15/08/14 23:56:30.37 .net
6. ツール
 a. web tool です。Vim syntastic や Emacs の Flycheck でも使えます
  ShellCheck
  URLリンク(www.shellcheck.net)
 b. vim 用 syntastic
  URLリンク(github.com)
 c. checkbashisms も使用してチェック duggan/shlint GitHub
  URLリンク(github.com)
□G. 前スレ
1. ☆シェルスクリプトを勉強するにあたって☆
 スレリンク(unix板)
2. 便利なシェルスクリプト見せろ
 スレリンク(unix板)
3. シェルスクリプト総合 その1
 スレリンク(unix板)
後略。検索して下さい

7:名無しさん@お腹いっぱい。
15/08/14 23:57:59.64


8: .net



9:名無しさん@お腹いっぱい。
15/08/15 00:04:34.32 .net
テンプレは以上です。
漏れや要求があれば各自追記願います。

10:名無しさん@お腹いっぱい。
15/08/15 03:33:33.31 .net
Windows用のはないの?

11:名無しさん@お腹いっぱい。
15/08/15 13:42:11.47 .net
Windows用の何?

12:名無しさん@お腹いっぱい。
15/08/15 14:41:40.48 .net
bashとかTraditional Bourne Shellとか。

13:名無しさん@お腹いっぱい。
15/08/15 17:47:20.99 .net
Cygwin入れれば

14:名無しさん@お腹いっぱい。
15/08/16 00:14:04.65 .net
ping使うやつが移植性無くなるな

15:名無しさん@お腹いっぱい。
15/08/16 21:47:33.05 .net
テキストファイルの分割で教えてください
例えば95行のテキストファイルを10分割するとき、
splitだと10行のファイルが9個と5行のファイルが1個できますが
そういう分割ではなく、10行のファイルを5個、9行のファイルを5個、
というように、等分に近くなるように分割したいです
今はforループで、1行目はファイル1に、2行目はファイル2に、
途中略して10行目はファイル10に、そして11行目はファイル1に、
みたいに仕分けてるのですが、splitの様にファイル先頭からの並び通りに
等分したく思ってます

16:名無しさん@お腹いっぱい。
15/08/16 22:42:11.52 .net
すればいいじゃん。

17:名無しさん@お腹いっぱい。
15/08/16 23:56:46.15 .net
>>14
awk で行番号見ながら出力ファイルを変えれば?
以下は out.0~9 に出力する例。
動かしてみた感じだと perl で真面目にプログラム書いた方が処理速度的には速そうね。
#!/bin/sh
INFILE="$1"
LINE=$(wc -l < "$INFILE")
SPMOD=$(expr $LINE % 10)
SPDIV=$(expr $LINE / 10)
[ "$SPMOD" != 0 ] && SPDIV=$(expr $SPDIV + 1)
awk "BEGIN{I=0; F=\"out.\"I; DIV=${SPDIV}; B=DIV;}
{print \$0 > F; if(NR == B){I++; if(I==${SPMOD}){DIV--;}
F=\"out.\"I; B+=DIV;}}" "$INFILE"

18:名無しさん@お腹いっぱい。
15/08/17 00:28:08.28 .net
GNU coreutils の split コマンドだと -n オプションってのがある。
$ split -n l/10 95lines.txt
# 1/10 じゃなくて l/10 ね(line の l)
ただ、こうなる↓
$ wc -l xa?
12 xaa
9 xab
9 xac
9 xad
9 xae
9 xaf
9 xag
9 xah
9 xai
11 xaj
95 合計

19:名無しさん@お腹いっぱい。
15/08/17 07:22:58.29 .net
>>16
なるほど
まずは処理内容を勉強して、考えます
>>17
なんか微妙な分け方ですね…
GNU版の採用や、96とか97とかになったらどうなるかとか、調べてみます

20:名無しさん@お腹いっぱい。
15/08/23 21:52:42.48 .net
ubuntuです。超初歩の段階なのですが
for file in ${1}/*
do
echo "${file}"
done
上記のコードで
$sh test.sh ~/Desktop/foo
とすると期待通りに
/home/hoge/Desktop/foo/a
/home/hoge/Desktop/foo/b
/home/hoge/Desktop/foo/c
と表示されるのですが
$sh test.sh "~/Desktop/foo"
とダブルクォートでくくると
~/Desktop/foo/*
と表示されてしまいます
でも空白の入ったパスを渡したいときはダブルクォートでくくらないといけませんよね?どうすればいいですか
${1}/*を"${1}/*"としても"${1}"/*としてもうまくいきませんでした

21:名無しさん@お腹いっぱい。
15/08/23 22:25:01.69 .net
>>19
チルダがクォートされているかどうかで違う
$ echo ~/Desktop/foo
/home/hoge/Desktop/foo
$ echo "~/Desktop/foo"
~/Desktop/foo

22:名無しさん@お腹いっぱい。
15/08/23 22:53:07.70 .net
>>19
$ sh test.sh "${HOME}/Desktop/foo"

23:19
15/08/23 23:32:18.17 .net
>>20-21
レスどうもありがとうございます
コード側の問題じゃなくて渡す側の書き方に問題があったんですね
空白を含んでいないパスは期待どおりになりました
が空白を含んでいる場合はやっぱり「*」が展開されずに
$ sh test.sh "/home/hoge/Desktop/foo bar"
または
$ sh test.sh "${HOME}/Desktop/foo bar"
とすると
/home/hoge/Desktop/foo
bar/*
と表示されてしまいます

24:19
15/08/23 23:37:21.98 .net
すみません
${1}/* と "${1}/*" はだめでしたが "${1}"/* としたらうまくいきました
ダブルクォートって難しいです

25:名無しさん@お腹いっぱい。
15/08/24 04:09:11.65 .net
${1}/ 中のファイルに空白を含むファイル名があるとダメ
/home/hoge/Desktop/foo bar/space ship.txt があると
/home/hoge/Desktop/foo bar/space
ship.txt
と2行に渡って表示される

26:名無しさん@お腹いっぱい。
15/08/25 09:55:00.50 .net
そうでもないよ
$ cat test.sh
#!/bin/sh
for f in "$1"/*
do
echo "$f"
done
$ touch "space ship.txt"
$ sh test.sh .
./space ship.txt
./test.sh

27:名無しさん@お腹いっぱい。
15/08/25 11:38:42.71 .net
>>24>>25 と同様そうでもない
対象ディレクトリと対象ディレクトリ内のファイル名の両方にスペースが含まれて
いても問題ない
あと、ソースに渡された引数+"/*"がどう展開されるかの表示を追加
bash-2.05$ cat test.sh
#!/bin/sh
echo -n "arg/* = '"
echo -n "${1}"/*
echo "'"
echo
for file in "${1}"/*
do
echo "${file}"
done
exit 0

28:26
15/08/25 11:40:11.64 .net
bash-2.05$ mkdir "foo bar"
bash-2.05$ cd "foo bar"
bash-2.05$ touch "space ship.txt"
bash-2.05$ touch space_ship.txt
bash-2.05$ cd ..
bash-2.05$ tree
`-+ .
+-- foo bar
| +-- space ship.txt
| +-- space_ship.txt
+-- test.sh
1 directory 3 files
bash-2.05$ sh test.sh "foo bar"
arg/* = 'foo bar/space ship.txt foo bar/space_ship.txt'
foo bar/space ship.txt
foo bar/space_ship.txt
bash-2.05$

29:名無しさん@お腹いっぱい。
15/08/25 12:23:17.60 .net
>>25
>>24 が駄目と言ってるのは ${1} の場合の話だろw
"$1"ならもちろん問題ないよ。

30:名無しさん@お腹いっぱい。
15/08/25 12:29:22.17 .net
bash-2.05 とか古いの使うにも程がある。劣度法度9か何かか?

31:名無しさん@お腹いっぱい。
15/08/25 12:55:51.30 .net
>>28
いや…ファイルの話だよね?割りとどうでもいい流れだけど一応
$ cat test.sh
#!/bin/sh
for f in ${1}/*
do
echo "$f"
done
$ ls
space ship.txt test.sh
$ sh test.sh .
./space ship.txt
./test.sh
$

32:名無しさん@お腹いっぱい。
15/08/25 13:12:03.64 .net
話を理解していない人々が多過ぎる。スルーしよw

33:名無しさん@お腹いっぱい。
15/08/25 13:14:16.88 .net
>>30
その場合、 ${1} に . が代入されるから問題が起きてないだけ。
${1} とか半端な記述せずに "$1"にすること。${1}ってクォートなしの $1 と同じだから。

34:26
15/08/25 13:25:30.87 .net
「"${1}"」ではなくて「${1}」という記述にこだわるならファイル名にスペースが
含まれる場合の常套手段で「IFS」を「改行コード」のみに設定すればOK
bash-2.05$ cat test.sh
#!/bin/sh
IFS_BACKUP=$IFS
IFS=


35:" " echo -n "arg/* = '" echo -n "${1}"/* echo "'" echo for file in ${1}/* do echo "${file}" done IFS=$IFS_BACKUP exit 0



36:33
15/08/25 13:26:35.02 .net
【続き】
bash-2.05$ tree
`-+ .
+-- foo bar
| +-- space ship.txt
| +-- space_ship.txt
+-- test.sh
1 directory 3 files
bash-2.05$ sh test.sh "foo bar"
arg/* = 'foo bar/space ship.txt foo bar/space_ship.txt'
foo bar/space ship.txt
foo bar/space_ship.txt
bash-2.05$

37:名無しさん@お腹いっぱい。
15/08/25 13:30:12.68 .net
>>26 それは改行コード入りファイル名があるからNG

38:名無しさん@お腹いっぱい。
15/08/25 13:58:06.49 .net
このスレの住人にとっては当たり前過ぎる基本的初歩的なことをわざわざ多くの行数使って書き込まれてもなぁ

39:名無しさん@お腹いっぱい。
15/08/30 12:52:52.88 .net
>>13
最近cygwin使ってないんで試してないけど
神が現れてsudo実装してping打てるようになった模様
詳細はcygwinスレ参照
そうそうcygwinのpingって何か違ったんだっけ?

40:名無しさん@お腹いっぱい。
15/09/06 16:40:59.13 .net
引数 $1 が function の中から参照できない
標準では全部グローバルのスコープじゃなかったのか?
グローバル変数に引数をコピーするとグローバル変数は参照できるけど
引数はそういうものなのか?
~/ cat bug.sh
function bug_version {
echo "argument $1 can't handle in function"
}
bug_version
echo "argument $1 can handle out of function"
~/ sh bug.sh arg
argument can't handle in function
argument arg can handle out of function

41:名無しさん@お腹いっぱい。
15/09/06 17:58:01.08 .net
>>38
> 引数 $1 が function の中から参照できない
> 標準では全部グローバルのスコープじゃなかったのか?
【ポイント】
 シェル関数内の位置パラメータと特殊パラメータ「$#」はシェル関数内のみで有効
【説明】
 シェル関数の実行には『引数』を付けることができ、シェル関数内の位置パラメ
 ータと特殊パラペータ「$#」は、一時的にシェル関数の『引数』とその個数で置
 き換えられる。このため、位置パラメーターと特殊パラペータ$#はシェル関数内
 のみで有効。
あと、shの場合「function」は使えない、またシェル関数名の後ろに「()」がないと syntax error
$ cat bug.sh【修正版】
bug_version() { ← shの場合「function」は使えない、シェル関数名の後ろに「()」がないとダメ
echo "argument $1 can't handle in function"
}
bug_version $1 ← シェル関数に引数として渡した例
echo "argument $1 can handle out of function"
$ sh bug.sh
argument arg can't handle in function
argument arg can handle out of function

42:名無しさん@お腹いっぱい。
15/09/06 17:59:13.35 .net
引数はそういうものです
bug_versionを引数無しで呼び出してるので$1には何も設定されません

43:39
15/09/06 18:00:18.46 .net
【訂正】
$ sh bug.sh arg
argument arg can't handle in function
argument arg can handle out of function

44:名無しさん@お腹いっぱい。
15/09/06 19:34:01.02 .net
>>38
まぁ Linux 限定だけど、
function bug_version {
echo "argument $(cat /proc/$$/cmdline | xargs -n1 -0 | sed -n 3p) can handle in function"
}
なんてするといいかも

45:名無しさん@お腹いっぱい。
15/09/06 19:39:35.79 .net
愚かにも引数忘れてた
みんなありがとう
コードが綺麗になった

46:名無しさん@お腹いっぱい。
15/09/09 19:11:24.39 .net
質問です。
grep "aaa\|bbb" はokなのに、grep "aaa\&bbb" はなぜ
だめなんでしょう?

47:名無しさん@お腹いっぱい。
15/09/09 20:10:57.27 .net
>>44
どちらも仕様どおりに正しく動く
何をもってダメという?

48:名無しさん@お腹いっぱい。
15/09/09 20:21:28.99 .net
>>45
私の環境ではこうなります。
$ echo "aaa bbb" | grep "aaa\|bbb"; echo $?
aaa bbb ccc
0
$ echo "aaa bbb" | grep "aaa\&bbb"; echo $?
1

49:名無しさん@お腹いっぱい。
15/09/09 20:25:36.29 .net
>>45
あれれ、「 ccc」入っちゃった。無視してくださいw

50:名無しさん@お腹いっぱい。
15/09/09 20:50:24.67 .net
>>46
だからそれは仕様どおり

51:名無しさん@お腹いっぱい。
15/09/09 20:54:06.69 .net
\|には特別な意味があるけど\&にはないんだよ
単に&と書いたのと同じ

52:39、41
15/09/10 02:49:03.69 .net
>>44>>46
ひょっとすると[grep]コマンドによる『AND検索』の方法(記述)を
『grep "aaa\&amp;bbb"』だと勘違いしていない?
[grep]コマンドによる『AND検索』には『OR検索』のような正規表現による
記述方法『grep "aaa\|bbb"』は存在しないので、つぎの例のように地道
にパイプで繋ぐしかないけど
[grep]コマンドによる『AND検索』の方法
$ echo "aaa bbb" | grep "aaa" | grep "bbb" ; echo $?
aaa bbb
0
$ echo "aaa ccc" | grep "aaa" | grep "bbb" ; echo $? # マッチしないデータ「aaa ccc」の例
1
$
あと、>>44>>46 って >>38 と同じ人?

53:名無しさん@お腹いっぱい。
15/09/10 07:50:58.43 .net
$ grep -E 'aaa.*bbb|bbb.*aaa'
か、GNU grep なら
$ grep -P '(?=.*aaa)(?=.*bbb)'
でもOK。

54:名無しさん@お腹いっぱい。
15/09/10 07:56:54.38 .net
awk 使え awk '/aaa/&&/bbb/'

55:名無しさん@お腹いっぱい。
15/09/10 17:51:40.81 .net
\& なんてどこに書いてあったの

56:名無しさん@お腹いっぱい。
15/09/24 23:16:07.36 .net
宣伝
【POSIX】UNIXプログラミング【BSD】 [転載禁止]&#169;2ch.net
スレリンク(unix板)

57:名無しさん@お腹いっぱい。
15/09/27 16:29:45.68 .net
こんな風なテキストファイルlog.txtがあります
%PART_A%
a11 a12 13
a21 a21 a23
a31 a32 a33
%PART_B%
b11 b12 b13 b14
b21 b22 b23 b24
b31 b32 b33 b24
このように%PART_x%(実はxはAとBがランダムに登場)で区切られながら
数行ずつ出力されているテキストを、値だけ(a11~b24まで)、5列で左詰めの
CSV形式に整形するために、こんなスクリプトを作りました(ほとんどawkですが・・・)
#!/bin/sh
cat log.txt |
awk 'BEGIN{FLG=0}
/%PART_A%/{FLG=1; getline}
/%PART_B%/{FLG=2; getline}
{if (FLG==1) {print $1","$2","$3",0,0"}
else if (FLG==2) {print $1","$2","$3","$4",0"}
}'
期待通り動いてはいるのですが、フラグやgetline周りが、なんか力技?っぽくて
改善の余地があるように思ってます
このような処理をawkで書くときって、どのように書くとよいのでしょう

58:名無しさん@お腹いっぱい。
15/09/27 16:38:38.08 .net
力技でも動いているならそれでいいんじゃない?
この間、似たような事を業務でやったけど考えるの面倒だったから
pasteコマンドでひとつのファイルにして、特定フィールドを読み込む方法にした。
なにぶん、思想が古い年代なもんで複数ファイルを
同時に読み込んであーだこーだするのはCで書きたくなる。

59:名無しさん@お腹いっぱい。
15/09/27 17:34:07.98 .net
きれいでも動かないコードより
きたなくてもちゃんと動作するコードの方がよい
そんな格言なかったっけ?

60:名無しさん@お腹いっぱい。
15/09/27 19:24:41.10 .net
要求仕様通りに動くことが大前提ですな。
コードの可読性を語るとキリが無い。
シェルスクリプトで訳が判らなくなる書き方する人いるけど、ある意味才能としか思えない。

61:名無しさん@お腹いっぱい。
15/09/28 01:10:28.27 .net
過疎ってるけど
awkについて語るスレ $2
スレリンク(tech板)
もありますよ。a11からb24が全部数値で3つまでは確実に値が入ってるなら
awk 'BEGIN{OFS=","};!~/%/{print $1,$2,$3,$4+0,0}'
で済む気がするけど。

62:名無しさん@お腹いっぱい。
15/10/04 19:58:15.31 .net
>>57
きれいでも動かないコードより
きたなくてもちゃんと動作するコードの方がよい
そして、きれいでちゃんと動作するコードが
一番いいのは言うまでもない。

63:名無しさん@お腹いっぱい。
15/10/04 22:53:55.31 .net
正規表現で書くとどうなるんだ?

64:名無しさん@お腹いっぱい。
15/10/06 13:14:00.89 .net
getline回りはsplitで"^(?=\%PART_)"で区切れると楽
下のコードは "^(?=\d)"にするとレス番号だけが行頭で表示され
本文はインデントされる2chですら処理できる
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
my $enc = 'UTF-8';
my ($delimiter, $search);
$delimiter = "^(?=\%PART_)"
GetOp


65:tions ('delimiter|d=s' => \$delimiter, 'search|s=s'=> \$search); my $line = join('', <>); my @lines = split /$delimiter/m, $line; for (@lines) {print if /$search/;}



66:名無しさん@お腹いっぱい。
15/10/13 12:01:58.60 .net
ワイルドカードて全角も扱えるんだね
勝手に半角のみと思い込んでた
自分用メモ
ひらがな: [ぁ-ん]
全角カタカナ: [ァ-ヾ]
半角カタカナ: [ヲ-゚]
全てのカタカナ: [ァ-ヾヲ-゚]
全角数字: [0-9]
全角英字: [a-zA-Z]
全角英数字: [0-z]
全角文字(英数字以外, ひらがな, カタカナ, 漢字, 記号): [、-鶴]
全角文字(英数字, ひらがな, カタカナ, 漢字, 記号): [、-鶴0-9a-zA-Z]
漢字: [一-鶴]

67:名無しさん@お腹いっぱい。
15/10/13 23:33:25.92 .net
[ぁ-ん]と[ん-ぁ]で
・同じ結果→POSIX準拠
・結果が異なる→準拠してない
というのも豆

68:名無しさん@お腹いっぱい。
15/10/15 01:00:25.45 .net
\p{Hiragana}

69:名無しさん@お腹いっぱい。
15/10/16 00:12:27.12 .net
第一感その手のものを使って保守性ケアするよな

70:名無しさん@お腹いっぱい。
15/10/16 13:16:19.20 .net
任意のキーボード・ショートカットを突然入力すると、任意のスクリプトを実行するような技はありますか。
例えば、特定のアプリケーションをアクティブにするスクリプトを書いたとして、それを
Ctrl+Alt+Gで実行してGoogleChromeをアクティブにするとか、そういう事です。
Alt+Tabで一つ一つ切り替えるのはうんざりなんですよね。
スクリプト自体はできてるんですが、それをショートカットと結びつける技が分かりません。

71:名無しさん@お腹いっぱい。
15/10/16 13:35:52.55 .net
WMとかDEの機能使った方がいいんじゃね
シェルスクリプトの話ではない

72:名無しさん@お腹いっぱい。
15/10/16 13:41:08.99 .net
「linux キーボードショートカット カスタマイズ」でぐぐれ
/apps/metacity/global_keybindings/panel_run_dialogとかって情報はすぐ出てくる

73:名無しさん@お腹いっぱい。
15/10/16 16:30:40.14 .net
キーバインド割り当てかaliasを作るかじゃない?

74:名無しさん@お腹いっぱい。
15/10/18 03:08:01.82 .net
だな
w3mなら .w3m/keymap
xmonadなら .xmonad/xmonad.hs に書くような内容

75:名無しさん@お腹いっぱい。
15/10/18 03:29:42.19 .net
busyboxでunicode変換ってどうする?

76:名無しさん@お腹いっぱい。
15/10/19 12:52:16.45 .net
busybox sh に限らず、iconv とかuconvとか入れて使うんじゃない?

77:名無しさん@お腹いっぱい。
15/10/19 14:00:50.57 .net
すみませんが詳しい方のみ回答をお願いします

78:名無しさん@お腹いっぱい。
15/10/19 14:28:46.62 .net
unicodeの何を?何へ?何から?変換するのかもうちょっと具体的に書かないと応える気にならない

79:名無しさん@お腹いっぱい。
15/10/19 15:27:19.76 .net
詳しくないのはどっちだよ
そんなんだから周囲に教えてくれる人が居なくて
2chで質問するハメになるんだよ

80:名無しさん@お腹いっぱい。
15/10/20 00:06:45.98 .net
只のコピペの別人にキレてどうするよ。
わざわざbusybox縛りを入れて珍回答を期待してるのに普通の方法を答えるのもまあ2chらしいが。
っていうかnkfじゃないのな。

81:名無しさん@お腹いっぱい。
15/10/20 07:22:32.22 .net
以下のようなテキストファイルがあるとして
(記載のアルファベットは例であり数字だったりマルチバイト文字だったりします)
AAAAAAAAA
BBBB
CCCCCCCCCC
DDDDDDDDDDD
EEEEEEEEEEE
各1行を2行に増やすことってできますか?
AAAAAAAAA
AAAAAAAAA
BBBB
BBBB
CCCCCCCCCC
CCCCCCCCCC
DDDDDDDDDDD
DDDDDDDDDDD
EEEEEEEEEEE
EEEEEEEEEEE
ループで1行ずつ読んで2行にして出力するくらいしか思いつかなかったのですが
パイプを使ってシンプルにできたりしませんか?

82:名無しさん@お腹いっぱい。
15/10/20 07:41:49.44 .net
>>78
sed p foo.txt

83:名無しさん@お腹いっぱい。
15/10/20 21:45:48.66 .net
>>79
ありがとうございます
こんなに簡単にできちゃった・・・
とりあえずpコマンド調べてみて
変換しない指定で返還前と変換後の2行が出力されるからこうなると理解しました

84:名無しさん@お腹いっぱい。
15/10/20 23:06:19.80 .net
coolだよね

85:名無しさん@お腹いっぱい。
15/10/21 00:43:12.91 .net
>>78を元に戻す方法は?

86:名無しさん@お腹いっぱい。
15/10/21 00:49:57.21 .net
uniq

87:名無しさん@お腹いっぱい。
15/10/21 01:33:11.68 .net
4行並んだら破綻

88:名無しさん@お腹いっぱい。
15/10/21 01:46:20.53 .net
awk NR%2

89:名無しさん@お腹いっぱい。
15/10/21 01:56:17.21 .net
あえてsedで
sed 'N; s/.*\n//'

90:名無しさん@お腹いっぱい。
15/10/21 06:13:41.20 .net
GNU sed 限定
sed -n 1~2p

91:名無しさん@お腹いっぱい。
15/10/21 06:38:20.24 .net
sed 'n;d' だけでいいのにw

92:名無しさん@お腹いっぱい。
15/10/21 07:02:03.89 .net
尊い

93:名無しさん@お腹いっぱい。
15/10/22 08:26:25.71 .net
そうだな
現代でも使える場面のあるsedは凄い

94:名無しさん@お腹いっぱい。
15/10/22 12:24:50.15 .net
sedでutfの変換テーブル書いたらどの位の速度で動くものだろうか?

95:名無しさん@お腹いっぱい。
15/10/22 14:32:56.99 .net
pdfファイルやExcelファイルを文字検索したいのですが
スマートな方法はありませんか?
ファイル変換しないといけないでしょうか?

96:名無しさん@お腹いっぱい。
15/10/22 15:27:18.78 .net
変換しないとだめです
pdftotext あたりで標準出力に吐かせて grep とか

97:名無しさん@お腹いっぱい。
15/10/22 15:55:01.58 .net
こんな感じになりました
pdftotext hoge.pdf - | grep aaa
pdftotextでググったらこのページが
URLリンク(www.clear-code.com)
Excelはssconvertを使えばいいようですね

98:名無しさん@お腹いっぱい。
15/10/22 22:52:20.38 .net
☆ 日本の核武装は早急に必須ですわ。☆
総務省の『憲法改正国民投票法』、でググってみてください。
日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、日本人の悲願である
改憲の成就が決まります。皆様方、必ず投票に自ら足を運んでください。お願い致します。

99:名無しさん@お腹いっぱい。
15/10/27 08:43:35.49 .net
cat file|した方がいいことも有るぞハゲ
ってことかな?
大きなテキストファイルをawkで処理するときにcatで投げ込むのと、ファイル読み込みするのどっちが速いか比較 - カメニッキ
URLリンク(tapira.hatenablog.com)
大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog
URLリンク(d.hatena.ne.jp)

100:名無しさん@お腹いっぱい。
15/10/27 09:02:14.04 .net
>>96
それって Linux OS でマルチコアで出力先が SSD の場合にだけ
速くなるかもしれないってオチだったような

101:名無しさん@お腹いっぱい。
15/10/27 11:16:32.98 .net
でも実際速くなったんでしょ?

102:名無しさん@お腹いっぱい。
15/10/27 12:25:26.58 .net
今の時代マルチコアしかないような気がするんだけど・・・

103:名無しさん@お腹いっぱい。
15/10/27 12:54:33.20 .net
今の時代Linuxしかないような気がするんだけど・・・
今の時代SSDしかないような気がするんだけど・・・

104:名無しさん@お腹いっぱい。
15/10/27 17:55:11.78 .net
>>98
他の環境だとリダイレクトの方が速かったよ

105:名無しさん@お腹いっぱい。
15/10/27 18:45:52.06 .net
それは反論になってない

106:名無しさん@お腹いっぱい。
15/10/27 23:01:18.38 .net
C言語で書いたほうが早かったよ

107:名無しさん@お腹いっぱい。
15/10/27 23:24:17.69 .net
>>103
その書いたやつを見せてください。ぜひとも参考にしたいです

108:名無しさん@お腹いっぱい。
15/10/28 05:47:50.83 .net
system("cat file | command");

109:名無しさん@お腹いっぱい。
15/10/28 06:27:57.97 .net
同じスクリプトでもcatを使うと電解コンデンサがライトアップしやすいよw

110:名無しさん@お腹いっぱい。
15/10/28 07:30:41.83 .net
windowsでいうINIファイルのような、設定情報を格納したファイルを作ろうとしています。
入出力パスとか、オプションのon/off(1か0か)などを書いておき、その設定ファイルを
シェルスクリプト上から読み込んで、処理内容に反映して実行することを想定しています
こういった処理をする場合、業界の一般的な様式みたいな決まりってありますか。
また、いろいろな実装方法が考えられますが、どのようなコマンドで実現するのが適切でしょうか。
busyboxに入ってそうなコマンドが一通り動ける環境を想定しています。

111:名無しさん@お腹いっぱい。
15/10/28 08:21:07.49 .net
>>107
あなたはどんな業界の人ですか?

112:名無しさん@お腹いっぱい。
15/10/28 10:38:06.95 .net
設定ファイル自体をシェルスクリプトにして . しちゃうのが楽じゃね
RedHat系なら /etc/sysconfig/ 以下、Debian系なら /etc/default/ 以下を参考に

113:名無しさん@お腹いっぱい。
15/10/28 11:48:34.73 .net
またbusyboxの人か

114:名無しさん@お腹いっぱい。
15/10/28 11:54:18.98 .net
こうするのが楽とかじゃなくて業界標準でお願いします

115:名無しさん@お腹いっぱい。
15/10/28 12:20:06.26 .net
普通にINIファイル形式でいい
シェルスクリプトから呼べば(実行すれは)環境変数として設定されるようになる

116:名無しさん@お腹いっぱい。
15/10/28 12:21:45.13 .net
ポイントは読み込むんじゃなくて実行させるってこと
readしてexportするんじゃなくてそのまま実行して環境変数に設定する

117:名無しさん@お腹いっぱい。
15/10/28 13:28:25.07 .net
実行はしたくないです。インジェクションされます。。

118:名無しさん@お腹いっぱい。
15/10/28 13:35:42.31 .net
セキュリティが心配なら標準とは対極の方向に向かうべきだろアホか

119:名無しさん@お腹いっぱい。
15/10/28 15:00:41.96 .net
>>109
>>112
>>113
107です、ありがとうございました。ファイルを読ませることしか頭にありませんでしたので、聞いてよかったです。
その方式で、スクリプトの冒頭で設定を担当するコードを実行するようにします。

120:名無しさん@お腹いっぱい。
15/10/28 22:16:32.33 .net
質問してるくせに偉そうだな

121:名無しさん@お腹いっぱい。
15/10/28 23:07:56.69 .net
>>117
具体的にどこが偉そうなの?どこがカンに障るの?

122:名無しさん@お腹いっぱい。
15/10/29 04:20:02.34 .net
教えを乞うてるくせにお腹いっぱいなのが気にくわない。

123:名無しさん@お腹いっぱい。
15/10/29 06:23:24.26 .net
unixの管理をしています。
ユーザーはソフトのインストール禁止ですが、
最近、ユーザーでも自分のホームフォルダーにソフトをコピーし、
X権限をすることによってソフトが実行できてしまうことが判明しました。
これはOSのセキュリティーボールではないのでしょうか?
ユーザーのフォルダーではたとえX権限がされていても
実行できないようなおすすめのunixって何ですか?
必要ならカーネルにバッチを当てる方法も、やもうえません。

124:名無しさん@お腹いっぱい。
15/10/29 07:39:00.78 .net
>>119
お腹いっぱいとは?

125:名無しさん@お腹いっぱい。
15/10/29 08:29:26.09 .net
名前じゃね

126:名無しさん@お腹いっぱい。
15/10/29 09:02:26.07 .net
シェルスクリプトっていう性質上、ある程度仕方ない面もあるけども
最近は余りにもスレ違いな話題が多くないか?

127:名無しさん@お腹いっぱい。
15/10/29 10:15:07.66 .net
スレ違いでも板違いでもかまってもらえるからな

128:名無しさん@お腹いっぱい。
15/10/29 11:15:37.67 .net
>>120
お前脳みそついてなくてUnix使ってんのか?
Windowsでも使ってろよ
希望してることができるから

129:名無しさん@お腹いっぱい。
15/10/29 12:04:46.30 .net
コピペに釣られんな

130:名無しさん@お腹いっぱい。
15/10/29 22:18:02.02 .net
>>123
>>123

131:名無しさん@お腹いっぱい。
15/10/30 11:01:24.94 .net
>>124
軌道修正したレスができるなら相手して構わないんだけど、自演が疑われるような受け売り回答って不要だよな。

132:名無しさん@お腹いっぱい。
15/11/01 13:31:00.57 .net
${@:+"$@"}という変数の記法がわかりません
たとえば/usr/bin/sensible-browserでは
/usr/bin/x-www-browser ${URL:+"$URL"}
のように使われています
なぜこう書くのかヒントをいただけたら…

133:名無しさん@お腹いっぱい。
15/11/01 14:16:24.02 .net
man bash
Parameter Expansion の項(日本語訳では パラメータの展開 の項)
を見るよろし。てか�


134:エがしょっちゅう見直すとこだわソレw



135:名無しさん@お腹いっぱい。
15/11/02 12:13:01.41 .net
ポータビリティーの話( "$@"; が 何も無し にならないで、""; と解釈されてしまう対策の事 )が参考になるかな
What does ${1+"$@"} mean?
URLリンク(www.in-ulm.de)
Autoconf
URLリンク(www.geocities.jp)

# 例えば、 $URL が未定義や、ヌルなら
/usr/bin/x-www-browser "$URL"
# は、この様な意味になるが
/usr/bin/x-www-browser ""
/usr/bin/x-www-browser ${URL:+"$URL"}
# は、こうなる
/usr/bin/x-www-browser

test.sh 引数の数に違いが出る(bash の方で理解しやすいので #!/bin/bash で)
#!/bin/bash -vx
foo="hoge"
bar=""
bash -vxc 'echo "$#, " "$@"' "dummy" "$foo"
bash -vxc 'echo "$#, " "$@"' "dummy" "$bar"
bash -vxc 'echo "$#, " "$@"' "dummy" "$baz"
bash -vxc 'echo "$#, " "$@"' "dummy" ${bar:+"$bar"}
bash -vxc 'echo "$#, " "$@"' "dummy" ${baz:+"$baz"}

136:129
15/11/02 14:09:15.67 .net
>>130
アドバイスありがとうございます。自分もよくそこ見ます
環境はlinuxのbashなのですが、"$@"と書いておけば
${@:+"$@"}と結果的に同じになるはずなのに
わざわざ後者のように書くのはどうしてかなと疑問に思った次第です

137:129
15/11/02 14:12:02.34 .net
>>131
有益な情報ありがとうございます
なるほど"$@"が""になってしまうことがあるためなのですね
違いを確認するためのスクリプトまで用意していただいて感謝です
おかげで長い間疑問だったことが氷解しました
/usr/bin/sensible-browserは、#!/bin/shですし
ポータビリティを十分に考えて作られているわけですね
なぜAdobeのacroreadなどでも使われているか納得できました
とっても勉強になりました

138:131
15/11/03 18:32:53.39 .net
>>133
> ポータビリティを十分に考えて作られているわけですね
/usr/bin/sensible-browser は、Debian 系で使われているスクリプトのようなので
dash で動けば十分でしょう
ポータビリティのサイトは参考になるかと貼りましたが、${1+"$@"} と違って
/usr/bin/x-www-browser ${URL:+"$URL"} の場合、関係無いかと思います
念の為 dash 等で内容がヌルの場合に、"$URL" と、 "$@" で展開の結果に違いが有る事を、強調しておきます
LANG=C PAGER='less -p "Special Parameters"' man dash
> @   Expands to the positional ...略... If there
> are no positional parameters, the expansion of @ generates
> zero arguments, even when @ is double-quoted.

139:名無しさん@お腹いっぱい。
15/11/04 10:19:47.91 .net
ADB shellを使ってるのですが.shで保存したadbのスクリプトを順番に実行させることって可能ですか?
例えばダブルクリックした時点で1.shが動いて~10秒後に2.shを動かして~というような感じにしたいです。
お力貸していただけると幸いです。

140:名無しさん@お腹いっぱい。
15/11/04 12:50:56.08 .net
ADB shellを実行するのがWindowsかlinuxによってバッチかシェルスクリプトかでわかれるが、
最初に/data/local/tmpあたりに転送して、chmodして、それをwait含めて実機で実行するのが
良いんじゃないの。
何をやりたいのか書いてないのでアレだが、操作する側で10秒開けるのか、実機で10秒ウェイトするのか。
あと、なぜ10秒あける必要があるのか、10秒後までに実行した端末で何が起きているのか、
その判定は必要なのか、などを考える必要があるし、
さらには泥のことをよく理解できてないオッサンたちが、こういう話題は、ここではスレチじゃね?
と煽ってくるので、飛来するオッサンたちを黙らせる技術も必要とされる

141:名無しさん@お腹いっぱい。
15/11/04 13:12:49.86 .net
すみません 記述が足りてないようでした。
現在はwindowsでbatファイルを利用してuwscというフリーソフトを使って1.batを起動させて~10秒後に2.batといった具合にやってます。
最近linuxでも開発を始めたいと思い同じようなことがしたいです。
シェルスクリプトでwindowsでやってるuwscのような制御ができないかなぁと思って質問させていただきました。
そんなめんどくさいことするよりlinuxならこのフリーソフト使って制御しとけみたいなのがあれば
教えていだだけると幸いです。

142:名無しさん@お腹いっぱい。
15/11/04 13:15:27.82 .net
>uwscというフリーソフトを使って1.batを起動させて~10秒後に2.batといった具合に
この10秒後に、という処理自体をbatでやればいいんじゃないの?
なぜuwscを挟む必要があるの?

143:名無しさん@お腹いっぱい。
15/11/04 13:29:28.23 .net
>>138 おっしゃる通りなのですがcallを使って次のbatを呼び出すことよりも先にツールを使って呼び出すことを覚えてしまったもので・・・
独学でやってるうえに無知な状態からまだ2ヶ月くらいしか経ってないものでこのスレのレベルの方からしたら程度が低い質問かもしれませんが他に聞けるような環境がないもので;;

144:名無しさん@お腹いっぱい。
15/11/04 13:33:00.98 .net
あとは、何をやりたいのか具体的に書くしか
ちなみにゲームの自動制御とか、その手の話だったら俺は降りる

145:飛来したオバハン
15/11/04 13:33:27.01 .net
アンタ泥とかwindowsとかイタチじゃないの?

146:名無しさん@お腹いっぱい。
15/11/04 17:24:19.98 .net
PATH の dirctory に無いスクリプトは、相対、絶対パスで起動するか、PATH に追加する
例えばカレントディレクトリのスクリプトは、
./script.sh
で起動出来る
ダブルクリックで起動するには、 .desktop ファイル作る
#!/bin/sh
./1.sh
sleep 10
../2.sh
/home/username/bin/3.sh
PATH="/home/username/bin:$PATH"
4.sh
PATH=".:$PATH"
1.sh

147:名無しさん@お腹いっぱい。
15/11/04 17:24:50.70 .net
又は、android 上で launcher.sh を書いておいて起動する
それをアプリから起動するなら、GScript Lite とか使うんや。よー知らんけど
#!/system/bin/sh
./1.sh
sleep 10
./2.sh
ついで
@echo off
call 1.bat
ping localhost -n 11 > nul
call 2.bat

148:名無しさん@お腹いっぱい。
15/11/04 21:13:41.29 .net
みなさんありがとうございました。すこし足がかりが得られました。
やっぱりlinuxのほうが軽くて動作も安定してる感じなのでこれからはlinux中心にデバッグを行っていけたらと思います。

149:名無しさん@お腹いっぱい。
15/11/08 19:54:14.49 .net
echoで\tを出力してるんだけど
raspbianだとTABに置き換わってるんだけど
Sientific Linuxだと\tのままなんだけど何でかわかる?
シェルスクリプトをそのまま持っていって実行したら
そんな感じになってた・・・

150:名無しさん@お腹いっぱい。
15/11/08 20:08:08.87 .net
シェルスクリプトと違って、シェルの話だと思う
echo の違いではない?
man dash
echo [-n] args...
If any of the following sequences of characters is encountered
during output, the sequence is not output. Instead, the specified
action is performed:
man bash
echo [-neE] [arg ...]
-e オプションを指定した場合、以下に示す、バックスラッシュの
エスケープ文字が解釈されるようになります。

151:名無しさん@お腹いっぱい。
15/11/08 20:14:18.70 .net
シェルスクリプトのポータビリティーの話とも言えるか...
訂正

152:名無しさん@お腹いっぱい。
15/11/08 20:37:50.28 .net
ありがとうございます
確か実装したときにecho -eオプションは使っていたのですが
raspbianの/bin/shで実行すると
echo -e "test\ttest"

-e test test
になってしまっていろいろ試した挙句
-eいらないじゃんってことになったのを思い出しました



153:。は双方とも/bin/shを使っているのですが 上記のようになるのはraspbianの/bin/shだけで /bin/bashを使うと双方とも期待したとおりの結果になりました どこかのデストリのいずれかのシェルが 実は利用者が意識してるもの(パスが示すもの)と違うというのを 見た覚えがあるのですがraspbianの/bin/shだったかは思い出せません 継続して調べてみますが取り急ぎありがとうございました



154:名無しさん@お腹いっぱい。
15/11/08 22:14:22.18 .net
echo じゃなくて printf 使うとか
printf 'TAB\tTAB\n'
# 少なくとも dash/bash/zsh では printf は shell の builtin function
そういや、ファイルの中に
-n
だけの行があって、
cat hoge.txt | while IFS= read str
do
echo "$str"
done
ってしたらその行が出力されなくてハマったことがあった…

155:名無しさん@お腹いっぱい。
15/11/09 12:53:41.77 .net
>>149
どうやって回避したの?参考までに知りたい

156:名無しさん@お腹いっぱい。
15/11/09 18:25:32.86 .net
え? 単に printf '%s\n' "$str" ってしただけだよ

157:名無しさん@お腹いっぱい。
15/11/09 22:29:31.56 .net
echoはposixでその動作が決まってるわけじゃないから
移植性重視ならprintf安定
とorilyに書いてあった

158:名無しさん@お腹いっぱい。
15/11/11 18:21:45.18 .net
1週間位試行錯誤するもうまくいかないから、ここで必要質問しようと思ったら
単にファイル名にスペースが入っていただけだった
風俗行って頭をすっきりしてます

159:名無しさん@お腹いっぱい。
15/11/11 19:33:08.21 .net
それは書き込まなくてよかったんじゃないか

160:名無しさん@お腹いっぱい。
15/11/12 14:52:38.27 .net
複数ファイルのダウンロードアルゴリズムについて教えてください
今シェルスクリプトを作ってテキストファイルに書かれてある
URLからファイルをダウンロードしています
早くダウンロードしたいため多重(多重度は回線の帯域などを考慮して3~15で任意で設定)で
ダウンロードしていますが全体の終了時間を早めたいため
ファイルサイズでソートして大きいファイルからダウンロードしています
ただこの方法だと初めの方に大きいファイルばかりダウンロードするため
成果が上がってるように見えません
またもっと効率のよい方法があるのではとも思っています
お勧めのダウンロード順(を求めるアルゴリズム)があれば教えてください
なおちょっとしたシェルスクリプトは書いていますが
やってることは以下のコマンドと大差はありません
xargs -P 10 -n 1 wget -nv -c < downlist.txt
私のほうで考えられるのはたとえば10多重の場合
大きいものからを5多重で
小さいものからを5多重で
順にダウンロードすることくらいでした
でもこの方法だと全体のダウンロード完了が
遅くなる可能性があると思います

161:名無しさん@お腹いっぱい。
15/11/12 15:11:44.91 .net
なんで大きいファイルから始めると全体の終了時間が早くなるの?

162:名無しさん@お腹いっぱい。
15/11/12 15:27:23.69 .net
ちょっとうまく説明できませんが
大きなファイルは時間がかかるので
複数ファイルを多重でダウンロードしても
最長時間になる可能性があるためです
たとえば100MB、50MB、40MB、30MB、10MBのファイルを2多重でダウンロードするとき
以下のようにすればそれぞれ平均化されるため
1つめ:100MB→10MB
2つめ:50MB→40MB→30MB
なお以下のようになるのは最悪なパターンだと思います。
1つめ:100MB→50MB
2つめ:40MB→30MB→10MB
全体の終了時間が短くなる想定です
また当然ダウンロード速度は一定ではないため
特定のファイルに時間がかかった場合
小さなサイズのファイルだと調整がしやすいというのもあります
1つめ:100MB→30MB→10MB
2つめ:50MB(時間がかかった)→40MB
実際はスクリプト内でpsコマンドで多重度は監視しており
whileでループしながらダウンロードしているため
そのあたりの調整は楽にやれます

163:名無しさん@お腹いっぱい。
15/11/12 15:28:52.53 .net
例えば他のファイル全部の合計より大きなファイルが一つある場合、
この大きなファイルのダウンロードを最初からスタートさせれば
全体ダウンロード時間はこのファイルのダウンロード時間になるけど、
この大きなファイルのダウンロード開始を遅らせると
全体ダウンロード時間もそれだけ長くなることになるってことだよね

164:名無しさん@お腹いっぱい。
15/11/12 15:31:56.60 .net
>>158
そのとおりです
(大きなファイルはクリティカルパスになりえるってことです)

165:名無しさん@お腹いっぱい。
15/11/12 16:43:29.68 .net
>>155
> ただこの方法だと初めの方に大きいファイルばかりダウンロードするため
> 成果が上がってるように見えません
この場合の成果とはより短い時間で完了することであるわけだが
大きいファイルを先に転送すると短い時間で済む筈だったが実際には逆で
より長い時間掛かってしまうから何とかしたい、ということですか?

166:名無しさん@お腹いっぱい。
15/11/12 17:51:07.33 .net
俺の予想では、プログレスバー的なのを表示したいけど、
大きいファイルが先だとはじめはなかなか進まないってことじゃないかな。
どんなコマンドでダウンロードしてるか知らないけど、
たいてい転送バイト数を出力できるはずだから、
頑張って出力を解析して計算すればいいかと。
あるいは手元のファイルサイズを監視したほうが早いか。

167:名無しさん@お腹いっぱい。
15/11/12 17:59:30.65 .net
でも質問はより効率のよダウンロード順(を求めるアルゴリズムだぜ

168:名無しさん@お腹いっぱい。
15/11/12 18:33:07.59 .net
max procが10なら、大きいファイルから10個を多重でwgetする。
その時、残りのファイルのダウンロード順はまだ決めない。
その10個のwgetのうち、どれか先に終了したもの(ファイルサイズ最小のもののことが多いがネット環境によりそうとは限らない)
について、その時点で残りのファイルのうちサイズ最大のものを割り当てて
ダウンロードさせる。
以下、残りファイルがなくなるまで繰り返し。

169:名無しさん@お腹いっぱい。
15/11/12 20:25:10.34 .net
厳密な重さのわからないナップサック問題って感じだな。
ダウンロード時間があらかじめ分かっていたとしてもとても難しい問題。
数学苦手なのでテキトーに聞き流してもらえると助かるが、多分 NP hard って呼ばれる問題と
同等で、全通り試さないと厳密解は得られないんじゃね?
現実的には >>163 の言う貪欲法(greedy algorithm)的な?アルゴリズムが一番だろうな。

170:名無しさん@お腹いっぱい。
15/11/12 22:52:33.75 .net
複数のファイルが全部同じサーバーにあるのかとか、別々だとしても
自分側のバンド使い切っていないかとか、もっと条件詰めないと
そもそも議論出来ない気がするけど。

171:名無しさん@お腹いっぱい。
15/11/13 02:37:34.17 .net
多重ダウンロード禁止

172:名無しさん@お腹いっぱい。
15/11/13 02:48:29.59 .net
分割ダウンロード禁止

173:名無しさん@お腹いっぱい。
15/11/13 12:04:00.88 .net
エロ画像ダウンロード禁止

174:名無しさん@お腹いっぱい。
15/11/13 12:06:28.52 .net
\(^o^)/

175:名無しさん@お腹いっぱい。
15/11/13 23:16:03.31 .net
むしろ、トラフィックを監視して、一定以下になったらwget開始するスクリプトじゃ駄目なの?

176:名無しさん@お腹いっぱい。
15/11/14 00:11:59.24 .net
回線異常で止まった時にさらに追い討ちかけるのか

177:名無しさん@お腹いっぱい。
15/11/14 00:39:23.96 .net
ん、ヒントにならなかったか
ファイルを分割してダウンロードすればいい

178:名無しさん@お腹いっぱい。
15/11/15 12:35:05.13 .net
>>171
異常だったらtcp二階建てとかしてない限りロストしてるんだから
どんどん長くなるタイムアウトをボケっと待ってたって仕方がないじゃん
むしろ定期的に試行するようにしたほうが復旧を即感知できるんじゃないか?

179:名無しさん@お腹いっぱい。
15/11/19 07:18:13.65 .net
ルート所有のテキストファイルに、テキストを追加するために以下のコマンドを
実行するのですが、許可がないとはねられます。パスワードを入力しろ、も出て
きません。
実行者はもちろん、visudoでUSER ALL=(ALL) ALLの権限を与えられています。
$sudo echo "abc" >> /path/a.txt
bash: /path/a.txt: 許可がありません
何が問題なのでしょうか?

180:名無しさん@お腹いっぱい。
15/11/19 07:28:16.93 .net
sudo コマンドが >>/path/a.txt を持って行ってしまうのが問題(だと思う)
sudo sh -c 'echo "abc" >> /path/a.txt'

181:名無しさん@お腹いっぱい。
15/11/19 07:30:35.56 .net
174です。
ぐぐったら答え書いてありました。失礼しました。
最初のechoだけsudoで評価されて、リダイレクトはそうじゃないと。

182:名無しさん@お腹いっぱい。
15/11/19 09:35:05.07 .net
>>175
さんくすです。なるほど。
ググり先を参考に、evalを使いました。
また、引数が複数の場合も含めて、スクリプトにしました。
パイプを使わない分、>>175 さんのほうがスマートですね。
for i in "$@"; do
eval echo $"$i" | sudo tee -a /path/a.txt
done

183:名無しさん@お腹いっぱい。
15/11/19 09:36:39.66 .net
まちがった。
>ググり先を参考に、evalを使いました。
evalじゃなくて、teeだった。すんません

184:名無しさん@お腹いっぱい。
15/11/19 13:15:22.39 .net
ググると、これらはよく見る様になりました
sudo sh -c 'echo "hoge" > "teki tou"'
echo hoge | tee "teki tou" >/dev/null

他の解決方法を考えてみました
# /dev/null 反対
echo hoge | sudo sed -ne w"teki tou"
# tee の様にファイル名を引数で受け取る
echo hoge | sudo sh -c 'cat > "$0"' "teki tou"
# pipe は無しの方向で
sudo sh -c 'echo "hoge" > "$0"' "teki tou"

185:名無しさん@お腹いっぱい。
15/11/19 22:35:50.88 .net
>>179
スレ違い
というかシェルスクリプトにすれば問題ないのに

186:名無しさん@お腹いっぱい。
15/11/20 13:29:04.21 .net
どういう事?
スクリプトで使う要点の一行を書くのは、このスレでなくともよく有る事では?
sudo を使っていてスクリプト向けの行ではないって事かな?

187:名無しさん@お腹いっぱい。
15/11/20 13:42:47.00 .net
>>181
違うよ。
リダイレクトを含めてスクリプトに書いておけば
sudoで(リダイレクトの)問題が起きないという意味。

188:名無しさん@お腹いっぱい。
15/11/20 13:54:47.85 .net
なんでスレ違い?

189:名無しさん@お腹いっぱい。
15/11/20 14:14:40.64 .net
ラベルが低いから。

190:名無しさん@お腹いっぱい。
15/11/20 14:38:57.72 .net
要点を貼るのはいいんだが
スクリプトの意図がよくわからない

191:名無しさん@お腹いっぱい。
15/11/20 19:37:14.93 .net
自演くさっ

192:名無しさん@お腹いっぱい。
15/11/20 22:49:21.30 .net
引数を元に関数の中{と}の中を表示するコマンドありませんか?
test.txt
int main()
{
printf("\n");
}
int hoge()
{
モジモジ
文字文字
}
void pyo()
{
もじもじ
}
--------------
$コマンド test.txt hoge
モジモジ
文字文字

193:名無しさん@お腹いっぱい。
15/11/21 00:03:09.77 .net
無い

194:名無しさん@お腹いっぱい。
15/11/21 00:06:00.44 .net
じゃ、GNU grep で。
#!/bin/sh
grep --null-data -Po "(^|\n).* $2\(.*?\)(.|\n)*?{(.|\n)*?\n\K(.|\n)+?(?=\n?})" "$1"

195:名無しさん@お腹いっぱい。
15/11/21 00:15:34.13 .net
>>187
ありません
というか、何のためにそういうコマンドが必要か書いた方が
的確なアドバイスもらえる可能性高そう

196:名無しさん@お腹いっぱい。
15/11/21 00:18:18.23 .net
>>189
保守性ゼロ、使い回せる可能性ゼロのいい見本だな

197:名無しさん@お腹いっぱい。
15/11/21 00:48:31.94 .net
いいんじゃない、それで

198:名無しさん@お腹いっぱい。
15/11/21 00:52:28.46 .net
>>189
できました、ありがとうございます!
>>190
目的は外部ファイルにある関数を調べたかったのでcatで連結して
一括で調べたかっただけなのです…

199:名無しさん@お腹いっぱい。
15/11/21 01:00:24.01 .net
>>193
え、できたのw ネタのつもりで書いたのにw
まぁ真面目な話、関数内にブロックがあったら途中でちょん切れるので気をつけて。

200:名無しさん@お腹いっぱい。
15/11/21 01:04:07.86 .net
>>193
if文とか無いの?

関数の中に
}
が有れば、そこで切れると思うよ

201:名無しさん@お腹いっぱい。
15/11/21 01:05:28.85 .net
かぶってた

202:名無しさん@お腹いっぱい。
15/11/21 01:12:31.11 .net
きちんとインデントされていて、関数ブロックの終端が必ず
"\n}" である、という条件なら以下で
grep --null-data -Po "(^|\n).* $2\(.*?\)(.|\n)*?{(.|\n)*?\n\K(.|\n)+?(?=\n})" "$1"

203:名無しさん@お腹いっぱい。
15/11/21 01:26:46.64 .net
indent(1) と組み合わせればどうか

204:名無しさん@お腹いっぱい。
15/11/21 02:25:44.08 .net
tag作れよ

205:名無しさん@お腹いっぱい。
15/11/21 17:10:42.13 .net
sedならどうなの?

206:名無しさん@お腹いっぱい。
15/11/21 18:12:48.25 .net
GNU版grep2.5.4で「『条件A』または『条件Bかつ条件C』」という指定をするにはどうすればよいのでしょう
例えば、以下のようなテキストで
111
aaa
222
bbb ~ ccc ~
bbb ~ ddd ~
「aaa」または「bbbかつccc」だけ抜き出して
aaa
bbb ~ ccc ~
を抜き出したいです
grep aaa sample.txt
grep -e bbb -e ccc sample.txt
として、個別の条件で出力できるところまでは分かったのですが、
テキストに出てくる順番も重要なので、何とかうまくできないかと思ってます
それともawkとかを使う必要があるのでしょうか…

207:名無しさん@お腹いっぱい。
15/11/21 18:21:02.93 .net
こんなんでいいんじゃない
grep -E 'aaa|bbb.*ccc|ccc.*bbb' a.txt

208:名無しさん@お腹いっぱい。
15/11/21 18:27:53.77 .net
>>202
できました
「bbb.*ccc」「ccc.*bbb」という書き方が思いつきませんでした
ありがとうございました

209:名無しさん@お腹いっぱい。
15/11/21 18:57:13.66 .net
関数の内部を切り出すような処理は
yacc(よく知らないんだけど)なんかは関係ない?使えないの?

210:名無しさん@お腹いっぱい。
15/11/22 19:30:02.70 .net
ファイルのリネームについてご教授ください
01.mp4
02.mp4

25.mp4
という動画ファイルがあります
それとは別のテキストファイル (List.txt) があり、内容は
orange 01「みかん」
orange 02「ぽんず」

orange 25「かんきつ」
動画ファイルを、テキストファイルから取得した文字列で
リネームしていきたいですが良い方法を知りたいです
sedやawkでも構いません
よろしくお願いします
環境はMac El Capitanです

211:名無しさん@お腹いっぱい。
15/11/22 20:11:25.81 .net
>>205
for i in {01..25}
do
mv $i.mp4 $(grep $i List.txt).mp4
done

212:名無しさん@お腹いっぱい。
15/11/22 20:56:26.91 .net
>>206
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
というメッセージエラーで上手くいかなかったです
List.txtの空白スペースに対応してなかったようで
orange 01「みかん」→ orange01「みかん」にしておくと
うまくいきました

213:名無しさん@お腹いっぱい。
15/11/22 20:57:02.29 .net
ありがとうございます

214:名無しさん@お腹いっぱい。
15/11/23 10:43:36.03 .net
常にダブルクォートを心がけること

215:名無しさん@お腹いっぱい。
15/11/23 14:52:02.86 .net
>>187>>200
私はsedでこういう使い方なら使用度高いな。
ただCの関数の抜き出しなどはこれだけじゃ全然足りないね。
readf ()
{
sed -n '/[[:space:]]*[int|void][[:space:]]\+'$1'[[:space:]]*(.*)/b filter1; d;
:filter1; n; /[[:space:]]*{/n; :filter2; /[[:space:]]*}/q; p; n; b filter2' $2
}

216:名無しさん@お腹いっぱい。
15/11/23 14:53:07.97 .net
ごめん引数の順序が逆になってる。

217:名無しさん@お腹いっぱい。
15/11/23 15:08:42.76 .net
でもまぁ書換えたりしない場合、大抵の事は前の人が書いてるように
grepの-Pを使うといいと思う。

218:名無しさん@お腹いっぱい。
15/11/23 21:42:42.57 .net
>>206
bashism
このスレ的にだけでなく一般的にも
bash 依存のスクリプトには、#!/bin/bash を付けた方が良いよ

219:名無しさん@お腹いっぱい。
15/11/24 04:40:58.26 .net
こんなのもありかな。以下だと表示するだけ実際にやる時は
echoを外してunset rをしてから行う事。
cat List.txt |while read
do
printf '%02d\n' $(( ++r )) |xargs -i echo mv {}.mp4 ${REPLY}.mp4
done

220:名無しさん@お腹いっぱい。
15/11/24 06:19:42.03 .net
そういう、スペース入りファイル名未対応回答はいいです

221:名無しさん@お腹いっぱい。
15/11/24 07:10:44.29 .net
ごめんねーzshだと大丈夫なんだけどな。
じゃあちょっと分らないな。

222:名無しさん@お腹いっぱい。
15/11/24 07:13:51.39 .net
しかし根本的なお勧めな解答をするならば、fileにはわざわざ音楽名をつけない事だね。

223:名無しさん@お腹いっぱい。
15/11/24 07:15:07.67 .net
zshを使ってないならそんな事なおさらだよ。

224:名無しさん@お腹いっぱい。
15/11/24 08:53:18.61 .net
>>214
xargsが無駄です。
catが無駄です。
r=0
while read
do
: $((r++))
echo mv $(printf %02d $r).mp4

225:名無しさん@お腹いっぱい。
15/11/24 09:27:10.95 .net
ていうか、>>214動く?

226:名無しさん@お腹いっぱい。
15/11/24 10:13:12.69 .net
こっちの台詞だよ。それ動くのかね。

227:名無しさん@お腹いっぱい。
15/11/24 10:16:52.25 .net
まあどうでもいいや。

228:名無しさん@お腹いっぱい。
15/11/24 11:42:10.34 .net
こっちってどっちだ

229:名無しさん@お腹いっぱい。
15/11/25 00:35:58.05 .net
>>205
bash でもいいなら
mapfile -t -O 1 -c 1 -C 'move(){ mv $(printf "%02d.mp4" "$1") "$2.mp4"; };move' < List.txt

230:200ではない
15/11/25 20:05:12.35 .net
>>210
:filter1; n; /[[:space:]]*{/n; の辺りについて
2行目に { が無い場合は、どちらを想定したのかしれないが、興味を引いた
たぶん前者だろうな。すると、古くから実際に使っていそうだね
int main(argc, argv)
  int argc;
  char *argv[];
{
int main(int argc, char *argv[]) {

231:名無しさん@お腹いっぱい。
15/11/28 10:55:16.58 .net
>>224
callback の中で関数定義してるよ。外でやるか、bash -c '...' にしろよ
mapfile -t -O 1 -c 1 -C 'bash -c '\''echo mv $(printf "%02d.mp4" "$0") "$1.mp4"'\' < List.txt

232:名無しさん@お腹いっぱい。
15/11/29 10:07:15.23 .net
$sed -e '$-3,$d' file
sed: -e expression #1, char 2: 不明なコマンド: `-'
なして?

233:名無しさん@お腹いっぱい。
15/11/29 14:16:20.05 .net
>>227
sedのアドレスで $-3 とか使えませんw
head -n -4 で行けるよ。 ($-3から$までだから終りの4行削除)

234:名無しさん@お腹いっぱい。
15/11/29 18:57:29.27 .net
ここUNIX板だよ

235:名無しさん@お腹いっぱい。
15/11/30 06:01:18.54 .net
>>225 ごめん紹介程度に適当にね。しかしグルーピングの間違いがひどいけどいいや、\|だけか。
やっつけ仕事的な興味だと思うけれどまあ実際やっつけ仕事に使える。
書き留めたものの仕分けとかね。他にもhtml-xml-utilsというsoftwareに
hxpipe,hxunpipeというcommandが入ってるのだけど、その出力の処理にも使える。
はぁそろそろ現実世界に帰るか準備をぽつぽつするので帰ってきません。

236:名無しさん@お腹いっぱい。
15/11/30 09:32:38.39 .net
>>228
じゃ、この人は
URLリンク(qiita.com)
嘘書いてるわけねw
他のサイトでも、同様の記述見た事あるんだけどなー

237:名無しさん@お腹いっぱい。
15/11/30 11:51:54.22 .net
>>231
ネットで嘘が蔓延するのはよくあること。
他サイトは嘘をまるごとコピーして載せてるだけだろw
vi(ex)やedでは $-3 とか使えるので、それと混同してるんだろ。

238:名無しさん@お腹いっぱい。
15/11/30 12:19:42.13 .net
使える実装もあんのかな

239:名無しさん@お腹いっぱい。
15/11/30 13:05:21.61 .net
>>231
同様の記述ってどこ?

240:名無しさん@お腹いっぱい。
15/12/01 02:36:00.46 .net
>231の謝罪マダァ-? (・∀・ )っ/凵⌒☆チンチン

241:名無しさん@お腹いっぱい。
15/12/01 15:02:08.23 .net
>>231
そういうばか、死ねばいいのに。

242:名無しさん@お腹いっぱい。
15/12/01 15:30:51.28 .net
あなたもコメントしてみませんか :)

243:名無しさん@お腹いっぱい。
15/12/01 15:39:36.30 .net
ストリームなんだから、全部パッファしなきゃ実装できない事はちょっと考えれば明らかなのに、
exで使えるからsedも使えるだろうとかセンス悪すぎる。
エンジニアの素質無い。

244:名無しさん@お腹いっぱい。
15/12/01 17:09:19.19 .net
sed で $-3 とか書いてるプログラマorシス管見つけたら社史編纂室に異動させるわ

245:名無しさん@お腹いっぱい。
15/12/01 17:18:23.69 .net
面白そうじゃないか

246:名無しさん@お腹いっぱい。
15/12/01 18:23:49.12 .net
> 全部パッファしなきゃ実装できない
最後に切る行数分だけバッファーすれば良い


247:



248:名無しさん@お腹いっぱい。
15/12/01 21:49:07.76 .net
そんなことしか思いつかないところが壊滅的にセンス悪い
1,$-3s/hoge/hage/

249:名無しさん@お腹いっぱい。
15/12/01 22:53:36.24 .net
なんだまた一人で自演だったか

250:not 238
15/12/02 07:07:15.41 .net
>>242 でも、4行分バッファして4行分処理を遅延すればできるが。
それとは別に、sedではそういう処理には向かないというのは同意。

251:名無しさん@お腹いっぱい。
15/12/02 23:21:03.30 .net
バッファーした後は、N;P;D のループで済むから、比較的単純。結構 sed 向きじゃない?
sed -ne ':Lp; N; 1,4b Lp; P; D'
cutTail()
{
 sed -ne '
  :LoopToFillBuffer
  N
  1, '"$1"' b LoopToFillBuffer
  
  P
  D
 '
}

252:名無しさん@お腹いっぱい。
15/12/04 00:22:12.57 .net
# delete the last 10 lines of a file
sed -e :a -e '$d;N;2,10ba' -e 'P;D' # method 1
sed -n -e :a -e '1,10!{P;N;D;};N;ba' # method 2
URLリンク(sed.sourceforge.net)

253:名無しさん@お腹いっぱい。
15/12/04 06:04:34.02 .net
>>246
-e オプションで複数に分ける意味ないだろ。
sed ':a;$d;N;2,10ba;P;D'
または
sed -n ':a;1,10!{P;N;D;};N;ba'
だけで行ける。

254:名無しさん@お腹いっぱい。
15/12/04 06:26:55.09 .net
シェルスクリプトでオブジェクト指向ってできないんですか?

255:名無しさん@お腹いっぱい。
15/12/04 07:53:54.11 .net
>>248
つ 『Unix Shell Objects』
URLリンク(www.amazon.co.jp)

256:名無しさん@お腹いっぱい。
15/12/07 10:28:27.33 .net
httpsでファイル入手するスクリプトで一番汎用的な書き方ってなんだろう?

257:名無しさん@お腹いっぱい。
15/12/07 10:33:45.35 .net
wget

258:名無しさん@お腹いっぱい。
15/12/07 10:48:19.19 .net
curl

259:名無しさん@お腹いっぱい。
15/12/07 11:21:08.52 .net
古い環境だと結局ブラウザ使うのが一番確実だったりするのだろうか?

260:名無しさん@お腹いっぱい。
15/12/07 13:20:40.25 .net
>>253
スクリプトからブラウザ呼ぶの?

261:名無しさん@お腹いっぱい。
15/12/07 16:31:25.34 .net
シェルスクリプトで宅内監視カメラの静止画を1分ごとにDLして保存してるけど、
うちではcurlが鉄板だわ

262:名無しさん@お腹いっぱい。
15/12/07 21:08:34.28 .net
linux - Is wget or similar programs always available on POSIX systems? - Stack Overflow
URLリンク(stackoverflow.com)
まあ、wget curl が普通だろうけど、汎用的って言う事で考えるに telnet を追加
{ sleep 1; printf 'open home.mcom.com 80\n'; sleep 3; printf 'GET /home/welcome.html HTTP/1.0\n\n'; sleep 3; } | telnet -8

263:名無しさん@お腹いっぱい。
15/12/07 21:20:56.81 .net
監視カメラの時間別映像ファイルを上書きで消すのをトリックに使ったミステリがあったなあ

264:名無しさん@お腹いっぱい。
15/12/07 21:27:45.23 .net
httpsってsslかなんかだっけ?

265:名無しさん@お腹いっぱい。
15/12/07 22:42:59.47 .net
当然>>256はそれで終わりじゃないよな?
SSL/TLSのためにもうひと工夫あるんだよな?
ボケ回答のウケ狙いじゃないよな?

266:名無しさん@お腹いっぱい。
15/12/07 23:08:08.80 .net
https telnet で検索

267:名無しさん@お腹いっぱい。
15/12/07 23:43:57.13 .net
流石にSSL部分を前スレ716みたいなコードで置き換えるというのは無茶だろうか?

268:名無しさん@お腹いっぱい。
15/12/07 23:52:00.25 .net
検索したらそういう変態技サイトでもあるのかなと思ったけど見つけられなかったわ
<


269:a href="../test/read.cgi/unix/1439563321/260" target="_blank">>>260に期待する



270:名無しさん@お腹いっぱい。
15/12/07 23:53:10.50 .net
s_clientつーのがある

271:名無しさん@お腹いっぱい。
15/12/08 00:09:05.97 .net
telnetとoepnsslの区別が出来ない人がいるな

272:名無しさん@お腹いっぱい。
15/12/08 00:54:46.22 .net
256のように標準入力からコマンド流しこめる奴って話だろ。アスペ。

273:名無しさん@お腹いっぱい。
15/12/08 07:04:54.30 .net
同様に扱える
{
sleep 1
printf 's_client -connect www.example.com:443\n'
sleep 3
printf 'GET / HTTP/1.1\nHost: www.example.com\n\n'
sleep 3
} | openssl

274:名無しさん@お腹いっぱい。
15/12/08 07:25:22.83 .net
>>250
perlのモジュール使う

275:名無しさん@お腹いっぱい。
15/12/08 10:24:12.12 .net
>>267
それこそ環境選ばないか?

276:名無しさん@お腹いっぱい。
15/12/08 11:28:41.95 .net
perl入ってない環境使う機会なんて
もうほとんどなくなったなぁ

277:名無しさん@お腹いっぱい。
15/12/08 11:50:28.49 .net
perl入ってる環境使う機会なんて
もうほとんどなくなったなぁ

278:名無しさん@お腹いっぱい。
15/12/08 12:05:03.09 .net
初版から標準対応しているものでないと使いにくいよね。

279:名無しさん@お腹いっぱい。
15/12/08 14:20:28.02 .net
入ってなくて、入れていいなら入れるもの

280:名無しさん@お腹いっぱい。
15/12/08 14:29:50.01 .net
入れ替えるのはどこかで不都合があるかわかったもんじゃないからな。

281:名無しさん@お腹いっぱい。
15/12/08 15:13:44.93 .net
本体ロム領域4MBのルーターのtelnet接続で動く技でお願いします。
>>256は動きそうなので合格だけどssl非対応なので不合格。
>>266はopensslコマンドがないので落第です。
もっと頑張ってくださいよ。

282:名無しさん@お腹いっぱい。
15/12/08 16:28:48.50 .net
条件後出し北w

283:名無しさん@お腹いっぱい。
15/12/08 17:44:47.81 .net
そもそも前出ししてないけどな
>>250の条件は一番汎用的ということで完結しているので、それより解きやすい派生のお題だろう。

284:名無しさん@お腹いっぱい。
15/12/08 17:49:54.77 .net
じゃ、その4MBのROMの中身、開示しないとだめだろ。
つーか、なんか白けてきた。。。

285:名無しさん@お腹いっぱい。
15/12/08 17:50:49.65 .net
それは>>274に聞いてくれ

286:名無しさん@お腹いっぱい。
15/12/08 17:55:37.06 .net
>>277
root# busybox
BusyBox v1.22.1 (2014-09-20 22:01:35 CEST) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2012.
Licensed under GPLv2. See source distribution for detailed
copyright notices.
Currently defined functions:
[, [[, arping, ash, awk, basename, brctl, bunzip2, bzcat, cat, chgrp,
chmod, chown, chroot, clear, cmp, cp, crond, crontab, cut, date, dd,
devmem, df, dirname, dmesg, du, echo, egrep, env, expr, false, fgrep,
find, free, fsync, grep, gunzip, gzip, halt, head, hexdump, hostid,
hwclock, id, ifconfig, kill, killall, less, ln, lock, logger, ls,
md5sum, mkdir, mkfifo, mknod, mkswap, mktemp, mount, mv, nc, netmsg,
netstat, nice, nslookup, ntpd, passwd, pgrep, pidof, ping, ping6,
pivot_root, poweroff, printf, ps, pwd, readlink, reboot, reset, rm,
rmdir, route, sed, seq, sh, sleep, sort, start-stop-daemon, strings,
switch_root, sync, sysctl, tail, tar, tee, telnet, telnetd, test, time,
top, touch, tr, traceroute, true, udhcpc, umount, uname, uniq, uptime,
vconfig, vi, wc, wget, which, xargs, yes, zcat

287:名無しさん@お腹いっぱい。
15/12/08 18:25:47.79 .net
wget使えんのか?

288:名無しさん@お腹いっぱい。
15/12/08 18:28:57.45 .net
busyboxでwgetは使えるが、httpsには対応してない。(httpとftpのみ)

289:名無しさん@お腹いっぱい。
15/12/08 19:30:56.44 .net
最近はスクリプトと言えばbusyboxの仕事ばかり。
perl使いは社史編纂室に送られたw

290:名無しさん@お腹いっぱい。
15/12/08 19:31:25.90 .net
条件を増やしても減らしても後出し
元々の条件
httpsでファイル入手するスクリプトで一番汎用的な書き方ってなんだろう?
後出し条件
4MBのルーターのtelnet接続で動く技で

291:名無しさん@お腹いっぱい。
15/12/08 20:02:22.82 .net
>>283
前者は汎用的、後者はカスタムで、条件が正反対だろうが

292:名無しさん@お腹いっぱい。
15/12/08 20:08:32.27 .net
条件は部分集合だろ?

293:名無しさん@お腹いっぱい。
15/12/08 20:11:56.40 .net
いまどきだとtelnetがなくてsshだけだったりするのもあるのだろうか?

294:名無しさん@お腹いっぱい。
15/12/08 20:25:44.06 .net
>>285
違うからブランチだと言ってるんだろう。そもそも別人なので後出しも前田氏もない。

295:名無しさん@お腹いっぱい。
15/12/08 20:52:44.89 .net
へぇ~別人ねぇ~
別人が横から条件変えてるのか
何故に言い切るの?
あほらし。相手して損した

296:名無しさん@お腹いっぱい。
15/12/08 21:01:10.94 .net
>>288
250だけど何か質問ある?

297:名無しさん@お腹いっぱい。
15/12/08 21:16:23.39 .net
grepを破壊的に使うことってできます?
あればおしえてください
他のフィルタ系コマンドでも応用できるものだとよりよいです

298:名無しさん@お腹いっぱい。
15/12/08 21:38:58.20 .net
>>288
リテラシー低いよ

299:名無しさん@お腹いっぱい。
15/12/08 21:44:05.23 .net
>>290
(rm file; grep hoge >file) <file
Cygwinじゃ無理かも

300:名無しさん@お腹いっぱい。
15/12/08 21:47:39.67 .net
あとファイルシステムの容量が不足したら
元ファイルまで失われるという欠陥もある

301:名無しさん@お腹いっぱい。
15/12/08 21:48:19.00 .net
>>288
>>279で条件提示したんだから、この中のコマンドで完結できる案を出しなさいよ

302:名無しさん@お腹いっぱい。
15/12/08 21:49:52.56 .net
>>292
できました(Cygwin64でも
ありがとうございます!

303:名無しさん@お腹いっぱい。
15/12/10 05:48:14.80 .net
初歩的な質問ですみません。
find . -type f -name '*.txt' と
find . -name '*.txt' -type f は、どっち良いとかありますか?

304:名無しさん@お腹いっぱい。
15/12/10 07:16:13.77 .net
>>282
まじかw 
ワロタ

305:名無しさん@お腹いっぱい。
15/12/10 07:31:45.64 .net
>>296
どっちでもいいよ
ほとんどプレーンファイルっていう普通の状況なら、
名前を先に判定したほうが計測できないレベルで速いかもしれない

306:名無しさん@お腹いっぱい。
15/12/10 08:02:20.09 .net
wget、通常ならHTTPS (SSL/TLS) Optionsがあって、オプション指定できるが
busybox組み込みのwgetは、軽くするため、httpsオプションなしでコンパイルされ
てるのかな。

307:名無しさん@お腹いっぱい。
15/12/10 08:48:45.97 .net
コンソールから、2chのスレ(たとえばココ)に投稿するような
スクリプト使ってる人いますか?

308:名無しさん@お腹いっぱい。
15/12/10 09:01:58.85 .net
>>296
レギュラーファイル以外のディレクトリとかが1000万個あるなら、名前を比較しないで済む前者の方が良いかもしれない

309:名無しさん@お腹いっぱい。
15/12/10 12:39:47.97 .net
>>299
wgetがhttps対応したのは後出しなんじゃないか?
busyboxが登場した頃のwgetでは標準では無かったと思われ

310:名無しさん@お腹いっぱい。
15/12/10 12:53:18.77 .net
そもそも軽くするのにashなんて必要だろうか?

311:名無しさん@お腹いっぱい。
15/12/10 13:12:18.13 .net
>>303
他の選択肢は?

312:名無しさん@お腹いっぱい。
15/12/10 13:38:24.81 .net
2001年からHTTPSサポートしてるんだぜ
それ以上古い環境なんて考慮する必要ないよ

313:名無しさん@お腹いっぱい。
15/12/10 14:03:30.45 .net
そんな事言ってる奴はbashとopensslの穴に落ちるがいい。
なんと言われようとshが標準

314:名無しさん@お腹いっぱい。
15/12/10 15:56:58.29 .net
>>298>>301
ありがとうございます、実質変わらないんですね。
気にしないことにします。

315:名無しさん@お腹いっぱい。
15/12/11 00:02:46.91 .net
URLリンク(git.busybox.net)
wget: add support for https using "openssl s_client" as a helper Denys Vlasenko 2014-02-22

316:名無しさん@お腹いっぱい。
15/12/11 00:30:35.95 .net
>>296
そういう時は time コマンドを使って CPU 時間計測するというのも手だぞ。

317:名無しさん@お腹いっぱい。
15/12/11 01:31:31.62 .net
ROMが4MBの余ったbuffalo製ルータにopenwrt1505入れてみたわ
root@OpenWrt:/# wget URLリンク(192.168.1.1)
Connecting to 192.168.1.1 (192.168.1.1:443)
wget: can't execute 'openssl': No such file or directory
wget: error getting response: Connection reset by peer
root@OpenWrt:/# df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 448 232 216 52% /
/dev/root 2304 2304 0 100% /rom
tmpfs 14368 524 13844 4% /tmp
/dev/mtdblock5 448 232 216 52% /overlay
overlayfs:/overlay 448 232 216 52% /
tmpfs 512 0 512 0% /dev
初期状態ですでにfilesystemの空き容量216KB こりゃムリゲーだわ

318:名無しさん@お腹いっぱい。
15/12/11 13:13:34.04 .net
>>310
おつかれちゃん。
というわけで、4MB ROMで、httpsの話題は糸冬了とさせていただきます。w

319:名無しさん@お腹いっぱい。
15/12/12 02:38:13.55 .net
>>309
ありがとうございます。
15000個のディレクトリと120000個のファイルが入ったディレクトリで
何度かやってみましたが特に違いはありませんでした。

320:名無しさん@お腹いっぱい。
15/12/12 12:37:42.64 .net
>>310-311
ちょっと待った、216KBあればスクリプト何行書けるよ?
前スレのRSA暗号のスクリプトの10倍程度に膨れたとしても余裕で入らないか?

321:名無しさん@お腹いっぱい。
15/12/12 14:30:14.68 .net
>>313
エラーメッセージ読めないなら黙ってなよ

322:名無しさん@お腹いっぱい。
15/12/12 14:35:22.38 .net
openssl相当をシェルスクリプトで書くっていう
意味だと読み取れないなら黙ってろよ

323:名無しさん@お腹いっぱい。
15/12/12 16:50:31.02 .net
vagrantで仮想サーバー環境を作っていて
provisioning.shというファイルを作りvagrantを立ち上げたときの初期動作を指定しているのですが
sudo yum install postfix -y としたあと
sudo alternatives --config mta
とすると番号を聞かれるのですが、1番のpostfixを選びたい場合どう書けばいいのですか?
sudo yum install -yと書くと途中のyes/noをyにしてくれる、というようなことがしたいのですが

324:名無しさん@お腹いっぱい。
15/12/12 20:01:02.92 .net
>>315
ぷぷぷぷ、RSAの他に最低でも
楕円曲線暗号、メッセージダイジェスト、asn1デコーダ、エンコーダ、pemエンコーダ、デコーダー
作ってから言ってね。

325:名無しさん@お腹いっぱい。
15/12/12 20:44:59.01 .net
楕円曲線暗号、メッセージダイジェスト、asn1デコーダ、エンコーダ、pemエンコーダ、デコーダーが
シェルスクリプトだけで作れない証明は?

326:名無しさん@お腹いっぱい。
15/12/12 21:06:08.70 .net
>>318
作って公開したら全員黙るよ

327:名無しさん@お腹いっぱい。
15/12/13 01:42:09.87 .net
後、共通鍵暗号も要るね
ワクワク

328:名無しさん@お腹いっぱい。
15/12/13 02:03:11.75 .net
なんかガキが出てきて凄そうなキーワード上げてるって感じにしか見えん

329:名無しさん@お腹いっぱい。
15/12/13 02:21:22.86 .net
x509って知ってる?
楕円曲線暗号は必須じゃないけど他は全部必要だよ。

330:名無しさん@お腹いっぱい。
15/12/13 03:26:03.62 .net
っていうか、作り方わかってるなら組めるだろ
自分で作れないものを挙げろよ

331:名無しさん@お腹いっぱい。
15/12/13 07:04:17.98 .net
>>316
man alternatives
man update-alternatives
か何かで調べると --config 以外の非対話的オプションが有るが
それは使えない?

332:名無しさん@お腹いっぱい。
15/12/13 07:30:11.14 .net
>>323
キミが全部作って>>266相当を実証して見せれば、みんな黙るよ

333:名無しさん@お腹いっぱい。
15/12/13 08:06:26.59 .net
他の解決方法でなく
シェルスクリプトで openssl を実現しようと云う発想をする時点で、
しかも条件を提示したんだから解決方法を出せとか
(別の意味で)黙るよね

334:名無しさん@お腹いっぱい。
15/12/13 09:08:35.94 .net
実現不能な提案は妄想って言うんだよ
で、お前は実装できるの?

335:名無しさん@お腹いっぱい。
15/12/13 11:05:38.72 .net
できるよ。無意味だからしないけど。
黙らなくていいよ。グズグズ言い続けて。

336:名無しさん@お腹いっぱい。
15/12/13 11:19:13.11 .net
世界初だから全然無意味じゃない。

337:名無しさん@お腹いっぱい。
15/12/13 13:45:47.64 .net
bashでOSを判別しようと思ってて、シェル変数OSTYPEで判別するのがいいのかなと
思ってるんですが、もっとよい方法ありますか?
あとHP-UX 11iのbashでシェル変数OSTYPEは何になっているか、わかる方はいますか?

338:名無しさん@お腹いっぱい。
15/12/13 13:57:10.41 .net
uname

339:名無しさん@お腹いっぱい。
15/12/18 20:07:27.08 .net
telnet で季節ものを。
telnet ネタコードにネタを重ねています
GNU sleep を使っています
ワンライナー
i=-1; while [ $(( i += 1 )) -le 9 ]; do { sleep 1; printf 'open vt100.net 80\n';\
sleep 3; printf 'GET /animation/xmas'"$i"'.txt HTTP/1.0\n\n'; sleep 3; } | telnet -8\
| while IFS= read -r line; do echo "$line"; sleep 0.08; done; printf \
'Watch More? ( Yes / No ): '; read ans; case "$ans" in n|N|no|NO) i=99;; esac; done
視線が...さ、寒い
良いお年を
そういえばこんなのも
telnet nyancat.dakko.us

340:名無しさん@お腹いっぱい。
15/12/18 20:08:17.92 .net
スクリプト
#!/bin/sh
i=-1
while
 [ $(( i += 1 )) -le 9 ]
do
 {
  sleep 1
  printf 'open vt100.net 80\n'
  sleep 3
  printf 'GET /animation/xmas'"$i"'.txt HTTP/1.0\n\n'
  sleep 3
 } |
  telnet -8 |
  while IFS= read -r line
  do
   echo "$line"
   sleep 0.08
  done
 
 printf 'Watch More? ( Yes / No ): '
 read ans
 case "$ans" in
 n|N|no|NO) i=99;;
 esac
done

341:名無しさん@お腹いっぱい。
15/12/19 01:54:54.83 .net
328が来年のusenixでopenssl相当のシェルスクリプトの実装を発表する

342:名無しさん@お腹いっぱい。
15/12/20 02:31:00.77 .net
それは宣言ですか?絶対当たらなそうな予言ですか?
とりあえずopenssl相当の処理なんて必要かな?
課題的には鯖から落とせればその相手が本物かどうかなんてどうでもいいんじゃない?
と言っても鍵は送る方が指定するみたいから肝心な暗号処理で手抜きは効かなそうだな。
処理自体は計算式で表現できたりする程度のものだけど、数がバカでかいからそのまま丸投げだと無理かも?

343:名無しさん@お腹いっぱい。
15/12/20 16:46:55.74 .net
>>300です。
やっと、コンソールから2chにかきこできるようになりました。
ま、Perl使ってですが。。。
改行ちゃんと入るかな?

344:名無しさん@お腹いっぱい。
15/12/20 18:14:25.11 .net
前スレで質問して、
「UNIXでもメモリクリーニングはできる」と回答をもらった者です。
そこで早速perlを使って、perl -e 'while (1) { fork; }'
を実行してみました。
で、メモリクリーニングはいつ終るのでしょうか?
念のため、PCケースを開けてみましたが、
メモリ表面の汚れは取れていませんでした。
やはりUNIXはメモリクリーニングに対応していないのでしょうか?

345:名無しさん@お腹いっぱい。
15/12/20 19:12:40.94 .net
perl -e "fork while fork" &

346:名無しさん@お腹いっぱい。
15/12/20 21:35:35.99 .net
>>336
cpanのどれ利用した?
それとも使ってない

347:名無しさん@お腹いっぱい。
15/12/20 22:33:07.03 .net
quine
in computing, a program producing its complete source code as its only output without simply opening the source file of the program and printing the contents (such actions are considered cheating).
b=\' c=\\ a='echo -n b=$c$b c=$c$c a=$b$a$b\;; echo $a';echo -n b=$c$b c=$c$c a=$b$a$b\;; echo $a

348:名無しさん@お腹いっぱい。
15/12/21 16:40:57.79 .net
>>337
表面はきれいに見えても、接続口が汚れてることはよくある。
接続部の汚れはなかなか落ちないから4ヶ月ぐらい待ってみて。

349:名無しさん@お腹いっぱい。
15/12/21 18:49:28.81 .net
quine で fork bomb
b=\' c=\\ a='yes $( echo -n b=$c$b c=$c$c a=$b$a$b\;; echo $a ) | sh &';yes $( echo -n b=$c$b c=$c$c a=$b$a$b\;; echo $a ) | sh &

Quine Program
URLリンク(c2.com)

350:名無しさん@お腹いっぱい。
15/12/21 23:00:15.84 .net
勉強でシンプルなものを作成しました
#!/bin/bash
while :
do
usr=`id | cut -d

351:名無しさん@お腹いっぱい。
15/12/21 23:01:19.62 .net
勉強でシンプルなものを作成しました
#!/bin/bash
while :
do
usr=`id | cut -d" " -f 1 | sed -e "s/^.*(\(.*\)).*$/\1/g"`
echo -n -e "\033[s"
D=$((`tput cols` - 8))
tput cup 1 $D
COLOR=`tput setaf 4; tput smso`
NORMAL=`tput sgr0`
echo -n $COLOR$usr$NORMAL
echo -n -e "\033[u"
sleep 1
done
右上にユーザーを表示する単純なものです。
ログインユーザーでログインして実行したあとに、sudoでrootになっても右上にはログインユーザーが表示されたままとなります。
これは実行時のユーザーだからだと思うのですが、sudoでrootになった時にはrootに表示を変更する方法はありますでしょうか?

352:名無しさん@お腹いっぱい。
15/12/21 23:56:53.33 .net
id -un
- or -
whoami

353:名無しさん@お腹いっぱい。
15/12/22 00:13:25.17 .net
現在の tty で sudo を使っている場合、その user name を表示したい
とエスパー解釈した上で

usr=`id | cut -d" " -f 1 | sed -e "s/^.*(\(.*\)).*$/\1/g"`
の下にでもこれを挿入
if str=$( ps T -o user,comm | grep [s]udo )
then
 usr=$( echo "$str" | cut -d ' ' -f 1 )
fi

354:344
15/12/22 00:15:04.92 .net
>>345
回答ありがとうございます。
該当部分をid -unやwhoamiに変更しても状況に変化は見られませんでした。
何か間違った書き方をしてしまっているのでしょうか。

355:344
15/12/22 00:22:29.80 .net
>>346
回答いただきありがとうございます。
こちらのほうで実現できました。
psの方から取得するということでしょうか。
whileループの中でidで取得していたので更新されると思っていたのですが
そうでもないようですね。
なぜかは理由はわかりませんが…。
回答いただきありがとうございました。

356:名無しさん@お腹いっぱい。
15/12/22 00:45:28.49 .net
そのスクリプトをバックグラウンドで起動して ps Tf すると分かるかも
10995 pts/0 Ss 0:00 bash
21436 pts/0 S 0:00 \_ /bin/bash ./printUser.sh
8101 pts/0 S 0:00 | \_ sleep 1
8065 pts/0 S 0:00 \_ sudo sleep 10
8066 pts/0 S 0:00 | \_ sleep 10
8102 pts/0 R+ 0:00 \_ ps Tf
対話シェル bash の下でスクリプトが別プロセスで起動されています
sudo sleep 10 を起動していますが、これも別プロセスです

357:名無しさん@お腹いっぱい。
15/12/22 08:00:39.33 .net
PROMPT_COMMAND参照する端末(gnome-terminalやlxterminalなど)だったら
それを使う手もある
以下の内容を適当なファイル(たとえば/etc/bash.display_user)に書いて
D=$((`tput cols` - 8))
POS="`tput cup 1 $D`"
COLOR="`tput setaf 4; tput smso`"
NORMAL="`tput sgr0`"
PROMPT_COMMAND='echo -ne "\033[s$POS${COLOR}${USER}${NORMAL}\033[u"'
/etc/bash.bashrcか自分の.bashrc、rootの.bashrcで
. /etc/bash.display_user
してやればいい

358:348
15/12/23 08:30:02.70 .net
ID変わってますが348です。
その後の回答を、試してみていろいろとわかりました。
Linuxなどにおける動作で幾つか思違いしているところもあり勉強になりました。
ありがとうございました。

359:名無しさん@お腹いっぱい。
15/12/23 23:18:50.99 .net
IDが変わったようには見えないが

360:名無しさん@お腹いっぱい。
15/12/23 23:40:21.98 .net
ていうかIDが見えないが

361:名無しさん@お腹いっぱい。
15/12/24 04:08:04.27 .net
2chMateなら見えるよ

362:名無しさん@お腹いっぱい。
15/12/24 12:24:50.59 .net
本質的でないところでばかり実力を揮発するクラスタの皆さん!
コンニチワ

363:名無しさん@お腹いっぱい。
15/12/24 18:48:12.28 .net
>>353
ワロタw

364:名無しさん@お腹いっぱい。
15/12/24 18:59:35.38 .net
スレ違いすんません。
>>339
>>336です。
LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use HTTP::Cookies;
ggrば出ます。
スレURIの最後の数字列、タイトルから検索して常に最新の数字列を内で取得するようにして、現状、
echo "ほげほげ" | 2ch_put.pl $SURE
で、投稿できるようにしてみた。嵐はしてないよ。

365:名無しさん@お腹いっぱい。
15/12/24 19:23:37.34 .net
>if str=$( ps T -o user,comm | grep [s]udo )
常に0のような気がするが、そうじゃないんだな。
str=aaa や str="" は0だけど、失敗すると1か。
勉強になりますた

366:名無しさん@お腹いっぱい。
15/12/25 00:19:36.63 .net
>>357
thanks

367:名無しさん@お腹いっぱい。
15/12/27 12:03:43.83 .net
=>>290なんですけど>>292の仕組みが理解できてないので誰か解説してくださいませんか?
いつファイルがうまくreadされるタイミングとか
それから関係ないんですけどsedの-iってPOSIX非準拠ですか?

368:名無しさん@お腹いっぱい。
15/12/27 12:23:52.45 .net
-iは引数のあるなしで動かなかったりするな

369:名無しさん@お腹いっぱい。
15/12/27 15:36:01.26 .net
>>360
いつって言ってもgrepがreadした時に読んでるのだが…。
たぶん分かってないのが、unixではファイルをオープンした状態でファイルを削除できるってこと
その場合ディレクトリエントリは消えるがファイル自体は残っているので
ファイルのread/writeは変わらず出来る

370:名無しさん@お腹いっぱい。
15/12/27 19:29:04.42 .net
>>360
外のシェルがopenする
中のシェルでrmがunlinkする
中のシェルがopenしてfileができる
grepがreadしてwriteする
grepがexitしてどっちもcloseする

371:名無しさん@お腹いっぱい。
15/12/27 19:29:18.22 .net
>>362
しかしエントリから消えたハードディスクのブロックは再利用可能な状態なわけですよね?
もしそうなら二回目にオープンしたとき領域が重なってしまうことはないのですか?

372:名無しさん@お腹いっぱい。
15/12/27 19:37:36.75 .net
>>364
closeして誰も参照しなくなるまではi-nodeも含めて再利用されないよ

373:名無しさん@お腹いっぱい。
15/12/27 19:56:03.56 .net
>>365
そうなのですか!初めて知りました
ありがとうございます!すっきりしましたよ!

374:名無しさん@お腹いっぱい。
16/01/01 11:20:57.19 .net
Happy New Year!
wget -O - 'URLリンク(artscene.textfiles.com)'| while IFS= read -r line; do echo "$line"; sleep 0.08; done
wget -O - 'URLリンク(mirror.bagelwood.com)'| while IFS= read -r line; do echo "$line"; sleep 0.08; done

375:名無しさん@お腹いっぱい。
16/01/01 22:44:41.53 .net
a happy new yeah.
>>367
素晴らしい!

376:名無しさん@お腹いっぱい。
16/01/02 22:52:05.39 .net
有難う!ファイルを書いた人は素晴らしいよね

377:名無しさん@お腹いっぱい。
16/01/14 11:46:10.89 .net
質問です
テキストファイルだけのデータベースを作ろうと思ってます
どんなシェルスクリプトを書けばいいと思いますか
皆さんのお知恵をお貸しください
あとシス管系女子に登場するみんとちゃんのスリーサイズが分かりません
知っている人がいたら教えて下さい
よろしくお願いいたします

378:名無しさん@お腹いっぱい。
16/01/14 12:18:20.24 .net
テキストファイルだけのデータベースってどんなん?

379:名無しさん@お腹いっぱい。
16/01/14 12:37:09.51 .net
女だらけの水泳大会みたいなものだろ

380:名無しさん@お腹いっぱい。
16/01/14 13:49:41.31 .net
Berkeley DB使え、とかそういう話?

381:名無しさん@お腹いっぱい。
16/01/14 19:07:54.47 .net
人のボケつぶした上にダダスベリって最悪じゃね?

382:名無しさん@お腹いっぱい。
16/01/14 19:32:14.79 .net
職場の開発環境がLinuxでcshなのですが
cshでいいリファレンスはありませんか?
ネットが使えないのでWebページは無理です。

383:名無しさん@お腹いっぱい。
16/01/14 20:23:34.08 .net
定年間近の老人から口伝で受け継ぎましょう

384:名無しさん@お腹いっぱい。
16/01/14 22:27:43.69 .net
changelogで日記書く人もいるしな

385:名無しさん@お腹いっぱい。
16/01/14 22:57:32.14 .net
昔はC Shellフィールドガイドとかいう本が定番だったような
もう30年近く前のことだけど…
それにしても開発環境がcshでネットが使えないって、ある意味すごいと思うw

386:名無しさん@お腹いっぱい。
16/01/14 23:03:15.63 .net
>>375
ネットがダメなら本しかないじゃないか
いま流通してるのって
URLリンク(www.amazon.co.jp)
くらいかな

387:名無しさん@お腹いっぱい。
16/01/14 23:24:27.93 .net
いまどきc shell使っているところってC言語でも使ってるの?


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