シェルスクリプト総合 その25©5ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@お腹いっぱい。 転載ダメ©2ch.net
2015/08/14(金) 23:42:01.51□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
「そういうのはperl使いましょう」と回答するのはやめましょう。
安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その24
http://peace.2ch.net/test/read.cgi/unix/1415634843/
0002名無しさん@お腹いっぱい。
2015/08/14(金) 23:42:43.85初心者、学生、アマチュア、プロ、シェルの種類や 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 参照 )
0003名無しさん@お腹いっぱい。
2015/08/14(金) 23:44:39.301. シェルスクリプトのことをシェルってゆーな
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 のシェルスクリプトは推奨されません。理由は下記を参照
http://www.speech-lab.org/~hiroki/csh-whynot.euc
9. cat file|すんなハゲ
a. 詳細は "Useless Use of Cat" UUOC で検索して下さい
b. 有用な場合も有ります Useful use of cat(1) 英文
http://www.in-ulm.de/~mascheck/various/uuoc/
□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
0004名無しさん@お腹いっぱい。
2015/08/14(金) 23:50:19.571. Bourne Shell自習テキスト ( 1993年 ) pdf お薦め
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/
(↑サイト消滅かも)
http://ayapin.film.s.dendai.ac.jp/~matuda/Lecture/PDF/sh-two.pdf
2. UNIX FAQ LIST
http://www.nurs.or.jp/~asada/FAQ/UNIX/UNIX.FAQ.html
(3. シェルを使おう - 導入からプログラミングまで - ( 2002年 )
http://www.netfort.gr.jp/~tomokuni/lms/shell/ (リンク切れ))
□F. 参考リンク
1. 可搬性関連
a. autoconf マニュアル 移植性のあるシェルプログラム
http://www.gnu.org/software/autoconf/manual/autoconf.html#Portable-Shell
http://www.geocities.jp/fut_nis/html/autoconf-ja/Portable-Shell.html
b. Portability talk [Bash Hackers Wiki] 英文
Obsolete and deprecated syntax も見る価値有り
http://wiki.bash-hackers.org/scripting/nonportable
c. How to make bash scripts work in dash 英文
http://mywiki.wooledge.org/Bashism
d. DashAsBinSh 英文
https://wiki.ubuntu.com/DashAsBinSh
e. Portable Shell Programming 英文
http://www.in-ulm.de/~mascheck/various/portability/
0005名無しさん@お腹いっぱい。
2015/08/14(金) 23:53:33.73The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition 英文
http://pubs.opengroup.org/onlinepubs/9699919799/
3. Traditional Bourne Shell 関連
a. The Traditional Bourne Shell Family History and Development 英文
http://www.in-ulm.de/~mascheck/bourne/
b. BourneShell / Where does the Bourne shell live? 英文
http://mywiki.wooledge.org/BourneShell
c. The Heirloom Bourne Shell 英文
http://heirloom.sourceforge.net/
4. マニュアル
a. The Base Specifications Issue 7, 2013 Edition 英文
http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
b. FreeBSD 日本語マニュアル検索
http://www.jp.freebsd.org/man-jp/search.html
c. JM Project (Japanese)
http://linuxjm.sourceforge.jp/
5. FAQ 等
a. UNIXの部屋 ( 2011年 )
http://x68000.q-e-d.net/~68user/unix/
b. Linux JF (Japanese FAQ) Project
http://linuxjf.osdn.jp/
c. Advanced Bash-Scripting Guide 英文
http://www.tldp.org/LDP/abs/html/
d. Unix Programming FAQ 日本語訳 ( 2000年 )
http://www.race.u-tokyo.ac.jp/~moro/unix-programmer/
0006名無しさん@お腹いっぱい。
2015/08/14(金) 23:56:30.37a. web tool です。Vim syntastic や Emacs の Flycheck でも使えます
ShellCheck
http://www.shellcheck.net/about.html
b. vim 用 syntastic
https://github.com/scrooloose/syntastic
c. checkbashisms も使用してチェック duggan/shlint GitHub
https://github.com/duggan/shlint
□G. 前スレ
1. ☆シェルスクリプトを勉強するにあたって☆
http://hibari.2ch.net/test/read.cgi/unix/989659936/
2. 便利なシェルスクリプト見せろ
http://pc.2ch.net/test/read.cgi/unix/996949546/
3. シェルスクリプト総合 その1
http://pc5.2ch.net/test/read.cgi/unix/1101820646/
後略。検索して下さい
0007名無しさん@お腹いっぱい。
2015/08/14(金) 23:57:59.641. sed
http://peace.2ch.net/test/read.cgi/unix/1085730992/
2. 正規表現
http://peace.2ch.net/test/read.cgi/unix/1039165754/
3. Regular Expression(正規表現) Part13
http://peace.2ch.net/test/read.cgi/tech/1415149975/
4.Perlについての質問箱 64箱目 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1417291896/
5. ECMAScript デス 4
http://peace.2ch.net/test/read.cgi/tech/1325448978/
6. Ruby 初心者スレッド Part 57©2ch.net [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1426165733/
7. Pythonのお勉強 Part50
http://peace.2ch.net/test/read.cgi/tech/1413474092/
8. 【node.js】サーバサイドjavascript 3【io.js】(c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1419673207/
□I. 現在評価待ち: X.n は予定した追加先。主にスレ立て人の判断保留用。
0008名無しさん@お腹いっぱい。
2015/08/15(土) 00:04:34.32漏れや要求があれば各自追記願います。
0009名無しさん@お腹いっぱい。
2015/08/15(土) 03:33:33.310010名無しさん@お腹いっぱい。
2015/08/15(土) 13:42:11.470011名無しさん@お腹いっぱい。
2015/08/15(土) 14:41:40.480012名無しさん@お腹いっぱい。
2015/08/15(土) 17:47:20.990013名無しさん@お腹いっぱい。
2015/08/16(日) 00:14:04.650014名無しさん@お腹いっぱい。
2015/08/16(日) 21:47:33.05例えば95行のテキストファイルを10分割するとき、
splitだと10行のファイルが9個と5行のファイルが1個できますが
そういう分割ではなく、10行のファイルを5個、9行のファイルを5個、
というように、等分に近くなるように分割したいです
今はforループで、1行目はファイル1に、2行目はファイル2に、
途中略して10行目はファイル10に、そして11行目はファイル1に、
みたいに仕分けてるのですが、splitの様にファイル先頭からの並び通りに
等分したく思ってます
0015名無しさん@お腹いっぱい。
2015/08/16(日) 22:42:11.520016名無しさん@お腹いっぱい。
2015/08/16(日) 23:56:46.15awk で行番号見ながら出力ファイルを変えれば?
以下は 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"
0017名無しさん@お腹いっぱい。
2015/08/17(月) 00:28:08.28$ 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 合計
0018名無しさん@お腹いっぱい。
2015/08/17(月) 07:22:58.29なるほど
まずは処理内容を勉強して、考えます
>>17
なんか微妙な分け方ですね…
GNU版の採用や、96とか97とかになったらどうなるかとか、調べてみます
0019名無しさん@お腹いっぱい。
2015/08/23(日) 21:52:42.48for 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}"/*としてもうまくいきませんでした
0020名無しさん@お腹いっぱい。
2015/08/23(日) 22:25:01.69チルダがクォートされているかどうかで違う
$ echo ~/Desktop/foo
/home/hoge/Desktop/foo
$ echo "~/Desktop/foo"
~/Desktop/foo
0021名無しさん@お腹いっぱい。
2015/08/23(日) 22:53:07.70$ sh test.sh "${HOME}/Desktop/foo"
002219
2015/08/23(日) 23:32:18.17レスどうもありがとうございます
コード側の問題じゃなくて渡す側の書き方に問題があったんですね
空白を含んでいないパスは期待どおりになりました
が空白を含んでいる場合はやっぱり「*」が展開されずに
$ sh test.sh "/home/hoge/Desktop/foo bar"
または
$ sh test.sh "${HOME}/Desktop/foo bar"
とすると
/home/hoge/Desktop/foo
bar/*
と表示されてしまいます
002319
2015/08/23(日) 23:37:21.98${1}/* と "${1}/*" はだめでしたが "${1}"/* としたらうまくいきました
ダブルクォートって難しいです
0024名無しさん@お腹いっぱい。
2015/08/24(月) 04:09:11.65/home/hoge/Desktop/foo bar/space ship.txt があると
/home/hoge/Desktop/foo bar/space
ship.txt
と2行に渡って表示される
0025名無しさん@お腹いっぱい。
2015/08/25(火) 09:55:00.50$ 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
0026名無しさん@お腹いっぱい。
2015/08/25(火) 11:38:42.71対象ディレクトリと対象ディレクトリ内のファイル名の両方にスペースが含まれて
いても問題ない
あと、ソースに渡された引数+"/*"がどう展開されるかの表示を追加
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
002726
2015/08/25(火) 11:40:11.64bash-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$
0028名無しさん@お腹いっぱい。
2015/08/25(火) 12:23:17.60>>24 が駄目と言ってるのは ${1} の場合の話だろw
"$1"ならもちろん問題ないよ。
0029名無しさん@お腹いっぱい。
2015/08/25(火) 12:29:22.170030名無しさん@お腹いっぱい。
2015/08/25(火) 12:55:51.30いや…ファイルの話だよね?割りとどうでもいい流れだけど一応
$ 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
$
0031名無しさん@お腹いっぱい。
2015/08/25(火) 13:12:03.640032名無しさん@お腹いっぱい。
2015/08/25(火) 13:14:16.88その場合、 ${1} に . が代入されるから問題が起きてないだけ。
${1} とか半端な記述せずに "$1"にすること。${1}ってクォートなしの $1 と同じだから。
003326
2015/08/25(火) 13:25:30.87含まれる場合の常套手段で「IFS」を「改行コード」のみに設定すればOK
bash-2.05$ cat test.sh
#!/bin/sh
IFS_BACKUP=$IFS
IFS="
"
echo -n "arg/* = '"
echo -n "${1}"/*
echo "'"
echo
for file in ${1}/*
do
echo "${file}"
done
IFS=$IFS_BACKUP
exit 0
003433
2015/08/25(火) 13:26:35.02bash-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$
0035名無しさん@お腹いっぱい。
2015/08/25(火) 13:30:12.680036名無しさん@お腹いっぱい。
2015/08/25(火) 13:58:06.490037名無しさん@お腹いっぱい。
2015/08/30(日) 12:52:52.88最近cygwin使ってないんで試してないけど
神が現れてsudo実装してping打てるようになった模様
詳細はcygwinスレ参照
そうそうcygwinのpingって何か違ったんだっけ?
0038名無しさん@お腹いっぱい。
2015/09/06(日) 16:40:59.13標準では全部グローバルのスコープじゃなかったのか?
グローバル変数に引数をコピーするとグローバル変数は参照できるけど
引数はそういうものなのか?
~/ 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
0039名無しさん@お腹いっぱい。
2015/09/06(日) 17:58:01.08> 引数 $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
0040名無しさん@お腹いっぱい。
2015/09/06(日) 17:59:13.35bug_versionを引数無しで呼び出してるので$1には何も設定されません
004139
2015/09/06(日) 18:00:18.46$ sh bug.sh arg
argument arg can't handle in function
argument arg can handle out of function
0042名無しさん@お腹いっぱい。
2015/09/06(日) 19:34:01.02まぁ Linux 限定だけど、
function bug_version {
echo "argument $(cat /proc/$$/cmdline | xargs -n1 -0 | sed -n 3p) can handle in function"
}
なんてするといいかも
0043名無しさん@お腹いっぱい。
2015/09/06(日) 19:39:35.79みんなありがとう
コードが綺麗になった
0044名無しさん@お腹いっぱい。
2015/09/09(水) 19:11:24.39grep "aaa\|bbb" はokなのに、grep "aaa\&bbb" はなぜ
だめなんでしょう?
0045名無しさん@お腹いっぱい。
2015/09/09(水) 20:10:57.27どちらも仕様どおりに正しく動く
何をもってダメという?
0046名無しさん@お腹いっぱい。
2015/09/09(水) 20:21:28.99私の環境ではこうなります。
$ echo "aaa bbb" | grep "aaa\|bbb"; echo $?
aaa bbb ccc
0
$ echo "aaa bbb" | grep "aaa\&bbb"; echo $?
1
0047名無しさん@お腹いっぱい。
2015/09/09(水) 20:25:36.29あれれ、「 ccc」入っちゃった。無視してくださいw
0048名無しさん@お腹いっぱい。
2015/09/09(水) 20:50:24.67だからそれは仕様どおり
0049名無しさん@お腹いっぱい。
2015/09/09(水) 20:54:06.69単に&と書いたのと同じ
005039、41
2015/09/10(木) 02:49:03.69ひょっとすると[grep]コマンドによる『AND検索』の方法(記述)を
『grep "aaa\&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 と同じ人?
0051名無しさん@お腹いっぱい。
2015/09/10(木) 07:50:58.43か、GNU grep なら
$ grep -P '(?=.*aaa)(?=.*bbb)'
でもOK。
0052名無しさん@お腹いっぱい。
2015/09/10(木) 07:56:54.380053名無しさん@お腹いっぱい。
2015/09/10(木) 17:51:40.810054名無しさん@お腹いっぱい。
2015/09/24(木) 23:16:07.36【POSIX】UNIXプログラミング【BSD】 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/unix/1443103705/
0055名無しさん@お腹いっぱい。
2015/09/27(日) 16:29:45.68%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で書くときって、どのように書くとよいのでしょう
0056名無しさん@お腹いっぱい。
2015/09/27(日) 16:38:38.08この間、似たような事を業務でやったけど考えるの面倒だったから
pasteコマンドでひとつのファイルにして、特定フィールドを読み込む方法にした。
なにぶん、思想が古い年代なもんで複数ファイルを
同時に読み込んであーだこーだするのはCで書きたくなる。
0057名無しさん@お腹いっぱい。
2015/09/27(日) 17:34:07.98きたなくてもちゃんと動作するコードの方がよい
そんな格言なかったっけ?
0058名無しさん@お腹いっぱい。
2015/09/27(日) 19:24:41.10コードの可読性を語るとキリが無い。
シェルスクリプトで訳が判らなくなる書き方する人いるけど、ある意味才能としか思えない。
0059名無しさん@お腹いっぱい。
2015/09/28(月) 01:10:28.27awkについて語るスレ $2
http://peace.2ch.net/test/read.cgi/tech/1172242542/
もありますよ。a11からb24が全部数値で3つまでは確実に値が入ってるなら
awk 'BEGIN{OFS=","};!~/%/{print $1,$2,$3,$4+0,0}'
で済む気がするけど。
0060名無しさん@お腹いっぱい。
2015/10/04(日) 19:58:15.31きれいでも動かないコードより
きたなくてもちゃんと動作するコードの方がよい
そして、きれいでちゃんと動作するコードが
一番いいのは言うまでもない。
0061名無しさん@お腹いっぱい。
2015/10/04(日) 22:53:55.310062名無しさん@お腹いっぱい。
2015/10/06(火) 13:14:00.89下のコードは "^(?=\d)"にするとレス番号だけが行頭で表示され
本文はインデントされる2chですら処理できる
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
my $enc = 'UTF-8';
my ($delimiter, $search);
$delimiter = "^(?=\%PART_)"
GetOptions ('delimiter|d=s' => \$delimiter, 'search|s=s'=> \$search);
my $line = join('', <>);
my @lines = split /$delimiter/m, $line;
for (@lines) {print if /$search/;}
0063名無しさん@お腹いっぱい。
2015/10/13(火) 12:01:58.60勝手に半角のみと思い込んでた
自分用メモ
ひらがな: [ぁ-ん]
全角カタカナ: [ァ-ヾ]
半角カタカナ: [ヲ-゚]
全てのカタカナ: [ァ-ヾヲ-゚]
全角数字: [0-9]
全角英字: [a-zA-Z]
全角英数字: [0-z]
全角文字(英数字以外, ひらがな, カタカナ, 漢字, 記号): [、-鶴]
全角文字(英数字, ひらがな, カタカナ, 漢字, 記号): [、-鶴0-9a-zA-Z]
漢字: [一-鶴]
0064名無しさん@お腹いっぱい。
2015/10/13(火) 23:33:25.92・同じ結果→POSIX準拠
・結果が異なる→準拠してない
というのも豆
0065名無しさん@お腹いっぱい。
2015/10/15(木) 01:00:25.450066名無しさん@お腹いっぱい。
2015/10/16(金) 00:12:27.120067名無しさん@お腹いっぱい。
2015/10/16(金) 13:16:19.20例えば、特定のアプリケーションをアクティブにするスクリプトを書いたとして、それを
Ctrl+Alt+Gで実行してGoogleChromeをアクティブにするとか、そういう事です。
Alt+Tabで一つ一つ切り替えるのはうんざりなんですよね。
スクリプト自体はできてるんですが、それをショートカットと結びつける技が分かりません。
0068名無しさん@お腹いっぱい。
2015/10/16(金) 13:35:52.55シェルスクリプトの話ではない
0069名無しさん@お腹いっぱい。
2015/10/16(金) 13:41:08.99/apps/metacity/global_keybindings/panel_run_dialogとかって情報はすぐ出てくる
0070名無しさん@お腹いっぱい。
2015/10/16(金) 16:30:40.140071名無しさん@お腹いっぱい。
2015/10/18(日) 03:08:01.82w3mなら .w3m/keymap
xmonadなら .xmonad/xmonad.hs に書くような内容
0072名無しさん@お腹いっぱい。
2015/10/18(日) 03:29:42.190073名無しさん@お腹いっぱい。
2015/10/19(月) 12:52:16.450074名無しさん@お腹いっぱい。
2015/10/19(月) 14:00:50.570075名無しさん@お腹いっぱい。
2015/10/19(月) 14:28:46.620076名無しさん@お腹いっぱい。
2015/10/19(月) 15:27:19.76そんなんだから周囲に教えてくれる人が居なくて
2chで質問するハメになるんだよ
0077名無しさん@お腹いっぱい。
2015/10/20(火) 00:06:45.98わざわざbusybox縛りを入れて珍回答を期待してるのに普通の方法を答えるのもまあ2chらしいが。
っていうかnkfじゃないのな。
0078名無しさん@お腹いっぱい。
2015/10/20(火) 07:22:32.22(記載のアルファベットは例であり数字だったりマルチバイト文字だったりします)
AAAAAAAAA
BBBB
CCCCCCCCCC
DDDDDDDDDDD
EEEEEEEEEEE
各1行を2行に増やすことってできますか?
AAAAAAAAA
AAAAAAAAA
BBBB
BBBB
CCCCCCCCCC
CCCCCCCCCC
DDDDDDDDDDD
DDDDDDDDDDD
EEEEEEEEEEE
EEEEEEEEEEE
ループで1行ずつ読んで2行にして出力するくらいしか思いつかなかったのですが
パイプを使ってシンプルにできたりしませんか?
0079名無しさん@お腹いっぱい。
2015/10/20(火) 07:41:49.44sed p foo.txt
0080名無しさん@お腹いっぱい。
2015/10/20(火) 21:45:48.66ありがとうございます
こんなに簡単にできちゃった・・・
とりあえずpコマンド調べてみて
変換しない指定で返還前と変換後の2行が出力されるからこうなると理解しました
0081名無しさん@お腹いっぱい。
2015/10/20(火) 23:06:19.800082名無しさん@お腹いっぱい。
2015/10/21(水) 00:43:12.910083名無しさん@お腹いっぱい。
2015/10/21(水) 00:49:57.210084名無しさん@お腹いっぱい。
2015/10/21(水) 01:33:11.680085名無しさん@お腹いっぱい。
2015/10/21(水) 01:46:20.530086名無しさん@お腹いっぱい。
2015/10/21(水) 01:56:17.21sed 'N; s/.*\n//'
0087名無しさん@お腹いっぱい。
2015/10/21(水) 06:13:41.20sed -n 1~2p
0088名無しさん@お腹いっぱい。
2015/10/21(水) 06:38:20.240089名無しさん@お腹いっぱい。
2015/10/21(水) 07:02:03.890090名無しさん@お腹いっぱい。
2015/10/22(木) 08:26:25.71現代でも使える場面のあるsedは凄い
0091名無しさん@お腹いっぱい。
2015/10/22(木) 12:24:50.150092名無しさん@お腹いっぱい。
2015/10/22(木) 14:32:56.99スマートな方法はありませんか?
ファイル変換しないといけないでしょうか?
0093名無しさん@お腹いっぱい。
2015/10/22(木) 15:27:18.78pdftotext あたりで標準出力に吐かせて grep とか
0094名無しさん@お腹いっぱい。
2015/10/22(木) 15:55:01.58pdftotext hoge.pdf - | grep aaa
pdftotextでググったらこのページが
ttp://www.clear-code.com/blog/2010/8/2.html
Excelはssconvertを使えばいいようですね
0095名無しさん@お腹いっぱい。
2015/10/22(木) 22:52:20.38総務省の『憲法改正国民投票法』、でググってみてください。
日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、日本人の悲願である
改憲の成就が決まります。皆様方、必ず投票に自ら足を運んでください。お願い致します。
0096名無しさん@お腹いっぱい。
2015/10/27(火) 08:43:35.49ってことかな?
大きなテキストファイルをawkで処理するときにcatで投げ込むのと、ファイル読み込みするのどっちが速いか比較 - カメニッキ
http://tapira.hatenablog.com/entry/2015/07/22/214419
大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog
http://d.hatena.ne.jp/yohei-a/20150728/1438099752
0097名無しさん@お腹いっぱい。
2015/10/27(火) 09:02:14.04それって Linux OS でマルチコアで出力先が SSD の場合にだけ
速くなるかもしれないってオチだったような
0098名無しさん@お腹いっぱい。
2015/10/27(火) 11:16:32.980099名無しさん@お腹いっぱい。
2015/10/27(火) 12:25:26.580100名無しさん@お腹いっぱい。
2015/10/27(火) 12:54:33.20今の時代SSDしかないような気がするんだけど・・・
0101名無しさん@お腹いっぱい。
2015/10/27(火) 17:55:11.78他の環境だとリダイレクトの方が速かったよ
0102名無しさん@お腹いっぱい。
2015/10/27(火) 18:45:52.060103名無しさん@お腹いっぱい。
2015/10/27(火) 23:01:18.380104名無しさん@お腹いっぱい。
2015/10/27(火) 23:24:17.69その書いたやつを見せてください。ぜひとも参考にしたいです
0105名無しさん@お腹いっぱい。
2015/10/28(水) 05:47:50.830106名無しさん@お腹いっぱい。
2015/10/28(水) 06:27:57.970107名無しさん@お腹いっぱい。
2015/10/28(水) 07:30:41.83入出力パスとか、オプションのon/off(1か0か)などを書いておき、その設定ファイルを
シェルスクリプト上から読み込んで、処理内容に反映して実行することを想定しています
こういった処理をする場合、業界の一般的な様式みたいな決まりってありますか。
また、いろいろな実装方法が考えられますが、どのようなコマンドで実現するのが適切でしょうか。
busyboxに入ってそうなコマンドが一通り動ける環境を想定しています。
0108名無しさん@お腹いっぱい。
2015/10/28(水) 08:21:07.49あなたはどんな業界の人ですか?
0109名無しさん@お腹いっぱい。
2015/10/28(水) 10:38:06.95RedHat系なら /etc/sysconfig/ 以下、Debian系なら /etc/default/ 以下を参考に
0110名無しさん@お腹いっぱい。
2015/10/28(水) 11:48:34.730111名無しさん@お腹いっぱい。
2015/10/28(水) 11:54:18.980112名無しさん@お腹いっぱい。
2015/10/28(水) 12:20:06.26シェルスクリプトから呼べば(実行すれは)環境変数として設定されるようになる
0113名無しさん@お腹いっぱい。
2015/10/28(水) 12:21:45.13readしてexportするんじゃなくてそのまま実行して環境変数に設定する
0114名無しさん@お腹いっぱい。
2015/10/28(水) 13:28:25.070115名無しさん@お腹いっぱい。
2015/10/28(水) 13:35:42.310116名無しさん@お腹いっぱい。
2015/10/28(水) 15:00:41.96>>112
>>113
107です、ありがとうございました。ファイルを読ませることしか頭にありませんでしたので、聞いてよかったです。
その方式で、スクリプトの冒頭で設定を担当するコードを実行するようにします。
0117名無しさん@お腹いっぱい。
2015/10/28(水) 22:16:32.330118名無しさん@お腹いっぱい。
2015/10/28(水) 23:07:56.69具体的にどこが偉そうなの?どこがカンに障るの?
0119名無しさん@お腹いっぱい。
2015/10/29(木) 04:20:02.340120名無しさん@お腹いっぱい。
2015/10/29(木) 06:23:24.26ユーザーはソフトのインストール禁止ですが、
最近、ユーザーでも自分のホームフォルダーにソフトをコピーし、
X権限をすることによってソフトが実行できてしまうことが判明しました。
これはOSのセキュリティーボールではないのでしょうか?
ユーザーのフォルダーではたとえX権限がされていても
実行できないようなおすすめのunixって何ですか?
必要ならカーネルにバッチを当てる方法も、やもうえません。
0121名無しさん@お腹いっぱい。
2015/10/29(木) 07:39:00.78お腹いっぱいとは?
0122名無しさん@お腹いっぱい。
2015/10/29(木) 08:29:26.090123名無しさん@お腹いっぱい。
2015/10/29(木) 09:02:26.07最近は余りにもスレ違いな話題が多くないか?
0124名無しさん@お腹いっぱい。
2015/10/29(木) 10:15:07.660125名無しさん@お腹いっぱい。
2015/10/29(木) 11:15:37.67お前脳みそついてなくてUnix使ってんのか?
Windowsでも使ってろよ
希望してることができるから
0126名無しさん@お腹いっぱい。
2015/10/29(木) 12:04:46.300127名無しさん@お腹いっぱい。
2015/10/29(木) 22:18:02.02>>123
0128名無しさん@お腹いっぱい。
2015/10/30(金) 11:01:24.94軌道修正したレスができるなら相手して構わないんだけど、自演が疑われるような受け売り回答って不要だよな。
0129名無しさん@お腹いっぱい。
2015/11/01(日) 13:31:00.57たとえば/usr/bin/sensible-browserでは
/usr/bin/x-www-browser ${URL:+"$URL"}
のように使われています
なぜこう書くのかヒントをいただけたら…
0130名無しさん@お腹いっぱい。
2015/11/01(日) 14:16:24.02Parameter Expansion の項(日本語訳では パラメータの展開 の項)
を見るよろし。てか俺がしょっちゅう見直すとこだわソレw
0131名無しさん@お腹いっぱい。
2015/11/02(月) 12:13:01.41What does ${1+"$@"} mean?
http://www.in-ulm.de/~mascheck/various/bourne_args/
Autoconf
http://www.geocities.jp/fut_nis/html/autoconf-ja/Shell-Substitutions.html#Shell%20Substitutions
# 例えば、 $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"}
0132129
2015/11/02(月) 14:09:15.67アドバイスありがとうございます。自分もよくそこ見ます
環境はlinuxのbashなのですが、"$@"と書いておけば
${@:+"$@"}と結果的に同じになるはずなのに
わざわざ後者のように書くのはどうしてかなと疑問に思った次第です
0133129
2015/11/02(月) 14:12:02.34有益な情報ありがとうございます
なるほど"$@"が""になってしまうことがあるためなのですね
違いを確認するためのスクリプトまで用意していただいて感謝です
おかげで長い間疑問だったことが氷解しました
/usr/bin/sensible-browserは、#!/bin/shですし
ポータビリティを十分に考えて作られているわけですね
なぜAdobeのacroreadなどでも使われているか納得できました
とっても勉強になりました
0134131
2015/11/03(火) 18:32:53.39> ポータビリティを十分に考えて作られているわけですね
/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.
0135名無しさん@お腹いっぱい。
2015/11/04(水) 10:19:47.91例えばダブルクリックした時点で1.shが動いて〜10秒後に2.shを動かして〜というような感じにしたいです。
お力貸していただけると幸いです。
0136名無しさん@お腹いっぱい。
2015/11/04(水) 12:50:56.08最初に/data/local/tmpあたりに転送して、chmodして、それをwait含めて実機で実行するのが
良いんじゃないの。
何をやりたいのか書いてないのでアレだが、操作する側で10秒開けるのか、実機で10秒ウェイトするのか。
あと、なぜ10秒あける必要があるのか、10秒後までに実行した端末で何が起きているのか、
その判定は必要なのか、などを考える必要があるし、
さらには泥のことをよく理解できてないオッサンたちが、こういう話題は、ここではスレチじゃね?
と煽ってくるので、飛来するオッサンたちを黙らせる技術も必要とされる
0137名無しさん@お腹いっぱい。
2015/11/04(水) 13:12:49.86現在はwindowsでbatファイルを利用してuwscというフリーソフトを使って1.batを起動させて〜10秒後に2.batといった具合にやってます。
最近linuxでも開発を始めたいと思い同じようなことがしたいです。
シェルスクリプトでwindowsでやってるuwscのような制御ができないかなぁと思って質問させていただきました。
そんなめんどくさいことするよりlinuxならこのフリーソフト使って制御しとけみたいなのがあれば
教えていだだけると幸いです。
0138名無しさん@お腹いっぱい。
2015/11/04(水) 13:15:27.82この10秒後に、という処理自体をbatでやればいいんじゃないの?
なぜuwscを挟む必要があるの?
0139名無しさん@お腹いっぱい。
2015/11/04(水) 13:29:28.23独学でやってるうえに無知な状態からまだ2ヶ月くらいしか経ってないものでこのスレのレベルの方からしたら程度が低い質問かもしれませんが他に聞けるような環境がないもので;;
0140名無しさん@お腹いっぱい。
2015/11/04(水) 13:33:00.98ちなみにゲームの自動制御とか、その手の話だったら俺は降りる
0141飛来したオバハン
2015/11/04(水) 13:33:27.010142名無しさん@お腹いっぱい。
2015/11/04(水) 17:24:19.98例えばカレントディレクトリのスクリプトは、
./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
0143名無しさん@お腹いっぱい。
2015/11/04(水) 17:24:50.70それをアプリから起動するなら、GScript Lite とか使うんや。よー知らんけど
#!/system/bin/sh
./1.sh
sleep 10
./2.sh
ついで
@echo off
call 1.bat
ping localhost -n 11 > nul
call 2.bat
0144名無しさん@お腹いっぱい。
2015/11/04(水) 21:13:41.29やっぱりlinuxのほうが軽くて動作も安定してる感じなのでこれからはlinux中心にデバッグを行っていけたらと思います。
0145名無しさん@お腹いっぱい。
2015/11/08(日) 19:54:14.49raspbianだとTABに置き換わってるんだけど
Sientific Linuxだと\tのままなんだけど何でかわかる?
シェルスクリプトをそのまま持っていって実行したら
そんな感じになってた・・・
0146名無しさん@お腹いっぱい。
2015/11/08(日) 20:08:08.87echo の違いではない?
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 オプションを指定した場合、以下に示す、バックスラッシュの
エスケープ文字が解釈されるようになります。
0147名無しさん@お腹いっぱい。
2015/11/08(日) 20:14:18.70訂正
0148名無しさん@お腹いっぱい。
2015/11/08(日) 20:37:50.28確か実装したときにecho -eオプションは使っていたのですが
raspbianの/bin/shで実行すると
echo -e "test\ttest"
が
-e test test
になってしまっていろいろ試した挙句
-eいらないじゃんってことになったのを思い出しました
今は双方とも/bin/shを使っているのですが
上記のようになるのはraspbianの/bin/shだけで
/bin/bashを使うと双方とも期待したとおりの結果になりました
どこかのデストリのいずれかのシェルが
実は利用者が意識してるもの(パスが示すもの)と違うというのを
見た覚えがあるのですがraspbianの/bin/shだったかは思い出せません
継続して調べてみますが取り急ぎありがとうございました
0149名無しさん@お腹いっぱい。
2015/11/08(日) 22:14:22.18printf 'TAB\tTAB\n'
# 少なくとも dash/bash/zsh では printf は shell の builtin function
そういや、ファイルの中に
-n
だけの行があって、
cat hoge.txt | while IFS= read str
do
echo "$str"
done
ってしたらその行が出力されなくてハマったことがあった…
0150名無しさん@お腹いっぱい。
2015/11/09(月) 12:53:41.77どうやって回避したの?参考までに知りたい
0151名無しさん@お腹いっぱい。
2015/11/09(月) 18:25:32.860152名無しさん@お腹いっぱい。
2015/11/09(月) 22:29:31.56移植性重視ならprintf安定
とorilyに書いてあった
0153名無しさん@お腹いっぱい。
2015/11/11(水) 18:21:45.18単にファイル名にスペースが入っていただけだった
風俗行って頭をすっきりしてます
0154名無しさん@お腹いっぱい。
2015/11/11(水) 19:33:08.210155名無しさん@お腹いっぱい。
2015/11/12(木) 14:52:38.27今シェルスクリプトを作ってテキストファイルに書かれてある
URLからファイルをダウンロードしています
早くダウンロードしたいため多重(多重度は回線の帯域などを考慮して3〜15で任意で設定)で
ダウンロードしていますが全体の終了時間を早めたいため
ファイルサイズでソートして大きいファイルからダウンロードしています
ただこの方法だと初めの方に大きいファイルばかりダウンロードするため
成果が上がってるように見えません
またもっと効率のよい方法があるのではとも思っています
お勧めのダウンロード順(を求めるアルゴリズム)があれば教えてください
なおちょっとしたシェルスクリプトは書いていますが
やってることは以下のコマンドと大差はありません
xargs -P 10 -n 1 wget -nv -c < downlist.txt
私のほうで考えられるのはたとえば10多重の場合
大きいものからを5多重で
小さいものからを5多重で
順にダウンロードすることくらいでした
でもこの方法だと全体のダウンロード完了が
遅くなる可能性があると思います
0156名無しさん@お腹いっぱい。
2015/11/12(木) 15:11:44.910157名無しさん@お腹いっぱい。
2015/11/12(木) 15:27:23.69大きなファイルは時間がかかるので
複数ファイルを多重でダウンロードしても
最長時間になる可能性があるためです
たとえば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でループしながらダウンロードしているため
そのあたりの調整は楽にやれます
0158名無しさん@お腹いっぱい。
2015/11/12(木) 15:28:52.53この大きなファイルのダウンロードを最初からスタートさせれば
全体ダウンロード時間はこのファイルのダウンロード時間になるけど、
この大きなファイルのダウンロード開始を遅らせると
全体ダウンロード時間もそれだけ長くなることになるってことだよね
0159名無しさん@お腹いっぱい。
2015/11/12(木) 15:31:56.60そのとおりです
(大きなファイルはクリティカルパスになりえるってことです)
0160名無しさん@お腹いっぱい。
2015/11/12(木) 16:43:29.68> ただこの方法だと初めの方に大きいファイルばかりダウンロードするため
> 成果が上がってるように見えません
この場合の成果とはより短い時間で完了することであるわけだが
大きいファイルを先に転送すると短い時間で済む筈だったが実際には逆で
より長い時間掛かってしまうから何とかしたい、ということですか?
0161名無しさん@お腹いっぱい。
2015/11/12(木) 17:51:07.33大きいファイルが先だとはじめはなかなか進まないってことじゃないかな。
どんなコマンドでダウンロードしてるか知らないけど、
たいてい転送バイト数を出力できるはずだから、
頑張って出力を解析して計算すればいいかと。
あるいは手元のファイルサイズを監視したほうが早いか。
0162名無しさん@お腹いっぱい。
2015/11/12(木) 17:59:30.650163名無しさん@お腹いっぱい。
2015/11/12(木) 18:33:07.59その時、残りのファイルのダウンロード順はまだ決めない。
その10個のwgetのうち、どれか先に終了したもの(ファイルサイズ最小のもののことが多いがネット環境によりそうとは限らない)
について、その時点で残りのファイルのうちサイズ最大のものを割り当てて
ダウンロードさせる。
以下、残りファイルがなくなるまで繰り返し。
0164名無しさん@お腹いっぱい。
2015/11/12(木) 20:25:10.34ダウンロード時間があらかじめ分かっていたとしてもとても難しい問題。
数学苦手なのでテキトーに聞き流してもらえると助かるが、多分 NP hard って呼ばれる問題と
同等で、全通り試さないと厳密解は得られないんじゃね?
現実的には >>163 の言う貪欲法(greedy algorithm)的な?アルゴリズムが一番だろうな。
0165名無しさん@お腹いっぱい。
2015/11/12(木) 22:52:33.75自分側のバンド使い切っていないかとか、もっと条件詰めないと
そもそも議論出来ない気がするけど。
0166名無しさん@お腹いっぱい。
2015/11/13(金) 02:37:34.170167名無しさん@お腹いっぱい。
2015/11/13(金) 02:48:29.590168名無しさん@お腹いっぱい。
2015/11/13(金) 12:04:00.880169名無しさん@お腹いっぱい。
2015/11/13(金) 12:06:28.520170名無しさん@お腹いっぱい。
2015/11/13(金) 23:16:03.310171名無しさん@お腹いっぱい。
2015/11/14(土) 00:11:59.240172名無しさん@お腹いっぱい。
2015/11/14(土) 00:39:23.96ファイルを分割してダウンロードすればいい
0173名無しさん@お腹いっぱい。
2015/11/15(日) 12:35:05.13異常だったらtcp二階建てとかしてない限りロストしてるんだから
どんどん長くなるタイムアウトをボケっと待ってたって仕方がないじゃん
むしろ定期的に試行するようにしたほうが復旧を即感知できるんじゃないか?
0174名無しさん@お腹いっぱい。
2015/11/19(木) 07:18:13.65実行するのですが、許可がないとはねられます。パスワードを入力しろ、も出て
きません。
実行者はもちろん、visudoでUSER ALL=(ALL) ALLの権限を与えられています。
$sudo echo "abc" >> /path/a.txt
bash: /path/a.txt: 許可がありません
何が問題なのでしょうか?
0175名無しさん@お腹いっぱい。
2015/11/19(木) 07:28:16.93sudo sh -c 'echo "abc" >> /path/a.txt'
0176名無しさん@お腹いっぱい。
2015/11/19(木) 07:30:35.56ぐぐったら答え書いてありました。失礼しました。
最初のechoだけsudoで評価されて、リダイレクトはそうじゃないと。
0177名無しさん@お腹いっぱい。
2015/11/19(木) 09:35:05.07さんくすです。なるほど。
ググり先を参考に、evalを使いました。
また、引数が複数の場合も含めて、スクリプトにしました。
パイプを使わない分、>>175 さんのほうがスマートですね。
for i in "$@"; do
eval echo $"$i" | sudo tee -a /path/a.txt
done
0178名無しさん@お腹いっぱい。
2015/11/19(木) 09:36:39.66>ググり先を参考に、evalを使いました。
evalじゃなくて、teeだった。すんません
0179名無しさん@お腹いっぱい。
2015/11/19(木) 13:15:22.39sudo 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"
0180名無しさん@お腹いっぱい。
2015/11/19(木) 22:35:50.88スレ違い
というかシェルスクリプトにすれば問題ないのに
0181名無しさん@お腹いっぱい。
2015/11/20(金) 13:29:04.21スクリプトで使う要点の一行を書くのは、このスレでなくともよく有る事では?
sudo を使っていてスクリプト向けの行ではないって事かな?
0182名無しさん@お腹いっぱい。
2015/11/20(金) 13:42:47.00違うよ。
リダイレクトを含めてスクリプトに書いておけば
sudoで(リダイレクトの)問題が起きないという意味。
0183名無しさん@お腹いっぱい。
2015/11/20(金) 13:54:47.850184名無しさん@お腹いっぱい。
2015/11/20(金) 14:14:40.640185名無しさん@お腹いっぱい。
2015/11/20(金) 14:38:57.72スクリプトの意図がよくわからない
0186名無しさん@お腹いっぱい。
2015/11/20(金) 19:37:14.930187名無しさん@お腹いっぱい。
2015/11/20(金) 22:49:21.30test.txt
int main()
{
printf("\n");
}
int hoge()
{
モジモジ
文字文字
}
void pyo()
{
もじもじ
}
--------------
$コマンド test.txt hoge
モジモジ
文字文字
0188名無しさん@お腹いっぱい。
2015/11/21(土) 00:03:09.770189名無しさん@お腹いっぱい。
2015/11/21(土) 00:06:00.44#!/bin/sh
grep --null-data -Po "(^|\n).* $2\(.*?\)(.|\n)*?{(.|\n)*?\n\K(.|\n)+?(?=\n?})" "$1"
0190名無しさん@お腹いっぱい。
2015/11/21(土) 00:15:34.13ありません
というか、何のためにそういうコマンドが必要か書いた方が
的確なアドバイスもらえる可能性高そう
0191名無しさん@お腹いっぱい。
2015/11/21(土) 00:18:18.23保守性ゼロ、使い回せる可能性ゼロのいい見本だな
0192名無しさん@お腹いっぱい。
2015/11/21(土) 00:48:31.940193名無しさん@お腹いっぱい。
2015/11/21(土) 00:52:28.46できました、ありがとうございます!
>>190
目的は外部ファイルにある関数を調べたかったのでcatで連結して
一括で調べたかっただけなのです…
0194名無しさん@お腹いっぱい。
2015/11/21(土) 01:00:24.01え、できたのw ネタのつもりで書いたのにw
まぁ真面目な話、関数内にブロックがあったら途中でちょん切れるので気をつけて。
0195名無しさん@お腹いっぱい。
2015/11/21(土) 01:04:07.86if文とか無いの?
関数の中に
}
が有れば、そこで切れると思うよ
0196名無しさん@お腹いっぱい。
2015/11/21(土) 01:05:28.850197名無しさん@お腹いっぱい。
2015/11/21(土) 01:12:31.11"\n}" である、という条件なら以下で
grep --null-data -Po "(^|\n).* $2\(.*?\)(.|\n)*?{(.|\n)*?\n\K(.|\n)+?(?=\n})" "$1"
0198名無しさん@お腹いっぱい。
2015/11/21(土) 01:26:46.640199名無しさん@お腹いっぱい。
2015/11/21(土) 02:25:44.080200名無しさん@お腹いっぱい。
2015/11/21(土) 17:10:42.130201名無しさん@お腹いっぱい。
2015/11/21(土) 18:12:48.25例えば、以下のようなテキストで
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とかを使う必要があるのでしょうか…
0202名無しさん@お腹いっぱい。
2015/11/21(土) 18:21:02.93grep -E 'aaa|bbb.*ccc|ccc.*bbb' a.txt
0203名無しさん@お腹いっぱい。
2015/11/21(土) 18:27:53.77できました
「bbb.*ccc」「ccc.*bbb」という書き方が思いつきませんでした
ありがとうございました
0204名無しさん@お腹いっぱい。
2015/11/21(土) 18:57:13.66yacc(よく知らないんだけど)なんかは関係ない?使えないの?
0205名無しさん@お腹いっぱい。
2015/11/22(日) 19:30:02.7001.mp4
02.mp4
…
25.mp4
という動画ファイルがあります
それとは別のテキストファイル (List.txt) があり、内容は
orange 01「みかん」
orange 02「ぽんず」
…
orange 25「かんきつ」
動画ファイルを、テキストファイルから取得した文字列で
リネームしていきたいですが良い方法を知りたいです
sedやawkでも構いません
よろしくお願いします
環境はMac El Capitanです
0206名無しさん@お腹いっぱい。
2015/11/22(日) 20:11:25.81for i in {01..25}
do
mv $i.mp4 $(grep $i List.txt).mp4
done
0207名無しさん@お腹いっぱい。
2015/11/22(日) 20:56:26.91usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
というメッセージエラーで上手くいかなかったです
List.txtの空白スペースに対応してなかったようで
orange 01「みかん」→ orange01「みかん」にしておくと
うまくいきました
0208名無しさん@お腹いっぱい。
2015/11/22(日) 20:57:02.290209名無しさん@お腹いっぱい。
2015/11/23(月) 10:43:36.030210名無しさん@お腹いっぱい。
2015/11/23(月) 14:52:02.86私は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
}
0211名無しさん@お腹いっぱい。
2015/11/23(月) 14:53:07.970212名無しさん@お腹いっぱい。
2015/11/23(月) 15:08:42.76grepの-Pを使うといいと思う。
0213名無しさん@お腹いっぱい。
2015/11/23(月) 21:42:42.57bashism
このスレ的にだけでなく一般的にも
bash 依存のスクリプトには、#!/bin/bash を付けた方が良いよ
0214名無しさん@お腹いっぱい。
2015/11/24(火) 04:40:58.26echoを外してunset rをしてから行う事。
cat List.txt |while read
do
printf '%02d\n' $(( ++r )) |xargs -i echo mv {}.mp4 ${REPLY}.mp4
done
0215名無しさん@お腹いっぱい。
2015/11/24(火) 06:19:42.030216名無しさん@お腹いっぱい。
2015/11/24(火) 07:10:44.29じゃあちょっと分らないな。
0217名無しさん@お腹いっぱい。
2015/11/24(火) 07:13:51.390218名無しさん@お腹いっぱい。
2015/11/24(火) 07:15:07.670219名無しさん@お腹いっぱい。
2015/11/24(火) 08:53:18.61xargsが無駄です。
catが無駄です。
r=0
while read
do
: $((r++))
echo mv $(printf %02d $r).mp4
0220名無しさん@お腹いっぱい。
2015/11/24(火) 09:27:10.950221名無しさん@お腹いっぱい。
2015/11/24(火) 10:13:12.690222名無しさん@お腹いっぱい。
2015/11/24(火) 10:16:52.250223名無しさん@お腹いっぱい。
2015/11/24(火) 11:42:10.340224名無しさん@お腹いっぱい。
2015/11/25(水) 00:35:58.05bash でもいいなら
mapfile -t -O 1 -c 1 -C 'move(){ mv $(printf "%02d.mp4" "$1") "$2.mp4"; };move' < List.txt
0225200ではない
2015/11/25(水) 20:05:12.35:filter1; n; /[[:space:]]*{/n; の辺りについて
2行目に { が無い場合は、どちらを想定したのかしれないが、興味を引いた
たぶん前者だろうな。すると、古くから実際に使っていそうだね
int main(argc, argv)
int argc;
char *argv[];
{
int main(int argc, char *argv[]) {
0226名無しさん@お腹いっぱい。
2015/11/28(土) 10:55:16.58callback の中で関数定義してるよ。外でやるか、bash -c '...' にしろよ
mapfile -t -O 1 -c 1 -C 'bash -c '\''echo mv $(printf "%02d.mp4" "$0") "$1.mp4"'\' < List.txt
0227名無しさん@お腹いっぱい。
2015/11/29(日) 10:07:15.23sed: -e expression #1, char 2: 不明なコマンド: `-'
なして?
0228名無しさん@お腹いっぱい。
2015/11/29(日) 14:16:20.05sedのアドレスで $-3 とか使えませんw
head -n -4 で行けるよ。 ($-3から$までだから終りの4行削除)
0229名無しさん@お腹いっぱい。
2015/11/29(日) 18:57:29.270230名無しさん@お腹いっぱい。
2015/11/30(月) 06:01:18.54やっつけ仕事的な興味だと思うけれどまあ実際やっつけ仕事に使える。
書き留めたものの仕分けとかね。他にもhtml-xml-utilsというsoftwareに
hxpipe,hxunpipeというcommandが入ってるのだけど、その出力の処理にも使える。
はぁそろそろ現実世界に帰るか準備をぽつぽつするので帰ってきません。
0231名無しさん@お腹いっぱい。
2015/11/30(月) 09:32:38.39じゃ、この人は
http://qiita.com/takechika/items/b96eff5773ce9d9cc9b3
嘘書いてるわけねw
他のサイトでも、同様の記述見た事あるんだけどなー
0232名無しさん@お腹いっぱい。
2015/11/30(月) 11:51:54.22ネットで嘘が蔓延するのはよくあること。
他サイトは嘘をまるごとコピーして載せてるだけだろw
vi(ex)やedでは $-3 とか使えるので、それと混同してるんだろ。
0233名無しさん@お腹いっぱい。
2015/11/30(月) 12:19:42.130234名無しさん@お腹いっぱい。
2015/11/30(月) 13:05:21.61同様の記述ってどこ?
0235名無しさん@お腹いっぱい。
2015/12/01(火) 02:36:00.460236名無しさん@お腹いっぱい。
2015/12/01(火) 15:02:08.23そういうばか、死ねばいいのに。
0237名無しさん@お腹いっぱい。
2015/12/01(火) 15:30:51.280238名無しさん@お腹いっぱい。
2015/12/01(火) 15:39:36.30exで使えるからsedも使えるだろうとかセンス悪すぎる。
エンジニアの素質無い。
0239名無しさん@お腹いっぱい。
2015/12/01(火) 17:09:19.190240名無しさん@お腹いっぱい。
2015/12/01(火) 17:18:23.690241名無しさん@お腹いっぱい。
2015/12/01(火) 18:23:49.12最後に切る行数分だけバッファーすれば良い
0242名無しさん@お腹いっぱい。
2015/12/01(火) 21:49:07.761,$-3s/hoge/hage/
0243名無しさん@お腹いっぱい。
2015/12/01(火) 22:53:36.240244not 238
2015/12/02(水) 07:07:15.41それとは別に、sedではそういう処理には向かないというのは同意。
0245名無しさん@お腹いっぱい。
2015/12/02(水) 23:21:03.30sed -ne ':Lp; N; 1,4b Lp; P; D'
cutTail()
{
sed -ne '
:LoopToFillBuffer
N
1, '"$1"' b LoopToFillBuffer
P
D
'
}
0246名無しさん@お腹いっぱい。
2015/12/04(金) 00:22:12.57sed -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
http://sed.sourceforge.net/sed1line.txt
0247名無しさん@お腹いっぱい。
2015/12/04(金) 06:04:34.02-e オプションで複数に分ける意味ないだろ。
sed ':a;$d;N;2,10ba;P;D'
または
sed -n ':a;1,10!{P;N;D;};N;ba'
だけで行ける。
0248名無しさん@お腹いっぱい。
2015/12/04(金) 06:26:55.090249名無しさん@お腹いっぱい。
2015/12/04(金) 07:53:54.11つ 『Unix Shell Objects』
http://www.amazon.co.jp/dp/toc/0764570048
0250名無しさん@お腹いっぱい。
2015/12/07(月) 10:28:27.330251名無しさん@お腹いっぱい。
2015/12/07(月) 10:33:45.350252名無しさん@お腹いっぱい。
2015/12/07(月) 10:48:19.190253名無しさん@お腹いっぱい。
2015/12/07(月) 11:21:08.520254名無しさん@お腹いっぱい。
2015/12/07(月) 13:20:40.25スクリプトからブラウザ呼ぶの?
0255名無しさん@お腹いっぱい。
2015/12/07(月) 16:31:25.34うちではcurlが鉄板だわ
0256名無しさん@お腹いっぱい。
2015/12/07(月) 21:08:34.28http://stackoverflow.com/questions/9490872/is-wget-or-similar-programs-always-available-on-posix-systems
まあ、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
0257名無しさん@お腹いっぱい。
2015/12/07(月) 21:20:56.810258名無しさん@お腹いっぱい。
2015/12/07(月) 21:27:45.230259名無しさん@お腹いっぱい。
2015/12/07(月) 22:42:59.47SSL/TLSのためにもうひと工夫あるんだよな?
ボケ回答のウケ狙いじゃないよな?
0260名無しさん@お腹いっぱい。
2015/12/07(月) 23:08:08.800261名無しさん@お腹いっぱい。
2015/12/07(月) 23:43:57.130262名無しさん@お腹いっぱい。
2015/12/07(月) 23:52:00.25>>260に期待する
0263名無しさん@お腹いっぱい。
2015/12/07(月) 23:53:10.500264名無しさん@お腹いっぱい。
2015/12/08(火) 00:09:05.970265名無しさん@お腹いっぱい。
2015/12/08(火) 00:54:46.220266名無しさん@お腹いっぱい。
2015/12/08(火) 07:04:54.30{
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
0267名無しさん@お腹いっぱい。
2015/12/08(火) 07:25:22.83perlのモジュール使う
0268名無しさん@お腹いっぱい。
2015/12/08(火) 10:24:12.12それこそ環境選ばないか?
0269名無しさん@お腹いっぱい。
2015/12/08(火) 11:28:41.95もうほとんどなくなったなぁ
0270名無しさん@お腹いっぱい。
2015/12/08(火) 11:50:28.49もうほとんどなくなったなぁ
0271名無しさん@お腹いっぱい。
2015/12/08(火) 12:05:03.090272名無しさん@お腹いっぱい。
2015/12/08(火) 14:20:28.020273名無しさん@お腹いっぱい。
2015/12/08(火) 14:29:50.010274名無しさん@お腹いっぱい。
2015/12/08(火) 15:13:44.93>>256は動きそうなので合格だけどssl非対応なので不合格。
>>266はopensslコマンドがないので落第です。
もっと頑張ってくださいよ。
0275名無しさん@お腹いっぱい。
2015/12/08(火) 16:28:48.500276名無しさん@お腹いっぱい。
2015/12/08(火) 17:44:47.81>>250の条件は一番汎用的ということで完結しているので、それより解きやすい派生のお題だろう。
0277名無しさん@お腹いっぱい。
2015/12/08(火) 17:49:54.77つーか、なんか白けてきた。。。
0278名無しさん@お腹いっぱい。
2015/12/08(火) 17:50:49.650279名無しさん@お腹いっぱい。
2015/12/08(火) 17:55:37.06root# 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
0280名無しさん@お腹いっぱい。
2015/12/08(火) 18:25:47.790281名無しさん@お腹いっぱい。
2015/12/08(火) 18:28:57.450282名無しさん@お腹いっぱい。
2015/12/08(火) 19:30:56.44perl使いは社史編纂室に送られたw
0283名無しさん@お腹いっぱい。
2015/12/08(火) 19:31:25.90元々の条件
httpsでファイル入手するスクリプトで一番汎用的な書き方ってなんだろう?
後出し条件
4MBのルーターのtelnet接続で動く技で
0284名無しさん@お腹いっぱい。
2015/12/08(火) 20:02:22.82前者は汎用的、後者はカスタムで、条件が正反対だろうが
0285名無しさん@お腹いっぱい。
2015/12/08(火) 20:08:32.270286名無しさん@お腹いっぱい。
2015/12/08(火) 20:11:56.400287名無しさん@お腹いっぱい。
2015/12/08(火) 20:25:44.06違うからブランチだと言ってるんだろう。そもそも別人なので後出しも前田氏もない。
0288名無しさん@お腹いっぱい。
2015/12/08(火) 20:52:44.89別人が横から条件変えてるのか
何故に言い切るの?
あほらし。相手して損した
0289名無しさん@お腹いっぱい。
2015/12/08(火) 21:01:10.94250だけど何か質問ある?
0290名無しさん@お腹いっぱい。
2015/12/08(火) 21:16:23.39あればおしえてください
他のフィルタ系コマンドでも応用できるものだとよりよいです
0291名無しさん@お腹いっぱい。
2015/12/08(火) 21:38:58.20リテラシー低いよ
0292名無しさん@お腹いっぱい。
2015/12/08(火) 21:44:05.23(rm file; grep hoge >file) <file
Cygwinじゃ無理かも
0293名無しさん@お腹いっぱい。
2015/12/08(火) 21:47:39.67元ファイルまで失われるという欠陥もある
0294名無しさん@お腹いっぱい。
2015/12/08(火) 21:48:19.00>>279で条件提示したんだから、この中のコマンドで完結できる案を出しなさいよ
0295名無しさん@お腹いっぱい。
2015/12/08(火) 21:49:52.56できました(Cygwin64でも
ありがとうございます!
0296名無しさん@お腹いっぱい。
2015/12/10(木) 05:48:14.80find . -type f -name '*.txt' と
find . -name '*.txt' -type f は、どっち良いとかありますか?
0297名無しさん@お腹いっぱい。
2015/12/10(木) 07:16:13.77まじかw
ワロタ
0298名無しさん@お腹いっぱい。
2015/12/10(木) 07:31:45.64どっちでもいいよ
ほとんどプレーンファイルっていう普通の状況なら、
名前を先に判定したほうが計測できないレベルで速いかもしれない
0299名無しさん@お腹いっぱい。
2015/12/10(木) 08:02:20.09busybox組み込みのwgetは、軽くするため、httpsオプションなしでコンパイルされ
てるのかな。
0300名無しさん@お腹いっぱい。
2015/12/10(木) 08:48:45.97スクリプト使ってる人いますか?
0301名無しさん@お腹いっぱい。
2015/12/10(木) 09:01:58.85レギュラーファイル以外のディレクトリとかが1000万個あるなら、名前を比較しないで済む前者の方が良いかもしれない
0302名無しさん@お腹いっぱい。
2015/12/10(木) 12:39:47.97wgetがhttps対応したのは後出しなんじゃないか?
busyboxが登場した頃のwgetでは標準では無かったと思われ
0303名無しさん@お腹いっぱい。
2015/12/10(木) 12:53:18.770304名無しさん@お腹いっぱい。
2015/12/10(木) 13:12:18.13他の選択肢は?
0305名無しさん@お腹いっぱい。
2015/12/10(木) 13:38:24.81それ以上古い環境なんて考慮する必要ないよ
0306名無しさん@お腹いっぱい。
2015/12/10(木) 14:03:30.45なんと言われようとshが標準
0307名無しさん@お腹いっぱい。
2015/12/10(木) 15:56:58.29ありがとうございます、実質変わらないんですね。
気にしないことにします。
0308名無しさん@お腹いっぱい。
2015/12/11(金) 00:02:46.91wget: add support for https using "openssl s_client" as a helper Denys Vlasenko 2014-02-22
0309名無しさん@お腹いっぱい。
2015/12/11(金) 00:30:35.95そういう時は time コマンドを使って CPU 時間計測するというのも手だぞ。
0310名無しさん@お腹いっぱい。
2015/12/11(金) 01:31:31.62root@OpenWrt:/# wget https://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 こりゃムリゲーだわ
0311名無しさん@お腹いっぱい。
2015/12/11(金) 13:13:34.04おつかれちゃん。
というわけで、4MB ROMで、httpsの話題は糸冬了とさせていただきます。w
0312名無しさん@お腹いっぱい。
2015/12/12(土) 02:38:13.55ありがとうございます。
15000個のディレクトリと120000個のファイルが入ったディレクトリで
何度かやってみましたが特に違いはありませんでした。
0313名無しさん@お腹いっぱい。
2015/12/12(土) 12:37:42.64ちょっと待った、216KBあればスクリプト何行書けるよ?
前スレのRSA暗号のスクリプトの10倍程度に膨れたとしても余裕で入らないか?
0314名無しさん@お腹いっぱい。
2015/12/12(土) 14:30:14.68エラーメッセージ読めないなら黙ってなよ
0315名無しさん@お腹いっぱい。
2015/12/12(土) 14:35:22.38意味だと読み取れないなら黙ってろよ
0316名無しさん@お腹いっぱい。
2015/12/12(土) 16:50:31.02provisioning.shというファイルを作りvagrantを立ち上げたときの初期動作を指定しているのですが
sudo yum install postfix -y としたあと
sudo alternatives --config mta
とすると番号を聞かれるのですが、1番のpostfixを選びたい場合どう書けばいいのですか?
sudo yum install -yと書くと途中のyes/noをyにしてくれる、というようなことがしたいのですが
0317名無しさん@お腹いっぱい。
2015/12/12(土) 20:01:02.92ぷぷぷぷ、RSAの他に最低でも
楕円曲線暗号、メッセージダイジェスト、asn1デコーダ、エンコーダ、pemエンコーダ、デコーダー
作ってから言ってね。
0318名無しさん@お腹いっぱい。
2015/12/12(土) 20:44:59.01シェルスクリプトだけで作れない証明は?
0319名無しさん@お腹いっぱい。
2015/12/12(土) 21:06:08.70作って公開したら全員黙るよ
0320名無しさん@お腹いっぱい。
2015/12/13(日) 01:42:09.87ワクワク
0321名無しさん@お腹いっぱい。
2015/12/13(日) 02:03:11.750322名無しさん@お腹いっぱい。
2015/12/13(日) 02:21:22.86楕円曲線暗号は必須じゃないけど他は全部必要だよ。
0323名無しさん@お腹いっぱい。
2015/12/13(日) 03:26:03.62自分で作れないものを挙げろよ
0324名無しさん@お腹いっぱい。
2015/12/13(日) 07:04:17.98man alternatives
man update-alternatives
か何かで調べると --config 以外の非対話的オプションが有るが
それは使えない?
0325名無しさん@お腹いっぱい。
2015/12/13(日) 07:30:11.14キミが全部作って>>266相当を実証して見せれば、みんな黙るよ
0326名無しさん@お腹いっぱい。
2015/12/13(日) 08:06:26.59シェルスクリプトで openssl を実現しようと云う発想をする時点で、
しかも条件を提示したんだから解決方法を出せとか
(別の意味で)黙るよね
0327名無しさん@お腹いっぱい。
2015/12/13(日) 09:08:35.94で、お前は実装できるの?
0328名無しさん@お腹いっぱい。
2015/12/13(日) 11:05:38.72黙らなくていいよ。グズグズ言い続けて。
0329名無しさん@お腹いっぱい。
2015/12/13(日) 11:19:13.110330名無しさん@お腹いっぱい。
2015/12/13(日) 13:45:47.64思ってるんですが、もっとよい方法ありますか?
あとHP-UX 11iのbashでシェル変数OSTYPEは何になっているか、わかる方はいますか?
0331名無しさん@お腹いっぱい。
2015/12/13(日) 13:57:10.410332名無しさん@お腹いっぱい。
2015/12/18(金) 20:07:27.08telnet ネタコードにネタを重ねています
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
0333名無しさん@お腹いっぱい。
2015/12/18(金) 20:08:17.92#!/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
0334名無しさん@お腹いっぱい。
2015/12/19(土) 01:54:54.830335名無しさん@お腹いっぱい。
2015/12/20(日) 02:31:00.77とりあえずopenssl相当の処理なんて必要かな?
課題的には鯖から落とせればその相手が本物かどうかなんてどうでもいいんじゃない?
と言っても鍵は送る方が指定するみたいから肝心な暗号処理で手抜きは効かなそうだな。
処理自体は計算式で表現できたりする程度のものだけど、数がバカでかいからそのまま丸投げだと無理かも?
0336名無しさん@お腹いっぱい。
2015/12/20(日) 16:46:55.74やっと、コンソールから2chにかきこできるようになりました。
ま、Perl使ってですが。。。
改行ちゃんと入るかな?
0337名無しさん@お腹いっぱい。
2015/12/20(日) 18:14:25.11「UNIXでもメモリクリーニングはできる」と回答をもらった者です。
そこで早速perlを使って、perl -e 'while (1) { fork; }'
を実行してみました。
で、メモリクリーニングはいつ終るのでしょうか?
念のため、PCケースを開けてみましたが、
メモリ表面の汚れは取れていませんでした。
やはりUNIXはメモリクリーニングに対応していないのでしょうか?
0338名無しさん@お腹いっぱい。
2015/12/20(日) 19:12:40.940339名無しさん@お腹いっぱい。
2015/12/20(日) 21:35:35.99cpanのどれ利用した?
それとも使ってない
0340名無しさん@お腹いっぱい。
2015/12/20(日) 22:33:07.03in 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
0341名無しさん@お腹いっぱい。
2015/12/21(月) 16:40:57.79表面はきれいに見えても、接続口が汚れてることはよくある。
接続部の汚れはなかなか落ちないから4ヶ月ぐらい待ってみて。
0342名無しさん@お腹いっぱい。
2015/12/21(月) 18:49:28.81b=\' 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
http://c2.com/cgi/wiki?QuineProgram
0343名無しさん@お腹いっぱい。
2015/12/21(月) 23:00:15.84#!/bin/bash
while :
do
usr=`id | cut -d
0344名無しさん@お腹いっぱい。
2015/12/21(月) 23:01:19.62#!/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に表示を変更する方法はありますでしょうか?
0345名無しさん@お腹いっぱい。
2015/12/21(月) 23:56:53.33- or -
whoami
0346名無しさん@お腹いっぱい。
2015/12/22(火) 00:13:25.17とエスパー解釈した上で
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
0347344
2015/12/22(火) 00:15:04.92回答ありがとうございます。
該当部分をid -unやwhoamiに変更しても状況に変化は見られませんでした。
何か間違った書き方をしてしまっているのでしょうか。
0348344
2015/12/22(火) 00:22:29.80回答いただきありがとうございます。
こちらのほうで実現できました。
psの方から取得するということでしょうか。
whileループの中でidで取得していたので更新されると思っていたのですが
そうでもないようですね。
なぜかは理由はわかりませんが…。
回答いただきありがとうございました。
0349名無しさん@お腹いっぱい。
2015/12/22(火) 00:45:28.4910995 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 を起動していますが、これも別プロセスです
0350名無しさん@お腹いっぱい。
2015/12/22(火) 08:00:39.33それを使う手もある
以下の内容を適当なファイル(たとえば/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
してやればいい
0351348
2015/12/23(水) 08:30:02.70その後の回答を、試してみていろいろとわかりました。
Linuxなどにおける動作で幾つか思違いしているところもあり勉強になりました。
ありがとうございました。
0352名無しさん@お腹いっぱい。
2015/12/23(水) 23:18:50.990353名無しさん@お腹いっぱい。
2015/12/23(水) 23:40:21.980354名無しさん@お腹いっぱい。
2015/12/24(木) 04:08:04.270355名無しさん@お腹いっぱい。
2015/12/24(木) 12:24:50.59コンニチワ
0356名無しさん@お腹いっぱい。
2015/12/24(木) 18:48:12.28ワロタw
0357名無しさん@お腹いっぱい。
2015/12/24(木) 18:59:35.38>>339
>>336です。
LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use HTTP::Cookies;
ggrば出ます。
スレURIの最後の数字列、タイトルから検索して常に最新の数字列を内で取得するようにして、現状、
echo "ほげほげ" | 2ch_put.pl $SURE
で、投稿できるようにしてみた。嵐はしてないよ。
0358名無しさん@お腹いっぱい。
2015/12/24(木) 19:23:37.34常に0のような気がするが、そうじゃないんだな。
str=aaa や str="" は0だけど、失敗すると1か。
勉強になりますた
0359名無しさん@お腹いっぱい。
2015/12/25(金) 00:19:36.63thanks
0360名無しさん@お腹いっぱい。
2015/12/27(日) 12:03:43.83いつファイルがうまくreadされるタイミングとか
それから関係ないんですけどsedの-iってPOSIX非準拠ですか?
0361名無しさん@お腹いっぱい。
2015/12/27(日) 12:23:52.450362名無しさん@お腹いっぱい。
2015/12/27(日) 15:36:01.26いつって言ってもgrepがreadした時に読んでるのだが…。
たぶん分かってないのが、unixではファイルをオープンした状態でファイルを削除できるってこと
その場合ディレクトリエントリは消えるがファイル自体は残っているので
ファイルのread/writeは変わらず出来る
0363名無しさん@お腹いっぱい。
2015/12/27(日) 19:29:04.42外のシェルがopenする
中のシェルでrmがunlinkする
中のシェルがopenしてfileができる
grepがreadしてwriteする
grepがexitしてどっちもcloseする
0364名無しさん@お腹いっぱい。
2015/12/27(日) 19:29:18.22しかしエントリから消えたハードディスクのブロックは再利用可能な状態なわけですよね?
もしそうなら二回目にオープンしたとき領域が重なってしまうことはないのですか?
0365名無しさん@お腹いっぱい。
2015/12/27(日) 19:37:36.75closeして誰も参照しなくなるまではi-nodeも含めて再利用されないよ
0366名無しさん@お腹いっぱい。
2015/12/27(日) 19:56:03.56そうなのですか!初めて知りました
ありがとうございます!すっきりしましたよ!
0367名無しさん@お腹いっぱい。
2016/01/01(金) 11:20:57.19wget -O - 'http://artscene.textfiles.com/vt100/new_year.vt'| while IFS= read -r line; do echo "$line"; sleep 0.08; done
wget -O - 'http://mirror.bagelwood.com/textfiles/art/newyears.art'| while IFS= read -r line; do echo "$line"; sleep 0.08; done
0368名無しさん@お腹いっぱい。
2016/01/01(金) 22:44:41.53>>367
素晴らしい!
0369名無しさん@お腹いっぱい。
2016/01/02(土) 22:52:05.390370名無しさん@お腹いっぱい。
2016/01/14(木) 11:46:10.89テキストファイルだけのデータベースを作ろうと思ってます
どんなシェルスクリプトを書けばいいと思いますか
皆さんのお知恵をお貸しください
あとシス管系女子に登場するみんとちゃんのスリーサイズが分かりません
知っている人がいたら教えて下さい
よろしくお願いいたします
0371名無しさん@お腹いっぱい。
2016/01/14(木) 12:18:20.240372名無しさん@お腹いっぱい。
2016/01/14(木) 12:37:09.510373名無しさん@お腹いっぱい。
2016/01/14(木) 13:49:41.310374名無しさん@お腹いっぱい。
2016/01/14(木) 19:07:54.470375名無しさん@お腹いっぱい。
2016/01/14(木) 19:32:14.79cshでいいリファレンスはありませんか?
ネットが使えないのでWebページは無理です。
0376名無しさん@お腹いっぱい。
2016/01/14(木) 20:23:34.080377名無しさん@お腹いっぱい。
2016/01/14(木) 22:27:43.690378名無しさん@お腹いっぱい。
2016/01/14(木) 22:57:32.14もう30年近く前のことだけど…
それにしても開発環境がcshでネットが使えないって、ある意味すごいと思うw
0379名無しさん@お腹いっぱい。
2016/01/14(木) 23:03:15.63ネットがダメなら本しかないじゃないか
いま流通してるのって
http://www.amazon.co.jp/dp/4893620290
くらいかな
0380名無しさん@お腹いっぱい。
2016/01/14(木) 23:24:27.930381名無しさん@お腹いっぱい。
2016/01/14(木) 23:24:38.540382名無しさん@お腹いっぱい。
2016/01/15(金) 00:15:28.220383名無しさん@お腹いっぱい。
2016/01/15(金) 11:42:41.05もともとのボケからすべってるじゃん
0384名無しさん@お腹いっぱい。
2016/01/15(金) 14:57:47.220385名無しさん@お腹いっぱい。
2016/01/15(金) 15:21:01.14マスタリングcshは目の前に転がってるが、他にも合った気がするが
みつからない。
0386名無しさん@お腹いっぱい。
2016/01/15(金) 15:29:47.22ここの住人がやったら半殺し
0387名無しさん@お腹いっぱい。
2016/01/15(金) 15:51:51.830388名無しさん@お腹いっぱい。
2016/01/15(金) 16:08:50.970389名無しさん@お腹いっぱい。
2016/01/15(金) 21:52:13.77SunOS でログインシェルは、csh がデフォで tcsh に切り替え
0390名無しさん@お腹いっぱい。
2016/01/15(金) 21:54:24.420391名無しさん@お腹いっぱい。
2016/01/15(金) 22:29:29.27でも短いスクリプトなら、配列が使えたりとかshより便利なケースがないでもない
>>375
manは入ってないの?
0392名無しさん@お腹いっぱい。
2016/01/17(日) 00:38:52.85bashは使えるよね、二次元配列も
0393名無しさん@お腹いっぱい。
2016/01/17(日) 13:36:42.66こういったポータビリティに関することを一発でチェックするための自動テストスイートってないものかね。
それがあればシェルの比較表もすぐに作れると思うんだが。
0394名無しさん@お腹いっぱい。
2016/01/17(日) 15:16:57.76>>6 というか checkbashisms
http://manpages.ubuntu.com/manpages/wily/en/man1/checkbashisms.1.html
0395名無しさん@お腹いっぱい。
2016/01/21(木) 07:44:44.20GNU のコマンドは機能拡張しまくっていて、UNIX 哲学が云々
grep -o -p とかダメだろうな(と思って調べると、OpenBSD は -o を持っているのか)
http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/egrep.1?query=grep
0396名無しさん@お腹いっぱい。
2016/01/21(木) 09:51:46.270397名無しさん@お腹いっぱい。
2016/01/21(木) 21:38:36.72-hでヘルプ、-vでバージョン見るくらいは統一してほしい
0398名無しさん@お腹いっぱい。
2016/01/22(金) 09:43:42.93ほんとになw
0399名無しさん@お腹いっぱい。
2016/01/22(金) 10:23:07.080400名無しさん@お腹いっぱい。
2016/01/22(金) 21:11:00.15今後も長く使われて行く事を考えると、ある程度統一してほしいなあ
特定の環境変数が定義されている時に限り
統一されたオプションにするとか
0401名無しさん@お腹いっぱい。
2016/01/23(土) 00:27:07.840402名無しさん@お腹いっぱい。
2016/01/23(土) 16:57:11.77でも今度から意識してみよっと
ちょっと暇つぶし
list of coreutils (Linux, depends dpkg)
dpkg -L coreutils | sed -ne '\@bin/@s@^.*bin/@@p' | xargs man -f
whatis $( which who )
0403名無しさん@お腹いっぱい。
2016/01/23(土) 19:06:44.06http://www.gnu.org/software/coreutils/manual/html_node/Common-options.html
‘--help’ ヘルプ
‘--version’ バージョン
‘--’ オプションリスト区切り
0404名無しさん@お腹いっぱい。
2016/01/23(土) 19:21:27.03そういうことじゃないだろ…
0405名無しさん@お腹いっぱい。
2016/01/24(日) 00:23:36.03GNU系コマンド以外には通用しないケースある
0406名無しさん@お腹いっぱい。
2016/01/28(木) 05:58:34.66http://i.stack.imgur.com/oSyyX.png
元をちょっといじりました。少し無駄が減ったかな
while ! { IFS=:; ls $PATH; } | shuf -n 1 | xargs 2> /dev/null whatis -ls 1,6,8; \
do :; done |
cowsay -f $( ls /usr/share/cowsay/cows | shuf -n 1 )
元ネタ
Are there any games which can train people to learn terminal commands? - Ask Ubuntu
http://askubuntu.com/questions/337300/are-there-any-games-which-can-train-people-to-learn-terminal-commands
> cowsay -f $(ls /usr/share/cowsay/cows | shuf -n 1 | cut -d. -f1) $(whatis $(ls /bin) 2>/dev/null | shuf -n 1)
0407名無しさん@お腹いっぱい。
2016/01/28(木) 06:13:04.210408名無しさん@お腹いっぱい。
2016/01/28(木) 08:36:56.70BSD系ならsort -Rで代替できるかな。
0409名無しさん@お腹いっぱい。
2016/01/28(木) 09:53:14.50以下のコマンドより冴えた方法ある?
pgrep -f 'sh script.sh' | xargs kill
これで不満なのはシェルスクリプトが実行されてなかった場合
USAGEが出ちゃうところくらい
0410名無しさん@お腹いっぱい。
2016/01/28(木) 11:04:04.770411名無しさん@お腹いっぱい。
2016/01/28(木) 11:35:34.210412名無しさん@お腹いっぱい。
2016/01/28(木) 11:50:19.160413名無しさん@お腹いっぱい。
2016/01/28(木) 16:03:14.05帰ってから試してみる
0414名無しさん@お腹いっぱい。
2016/01/30(土) 08:10:48.00#!/bin/sh
while :
do
# Get Time
time=
0415名無しさん@お腹いっぱい。
2016/01/30(土) 08:14:07.46time=$(tail -n4 check_date.dat)
COLOR=`tput setaf 5; tput smso`
echo -n -e "\033[s"
tput cup ${TCUP_CNT}
NORMAL=`tput sgr0`
echo -n $COLOR$time$NORMAL
echo -n -e "\033[u"
# Interval
sleep 1
done
check_date.dat
tokyo 23:23:23
Mexco 12:12:12
frans 05:50:05
といったデータとなります。
取得方法はいくつかかえてみましたがダメでした。
tputで改行表示する方法があればアドバイスいただけると助かります。
0416名無しさん@お腹いっぱい。
2016/01/30(土) 09:44:44.08気になる点を上げておいた
echo -n $COLOR$time$NORMAL
だと、エスケープされていないので、$time に含まれる改行文字がスペースに置換される
echo -e は bash だろうから、#!/bin/bash にする
新しく書くスクリプトでは `...` よりも $(...) を使うのが望ましい
ループ中で、変わらない変数を定義しない
(確か sgr0 がリセットかなんかで変わらなかったとして)
0417名無しさん@お腹いっぱい。
2016/01/30(土) 09:50:10.42> echo -e は bash だろうから、#!/bin/bash にする
#!/bin/sh のままで printf を使う方が良いかな
0418名無しさん@お腹いっぱい。
2016/01/30(土) 09:50:11.74smb上のNASにあるファイルをSDカードにコピペしたいけど、コピーする順番がファイル名昇順でないと不具合が出るので、エクスプローラーではダメなんです。
cpコマンドにNASにあるファイルを指定する方法を教えてください。
0419名無しさん@お腹いっぱい。
2016/01/30(土) 10:03:02.46find sort awk cut xargs 等を組み合わせる
0420名無しさん@お腹いっぱい。
2016/01/31(日) 10:50:47.29topコマンドやuptimeコマンドで得られるload average
ですが、特定の顧客向けにWebで情報ながしてるサーバーの
それが、普通で10.00、ひどいときには30.00とかになったり
します。
このload average、つまり平均負荷が無名数ですが、何を表して
いると考えたらよいでしょうか? dBって事はないですよね。。。
0421名無しさん@お腹いっぱい。
2016/01/31(日) 11:10:19.25待ち行列の長さ
0422名無しさん@お腹いっぱい。
2016/01/31(日) 14:36:00.53http://d.hatena.ne.jp/keyword/%A5%ED%A1%BC%A5%C9%A5%A2%A5%D9%A5%EC%A1%BC%A5%B8
0423名無しさん@お腹いっぱい。
2016/01/31(日) 16:34:32.83ありがとうございます。
>ロードアベレージが1以下であれば正常といわれていたが、
>最近のマルチコアCPUにおいては読み方が変わってきている。
なるほど、、、わかったようなわからんような。。。どう変わってきてる
か、知りたい。。。w
ま、いずれにしても、高負荷状態が続いているとみるべきなんですね。
0424名無しさん@お腹いっぱい。
2016/01/31(日) 21:07:22.79もう少し読めよ
http://d.hatena.ne.jp/naoya/20070518/1179492085
0425名無しさん@お腹いっぱい。
2016/01/31(日) 21:09:13.08uptime(1) - Linux manual page
http://man7.org/linux/man-pages/man1/uptime.1.html
0426名無しさん@お腹いっぱい。
2016/02/02(火) 07:53:41.39さんくすです。
2コアだから、負荷は半分にした値を考えておけばいいのかな。
>注目するのは、待ちタスク数を数え上げるのにすべてのキューを見て
>合計する一方、その後出力するまでに CPU の数でその値を割ったりは
>していない、という点です。...ロードアベレージは割り算をしていない
0427名無しさん@お腹いっぱい。
2016/02/02(火) 07:57:31.80頑張って読みます。どもです。
0428名無しさん@お腹いっぱい。
2016/02/02(火) 09:57:29.33OSのしくみをほんの少しでも勉強したほうがいいよ
特にタイムシェアリングとかプロセス管理のあたり
0429名無しさん@お腹いっぱい。
2016/02/02(火) 11:43:42.95別に割る必要はないと思うけど
どれくらい溜まってるかを知りたいならだけど
0430名無しさん@お腹いっぱい。
2016/02/02(火) 17:43:21.96と思っています。
そこで、pythonかbashのどちらを選ぶかで迷っています。
今日pythonパイソンの有名どころの本をみたら外部コマ
ンドの利用についての記述が少なくてがっかりしました。
素直に以下の本を読むべきなのでしょうか?
それともpythonの勉強して、ネット上で外部コマンドの
利用を紹介したサイトも勉強すべきなのでしょうか?
アドバイスお願いします
http://www.amazon.co.jp/gp/product/4797321946/ref=ox_sc_act_title_1?ie=UTF8&psc=1&smid=AN1VRQENFRJN5
0431名無しさん@お腹いっぱい。
2016/02/02(火) 18:59:58.26マルチ
http://hayabusa6.2ch.net/test/read.cgi/linux/1452251761/324
0432名無しさん@お腹いっぱい。
2016/02/02(火) 20:16:40.85何をしたいかによる
0433名無しさん@お腹いっぱい。
2016/02/02(火) 21:43:18.36レスありがとうございました。マルチってそんなにいけないことなん
ですね。失礼しました。
5年以上ぶりぐらいに2chに戻ってたんで驚いてます。
板にもよるのでしょうが。
こちらだけにすればよかったです。
432さんのおしゃる通りだと思います。自分にとってはコマンド
利用してみたいので、まずはbashにしようかなと思ってます。
0434名無しさん@お腹いっぱい。
2016/02/02(火) 22:48:53.080435名無しさん@お腹いっぱい。
2016/02/02(火) 23:02:32.01329 名前:324[sage] 投稿日:2016/02/02(火) 21:44:34.24 ID:KBWlYUE4 [2/2]
失礼しました。
ルール知りませんでした。5年以上2chやっていなかったので。
330 名前:login:Penguin[sage] 投稿日:2016/02/02(火) 22:53:07.59 ID:tNcqGKOV
>>329
5年前でもマルチはアカンかったでしょ
331 名前:login:Penguin[] 投稿日:2016/02/02(火) 22:54:56.17 ID:9nG661Lj [2/2]
2chに限らずどこでも嫌われるでしょ
332 名前:login:Penguin[sage] 投稿日:2016/02/02(火) 23:00:54.39 ID:ZV8eeIqB [2/2]
本人はそう思ってないんだろう
死ね
0436名無しさん@お腹いっぱい。
2016/02/03(水) 00:07:58.02スクリプトを色々と探してきて、長さ順にリストアップする
{ IFS=:; find $PATH; } | xargs readlink -e | xargs file | grep ' script' |
while IFS= read -r line
do echo "$(
echo "$line" | cut -d : -f 1 | xargs wc -l
)$(
echo "$line" | cut -d : -f 2
)"; done |
sort -k1gr,1
0437名無しさん@お腹いっぱい。
2016/02/03(水) 06:35:39.85どっちも並行してやるべき。
0438名無しさん@お腹いっぱい。
2016/02/04(木) 06:50:05.93もうpythonでいいや
0439名無しさん@お腹いっぱい。
2016/02/04(木) 08:44:03.15pythonは後付けのなので、そのうちなくなるかもしれません。
Windowsにはそういうものがありました。
0440名無しさん@お腹いっぱい。
2016/02/04(木) 08:55:41.670441名無しさん@お腹いっぱい。
2016/02/04(木) 09:06:11.160442名無しさん@お腹いっぱい。
2016/02/05(金) 01:28:36.41vimの拡張にpythonが採用されてることを知らないのか…
0443名無しさん@お腹いっぱい。
2016/02/05(金) 02:35:34.810444名無しさん@お腹いっぱい。
2016/02/05(金) 02:49:11.380445名無しさん@お腹いっぱい。
2016/02/05(金) 04:13:16.680446名無しさん@お腹いっぱい。
2016/02/06(土) 04:39:26.36方言覚えるのとPython覚えるの、労力そんなに違うか?
0447名無しさん@お腹いっぱい。
2016/02/06(土) 06:08:30.34pythonとは格が違う。
0448名無しさん@お腹いっぱい。
2016/02/06(土) 09:18:43.540449名無しさん@お腹いっぱい。
2016/02/06(土) 17:24:54.450450名無しさん@お腹いっぱい。
2016/02/06(土) 18:52:59.16bashがbshのマネをする変なスクリプトたがら推奨しない。
0451名無しさん@お腹いっぱい。
2016/02/06(土) 18:54:27.39スクリプトの種類を名乗る
0452名無しさん@お腹いっぱい。
2016/02/06(土) 19:55:26.03バッドノウハウ使いの老害は早く死んで欲しい
0453名無しさん@お腹いっぱい。
2016/02/06(土) 20:35:47.850454名無しさん@お腹いっぱい。
2016/02/06(土) 21:23:44.470455名無しさん@お腹いっぱい。
2016/02/07(日) 04:25:51.93/usr/binと/binは基本的に一緒だが、環境によっては違うんじゃないの?
0456名無しさん@お腹いっぱい。
2016/02/07(日) 12:45:47.230457名無しさん@お腹いっぱい。
2016/02/07(日) 18:02:30.900458名無しさん@お腹いっぱい。
2016/02/07(日) 19:26:38.34/binと/sbinはシンボリックリンクで残ってる
0459名無しさん@お腹いっぱい。
2016/02/08(月) 08:20:49.74pythonなぞいらなくなる
0460名無しさん@お腹いっぱい。
2016/02/08(月) 10:14:57.970461名無しさん@お腹いっぱい。
2016/02/08(月) 10:31:10.92おっさんの可能性もある。
0462名無しさん@お腹いっぱい。
2016/02/08(月) 10:49:58.880463名無しさん@お腹いっぱい。
2016/02/08(月) 12:25:26.78幅が広けりゃいいんでしょ的なやっつけフォントや固定幅フォントを使って表示してると
バランスが悪いのでそうなる
0464名無しさん@お腹いっぱい。
2016/02/08(月) 12:34:34.64裸の王様だからかな
0465名無しさん@お腹いっぱい。
2016/02/08(月) 13:02:09.16実際には、実行するコマンドラインを指定するもの
以下、補足
例えばこのスクリプトで試すと
$ cat ~/src/test/script
#!../bin/echo "hoge"
'fuga'
$ pwd
/usr
$ ~/src/test/script 'arg 1' "arg 2"
"hoge" /home/anonymous/src/test/script arg 1 arg 2
上では、結果的に
相対パス/echo "hoge" 引数0 引数1 引数2
が実行された結果が印字されている
普通に #!/bin/sh なスクリプトだと、結果的に実行されるのは次
/bin/sh path/to/スクリプト名 引数1 引数2 ...
0466名無しさん@お腹いっぱい。
2016/02/08(月) 13:23:29.92shebangが種類を名乗るって何のこと?
そのスクリプトを処理するインタプリタを(引数込みで)指定する
以外の説明みたことないけど
0467名無しさん@お腹いっぱい。
2016/02/08(月) 15:38:21.12>>449 !/usr/bin/shと書いてシェルスクリプトを名乗るのか。
>>451 スクリプトの種類を名乗る
>>465 shebang 行は、種類を名乗るといえば名乗っているけれど、
0468名無しさん@お腹いっぱい。
2016/02/08(月) 17:11:40.36#!/usr/bin/bash -x
とかね。
0469名無しさん@お腹いっぱい。
2016/02/08(月) 20:55:16.08それなら俺もお前も大体の奴が知ってる。
0470名無しさん@お腹いっぱい。
2016/02/08(月) 23:06:27.570471名無しさん@お腹いっぱい。
2016/02/09(火) 00:18:04.86curlで、サーバに置いてあるファイルを削除したいのですが、
curl -Q "DELE a.txt" host.sample.com
curl -Q 'DELE a.txt' host.sample.com
これだと動きました。
スクリプトで回したいときなどで変数に格納した場合で、
string="-Q 'DELE a.txt'"
curl ${string} host.sample.com
これだと、-Q以降の「 ”〜〜〜” 」で囲われた引数が伝わらないようで、動きませんでした。
> DELE
< 501 Invalid number of arguments
と返答がありました。
「"」そのものや「'」を変数で伝えるのは、一般的にどのように記述すればよいでしょうか。
記号で検索しても、なかなか情報が出ず、ヒントをお願いできればと思います。
0472名無しさん@お腹いっぱい。
2016/02/09(火) 02:34:23.06curl "-Q 'DELE a.txt'" host.sample.com
ってことじゃん。
コマンドオブションが引数扱いってわけですね。
0473名無しさん@お腹いっぱい。
2016/02/09(火) 06:18:16.59eval curl ${string} host.sample.com
あるいは
set x -Q 'DELE a.txt'
shift
curl "$@" host.sample.com
0474名無しさん@お腹いっぱい。
2016/02/09(火) 06:31:19.45とりあえず貼っておく
eval を使う
展開されたくない所は、何も考えずにシングルクォートしておく
$ set -vx #とりあえずデバッグ用に
$ opt471="-Q 'DELE a.txt'"
$ sh -c 'for arg; do echo "$arg"; done' parseArgs ${opt471} #質問時の状態
$ eval 'sh -c '\''for arg; do echo "$arg"; done'\'' parseArgs '${opt471}
set も使う
$ eval set -- ${opt471}
$ sh -c 'for arg; do echo "$arg"; done' parseArgs "$@"
bash の配列を使っても良い
$ opt471=(-Q 'DELE a.txt')
$ bash -c 'for arg; do echo "$arg"; done' parseArgs "${opt471[@]}"
0475名無しさん@お腹いっぱい。
2016/02/09(火) 12:13:30.71autoconf では set x ...; shift をすすめている
少し訂正
eval の際のクォートが抜けていた。連続した空白等で違いが出る
sh -c だと見難いので、function で書きなおした
$ parseArgs () { i=0; for arg; do echo "arg[$((i+=1))]: $arg"; done; }
$ opt471="-Q 'DELE (spaces) a.txt'"
$ eval parseArgs "${opt471}"
$ eval set -- "${opt471}"
$ parseArgs "$@"
ついでにIFS を使うもの
$ LF='
'
$ opt471='
-Q
DELE a.txt
'
$ IFS=$LF; parseArgs $opt471 'another option' 'more...'
0476名無しさん@お腹いっぱい。
2016/02/09(火) 17:36:27.79>>472-475
たくさんの方法を、ありがとうございます!
のちほど実験してみます。
0477名無しさん@お腹いっぱい。
2016/02/09(火) 19:11:23.150478名無しさん@お腹いっぱい。
2016/02/09(火) 20:55:40.83curl -Q "$*" host.sample.com
を関数かスクリプトにするかなぁ
単独でも使えそうだし
0479名無しさん@お腹いっぱい。
2016/02/09(火) 23:45:01.02結局の所
変数からクォートを考慮して単語分割するには、eval を使う
配列(もどき)に入れるには set か val=(...) もしくは改行区切り等
eval 無しだと、sed perl ruby 辺りで自力で単語分割
簡単なものなら xargs も使えるか
0480名無しさん@お腹いっぱい。
2016/02/11(木) 07:29:09.80cu -l /dev/ugen0.2 > 160211.log
のコマンドを開始し、
23時間後の午前0時に停止する、というシェルスクリプトを作りたいと思っています。
ログファイルの名前は午前1時の時点の日付が入ります。
ここで質問なのですが、
指定した時刻でコマンド(cu)の起動、停止をするにはどうすれば良いのでしょうか?
OS:FreeBSD10.2-RELEASE
シェル:sh
です。
0481名無しさん@お腹いっぱい。
2016/02/11(木) 09:25:45.48cronやat
0482名無しさん@お腹いっぱい。
2016/02/11(木) 13:08:07.53ありがとうございます!!
これで幸せになれます!!
0483480
2016/02/12(金) 08:51:56.08結局、
・起動はcron
・cuからminicomに変更
・minicomのソフト改造
・ログファイルを設定なしで保存するように改造
・時間を見て終了するように改造
・タイムスタンプを設定なしでつけるように改造
で落ち着きそう。
うーんせっかくの有休だが、午前中はFreeBSDになりそうだ。
0484名無しさん@お腹いっぱい。
2016/02/12(金) 09:40:24.870485名無しさん@お腹いっぱい。
2016/02/12(金) 09:42:07.41うろ覚えだけど
0486名無しさん@お腹いっぱい。
2016/02/12(金) 10:21:20.12それをcronから呼び出したらどうかな
起動する時はrun_cu start、停止する時はrun_cu stopみたいな形で
で、起動する時に
cu -l /dev/ugen0.2 > 160211.log &
echo $! > /var/run/lock/run_cu.lock
とやっておいて、停止するときは
kill -HUP $(cat /var/run/lock/run_cu.lock)
みたいにすれば(要するに/etc/init.dにあるデーモンの起動スクリプトみたいな感じ)
0487名無しさん@お腹いっぱい。
2016/02/12(金) 11:56:41.13スクリプトでプロセスIDが調べられないとかじゃないよね?
あとユーザが違っててrootのプロセスkillしようとしてるとか?
0488名無しさん@お腹いっぱい。
2016/02/12(金) 13:36:32.980489480
2016/02/12(金) 20:39:39.88minicomの改造と、ログファイルの処理ソフト作るのに丸一日かかった。
1日vi使ってたから2chに書き込むのもj,k,l,hでカーソル移動したくなる。
>>484>>487>>488
うん・・・。できたり、できなかったり。
なんかcu -l /dev/ttyU0 > /unko/tinko/manko/log.txtを実行して、
ps ax | grep cu | grep -v grep
で、2つ出てきたり、出てこなかったり。
で、2つ出る場合には片方をkillしようとするとそんなプロセスないとか言われたり。
なんかもう、良く分からなくて投げ出しました。
>>485
SIGHUP知りませんでした。
minicomのソースの終了処理の中に
SIGHUPなんちゃらと書いてあったので、多分それが正解ですね。
いやぁ、SIGHUPで四苦八苦しました。
>>486
それスマートですね。私が作ったやつよりもw
ただ、まぁ、minicom使ったことでタイムスタンプ入れれたので、良しとします。
0490480
2016/02/12(金) 20:42:48.13Xbeeってやつに温度センサーをつないで、無線で親機のXbeeに飛ばして、
親機からPCにシリアルで温度センサーの値を送信するシステムです。
で、ログファイルをsambaにおいておいて、別のPCから見る感じです。
テスト用に温度センサーは1個ですが、部屋中に設置する予定です。
0491名無しさん@お腹いっぱい。
2016/02/13(土) 00:30:17.310492名無しさん@お腹いっぱい。
2016/02/13(土) 02:17:17.74pkillでできなかったの?
0493名無しさん@お腹いっぱい。
2016/02/13(土) 02:27:10.99やり方はループするなりsleepで間隔あけたりまちまちだけど
以下cuのマニュアルだけど仕様を理解するって大事だね
> リ モートシステムとの間でコネクションが設定された場合、 cu
> は 2 プロセスを fork します。1 プロセスは、ポートからの デ
> ー タ読みだしと端末へのデータ書き込みを行ない、もう 1 プロ
> セスは、端末からのデータ読み出しとポートへのデータ書き込み
> を受け持ちます。
0494名無しさん@お腹いっぱい。
2016/02/13(土) 21:20:59.35次のような記述のとき、
この%はどのように解釈したらいいのでしょうか?
OLDPATH=(../help/me)
NEWPATH = $(OLDPATH:../%=./%_fuga)
文字列置換に使う場合と違うようですし、
調べても文字列置換以外に定義がでてきませんでした。
よろしくお願いします。
0495名無しさん@お腹いっぱい。
2016/02/13(土) 22:07:33.70[user@f23 ~]$ OLDPATH=(../help/me)
[user@f23 ~]$ NEWPATH = $(OLDPATH:../%=./%_fuga)
bash: OLDPATH:../%=./%_fuga: そのようなファイルやディレクトリはありません
bash: NEWPATH: コマンドが見つかりませんでした...
0496名無しさん@お腹いっぱい。
2016/02/13(土) 22:26:10.26より
${parameter%word}
${parameter%%word}
パターンに後方一致した部分を取り除く。 word が展開され、パス名展開の場合と同じようなパターンを作ります。
このパターンが parameter を展開した値の末尾の部分とマッチする場合、展開結果は parameter を展開した値から
最短一致パターン (``%'' の場合) または最長一致パターン (``%%'' の場合) を取り除いたものになります。 parameter
が @ または * である場合、 パターンを削除する操作は全ての位置パラメータに順番に適用され、 展開結果はリストとして
得られます。 parameter が @ または * が添字になっている配列変数である場合、 パターンを削除する操作は配列の全て
の要素に順番に適用され、 展開結果はリストとして得られます。
$()じゃなくて${}だんべな。
私は良くわかんない。後は詳しい人にまかせた。
0497名無しさん@お腹いっぱい。
2016/02/13(土) 22:38:34.46なんでOLDPATH=の閉じカッコを半角に、そこだけ改変しちゃったの?
0498名無しさん@お腹いっぱい。
2016/02/14(日) 00:07:40.09どこでそういう記述を見つけたのかな
0499名無しさん@お腹いっぱい。
2016/02/14(日) 04:49:47.490500名無しさん@お腹いっぱい。
2016/02/14(日) 06:05:22.06例示を見直して提示し直さない限り、どうにもならんな
0501名無しさん@お腹いっぱい。
2016/02/14(日) 08:13:57.65金払って仕事してもらえ
0502名無しさん@お腹いっぱい。
2016/02/14(日) 09:11:58.95という相対パスで指定されたファイルを実行し、その結果の前に=をおいてNEWPATHというコマンドを実行する
0503名無しさん@お腹いっぱい。
2016/02/14(日) 14:58:59.31Makefile 全体とは言わんがもっと前後貼れよ
0504名無しさん@お腹いっぱい。
2016/02/15(月) 05:51:37.58ここを釣り堀にする奴がいるとは思わなかったwww
そういえば Makefile を書いている時は似てるなあって思ったな
0505503
2016/02/17(水) 23:08:47.15釣りだったってことかな。 イコールの前後に空白いれたり入れなかったりだったし。
一応 make/Makefile での動作例。
$ cat Makefile
OLDPATH = ( ../datadir1 ../datadir2 )
NEWPATH = $(OLDPATH:../%=../%_fuga)
all:
@echo "$(NEWPATH)"
$ make
( ../datadir1_fuga ../datadir2_fuga )
%の使い方は
http://quruli.ivory.ne.jp/document/make_3.79.1/make-jp_5.html
の 6.3.1節を参照しました。
0506名無しさん@お腹いっぱい。
2016/02/23(火) 08:45:41.830 #!!!
BASH4.2 $> echo $((1 != 2))
1 #!!!
BASH4.2 $> a=0
BASH4.2 $> echo $a
0
BASH4.2 $> echo $((a++))
0 #?
BASH4.2 $> echo $((a++))
1
BASH4.2 $> echo $((a++))
2
BASH4.2 $> echo $((a++))
3
BASH4.2 $> echo $((a--))
4 #!!!!
BASH4.2 $> echo $((a--))
3
0507名無しさん@お腹いっぱい。
2016/02/23(火) 10:11:09.22シェルスクリプトの真偽値の表現と後置演算子の意味くらい覚えておけ
0508名無しさん@お腹いっぱい。
2016/02/24(水) 08:11:13.700
$ a=0; echo $((++a))
1
0509名無しさん@お腹いっぱい。
2016/02/24(水) 16:41:23.490510名無しさん@お腹いっぱい。
2016/02/25(木) 07:06:49.38( ´∀`): コマンドが見つかりません
0511名無しさん@お腹いっぱい。
2016/02/26(金) 20:53:20.570512名無しさん@お腹いっぱい。
2016/02/26(金) 22:13:00.200513名無しさん@お腹いっぱい。
2016/02/26(金) 22:23:19.782
0514名無しさん@お腹いっぱい。
2016/02/26(金) 22:30:46.281
$ a=0; echo $((a+++++ +a))
1
$ a=0; echo $((a+ ++++ +a))
0
0515名無しさん@お腹いっぱい。
2016/02/27(土) 19:01:27.83$ bash -c 'a=0; echo $(( ( a++ ) + +( ++a ) ))'
2
シェルによって解釈が色々みたいだけど
$ ksh -c 'a=0; echo $((a++++++a))'
ksh: a++++++a: assignment requires lvalue
$ dash -c 'a=0; echo $((a++++++a))'
0
0516名無しさん@お腹いっぱい。
2016/02/29(月) 18:15:35.93普通のプログラミング言語のようにループして処理してたら
ぷっって笑っちゃう方?
0517名無しさん@お腹いっぱい。
2016/02/29(月) 18:57:25.920518名無しさん@お腹いっぱい。
2016/02/29(月) 19:53:29.460519名無しさん@お腹いっぱい。
2016/02/29(月) 20:08:57.21コマンドの内部でループしているのと、スクリプトのループとは速度が違うし
また記述も単純になるから、自然とそうなるだけだし
スクリプトで人を笑ったりとかはしないかな
0520名無しさん@お腹いっぱい。
2016/02/29(月) 20:36:41.530521名無しさん@お腹いっぱい。
2016/03/01(火) 12:43:43.790522名無しさん@お腹いっぱい。
2016/03/01(火) 12:55:47.44とかも笑われてるの?
0523名無しさん@お腹いっぱい。
2016/03/01(火) 13:57:23.360524名無しさん@お腹いっぱい。
2016/03/01(火) 20:21:04.65じゃ、どう書くと笑われないと思うんだ?
でも、最近はcaseで比較する事が多い。個人的に。
0525名無しさん@お腹いっぱい。
2016/03/02(水) 00:02:25.01http://www.shellcheck.net/
SC2006 Use $(..) instead of legacy `..`.
SC2003 expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]].
SC2086 Double quote to prevent globbing and word splitting.
0526名無しさん@お腹いっぱい。
2016/03/25(金) 00:25:36.80ただdeclare -Fでもsourceって関数は定義されてないようなんですがどこで定義されているかわかりますか?
0527名無しさん@お腹いっぱい。
2016/03/25(金) 01:32:44.95man source
0528名無しさん@お腹いっぱい。
2016/03/25(金) 01:59:04.54type source
0529名無しさん@お腹いっぱい。
2016/03/25(金) 02:11:33.46source is a shell builtin
$ help source
source: source filename [arguments]
Execute commands from a file in the current shell.
定義はソースコードの bash-4.3/builtins/source.def にある
source_builtin 関数
0530名無しさん@お腹いっぱい。
2016/03/25(金) 05:01:14.68ありがとうございます!
ばっちりです!
0531名無しさん@お腹いっぱい。
2016/04/02(土) 18:56:42.48ただ、そういう硬い書き方してる人のスクリプトは、bashの脆弱性が見つかった時でも
/bin/bash を /bin/ksh とかで代用できるからなんともいえん。
少なくとも i++ よりはポータブルだし
0532名無しさん@お腹いっぱい。
2016/04/08(金) 08:53:02.48ほんの数年前までそれ以外の書き方をすると怒り出す、
純正シェルジジイが粘着してたんだが、リアル墓場行ったかな。喜ばしい事だ
0533名無しさん@お腹いっぱい。
2016/04/09(土) 20:08:53.43見えたのは、2ch鯖が変わっていたせいであったかw
今頃きづいたという。。。
0534名無しさん@お腹いっぱい。
2016/04/12(火) 18:45:07.55こんどbashをやることになったのですが、シェルスクリプトの書いて覚える系のいい書籍はないでしょうか?
馬鹿なので読んだだけでは理解できないので手を動かすタイプのを教えてください。
0535名無しさん@お腹いっぱい。
2016/04/12(火) 19:26:46.24シェルプログラミング実用テクニック
0536名無しさん@お腹いっぱい。
2016/04/12(火) 20:11:06.76いろんなサイトに書き込みしても
いろいろ うるさく 叱られます。これがユニックスの流儀なんでしょうか?
とくに言われることは「スクリプトに直接関係ないこと」は書き込むな、と言うことです。
「何でも教えてくれや」「ケチケチすんなよ」「初心者には親切にせろ」
ひとことで言うと これがおれの主張です。シンプルです。
なんで?現実生活でヘイコラしてるのに、ネット上まで、ネコかぶったり
しないといけないのか?とんと理解できません。
何より、バッシュとかGシェルとか、詳しいのが、なんでエライのか?
ここが根本的にわからん。
少し誇張した部分もありますが、素直な気持ちを書きました。
0537名無しさん@お腹いっぱい。
2016/04/12(火) 20:22:51.31ありがとうございます。明日立ち読みしてみます。
>>536
あなたより大きい会社にいると思います。30前にして年収800万です。
ずっとWindowsだったのでわからないんですよね。
0538名無しさん@お腹いっぱい。
2016/04/12(火) 20:25:20.93得意分野などで教える立場になった時、同じこと思うだろうか。
0539名無しさん@お腹いっぱい。
2016/04/12(火) 20:38:02.87小さい会社だと1000越えてるのにね。
0540名無しさん@お腹いっぱい。
2016/04/12(火) 22:24:19.26おまえ Limux Mint 公式フォーラムでアラシ認定されたやつじゃね?
0541名無しさん@お腹いっぱい。
2016/04/13(水) 01:49:11.16正社員なら800でもマシな方
なんせ上が詰まっててなかなか上がらないし
でもフリーや少数精鋭のとこなら1000は余裕で行く
0542名無しさん@お腹いっぱい。
2016/04/14(木) 09:18:08.490543名無しさん@お腹いっぱい。
2016/04/14(木) 22:19:32.09サンプルコードがあるような本でも分からないなら、シェルスクリプトはやめた方がいい。
0544名無しさん@お腹いっぱい。
2016/04/14(木) 22:21:13.69「入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界」を読みなさい。
0545名無しさん@お腹いっぱい。
2016/04/15(金) 08:51:58.720546名無しさん@お腹いっぱい。
2016/04/15(金) 11:45:17.59そもそもシェルスクリプト自体が変わっていないが?
0547名無しさん@お腹いっぱい。
2016/04/15(金) 21:13:21.13さすがに絶版だったらおいおいと思うが。
0548名無しさん@お腹いっぱい。
2016/04/16(土) 00:27:13.14と言ってたら、bashの脆弱性が見つかったのは数年前だね
0549名無しさん@お腹いっぱい。
2016/04/16(土) 05:01:00.01この場合は、どう書けばよかったの?
http://business.newsln.jp/news/201604151116100000.html
レンタルサーバー業者で、従業員のミスによりサーバー上の全データが削除されるという
あり得ない事態が生じたことが14日、英大手紙「Independent」の報道で明らかとなった。
このレンタルサーバー業者では、削除してしまったデータを復元するために、大手QAサイトのserverfaultに
「Recovering from a rm -rf /(rm -rf /から復元する方法を教えてください)」とする書き込みをすることで、
問題の解決方法を模索しているが「バックアップがない限り、復元は難しい」といった回答も寄せられている。
QAサイトのserverfaultでは、日ごろ、初心者からの質問から、かなりの高度な質問まで、様々な質問が寄せられるとただちに、
最適な回答が付く状態が続いているが、さすがのserverfaultの熟練回答者であっても
会社の全データを「rm -rf /」で削除した後にどのような有効な復元策を講じることができるのかは、回答に詰まる状況となっている。
このミスをしてしまったレンタルサーバー業者の管理人となるMarco Marsalaによると、
プログラム中で、「rm -rf {foo}/{bar} 」と指定することで全サーバーを対象に、特定のディレクトリーのファイルだけを削除するスクリプトを動かしたところ、
このプログラムのバグにより、特定のディレクトリーだけでなく、全てのディレクトリーが強制削除の対象になってしまったと説明している。
また、バックアップを事前に取っていなかったのかという質問については、
もちろんバックアップは取得していたが、この全削除のプログラムによりバックアップファイルも削除の対象となってしまったと述べている。
このレンタルサーバー業者は、1535のカスタマーを抱えているが、この事故の発生により、これら全てのカスタマーのファイルが無くなってしまった。
0550名無しさん@お腹いっぱい。
2016/04/16(土) 09:24:48.150551名無しさん@お腹いっぱい。
2016/04/16(土) 10:06:55.21そういう問題ではない。
0552名無しさん@お腹いっぱい。
2016/04/16(土) 10:35:23.38だったらどういう問題?
0553名無しさん@お腹いっぱい。
2016/04/16(土) 10:51:02.13なんでテストしてないの?
0554名無しさん@お腹いっぱい。
2016/04/16(土) 11:15:01.02なんでテストしていないという話になる?頭大丈夫か?
0555名無しさん@お腹いっぱい。
2016/04/16(土) 11:25:08.280556名無しさん@お腹いっぱい。
2016/04/16(土) 13:52:26.18設計があって、テストをしないのはありえません。
0557名無しさん@お腹いっぱい。
2016/04/16(土) 13:56:59.02だいたいそれは設計じゃないだろ。
ただのコーディングミスを防げために、コーディングミス用のロジックを書くのは阿呆すぎる。
0558名無しさん@お腹いっぱい。
2016/04/16(土) 14:43:59.32フェイルセーフとフールプルーフの違いを学べよ
0559名無しさん@お腹いっぱい。
2016/04/16(土) 15:25:19.31いかにもインフラの人間がいいそうなことだが、キミは開発側ではありえない助言をしている。
0560名無しさん@お腹いっぱい。
2016/04/16(土) 15:27:25.430561名無しさん@お腹いっぱい。
2016/04/16(土) 15:28:05.090562名無しさん@お腹いっぱい。
2016/04/16(土) 16:30:24.50万が一のためインフラ側で制限しないとダメなんだよ
それでもダメなときはダメだし
設計・テストとかプログラムのみでの対応はコストだけが跳ね上がるし現実的ではない
ジョブ管理システムやコンパイラのバグが絡んでくるともうお手上げになる
0563名無しさん@お腹いっぱい。
2016/04/16(土) 18:08:55.670564名無しさん@お腹いっぱい。
2016/04/16(土) 19:49:59.880565名無しさん@お腹いっぱい。
2016/04/17(日) 01:23:14.240566名無しさん@お腹いっぱい。
2016/04/17(日) 07:15:51.53rm -rfはシェル関数で。直接使う事は禁則。
rmしないでmv。定期的に掃除
0567名無しさん@お腹いっぱい。
2016/04/18(月) 20:09:07.34http://japanese.engadget.com/2016/04/15/rm-rf-qanda/
0568名無しさん@お腹いっぱい。
2016/04/18(月) 20:24:48.32__
タヒんでしまえよ
0569名無しさん@お腹いっぱい。
2016/04/18(月) 22:44:34.250570名無しさん@お腹いっぱい。
2016/04/25(月) 19:04:26.09を作りたいのですが、引数の展開をどうやればいいかで悩んでいます。
# 例:sc tail -f ./hoge.log
sc() {
# "cd $PWD; $@"ではダメだった
screen -t "$1" -X screen bash -c "cd $PWD; '$1' '$2' '$3' '$4' '$5' '$6' '$7' '$8' '$9'"
}
10個以上の引数に対応するにはどう書くのがいいでしょうか?
0571名無しさん@お腹いっぱい。
2016/04/25(月) 21:45:04.21"cd $PWD; $@" だと screen のコマンド全体が、
"screen" "-t" "$1" "-X" "screen" "bash" "-c" "cd $PWD; $1" "$2" ...
という引数に展開される。
これは "cd $PWD; $@" がまず、"cd $PWD; ""$@" に変換され、
"$@" が "$1" "$2" ... に展開されて
"cd $PWD; ""$1" が連結されて "cd $PWD; $1" になるため。
なお set - "$@" cd "$PWD" ";" "$@" したら、 screen に渡るのは ; までで肝心のコマンドは渡らない。
"cd $PWD; $*" だと "cd $PWD; $1 $2 $3 ..." (配列としては展開されずに1つの文字列扱いになる)
に展開されて意図した動きになる。 ただ、引数に空白が入る場合はエスケープ入れないとNGね。
0572570
2016/04/26(火) 19:09:31.050573名無しさん@お腹いっぱい。
2016/04/26(火) 19:43:17.56シングルクォートと空白の例。
sc() {
screen -t "$1" -X screen bash -c "cd $PWD; $*"
}
sc date +Date=\\\'%y\\\ %m/%d
0574名無しさん@お腹いっぱい。
2016/04/27(水) 12:24:16.19与えたスクリプトの中で、展開すれば?
sh -c 'some command; "$@"' 'dummy' "$@"
sc() {
screen -t "$1" -X screen bash -c 'cd $PWD; "$@"' 'dummy' "$@"
}
0575570
2016/04/27(水) 19:13:45.99ちなみに
screen -t "$1" -X screen bash
は冗長で
screen -t "$1" bash
でいいみたいでした。
0576名無しさん@お腹いっぱい。
2016/04/27(水) 21:07:51.80これは -c AAA BBB CCC DDD ... のとき、BBB 以降は実行されないけど BBB が $0 として、
CCC DDD ... が引数としてセットされた状態でプロセスが開始され、実際に実行される内容の
AAA 内に展開されずに渡された "$@" があるので CCC DDD ... が実行されるってことかな。
ちなみに cd の部分は 'cd "'"$PWD"'"; "$@"' の方がいいかな。
( パスに空白が入っていてもエラーにならないがダブルクォーテーションが入っていたらNGではあるが。 )
0577名無しさん@お腹いっぱい。
2016/05/12(木) 21:13:45.79例えば、「*」がくるくると回っていたり・・・
0578名無しさん@お腹いっぱい。
2016/05/13(金) 00:30:46.450579名無しさん@お腹いっぱい。
2016/05/13(金) 19:21:12.15難しい…どなたかヒントを
0580名無しさん@お腹いっぱい。
2016/05/13(金) 20:19:09.81なんだよ、すごい目算があって開発宣言したと期待してたのに
まず、文字回すのは無理
/|\-を同じ位置で順番に繰り返す出す程度
あと、コマンド実行中は通常シェルはwait状態で止まってしまうので
コマンドをバックグラウンドで起動してシェルを動かし続けるか
別プロセスを同時に起動してそいつに表示させる必要がある
どっちもコマンドラインで明示しなきゃならん
普通に起動して同じことをさせるにはシェルの改造くらいしか思いつかん
それともzshくらいになるとすごいモジュールがあったりするのだろうか
0581名無しさん@お腹いっぱい。
2016/05/13(金) 20:43:34.110582名無しさん@お腹いっぱい。
2016/05/13(金) 20:57:15.29sleep 10 & {
tput civis
while kill -0 %- &>/dev/null
do
for c in {-,/,\|,\\}
do
printf '%c\r' $c
sleep 0.1
done
done
tput cvvis
}
途中で interrupt されるとカーソルが見えないままになるけど
0583名無しさん@お腹いっぱい。
2016/05/14(土) 20:15:01.860584534
2016/05/21(土) 22:04:30.88お陰さまで最低限現場の記述ルールに則ったものは普通に作れるようになりましたm(_ _)m
0585名無しさん@お腹いっぱい。
2016/05/23(月) 00:15:19.48超遅レスだかインフラでも
そんな事言わないあり得ない偏見すごいな
>>558
が伝えたいニュアンスは分かるけど
端的に考え方を言い表したいがために
登場場面が根本的に違う2つの用語だけで
端的に伝えようとするセンスが酷い
それにそもそも元の話と何かズレてるし
後輩育成とかは絶対に任せられないタイプ
0586名無しさん@お腹いっぱい。
2016/05/23(月) 08:05:15.40元ファイルをコピーしてヌルを上書きすると
一瞬ログの内容ロストするから
0587名無しさん@お腹いっぱい。
2016/05/23(月) 08:55:28.11ログを出す側で制御 (SIGHUPとかで出力ログファイルを開きなおす) してくれないとその問題は防げない。
mkfifo で FIFO ファイル作ってログローテーション用後続スクリプトに一旦渡す方法やパイプで後続スクリプトに
渡してローテーションする方法も考えられるけど、FIFO のバッファがいっぱいになるとメインプロセス側が処理
待ち(write がブロック)したり、後続スクリプトの異常終了で SIGPIPE 食らってメインプロセスが死んだりする
のでお勧めできないそうな。
0588名無しさん@お腹いっぱい。
2016/05/23(月) 16:33:22.230589名無しさん@お腹いっぱい。
2016/05/23(月) 17:04:28.650590587
2016/05/23(月) 23:22:16.85syslogd がつかんでいるのはファイルハンドルであってファイルのパスじゃない。
なのでそれをやっても、リネームした古いファイルの方に書き続けてしまう。
例えば /var/log/messages に書き続けている状態でファイルを mv して messages.1 にしても、syslogdは
messages.1 の方に書き続ける。
kill -HUP するとファイルハンドルを閉じて /var/log/messages を開くので、ここでようやく messages 側に書き始めるわけ。
# STOP/CONT は意味がない。 logrotate では syslogd のログについては HUP しかしない。
>>589
logrotate の samba のログ設定には copytruncate って書いてあるでしょ?
つまり logrotate が >> 586 の言う「コピーしてファイルを空にする」処理をやっている。
samba は syslogd のような開きなおす処理をしてくれないからこの実装にせざるを得ない。
0591名無しさん@お腹いっぱい。
2016/05/24(火) 04:38:11.44kill -HUP に対応してないsyslogdだったら、という話だろ。
kill -STOP してからログファイルを別ファイルにcpして、元のログは > file でゼロにする。
それで -CONT すればいいという話。
>syslogd がつかんでいるのはファイルハンドルであってファイルのパスじゃない。
というのは当然知ってるだろ。
0592名無しさん@お腹いっぱい。
2016/05/24(火) 08:44:45.64STOP -> truncate -> CONT って安全?
TCP/UDPで待ち受けしているプログラムで syn やメッセージ取りこぼしたりとかしない?
fork する奴にも使える?
0593名無しさん@お腹いっぱい。
2016/05/24(火) 09:37:37.23TCPなら再送含めてOSがうまくやる
UDPだとバッファあふれたら消える
もともと消えるの前提だから再送はアプリの自己責任
forkしたら止まるのは当たり前だが指定したプロセスだけ
プロセスグループを指定したら該当するやつ全部
どの辺が疑問なのかむしろ知りたいわ
0594592
2016/05/24(火) 20:11:40.98THX
> どの辺が疑問なのかむしろ知りたいわ
logrotate コマンドの copytruncate の欄に SIGSTOP すると良い、とは書かれていない
あたり、何か不都合があるんじゃないかと思うんだがどーよ?
0595名無しさん@お腹いっぱい。
2016/05/24(火) 22:53:24.96そいつとtcpもudpもforkも関係ないのになんで出てきた?
0596名無しさん@お腹いっぱい。
2016/05/25(水) 08:40:27.70ちょっとした間にサービス停止として検知される可能性があるな。
0597名無しさん@お腹いっぱい。
2016/05/25(水) 15:06:05.265分って、どこの標準か興味がある。
0598名無しさん@お腹いっぱい。
2016/05/27(金) 20:10:08.30普通は単純にリネームしてタッチする
0599名無しさん@お腹いっぱい。
2016/05/28(土) 12:10:25.230600名無しさん@お腹いっぱい。
2016/05/29(日) 01:58:44.160601名無しさん@お腹いっぱい。
2016/05/29(日) 20:46:35.04特定のコマンドやシェルのノウハウとかではなく
多くの場面で通用する本当に基礎的な知識を学びたいと思っています
私自身はいずれシェルを書きたいと思っていますが
LS、CPコマンドなどの使い方を知りたいわけではないということです
0602名無しさん@お腹いっぱい。
2016/05/29(日) 20:57:27.92UNIXスーパーテキスト
ってまだ売ってたっけ?
0603名無しさん@お腹いっぱい。
2016/05/29(日) 21:40:46.70古い本だけど砂原秀樹さんほかの『プロフェショナルBSD』
UNIXのコマンドはこういうふうに使うという根本的なことの理解に役立つ
0604名無しさん@お腹いっぱい。
2016/05/29(日) 22:26:33.910605名無しさん@お腹いっぱい。
2016/05/29(日) 23:19:55.20入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界
名著です。
これを挙げると古いとか文句を付ける馬鹿がいますが、無視してください。
0606名無しさん@お腹いっぱい。
2016/05/29(日) 23:20:36.490607名無しさん@お腹いっぱい。
2016/05/30(月) 00:14:11.32お前の心が汚れているだけだ
0608名無しさん@お腹いっぱい。
2016/05/30(月) 03:08:51.89[1] Done emacs
って出るよな?これって何が出しているんだろう?出来れば止めたい。
0609名無しさん@お腹いっぱい。
2016/05/30(月) 04:52:05.02set +m しておくと出なくなるよ。(出してるのはシェル自身)
0610名無しさん@お腹いっぱい。
2016/05/30(月) 09:25:10.53する方法はないでしょうか?
vimプラグインのsyntasticも試してみたのですが、.vimrcの記述のせいか
うまく動いてないようで。
何か簡単でうまい方法ありましたら、ご紹介ください。
0611名無しさん@お腹いっぱい。
2016/05/30(月) 10:19:27.79どうもです。なるほどシェルが出しているのですか。
でも、なぜ emacs しか出ないのでしょう?
教えていただいた set +m 「ジョブ制御の無効」は bash のみでしょうか?
私は tcsh なのですが、tcsh でも同様の事は可能でしょうか?
0612名無しさん@お腹いっぱい。
2016/05/30(月) 18:00:07.40シェルで2つの日時を元に所要時間を求めたい場合ぐぐるといろいろ方法はありますが
これが便利なコマンド一発で用意されていないのは需要がないと言うか
需要があった人が最終的に誰でも使える簡単な形にせずに終わらせたってことなんでしょうか?
0613名無しさん@お腹いっぱい。
2016/05/30(月) 18:55:30.71広く使われるほどの需要はなかった
0614名無しさん@お腹いっぱい。
2016/05/30(月) 19:36:20.17GNU date限定とかならいいんだけど
0615名無しさん@お腹いっぱい。
2016/05/30(月) 21:40:48.250616名無しさん@お腹いっぱい。
2016/05/31(火) 08:52:48.3032bitマシンが絶滅するまでは難しいな。
あと20年普通に残りそうだし
0617名無しさん@お腹いっぱい。
2016/05/31(火) 21:45:59.92内部というのは環境変数やシェル変数という意味?
0618名無しさん@お腹いっぱい。
2016/05/31(火) 23:23:59.980619名無しさん@お腹いっぱい。
2016/05/31(火) 23:24:37.85epochからの時間ってことじゃない?
>>616
difftime(3)て32bitと64bitで違うのかな
0620超音波テロの被害者
2016/06/01(水) 16:02:45.59卑劣極まりない被害にあっています。
何が起こったかわからないときから、
わかってみれば、
まだ世の中に知られていない超音波テロ。
世の中の多数の振動源・発信源が
システム化され、 ネットワークを通して、
超音波・音波を集中させて
対象を攻撃するらしい。
超音波による物理的な力で、
ものが飛び、ものが壊れる。
それが人間の体に対してまで。
形のあるもの、ないもの、壊され、奪われ、
聞こえる声、音。超音波テロの加害者の声。
卑猥な内容、卑劣な内容、脅しやいたぶり。
0621超音波テロの被害者
2016/06/01(水) 16:03:08.53頭蓋骨を突き抜け、意識を失わされる。
臓器不全やがん、命に関わることまで。
人間の身体を壊そうとする超音波テロ。
日本国中、どこにいても超音波で襲われる。
車に乗っている人間が襲われる。
歩いている人間が襲われる。
自宅で超音波の攻撃を受ける。
人や社会が超音波で襲われ、
罪もない人が超音波で襲われ、
卑劣な被害にあっています。
被害を訴えても信じてもらえない。
「見続けるのがいやだから、殺して終わる」、
「証拠隠滅だ」という超音波テロの加害者の声とともに
強烈な超音波の攻撃。
叫ばされ、いたぶられ、それを口実にまた攻撃され、
超音波テロの、残酷残虐で、卑劣な攻撃の被害にあっています。
心の底から被害を訴え、祈っています。
天に神に届きますように。
0622名無しさん@お腹いっぱい。
2016/06/01(水) 17:45:47.97これなんつーシェルのスクリプトですか?
0623名無しさん@お腹いっぱい。
2016/06/02(木) 07:52:05.220624名無しさん@お腹いっぱい。
2016/06/02(木) 08:00:02.530625名無しさん@お腹いっぱい。
2016/06/05(日) 11:03:53.19にすべきか、最後の/をつけるかつけないかでどんな違いがあるのか
いつもすごく気になる。
0626名無しさん@お腹いっぱい。
2016/06/05(日) 13:34:06.57rsync や ln 、mv あたりはありなしで挙動がかわる。
ln や mv はオプションで一応制御できるけど
0627名無しさん@お腹いっぱい。
2016/06/09(木) 19:13:38.61いいスクリプト知りませんか?
jqはできそうな感じなんだけど、サンプルのページが見当たらなくて
0628名無しさん@お腹いっぱい。
2016/06/09(木) 21:10:02.49cpanモジュール使うべし。
力技でゴリゴリでもできるかもしらんが、時間の無駄
0629名無しさん@お腹いっぱい。
2016/06/09(木) 22:45:45.43データがどんなもんか分からないので何とも言えないけど例えば
[
{"id": 1, "name": "Tom", "gender": 1},
{"id": 2, "name": "Alice", "gender": 2},
{"gid": 1, "gender": "male"},
{"gid": 2, "gender": "female"}
]
なんてJSONファイルがあって gender と gid で join する場合、
jq '
map(
(select(has("id")) | { k: .gender, v: { id: .id, name: .name }}),
(select(has("gid")) | { k: .gid, v: { geder: .gender }})
)
| group_by(.k)
| map((map(.v) | add))
' data.json
かなぁ。
0630629
2016/06/10(金) 01:11:22.91jq '
(map(select(has("gid")) | {(.gid|tostring): .gender}) | add) as $g
|
map (select(has("id")) | .gender = $g[(.gender|tostring)])
' data.json
0631名無しさん@お腹いっぱい。
2016/06/10(金) 01:28:18.48{
"id": 1,
"name": "Tom",
"gender": "male"
},
{
"id": 2,
"name": "Alice",
"gender": "female"
}
]
できました、できましたけど書き方わからないです><
>>628
cpan使うのが主流なんですか?
0632名無しさん@お腹いっぱい。
2016/06/10(金) 01:54:22.40json 形式のデータを DB に insert する方法を調べた方がいいかも
0633名無しさん@お腹いっぱい。
2016/06/10(金) 14:14:19.71いやそういうわけではなくて、pythonでもrubyでもいいけど
JSONとかXMLとかYAMLなどの定形式な文書からスライスして取
り出すなら、すでにある専用モジュールとか使ったほうが断然
速いってはなし。俺はperlしかわからんのでcpanモジュール。
perlなら
use JSON::XS;
して、
my $json = 'json.txt'
my $data = decode_json($json); #jsonからperlのハッシュに変換
あとは、ハッシュの内容をダンプしてデータ構造みながら
必要なデータだけを拾う。
print %$data{features}->[$cnt]->{properties}->{title} .
0634名無しさん@お腹いっぱい。
2016/06/10(金) 16:33:17.980635名無しさん@お腹いっぱい。
2016/06/10(金) 22:15:34.82なんでもありなら今はPythonの方がメジャー
もしくはRubyとか
0636名無しさん@お腹いっぱい。
2016/06/10(金) 23:07:20.19gomプレイヤーとかのソフト立ち上げるとスクリプトエラー出るんだけどどうしたらいい?
http://imgur.com/9hlJu8w
0637名無しさん@お腹いっぱい。
2016/06/11(土) 00:12:44.310638名無しさん@お腹いっぱい。
2016/06/11(土) 00:34:35.87↓
にちゃんでスクリプトで検索
↓
シェルスクリプトとかよくわからんけどスクリプトって入ってるからここに書けば誰か完璧な答えを出してくれるはず
ゆとり、ここに極まれり
0639名無しさん@お腹いっぱい。
2016/06/11(土) 03:40:49.780640名無しさん@お腹いっぱい。
2016/06/11(土) 03:41:43.140641名無しさん@お腹いっぱい。
2016/06/11(土) 03:53:01.79こんな感じなのだろうか。
0642名無しさん@お腹いっぱい。
2016/06/11(土) 04:14:09.33こんな感じで良いのかな?
find 引数 -maxdepth 0 -name *.sh -exec bin/sh -c ' {} ' \;
0643名無しさん@お腹いっぱい。
2016/06/11(土) 10:22:42.970644名無しさん@お腹いっぱい。
2016/06/12(日) 05:31:11.760645名無しさん@お腹いっぱい。
2016/06/12(日) 11:11:52.76for input in *
do
(処理)
done
これだと映像ファイルだけでなく全てのファイルが対象になってしまいます。
そうではなくて WMV、MP4、AVI、MPEG、MPGといった映像ファイルだけを
処理するにはどうしたらいいでしょうか?
0646名無しさん@お腹いっぱい。
2016/06/12(日) 11:15:55.66そもそもなんでファイルを振り分けてないのか?
0647名無しさん@お腹いっぱい。
2016/06/12(日) 11:25:58.85ffmpegで処理してるので映像ファイルの種類は分けなくても良かったりします
あ、ただ変換後の拡張子は統一するようスクリプトを書かないといけませんね
0648名無しさん@お腹いっぱい。
2016/06/12(日) 11:44:06.36for input in $(ls -1 *.{wav,mp4,avi,mpeg,mpg} 2>/dev/null)
do
(処理)
done
とか。
0649名無しさん@お腹いっぱい。
2016/06/12(日) 11:52:44.28これじゃダメな場合があるんだっけ?
for input in *.wav *.mp4 *.avi *.mpeg *.mpg
do
〜
done
0650名無しさん@お腹いっぱい。
2016/06/12(日) 12:07:38.74だけど、ループの中で処理する時に
[ -f "$input" ] || continue
とでもしとけばいいよね
0651名無しさん@お腹いっぱい。
2016/06/12(日) 12:36:44.21>>650
なるほど、そういう方法がありましたか。
ありがとうございますm(_ _)m
>>649
>>650さんのご指摘通りその拡張子のファイルが無いとそのまま入っちゃうって問題がありますね
0652名無しさん@お腹いっぱい。
2016/06/13(月) 20:14:40.91改行を追加するようなスクリプトってどう書けばいいでしょうか?
0653名無しさん@お腹いっぱい。
2016/06/13(月) 22:21:10.97それ、自分が前悩んで作ったのがある。誰か改善してくれ
#!/bin/sh
file=$1
test -f $file || exit 0
# if size -eq 0; then exit 0
if [ ! -s $file ]; then
exit 0
fi
# if the last character is not \n, then echo
if [ "$(tail -c 1 $file | cat -A)" != "$" ]; then
echo
fi
if ! tail -n 1 $file | grep '^$' > /dev/null ; then
echo
fi
0654名無しさん@お腹いっぱい。
2016/06/13(月) 22:23:13.080655652
2016/06/13(月) 22:28:48.20だから>>652さんの求めているスクリプトとはちょっと違った_o_
0656名無しさん@お腹いっぱい。
2016/06/13(月) 22:49:39.12ファイルがぶっ壊れちゃったじゃないか(#゚Д゚) ゴルァ!!
なんつって
0657名無しさん@お腹いっぱい。
2016/06/13(月) 22:58:56.61ありがとうございます
最終文字を取り出して調べるというわけですね
いじれそうです
たぶんGNUのtailが必須じゃないかと思うのですが、
非GNU環境でも動くようにはならないでしょうか
0658名無しさん@お腹いっぱい。
2016/06/13(月) 23:07:30.48ありがとうございます
ただ、これは目的の動作ではありません
末尾に空行が欲しいのではなく、
改行文字で終わっていない最終行に改行をつけたいのです
0659名無しさん@お腹いっぱい。
2016/06/14(火) 00:26:19.34#!/bin/sh
echo wq | ed "$1"
0660名無しさん@お腹いっぱい。
2016/06/14(火) 00:51:00.50for f in *.txt
do
[ $(tail -1 "$f" | wc -l) -eq 0 ] && echo >> "$f"
done
0661名無しさん@お腹いっぱい。
2016/06/14(火) 00:57:30.09for f in *.txt
do
{ tail -1 "$f" | read; } || echo >> "$f"
done
0662名無しさん@お腹いっぱい。
2016/06/14(火) 02:14:34.400663名無しさん@お腹いっぱい。
2016/06/14(火) 02:55:20.33ed はそのままだけど、tail -1 ... | read では newline が追加される。
0664名無しさん@お腹いっぱい。
2016/06/14(火) 17:09:51.68みなさんありがとうございます
edは思いつきませんでした
どこでもあるかと思ったらないのもありますね。exはありそうです
改行のない最終行がwcにカウントされないとか
改行がないとreadがエラーコード返すとか
すごくためになりました
空ファイルの動作の差についてはサイズを調べて分岐すればいいですね
0665名無しさん@お腹いっぱい。
2016/06/15(水) 01:17:10.55sed -i -e '$a\' file
http://unix.stackexchange.com/questions/31947/how-to-add-a-newline-to-the-end-of-a-file
0666名無しさん@お腹いっぱい。
2016/06/15(水) 02:02:23.61タイムスタンプを更新してしまうんだな
0667名無しさん@お腹いっぱい。
2016/06/15(水) 14:17:26.63青になるまで(赤になるまで)ドット(.)の点滅がひとつずつ消えていくんだぜ・・?
夜なんか見るとKDEみたいな感じですげえカッコイイぜ。
0668名無しさん@お腹いっぱい。
2016/06/15(水) 14:54:39.460669名無しさん@お腹いっぱい。
2016/06/15(水) 14:58:10.28IT土方の後遺症
0670名無しさん@お腹いっぱい。
2016/06/15(水) 17:06:08.30おお、これはシンプルですね
空ファイルでもちゃんと対応できています
man見てもそんな動作するとは明示されてないのですが
安定した仕様と考えていいのでしょうか
0671名無しさん@お腹いっぱい。
2016/06/15(水) 19:20:41.67a <- add. 置換ならsが有名. pでprint
\ 何もない シェルスクリプトでも改行またぐときに使うやつ
類似した構文
seq 20 | head
seq 20 | sed -n '1,10p'
0672名無しさん@お腹いっぱい。
2016/06/15(水) 21:22:12.46seq 20 | sed 10q
の方が良いかもしんない
0673名無しさん@お腹いっぱい。
2016/06/16(木) 01:11:19.56http://stackoverflow.com/questions/10082204/add-a-newline-only-if-it-doesnt-exist
awk
{ rm file;awk 1 >file; }<file
bash
[[ $(tail -c1 file) && -f file ]]&&echo ''>>file
0674名無しさん@お腹いっぱい。
2016/06/16(木) 14:28:12.81おお、awkは明白でわかりやすいですね
改行抜きで読んだ各行を改行付きでprintするわけですね
その意味ではawkで完璧なcatはできないのかな
紹介していただいたページには他にもいろいろ解法があっておもしろいです
ありがとうございます
0675名無しさん@お腹いっぱい。
2016/06/16(木) 15:35:18.42$ grep '' file | sponge file
0676名無しさん@お腹いっぱい。
2016/06/16(木) 19:35:59.66grepだけでも末尾に改行つけるんですね
でもこの仕様も安定性が心配
0677名無しさん@お腹いっぱい。
2016/06/16(木) 20:54:54.260678名無しさん@お腹いっぱい。
2016/06/19(日) 12:33:57.95特定のタスクが起動するのを監視して、起動を確認したら行動に移すスクリプトを
書こうと思っています。
たとえばWindows Media Playerを起動するとWindowsタスクマネージャー上の
「アプリケーション」タブに"Windows Media Player"が立ち上がるのが分かります。
このように特定のタスク/アプリケーションの起動を検知するスクリプトをbashで
記述するにはどうしたらよろしいでしょうか?
0679名無しさん@お腹いっぱい。
2016/06/19(日) 14:28:17.660680名無しさん@お腹いっぱい。
2016/06/19(日) 14:30:25.15ps -Wで表示されるのにしてね
0681名無しさん@お腹いっぱい。
2016/06/19(日) 15:43:42.63>>680
ありがとうございますm(_ _)m
0682名無しさん@お腹いっぱい。
2016/06/20(月) 18:07:32.11インストールしてみたんだけど、これって cygwin 配下のプロセスしか見えないのね……
0683名無しさん@お腹いっぱい。
2016/06/20(月) 23:14:14.04>>649
の問題はbashなんだしshopt -s nullglobで済むのでは?
0684名無しさん@お腹いっぱい。
2016/06/21(火) 02:08:19.29むっちゃ参考になった。ありがとう
0685名無しさん@お腹いっぱい。
2016/07/03(日) 14:58:46.31ダメ
echo "123.abcd" | sed -e 's!\.[a-zA-Z]{2}!!g'
echo "123.abcd" | sed -e 's!\.[a-zA-Z]{2,3}!!g'
echo "123.abcd" | sed -e 's!\.[a-zA-Z]+!!g'
echo "123.abcd" | sed -e 's!\.[a-zA-Z]?!!g'
OK
echo "123.abcd" | sed -e 's!\.[a-zA-Z]*!!g'
OK
echo "123.abcd" | sed -e 's!\.[a-zA-Z]\{2\}!!g'
echo "123.abcd" | sed -e 's!\.[a-zA-Z]\{2,3\}!!g'
ダメ
echo "123.abcd" | sed -e 's!\.[a-zA-Z]\+!!g'
echo "123.abcd" | sed -e 's!\.[a-zA-Z]\?!!g'
OK
echo "123.abcd" | sed -e 's!\(\.[a-zA-Z]\{2\}\)!z!g'
echo "123.abcd" | sed -e 's!\(\.[a-zA-Z]\{2,3\}\)!z!g'
+と?の代わりになるいい方法ないですか?
0686名無しさん@お腹いっぱい。
2016/07/03(日) 15:23:02.400687名無しさん@お腹いっぱい。
2016/07/03(日) 15:27:38.26123
$ echo "123.abcd" | sed -Ee 's!\.[a-zA-Z]?!!g'
123bcd
0688名無しさん@お腹いっぱい。
2016/07/03(日) 15:33:05.720689名無しさん@お腹いっぱい。
2016/07/03(日) 15:35:22.62ありがとう
0690名無しさん@お腹いっぱい。
2016/07/03(日) 15:52:51.46デフォのままだと、'、"、-が自動的に置換されるから、環境設定>キーボード>ユーザ辞書で自動置換をoffにしたほうがいい
appごと?、ファイルごと?でもメニューバー>編集>自動置換でも自動置換をoffにできる
0691名無しさん@お腹いっぱい。
2016/07/03(日) 20:21:24.00OSX歴10年ほどだけど、そんなんの知らんかったし、
そんな目にあったことがない。ぐぐったら実在する機能らしいが、
テキストエディットでコーディングするなんて考えられないし、
あたかもすべからく機能するように誤解を誘導するのはよくない。
OSXを使い始めて困ったのは、円とバックスラッシュを区別することぐらいだ。
0692名無しさん@お腹いっぱい。
2016/07/04(月) 20:49:46.74そのテキストエディットのデフォ値を晒した方が有益かと
0693名無しさん@お腹いっぱい。
2016/07/04(月) 21:44:12.04デフォルトでおかしいのが出ちゃうのか知らんけど、あれをなんとかしてほしい
0694名無しさん@お腹いっぱい。
2016/07/05(火) 02:10:41.78自分も知ってるけど一発でマック使いだって分かるから
あのままでいいと思ってる
0695名無しさん@お腹いっぱい。
2016/07/05(火) 02:24:03.69あれは Windows XP がしくっただけじゃなかったっけ。
Unicode の仕様含め結構まとめてくれてる人がいるから一度読んでみたらいい。
0696名無しさん@お腹いっぱい。
2016/07/05(火) 09:28:26.990697名無しさん@お腹いっぱい。
2016/07/05(火) 11:46:58.78どうぞ
http://internet.watch.impress.co.jp/docs/special/691658.html
http://internet.watch.impress.co.jp/img/iw/docs/691/658/fig_2_s.jpg
0698名無しさん@お腹いっぱい。
2016/07/05(火) 14:27:46.64日本語ファイル名だとLinuxマシンとまともに連携が取れない。
0699名無しさん@お腹いっぱい。
2016/07/05(火) 15:14:05.40お前はまとめ見て引用しか出来ない馬鹿だな
そのリンク先にも書いてあるだろ
Unicodeのイメージ(字形)が間違ってたんだよ
XPはその仕様を忠実に実装しただけであって
アポは無視したんだよ
MSもヴィスタから同じ対応をしただけだ
知ったかぶりするんじゃねーよ
0700名無しさん@お腹いっぱい。
2016/07/06(水) 12:51:14.80Unixの読み方はユニ(ッ)クスだぞ。Linuxの読み方はリナ(ッ)クスだぞ。
ちなみにASUSはエイサスな、日本語よみでユニックスとかリナックスとかアスースとか読むのは知能が低い証拠だぞ。
Xの前は何でも「ッ」をつければいいと思ってるのは、典型的な日本人のレベルだぞ!
ちなみに、Xの前に正々堂々と「ッ」をつけてもいいのは、貴様らにほとんど関係ない
セ○クス(S○X)だけだぞ!
0701名無しさん@お腹いっぱい。
2016/07/06(水) 17:47:32.090702名無しさん@お腹いっぱい。
2016/07/06(水) 19:07:35.870703名無しさん@お腹いっぱい。
2016/07/06(水) 20:49:19.530704名無しさん@お腹いっぱい。
2016/07/06(水) 21:36:34.09方言によって訛りもあるし正直通じればなんでもいい
0705名無しさん@お腹いっぱい。
2016/07/07(木) 18:04:30.740706名無しさん@お腹いっぱい。
2016/07/12(火) 21:25:52.980707名無しさん@お腹いっぱい。
2016/07/12(火) 23:15:08.760708名無しさん@お腹いっぱい。
2016/07/14(木) 00:29:39.150709名無しさん@お腹いっぱい。
2016/07/19(火) 06:19:56.96alias command='echo "hage"'
commandにスペースを含ませる事できないのでしょうか?
0710名無しさん@お腹いっぱい。
2016/07/19(火) 08:59:57.76bashだよね。普通にできる
0711名無しさん@お腹いっぱい。
2016/07/19(火) 09:07:33.10bashの識別子の条件に反するので不可
0712名無しさん@お腹いっぱい。
2016/07/19(火) 19:42:55.37710=711 と仮定して質問するけど、710はどういう場合? 何を勘違いしたかが気になって。
0713名無しさん@お腹いっぱい。
2016/07/19(火) 21:28:50.34710=711だけど、aliasで別名を定義するコマンド(つまりイコールの右側)に
スペースを入れられるのかという質問だと考えた。例示がそういう形になってるから。
もし、alias名にスペースを入れられるかという質問ならそういう例示をするはず
でも後者の質問という可能性に気づいたので、711を追加した
0714名無しさん@お腹いっぱい。
2016/07/22(金) 22:58:42.81http://d.hatena.ne.jp/n9d/20090117/1232182669
ほとんどなんもしてないワンライナーだけど、見事にスクリプト
ファイル整形してくれる。なんか感動すたw
0715名無しさん@お腹いっぱい。
2016/08/06(土) 14:00:53.40URLからファイル名だけを抜き出すこれより冴えたやり方ってある?
ちなみにWindows10のISOはISOファイルの後ろに
セッションIDかなにかがクエリで付くんだな
cat download.txt | grep -v ^$ | grep -v ^# | while read url
do
file=`echo "$url" | sed "s/.*\///g" | sed "s/\?.*//g"`
if [ $file == "" ]
then
echo file is null "$url"
continue
fi
ps -ef | grep wget | grep "$file"
if [ $? -eq 0 ]
then
echo download now "$file"
else
wget -c -t 1000 -O "work/$file" "$url"
fi
done
一応、ファイル名を正しく取得するのと
重複ダウンロード防止機能付き
wget -cにしたのは中断後の再開がもったいないし
wget -cで2重起動するとファイルが壊れて
いやな思いをした経験があるのでチェック入れてます
0716名無しさん@お腹いっぱい。
2016/08/07(日) 00:22:16.730717名無しさん@お腹いっぱい。
2016/08/07(日) 11:38:22.64実際引っかかることはなさそうだけど
0718名無しさん@お腹いっぱい。
2016/08/08(月) 22:34:42.13testvar=aaa"aa"
${testvar##\"}
これじゃ駄目だった
0719名無しさん@お腹いっぱい。
2016/08/08(月) 23:41:17.18## は前方最長一致
全部置換するのは //
testvar='aaa"aa"'
echo ${testvar//\"}
Bashマニュアル「パラメータの展開」セクション内「パターンの置換」
http://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html#lbBB
0720名無しさん@お腹いっぱい。
2016/08/10(水) 12:59:48.570721名無しさん@お腹いっぱい。
2016/08/11(木) 00:06:31.61はい
https://wiki.ubuntu.com/DashAsBinSh#select
https://github.com/koalaman/shellcheck/wiki/SC2039#select-loops
0722名無しさん@お腹いっぱい。
2016/08/16(火) 04:34:02.37find xargs grep?これの行数でも数えてtestに渡す?
0723名無しさん@お腹いっぱい。
2016/08/16(火) 08:28:28.59最終的にどうしたいの?
0724名無しさん@お腹いっぱい。
2016/08/16(火) 11:19:32.810725名無しさん@お腹いっぱい。
2016/08/16(火) 12:55:22.820726名無しさん@お腹いっぱい。
2016/08/16(火) 13:02:40.670727名無しさん@お腹いっぱい。
2016/08/20(土) 19:23:45.230728名無しさん@お腹いっぱい。
2016/08/21(日) 09:28:24.43とても斬新
0729名無しさん@お腹いっぱい。
2016/08/23(火) 01:57:32.120730名無しさん@お腹いっぱい。
2016/08/23(火) 02:07:00.600731名無しさん@お腹いっぱい。
2016/08/23(火) 02:08:14.36freebsd-update install
ができない
0732名無しさん@お腹いっぱい。
2016/08/23(火) 02:08:58.400733名無しさん@お腹いっぱい。
2016/08/28(日) 20:54:56.49while抜けたときに変数の内容が保持されないんだけど
元のシェルスクリプトと別プロセスになってるからってことなのかな?
以下サンプル
user01@server01 ~/test $ cat t4.sh
cat work/uhl.txt | grep -v ^# | sort | uniq | while read title
do
grepvlist=`echo "$grepvlistw | grep -v \"$title\" "`
grepvlistw=$grepvlist
echo $grepvlist
done
echo "---------"
echo $grepvlist
echo $grepvlistw
echo "---------"
user01@server01 ~/test $ sh t4.sh
| grep -v "111"
| grep -v "111" | grep -v "222"
| grep -v "111" | grep -v "222" | grep -v "333"
| grep -v "111" | grep -v "222" | grep -v "333" | grep -v "444"
---------
---------
user01@server01 ~/test $ cat work/uhl.txt
111
222
333
444
user01@server01 ~/test $
0734名無しさん@お腹いっぱい。
2016/08/28(日) 21:02:27.99$(grep -v ^# <file| sort | uniq)
EOT
0735名無しさん@お腹いっぱい。
2016/08/28(日) 21:03:00.60疑問の本質ではないのでとりあえずスルーでお願いします
0736名無しさん@お腹いっぱい。
2016/08/29(月) 03:11:36.410737名無しさん@お腹いっぱい。
2016/08/29(月) 06:36:10.220738名無しさん@お腹いっぱい。
2016/08/29(月) 12:49:07.23パイプでつなげたwhileはサブシェルで起動するから、
> while抜けたときに変数の内容が保持されないんだけど
> 元のシェルスクリプトと別プロセスになってるからってことなのかな?
ってことになる
whileをパイプの先に置いてる限り解決しないので、>>734が本質的な解
あるいは、shじゃなくてbashとかならプロセス置換が定石
while read title; do
...
done < <(cat work/uhl.txt | grep -v ^# | sort | uniq)
0739名無しさん@お腹いっぱい。
2016/09/08(木) 21:25:56.17どなたか、どうすればいいか教えてください。
お願いします。
x="http://x"
echo $x | grep -Ee "/[\w\.]"
echo $x | grep -Ee "\/[\w\.]"
echo $x | grep -Ee '/[\w\.]'
echo $x | grep -Ee '\/[\w\.]'
echo $x | grep -e "/[\w\.]"
echo $x | grep -e "\/[\w\.]"
echo $x | grep -e '/[\w\.]'
echo $x | grep -e '\/[\w\.]'
0740名無しさん@お腹いっぱい。
2016/09/09(金) 00:28:23.040741名無しさん@お腹いっぱい。
2016/09/09(金) 13:26:15.96ヘルプミー。
だろ。
grepに/が先頭に来るパターンを使った取得は俺も出来ない。
0742名無しさん@お腹いっぱい。
2016/09/09(金) 13:46:05.11期待する出力は?
0743名無しさん@お腹いっぱい。
2016/09/09(金) 14:07:32.50おまえの言うことも分からないから739と741は同一人物っぽいな
$xがURLそのものなら加工する必要が無い
0744名無しさん@お腹いっぱい。
2016/09/09(金) 15:51:28.22URL(URI)の中からホスト名(サーバー名 *1)を抽出したいなら
*1 スキーム(http:)とパス(/yyy/zzz/index.html)に挟まれた部分
[入力]URL http://www.xxx.co.jp/yyy/zzz/index.html
[出力]ホスト名 www.xxx.co.jp
$ echo "http://www.xxx.co.jp/yyy/zzz/index.html" | sed -e 's/.*http:\/\/\([^\/]*\)\/.*/\1/i'
www.xxx.co.jp
0745744
2016/09/09(金) 16:31:07.62これ2chの仕様?
もし試すなら「index.html"」の後ろの「; セミコロン」は削除して試してくれ
0746名無しさん@お腹いっぱい。
2016/09/09(金) 16:39:00.12あんたのブラウザの問題だろ
0747名無しさん@お腹いっぱい。
2016/09/09(金) 16:57:52.70741です。
妄想、乙。そのするどい頭脳でサクッとコマンド貼ってみてくださいね。
ちなみに、\wにこだわらなければ
echo $x | grep -e "/[a-zA-Z0-9\.]"
で、できる。
\wがあると、どうしてだめかはしらない。
>>744
セミコロンないよ。
0748名無しさん@お腹いっぱい。
2016/09/09(金) 17:27:46.43echo 'http://x' | grep :// で良い気がする
0749名無しさん@お腹いっぱい。
2016/09/09(金) 18:44:47.372chの仕様っていうか read.cgi のバグ
>>747
> \wがあると、どうしてだめかはしらない。
grep や egrep の正規表現では文字クラス […] 内のバックスラッシュ \ が特別な意味を持たないから
[\w] は \ と w にマッチする
[\.] は \ と . にマッチする
0750名無しさん@お腹いっぱい。
2016/09/09(金) 22:23:01.76>>741とやってることが矛盾してるが
0751名無しさん@お腹いっぱい。
2016/09/09(金) 23:05:57.440752739
2016/09/10(土) 17:00:28.25やりたかったのは、テキスト中のurlの抽出です。
urlには/が入っていて、ドメイン名にはアルファベット、数字、ピリオドがあるので、
いろいろ試しているなかで、上のようなコマンドでgrepが機能しない?と思い込んだ状態に遭遇した所でした。
https+://をgrepから外したのは、ttp://やドメイン名から始まるurl対策のつもりでした。
自分の間違いを>>749の解説と>>747のイグザンプルで理解できました。
みなさん、ありがとうございました。
本来の目的はまだ試行錯誤中ですが。
0753739
2016/09/10(土) 17:16:44.650754名無しさん@お腹いっぱい。
2016/09/14(水) 14:31:43.86time for i in $( seq -w 1 1000 ) ; do x="abcdefgh" ; y=$( echo ${x} | sed -Ee s'/b.*//g' ) ; done
time for i in $( seq -w 1 1000 ) ; do x="abcdefgh" ; y=$( sed -Ee s'/b.*//g' <<< ${x} ) ; done
を試したら、<<<の方が1割ほど遅かった。環境:macosx1095+sandy
みんなはどう?
0755名無しさん@お腹いっぱい。
2016/09/14(水) 20:50:13.24time を bash 添付の物ではなく、/usr/bin/time -v /bin/bash -c '...' で計測して詳細をみると、
前者は File system outputs: の値が 0 に対して、後者は 8000 (for の繰り返し1回あたり 8 増える)
となりました。
strace で見る限りどこかに書き込んでいるようには見えないですが、内部での実装に違いが
あるようですね。
0756名無しさん@お腹いっぱい。
2016/09/15(木) 09:05:23.94<<<だど読み込むときにstdinを準備
じゃないのか?
0757名無しさん@お腹いっぱい。
2016/09/15(木) 11:53:03.00ってことは、fstat(0, ...)で調べりゃ、レギュラーファイルになってる筈
> <<<を使うとechoで変数を渡すより速いというのを見かけて
と言うデマの火元はどこ?
0758名無しさん@お腹いっぱい。
2016/09/15(木) 13:09:35.23シングルコア/シングルプロセッサだと確実にヒアストリングの後者の方が速い
0759名無しさん@お腹いっぱい。
2016/09/15(木) 19:15:16.79解説d
ヒアストリングという言葉自体初めて知りました。
<<はヒアドキュメントということも知らずに使っていました。
環境によっては、<<<は速くなるんですね。
いい勉強になりました。
0760名無しさん@お腹いっぱい。
2016/09/24(土) 18:27:52.80Macのファイルシステムって、ファイル名を UTF-8 で保存してるかと思いきや
独自の正規化がされてまして (UTF8-MAC) 例えば、
find . -name "*ドイツ*"
とかやってもあるはずのファイルが出てこないわけです。(内部的に ド の字を ト+[濁点] みたいな格納をしてるせいです)
そこで .bash_profile に以下のように コマンドもどきの find2 を定義してやります。これで万事解決です。
# find に渡す引数を全て UTF8-MAC に変換してしてます
find2(){
eval "find "$(echo "$@" | iconv -f UTF-8 -t UTF8-MAC)
}
0761名無しさん@お腹いっぱい。
2016/09/24(土) 18:38:10.62他文字コードにも応用できそうだね
0762名無しさん@お腹いっぱい。
2016/09/24(土) 18:47:05.28-execで他のプログラムに渡すUTF-8をUTF8-MACに変換されていやーんになる
汎用的にするなら要ブラッシュアップ
0763名無しさん@お腹いっぱい。
2016/09/24(土) 21:51:49.29ただ -exec の方は 問題は別にあって
終端を表す \; の \(バックスラッシュ)
が消えちゃうんですね。そもそもiconv変換する前の時点で。
一応対応できたと思うんですが、
長くなったので貼るのはやめときます。
0764名無しさん@お腹いっぱい。
2016/09/24(土) 22:10:40.49;じゃないと困るのはかなり特殊なケース
0765名無しさん@お腹いっぱい。
2016/09/24(土) 22:13:36.64どっかで読んだ内容だなぁと思ったら、これ↓のパクリか!
「新・OS X ハッキング! (169) Terminal上で「ダ」や「パ」が付くファイルを検索できない理由と対策 | マイナビニュース」
http://news.mynavi.jp/column/osxhack/169/index.html
0766名無しさん@お腹いっぱい。
2016/09/24(土) 23:20:43.06ただ現実に必要になってみると
find . -name `echo "オランダ.png" | iconv -f UTF8 -t UTF8-MAC`
これ毎回打ち込むの面倒だなと思ってコマンド化してみた次第です。
0767名無しさん@お腹いっぱい。
2016/09/24(土) 23:54:36.900768名無しさん@お腹いっぱい。
2016/09/24(土) 23:56:11.170769名無しさん@お腹いっぱい。
2016/09/25(日) 00:01:20.090770名無しさん@お腹いっぱい。
2016/09/25(日) 02:09:32.85>>終端を表す \; の \(バックスラッシュ) が消えちゃうんですね。
普通にfindするときもfindに渡る前に¥は消えるでしょ
find2(){
find $(echo "$@" | iconv -f UTF-8 -t UTF8-MAC)
}
じゃダメなの?
0771名無しさん@お腹いっぱい。
2016/09/26(月) 14:04:28.330772名無しさん@お腹いっぱい。
2016/09/26(月) 23:31:45.320773名無しさん@お腹いっぱい。
2016/10/16(日) 10:27:03.83ワイルドカードが展開されて「find /tmp -name AABB」となってしまいますが、
これを「find /tmp -name
0774名無しさん@お腹いっぱい。
2016/10/16(日) 10:36:38.42以下のスクリプトはカレントディレクトリに「AABB」というファイルがあると
ワイルドカードが展開されて「find /tmp -name AABB」となってしまいますが、
これを「find /tmp -name "AA*"」とさせるにはどうすればいいのでしょうか?
#!/bin/sh
name="AA*"
option="-name $name"
find /tmp $option
---------------------------
$ ls
AABB test.sh
$ ls /tmp
AACC
$ sh -x test.sh
+ name=AA*
+ option=-name AA*
+ find /tmp -name AABB
/tmp/AACC をヒットさせたくて
下のように変数の書き方を色々変えてみましたが、うまくいかず
悩んでます。
name="AA"*""
name="AA\*"
name="AA\"*\""
option="-name "${name}""
option="-name \${name}"
0775名無しさん@お腹いっぱい。
2016/10/16(日) 10:45:33.830776名無しさん@お腹いっぱい。
2016/10/16(日) 10:53:11.25全角にするけど
option=”-name \”$name\””
とすればよろし
0777名無しさん@お腹いっぱい。
2016/10/16(日) 11:06:04.27ウェブブラウザで書いてて、書き込んでいいですかの確認画面を経由して書き込むと切れちゃう
俺調べ
0778名無しさん@お腹いっぱい。
2016/10/16(日) 13:48:12.77#!/bin/sh
name="AA*"
find /tmp -name "$name"
ってやればいいのに
0779名無しさん@お腹いっぱい。
2016/10/16(日) 13:54:36.43option="$option 他のオプション"
とかやりたいんじゃないの
0780名無しさん@お腹いっぱい。
2016/10/16(日) 17:25:04.68まさにそれだったわ。情報ありがとう
0781名無しさん@お腹いっぱい。
2016/10/16(日) 18:08:50.16find の検索パスにワイルドカード使ってたらだめ
0782名無しさん@お腹いっぱい。
2016/10/16(日) 19:22:23.01# name=
0783名無しさん@お腹いっぱい。
2016/10/16(日) 19:25:37.68スクリプトソース貼るのに致命的だな
0784名無しさん@お腹いっぱい。
2016/10/16(日) 19:40:18.840785名無しさん@お腹いっぱい。
2016/10/26(水) 22:58:52.490786名無しさん@お腹いっぱい。
2016/10/26(水) 23:40:35.700787名無しさん@お腹いっぱい。
2016/10/29(土) 21:05:55.08むかしリダイレクトとtailでやったらうまく行かなかった覚えがあってやめた気がする
0788名無しさん@お腹いっぱい。
2016/10/29(土) 21:22:36.46cmd > >(tee stdout.log) 2> >(tee stderr.log)
0789名無しさん@お腹いっぱい。
2016/10/29(土) 22:19:49.670790名無しさん@お腹いっぱい。
2016/10/30(日) 09:23:07.74で出来ないか?
0791名無しさん@お腹いっぱい。
2016/10/30(日) 21:41:34.72{ { cmd | tee stdout.log 1>&3; } 2>&1 | tee stderr.log 1>&2; } 3>&1
・bash: 標準出力、標準エラー出力をファイル、画面それぞれに出力する方法 - Qiita
http://qiita.com/laikuaut/items/e1cc312ffc7ec2c872fc
0792名無しさん@お腹いっぱい。
2016/11/04(金) 12:24:35.95この時ファイル名とmp3タグにはCDDBから読み込んで来る。
これをやるのに手っ取り早い方法ってなんだろ
0793名無しさん@お腹いっぱい。
2016/11/04(金) 12:26:20.170794名無しさん@お腹いっぱい。
2016/11/04(金) 12:31:52.740795名無しさん@お腹いっぱい。
2016/11/17(木) 04:52:04.55curl でhttp の応答をチェックしたいのですが
下記みたいにしてもちゃんと判定できないのですが何が原因でしょうか?
test $(curl -XHEAD -s -i https://www.google.co.jp | awk NR=1) = 'HTTP/1.1 200 OK';echo $?
0796名無しさん@お腹いっぱい。
2016/11/17(木) 06:02:01.01$ [ $(curl -I http://localhost/ 2>&- | head -n 1) = 'HTTP/1.1 200 OK' ]; echo $?
bash: [: too many arguments
2
$ [ "$(curl -I http://localhost/ 2>&- | head -n 1)" = 'HTTP/1.1 200 OK' ]; echo $?
0
$ [ "$(curl -I http://localhost/dummy 2>&- | head -n 1)" = 'HTTP/1.1 200 OK' ]; echo $?
1
っとちょっと色々違うけど、うちでは之でなんとかなってる
0797名無しさん@お腹いっぱい。
2016/11/17(木) 06:27:40.740798名無しさん@お腹いっぱい。
2016/11/17(木) 08:38:26.65test "$(curl -I -s -o /dev/null -w '%{http_code}' https://www.google.co.jp/)" = 200
HTTPステータス行の Reason-Phrase ("OK" や "Not Found" の部分) は送出者が自由に書けるし
HTTPバージョンも当然固定じゃない
# HTTP2を有効にしてビルドしたcurlの場合:
$ curl -I -s https://www.google.co.jp/ | head -n 1
HTTP/2 200
$
0799名無しさん@お腹いっぱい。
2016/11/17(木) 08:49:14.72訂正
ウェブブラウザで表示すると余分なセミコロンが混じってしまう
test "$( curl -I -s -o /dev/null -w '%{http_code}' https://www.google.co.jp/ )" = 200
0800名無しさん@お腹いっぱい。
2016/11/17(木) 12:19:57.15いいお(´・ω・`)
0801名無しさん@お腹いっぱい。
2016/11/17(木) 12:21:26.17-XHEAD を外してみた
-bash: test: too many argumentsになった
$()を""で括った
awkが効いてなさそう
NR==1 にした
まだ一致しない
行末がCRLFだった
$'\r'を付けた
とりあえず
test $(curl -XHEAD -s -i https://www.google.co.jp | awk NR=1) = 'HTTP/1.1 200 OK';echo $?
はこう
test "$(curl -s -i https://www.google.co.jp | awk NR==1)" = 'HTTP/1.1 200 OK'$'\r';echo $?
なった
0802名無しさん@お腹いっぱい。
2016/11/17(木) 12:47:25.00test "$(curl -I -w "%{http_code}" http://example.com/ 2>&- |tail -1)" = 200; echo $?
0803名無しさん@お腹いっぱい。
2016/11/17(木) 14:56:39.30取得したレスポンスをtestする操作を一度にしようとするのか理解不能
0804名無しさん@お腹いっぱい。
2016/11/17(木) 16:51:11.77まあ何でも一度にやってみたくなる衝動は理解できなくもない。
そこに山があるから、的な何か。
0805名無しさん@お腹いっぱい。
2016/11/17(木) 17:02:47.580806名無しさん@お腹いっぱい。
2016/12/07(水) 08:00:32.91ttp://www.peeep.us/4a5535c5
なんかあの界隈よく揉めてるな… 👀
Rock54: Caution(BBR-MD5:f4da0c707200fe35c49b788174082785)
0807名無しさん@お腹いっぱい。
2016/12/07(水) 09:27:19.820808名無しさん@お腹いっぱい。
2016/12/07(水) 10:58:10.890809名無しさん@お腹いっぱい。
2016/12/07(水) 12:13:29.28とはいうもののオタクのコミュニティって、どこでもちんぽ騎士団ぽいのがいるよね……
ぼっち最高やで。
0810名無しさん@お腹いっぱい。
2016/12/07(水) 15:49:11.13ifの条件を、動作テストのため、いくつか使い分けたくて、thenより上の行で、テストで使い終わった判定を
コメント化しました。実際の判定が、コメント化したものが活かされたりと、おかしくなりました。
以下の、1分ごとに呼び出されるコードで、毎時40分だけ動いて貰いたいのに、10分おきに条件成立となりました。
#1hour
if [ `date '+%M'` -eq "40" ]
#10min
# if [ `date '+%M' | tail -c 2` -eq 0 ]
#all
# if [ true ]
then
echo 処理
fi
0811名無しさん@お腹いっぱい。
2016/12/07(水) 16:18:47.23あそこで役に立つ記事あるか?
自己満のゴミ情報が大部分だからgoogole personal blockの対象だわ
0812名無しさん@お腹いっぱい。
2016/12/07(水) 16:49:19.730813名無しさん@お腹いっぱい。
2016/12/07(水) 19:49:58.99わかる。盛大な勘違い書いててドャァしてる感がすごい
0814名無しさん@お腹いっぱい。
2016/12/07(水) 21:31:23.080815名無しさん@お腹いっぱい。
2016/12/07(水) 23:23:03.71素直にcrontab使った方が良いんじゃね
0816名無しさん@お腹いっぱい。
2016/12/08(木) 09:58:48.36そんなこと起きないはず
ほんとにそのコード?
0817名無しさん@お腹いっぱい。
2016/12/10(土) 20:22:24.90色んなネットーワーク機器のログをsedでズバッとマスキングかけたいんだけど、URLと、IPアドレスの正規表現を教えて下さい。
0818名無しさん@お腹いっぱい。
2016/12/10(土) 20:25:17.660819名無しさん@お腹いっぱい。
2016/12/14(水) 16:17:30.58det dritte folkemn
0820名無しさん@お腹いっぱい。
2016/12/21(水) 04:35:52.23testCmd="なんかのコマンド"
result=$(eval testCmd)
この後の$0はevalの返り値なのかtestCmdの帰りなのかよくわからんのですが
0821名無しさん@お腹いっぱい。
2016/12/21(水) 05:11:40.55$0 ってどういうこと?
$? の間違いなら man bash の eval に書いてある。
0822名無しさん@お腹いっぱい。
2016/12/21(水) 06:35:22.65export testCmd="コマンド"
$testCmd > ログファイル
戻り値=$?
0823名無しさん@お腹いっぱい。
2016/12/21(水) 06:47:35.19result=`$testCmd`
で標準出力が入って
$?でも戻り値は取れるけど
標準エラー出力は取れないね
0824名無しさん@お腹いっぱい。
2016/12/21(水) 11:34:52.01testCmd="なんかのコマンド"
result=$(eval $testCmd)
returncode=$?
標準エラーはいらんのですが
プロセス置換?とかでできるのかな
0825名無しさん@お腹いっぱい。
2016/12/22(木) 09:27:10.08$?はevalの終了ステータスが設定される。evalの終了ステータスはtestCmdの終了ステータスが設定される
0826名無しさん@お腹いっぱい。
2016/12/22(木) 12:40:53.01マニュアル読んでわかんなきゃ試してどうなるか調べないと
正常終了するコマンドだけじゃなくてそれ以外もね
0827名無しさん@お腹いっぱい。
2017/01/15(日) 17:41:24.20でしょうか?
0828名無しさん@お腹いっぱい。
2017/01/15(日) 18:20:34.24#!/bin/bash
opts=“-f $file”
hoge $opts
これだと hogeコマンドが unrecognized option エラーになってしまう。
初歩的な質問ですまん
0829828
2017/01/15(日) 18:27:02.19$fileが不正だっただけやん
0830名無しさん@お腹いっぱい。
2017/01/16(月) 21:28:07.13http://mywiki.wooledge.org/Bashism#Conditionals
> [[ is not defined by POSIX, originated in ksh and is also present in zsh
0831名無しさん@お腹いっぱい。
2017/01/17(火) 21:34:40.69if [ $a = "ok" ]; then
echo hoge
else
echo fuga
fi
の様にしているのですが"ok"が入っていても別の文字列が入っていてもfugaが出力されてしまいます
0832名無しさん@お腹いっぱい。
2017/01/17(火) 21:59:37.47ok
ならば真になるはず
0833名無しさん@お腹いっぱい。
2017/01/17(火) 22:02:25.13cutかなんかで事前に削るしかないですかね?
0834名無しさん@お腹いっぱい。
2017/01/17(火) 22:14:16.110835名無しさん@お腹いっぱい。
2017/01/18(水) 09:13:18.950836名無しさん@お腹いっぱい。
2017/01/18(水) 11:40:24.29\"でうまく行きました
ありがとうございます
>>835
そうです
"ok"か"error"、またはそれ以外の文字列(引用符なし)が入ってる
0837名無しさん@お腹いっぱい。
2017/01/21(土) 12:38:14.000838名無しさん@お腹いっぱい。
2017/01/21(土) 16:06:57.660839.
2017/01/21(土) 20:26:15.12http://gihyo.jp/magazine/wdpress/plus/978-4-7741-8694-8
0840名無しさん@お腹いっぱい。
2017/01/21(土) 21:16:52.050841名無しさん@お腹いっぱい。
2017/01/23(月) 23:25:46.350842名無しさん@お腹いっぱい。
2017/01/23(月) 23:40:12.970843名無しさん@お腹いっぱい。
2017/01/23(月) 23:46:44.500844名無しさん@お腹いっぱい。
2017/02/05(日) 17:07:27.34for i in {1..3}
do
echo $i
done
で
1
2
3
ではなく{1..3}が出力されます。どうして?
0845名無しさん@お腹いっぱい。
2017/02/05(日) 17:13:16.910846名無しさん@お腹いっぱい。
2017/02/05(日) 17:15:56.58ありがとう・・・ありがとう・・・
0847名無しさん@お腹いっぱい。
2017/02/05(日) 19:26:02.43testを
1
2
3
というファイルだとして、
cat test|while read line; do sed -e "s/.*/a/"; done
をやると
a
a
a
ではなく
a
a
となるのはなぜですか?
0848名無しさん@お腹いっぱい。
2017/02/05(日) 20:04:29.97cat test|while read line; do echo "$line" | sed -e 's/.*/a/'; done
ってしたいんじゃない?
cat test|while read line; do sed -e "s/.*/a/"; done
だと、1行目を read が喰って、2行目以降は全て sed に入力される
ことになるよ。
0849名無しさん@お腹いっぱい。
2017/02/05(日) 20:26:43.25ありがとう・・・。そういう仕組みになってるのは知らなかった。
0850名無しさん@お腹いっぱい。
2017/02/08(水) 13:58:57.76これに送信前と送信後のmd5を比較して、一致しなかったら再送させるにはどうすればいいですか?
http://pastebin.com/aXucBuHW
0851名無しさん@お腹いっぱい。
2017/02/08(水) 23:14:15.740852名無しさん@お腹いっぱい。
2017/02/09(木) 12:54:00.09$ cat file1.txt
1
2
3
4
$ cat file2.txt
3
4
5
5
6
センスない自分としてはheadとtailを使って逐一チェックしながら
マージすると言うプログラミング的な方法しか思いつかなかった・・・
0853名無しさん@お腹いっぱい。
2017/02/09(木) 13:09:23.15あくまでも中には数字しかないならばの話で。
0854名無しさん@お腹いっぱい。
2017/02/09(木) 13:17:38.410855名無しさん@お腹いっぱい。
2017/02/09(木) 13:35:43.26ありがとうございます
数字を使ったのは単なるサンプルなので・・・実際は文字列が入っています
今はcatで単純マージしたあとにviで重複箇所を削っていて
かつそのファイルを利用する時にsortしてuniqしています
できればファイルサイズとかも気にしたいので
パイプとかで簡単かつ堅実に出来ないかなと思ったのです
0856名無しさん@お腹いっぱい。
2017/02/09(木) 13:40:12.55そうじゃないんなら、ありうる最大限一般的な例を出さないのがだめ
0857名無しさん@お腹いっぱい。
2017/02/09(木) 16:02:59.69$ cat file1.txt file2.txt | awk '{if(!u[$0]){u[$0]=1;print;}}'
0858名無しさん@お腹いっぱい。
2017/02/09(木) 19:01:56.530859名無しさん@お腹いっぱい。
2017/02/09(木) 19:13:20.28ソートキーの値がある範囲内(例えばプラスマイナス100)にある場合は同じ値とみなすみたいなことできますか?
入力イメージ
0001 31 149
0002 21 156
0003 11 145
0004 52 344
0005 42 356
0005 12 353
0006 53 594
0007 13 613
出力イメージ
0003 11 145
0002 21 156
0001 31 149
0005 12 353
0005 42 356
0004 52 344
0007 13 613
0006 53 594
比較ロジック(0はa=b、-1はa<b, 1はa>b)
function compare (a, b) {
if (a.y < b.y - 100) return -1
if (a.y > b.y + 100) return 1
if (a.x < b.x - 100) return -1
if (a.x > b.x + 100) return 1
return 0
}
0860名無しさん@お腹いっぱい。
2017/02/09(木) 19:14:30.15入力イメージは(id, x, y)で
3カラム目がy座標、2カラム目がx座標です
0861名無しさん@お腹いっぱい。
2017/02/09(木) 19:50:30.95その比較関数をきっちり実装するのは無理があるね
awkかそれ以上のスクリプト言語使うくらいかな
0862名無しさん@お腹いっぱい。
2017/02/09(木) 20:07:21.71四捨五入で丸めるなら分かるけど
0863名無しさん@お腹いっぱい。
2017/02/09(木) 21:01:26.790864859
2017/02/09(木) 21:46:47.59>>862
入力イメージの値にあるみたいに丸めだと欲しい結果が得られないのでスクリプト言語使ってみます
ありがとうございます
>>863
stableかどうかはあんまり考えてませんでした
1カラム目のユニークな値でソート済みなところからの処理なので
stableじゃないsortの場合は比較ロジックに1カラム目を追加して対応します
0865名無しさん@お腹いっぱい。
2017/02/09(木) 22:44:27.460866名無しさん@お腹いっぱい。
2017/02/09(木) 23:31:32.77このスレで言うべきでは無い気はするけど
Excelとかの表計算ソフトを使った方が良さそうな気が
0867859
2017/02/10(金) 00:45:19.33ユニークなキーも比較条件に追加すれば並び順は一意に決まるので誤ることはないかと
>>866
シェルスクリプトでいろいろ処理する途中の処理なんです
0868名無しさん@お腹いっぱい。
2017/02/10(金) 01:36:54.52qsortを仮定して、たまたまピボットが560になったときと
620になったときで結果が変わるよ
誤るというか、結果が一意でない
0869名無しさん@お腹いっぱい。
2017/02/10(金) 02:16:12.75各行の比較で必ず上下関係が明確になるのでqsortでも大丈夫じゃないでしょうか
001 620
002 560
003 500
0870名無しさん@お腹いっぱい。
2017/02/10(金) 05:48:37.28ループ処理しながら選択ソートするしかないね
まあまずシェルで〜とかじゃなくて
ExcelでもJavaでも何でもいいから簡単に実装できる方法を調べてみて
シェルに落としこめるかを調べた方がいいと思う
例えば偏差とか一般的で誰でも使うから統計処理なんてawkで楽に出来るんだけど
>>859がやりたいのって特殊だから独自実装が必要になると思うよ
茶化してるわけじゃないけど
はじめに自分がやりたいことは何なんでしょうって聞くのが早いと思う
0871名無しさん@お腹いっぱい。
2017/02/10(金) 06:15:23.45前後のデータの単純比較じゃなくて
全データとの比較が必要になるから
コマンド1発じゃ無理だね(10発くらいでも無理だけど)
キーを追加するにしてもデータ数-1分のキーが必要になるし(xとyでさらに2倍か)
キーが別だからそこからソートする方法が浮かばない
スクリプトでもプログラムでもいいけど
プラマイ100を同値とするソートのロジック組むしかないと思う
0872名無しさん@お腹いっぱい。
2017/02/10(金) 08:25:47.98qsortの中身知ってる?
パーティショニングしたらあとはブロック内の入れ替えしかしないよ
0873名無しさん@お腹いっぱい。
2017/02/10(金) 08:29:02.88データ数-1とか2倍とか意味わからん
0874名無しさん@お腹いっぱい。
2017/02/10(金) 09:53:38.19並び順は良いだろうけど
A=B B=C A≠C の時そもそもどうなれば良いの?
001 A
001 B
??? C
0875名無しさん@お腹いっぱい。
2017/02/10(金) 10:06:02.58>>859のcompareだと推移律を満たさないので同値類になっていない
だからおかしなことになる
0876名無しさん@お腹いっぱい。
2017/02/10(金) 10:15:12.360877名無しさん@お腹いっぱい。
2017/02/10(金) 10:16:20.47何で小出しにしてんだよアホじゃねえよ
0878名無しさん@お腹いっぱい。
2017/02/10(金) 10:35:17.250879名無しさん@お腹いっぱい。
2017/02/10(金) 10:52:33.90ソート前
001 200 200
002 100 100
003 0 0
ソート後
003 0 0 ←一番小さく200との差が100を超えているため入れ替える
001 200 200 ←一番大きいが100からは100以内なので入れ替えない
002 100 100 ←200より小さいが200からは100以内なので入れ替えない
アホだw
コレ意味の分かってないやつがロジック組むと
100から見たら0も200もプラマイ100以内だから
並べ替えしないとか言うことになるだろう
要するにプラマイ100を見込んだ最小値を求めて
2週目のループでそれを除外した中からさらに最小値を求めていくだけ
終わりまで選択ソートをやるだけなんだけど
そこにプラマイ100の比較を追加する必要がある
ぶっちゃけソート結果を見れば分かるように
こいつソートしてんの?って思うだろう
そもそも>>873の考えが破綻していると言うか思いつきソートなんだろうと思う
統計とか学んだ方がいいかな〜
0880名無しさん@お腹いっぱい。
2017/02/10(金) 10:59:36.910881名無しさん@お腹いっぱい。
2017/02/10(金) 11:04:25.90早い話、1000x1000の平面のすべての整数座標に点があったらどうソートしたいわけ?
2次元だからややこしいわけでなく1次元でも同じこと
0883名無しさん@お腹いっぱい。
2017/02/10(金) 11:15:25.85ごめん間違えた>>859だ
>>881
いや曖昧じゃない
2次元と言うのもちょっと複雑にしてるだけだろう
プラマイ100以内は同じと言う明確な基準がある
ただたぶんこのソートの結果は>>879に記したように
初期のデータの並びによって変わる部分があると思うね
だからこのソートは>>859の思いつきソートだってことだ
0884名無しさん@お腹いっぱい。
2017/02/10(金) 11:38:39.440885名無しさん@お腹いっぱい。
2017/02/10(金) 14:05:33.33(0, 100)
(99, 300)
(198, 200)
どう並べりゃ良いのよ?
0886名無しさん@お腹いっぱい。
2017/02/10(金) 14:12:56.80(0, 202)
(99, 101)
(198, 0)
こうか
0887873
2017/02/10(金) 14:39:27.08(0,998)
...
(0,1)
(0,0)
どう並べる?
0888名無しさん@お腹いっぱい。
2017/02/10(金) 15:26:37.64bar=`ls foo_*.txt|tail -1|cut -d\. -f1`
で$barに高確率で何も入らなかったり(foo_*.txtはあるのに)
bar=`echo $foo|perl -pE 's/^.*"hoge":"([^"]+)".*$/HOGE_\1/'`
echo $bar > /dev/null
echo "result:"$bar
の2行目がないと何故か3行目で$barが空のように表示されたり
というような現象が起きるんだけど、これってよくあること?
cygwin64にしてから起きているような気もする
0889名無しさん@お腹いっぱい。
2017/02/10(金) 15:56:58.38.
東京都三鷹市 元ニコ生主の莉里子です (整形後) http://i.imgur.com/SLcz3dS.jpg (整形前) http://i.imgur.com/zPvxpx5.png
不倫・浮気・密会・不道徳な行為は著名な小説家でしている人がいるので真似しちゃう池沼です http://i.imgur.com/vZeIuO3.png
■2015年2月 釣りニコ生主コジコジと沖縄旅行でオフパコ
2015年2月2日-3日...釣り生主コジコジと沖縄旅行でセックス/やり捨てされ逆ギレ
2015年2月4日.........莉里子の父親から電話があって脅されたとコジコジに放送で暴露される
2015年2月6日.........リスカ画像UP
2015年2月9日.........ツイ全消し/コミュ爆破逃亡
http://imgur.com/a/58WQC
■2016年6月 バンドマン兼ニコ生ツイキャス配信者と密会 その3日後に穴るセックス〜継続中
http://imgur.com/a/Lx8o2
●早川莉里子●土井莉里子●土井寧々●土井剛●早川剛●星崎●りりこ●りりこし●にゃんぱす
●ね子●にゃこ●みんち●めう●ねね●猫又●剛
※名古屋ゲイ風俗ホストとも体の関係※
0890名無しさん@お腹いっぱい。
2017/02/10(金) 15:57:21.03.
莉里子(本人公表)1994年3月7日 or 1996年4月25日 http://imgur.com/a/oJZpv
生主時代(にゃんぱす、りりこし、莉里子)
剛 http://i.imgur.com/dQxxGuV.png http://imgur.com/a/gPaof
東京都三鷹市 シティハイツ吉祥寺通り
http://i.imgur.com/UmTmbcu.jpg
http://i.imgur.com/cODTuzm.png
http://i.imgur.com/KdyuUod.png
http://imgur.com/a/eeixK (見せたがり乱交好きのメンヘラ) http://i.imgur.com/9V5mmTh.png
http://i.imgur.com/lobby7w.png
http://i.imgur.com/AdewV6O.jpg
http://i.imgur.com/YQaNYBd.png
http://i.imgur.com/pdsCXHG.jpg
莉里子 緊縛ハメ撮り師 『相馬ドリルrenji』 とラブホに2人で入って フルヌード緊縛ハメ撮り
https://pbs.twimg.com/media/CpFjMz0UEAAurD-.jpg http://i.imgur.com/xaAhkiD.png
https://twitter.com/somadrill/status/761498960028499968
http://imgur.com/a/3dnz5
http://i.imgur.com/SAAZ0fQ.png
0891名無しさん@お腹いっぱい。
2017/02/10(金) 15:57:31.97.
.
>悪質パクツイ垢(自称ハッカー)のコピーライティング特定されててワロた
@copy__writing の中の人は東京都三鷹市の莉里子
https://twitter.com/copy__writing
http://i.imgur.com/LyXsDj9.png
http://i.imgur.com/nqT3xBN.png
http://i.imgur.com/2FlhfLE.jpg
https://www.mercari.com/jp/u/446591929/
0892名無しさん@お腹いっぱい。
2017/02/10(金) 15:58:37.98@riricoco0
@bibliophilia333
@muzimuzi333
@nekomatagensou
@hanasoraumimori
@mirainosekai3
@zibanyan666
@parlorchild
@liliririko
@EriotN
@mike_peko
@riricoco0
@ririko_neko
@nyanpas ※1
@telegraphyneko
@riricatputi (新アカ) http://imgur.com/a/X1vQA
0893名無しさん@お腹いっぱい。
2017/02/10(金) 22:49:49.54再現性はあるの?
手で実行してるのか知らないけど
lsの結果をファイルにリダイレクトしといて(ログ残しておいて)
地道に調べるしかないと思う
0894名無しさん@お腹いっぱい。
2017/02/14(火) 09:44:10.27while read line
do
なんちゃら
done < CSV
みたいに一行ずつ読み込んでなんちゃらすると、特定の漢字をreadで取った時に文字化けするんだが
これの回避策って兄貴何かないかな
とりあえずIFSを改行のみにしてfor line in `cat CSV`にして凌いだが、IFSいじるのが気持ち悪くて仕方がない
0895名無しさん@お腹いっぱい。
2017/02/14(火) 10:11:22.080896名無しさん@お腹いっぱい。
2017/02/14(火) 10:13:38.180897名無しさん@お腹いっぱい。
2017/02/14(火) 10:35:53.640x5C を含む漢字でしょ、「表」とか
だったら read -r line で
0898名無しさん@お腹いっぱい。
2017/02/14(火) 10:44:50.39KOREDAAAAA!!!
ありがとう兄貴
ちなみに構造って感じでつまづいてた
SJIS扱うのは古いプロジェクトならよくあることよ
0899名無しさん@お腹いっぱい。
2017/02/14(火) 10:54:10.92UTF8とかだと回避出来るんかなこれは
0900名無しさん@お腹いっぱい。
2017/02/14(火) 11:54:23.78これが世代というものなんですね……
0901894
2017/02/14(火) 13:40:31.07にしても意外なほどググっても出ないな、それほどマイナーなのかこの症状
もしくは当たり前すぎるのか
0902名無しさん@お腹いっぱい。
2017/02/14(火) 15:20:01.03sjis ダメ文字でググればごろごろと
0904名無しさん@お腹いっぱい。
2017/02/14(火) 15:40:03.34もう少しやったな
0905894
2017/02/14(火) 16:05:30.25特定の漢字が文字化けってあたりの記事から推察して、SJISがなんかマズイってとこにはたどり着いたかもしれんが、多分それでもread -rには気づかなかったと思うわ
iconv -t utf8してたと思う
0906名無しさん@お腹いっぱい。
2017/02/14(火) 17:11:17.24iconv を利用するのはアリだと思うよ。
業務系のシェルスクリプトでも「SJIS データを一時的に UTF-8 にコンバートして何らかの処理をした後に SJIS に戻す」という手法で実装することがある。
0908名無しさん@お腹いっぱい。
2017/02/14(火) 20:50:41.080909名無しさん@お腹いっぱい。
2017/02/15(水) 01:22:16.710910名無しさん@お腹いっぱい。
2017/02/15(水) 01:34:33.21iconvならきっとなんとかしてくれる
0911名無しさん@お腹いっぱい。
2017/02/15(水) 04:53:01.40そう、iconvならね
0912名無しさん@お腹いっぱい。
2017/02/18(土) 04:37:58.77echo A > test.txt ; echo B >> test.txt
ARRAY=$(cat test.txt)
for item in ${ARRAY[@]}; do
echo $item
done
としたら
A
B
と表示されるので、$ARRAYは 2個の要素を持つ配列になったのだと思っていました。
ところが要素数を
echo ${#ARRAY[@]}
で表示させたら 1 が表示されます。
$ARRAYは配列になっていないのでしょうか?
だとすると、なぜ for item … で表示されたのか?
0913名無しさん@お腹いっぱい。
2017/02/18(土) 04:55:39.09echo A > test.txt; echo B >> test.txt
ARRAY=$(cat /tmp/test.txt)
for (( i=0; i<${#ARRAY[@]}; i++ )) do
printf "ARRAY index:%d value:%s\n" "$i" "${ARRAY[i]}"
done
readarray -t ARRAY2 < <(cat /tmp/test.txt)
for (( i=0; i<${#ARRAY2[@]}; i++ )) do
printf "ARRAY2 index:%d value:%s\n" "$i" "${ARRAY2[i]}"
done
0914名無しさん@お腹いっぱい。
2017/02/18(土) 05:52:55.03readarray -t ARRAY < <(cat test.txt)
で綺麗に配列として読まれますね。
これでいま作っている自作ツールが完成出来ます。
ありがとうございます
0915名無しさん@お腹いっぱい。
2017/02/18(土) 09:43:20.540916名無しさん@お腹いっぱい。
2017/02/18(土) 14:18:47.86#!/bin/bash
echo A > test.txt ; echo B >> test.txt
ARRAY=$(cat test.txt)
N=1
for item in ${ARRAY[@]}; do
echo ARRAY[$N]=$item
N=$(($N + 1))
done
としたら
ARRAY[1]=A
ARRAY[2]=B
と表示されて、配列になっているようです
0917名無しさん@お腹いっぱい。
2017/02/18(土) 16:02:36.82それは配列になってるんじゃなくてforループで一つ目の要素がsplitされてるだけ
echo A > test.txt ; echo B C >> test.txt みたいにスペースなんかが入ると対処できないからそういうコードはやめたほうがいい
for item in "${ARRAY[@]}"; do ってクウォートすると結果変わるでしょ?
あと”<(cat test.txt)”は比較のために書いただけでcatしなくても大丈夫
readarray -t ARRAY < test.txt
while readするかreadarray(=mapfile)使うか
http://mywiki.wooledge.org/BashFAQ/005#Loading_lines_from_a_file_or_stream
0918名無しさん@お腹いっぱい。
2017/02/18(土) 17:07:28.86> それは配列になってるんじゃなくてforループで一つ目の要素がsplitされてるだけ
> for item in "${ARRAY[@]}"; do ってクウォートすると結果変わるでしょ?
なるほど。
配列になっていないのと、検証の方法が間違っていたことがよく理解出来ました。
> echo A > test.txt ; echo B C >> test.txt みたいにスペースなんかが入ると対処できないからそういうコードはやめたほうがいい
気を付けます。
> あと”<(cat test.txt)”は比較のために書いただけでcatしなくても大丈夫
> readarray -t ARRAY < test.txt
> while readするかreadarray(=mapfile)使うか
> http://mywiki.wooledge.org/BashFAQ/005#Loading_lines_from_a_file_or_stream
ありがとうございます。
もっと勉強します
0919名無しさん@お腹いっぱい。
2017/02/20(月) 13:16:49.47[user@f25 ~]$ ARRAY=$(cat test.txt)
[user@f25 ~]$ declare -p ARRAY
declare -- ARRAY="A
B"
[user@f25 ~]$ readarray -t ARRAY < test.txt
[user@f25 ~]$ declare -p ARRAY
declare -a ARRAY='([0]="A" [1]="B")'
0920名無しさん@お腹いっぱい。
2017/02/20(月) 18:00:26.41declare -p !!!
知らなんだ
0921名無しさん@お腹いっぱい。
2017/02/20(月) 18:11:16.14grep -oとか
0922名無しさん@お腹いっぱい。
2017/02/21(火) 05:20:06.32ARRAY=( $(cat test.txt) )
0923名無しさん@お腹いっぱい。
2017/02/21(火) 16:45:06.28echo A > test.txt ; echo B C >> test.txt みたいにスペースなんかが入ると…
0924名無しさん@お腹いっぱい。
2017/02/21(火) 19:03:20.01ARRAY=( $(cat test.txt) )
declare -p ARRAY
とすれば空白混じりの行も1行として扱われるが、
空行(何も文字が無い行)は$ARRAYに読み込まれない
readarray -t ARRAY < test.txt
declare -p ARRAY
だと空行も読み込んでくれる
0925名無しさん@お腹いっぱい。
2017/02/28(火) 23:57:54.64みたいな時に終了コードはgrepこの場合1
でかつ標準出力にはtestが出ていて欲しいのですが
どうしたらいいでしょうか?
環境はbashです
0926名無しさん@お腹いっぱい。
2017/03/01(水) 00:40:42.45でどうだろう?
0927名無しさん@お腹いっぱい。
2017/03/01(水) 00:57:07.01常に入力をそのまま出力していいのだろうか。
0928名無しさん@お腹いっぱい。
2017/03/01(水) 01:36:33.88echo test | ( grep -v a; exit $(expr \( "$?" + 1 \) % 2 ))
0929名無しさん@お腹いっぱい。
2017/03/01(水) 02:35:11.20echo の部分は常に表示、grepは結果のみ欲しいので-qで、判定につかうインプットは常に全量表示して、結果はリターンコード、標準出力は人が見るよう、リターコードはその後のシステム的な分岐につかう的な目的です(後続はbashの世界でないのでワンライナーが嬉しい)
0930名無しさん@お腹いっぱい。
2017/03/01(水) 05:09:32.29例えば-zと-sを一緒に実行して--out でフォルダに書き出したいとして
どういうルールで並べて記述すればいいでしょうか?
sips -Z 200 * -s format jpeg --out Converted/
あれこれいじって、たまたまこれで動いたのですが
正しいのかわかりません。
よろしくお願いします。スレチだったらすいません。
0931名無しさん@お腹いっぱい。
2017/03/01(水) 09:20:45.49grep にこだわらくても良くて、GNU sed を使ってもいい場合:
$ echo test | sed '/a/!q1'
test
$ echo $?
1
0932名無しさん@お腹いっぱい。
2017/03/01(水) 09:22:21.87正しいけどスレチ
man見ろ
見られないんなら
https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/sips.1.html
0933名無しさん@お腹いっぱい。
2017/03/01(水) 09:41:41.920934名無しさん@お腹いっぱい。
2017/03/01(水) 09:50:14.780935名無しさん@お腹いっぱい。
2017/03/01(水) 10:04:09.41そういえばこういうスレもあったり
【Macintosh】MacでUNIX【Terminal】
http://echo.2ch.net/test/read.cgi/unix/1123501408/
mac板でよかった気もするけど
OS XをUnixとして使ってる人の為のスレ 18
http://potato.2ch.net/test/read.cgi/mac/1462475819/
0936名無しさん@お腹いっぱい。
2017/03/01(水) 10:17:52.51あ、間違えた…こうしないと
$ echo test | sed -n 'p;/a/H;${x;/./q0;q1}'
0937名無しさん@お腹いっぱい。
2017/03/01(水) 12:19:32.480938名無しさん@お腹いっぱい。
2017/03/01(水) 17:16:16.75じゃないの?
0939名無しさん@お腹いっぱい。
2017/03/01(水) 17:36:55.410940名無しさん@お腹いっぱい。
2017/03/01(水) 17:38:08.890942名無しさん@お腹いっぱい。
2017/03/04(土) 09:13:31.42うちでもよく使うが、sips なんて他には無いからな
for i *.jpg; do sips -Z 200 $i -s format jpeg --out Converted/$i; done
ところでマカーな人はbash4入れてるんですかね。bash3なので、最近ココで出てくるreadarrayが使えない
0943名無しさん@お腹いっぱい。
2017/03/04(土) 09:17:20.48for i in *.jpg ; do な
0944名無しさん@お腹いっぱい。
2017/03/04(土) 10:32:40.920945名無しさん@お腹いっぱい。
2017/03/04(土) 18:32:17.60>ところでマカーな人はbash4入れてるんですかね。
Homebrewで入れてそっち使うようにしてる
0946名無しさん@お腹いっぱい。
2017/03/07(火) 19:02:41.56自分は仕事ならcygwin(今は使ってない)、実機、仮想環境
プライベートならラズパイ、仮想環境かな
0947名無しさん@お腹いっぱい。
2017/03/07(火) 22:43:56.070948名無しさん@お腹いっぱい。
2017/03/07(火) 23:30:24.960949名無しさん@お腹いっぱい。
2017/03/08(水) 01:50:34.93SL-Zaurus(SL-C860)を今だに現役で使っているよ
0950名無しさん@お腹いっぱい。
2017/03/09(木) 02:31:23.57ただ書けるだけじゃなくて動かせたり
実際にその機械で便利に使えたりするのですか?
0951名無しさん@お腹いっぱい。
2017/03/09(木) 17:50:34.83x=$( python test.py )
はダメでした
0952名無しさん@お腹いっぱい。
2017/03/09(木) 17:58:17.55print("Hello world!")
$ python test.py
Hello world!
$ x=$(python test.py)
$ echo $x
Hello world!
0953名無しさん@お腹いっぱい。
2017/03/10(金) 09:16:11.80シェルごめんよ
0954名無しさん@お腹いっぱい。
2017/03/10(金) 13:07:41.330955名無しさん@お腹いっぱい。
2017/03/10(金) 16:08:16.57pythonのせい
0956名無しさん@お腹いっぱい。
2017/03/11(土) 22:32:29.750957名無しさん@お腹いっぱい。
2017/03/11(土) 22:46:42.79呼出し後に元に戻したいとするとsetかな
0958名無しさん@お腹いっぱい。
2017/03/11(土) 23:06:24.730959名無しさん@お腹いっぱい。
2017/03/12(日) 00:12:25.140960名無しさん@お腹いっぱい。
2017/03/12(日) 01:47:16.95bash なら "${@:2}" でええんちゃう
0961名無しさん@お腹いっぱい。
2017/03/12(日) 04:14:35.39その発想もなかった
パラメータとして渡すならこっちの方が分かりやすいな
0962名無しさん@お腹いっぱい。
2017/03/12(日) 19:17:36.56sed -n -e '/hoge1/,/hoge2/p'
これでできるのを、今知って感動中。しかも、こっちの方が速い。
そのあとの置換は
sed -n -e '/hoge1/,/hoge2/p' | sed -e 's/foo/bar/g'
としかできなかったけど
sed -n -e '/hoge1/,/hoge2/p' -e 's/foo/bar/g'
で、やる方法とかであるんですか?
0963名無しさん@お腹いっぱい。
2017/03/12(日) 20:09:10.06じゃだめなの?
0964名無しさん@お腹いっぱい。
2017/03/12(日) 20:49:35.74でもいけそう
0965名無しさん@お腹いっぱい。
2017/03/13(月) 15:22:55.400966名無しさん@お腹いっぱい。
2017/03/13(月) 17:19:42.050967名無しさん@お腹いっぱい。
2017/03/13(月) 19:49:20.42さらに速くなりました
一番最後の文字はコマンドというのを実感
0968名無しさん@お腹いっぱい。
2017/03/13(月) 20:38:32.020969名無しさん@お腹いっぱい。
2017/03/15(水) 13:36:43.930970名無しさん@お腹いっぱい。
2017/03/15(水) 13:37:42.13俺が負けだって言ったら負けなんだよ
大人しく言う事聞け
0971名無しさん@お腹いっぱい。
2017/03/15(水) 13:43:38.360972名無しさん@お腹いっぱい。
2017/03/15(水) 13:45:42.220973名無しさん@お腹いっぱい。
2017/03/15(水) 16:27:57.38お漏らししたようなものだからね
0974名無しさん@お腹いっぱい。
2017/03/15(水) 18:03:51.07それで、いつの間にか perl を代わりに使うようになった。
0975名無しさん@お腹いっぱい。
2017/03/15(水) 19:02:59.320976名無しさん@お腹いっぱい。
2017/03/15(水) 20:28:01.980977名無しさん@お腹いっぱい。
2017/03/15(水) 20:45:20.130978名無しさん@お腹いっぱい。
2017/03/15(水) 20:58:18.060979名無しさん@お腹いっぱい。
2017/03/16(木) 12:44:27.48sed -e "s/微妙に/非常に/" <975 >975
ってやって空のファイルを作ってしまったあの頃...
0980名無しさん@お腹いっぱい。
2017/03/16(木) 12:47:16.460981名無しさん@お腹いっぱい。
2017/03/16(木) 16:23:09.20sed の入力にはパイプを使うことが多いかな。
0982名無しさん@お腹いっぱい。
2017/03/16(木) 22:48:37.430983名無しさん@お腹いっぱい。
2017/03/18(土) 22:25:35.750984名無しさん@お腹いっぱい。
2017/03/18(土) 23:27:17.300985名無しさん@お腹いっぱい。
2017/03/19(日) 00:04:19.090986名無しさん@お腹いっぱい。
2017/03/19(日) 00:24:39.590987名無しさん@お腹いっぱい。
2017/03/19(日) 00:57:36.330988名無しさん@お腹いっぱい。
2017/03/19(日) 01:06:54.080989名無しさん@お腹いっぱい。
2017/03/19(日) 10:07:51.170990名無しさん@お腹いっぱい。
2017/03/19(日) 11:41:33.99さらに、新たなソフトのインスコはできない。
まあ、notepadでソースの編集はできる。
Eドライブには多くのフォルダがあって、中にはjpegのえろ画像が1テラ分てんこ盛り
えろ画像だけを全部Dドライブにコピーしたい。
Eドライブのフォルダを見ると8階層ぐらいのフォルダもあって、とても手作業のコピペはムリ。
にゃんとか目的を達成する方法はないであろうか?!
各位のお知恵を拝借したい。
0991名無しさん@お腹いっぱい。
2017/03/19(日) 13:00:13.490992名無しさん@お腹いっぱい。
2017/03/19(日) 14:12:15.820993名無しさん@お腹いっぱい。
2017/03/19(日) 20:18:27.47仕事でエロ画像を扱ってるか上司の個人環境とかかな
0994名無しさん@お腹いっぱい。
2017/03/19(日) 20:31:39.220995名無しさん@お腹いっぱい。
2017/03/19(日) 20:55:37.07GNU grep + GNU awk の場合だけど、GNU awk単独よりも早いらしいぞ
http://papiro.hatenablog.jp/entry/2015/05/19/003432
0996名無しさん@お腹いっぱい。
2017/03/19(日) 22:03:55.180997名無しさん@お腹いっぱい。
2017/03/19(日) 23:09:48.69timeの使い方を知らないって事を自慢してどうしたいんだ?
0998名無しさん@お腹いっぱい。
2017/03/19(日) 23:10:46.820999名無しさん@お腹いっぱい。
2017/03/20(月) 10:44:19.74昔社内から netnews が見れてたので perl でスクリプト組んでエロ画像落としまくってたのをふと思い出した
当時は普通にFDに移動して持ち帰ってたけど
1000名無しさん@お腹いっぱい。
2017/03/20(月) 12:06:05.4910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
life time: 583日 12時間 24分 4秒
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。