1 名前:名無しさん@お腹いっぱい。 mailto:sageteoff [2015/08/14(金) 23:42:01.51 .net] シェルスクリプトの総合スレです。 □お約束 ・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。 FreeBSDユーザは/bin/shの正体がashなので注意。 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。 src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/ heirloom.sourceforge.net/sh.html ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) ・シェルスクリプトのことをシェルってゆーな □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awkまたはperlの方が適した処理にはそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 □回答者への注意事項: ・シェルスクリプトでの処理方法を質問しているのに、よくわからずに 「そういうのはperl使いましょう」と回答するのはやめましょう。 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。 前スレ シェルスクリプト総合 その24 peace.2ch.net/test/read.cgi/unix/1415634843/
205 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 17:10:42.13 .net] sedならどうなの?
206 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 18:12:48.25 .net] GNU版grep2.5.4で「『条件A』または『条件Bかつ条件C』」という指定をするにはどうすればよいのでしょう 例えば、以下のようなテキストで 111 aaa 222 bbb 〜 ccc 〜 bbb 〜 ddd 〜 「aaa」または「bbbかつccc」だけ抜き出して aaa bbb 〜 ccc 〜 を抜き出したいです grep aaa sample.txt grep -e bbb -e ccc sample.txt として、個別の条件で出力できるところまでは分かったのですが、 テキストに出てくる順番も重要なので、何とかうまくできないかと思ってます それともawkとかを使う必要があるのでしょうか…
207 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 18:21:02.93 .net] こんなんでいいんじゃない grep -E 'aaa|bbb.*ccc|ccc.*bbb' a.txt
208 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 18:27:53.77 .net] >>202 できました 「bbb.*ccc」「ccc.*bbb」という書き方が思いつきませんでした ありがとうございました
209 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 18:57:13.66 .net] 関数の内部を切り出すような処理は yacc(よく知らないんだけど)なんかは関係ない?使えないの?
210 名前:名無しさん@お腹いっぱい。 [2015/11/22(日) 19:30:02.70 .net] ファイルのリネームについてご教授ください 01.mp4 02.mp4 … 25.mp4 という動画ファイルがあります それとは別のテキストファイル (List.txt) があり、内容は orange 01「みかん」 orange 02「ぽんず」 … orange 25「かんきつ」 動画ファイルを、テキストファイルから取得した文字列で リネームしていきたいですが良い方法を知りたいです sedやawkでも構いません よろしくお願いします 環境はMac El Capitanです
211 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/22(日) 20:11:25.81 .net] >>205 for i in {01..25} do mv $i.mp4 $(grep $i List.txt).mp4 done
212 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/22(日) 20:56:26.91 .net] >>206 usage: mv [-f | -i | -n] [-v] source target mv [-f | -i | -n] [-v] source ... directory というメッセージエラーで上手くいかなかったです List.txtの空白スペースに対応してなかったようで orange 01「みかん」→ orange01「みかん」にしておくと うまくいきました
213 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/22(日) 20:57:02.29 .net] ありがとうございます
214 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/23(月) 10:43:36.03 .net] 常にダブルクォートを心がけること
215 名前:名無しさん@お腹いっぱい。 [2015/11/23(月) 14:52:02.86 .net] >>187 >>200 私はsedでこういう使い方なら使用度高いな。 ただCの関数の抜き出しなどはこれだけじゃ全然足りないね。 readf () { sed -n '/[[:space:]]*[int|void][[:space:]]\+'$1'[[:space:]]*(.*)/b filter1; d; :filter1; n; /[[:space:]]*{/n; :filter2; /[[:space:]]*}/q; p; n; b filter2' $2 }
216 名前:名無しさん@お腹いっぱい。 [2015/11/23(月) 14:53:07.97 .net] ごめん引数の順序が逆になってる。
217 名前:名無しさん@お腹いっぱい。 [2015/11/23(月) 15:08:42.76 .net] でもまぁ書換えたりしない場合、大抵の事は前の人が書いてるように grepの-Pを使うといいと思う。
218 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/23(月) 21:42:42.57 .net] >>206 bashism このスレ的にだけでなく一般的にも bash 依存のスクリプトには、#!/bin/bash を付けた方が良いよ
219 名前:名無しさん@お腹いっぱい。 [2015/11/24(火) 04:40:58.26 .net] こんなのもありかな。以下だと表示するだけ実際にやる時は echoを外してunset rをしてから行う事。 cat List.txt |while read do printf '%02d\n' $(( ++r )) |xargs -i echo mv {}.mp4 ${REPLY}.mp4 done
220 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 06:19:42.03 .net] そういう、スペース入りファイル名未対応回答はいいです
221 名前:名無しさん@お腹いっぱい。 [2015/11/24(火) 07:10:44.29 .net] ごめんねーzshだと大丈夫なんだけどな。 じゃあちょっと分らないな。
222 名前:名無しさん@お腹いっぱい。 [2015/11/24(火) 07:13:51.39 .net] しかし根本的なお勧めな解答をするならば、fileにはわざわざ音楽名をつけない事だね。
223 名前:名無しさん@お腹いっぱい。 [2015/11/24(火) 07:15:07.67 .net] zshを使ってないならそんな事なおさらだよ。
224 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 08:53:18.61 .net] >>214 xargsが無駄です。 catが無駄です。 r=0 while read do : $((r++)) echo mv $(printf %02d $r).mp4
225 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 09:27:10.95 .net] ていうか、>>214 動く?
226 名前:名無しさん@お腹いっぱい。 [2015/11/24(火) 10:13:12.69 .net] こっちの台詞だよ。それ動くのかね。
227 名前:名無しさん@お腹いっぱい。 [2015/11/24(火) 10:16:52.25 .net] まあどうでもいいや。
228 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 11:42:10.34 .net] こっちってどっちだ
229 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/25(水) 00:35:58.05 .net] >>205 bash でもいいなら mapfile -t -O 1 -c 1 -C 'move(){ mv $(printf "%02d.mp4" "$1") "$2.mp4"; };move' < List.txt
230 名前:200ではない mailto:sage [2015/11/25(水) 20:05:12.35 .net] >>210 :filter1; n; /[[:space:]]*{/n; の辺りについて 2行目に { が無い場合は、どちらを想定したのかしれないが、興味を引いた たぶん前者だろうな。すると、古くから実際に使っていそうだね int main(argc, argv) int argc; char *argv[]; { int main(int argc, char *argv[]) {
231 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/28(土) 10:55:16.58 .net] >>224 callback の中で関数定義してるよ。外でやるか、bash -c '...' にしろよ mapfile -t -O 1 -c 1 -C 'bash -c '\''echo mv $(printf "%02d.mp4" "$0") "$1.mp4"'\' < List.txt
232 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/29(日) 10:07:15.23 .net] $sed -e '$-3,$d' file sed: -e expression #1, char 2: 不明なコマンド: `-' なして?
233 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/29(日) 14:16:20.05 .net] >>227 sedのアドレスで $-3 とか使えませんw head -n -4 で行けるよ。 ($-3から$までだから終りの4行削除)
234 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/29(日) 18:57:29.27 .net] ここUNIX板だよ
235 名前:名無しさん@お腹いっぱい。 [2015/11/30(月) 06:01:18.54 .net] >>225 ごめん紹介程度に適当にね。しかしグルーピングの間違いがひどいけどいいや、\|だけか。 やっつけ仕事的な興味だと思うけれどまあ実際やっつけ仕事に使える。 書き留めたものの仕分けとかね。他にもhtml-xml-utilsというsoftwareに hxpipe,hxunpipeというcommandが入ってるのだけど、その出力の処理にも使える。 はぁそろそろ現実世界に帰るか準備をぽつぽつするので帰ってきません。
236 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/30(月) 09:32:38.39 .net] >>228 じゃ、この人は qiita.com/takechika/items/b96eff5773ce9d9cc9b3 嘘書いてるわけねw 他のサイトでも、同様の記述見た事あるんだけどなー
237 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/30(月) 11:51:54.22 .net] >>231 ネットで嘘が蔓延するのはよくあること。 他サイトは嘘をまるごとコピーして載せてるだけだろw vi(ex)やedでは $-3 とか使えるので、それと混同してるんだろ。
238 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/30(月) 12:19:42.13 .net] 使える実装もあんのかな
239 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/30(月) 13:05:21.61 .net] >>231 同様の記述ってどこ?
240 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/01(火) 02:36:00.46 .net] >231の謝罪マダァ-? (・∀・ )っ/凵⌒☆チンチン
241 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/01(火) 15:02:08.23 .net] >>231 そういうばか、死ねばいいのに。
242 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/01(火) 15:30:51.28 .net] あなたもコメントしてみませんか :)
243 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/01(火) 15:39:36.30 .net] ストリームなんだから、全部パッファしなきゃ実装できない事はちょっと考えれば明らかなのに、 exで使えるからsedも使えるだろうとかセンス悪すぎる。 エンジニアの素質無い。
244 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/01(火) 17:09:19.19 .net] sed で $-3 とか書いてるプログラマorシス管見つけたら社史編纂室に異動させるわ
245 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/01(火) 17:18:23.69 .net] 面白そうじゃないか
246 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/01(火) 18:23:49.12 .net] > 全部パッファしなきゃ実装できない 最後に切る行数分だけバッファーすれば良い
247 名前: [] [ここ壊れてます]
248 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/01(火) 21:49:07.76 .net] そんなことしか思いつかないところが壊滅的にセンス悪い 1,$-3s/hoge/hage/
249 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/01(火) 22:53:36.24 .net] なんだまた一人で自演だったか
250 名前:not 238 mailto:sage [2015/12/02(水) 07:07:15.41 .net] >>242 でも、4行分バッファして4行分処理を遅延すればできるが。 それとは別に、sedではそういう処理には向かないというのは同意。
251 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/02(水) 23:21:03.30 .net] バッファーした後は、N;P;D のループで済むから、比較的単純。結構 sed 向きじゃない? sed -ne ':Lp; N; 1,4b Lp; P; D' cutTail() { sed -ne ' :LoopToFillBuffer N 1, '"$1"' b LoopToFillBuffer P D ' }
252 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/04(金) 00:22:12.57 .net] # delete the last 10 lines of a file sed -e :a -e '$d;N;2,10ba' -e 'P;D' # method 1 sed -n -e :a -e '1,10!{P;N;D;};N;ba' # method 2 sed.sourceforge.net/sed1line.txt
253 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/04(金) 06:04:34.02 .net] >>246 -e オプションで複数に分ける意味ないだろ。 sed ':a;$d;N;2,10ba;P;D' または sed -n ':a;1,10!{P;N;D;};N;ba' だけで行ける。
254 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/04(金) 06:26:55.09 .net] シェルスクリプトでオブジェクト指向ってできないんですか?
255 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/04(金) 07:53:54.11 .net] >>248 つ 『Unix Shell Objects』 www.amazon.co.jp/dp/toc/0764570048
256 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 10:28:27.33 .net] httpsでファイル入手するスクリプトで一番汎用的な書き方ってなんだろう?
257 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 10:33:45.35 .net] wget
258 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 10:48:19.19 .net] curl
259 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 11:21:08.52 .net] 古い環境だと結局ブラウザ使うのが一番確実だったりするのだろうか?
260 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 13:20:40.25 .net] >>253 スクリプトからブラウザ呼ぶの?
261 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 16:31:25.34 .net] シェルスクリプトで宅内監視カメラの静止画を1分ごとにDLして保存してるけど、 うちではcurlが鉄板だわ
262 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 21:08:34.28 .net] linux - Is wget or similar programs always available on POSIX systems? - Stack Overflow 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
263 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 21:20:56.81 .net] 監視カメラの時間別映像ファイルを上書きで消すのをトリックに使ったミステリがあったなあ
264 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 21:27:45.23 .net] httpsってsslかなんかだっけ?
265 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 22:42:59.47 .net] 当然>>256 はそれで終わりじゃないよな? SSL/TLSのためにもうひと工夫あるんだよな? ボケ回答のウケ狙いじゃないよな?
266 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 23:08:08.80 .net] https telnet で検索
267 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 23:43:57.13 .net] 流石にSSL部分を前スレ716みたいなコードで置き換えるというのは無茶だろうか?
268 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 23:52:00.25 .net] 検索したらそういう変態技サイトでもあるのかなと思ったけど見つけられなかったわ <
269 名前:a href="../test/read.cgi/unix/1439563321/260" target="_blank">>>260に期待する [] [ここ壊れてます]
270 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/07(月) 23:53:10.50 .net] s_clientつーのがある
271 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 00:09:05.97 .net] telnetとoepnsslの区別が出来ない人がいるな
272 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 00:54:46.22 .net] 256のように標準入力からコマンド流しこめる奴って話だろ。アスペ。
273 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 07:04:54.30 .net] 同様に扱える { sleep 1 printf 's_client -connect www.example.com:443\n' sleep 3 printf 'GET / HTTP/1.1\nHost: www.example.com\n\n' sleep 3 } | openssl
274 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 07:25:22.83 .net] >>250 perlのモジュール使う
275 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 10:24:12.12 .net] >>267 それこそ環境選ばないか?
276 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 11:28:41.95 .net] perl入ってない環境使う機会なんて もうほとんどなくなったなぁ
277 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 11:50:28.49 .net] perl入ってる環境使う機会なんて もうほとんどなくなったなぁ
278 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 12:05:03.09 .net] 初版から標準対応しているものでないと使いにくいよね。
279 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 14:20:28.02 .net] 入ってなくて、入れていいなら入れるもの
280 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 14:29:50.01 .net] 入れ替えるのはどこかで不都合があるかわかったもんじゃないからな。
281 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 15:13:44.93 .net] 本体ロム領域4MBのルーターのtelnet接続で動く技でお願いします。 >>256 は動きそうなので合格だけどssl非対応なので不合格。 >>266 はopensslコマンドがないので落第です。 もっと頑張ってくださいよ。
282 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 16:28:48.50 .net] 条件後出し北w
283 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 17:44:47.81 .net] そもそも前出ししてないけどな >>250 の条件は一番汎用的ということで完結しているので、それより解きやすい派生のお題だろう。
284 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 17:49:54.77 .net] じゃ、その4MBのROMの中身、開示しないとだめだろ。 つーか、なんか白けてきた。。。
285 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 17:50:49.65 .net] それは>>274 に聞いてくれ
286 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 17:55:37.06 .net] >>277 root# busybox BusyBox v1.22.1 (2014-09-20 22:01:35 CEST) multi-call binary. BusyBox is copyrighted by many authors between 1998-2012. Licensed under GPLv2. See source distribution for detailed copyright notices. Currently defined functions: [, [[, arping, ash, awk, basename, brctl, bunzip2, bzcat, cat, chgrp, chmod, chown, chroot, clear, cmp, cp, crond, crontab, cut, date, dd, devmem, df, dirname, dmesg, du, echo, egrep, env, expr, false, fgrep, find, free, fsync, grep, gunzip, gzip, halt, head, hexdump, hostid, hwclock, id, ifconfig, kill, killall, less, ln, lock, logger, ls, md5sum, mkdir, mkfifo, mknod, mkswap, mktemp, mount, mv, nc, netmsg, netstat, nice, nslookup, ntpd, passwd, pgrep, pidof, ping, ping6, pivot_root, poweroff, printf, ps, pwd, readlink, reboot, reset, rm, rmdir, route, sed, seq, sh, sleep, sort, start-stop-daemon, strings, switch_root, sync, sysctl, tail, tar, tee, telnet, telnetd, test, time, top, touch, tr, traceroute, true, udhcpc, umount, uname, uniq, uptime, vconfig, vi, wc, wget, which, xargs, yes, zcat
287 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 18:25:47.79 .net] wget使えんのか?
288 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 18:28:57.45 .net] busyboxでwgetは使えるが、httpsには対応してない。(httpとftpのみ)
289 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 19:30:56.44 .net] 最近はスクリプトと言えばbusyboxの仕事ばかり。 perl使いは社史編纂室に送られたw
290 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 19:31:25.90 .net] 条件を増やしても減らしても後出し 元々の条件 httpsでファイル入手するスクリプトで一番汎用的な書き方ってなんだろう? 後出し条件 4MBのルーターのtelnet接続で動く技で
291 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 20:02:22.82 .net] >>283 前者は汎用的、後者はカスタムで、条件が正反対だろうが
292 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 20:08:32.27 .net] 条件は部分集合だろ?
293 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 20:11:56.40 .net] いまどきだとtelnetがなくてsshだけだったりするのもあるのだろうか?
294 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 20:25:44.06 .net] >>285 違うからブランチだと言ってるんだろう。そもそも別人なので後出しも前田氏もない。
295 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 20:52:44.89 .net] へぇ〜別人ねぇ〜 別人が横から条件変えてるのか 何故に言い切るの? あほらし。相手して損した
296 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 21:01:10.94 .net] >>288 250だけど何か質問ある?
297 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 21:16:23.39 .net] grepを破壊的に使うことってできます? あればおしえてください 他のフィルタ系コマンドでも応用できるものだとよりよいです
298 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 21:38:58.20 .net] >>288 リテラシー低いよ
299 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 21:44:05.23 .net] >>290 (rm file; grep hoge >file) <file Cygwinじゃ無理かも
300 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 21:47:39.67 .net] あとファイルシステムの容量が不足したら 元ファイルまで失われるという欠陥もある
301 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 21:48:19.00 .net] >>288 >>279 で条件提示したんだから、この中のコマンドで完結できる案を出しなさいよ
302 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/08(火) 21:49:52.56 .net] >>292 できました(Cygwin64でも ありがとうございます!
303 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/10(木) 05:48:14.80 .net] 初歩的な質問ですみません。 find . -type f -name '*.txt' と find . -name '*.txt' -type f は、どっち良いとかありますか?
304 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/10(木) 07:16:13.77 .net] >>282 まじかw ワロタ
305 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/10(木) 07:31:45.64 .net] >>296 どっちでもいいよ ほとんどプレーンファイルっていう普通の状況なら、 名前を先に判定したほうが計測できないレベルで速いかもしれない
306 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/10(木) 08:02:20.09 .net] wget、通常ならHTTPS (SSL/TLS) Optionsがあって、オプション指定できるが busybox組み込みのwgetは、軽くするため、httpsオプションなしでコンパイルされ てるのかな。
307 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/10(木) 08:48:45.97 .net] コンソールから、2chのスレ(たとえばココ)に投稿するような スクリプト使ってる人いますか?
308 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/10(木) 09:01:58.85 .net] >>296 レギュラーファイル以外のディレクトリとかが1000万個あるなら、名前を比較しないで済む前者の方が良いかもしれない
309 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/10(木) 12:39:47.97 .net] >>299 wgetがhttps対応したのは後出しなんじゃないか? busyboxが登場した頃のwgetでは標準では無かったと思われ
310 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/10(木) 12:53:18.77 .net] そもそも軽くするのにashなんて必要だろうか?
311 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/10(木) 13:12:18.13 .net] >>303 他の選択肢は?
312 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/10(木) 13:38:24.81 .net] 2001年からHTTPSサポートしてるんだぜ それ以上古い環境なんて考慮する必要ないよ
313 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/10(木) 14:03:30.45 .net] そんな事言ってる奴はbashとopensslの穴に落ちるがいい。 なんと言われようとshが標準
314 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/10(木) 15:56:58.29 .net] >>298 >>301 ありがとうございます、実質変わらないんですね。 気にしないことにします。
315 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/11(金) 00:02:46.91 .net] https://git.busybox.net/busybox/log/networking/wget.c wget: add support for https using "openssl s_client" as a helper Denys Vlasenko 2014-02-22
316 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/11(金) 00:30:35.95 .net] >>296 そういう時は time コマンドを使って CPU 時間計測するというのも手だぞ。
317 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/11(金) 01:31:31.62 .net] ROMが4MBの余ったbuffalo製ルータにopenwrt1505入れてみたわ root@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 こりゃムリゲーだわ
318 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/11(金) 13:13:34.04 .net] >>310 おつかれちゃん。 というわけで、4MB ROMで、httpsの話題は糸冬了とさせていただきます。w
319 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/12(土) 02:38:13.55 .net] >>309 ありがとうございます。 15000個のディレクトリと120000個のファイルが入ったディレクトリで 何度かやってみましたが特に違いはありませんでした。
320 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/12(土) 12:37:42.64 .net] >>310-311 ちょっと待った、216KBあればスクリプト何行書けるよ? 前スレのRSA暗号のスクリプトの10倍程度に膨れたとしても余裕で入らないか?
321 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/12(土) 14:30:14.68 .net] >>313 エラーメッセージ読めないなら黙ってなよ
322 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/12(土) 14:35:22.38 .net] openssl相当をシェルスクリプトで書くっていう 意味だと読み取れないなら黙ってろよ
323 名前:名無しさん@お腹いっぱい。 [2015/12/12(土) 16:50:31.02 .net] vagrantで仮想サーバー環境を作っていて provisioning.shというファイルを作りvagrantを立ち上げたときの初期動作を指定しているのですが sudo yum install postfix -y としたあと sudo alternatives --config mta とすると番号を聞かれるのですが、1番のpostfixを選びたい場合どう書けばいいのですか? sudo yum install -yと書くと途中のyes/noをyにしてくれる、というようなことがしたいのですが
324 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/12(土) 20:01:02.92 .net] >>315 ぷぷぷぷ、RSAの他に最低でも 楕円曲線暗号、メッセージダイジェスト、asn1デコーダ、エンコーダ、pemエンコーダ、デコーダー 作ってから言ってね。
325 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/12(土) 20:44:59.01 .net] 楕円曲線暗号、メッセージダイジェスト、asn1デコーダ、エンコーダ、pemエンコーダ、デコーダーが シェルスクリプトだけで作れない証明は?
326 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/12(土) 21:06:08.70 .net] >>318 作って公開したら全員黙るよ
327 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/13(日) 01:42:09.87 .net] 後、共通鍵暗号も要るね ワクワク
328 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/13(日) 02:03:11.75 .net] なんかガキが出てきて凄そうなキーワード上げてるって感じにしか見えん
329 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/13(日) 02:21:22.86 .net] x509って知ってる? 楕円曲線暗号は必須じゃないけど他は全部必要だよ。
330 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/13(日) 03:26:03.62 .net] っていうか、作り方わかってるなら組めるだろ 自分で作れないものを挙げろよ
331 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/13(日) 07:04:17.98 .net] >>316 man alternatives man update-alternatives か何かで調べると --config 以外の非対話的オプションが有るが それは使えない?
332 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/13(日) 07:30:11.14 .net] >>323 キミが全部作って>>266 相当を実証して見せれば、みんな黙るよ
333 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/13(日) 08:06:26.59 .net] 他の解決方法でなく シェルスクリプトで openssl を実現しようと云う発想をする時点で、 しかも条件を提示したんだから解決方法を出せとか (別の意味で)黙るよね
334 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/13(日) 09:08:35.94 .net] 実現不能な提案は妄想って言うんだよ で、お前は実装できるの?
335 名前:名無しさん@お腹いっぱい。 mailto:age [2015/12/13(日) 11:05:38.72 .net] できるよ。無意味だからしないけど。 黙らなくていいよ。グズグズ言い続けて。
336 名前:名無しさん@お腹いっぱい。 [2015/12/13(日) 11:19:13.11 .net] 世界初だから全然無意味じゃない。
337 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/13(日) 13:45:47.64 .net] bashでOSを判別しようと思ってて、シェル変数OSTYPEで判別するのがいいのかなと 思ってるんですが、もっとよい方法ありますか? あとHP-UX 11iのbashでシェル変数OSTYPEは何になっているか、わかる方はいますか?
338 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/13(日) 13:57:10.41 .net] uname
339 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/18(金) 20:07:27.08 .net] telnet で季節ものを。 telnet ネタコードにネタを重ねています GNU sleep を使っています ワンライナー i=-1; while [ $(( i += 1 )) -le 9 ]; do { sleep 1; printf 'open vt100.net 80\n';\ sleep 3; printf 'GET /animation/xmas'"$i"'.txt HTTP/1.0\n\n'; sleep 3; } | telnet -8\ | while IFS= read -r line; do echo "$line"; sleep 0.08; done; printf \ 'Watch More? ( Yes / No ): '; read ans; case "$ans" in n|N|no|NO) i=99;; esac; done 視線が...さ、寒い 良いお年を そういえばこんなのも telnet nyancat.dakko.us
340 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/18(金) 20:08:17.92 .net] スクリプト #!/bin/sh i=-1 while [ $(( i += 1 )) -le 9 ] do { sleep 1 printf 'open vt100.net 80\n' sleep 3 printf 'GET /animation/xmas'"$i"'.txt HTTP/1.0\n\n' sleep 3 } | telnet -8 | while IFS= read -r line do echo "$line" sleep 0.08 done printf 'Watch More? ( Yes / No ): ' read ans case "$ans" in n|N|no|NO) i=99;; esac done
341 名前:名無しさん@お腹いっぱい。 [2015/12/19(土) 01:54:54.83 .net] 328が来年のusenixでopenssl相当のシェルスクリプトの実装を発表する
342 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/20(日) 02:31:00.77 .net] それは宣言ですか?絶対当たらなそうな予言ですか? とりあえずopenssl相当の処理なんて必要かな? 課題的には鯖から落とせればその相手が本物かどうかなんてどうでもいいんじゃない? と言っても鍵は送る方が指定するみたいから肝心な暗号処理で手抜きは効かなそうだな。 処理自体は計算式で表現できたりする程度のものだけど、数がバカでかいからそのまま丸投げだと無理かも?
343 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/20(日) 16:46:55.74 .net] >>300 です。 やっと、コンソールから2chにかきこできるようになりました。 ま、Perl使ってですが。。。 改行ちゃんと入るかな?
344 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/20(日) 18:14:25.11 .net] 前スレで質問して、 「UNIXでもメモリクリーニングはできる」と回答をもらった者です。 そこで早速perlを使って、perl -e 'while (1) { fork; }' を実行してみました。 で、メモリクリーニングはいつ終るのでしょうか? 念のため、PCケースを開けてみましたが、 メモリ表面の汚れは取れていませんでした。 やはりUNIXはメモリクリーニングに対応していないのでしょうか?
345 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/20(日) 19:12:40.94 .net] perl -e "fork while fork" &
346 名前:名無しさん@お腹いっぱい。 [2015/12/20(日) 21:35:35.99 .net] >>336 cpanのどれ利用した? それとも使ってない
347 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/20(日) 22:33:07.03 .net] quine in computing, a program producing its complete source code as its only output without simply opening the source file of the program and printing the contents (such actions are considered cheating). b=\' c=\\ a='echo -n b=$c$b c=$c$c a=$b$a$b\;; echo $a';echo -n b=$c$b c=$c$c a=$b$a$b\;; echo $a
348 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/21(月) 16:40:57.79 .net] >>337 表面はきれいに見えても、接続口が汚れてることはよくある。 接続部の汚れはなかなか落ちないから4ヶ月ぐらい待ってみて。
349 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/21(月) 18:49:28.81 .net] quine で fork bomb b=\' c=\\ a='yes $( echo -n b=$c$b c=$c$c a=$b$a$b\;; echo $a ) | sh &';yes $( echo -n b=$c$b c=$c$c a=$b$a$b\;; echo $a ) | sh & Quine Program c2.com/cgi/wiki?QuineProgram
350 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/21(月) 23:00:15.84 .net] 勉強でシンプルなものを作成しました #!/bin/bash while : do usr=`id | cut -d
351 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/21(月) 23:01:19.62 .net] 勉強でシンプルなものを作成しました #!/bin/bash while : do usr=`id | cut -d" " -f 1 | sed -e "s/^.*(\(.*\)).*$/\1/g"` echo -n -e "\033[s" D=$((`tput cols` - 8)) tput cup 1 $D COLOR=`tput setaf 4; tput smso` NORMAL=`tput sgr0` echo -n $COLOR$usr$NORMAL echo -n -e "\033[u" sleep 1 done 右上にユーザーを表示する単純なものです。 ログインユーザーでログインして実行したあとに、sudoでrootになっても右上にはログインユーザーが表示されたままとなります。 これは実行時のユーザーだからだと思うのですが、sudoでrootになった時にはrootに表示を変更する方法はありますでしょうか?
352 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/21(月) 23:56:53.33 .net] id -un - or - whoami
353 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/22(火) 00:13:25.17 .net] 現在の tty で sudo を使っている場合、その user name を表示したい とエスパー解釈した上で usr=`id | cut -d" " -f 1 | sed -e "s/^.*(\(.*\)).*$/\1/g"` の下にでもこれを挿入 if str=$( ps T -o user,comm | grep [s]udo ) then usr=$( echo "$str" | cut -d ' ' -f 1 ) fi
354 名前:344 mailto:sage [2015/12/22(火) 00:15:04.92 .net] >>345 回答ありがとうございます。 該当部分をid -unやwhoamiに変更しても状況に変化は見られませんでした。 何か間違った書き方をしてしまっているのでしょうか。
355 名前:344 mailto:sage [2015/12/22(火) 00:22:29.80 .net] >>346 回答いただきありがとうございます。 こちらのほうで実現できました。 psの方から取得するということでしょうか。 whileループの中でidで取得していたので更新されると思っていたのですが そうでもないようですね。 なぜかは理由はわかりませんが…。 回答いただきありがとうございました。
356 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/22(火) 00:45:28.49 .net] そのスクリプトをバックグラウンドで起動して ps Tf すると分かるかも 10995 pts/0 Ss 0:00 bash 21436 pts/0 S 0:00 \_ /bin/bash ./printUser.sh 8101 pts/0 S 0:00 | \_ sleep 1 8065 pts/0 S 0:00 \_ sudo sleep 10 8066 pts/0 S 0:00 | \_ sleep 10 8102 pts/0 R+ 0:00 \_ ps Tf 対話シェル bash の下でスクリプトが別プロセスで起動されています sudo sleep 10 を起動していますが、これも別プロセスです
357 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/22(火) 08:00:39.33 .net] PROMPT_COMMAND参照する端末(gnome-terminalやlxterminalなど)だったら それを使う手もある 以下の内容を適当なファイル(たとえば/etc/bash.display_user)に書いて D=$((`tput cols` - 8)) POS="`tput cup 1 $D`" COLOR="`tput setaf 4; tput smso`" NORMAL="`tput sgr0`" PROMPT_COMMAND='echo -ne "\033[s$POS${COLOR}${USER}${NORMAL}\033[u"' /etc/bash.bashrcか自分の.bashrc、rootの.bashrcで . /etc/bash.display_user してやればいい
358 名前:348 [2015/12/23(水) 08:30:02.70 .net] ID変わってますが348です。 その後の回答を、試してみていろいろとわかりました。 Linuxなどにおける動作で幾つか思違いしているところもあり勉強になりました。 ありがとうございました。
359 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/23(水) 23:18:50.99 .net] IDが変わったようには見えないが
360 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/23(水) 23:40:21.98 .net] ていうかIDが見えないが
361 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/24(木) 04:08:04.27 .net] 2chMateなら見えるよ
362 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/24(木) 12:24:50.59 .net] 本質的でないところでばかり実力を揮発するクラスタの皆さん! コンニチワ
363 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/24(木) 18:48:12.28 .net] >>353 ワロタw
364 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/24(木) 18:59:35.38 .net] スレ違いすんません。 >>339 >>336 です。 LWP::UserAgent; use HTTP::Request::Common qw(POST); use HTTP::Cookies; ggrば出ます。 スレURIの最後の数字列、タイトルから検索して常に最新の数字列を内で取得するようにして、現状、 echo "ほげほげ" | 2ch_put.pl $SURE で、投稿できるようにしてみた。嵐はしてないよ。
365 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/24(木) 19:23:37.34 .net] >if str=$( ps T -o user,comm | grep [s]udo ) 常に0のような気がするが、そうじゃないんだな。 str=aaa や str="" は0だけど、失敗すると1か。 勉強になりますた
366 名前:名無しさん@お腹いっぱい。 [2015/12/25(金) 00:19:36.63 .net] >>357 thanks
367 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/27(日) 12:03:43.83 .net] =>>290 なんですけど>>292 の仕組みが理解できてないので誰か解説してくださいませんか? いつファイルがうまくreadされるタイミングとか それから関係ないんですけどsedの-iってPOSIX非準拠ですか?
368 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/27(日) 12:23:52.45 .net] -iは引数のあるなしで動かなかったりするな
369 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/27(日) 15:36:01.26 .net] >>360 いつって言ってもgrepがreadした時に読んでるのだが…。 たぶん分かってないのが、unixではファイルをオープンした状態でファイルを削除できるってこと その場合ディレクトリエントリは消えるがファイル自体は残っているので ファイルのread/writeは変わらず出来る
370 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/27(日) 19:29:04.42 .net] >>360 外のシェルがopenする 中のシェルでrmがunlinkする 中のシェルがopenしてfileができる grepがreadしてwriteする grepがexitしてどっちもcloseする
371 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/27(日) 19:29:18.22 .net] >>362 しかしエントリから消えたハードディスクのブロックは再利用可能な状態なわけですよね? もしそうなら二回目にオープンしたとき領域が重なってしまうことはないのですか?
372 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/27(日) 19:37:36.75 .net] >>364 closeして誰も参照しなくなるまではi-nodeも含めて再利用されないよ
373 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/12/27(日) 19:56:03.56 .net] >>365 そうなのですか!初めて知りました ありがとうございます!すっきりしましたよ!
374 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/01(金) 11:20:57.19 .net] Happy New Year! wget -O - 'artscene.textfiles.com/vt100/new_year.vt '| while IFS= read -r line; do echo "$line"; sleep 0.08; done wget -O - 'mirror.bagelwood.com/textfiles/art/newyears.art '| while IFS= read -r line; do echo "$line"; sleep 0.08; done
375 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/01(金) 22:44:41.53 .net] a happy new yeah. >>367 素晴らしい!
376 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/02(土) 22:52:05.39 .net] 有難う!ファイルを書いた人は素晴らしいよね
377 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/14(木) 11:46:10.89 .net] 質問です テキストファイルだけのデータベースを作ろうと思ってます どんなシェルスクリプトを書けばいいと思いますか 皆さんのお知恵をお貸しください あとシス管系女子に登場するみんとちゃんのスリーサイズが分かりません 知っている人がいたら教えて下さい よろしくお願いいたします
378 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/14(木) 12:18:20.24 .net] テキストファイルだけのデータベースってどんなん?
379 名前:名無しさん@お腹いっぱい。 [2016/01/14(木) 12:37:09.51 .net] 女だらけの水泳大会みたいなものだろ
380 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/14(木) 13:49:41.31 .net] Berkeley DB使え、とかそういう話?
381 名前:名無しさん@お腹いっぱい。 [2016/01/14(木) 19:07:54.47 .net] 人のボケつぶした上にダダスベリって最悪じゃね?
382 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/14(木) 19:32:14.79 .net] 職場の開発環境がLinuxでcshなのですが cshでいいリファレンスはありませんか? ネットが使えないのでWebページは無理です。
383 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/14(木) 20:23:34.08 .net] 定年間近の老人から口伝で受け継ぎましょう
384 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/14(木) 22:27:43.69 .net] changelogで日記書く人もいるしな
385 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/14(木) 22:57:32.14 .net] 昔はC Shellフィールドガイドとかいう本が定番だったような もう30年近く前のことだけど… それにしても開発環境がcshでネットが使えないって、ある意味すごいと思うw
386 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/14(木) 23:03:15.63 .net] >>375 ネットがダメなら本しかないじゃないか いま流通してるのって www.amazon.co.jp/dp/4893620290 くらいかな
387 名前:名無しさん@お腹いっぱい。 [2016/01/14(木) 23:24:27.93 .net] いまどきc shell使っているところってC言語でも使ってるの?
388 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/14(木) 23:24:38.54 .net] ネットが使えないのにアマゾン?
389 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/15(金) 00:15:28.22 .net] みんとちゃんは天使
390 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/15(金) 11:42:41.05 .net] >>374 もともとのボケからすべってるじゃん
391 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/15(金) 14:57:47.22 .net] ここにいる様な人たちとだけは仕事したくないな〜
392 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/15(金) 15:21:01.14 .net] >>375 マスタリングcshは目の前に転がってるが、他にも合った気がするが みつからない。
393 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/15(金) 15:29:47.22 .net] みんとが、rm -rf で全消ししても許してあげるし、データリカバリの講義を、みっちりやったげる ここの住人がやったら半殺し
394 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/15(金) 15:51:51.83 .net] データーリカバリーとデリヘルって似てるね
395 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/15(金) 16:08:50.97 .net] ディスカバリーチャンネルとデタリカバリーチャンネルも似てるね。
396 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/15(金) 21:52:13.77 .net] 20年少し前だと、もう csh でスクリプトを書かない事を進められた SunOS でログインシェルは、csh がデフォで tcsh に切り替え
397 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/15(金) 21:54:24.42 .net] ☓ 進められた
398 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/15(金) 22:29:29.27 .net] cshがスクリプトに向かないのは有名だね。 でも短いスクリプトなら、配列が使えたりとかshより便利なケースがないでもない >>375 manは入ってないの?
399 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/17(日) 00:38:52.85 .net] shって配列使えないんだ? bashは使えるよね、二次元配列も
400 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/17(日) 13:36:42.66 .net] wiki.bash-hackers.org/scripting/nonportable こういったポータビリティに関することを一発でチェックするための自動テストスイートってないものかね。 それがあればシェルの比較表もすぐに作れると思うんだが。
401 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/17(日) 15:16:57.76 .net] >>393 >>6 というか checkbashisms manpages.ubuntu.com/manpages/wily/en/man1/checkbashisms.1.html
402 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/21(木) 07:44:44.20 .net] 外部コマンドの違いも有るよね GNU のコマンドは機能拡張しまくっていて、UNIX 哲学が云々 grep -o -p とかダメだろうな(と思って調べると、OpenBSD は -o を持っているのか) www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/egrep.1?query=grep
403 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/21(木) 09:51:46.27 .net] sed -iとかな
404 名前:名無しさん@お腹いっぱい。 mailto:sega [2016/01/21(木) 21:38:36.72 .net] オプションをある程度統一してほしいよね -hでヘルプ、-vでバージョン見るくらいは統一してほしい
405 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/22(金) 09:43:42.93 .net] >>397 ほんとになw
406 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/22(金) 1
] [ここ壊れてます]
407 名前:0:23:07.08 .net mailto: grep -v してるスクリプトが動かなくなったりしたら嫌だな [] [ここ壊れてます]
408 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/22(金) 21:11:00.15 .net] 痛みが大きすぎて統一失敗は無理か 今後も長く使われて行く事を考えると、ある程度統一してほしいなあ 特定の環境変数が定義されている時に限り 統一されたオプションにするとか
409 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/23(土) 00:27:07.84 .net] ロングオプションを使い給え。
410 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/23(土) 16:57:11.77 .net] ロングオプションって、ロング過ぎてなんだかなあ でも今度から意識してみよっと ちょっと暇つぶし list of coreutils (Linux, depends dpkg) dpkg -L coreutils | sed -ne '\@bin/@s@^.*bin/@@p' | xargs man -f whatis $( which who )
411 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/23(土) 19:06:44.06 .net] >>397 www.gnu.org/software/coreutils/manual/html_node/Common-options.html ‘--help’ ヘルプ ‘--version’ バージョン ‘--’ オプションリスト区切り
412 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/23(土) 19:21:27.03 .net] >>403 そういうことじゃないだろ…
413 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/24(日) 00:23:36.03 .net] >>401 でもう既出だし GNU系コマンド以外には通用しないケースある
414 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/28(木) 05:58:34.66 .net] 毎回ランダムに、コマンドを紹介 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 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)
415 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/28(木) 06:13:04.21 .net] shufって何?
416 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/28(木) 08:36:56.70 .net] GNU coreutilsに入ってる、行単位で中身をランダムに入れ替えるコマンド。 BSD系ならsort -Rで代替できるかな。
417 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/28(木) 09:53:14.50 .net] 動いてるシェルスクリプトをkillしたいんだけど 以下のコマンドより冴えた方法ある? pgrep -f 'sh script.sh' | xargs kill これで不満なのはシェルスクリプトが実行されてなかった場合 USAGEが出ちゃうところくらい
418 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/28(木) 11:04:04.77 .net] pgrepがあるならpkillもあるでしょ
419 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/28(木) 11:35:34.21 .net] pkillだとshを殺してしまうことになって都合が悪いです〜
420 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/28(木) 11:50:19.16 .net] pkill -f 'sh script.sh'
421 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/28(木) 16:03:14.05 .net] ありがとう 帰ってから試してみる
422 名前:名無しさん@お腹いっぱい。 [2016/01/30(土) 08:10:48.00 .net] tputで表示させたいのですが改行されません #!/bin/sh while : do # Get Time time=
423 名前:名無しさん@お腹いっぱい。 [2016/01/30(土) 08:14:07.46 .net] すいませんダブルクォーテーションよりしたが表示されませんでした time=$(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で改行表示する方法があればアドバイスいただけると助かります。
424 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/30(土) 09:44:44.08 .net] tput についていちいち覚えていないので適当でスマンが 気になる点を上げておいた echo -n $COLOR$time$NORMAL だと、エスケープされていないので、$time に含まれる改行文字がスペースに置換される echo -e は bash だろうから、#!/bin/bash にする 新しく書くスクリプトでは `...` よりも $(...) を使うのが望ましい ループ中で、変わらない変数を定義しない (確か sgr0 がリセットかなんかで変わらなかったとして)
425 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/30(土) 09:50:10.42 .net] 訂正 > echo -e は bash だろうから、#!/bin/bash にする #!/bin/sh のままで printf を使う方が良いかな
426 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/30(土) 09:50:11.74 .net] 全く案が思いつかないので教えてください。 smb上のNASにあるファイルをSDカードにコピペしたいけど、コピーする順番がファイル名昇順でないと不具合が出るので、エクスプローラーではダメなんです。 cpコマンドにNASにあるファイルを指定する方法を教えてください。
427 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/30(土) 10:03:02.46 .net] ls でソートされなければ、 find sort awk cut xargs 等を組み合わせる
428 名前:名無しさん@お腹いっぱい。 [2016/01/31(日) 10:50:47.29 .net] 質問です。 topコマンドやuptimeコマンドで得られるload average ですが、特定の顧客向けにWebで情報ながしてるサーバーの それが、普通で10.00、ひどいときには30.00とかになったり します。 このload average、つまり平均負荷が無名数ですが、何を表して いると考えたらよいでしょうか? dBって事はないですよね。。。
429 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 11:10:19.25 .net] >>420 待ち行列の長さ
430 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 14:36:00.53 .net] >>420 d.hatena.ne.jp/keyword/%A5%ED%A1%BC%A5%C9%A5%A2%A5%D9%A5%EC%A1%BC%A5%B8
431 名前:名無しさん@お腹いっぱい。 [2016/01/31(日) 16:34:32.83 .net] >>421 >>422 ありがとうございます。 >ロードアベレージが1以下であれば正常といわれていたが、 >最近のマルチコアCPUにおいては読み方が変わってきている。 なるほど、、、わかったようなわからんような。。。どう変わってきてる か、知りたい。。。w ま、いずれにしても、高負荷状態が続いているとみるべきなんですね。
432 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 21:07:22.79 .net] >>423 もう少し読めよ d.hatena.ne.jp/naoya/20070518/1179492085
433 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 21:09:13.08 .net] procps-ng の uptime の説明が分かりやすい uptime(1) - Linux manual page man7.org/linux/man-pages/man1/uptime.1.html
434 名前:名無しさん@お腹いっぱい。 [2016/02/02(火) 07:53:41.39 .net] >>424 さんくすです。 2コアだから、負荷は半分にした値を考えておけばいいのかな。 >注目するのは、待ちタスク数を数え上げるのにすべてのキューを見て >合計する一方、その後出力するまでに CPU の数でその値を割ったりは >していない、という点です。...ロードアベレージは割り算をしていない
435 名前:名無しさん@お腹いっぱい。 [2016/02/02(火) 07:57:31.80 .net] >>425 頑張って読みます。どもです。
436 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/02(火) 09:57:29.33 .net] 待ち行列とかキューとかの意味がわからずサーバー管理やってるんならな OSのしくみをほんの少しでも勉強したほうがいいよ 特にタイムシェアリングとかプロセス管理のあたり
437 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/02(火) 11:43:42.95 .net] >>426 別に割る必要はないと思うけど どれくらい溜まってるかを知りたいならだけど
438 名前:名無しさん@お腹いっぱい。 [2016/02/02(火) 17:43:21.96 .net] UNIX上で、”コマンドを利用した”スクリプトを書き始めよう と思っています。 そこで、pythonかbashのどちらを選ぶかで迷っています。 今日pythonパイソンの有名どころの本をみたら外部コマ ンドの利用についての記述が少なくてがっかりしました。 素直に以下の本を読むべきなのでしょうか? それともpythonの勉強し
439 名前:ト、ネット上で外部コマンドの 利用を紹介したサイトも勉強すべきなのでしょうか? アドバイスお願いします http://www.amazon.co.jp/gp/product/4797321946/ref=ox_sc_act_title_1?ie=UTF8&psc=1&smid=AN1VRQENFRJN5 [] [ここ壊れてます]
440 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/02(火) 18:59:58.26 .net] >>430 マルチ hayabusa6.2ch.net/test/read.cgi/linux/1452251761/324
441 名前:名無しさん@お腹いっぱい。 [2016/02/02(火) 20:16:40.85 .net] 言語はあくまで道具 何をしたいかによる
442 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/02(火) 21:43:18.36 .net] >>432 レスありがとうございました。マルチってそんなにいけないことなん ですね。失礼しました。 5年以上ぶりぐらいに2chに戻ってたんで驚いてます。 板にもよるのでしょうが。 こちらだけにすればよかったです。 432さんのおしゃる通りだと思います。自分にとってはコマンド 利用してみたいので、まずはbashにしようかなと思ってます。
443 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/02(火) 22:48:53.08 .net] マルチ禁止は2chだけのルールではなく20年以上前のRFCにさえ書かれている基本中の基本
444 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/02(火) 23:02:32.01 .net] おまえら叩きすぎw 329 名前: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] 本人はそう思ってないんだろう 死ね
445 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/03(水) 00:07:58.02 .net] たたかれても懲りずに勉強してね スクリプトを色々と探してきて、長さ順にリストアップする { 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
446 名前:名無しさん@お腹いっぱい。 [2016/02/03(水) 06:35:39.85 .net] だいたい、bashとpythonどっちかっていう問題か?ww どっちも並行してやるべき。
447 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 06:50:05.93 .net] 『20年動く』本読んだけどひたすら方言に配慮する話書いてあった もうpythonでいいや
448 名前:名無しさん@お腹いっぱい。 [2016/02/04(木) 08:44:03.15 .net] >>438 pythonは後付けのなので、そのうちなくなるかもしれません。 Windowsにはそういうものがありました。
449 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 08:55:41.67 .net] なくならないにしても、python2のスクリプトのかなりがpython3で動かなくなるよ
450 名前:名無しさん@お腹いっぱい。 [2016/02/04(木) 09:06:11.16 .net] pythonはなくなってもUNIXは困らない。
451 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/05(金) 01:28:36.41 .net] >>441 vimの拡張にpythonが採用されてることを知らないのか…
452 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/05(金) 02:35:34.81 .net] POSIXにvimもpythonも入って無いしな
453 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/05(金) 02:49:11.38 .net] UNIX開発にふつーにVIM使われてるぞ
454 名前:名無しさん@お腹いっぱい。 [2016/02/05(金) 04:13:16.68 .net] 特定のアプリケーションが使っているから、OSに必要という理屈が分からない。
455 名前:名無しさん@お腹いっぱい。 [2016/02/06(土) 04:39:26.36 .net] >>438 方言覚えるのとPython覚えるの、労力そんなに違うか?
456 名前:名無しさん@お腹いっぱい。 [2016/02/06(土) 06:08:30.34 .net] シェルスクリプトはOSの一部だからな。 pythonとは格が違う。
457 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 09:18:43.54 .net] #!/usr/bin/shと書いてもbashが走るこんな世の中じゃ
458 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 17:24:54.45 .net] #!/usr/bin/shと書いてシェルスクリプトを名乗るのか。
459 名前:名無しさん@お腹いっぱい。 [2016/02/06(土) 18:52:59.16 .net] >>448 bashがbshのマネをする変なスクリプトたがら推奨しない。
460 名前:名無しさん@お腹いっぱい。 [2016/02/06(土) 18:54:27.39 .net] >>449 スクリプトの種類を名乗る
461 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 19:55:26.03 .net] 本物と同じ名前の機能の違うコマンドを検索で優先されるディレクトリに置いちゃってドヤ顔する バッドノウハウ使いの老害は早く死んで欲しい
462 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 20:35:47.85 .net] 大丈夫、そんな人はいない
463 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 21:23:44.47 .net] /bin じゃなくて /usr/bin なのか?という話だろ
464 名前:名無しさん@お腹いっぱい。 [2016/02/07(日) 04:25:51.93 .net] >>454 /usr/binと/binは基本的に一緒だが、環境によっては違うんじゃないの?
465 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 12:45:47.23 .net] /usrを別パーティションにしてた頃の名残だよね
466 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 18:02:30.90 .net] /sbinまでは認めてやっても良い
467 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 19:26:38.34 .net] Linuxディストリの一部やSolarisではすべて/usrに移動してる(usr mergeまたはusr moveと呼ぶ) /binと/sbinはシンボリックリンクで残ってる
468 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 08:20:49.74 .net] いっそ、bashをオブジェクト指向に進化させれば、 pythonなぞいらなくなる
469 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 10:14:57.97 .net] 全角だとバカにしか見えないのは何故だ?
470 名前:名無しさん@お腹いっぱい。 [2016/02/08(月) 10:31:10.92 .net] >>460 おっさんの可能性もある。
471 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 10:49:58.88 .net] 新聞社の方でしょう
472 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 12:25:26.78 .net] 綺麗な見た目に気を遣って作られたプロポーショナルフォントだと全く気にならない 幅が広けりゃいいんでしょ的なやっつけフォントや固定幅フォントを使って表示してると バランスが悪いのでそうなる
473 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 12:34:34.64 .net] >>460 裸の王様だからかな
474 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 13:02:09.16 .net] shebang 行は、種類を名乗るといえば名乗っているけれど、 実際には、実行するコマンドラインを指定するもの 以下、補足 例えばこのスクリプトで試すと $ 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 ...
475 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 13:23:29.92 .net] >>465 shebangが種類を名乗るって何のこと? そのスクリプトを処理するインタプリタを(引数込みで)指定する 以外の説明みたことないけど
476 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 15:38:21.12 .net] >>466 >>449 !/usr/bin/shと書いてシェルスクリプトを名乗るのか。 >>451 スクリプトの種類を名乗る >>465 shebang 行は、種類を名乗るといえば名乗っているけれど、
477 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 17:11:40.36 .net] オプションも渡せるよ。 #!/usr/bin/bash -x とかね。
478 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 20:55:16.08 .net] >>468 それなら俺もお前も大体の奴が知ってる。
479 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 23:06:27.57 .net] 一個だけしか渡せないのは意外と知られていない
480 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 00:18:04.86 .net] 変数に含まれる記号で質問です。 curlで、サーバに置いてあるファイルを削除したいのですが、 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 と返答がありました。 「"」そのものや「'」を変数で伝えるのは、一般的にどのように記述すればよいでしょうか。 記号で検索しても、なかなか情報が出ず、ヒントをお願いできればと思います。
481 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 02:34:23.06 .net] >>471 curl "-Q 'DELE a.txt'" host.sample.com ってことじゃん。 コマンドオブションが引数扱いってわけですね。
482 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 06:18:16.59 .net] string="-Q 'DELE a.txt'" eval curl ${string} host.sample.com あるいは set x -Q 'DELE a.txt' shift curl "$@" host.sample.com
483 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 06:31:19.45 .net] 書いている内に、別の解答が...しかも set x; shift の方が良い とりあえず貼っておく 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[@]}"
484 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 12:13:30.71 .net] とりあえず set -- も POSIX なんだけど autoconf では 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...'
485 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 17:36:27.79 .net] >>471 です。 >>472-475 たくさんの方法を、ありがとうございます! のちほど実験してみます。
486 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 19:11:23.15 .net] スクリプトの外部からやって来た文字列をエバると危険
487 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 20:55:40.83 .net] 個人的には、host.sample.comにコマンドを渡す curl -Q "$*" host.sample.com を関数かスクリプトにするかなぁ 単独でも使えそうだし
488 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 23:45:01.02 .net] ごちゃごちゃ書いてしまったので、まとめてみる 結局の所 変数からクォートを考慮して単語分割するには、eval を使う 配列(もどき)に入れるには set か val=(...) もしくは改行区切り等 eval 無しだと、sed perl ruby 辺りで自力で単語分割 簡単なものなら xargs も使えるか
489 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/11(木) 07:29:09.80 .net] 午前1時に cu -l /dev/ugen0.2 > 160211.log のコマンドを開始し、 23時間後の午前0時に停止する、というシェルスクリプトを作りたいと思っています。 ログファイルの名前は午前1時の時点の日付が入ります。 ここで質問なのですが、 指定した時刻でコマンド(cu)の起動、停止をするにはどうすれば良いのでしょうか? OS:FreeBSD10.2-RELEASE シェル:sh です。
490 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/11(木) 09:25:45.48 .net] >>480 cronやat
491 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/11(木) 13:08:07.53 .net] >>481 ありがとうございます!! これで幸せになれます!!
492 名前:480 mailto:sage [2016/02/12(金) 08:51:56.08 .net] シェルスクリプトでcuのプロセスをkillしようとしたがうまくいかなんだ・・・。 結局、 ・起動はcron ・cuからminicomに変更 ・minicomのソフト改造 ・ログファイルを設定なしで保存するように改造 ・時間を見て終了するように改造 ・タイムスタンプを設定なしでつけるように改造 で落ち着きそう。 うーんせっかくの有休だが、午前中はFreeBSDになりそうだ。
493 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 09:40:24.87 .net] 意味がわかんないけど普通にコマンドラインからkillしてもkillできないの?
494 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 09:42:07.41 .net] cuはSIGHUPで殺すんじゃ無かったかな うろ覚えだけど
495 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 10:21:20.12 .net] cuを起動/停止するスクリプトを書いて それを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にあるデーモンの起動スクリプトみたいな感じ)
496 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 11:56:41.13 .net] いまいちよくわからん スクリプトでプロセスIDが調べられないとかじゃないよね? あとユーザが違っててrootのプロセスkillしようとしてるとか?
497 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 13:36:32.98 .net] cuは送信プロセスと受信プロセスがいるから完全に殺せてないのでは
498 名前:480 mailto:sage [2016/02/12(金) 20:39:39.88 .net] 先ほど完了しました。 minicomの改造と、ログファイルの処理ソフト作るのに丸一日かかった。 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使ったことでタイムスタンプ入れれたので、良しとします。
499 名前:480 mailto:sage [2016/02/12(金) 20:42:48.13 .net] ちなみに何を作っていたかというと、温度計測システムです。 Xbeeってやつに温度センサーをつないで、無線で親機のXbeeに飛ばして、 親機からPCにシリアルで温度センサーの値を送信するシステムです。 で、ログファイルをsambaにおいておいて、別のPCから見る感じです。 テスト用に温度センサーは1個ですが、部屋中に設置する予定です。
500 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 00:30:17.31 .net] viを使っている人はシェルのキーバインドもvi風?
501 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 02:17:17.74 .net] >>489 pkillでできなかったの?
502 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 02:27:10.99 .net] ちなみに自分は絶対止めたいときは複数回killする やり方はループするなりsleepで間隔あけたりまちまちだけど 以下cuのマニュアルだけど仕様を理解するって大事だね > リ モートシステムとの間でコネクションが設定された場合、 cu > は 2 プロセスを fork します。1 プロセスは、ポートからの デ > ー タ読みだしと端末へのデータ書き込みを行ない、もう 1 プロ > セスは、端末からのデータ読み出しとポートへのデータ書き込み > を受け持ちます。
503 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 21:20:59.35 .net] bashで調べてもわからないので質問させてください。 次のような記述のとき、 この%はどのように解釈したらいいのでしょうか? OLDPATH=(../help/me) NEWPATH = $(OLDPATH:../%=./%_fuga) 文字列置換に使う場合と違うようですし、 調べても文字列置換以外に定義がでてきませんでした。 よろしくお願いします。
504 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 22:07:33.70 .net] >>494 [user@f23 ~]$ OLDPATH=(../help/me) [user@f23 ~]$ NEWPATH = $(OLDPATH:../%=./%_fuga) bash: OLDPATH:../%=./%_fuga: そのようなファイルやディレクトリはありません bash: NEWPATH: コマンドが見つかりませんでした...
505 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 22:26:10.26 .net] linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html より ${parameter%word} ${parameter%%word} パターンに後方一致した部分を取り除く。 word が展開され、パス名展開の場合と同じようなパターンを作ります。 このパターンが parameter を展開した値の末尾の部分とマッチする場合、展開結果は parameter を展開した値から 最短一致パターン (``%'' の場合) または最長一致パターン (``%%'' の場合) を取り除いたものになります。 parameter が @ または * である場合、 パターンを削除する操作は全ての位置パラメータに順番に適用され、 展開結果はリストとして 得られます。 parameter が @ または * が添字になっている配列変数である場合、 パターンを削除する操作は配列の全て の要素に順番に適用され、 展開結果はリストとして得られます。 $()じゃなくて${}だんべな。 私は良くわかんない。後は詳しい人にまかせた。
506 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 22:38:34.46 .net] >>495 なんでOLDPATH=の閉じカッコを半角に、そこだけ改変しちゃったの?
507 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/14(日) 00:07:40.09 .net] >>494 どこでそういう記述を見つけたのかな
508 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/14(日) 04:49:47.49 .net] 仕事で改修やってるんだろ
509 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/14(日) 06:05:22.06 .net] どのように解釈したらいいも何も、NEWPATH の次にスペースが有る時点でおかしい 例示を見直して提示し直さない限り、どうにもならんな
510 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/14(日) 08:13:57.65 .net] なんの脈絡もない質問に答える義理はない 金払って仕事してもらえ
511 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/14(日) 09:11:58.95 .net] OLDPATH:../%=./%_fuga という相対パスで指定されたファイルを実行し、その結果の前に=をおいてNEWPATHというコマンドを実行する
512 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/14(日) 14:58:59.31 .net] >>494 Makefile 全体とは言わんがもっと前後貼れよ
513 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/15(月) 05:51:37.58 .net] >>494 >>503 ここを釣り堀にする奴がいるとは思わなかったwww そういえば Makefile を書いている時は似てるなあって思ったな
514 名前:503 mailto:sage [2016/02/17(水) 23:08:47.15 .net] >>494 は結局返事なしか。 釣りだったってことかな。 イコールの前後に空白いれたり入れなかったりだったし。 一応 make/Makefile での動作例。 $ cat Makefile OLDPATH = ( ../datadir1 ../datadir2 ) NEWPATH = $(OLDPATH:../%=../%_fuga) all: @echo "$(NEWPATH)" $ make ( ../datadir1_fuga ../datadir2_fuga ) %の使い方は quruli.ivory.ne.jp/document/make_3.79.1/make-jp_5.html の 6.3.1節を参照しました。
515 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/23(火) 08:45:41.83 .net] BASH4.2 $> echo $((1 == 2)) 0 #!!! 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
516 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/23(火) 10:11:09.22 .net] 不思議なことは何も起きていないな シェルスクリプトの真偽値の表現と後置演算子の意味くらい覚えておけ
517 名前:名無しさん@お腹いっぱい。 [2016/02/24(水) 08:11:13.70 .net] $a=0; echo $((a++)) 0 $ a=0; echo $((++a)) 1
518 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/24(水) 16:41:23.49 .net] なんら不思議でない
519 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/25(木) 07:06:49.38 .net] $ a=0; echo $(( ´∀`)) ( ´∀`): コマンドが見つかりません
520 名前:名無しさん@お腹いっぱい。 [2016/02/26(金) 20:53:20.57 .net] かわええ
521 名前:名無しさん@お腹いっぱい。 [2016/02/26(金) 22:13:00.20 .net] うまくクオーテーション回避したね
522 名前:名無しさん@お腹いっぱい。 [2016/02/26(金) 22:23:19.78 .net] $ a=0; echo $((a++++++a)) 2
523 名前:名無しさん@お腹いっぱい。 [2016/02/26(金) 22:30:46.28 .net] $ a=0; echo $((a+ +++++a)) 1 $ a=0; echo $((a+++++ +a)) 1 $ a=0; echo $((a+ ++++ +a)) 0
524 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/27(土) 19:01:27.83 .net] こういう解釈かな? $ bash -c 'a=0; echo $(( ( a++ ) + +( ++a ) ))' 2 シェルによって解釈が色々みたいだけど $ ksh -c 'a=0; echo $((a++++++a))' k
525 名前:sh: a++++++a: assignment requires lvalue $ dash -c 'a=0; echo $((a++++++a))' 0 [] [ここ壊れてます]
526 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/29(月) 18:15:35.93 .net] ここにいる人たちは誰かのシェルスクリプト見て 普通のプログラミング言語のようにループして処理してたら ぷっって笑っちゃう方?
527 名前:名無しさん@お腹いっぱい。 [2016/02/29(月) 18:57:25.92 .net] え? ループ処理しちゃ駄目なの?
528 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/29(月) 19:53:29.46 .net] >>516 が言う「ループ」とは変数のインクリメント((++i))とかのことかと。
529 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/29(月) 20:08:57.21 .net] >>516 コマンドの内部でループしているのと、スクリプトのループとは速度が違うし また記述も単純になるから、自然とそうなるだけだし スクリプトで人を笑ったりとかはしないかな
530 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/29(月) 20:36:41.53 .net] どんなループだよ
531 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/01(火) 12:43:43.79 .net] それより i=`expr $i + 1`が笑われないか心配。普通だよね(´・ω・`)
532 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/01(火) 12:55:47.44 .net] [ "z$1" = "ztest" ] とかも笑われてるの?
533 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/01(火) 13:57:23.36 .net] 話の流れが読めなかった >>519 が笑われてる
534 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/01(火) 20:21:04.65 .net] >>522 じゃ、どう書くと笑われないと思うんだ? でも、最近はcaseで比較する事が多い。個人的に。
535 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/02(水) 00:02:25.01 .net] >>521 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.
536 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/25(金) 00:25:36.80 .net] bash上でwhich sourceってコマンド打った時にsourceコマンドが見つからないって怒られるのが謎だったんですが、sourceコマンドはbashの組み込み関数だと聞きました。 ただdeclare -Fでもsourceって関数は定義されてないようなんですがどこで定義されているかわかりますか?
537 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/25(金) 01:32:44.95 .net] >>526 man source
538 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/25(金) 01:59:04.54 .net] >>526 type source
539 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/25(金) 02:11:33.46 .net] $ type source source 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 関数
540 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/25(金) 05:01:14.68 .net] >>527-529 ありがとうございます! ばっちりです!
541 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/02(土) 18:56:42.48 .net] >>521 ただ、そういう硬い書き方してる人のスクリプトは、bashの脆弱性が見つかった時でも /bin/bash を /bin/ksh とかで代用できるからなんともいえん。 少なくとも i++ よりはポータブルだし
542 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/08(金) 08:53:02.48 .net] >>521 ほんの数年前までそれ以外の書き方をすると怒り出す、 純正シェルジジイが粘着してたんだが、リアル墓場行ったかな。喜ばしい事だ
543 名前:名無しさん@お腹いっぱい。 [2016/04/09(土) 20:08:53.43 .net] 我がスレ差分メール配送システムが2ヶ月くらい止まってたかのように 見えたのは、2ch鯖が変わっていたせいであったかw 今頃きづいたという。。。
544 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/12(火) 18:45:07.55 .net] 初心者です。 こんどbashをやることになったのですが、シェルスクリプトの書いて覚える系のいい書籍はないでしょうか? 馬鹿なので読んだだけでは理解できないので手を動かすタイプのを教えてください。
545 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/12(火) 19:26:46.24 .net] >>534 シェルプログラミング実用テクニック
546 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/12(火) 20:11:06.76 .net] よろしくお
547 名前:ヒがいします。シェル初心者です。わかんないので、 いろんなサイトに書き込みしても いろいろ うるさく 叱られます。これがユニックスの流儀なんでしょうか? とくに言われることは「スクリプトに直接関係ないこと」は書き込むな、と言うことです。 「何でも教えてくれや」「ケチケチすんなよ」「初心者には親切にせろ」 ひとことで言うと これがおれの主張です。シンプルです。 なんで?現実生活でヘイコラしてるのに、ネット上まで、ネコかぶったり しないといけないのか?とんと理解できません。 何より、バッシュとかGシェルとか、詳しいのが、なんでエライのか? ここが根本的にわからん。 少し誇張した部分もありますが、素直な気持ちを書きました。 [] [ここ壊れてます]
548 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/12(火) 20:22:51.31 .net] >>535 ありがとうございます。明日立ち読みしてみます。 >>536 あなたより大きい会社にいると思います。30前にして年収800万です。 ずっとWindowsだったのでわからないんですよね。
549 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/12(火) 20:25:20.93 .net] >>536 得意分野などで教える立場になった時、同じこと思うだろうか。
550 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/12(火) 20:38:02.87 .net] 今の大きい会社って30前でもそんなモンなの? 小さい会社だと1000越えてるのにね。
551 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/12(火) 22:24:19.26 .net] >>536 おまえ Limux Mint 公式フォーラムでアラシ認定されたやつじゃね?
552 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/13(水) 01:49:11.16 .net] >>539 正社員なら800でもマシな方 なんせ上が詰まっててなかなか上がらないし でもフリーや少数精鋭のとこなら1000は余裕で行く
553 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/14(木) 09:18:08.49 .net] うちはもう1000万じゃなくなったよ
554 名前:名無しさん@お腹いっぱい。 [2016/04/14(木) 22:19:32.09 .net] >>534 サンプルコードがあるような本でも分からないなら、シェルスクリプトはやめた方がいい。
555 名前:名無しさん@お腹いっぱい。 [2016/04/14(木) 22:21:13.69 .net] >>534 「入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界」を読みなさい。
556 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/15(金) 08:51:58.72 .net] ネタだろうけど、あんまり古過ぎる本勧めてやるな。
557 名前:名無しさん@お腹いっぱい。 [2016/04/15(金) 11:45:17.59 .net] >>545 そもそもシェルスクリプト自体が変わっていないが?
558 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/15(金) 21:13:21.13 .net] だよね。 さすがに絶版だったらおいおいと思うが。
559 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/16(土) 00:27:13.14 .net] >>532 と言ってたら、bashの脆弱性が見つかったのは数年前だね
560 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/16(土) 05:01:00.01 .net] 明日は我が身だが、2つの変数が両方とも空だった確率が0%じゃなければ、事故が起きてしまうな。 この場合は、どう書けばよかったの? 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のカスタマーを抱えているが、この事故の発生により、これら全てのカスタマーのファイルが無くなってしまった。
561 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/16(土) 09:24:48.15 .net] だから/は変数の中に入れておけとあれだけ
562 名前:名無しさん@お腹いっぱい。 [2016/04/16(土) 10:06:55.21 .net] >>550 そういう問題ではない。
563 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/16(土) 10:35:23.38 .net] >>551 だったらどういう問題?
564 名前:名無しさん@お腹いっぱい。 [2016/04/16(土) 10:51:02.13 .net] >>552 なんでテストしてないの?
565 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/16(土) 11:15:01.02 .net] バグがあっても大丈夫な設計を心がけろという話なのに なんでテストしていないという話になる?頭大丈夫か?
566 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/16(土) 11:25:08.28 .net] あまりにアレで何か別のことを隠すためのうんたらかんたらを妄想してしまう記事だな
567 名前:名無しさん@お腹いっぱい。 [2016/04/16(土) 13:52:26.18 .net] >>554 設計があって、テストをしないのはありえません。
568 名前:名無しさん@お腹いっぱい。 [2016/04/16(土) 13:56:59.02 .net] >>554 だいたいそれは設計じゃないだろ。 ただのコーディングミスを防げために、コーディングミス用のロジックを書くのは阿呆すぎる。
569 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/16(土) 14:43:59.32 .net] >>557 フェイルセーフとフールプルーフの違いを学べよ
570 名前:名無しさん@お腹いっぱい。 [2016/04/16(土) 15:25:19.31 .net] >>558 いかにもインフラの人間がいいそうなことだが、キミは開発側ではありえない助言をしている。
571 名前:名無しさん@お腹いっぱい。 [2016/04/16(土) 15:27:25.43 .net] 検証もしないで、ぶっつけ本番でそういう構成になっているから大丈夫という考え方はインフラでもありえない。
572 名前:名無しさん@お腹いっぱい。 [2016/04/16(土) 15:28:05.09 .net] そもそも操作ミスではないじゃん。
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/16(土) 16:30:24.50 .net] バックアップは特定の権限でしか消せないとか、削除可能な範囲を絞るとか 万が一のためインフラ側で制限しないとダメなんだよ それでもダメなときはダメだし 設計・テストとかプログラムのみでの対応はコストだけが跳ね上がるし現実的ではない ジョブ管理システムやコンパイラのバグが絡んでくるともうお手上げになる
574 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/16(土) 18:08:55.67 .net] シェルスクリプトなのにコンパイラのバグ?
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/16(土) 19:49:59.88 .net] 例で示しただけだから別にインタプリタでもなんでもいいよ
576 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/17(日) 01:23:14.24 .net] バグに絡まれやすそうな奴だな
577 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/17(日) 07:15:51.53 .net] >>549 rm -rfはシェル関数で。直接使う事は禁則。 rmしないでmv。定期的に掃除
578 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/18(月) 20:09:07.34 .net] >>549 japanese.engadget.com/2016/04/15/rm-rf-qanda/
579 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/18(月) 20:24:48.32 .net] ひでーw __ タヒんでしまえよ
580 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/18(月) 22:44:34.25 .net] シェルショッカーとかいうおじさんおるよな
581 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/25(月) 19:04:26.09 .net] bashで、新しいscreenウィンドウを開いてそこで引数で指定したコマンドを実行する関数 を作りたいのですが、引数の展開をどうやればいいかで悩んでいます。 # 例: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個以上の引数に対応するにはどう書くのがいいでしょうか?
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/25(月) 21:45:04.21 .net] >>570 "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ね。
583 名前:570 mailto:sage [2016/04/26(火) 19:09:31.05 .net] 空白のエスケープはどうやればいいんでしょう?
584 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/26(火) 19:43:17.56 .net] >>572 シングルクォートと空白の例。 sc() { screen -t "$1" -X screen bash -c "cd $PWD; $*" } sc date +Date=\\\'%y\\\ %m/%d
585 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/27(水) 12:24:16.19 .net] ...なんだかなあ 与えたスクリプトの中で、展開すれば? sh -c 'some command; "$@"' 'dummy' "$@" sc() { screen -t "$1" -X screen bash -c 'cd $PWD; "$@"' 'dummy' "$@" }
586 名前:570 mailto:sage [2016/04/27(水) 19:13:45.99 .net] なるほど、dummy 以降が -c で与えたコマンドへの引数になることを利用するわけですね。 ちなみに screen -t "$1" -X screen bash は冗長で screen -t "$1" bash でいいみたいでした。
587 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/27(水) 21:07:51.80 .net] -c の次の次の引数からが $0 以降になるとは知らなかったなぁ。 勉強になったわ。 これは -c AAA BBB CCC DDD ... のとき、BBB 以降は実行されないけど BBB が $0 として、 CCC DDD ... が引数としてセットされた状態でプロセスが開始され、実際に実行される内容の AAA 内に展開されずに渡された "$@" があるので CCC DDD ... が実行されるってことかな。 ちなみに cd の部分は 'cd "'"$PWD"'"; "$@"' の方がいいかな。 ( パスに空白が入っていてもエラーにならないがダブルクォーテーションが入っていたらNGではあるが。 )
588 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/12(木) 21:13:45.79 .net] コマンド応答が返ってくるまでの表示に文字を回転させてりしてみたくなった。 例えば、「*」がくるくると回っていたり・・・
589 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/13(金) 00:30:46.45 .net] ええね
590 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/13(金) 19:21:12.15 .net] >>577 難しい…どなたかヒントを
591 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/13(金) 20:19:09.81 .net] >>579 なんだよ、すごい目算があって開発宣言したと期待してたのに まず、文字回すのは無理 /|\-を同じ位置で順番に繰り返す出す程度 あと、コマンド実行中は通常シェルはwait状態で止まってしまうので コマンドをバックグラウンドで起動してシェルを動かし続けるか 別プロセスを同時に起動してそいつに表示させる必要がある どっちもコマンドラインで明示しなきゃならん 普通に起動して同じことをさせるにはシェルの改造くらいしか思いつかん それともzshくらいになるとすごいモジュールがあったりするのだろうか
592 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/13(金) 20:43:34.11 .net] OpenGLでぐりぐり回そうぜ
593 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/13(金) 20:57:15.29 .net] bash 依存だけど、こんなんでどう sleep 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 されるとカーソルが見えないままになるけど
594 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/14(土) 20:15:01.86 .net] npm見れば解決しそう
595 名前:534 [2016/05/21(土) 22:04:30.88 .net] >>535 お陰さまで最低限現場の記述ルールに則ったものは普通に作れるようになりましたm(_ _)m
596 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/23(月) 00:15:19.48 .net] >>559 超遅レスだかインフラでも そんな事言わないあり得ない偏見すごいな >>558 が伝えたいニュアンスは分かるけど 端的に考え方を言い表したいがために 登場場面が根本的に違う2つの用語だけで 端的に伝えようとするセンスが酷い それにそもそも元の話と何かズレてるし 後輩育成とかは絶対に任せられないタイプ
597 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/23(月) 08:05:15.40 .net] ログファイルのローテート処理のお勧め教えれ 元ファイルをコピーしてヌルを上書きすると 一瞬ログの内容ロストするから
598 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/23(月) 08:55:28.11 .net] >>586 ログを出す側で制御 (SIGHUPとかで出力ログファイルを開きなおす) してくれないとその問題は防げない。 mkfifo で FIFO ファイル作ってログローテーション用後続スクリプトに一旦渡す方法やパイプで後続スクリプトに 渡してローテーションする方法も考えられるけど、FIFO のバッファがいっぱいになるとメインプロセス側が処理 待ち(write がブロック)したり、後続スクリプトの異常終了で SIGPIPE 食らってメインプロセスが死んだりする のでお勧めできないそうな。
599 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/23(月) 16:33:22.23 .net] syslogdを kill -STOP; ... ; kill -CONT じゃダメなん?
600 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/23(月) 17:04:28.65 .net] logrotateでええやろ
601 名前:587 mailto:sage [2016/05/23(月) 23:22:16.85 .net] >>588 syslogd がつかんでいるのはファイルハンドルであってファイルのパスじゃない。 なのでそれをやっても、リネームした古いファイルの方に書き続けてしまう。 例えば /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 のような開きなおす処理をしてくれないからこの実装にせざるを得ない。
602 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/24(火) 04:38:11.44 .net] >>590 kill -HUP に対応してないsyslogdだったら、という話だろ。 kill -STOP してからログファイルを別ファイルにcpして、元のログは > file でゼロにする。 それで -CONT すればいいという話。 >syslogd がつかんでいるのはファイルハンドルであってファイルのパスじゃない。 というのは当然知ってるだろ。
603 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/24(火) 08:44:45.64 .net] スレ違いになりつつあるが、便乗して質問。 STOP -> truncate -> CONT って安全? TCP/UDPで待ち受けしているプログラムで syn やメッセージ取りこぼしたりとかしない? fork する奴にも使える?
604 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/24(火) 09:37:37.23 .net] >>592 TCPなら再送含めてOSがうまくやる UDPだとバッファあふれたら消える もともと消えるの前提だから再送はアプリの自己責任 forkしたら止まるのは当たり前だが指定したプロセスだけ プロセスグループを指定したら該当するやつ全部 どの辺が疑問なのかむしろ知りたいわ
605 名前:592 mailto:sage [2016/05/24(火) 20:11:40.98 .net] >>593 THX > どの辺が疑問なのかむしろ知りたいわ logrotate コマンドの copytruncate の欄に SIGSTOP すると良い、とは書かれていない あたり、何か不都合があるんじゃないかと思うんだがどーよ?
606 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/24(火) 22:53:24.96 .net] >>594 そいつとtcpもudpもforkも関係ないのになんで出てきた?
607 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/25(水) 08:40:27.70 .net] tcp 再送は5分までいけるが、ロードバランサー/L7swの監視の場合にはファイルコピーしている ちょっとした間にサービス停止として検知される可能性があるな。
608 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/25(水) 15:06:05.26 .net] >>596 5分って、どこの標準か興味がある。
609 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/27(金) 20:10:08.30 .net] >>586 普通は単純にリネームしてタッチする
610 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/28(土) 12:10:25.23 .net] タッチして逮捕されたらリネームじゃないのか。
611 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/29(日) 01:58:44.16 .net] つ 座布団
612 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/29(日) 20:46:35.04 .net] ユニックスの入門本が一冊欲しいのですが何がいいでしょうか 特定のコマンドやシェルのノウハウとかではなく 多くの場面で通用する本当に基礎的な知識を学びたいと思っています 私自身はいずれシェルを書きたいと思っていますが LS、CPコマンドなどの使い方を知りたいわけではないということです
613 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/29(日) 20:57:27.92 .net] >>601 UNIXスーパーテキスト ってまだ売ってたっけ?
614 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/29(日) 21:40:46.70 .net] >>601 古い本だけど砂原秀樹さんほかの『プロフェショナルBSD』 UNIXのコマンドはこういうふうに使うという根本的なことの理解に役立つ
615 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/29(日) 22:26:33.91 .net] スレチにも回答してあげるとは優しいやつばっかやな
616 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/29(日) 23:19:55.20 .net] >>601 入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界 名著です。 これを挙げると古いとか文句を付ける馬鹿がいますが、無視してください。
617 名前:名無しさん@お腹いっぱい。 [2016/05/29(日) 23:20:36.49 .net] あげ
618 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/30(月) 00:14:11.32 .net] >>604 お前の心が汚れているだけだ
619 名前:名無しさん@お腹いっぱい。 [2016/05/30(月) 03:08:51.89 .net] shell から emacs 起動して終了すると、 [1] Done emacs って出るよな?これって何が出しているんだろう?出来れば止めたい。
620 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/30(月) 04:52:05.02 .net] >>608 set +m しておくと出なくなるよ。(出してるのはシェル自身)
621 名前:名無しさん@お腹いっぱい。 [2016/05/30(月) 09:25:10.53 .net] vim7.4使ってますが、書き込み時、sh -n みたいな、構文・文法チェックを する方法はないでしょうか? vimプラグインのsyntasticも試してみたのですが、.vimrcの記述のせいか うまく動いてないようで。 何か簡単でうまい方法ありましたら、ご紹介ください。
622 名前:名無しさん@お腹いっぱい。 [2016/05/30(月) 10:19:27.79 .net] >>609 どうもです。なるほどシェルが出しているのですか。 でも、なぜ emacs しか出ないのでしょう? 教えていただいた set +m 「ジョブ制御の無効」は bash のみでしょうか? 私は tcsh なのですが、tcsh でも同様の事は可能でしょうか?
623 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/30(月) 18:00:07.40 .net] ひとつ質問 シェルで2つの日時を元に所要時間を求めたい場合ぐぐるといろいろ方法はありますが これが便利なコマンド一発で用意されていないのは需要がないと言うか 需要があった人が最終的に誰でも使える簡単な形にせずに終わらせたってことなんでしょうか?
624 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/30(月) 18:55:30.71 .net] >>612 広く使われるほどの需要はなかった
625 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/30(月) 19:36:20.17 .net] dateコマンドのオプションに互換性がなかったから。 GNU date限定とかならいいんだけど
626 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/30(月) 21:40:48.25 .net] 内部的にUNIX時間で持てば差分計算は簡単なような
627 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/31(火) 08:52:48.30 .net] >>615 32bitマシンが絶滅するまでは難しいな。 あと20年普通に残りそうだし
628 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/31(火) 21:45:59.92 .net] 内部的にUNIX時間で持つってどういうこと? 内部というのは環境変数やシェル変数という意味?
629 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/31(火) 23:23:59.98 .net] 256bit機が普及するまで32bit機はなくならないだろうね。
630 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/05/31(火) 23:24:37.85 .net] >>617 epochからの時間ってことじゃない? >>616 difftime(3)て32bitと64bitで違うのかな
631 名前:超音波テロの被害者 [2016/06/01(水) 16:02:45.59 .net] 超音波テロの被害にあっています。 卑劣極まりない被害にあっています。 何が起こったかわからないときから、 わかってみれば、 まだ世の中に知られていない超音波テロ。 世の中の多数の振動源・発信源が システム化され、 ネットワークを通して、 超音波・音波を集中させて 対象を攻撃するらしい。 超音波による物理的な力で、 ものが飛び、ものが壊れる。 それが人間の体に対してまで。 形のあるもの、ないもの、壊され、奪われ、 聞こえる声、音。超音波テロの加害者の声。 卑猥な内容、卑劣な内容、脅しやいたぶり。
632 名前:超音波テロの被害者 [2016/06/01(水) 16:03:08.53 .net] 身体の表面を突き抜け、内臓を攻撃される。 頭蓋骨を突き抜け、意識を失わされる。 臓器不全やがん、命に関わることまで。 人間の身体を壊そうとする超音波テロ。 日本国中、どこにいても超音波で襲われる。 車に乗っている人間が襲われる。 歩いている人間が襲われる。 自宅で超音波の攻撃を受ける。 人や社会が超音波で襲われ、 罪もない人が超音波で襲われ、 卑劣な被害にあっています。 被害を訴えても信じてもらえない。 「見続けるのがいやだから、殺して終わる」、 「証拠隠滅だ」という超音波テロの加害者の声とともに 強烈な超音波の攻撃。 叫ばされ、いたぶられ、それを口実にまた攻撃され、 超音波テロの、残酷残虐で、卑劣な攻撃の被害にあっています。 心の底から被害を訴え、祈っています。 天に神に届きますように。
633 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/01(水) 17:45:47.97 .net] >620 これなんつーシェルのスクリプトですか?
634 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/02(木) 07:52:05.22 .net] /bin/jpsh
635 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/02(木) 08:00:02.53 .net] /bin/chouonpa/itaburare
636 名前:名無しさん@お腹いっぱい。 [2016/06/05(日) 11:03:53.19 .net] ディレクトリを指定する時って、「/dir/」が正しいのか、「/dir」 にすべきか、最後の/をつけるかつけないかでどんな違いがあるのか いつもすごく気になる。
637 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/05(日) 13:34:06.57 .net] >>625 rsync や ln 、mv あたりはありなしで挙動がかわる。 ln や mv はオプションで一応制御できるけど
638 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/09(木) 19:13:38.61 .net] json形式のデータをSQLのjoinみたいにキーで結合したいのですが いいスクリプト知りませんか? jqはできそうな感じなんだけど、サンプルのページが見当たらなくて
639 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/09(木) 21:10:02.49 .net] >json形式のデータをSQLのjoinみたいにキーで結合したいのですが cpanモジュール使うべし。 力技でゴリゴリでもできるかもしらんが、時間の無駄
640 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/09(木) 22:45:45.43 .net] >>627 データがどんなもんか分からないので何とも言えないけど例えば [ {"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 かなぁ。
641 名前:629 mailto:sage [2016/06/10(金) 01:11:22.91 .net] あー、しまった、思いっきり間違えた… jq ' (map(select(has("gid")) | {(.gid|tostring): .gender}) | add) as $g | map (select(has("id")) | .gender = $g[(.gender|tostring)]) ' data.json
642 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/10(金) 01:28:18.48 .net] [ { "id": 1, "name": "Tom", "gender": "male" }, { "id": 2, "name": "Alice", "gender": "female" } ] できました、できましたけど書き方わからないです>< >>628 cpan使うのが主流なんですか?
643 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/10(金) 01:54:22.40 .net] >>631 json 形式のデータを DB に insert する方法を調べた方がいいかも
644 名前:名無しさん@お腹いっぱい。 [2016/06/10(金) 14:14:19.71 .net] >>631 いやそういうわけではなくて、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} .
645 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/10(金) 16:33:17.98 .net] 使うべしって言った割にショボ過ぎ
646 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/10(金) 22:15:34.82 .net] スレ的にもここはあくまでシェルスクリプトでやるべきだろ なんでもありなら今はPythonの方がメジャー もしくはRubyとか
647 名前:名無しさん@お腹いっぱい。 [2016/06/10(金) 23:07:20.19 .net] 場違いだったらすまん。 gomプレイヤーとかのソフト立ち上げるとスクリプトエラー出るんだけどどうしたらいい? imgur.com/9hlJu8w
648 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/11(土) 00:12:44.31 .net] スレチ
649 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/11(土) 00:34:35.87 .net] スクリプトエラーとやらがでる ↓ にちゃんでスクリプトで検索 ↓ シェルスクリプトとかよくわからんけどスクリプトって入ってるからここに書けば誰か完璧な答えを出してくれるはず ゆとり、ここに極まれり
650 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/11(土) 03:40:49.78 .net] 引数を受けて同名のサブディレクリ直下にある全てのシェルスクリプト(.sh)を実行するってどう書けばいいんでしょうか?
651 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/11(土) 03:41:43.14 .net] bash環境です。同名とは引数に指定された文字です
652 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/11(土) 03:53:01.79 .net] find 引数 -name *.sh -exec {}; こんな感じなのだろうか。
653 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/11(土) 04:14:09.33 .net] ありがとうございます こんな感じで良いのかな? find 引数 -maxdepth 0 -name *.sh -exec bin/sh -c ' {} ' \;
654 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/11(土) 10:22:42.97 .net] シェルスクリプトじゃないけどrun-partsが似たような仕事するね
655 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/12(日) 05:31:11.76 .net] for sh in $dir/*.sh; do $sh; done
656 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/12(日) 11:11:52.76 .net] Cygwin(bash)で特定の拡張子の映像ファイルをforループ文でまわして処理したいと思っています for input in * do (処理) done これだと映像ファイルだけでなく全てのファイルが対象になってしまいます。 そうではなくて WMV、MP4、AVI、MPEG、MPGといった映像ファイルだけを 処理するにはどうしたらいいでしょうか?
657 名前:名無しさん@お腹いっぱい。 [2016/06/12(日) 11:15:55.66 .net] >>645 そもそもなんでファイルを振り分けてないのか?
658 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/12(日) 11:25:58.85 .net] >>646 ffmpegで処理してるので映像ファイルの種類は分けなくても良かったりします あ、ただ変換後の拡張子は統一するようスクリプトを書かないといけませんね
659 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/12(日) 11:44:06.36 .net] >>645 for input in $(ls -1 *.{wav,mp4,avi,mpeg,mpg} 2>/dev/null) do (処理) done とか。
660 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/12(日) 11:52:44.28 .net] >>648 これじゃダメな場合があるんだっけ? for input in *.wav *.mp4 *.avi *.mpeg *.mpg do 〜 done
661 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/12(日) 12:07:38.74 .net] .wavファイルがないとinputには"*.wav"がそのまま入る だけど、ループの中で処理する時に [ -f "$input" ] || continue とでもしとけばいいよね
662 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/12(日) 12:36:44.21 .net] >>648 >>650 なるほど、そういう方法がありましたか。 ありがとうございますm(_ _)m >>649 >>650 さんのご指摘通りその拡張子のファイルが無いとそのまま入っちゃうって問題がありますね
663 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/13(月) 20:14:40.91 .net] テキストファイルの最終行に改行がないときだけ 改行を追加するようなスクリプトってどう書けばいいでしょうか?
664 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/13(月) 22:21:10.97 .net] >>652 それ、自分が前悩んで作ったのがある。誰か改善してくれ #!/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
665 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/13(月) 22:23:13.08 .net] test -n "$(tail -n1 TXT)" && echo > TXT
666 名前:652 mailto:sage [2016/06/13(月) 22:28:48.20 .net] すまない。>>653 はmbox形式のファイルにメールを追加するために作ったスクリプトだった だから>>652 さんの求めているスクリプトとはちょっと違った_o_
667 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/13(月) 22:49:39.12 .net] >>654 ファイルがぶっ壊れちゃったじゃないか(#゚Д゚) ゴルァ!! なんつって
668 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/13(月) 22:58:56.61 .net] >>653 ありがとうございます 最終文字を取り出して調べるというわけですね いじれそうです たぶんGNUのtailが必須じゃないかと思うのですが、 非GNU環境でも動くようにはならないでしょうか
669 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/13(月) 23:07:30.48 .net] >>654 ありがとうございます ただ、これは目的の動作ではありません 末尾に空行が欲しいのではなく、 改行文字で終わっていない最終行に改行をつけたいのです
670 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/14(火) 00:26:19.34 .net] >>652 #!/bin/sh echo wq | ed "$1"
671 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/14(火) 00:51:00.50 .net] >>652 for f in *.txt do [ $(tail -1 "$f" | wc -l) -eq 0 ] && echo >> "$f" done
672 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/14(火) 00:57:30.09 .net] >>652 for f in *.txt do { tail -1 "$f" | read; } || echo >> "$f" done
673 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/14(火) 02:14:34.40 .net] edかex使ったほうが楽なんじゃないか
674 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/14(火) 02:55:20.33 .net] 659 と 661 の違いは空ファイル(サイズ0)の場合。 ed はそのままだけど、tail -1 ... | read では newline が追加される。
675 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/14(火) 17:09:51.68 .net] >>659-663 みなさんありがとうございます edは思いつきませんでした どこでもあるかと思ったらないのもありますね。exはありそうです 改行のない最終行がwcにカウントされないとか 改行がないとreadがエラーコード返すとか すごくためになりました 空ファイルの動作の差についてはサイズを調べて分岐すればいいですね
676 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/15(水) 01:17:10.55 .net] >>652 sed -i -e '$a\' file unix.stackexchange.com/questions/31947/how-to-add-a-newline-to-the-end-
677 名前:of-a-file [] [ここ壊れてます]
678 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/15(水) 02:02:23.61 .net] ed や sed で追加する場合は元々ファイルの末尾に "\n" があるファイルの タイムスタンプを更新してしまうんだな
679 名前:名無しさん@お腹いっぱい。 [2016/06/15(水) 14:17:26.63 .net] おまえら知らんだろうけど、俺の家のそばの歩行者信号はUNIXのコンソールみたいに 青になるまで(赤になるまで)ドット(.)の点滅がひとつずつ消えていくんだぜ・・? 夜なんか見るとKDEみたいな感じですげえカッコイイぜ。
680 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/15(水) 14:54:39.46 .net] 眼科行けよ・・・
681 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/15(水) 14:58:10.28 .net] 日常生活の夜景にKDEを妄想する病気か。 IT土方の後遺症
682 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/15(水) 17:06:08.30 .net] >>665 おお、これはシンプルですね 空ファイルでもちゃんと対応できています man見てもそんな動作するとは明示されてないのですが 安定した仕様と考えていいのでしょうか
683 名前:名無しさん@お腹いっぱい。 [2016/06/15(水) 19:20:41.67 .net] $ <- 最終行 a <- add. 置換ならsが有名. pでprint \ 何もない シェルスクリプトでも改行またぐときに使うやつ 類似した構文 seq 20 | head seq 20 | sed -n '1,10p'
684 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/15(水) 21:22:12.46 .net] それだったら seq 20 | sed 10q の方が良いかもしんない
685 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/16(木) 01:11:19.56 .net] >>652 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
686 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/16(木) 14:28:12.81 .net] >>673 おお、awkは明白でわかりやすいですね 改行抜きで読んだ各行を改行付きでprintするわけですね その意味ではawkで完璧なcatはできないのかな 紹介していただいたページには他にもいろいろ解法があっておもしろいです ありがとうございます
687 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/16(木) 15:35:18.42 .net] grep + moreutils の sponge $ grep '' file | sponge file
688 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/16(木) 19:35:59.66 .net] >>675 grepだけでも末尾に改行つけるんですね でもこの仕様も安定性が心配
689 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/16(木) 20:54:54.26 .net] コマンドラインから翻訳API使ってるがおもしろすぎるw
690 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/19(日) 12:33:57.95 .net] Windows7上でCygwinを動かしbashスクリプトを記述しています。 特定のタスクが起動するのを監視して、起動を確認したら行動に移すスクリプトを 書こうと思っています。 たとえばWindows Media Playerを起動するとWindowsタスクマネージャー上の 「アプリケーション」タブに"Windows Media Player"が立ち上がるのが分かります。 このように特定のタスク/アプリケーションの起動を検知するスクリプトをbashで 記述するにはどうしたらよろしいでしょうか?
691 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/19(日) 14:28:17.66 .net] ps -W | grep "Windows Media Player" | grep -v grep
692 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/19(日) 14:30:25.15 .net] "Windows Media Player"の部分は実際のexeになると思うから ps -Wで表示されるのにしてね
693 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/19(日) 15:43:42.63 .net] >>679 >>680 ありがとうございますm(_ _)m
694 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/20(月) 18:07:32.11 .net] そういう時は pgrep を使えよ! と思って手元の Cygwin (64bit) に procps-ng を インストールしてみたんだけど、これって cygwin 配下のプロセスしか見えないのね……
695 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/20(月) 23:14:14.04 .net] 大変出遅れたけど >>649 の問題はbashなんだしshopt -s nullglobで済むのでは?
696 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/06/21(火) 02:08:19.29 .net] 横からだけど、bash なら nullglob でいけるな〜 むっちゃ参考になった。ありがとう
697 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/03(日) 14:58:46.31 .net] OSXのsedメモ ダメ echo "12
698 名前:3.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' +と?の代わりになるいい方法ないですか? [] [ここ壊れてます]
699 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/03(日) 15:23:02.40 .net] -e じゃなくて -E つかうとか?
700 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/03(日) 15:27:38.26 .net] $ echo "123.abcd" | sed -Ee 's!\.[a-zA-Z]+!!g' 123 $ echo "123.abcd" | sed -Ee 's!\.[a-zA-Z]?!!g' 123bcd
701 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/03(日) 15:33:05.72 .net] あ、そうか -E は代わりじゃなくて -Ee とすべきだね
702 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/03(日) 15:35:22.62 .net] -Eの存在をすっかり忘れてた ありがとう
703 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/03(日) 15:52:51.46 .net] OSXにする人への注意点 デフォのままだと、'、"、-が自動的に置換されるから、環境設定>キーボード>ユーザ辞書で自動置換をoffにしたほうがいい appごと?、ファイルごと?でもメニューバー>編集>自動置換でも自動置換をoffにできる
704 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/03(日) 20:21:24.00 .net] >>690 OSX歴10年ほどだけど、そんなんの知らんかったし、 そんな目にあったことがない。ぐぐったら実在する機能らしいが、 テキストエディットでコーディングするなんて考えられないし、 あたかもすべからく機能するように誤解を誘導するのはよくない。 OSXを使い始めて困ったのは、円とバックスラッシュを区別することぐらいだ。
705 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/04(月) 20:49:46.74 .net] 注意点でそんな攻撃的にならなくても そのテキストエディットのデフォ値を晒した方が有益かと
706 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/04(月) 21:44:12.04 .net] マカーのレスって 〜 が、おかしいよね。 デフォルトでおかしいのが出ちゃうのか知らんけど、あれをなんとかしてほしい
707 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/05(火) 02:10:41.78 .net] ゴシックなのに明朝っぽくなるやつね 自分も知ってるけど一発でマック使いだって分かるから あのままでいいと思ってる
708 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/05(火) 02:24:03.69 .net] 波ダッシュの話? あれは Windows XP がしくっただけじゃなかったっけ。 Unicode の仕様含め結構まとめてくれてる人がいるから一度読んでみたらいい。
709 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/05(火) 09:28:26.99 .net] アポが勝手なことをしただけ
710 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/05(火) 11:46:58.78 .net] >>696 どうぞ internet.watch.impress.co.jp/docs/special/691658.html internet.watch.impress.co.jp/img/iw/docs/691/658/fig_2_s.jpg
711 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/05(火) 14:27:46.64 .net] それより、UFT8-macを何とかしてほしい。 日本語ファイル名だとLinuxマシンとまともに連携が取れない。
712 名前:名無しさん@お腹いっぱい。 [2016/07/05(火) 15:14:05.40 .net] >>697 お前はまとめ見て引用しか出来ない馬鹿だな そのリンク先にも書いてあるだろ Unicodeのイメージ(字形)が間違ってたんだよ XPはその仕様を忠実に実装しただけであって アポは無視したんだよ MSもヴィスタから同じ対応をしただけだ 知ったかぶりするんじゃねーよ
713 名前:名無しさん@お腹いっぱい。 [2016/07/06(水) 12:51:14.80 .net] おい、おまえら! Unixの読み方はユニ(ッ)クスだぞ。Linuxの読み方はリナ(ッ)クスだぞ。 ちなみにASUSはエイサスな、日本語よみでユニックスとかリナックスとかアスースとか読むのは知能が低い証拠だぞ。 Xの前は何でも「ッ」をつければいいと思ってるのは、典型的な日本人のレベルだぞ! ちなみに、Xの前に正々堂々と「ッ」をつけてもいいのは、貴様らにほとんど関係ない セ○クス(S○X)だけだぞ!
714 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/06(水) 17:47:32.09 .net] むかしYahooをヤッホーって言ってた友達を思い出した
715 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/06(水) 19:07:35.87 .net] イット革命の時代には、よくあることだね
716 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/06(水) 20:49:19.53 .net] 伏せたらSIXだかSOXだかわかんねえな。
717 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/06(水) 21:36:34.09 .net] アメリカで働いてたときはごちゃまぜだった 方言によって訛りもあるし正直通じればなんでもいい
718 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/07(木) 18:04:30.74 .net] 最初は現地読みで「りぬくす」または英語読みで「らいなっくす」と言われてた
719 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/12(火) 21:25:52.98 .net] 塩味のマムコ
720 名前:名無しさん@お腹いっぱい。 [2016/07/12(火) 23:15:08.76 .net] ちんぽ
721 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/14(木) 00:29:39.15 .net] イスドンvsアドスル
722 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/19(火) 06:19:56.96 .net] aliasの設定で alias command='echo "hage"' commandにスペースを含ませる事できないのでしょうか?
723 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/19(火) 08:59:57.76 .net] >>709 bashだよね。普通にできる
724 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/19(火) 09:07:33.10 .net] あ。command を "c o m m a n d" にしたいということなら bashの識別子の条件に反するので不可
725 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/19(火) 19:42:55.37 .net] >>710 710=711 と仮定して質問するけど、710はどういう場合? 何を勘違いしたかが気になって。
726 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/07/19(火) 21:28:50.34 .net] >>712 710=711だけど、aliasで別名を定義するコマンド(つまりイコールの右側)に スペースを入れられるのかという質問だと考えた。例示がそういう形になってるから。 もし、alias名にスペースを入れられるかという質問ならそういう例示をするはず でも後者の質問という可能性に気づいたので、711を追加した
727 名前:名無しさん@お腹いっぱい。 [2016/07/22(金) 22:58:42.81 .net] <bashのfunctionをdeclare -fで表示すると整形してあることを利用> d.hatena.ne.jp/n9d/20090117/1232182669 ほとんどなんもしてないワンライナーだけど、見事にスクリプト ファイル整形してくれる。なんか感動すたw
728 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/06(土) 14:00:53.40 .net] Windows10のISOをダウンロードするときに考えたんだけど URLからファイル名だけを抜き出すこれより冴えたやり方ってある? ちなみに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重起動するとファイルが壊れて いやな思いをした経験があるのでチェック入れてます
729 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/07(日) 00:22:16.73 .net] basenameじゃ駄目なの?
730 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/07(日) 11:38:22.64 .net] 上のif文、$fileを""で囲わなくていいの? 実際引っかかることはなさそうだけど
731 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/08(月) 22:34:42.13 .net] bash の変数内の文字列削除ってどうやるのでしょうか?削除したいのは"(ダブルクォート)なんですが testvar=aaa"aa" ${testvar##\"} これじゃ駄目だった
732 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/08(月) 23:41:17.18 .net] >>718 ## は前方最長一致 全部
733 名前:置換するのは // testvar='aaa"aa"' echo ${testvar//\"} Bashマニュアル「パラメータの展開」セクション内「パターンの置換」 http://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html#lbBB [] [ここ壊れてます]
734 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/10(水) 12:59:48.57 .net] selectはbash専用ですか?
735 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/11(木) 00:06:31.61 .net] >>720 はい https://wiki.ubuntu.com/DashAsBinSh#select https://github.com/koalaman/shellcheck/wiki/SC2039#select-loops
736 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/16(火) 04:34:02.37 .net] 特定のディレクトリ配下のファイルの中身に特定の文字列が含まれるかどうかを判定するにはどうしたらいいですか? find xargs grep?これの行数でも数えてtestに渡す?
737 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/16(火) 08:28:28.59 .net] 判断ってファイル名をリストすんの? 最終的にどうしたいの?
738 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/16(火) 11:19:32.81 .net] grep -qr 文字列 ディレクトリ
739 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/16(火) 12:55:22.82 .net] あったら処理Aを実行しその結果を返却、なかったら正常終了としたい
740 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/16(火) 13:02:40.67 .net] if grep -qr 文字列 ディレクトリ; then 処理A; else exit 0; fi
741 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/20(土) 19:23:45.23 .net] find . | grep xargs 〜
742 名前:名無しさん@お腹いっぱい。 [2016/08/21(日) 09:28:24.43 .net] > find . | grep xargs 〜 とても斬新
743 名前:名無しさん@お腹いっぱい。 [2016/08/23(火) 01:57:32.12 .net] 今freebsdのミラーサイトおかしくない?
744 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/23(火) 02:07:00.60 .net] どうおかしいのかくわしく
745 名前:名無しさん@お腹いっぱい。 [2016/08/23(火) 02:08:14.36 .net] freebsd-update fetch freebsd-update install ができない
746 名前:名無しさん@お腹いっぱい。 [2016/08/23(火) 02:08:58.40 .net] ミラーサイトを色々変えてもだめ
747 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/28(日) 20:54:56.49 .net] 読み込みたいデータが入ったファイルをcatしてwhileでreadすると while抜けたときに変数の内容が保持されないんだけど 元のシェルスクリプトと別プロセスになってるからってことなのかな? 以下サンプル 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 $
748 名前:名無しさん@お腹いっぱい。 [2016/08/28(日) 21:02:27.99 .net] while ... do ... ; done <<EOT $(grep -v ^# <file| sort | uniq) EOT
749 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/28(日) 21:03:00.60 .net] パイプせずに-eでやろうってのはその通りですが 疑問の本質ではないのでとりあえずスルーでお願いします
750 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/29(月) 03:11:36.41 .net] だったら問題の本質だけのスクリプトにすべきでは?
751 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/29(月) 06:36:10.22 .net] 単に簡略化して書いただけじゃ?
752 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/29(月) 12:49:07.23 .net] パイプが問題の本質なんだな パイプでつなげたwhileはサブシェルで起動するから、 > while抜けたときに変数の内容が保持されないんだけど > 元のシェルスクリプトと別プロセスになってるからってことなのかな? ってことになる whileをパイプの先に置いてる限り解決しないので、>>734 が本質的な解 あるいは、shじゃなくてbashとかならプロセス置換が定石 while read title; do ... done < <(cat work/uhl.txt | grep -v ^# | sort | uniq)
753 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/08(木) 21:25:56.17 .net] urlを取得しようと、テストで下を試したのですがダメでした。 どなたか、どうすればいいか教えてください。 お願いします。 x="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\.]'
754 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/09(金) 00:28:23.04 .net] やりたいことがわからない...
755 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/09(金) 13:26:15.96 .net] テキスト中のurlを取得しようと、grepに/が先頭に来るパターンを使ってテストしてみたら、htttp://xが取得できなかった。 ヘルプミー。 だろ。 grepに/が先頭に来るパターンを使った取得は俺も出来ない。
756 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/09(金) 13:46:05.11 .net] >>739 期待する出力は?
757 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/09(金) 14:07:32.50 .net] >>741 おまえの言うことも分からないから739と741は同一人物っぽいな $xがURLそのものなら加工する必要が無い
758 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/09(金) 15:51:28.22 .net] 「grep」ではなくて「sed」による例だが、 URL(URI)の中からホスト名(サーバー名 *1)を抽出したいなら *1 スキーム(http:)とパス(/yyy/zzz/index.html)に挟まれた部分 [入力]URL www.xxx.co.jp/yyy/zzz/index.html [出力]ホスト名 www.xxx.co.jp $ echo "www.xxx.co.jp/yyy/zzz/index.html" | sed -e 's/.*http:\/\/\([^\/]*\)\/.*/\1/i' www.xxx.co.jp
759 名前:744 mailto:sage [2016/09/09(金) 16:31:07.62 .net] 実行例、何かURLの後ろに勝手に「; セミコロン」が挿入されているな これ2chの仕様? もし試すなら「index.html"」の後ろの「; セミコロン」は削除して試してくれ
760 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/09(金) 16:39:00.12 .net] セミコロンなんて入ってない あんたのブラウザの問題だろ
761 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/09(金) 16:57:52.70 .net] >>743 741です。 妄想、乙。そのするどい頭脳でサクッとコマンド貼ってみてくださいね。 ちなみに、\wにこだわらなければ echo $x | grep -e "/[a-zA-Z0-9\.]" で、できる。 \wがあると、どうしてだめかはしらない。 >>744 セミコロンないよ。
762 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/09(金) 17:27:46.43 .net] 書きたかったのは echo 'x ' | grep -Ee '/(\w|\.)' とかだろうけど echo 'x ' | grep :// で良い気がする
763 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/09(金) 18:44:47.37 .net] >>744 はウェブブラウザで表示するとセミコロンが見える 2chの仕様っていうか read.cgi のバグ >>747 > \wがあると、どうしてだめかはしらない。 grep や egrep の正規表現では文字クラス […] 内のバックスラッシュ \ が特別な意味を持たないから [\w] は \ と w にマッチする [\.] は \ と . にマッチする
764 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/09(金) 22:23:01.76 .net] >>747 >>741 とやってることが矛盾してるが
765 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/09(金) 23:05:57.44 .net] 結局>>739 が出てこない限り>>740 から何一つ進まない
766 名前:739 mailto:sage [2016/09/10(土) 17:00:28.25 .net] 言葉足らずで、お騒がせしました。 やりたかったのは、テキスト中のurlの抽出です。 urlには/が入っていて、ドメイン名にはアルファベット、数字、ピリオドがあるので、 いろいろ試しているなかで、上のようなコマンドでgrepが機能しない?と思い込んだ状態に遭遇した所でした。 https+://をgrepから外したのは、ttp://やドメイン名から始まるurl対策のつもりでした。 自分の間違いを>>749 の解説と>>747 のイグザンプルで理解できました。 みなさん、ありがとうございました。 本来の目的はまだ試行錯誤中ですが。
767 名前:739 mailto:sage [2016/09/10(土) 17:16:44.65 .net] https+じゃなくてhttps?でした
768 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/14(水) 14:31:43.86 .net] <<<を使うとechoで変数を渡すより速いというのを見かけて time 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 みんなはどう?
769 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/14(水) 20:50:13.24 .net] CentOS6.8(Hyper-V上)/Haswell でも前者の方が早いですね。 time を bash 添付の物ではなく、/usr/bin/time -v /bin/bash -c '...' で計測して詳細をみると、 前者は File system outputs: の値が 0 に対して、後者は 8000 (for の繰り返し1回あたり 8 増える) となりました。 strace で見る限りどこかに書き込んでいるようには見えないですが、内部での実装に違いが あるようですね。
770 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/15(木) 09:05:23.94 .net] 想像だけど、echoはbashのビルトインだから起動ロスが無いのとパイプは同時起動だから、stdinが常に準備状態 <<<だど読み込むときにstdinを準備 じゃないのか?
771 名前:名無しさん@お腹いっぱい。 [2016/09/15(木) 11:53:03.00 .net] <<<(ヒアストリング)ってbashのドキュメントにはビアドキュメントの変形と書かれてる ってことは、fstat(0, ...)で調べりゃ、レギュラーファイルになってる筈 > <<<を使うとechoで変数を渡すより速いというのを見かけて と言うデマの火元はどこ?
772 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/15(木) 13:09:35.23 .net] 前者はサブシェルを起動するからプロセッサが繁忙状態だと多分遅くなる シングルコア/シングルプロセッサだと確実にヒアストリングの後者の方が速い
773 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/15(木) 19:15:16.79 .net] >>756 , >>757 , >>758 解説d ヒアストリングという言葉自体初めて知りました。 <<はヒアドキュメントということも知らずに使っていました。 環境によっては、<<<は速くなるんですね。 いい勉強になりました。
774 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/24(土) 18:27:52.80 .net] ちょい困り案件が自己解決したのでココに書いておきます。 Macのファイルシステムって、ファイル名を UTF-8 で保存してるかと思いきや 独自の正規化がされてまして (UTF8-MAC) 例えば、 find . -name "*ドイツ*" とかやってもあるはずのファイルが出てこないわけです。(内部的に ド の字を ト+[濁点] みたいな格納をしてるせいです) そこで .bash_profile に以下のように コマンドもどきの find2 を定義してやります。これで万事解決です。 # find に渡す引数を全て UTF8-MAC に変換してしてます find2(){ eval "find "$(echo "$@" | iconv -f UTF-8 -t UTF8-MAC) }
775 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/24(土) 18:38:10.62 .net] >>760 他文字コードにも応用できそうだね
776 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/24(土) 18:47:05.28 .net] 変換すべきは-name ... だけでしょ 全部変換は手抜きすぎ -execで他のプログラムに渡すUTF-8をUTF8-MACに変換されていやーんになる 汎用的にするなら要ブラッシュアップ
777 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/24(土) 21:51:49.29 .net] >>762 了解です。 ただ -exec の方は 問題は別にあって 終端を表す \; の \(バックスラッシュ) が消えちゃうんですね。そもそもiconv変換する前の時点で。 一応対応できたと思うんですが、 長くなったので貼るのはやめときます。
778 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/24(土) 22:10:40.49 .net] -execは;じゃ無くて+で終端しないと原人扱いされちゃうよ ;じゃないと困るのはかなり特殊なケース
779 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/24(土) 22:13:36.64 .net] >>760 どっかで読んだ内容だなぁと思ったら、これ↓のパクリか! 「新・OS X ハッキング! (169) Terminal上で「ダ」や「パ」が付くファイルを検索できない理由と対策 | マイナビニュース」 news.mynavi.jp/column/osxhack/169/index.html
780 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/24(土) 23:20:43.06 .net] やり方だけ覚えてたんですが、昔見たのはソレかもしれません。 ただ現実に必要になってみると find . -name `echo "オランダ.png" | iconv -f UTF8 -t UTF8-MAC` これ毎回打ち込むの面倒だなと思ってコマンド化してみた次第です。
781 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/24(土) 23:54:36.90 .net] 昔って、先月の25日(1ヶ月前)の記事だけどな
782 名前:名無しさん@お腹いっぱい。 [2016/09/24(土) 23:56:11.17 .net] 実におもしろいw
783 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/25(日) 00:01:20.09 .net] ん、もっと昔から知ってたよ。だから他の記事だと思います。
784 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/25(日) 02:09:32.85 .net] >>763 >>終端を表す \; の \(バックスラッシュ) が消えちゃうんですね。 普通にfindするときもfindに渡る前に¥は消えるでしょ find2(){ find $(echo "$@" | iconv -f UTF-8 -t UTF8-MAC) } じゃダメなの?
785 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/26(月) 14:04:28.33 .net] それがベストだと思います
786 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/09/26(月) 23:31:45.32 .net] 昔から知ってたけどね
787 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/16(日) 10:27:03.83 .net] 以下のスクリプトはカレントディレクトリに「AABB」というファイルがあると ワイルドカードが展開されて「find /tmp -name AABB」となってしまいますが、 これを「find /tmp -name
788 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/16(日) 10:36:38.42 .net] すみません、失敗しました。 以下のスクリプトはカレントディレクトリに「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}"
789 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/16(日) 10:45:33.83 .net] option=
790 名前:名無しさん@お腹いっぱい。 [2016/10/16(日) 10:53:11.25 .net] あれ、ダブルクォーテーションで切れちゃった 全角にするけど option=”-name \”$name\”” とすればよろし
791 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/16(日) 11:06:04.27 .net] ダブルクォーテーション ウェブブラウザで書いてて、書き込んでいいですかの確認画面を経由して書き込むと切れちゃう 俺調べ
792 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/16(日) 13:48:12.77 .net] 余計な変数使わないで #!/bin/sh name="AA*" find /tmp -name "$name" ってやればいいのに
793 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/16(日) 13:54:36.43 .net] 場合によって option="$option 他のオプション" とかやりたいんじゃないの
794 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/16(日) 17:25:04.68 .net] >>777 まさにそれだったわ。情報ありがとう
795 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/16(日) 18:08:50.16 .net] 邪道で、bash 用だけど find の前に set -f find の検索パスにワイルドカード使ってたらだめ
796 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/16(日) 19:22:23.01 .net] テス # name=
797 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/16(日) 19:25:37.68 .net] >>777 、あぁ、本当だWebブラウザからの書き込みだと回避できないのかな? スクリプトソース貼るのに致命的だな
798 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/16(日) 19:40:18.84 .net] hastebinにでも貼ればいいんだよ
799 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/26(水) 22:58:52.49 .net] 一般的なペーストビン
800 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/26(水) 23:40:35.70 .net] hastebinのほうがちょっと見やすかったりする
801 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/29(土) 21:05:55.08 .net] 実行中の標準出力と標準エラーをログしながら表示させることって出来る? むかしリダイレクトとtailでやったらうまく行かなかった覚えがあってやめた気がする
802 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/29(土) 21:22:36.46 .net] プロセス置換を使う cmd > >(tee stdout.log) 2> >(tee stderr.log)
803 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/29(土) 22:19:49.67 .net] そういえばPOSIX shにはないな…すまん
804 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/30(日) 09:23:07.74 .net] cmd > stdout.log 2> stderr.log & tail -f stdout.log stderr.log で出来ないか?
805 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/10/30(日) 21:41:34.72 .net] 下記でOKだった { { cmd | tee stdout.log 1>&3; } 2>&1 | tee stderr.log 1>&2; } 3>&1 ・bash: 標準出力、標準エラー出力をファイル、画面それぞれに出力する方法 - Qiita qiita.com/laikuaut/items/e1cc312ffc7ec2c872fc
806 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/04(金) 12:24:35.95 .net] 音楽CDを突っ込んでmp3を作る。 この時ファイル名とmp3タグにはCDDBから読み込んで来る。 これをやるのに手っ取り早い方法ってなんだろ
807 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/04(金) 12:26:20.17 .net] EAC自動化
808 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/04(金) 12:31:52.74 .net] abcde使えよ
809 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/17(木) 04:52:04.55 .net] /usr/bin/test を使った判定がよくわからなくて困ってます curl でhttp の応答をチェックしたいのですが 下記みたいにしてもちゃんと判定できないのですが何が原因でしょうか? test $(curl -XHEAD -s -i https://www.google.co.jp | awk NR=1) = 'HTTP/1.1 200 OK';echo $?
810 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/17(木) 06:02:01.01 .net] くおー $ [ $(curl -I localhost/ 2>&- | head -n 1) = 'HTTP/1.1 200 OK' ]; echo $? bash: [: too many arguments 2 $ [ "$(curl -I localhost/ 2>&- | head -n 1)" = 'HTTP/1.1 200 OK' ]; echo $? 0 $ [ "$(curl -I localhost/dummy 2>&- | head -n 1)" = 'HTTP/1.1 200 OK' ]; echo $? 1 っとちょっと色々違うけど、うちでは之でなんとかなってる
811 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/17(木) 06:27:40.74 .net] "HTTP/1.1 200 OK"$'\r'
812 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/17(木) 08:38:26.65 .net] そういうのはステータスコードだけを見るようにしたほうがいいよ test "$(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 $
813 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/17(木) 08:49:14.72 .net] >>798 訂正 ウェブブラウザで表示すると余分なセミコロンが混じってしまう test "$( curl -I -s -o /dev/null -w '%{http_code}' https://www.google.co.jp/ )" = 200
814 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/17(木) 12:19:57.15 .net] >>521 いいお(´・ω・`)
815 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/17(木) 12:21:26.17 .net] うちのcurlは終了しなかった -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 $? なった
816 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/17(木) 12:47:25.00 .net] つまり纏めるとこうか test "$(curl -I -w "%{http_code}" example.com/ 2>&- |tail -1)" = 200; echo $?
817 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/17(木) 14:56:39.30 .net] なんでレスポンスを取得する操作と 取得したレスポンスをtestする操作を一度にしようとするのか理解不能
818 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/17(木) 16:51:11.77 .net] ワンライナー原理教の方ですかね?w まあ何でも一度にやってみたくなる衝動は理解できなくもない。 そこに山があるから、的な何か。
819 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/11/17(木) 17:02:47.58 .net] そこにパイプがあるからな
820 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/07(水) 08:00:32.91 .net] 品位が問われるAdvent Calendar -- シェルスクリプトはどこでも動く! ttp://www.peeep.us/4a5535c5 なんかあの界隈よく揉めてるな… 👀 Rock54: Caution(BBR-MD5:f4da0c707200fe35c49b788174082785)
821 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/07(水) 09:27:19.82 .net] 品位のないやつだな
822 名前:名無しさん@お腹いっぱい。 [2016/12/07(水) 10:58:10.89 .net] qiitaとかに書いちゃう輩なんてそんなもんだろ
823 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/07(水) 12:13:29.28 .net] この記事がキモいのは認めるけど、十把一絡げにQiitaを悪く言うのはやめて! とはいうもののオタクのコミュニティって、どこでもちんぽ騎士団ぽいのがいるよね…… ぼっち最高やで。
824 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/07(水) 15:49:11.13 .net] シェルスクリプトで、if
825 名前:とthenの間に改行がある場合で、その間に#をつけたコメント行を入れるのはNGですか? ifの条件を、動作テストのため、いくつか使い分けたくて、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 [] [ここ壊れてます]
826 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/07(水) 16:18:47.23 .net] >>809 あそこで役に立つ記事あるか? 自己満のゴミ情報が大部分だからgoogole personal blockの対象だわ
827 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/07(水) 16:49:19.73 .net] >>810 テストの大括弧の後ろにセミコロン付ければいいんでね?
828 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/07(水) 18:34:13.86 ID:v2ZV9RF7w] bash3.2+ で IFS=$' \t\n' な状態で $ echo "foo bar" baz | hoge.bash とした時に hoge.bash 内で "foo bar" と baz を 別々の引数として取得するにはどうすればいいですか?
829 名前:名無しさん@お腹いっぱい。 [2016/12/07(水) 19:49:58.99 .net] >>811 わかる。盛大な勘違い書いててドャァしてる感がすごい
830 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/07(水) 21:31:23.08 .net] googoleとかのことか
831 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/07(水) 23:23:03.71 .net] >>810 素直にcrontab使った方が良いんじゃね
832 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/08(木) 09:58:48.36 .net] >>810 そんなこと起きないはず ほんとにそのコード?
833 名前:名無しさん@お腹いっぱい。 [2016/12/10(土) 20:22:24.90 .net] すいません、教えて下さい。 色んなネットーワーク機器のログをsedでズバッとマスキングかけたいんだけど、URLと、IPアドレスの正規表現を教えて下さい。
834 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/10(土) 20:25:17.66 .net] 817d
835 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/14(水) 16:17:30.58 .net] TBS det dritte folkemn
836 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/21(水) 04:35:52.23 .net] 文字列から実行して、返り値も標準出力も格納したいんだけど testCmd="なんかのコマンド" result=$(eval testCmd) この後の$0はevalの返り値なのかtestCmdの帰りなのかよくわからんのですが
837 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/21(水) 05:11:40.55 .net] >>821 $0 ってどういうこと? $? の間違いなら man bash の eval に書いてある。
838 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/21(水) 06:35:22.65 .net] 普通に考えるなら export testCmd="コマンド" $testCmd > ログファイル 戻り値=$?
839 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/21(水) 06:47:35.19 .net] ちなみにスクリプトにすると result=`$testCmd` で標準出力が入って $?でも戻り値は取れるけど 標準エラー出力は取れないね
840 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/21(水) 11:34:52.01 .net] 失礼いたしました$?ですね testCmd="なんかのコマンド" result=$(eval $testCmd) returncode=$? 標準エラーはいらんのですが プロセス置換?とかでできるのかな
841 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/12/22(木) 09:27:10.08 .net] いまいち何を訊きたいのか分からん。 $?はevalの終了ステータスが設定される。evalの終了ステータスはtestCmdの終了ステータスが設定される
842 名前:名無しさん@お腹いっぱい。 [2016/12/22(木) 12:40:53.01 .net] > この後の$0はevalの返り値なのかtestCmdの帰りなのかよくわからんのですが マニュアル読んでわかんなきゃ試してどうなるか調べないと 正常終了するコマンドだけじゃなくてそれ以外もね
843 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/15(日) 17:41:24.20 .net] [ .... ] を [[ .... ]]に単純に置き換えて問題あります でしょうか?
844 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/15(日) 18:20:34.24 .net] コマンドの引数を変数化したときって、どうやってその変数をコマンドに渡せばいいの? #!/bin/bash opts=“-f $file” hoge $opts これだと hogeコマンドが unrecognized option エラーになってしまう。 初歩的な質問ですまん
845 名前:828 mailto:sage [2017/01/15(日) 18:27:02.19 .net] スマソ、自己解決 $fileが不正だっただけやん
846 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/16(月) 21:28:07.13 .net] >>828 mywiki.wooledge.org/Bashism#Conditionals > [[ is not defined by POSIX, originated in ksh and is also present in zsh
847 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/17(火) 21:34:40.69 .net] bashでif使って変数に"ok"が入ってるかはどうやって確かめればいいんでしょうか? if [ $a = "ok" ]; then echo hoge else echo fuga fi の様にしているのですが"ok"が入っていても別の文字列が入っていてもfugaが出力されてしまいます
848 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/17(火) 21:59:37.47 .net] $a の中身が引用符の無い裸の ok ならば真になるはず
849 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/17(火) 22:02:25.13 .net] できればそのままやりたいんです cutかなんかで事前に削るしかないですかね?
850 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/17(火) 22:14:16.11 .net] 831 の "ok" を '"ok"' または "\"ok\"" にすれば
851 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/18(水) 09:13:18.95 .net] 引用符付きの文字列なの?
852 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/18(水) 11:40:24.29 .net] >>835 \"でうまく行きました ありがとうございます >>836 そうです "ok"か"error"、またはそれ以外の文字列(引用符なし)が入ってる
853 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/21(土) 12:38:14.00 .net] 使ってないと何もかも忘れる・・
854 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/21(土) 16:06:57.66 .net] 忘れるで思い出した、シェルスクリプトと関係ないけどinfoでいつも迷子になるわ俺
855 名前:. mailto:sage [2017/01/21(土) 20:26:15.12 .net] これってどうかな? gihyo.jp/magazine/wdpress/plus/978-4-7741-8694-8
856 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/21(土) 21:16:52.05 .net] configure全部読めば桶
857 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/23(月) 23:25:46.35 .net] httpdのログでIP直でアクセスして来たIPをbanするスクリプト作ってcronで回すようにした
858 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/23(月) 23:40:12.97 .net] 接続しに来た全IPをBAN判定する負荷のほうが高くなりそうだね
859 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/01/23(月) 23:46:44.50 .net] blockはpfでやってるけど、負荷があるのかわからない。たいして無いように思う。前は中国IPを全部はじいてたけど、特に不都合はなかった
860 名前:名無しさん@お腹いっぱい。 [2017/02/05(日) 17:07:27.34 .net] ビギナーなんですが、教えてくれませんか。 for i in {1..3} do echo $i done で 1 2 3 ではなく{1..3}が出力されます。どうして?
861 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/05(日) 17:13:16.91 .net] bash じゃないから
862 名前:名無しさん@お腹いっぱい。 [2017/02/05(日) 17:15:56.58 .net] >>846 ありがとう・・・ありがとう・・・
863 名前:名無しさん@お腹いっぱい。 [2017/02/05(日) 19:26:02.43 .net] もう一個お願いします。 testを 1 2 3 というファイルだとして、 cat test|while read line; do sed -e "s/.*/a/"; done をやると a a a ではなく a a となるのはなぜですか?
864 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/05(日) 20:04:29.97 .net] ホントは、 cat 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 に入力される ことになるよ。
865 名前:名無しさん@お腹いっぱい。 [2017/02/05(日) 20:26:43.25 .net] >>849 ありがとう・・・。そういう仕組みになってるのは知らなかった。
866 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/08(水) 13:58:57.76 .net] list.txt に書いてあるファイルを一括で転送するスクリプトを書いたのですが、 これに送信前と送信後のmd5を比較して、一致しなかったら再送させるにはどうすればいいですか? pastebin.com/aXucBuHW
867 名前:名無しさん@お腹いっぱい。 [2017/02/08(水) 23:14:15.74 .net] 一度 mvしてしまったものは再送出来ない
868 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 12:54:00.09 .net] こういうファイルを重複箇所は2度目に出現する箇所のみ削ってマージする方法ってある? $ cat file1.txt 1 2 3 4 $ cat file2.txt 3 4 5 5 6 センスない自分
869 名前:ニしてはheadとtailを使って逐一チェックしながら マージすると言うプログラミング的な方法しか思いつかなかった・・・ [] [ここ壊れてます]
870 名前:名無しさん@お腹いっぱい。 [2017/02/09(木) 13:09:23.15 .net] cat file1.txt file2.txt | sort -nu あくまでも中には数字しかないならばの話で。
871 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 13:17:38.41 .net] 連結してsortしてuniqじゃダメなの?
872 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 13:35:43.26 .net] >>854-855 ありがとうございます 数字を使ったのは単なるサンプルなので・・・実際は文字列が入っています 今はcatで単純マージしたあとにviで重複箇所を削っていて かつそのファイルを利用する時にsortしてuniqしています できればファイルサイズとかも気にしたいので パイプとかで簡単かつ堅実に出来ないかなと思ったのです
873 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 13:40:12.55 .net] すでにソートされてるんならuniqだけでいいんじゃね そうじゃないんなら、ありうる最大限一般的な例を出さないのがだめ
874 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 16:02:59.69 .net] awk 使うとか $ cat file1.txt file2.txt | awk '{if(!u[$0]){u[$0]=1;print;}}'
875 名前:名無しさん@お腹いっぱい。 [2017/02/09(木) 19:01:56.53 .net] https://www.youtube.com/watch?v=quIHgwuF6r4&sns=em
876 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 19:13:20.28 .net] 2次元座標をy座標 -> x座標の順でソートしたいんだけど ソートキーの値がある範囲内(例えばプラスマイナス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 }
877 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 19:14:30.15 .net] >>860 入力イメージは(id, x, y)で 3カラム目がy座標、2カラム目がx座標です
878 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 19:50:30.95 .net] 区間に分けていいんなら、100単位で丸めたキーを追加してソートすればいいけど、 その比較関数をきっちり実装するのは無理があるね awkかそれ以上のスクリプト言語使うくらいかな
879 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 20:07:21.71 .net] プラマイ100とかだと全部同じ値になるんじゃないの? 四捨五入で丸めるなら分かるけど
880 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 21:01:26.79 .net] pythonのsortはstableだと保証されてるけど、他のは?
881 名前:859 mailto:sage [2017/02/09(木) 21:46:47.59 .net] >>862 >>863 入力イメージの値にあるみたいに丸めだと欲しい結果が得られないのでスクリプト言語使ってみます ありがとうございます >>864 stableかどうかはあんまり考えてませんでした 1カラム目のユニークな値でソート済みなところからの処理なので stableじゃないsortの場合は比較ロジックに1カラム目を追加して対応します
882 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 22:44:27.46 .net] んー、500=560で、560=620だけど、500<620って、ソート誤らんかな
883 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 23:31:32.77 .net] >>865 このスレで言うべきでは無い気はするけど Excelとかの表計算ソフトを使った方が良さそうな気が
884 名前:859 mailto:sage [2017/02/10(金) 00:45:19.33 .net] >>866 ユニークなキーも比較条件に追加すれば並び順は一意に決まるので誤ることはないかと >>867 シェルスクリプトでいろいろ処理する途中の処理なんです
885 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 01:36:54.52 .net] >>868 qsortを仮定して、たまたまピボットが560になったときと 620になったときで結果が変わるよ 誤るというか、結果が一意で
886 名前:ない [] [ここ壊れてます]
887 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 02:16:12.75 .net] 1カラム目がユニークキーだとしてそれも比較条件に入れれば 各行の比較で必ず上下関係が明確になるのでqsortでも大丈夫じゃないでしょうか 001 620 002 560 003 500
888 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 05:48:37.28 .net] シェルでも他言語でもプログラミングが必要で ループ処理しながら選択ソートするしかないね まあまずシェルで〜とかじゃなくて ExcelでもJavaでも何でもいいから簡単に実装できる方法を調べてみて シェルに落としこめるかを調べた方がいいと思う 例えば偏差とか一般的で誰でも使うから統計処理なんてawkで楽に出来るんだけど >>860 がやりたいのって特殊だから独自実装が必要になると思うよ 茶化してるわけじゃないけど はじめに自分がやりたいことは何なんでしょうって聞くのが早いと思う
889 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 06:15:23.45 .net] 数学詳しくないけど 前後のデータの単純比較じゃなくて 全データとの比較が必要になるから コマンド1発じゃ無理だね(10発くらいでも無理だけど) キーを追加するにしてもデータ数-1分のキーが必要になるし(xとyでさらに2倍か) キーが別だからそこからソートする方法が浮かばない スクリプトでもプログラムでもいいけど プラマイ100を同値とするソートのロジック組むしかないと思う
890 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 08:25:47.98 .net] >>870 qsortの中身知ってる? パーティショニングしたらあとはブロック内の入れ替えしかしないよ
891 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 08:29:02.88 .net] >>872 データ数-1とか2倍とか意味わからん
892 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 09:53:38.19 .net] >>868 並び順は良いだろうけど A=B B=C A≠C の時そもそもどうなれば良いの? 001 A 001 B ??? C
893 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 10:06:02.58 .net] ソートっていうのは同値類とその間の全順序を決めて要素を並べることだよね >>860 のcompareだと推移律を満たさないので同値類になっていない だからおかしなことになる
894 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 10:15:12.36 .net] このように複雑になる場合は要求定義が不適切な事が多い
895 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 10:16:20.47 .net] 普通に全部出せよ 何で小出しにしてんだよアホじゃねえよ
896 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 10:35:17.25 .net] 複雑って言うか単純なんだけど特殊なだけでしょ
897 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 10:52:33.90 .net] こんなアホソート誰が必要とするんだよwww ソート前 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の比較を追加する必要がある ぶっちゃけソート結果を見れば分かるように こいつソートしてんの?って思うだろう そもそも>>874 の考えが破綻していると言うか思いつきソートなんだろうと思う 統計とか学んだ方がいいかな〜
898 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 10:59:36.91 .net] ぶっちゃけプログラムを書くのは簡単
899 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 11:04:25.90 .net] 特殊じゃなくて曖昧なんでしょ 早い話、1000x1000の平面のすべての整数座標に点があったらどうソートしたいわけ? 2次元だからややこしいわけでなく1次元でも同じこと
900 名前:873 mailto:sage [2017/02/10(金) 11:07:21.05 .net] >>880 俺になんの用?
901 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 11:15:25.85 .net] >>883 ごめん間違えた>>860 だ >>882 いや曖昧じゃない 2次元と言うのもちょっと複雑にしてるだけだろう プラマイ100以内は同じと言う明確な基準がある ただたぶんこのソートの結果は>>880 に記したように 初期のデータの並びによって変わる部分があると思うね だからこのソートは>>860 の思いつきソートだってことだ
902 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 11:38:39.44 .net] 多分、縦横10000くらいある座標にポツポツしかないと予想した処理なんだろうよ
903 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 14:05:33.33 .net] >>884 (0, 100) (99, 300) (198, 200) どう並べりゃ良いのよ?
904 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 14:12:56.80 .net] >>886 (0, 202) (99, 101) (198, 0) こうか
905 名前:873 mailto:sage [2017/02/10(金) 14:39:27.08 .net] (0,999) (0,998) ... (0,1) (0,0) どう並べる?
906 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 15:26:37.64 .net] cygwinでスクリプト書いてて時々 bar=`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にしてから起きているような気もする
907 名前:名無しさん@お腹いっぱい。 [2017/02/10(金) 15:56:58.38 .net] . . 東京都三鷹市 元ニコ生主の莉里子です (整形後) i.imgur.com/SLcz3dS.jpg (整形前) i.imgur.com/zPvxpx5.png 不倫・浮気・密会・不道徳な行為は著名な小説家でしている人がいるので真似しちゃう池沼です i.imgur.com/vZeIuO3.png ■2015年2月 釣りニコ生主コジコジと沖縄旅行でオフパコ 2015年2月2日-3日...釣り生主コジコジと沖縄旅行でセックス/やり捨てされ逆ギレ 2015年2月4日.........莉里子の父親から電話があって脅されたとコジコジに放送で暴露される 2015年2月6日.........リスカ画像UP 2015年2月9日.........ツイ全消し/コミュ爆破逃亡 imgur.com/a/58WQC ■2016年6月 バンドマン兼ニコ生ツイキャス配信者と密会 その3日後に穴るセックス〜継続中 imgur.com/a/Lx8o2 ●早川莉里子●土井莉里子●土井寧々●土井剛●早川剛●星崎●りりこ●りりこし●にゃんぱす ●ね子●にゃこ●みんち●めう●ねね●猫又●剛 ※名古屋ゲイ風俗ホストとも体の関係※
908 名前:名無しさん@お腹いっぱい。 [2017/02/10(金) 15:57:21.03 .net] . . 莉里子(本人公表)1994年3月7日 or 1996年4月25日 imgur.com/a/oJZpv 生主時代(にゃんぱす、りりこし、莉里子) 剛 i.imgur.com/dQxxGuV.png imgur.com/a/gPaof 東京都三鷹市 シティハイツ吉祥寺通り i.imgur.com/UmTmbcu.jpg i.imgur.com/cODTuzm.png i.imgur.com/KdyuUod.png imgur.com/a/eeixK (見せたがり乱交好きのメンヘラ) i.imgur.com/9V5mmTh.png i.imgur.com/lobby7w.png i.imgur.com/AdewV6O.jpg i.imgur.com/YQaNYBd.png i.imgur.com/pdsCXHG.jpg 莉里子 緊縛ハメ撮り師 『相馬ドリルrenji』 とラブホに2人で入って フルヌード緊縛ハメ撮り https://pbs.twimg.com/media/CpFjMz0UEAAurD-.jpg i.imgur.com/xaAhkiD.png https://twitter.com/somadrill/status/761498960028499968 imgur.com/a/3dnz5 i.imgur.com/SAAZ0fQ.png
909 名前:名無しさん@お腹いっぱい。 [2017/02/10(金) 15:57:31.97 .net] . . . >悪質パクツイ垢(自称ハッカー)のコピーライティング特定されててワロた @copy__writing の中の人は東京都三鷹市の莉里子 https://twitter.com/copy__writing i.imgur.com/LyXsDj9.png i.imgur.com/nqT3xBN.png i.imgur.com/2FlhfLE.jpg https://www.mercari.com/jp/u/446591929/
910 名前:名無しさん@お腹いっぱい。 [2017/02/10(金) 15:58:37.98 .net] ■莉里子プライベート垢 @riricoco0 @bibliophilia333 @muzimuzi333 @nekomatagensou @hanasoraumimori @mirainosekai3 @zibanyan666 @parlorchild @liliririko @EriotN @mike_peko @riricoco0 @ririko_neko @nyanpas ※1 @telegraphyneko @riricatputi (新アカ) imgur.com/a/X1vQA
911 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 22:49:49.54 .net] >>889 再現性はあるの? 手で実行してるのか知らないけど lsの結果をファイルにリダイレクトしといて(ログ残しておいて) 地道に調べるしかないと思う
912 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 09:44:10.27 .net] SJISで漢字を含むCSVファイルを入力として、 while read line do なんちゃら done < CSV みたいに一行ずつ読み込んでなんちゃらすると、特定の漢字をreadで取った時に文字化けするんだが これの回避策って兄貴何かないかな とりあえずIFSを改行のみにしてfor line in `cat CSV`にして凌いだが、IFSいじるのが気持ち悪くて仕方がない
913 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 10:11:22.08 .net] なんの漢字?
914 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 10:13:38.18 .net] SJISなんてウンコを触っておきながらIFS弄るのが気持ち悪いというのは矛盾
915 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 10:35:53.64 .net] >>895 0x5C を含む漢字でしょ、「表」とか だったら read -r line で
916 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 10:44:50.39 .net] >>898 KOREDAAAAA!!! ありがとう兄貴 ちなみに構造って感じでつまづいてた SJIS扱うのは古いプロジェクトならよくあることよ
917 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 10:54:10.92 .net] そうか2バイト文字の1バイトが¥なせいでエスケープ扱いしちゃってたのな… UTF8とかだと回避出来るんかなこれは
918 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 11:54:23.78 .net] んなもん当たり前だろ、としか思えない私はおっさん確定。SJIS死すべしと思っていたのは25年前くらい? これが世代というものなんですね……
919 名前:894 mailto:sage [2017/02/14(火) 13:40:31.07 .net] 25年前からプログラマやってる人と並んだらさすがに俺はクソガキだわ にしても意外なほどググっても出ないな、それほどマイナーなのかこの症状 もしくは当たり前すぎるのか
920 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 15:20:01.03 .net] >>902 sjis ダメ文字でググればごろごろと
921 名前:894 mailto:sage [2017/02/14(火) 15:23:50.72 .net] >>903 sh read 漢字 文字化け とかで出てほしかった… 勉強なったわサンクス
922 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 15:40:03.34 .net] sjis 文字化け でも出るで もう少しやったな
923 名前:894 mailto:sage [2017/02/14(火) 16:05:30.25 .net] あー、出るには出るけど多分readとの関連に気づかなかったろうな…ダメ文字ってものをまず知らなかったし 特定の漢字が文字化けってあたりの記事から推察して、SJISがなんかマズイってとこにはたどり着いたかもしれんが、多分それでもread -rには気づかなかったと思うわ iconv -t utf8してたと思う
924 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 17:11:17.24 .net] >>906 iconv を利用するのはアリだと思うよ。 業務系のシェルスクリプトでも「SJIS データを一時的に UTF-8 にコンバートして何らかの処理をした後に SJIS に戻す」という手法で実装することがある。
925 名前:894 mailto:sage [2017/02/14(火) 17:17:09.33 .net] >>907 便利だよねiconv
926 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 20:50:41.08 .net] おれは、使い慣れてるnkfでcp932→utf-8に変換してから作業してるわ。
927 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/15(水) 01:22:16.71 .net] そんで戻ってこない文字が出てきて泣きそうになるまでがテンプレだね。
928 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/15(水) 01:34:33.21 .net] それでもiconvなら iconvならきっとなんとかしてくれる
929 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/15(水) 04:53:01.40 .net] 元がcp932なら変換不能になることはないだろう そう、iconvならね
930 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/18(土) 04:37:58.77 .net] #!/bin/bash echo 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 … で表示されたのか?
931 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/18(土) 04:55:39.09 .net] indexも表示させればわかるよ echo 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
932 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/18(土) 05:52:55.03 .net] >>914 readarray -t ARRAY < <(cat test.txt) で綺麗に配列として読まれますね。 これでいま作っている自作ツールが完成出来ます。 ありがとうございます
933 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/18(土) 09:43:20.54 .net] 最初の例のやつ、多分配列になってないんじゃないか
934 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/18(土) 14:18:47.86 .net] >>916 #!/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 と表示されて、配列になっているようです
935 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/18(土) 16:02:36.82 .net] >>917 それは配列になってるんじゃなくて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)使うか mywiki.wooledge.org/BashFAQ/005#Loading_lines_from_a_file_or_stream
936 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/18(土) 17:07:28.86 .net] >>918 > それは配列になってるんじゃなくて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)使うか > mywiki.wooledge.org/BashFAQ/005#Loading_lines_from_a_file_or_stream ありがとうございます。 もっと勉強します
937 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/20(月) 13:16:49.47 .net] >>919 [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")'
938 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/20(月) 18:00:26.41 .net] >>920 declare -p !!! 知らなんだ
939 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/20(月) 18:11:16.14 .net] このスレ来ると度々便利な知識得られるからいいわ grep -oとか
940 名前:名無しさん@お腹いっぱい。 [2017/02/21(火) 05:20:06.32 .net] 配列にするなら ARRAY=( $(cat test.txt) )
941 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/21(火) 16:45:06.28 .net] >>923 echo A > test.txt ; echo B C >> test.txt みたいにスペースなんかが入ると…
942 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/21(火) 19:03:20.01 .net] IFS=$'\n' ARRAY=( $(cat test.txt) ) declare -p ARRAY とすれば空白混じりの行も1行として扱われるが、 空行(何も文字が無い行)は$ARRAYに読み込まれない readarray -t ARRAY < test.txt declare -p ARRAY だと空行も読み込んでくれる
943 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/28(火) 23:57:54.64 .net] echo test | grep a みたいな時に終了コードはgrepこの場合1 でかつ標準出力にはtestが出ていて欲しいのですが どうしたらいいでしょうか? 環境はbashです
944 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 00:40:42.45 .net] echo test | tee /dev/tty | grep a でどうだろう?
945 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 00:57:07.01 .net] 終了コード1のときにはその文字列を表示したいとかによって違う気がする。 常に入力をそのまま出力していいのだろうか。
946 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 01:36:33.88 .net] 仕様を細かく詰めてない気がするけど とりあえず echo test | ( grep -v a; exit $(expr \( "$?" + 1 \) % 2 ))
947 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 02:35:11.20 .net] みなさん、ありがとうございます echo の部分は常に表示、grepは結果のみ欲しいので-qで、判定につかうインプットは常に全量表示して、結果はリターンコード、標準出力は人が見るよう、リターコードはその後のシステム的な分岐につかう的な目的です(後続はbashの世界でないのでワンライナーが嬉しい)
948 名前:名無しさん@お腹いっぱい。 [2017/03/01(水) 05:09:32.29 .net] macのsipsコマンドについて質問しても大丈夫ですか? 例えば-zと-sを一緒に実行して--out でフォルダに書き出したいとして どういうルールで並べて記述すればいいでしょうか? sips -Z 200 * -s format jpeg --out Converted/ あれこれいじって、たまたまこれで動いたのですが 正しいのかわかりません。 よろしくお願いします。スレチだったらすいません。
949 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 09:20:45.49 .net] >>930 grep にこだわらくても良くて、GNU sed を使ってもいい場合: $ echo test | sed '/a/!q1' test $ echo $? 1
950 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 09:22:21.87 .net] >>931 正しいけどスレチ man見ろ 見られないんなら https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/sips.1.html
951 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 09:41:41.92 .net] 要求満たしつつ個人的に好きなのは>>927
952 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 09:50:14.78 .net] 「標準出力」じゃないから要求満たしてないんじゃない?
953 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 10:04:09.41 .net] >>931 そういえばこういうスレもあったり 【Macintosh】MacでUNIX【Terminal】 echo.2ch.net/test/read.cgi/unix/1123501408/ mac板でよかった気もするけど OS XをUnixとして使ってる人の為のスレ 18 potato.2ch.net/test/read.cgi/mac/1462475819/
954 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 10:17:52.51 .net] >>932 あ、間違えた…こうしないと $ echo test | sed -n 'p;/a/H;${x;/./q0;q1}'
955 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 12:19:32.48 .net] echo test | awk '/a/{x=1}//END{exit !x}'
956 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 17:16:16.75 .net] $ echo test | awk '/a/{x=1}{print}END{exit !x}' じゃないの?
957 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 17:36:55.41 .net] $ echo test | grep -B10000 -A10000 a
958 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 17:38:08.89 .net] あああ、1行もマッチしないとダメだ
959 名前:名無しさん@お腹いっぱい。 [2017/03/01(水) 21:54:56.86 .net] >>933 >>936 スレチにもかかわらずありがとうございました!
960 名前:名無しさん@お腹いっぱい。 [2017/03/04(土) 09:13:31.42 .net] >>931 うちでもよく使うが、sips なんて他には無いからな for i *.jpg; do sips -Z 200 $i -s format jpeg --out Converted/$i; done ところでマカーな人はbash4入れてるんですかね。bash3なので、最近ココで出てくるreadarrayが使えない
961 名前:名無しさん@お腹いっぱい。 [2017/03/04(土) 09:17:20.48 .net] あー in が抜けてる for i in *.jpg ; do な
962 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/04(土) 10:32:40.92 .net] ImageMagickのconvertみたいなものか
963 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/04(土) 18:32:17.60 .net] >>943 >ところでマカーな人はbash4入れてるんですかね。 Homebrewで入れてそっち使うようにしてる
964 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/07(火) 19:02:41.56 .net] いつもシェルが使える環境ある? 自分は仕事ならcygwin(今は使ってない)、実機、仮想環境 プライベートならラズパイ、仮想環境かな
965 名前:名無しさん@お腹いっぱい。 [2017/03/07(火) 22:43:56.07 .net] Mac
966 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/07(火) 23:30:24.96 .net] 俺はスマホにzsh入れてるけど
967 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/08(水) 01:50:34.93 .net] >>947 SL-Zaurus(SL-C860)を今だに現役で使っているよ
968 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/09(木) 02:31:23.57 .net] そういうのって ただ書けるだけじゃなくて動かせたり 実際にその機械で便利に使えたりするのですか?
969 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/09(木) 17:50:34.83 .net] pythonの出力をシェルの変数にするにはどうやれできますか? x=$( python test.py ) はダメでした
970 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/09(木) 17:58:17.55 .net] $ cat test.py print("Hello world!") $ python test.py Hello world! $ x=$(python test.py) $ echo $x Hello world!
971 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/10(金) 09:16:11.80 .net] あれ?そうだよなと思ったら、pythonの文字コードの扱いが変でした シェルごめんよ
972 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/10(金) 13:07:41.33 .net] pythonのせいにするのもどうかと
973 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/10(金) 16:08:16.57 .net] pythonは文字コード周り落とし穴が多いすぎ pythonのせい
974 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/11(土) 22:32:29.75 .net] $@から$1を除いたものを関数に渡す方法を教えてくだしあ
975 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/11(土) 22:46:42.79 .net] shiftするしかないんじゃないかな 呼出し後に元に戻したいとするとsetかな
976 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/11(土) 23:06:24.73 .net] 呼び出し先でshiftすりゃいいじゃん
977 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/12(日) 00:12:25.14 .net] せやな!
978 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/12(日) 01:47:16.95 .net] >>957 bash なら "${@:2}" でええんちゃう
979 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/12(日) 04:14:35.39 .net] >>961 その発想もなかった パラメータとして渡すならこっちの方が分かりやすいな
980 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/12(日) 19:17:36.56 .net] ずっと、行の抜き出しはprcegrepを使ってたげど sed -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' で、やる方法とかであるんですか?
981 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/12(日) 20:09:10.06 .net] sed -n -e 's/foo/bar/g' -e '/hoge1/,/hoge2/p' じゃだめなの?
982 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/12(日) 20:49:35.74 .net] sed -ne '/hoge1/,/hoge2/{s/foo/bar/g;p;}' でもいけそう
983 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/13(月) 15:22:55.40 .net] sedスレあるのに忘れられてそうw
984 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/13(月) 17:19:42.05 .net] sed -e '/hoge1/,/hoge2/!d' -e 's/foo/bar/g'
985 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/13(月) 19:49:20.42 .net] ありがとうございます さらに速くなりました 一番最後の文字はコマンドというのを実感
986 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/13(月) 20:38:32.02 .net] sedは-n使ったら負け
987 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/15(水) 13:36:43.93 .net] なんで?
988 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/15(水) 13:37:42.13 .net] うるさい! 俺が負けだって言ったら負けなんだよ 大人しく言う事聞け
989 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/15(水) 13:43:38.36 .net] なんだそのダメな親みたいな言い分は
990 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/15(水) 13:45:42.22 .net] むしろジャイアンかな
991 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/15(水) 16:27:57.38 .net] pでプリントした行は元質問にもあるようにストリームを流れて行かない、 お漏らししたようなものだからね
992 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/15(水) 18:03:51.07 .net] sed だと、後方参照の時にバックスラッシュでエスケープしまくることになるのがどうにも… それで、いつの間にか perl を代わりに使うようになった。
993 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/15(水) 19:02:59.32 .net] sedでできることをperlでやるのは微妙に悔しいw
994 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/15(水) 20:28:01.98 .net] sed -e "s/微妙に/非常に/" >976
995 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/15(水) 20:45:20.13 .net] 入力なくね?
996 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/15(水) 20:58:18.06 .net] 考えすぎ
997 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/16(木) 12:44:27.48 .net] >>978 sed -e "s/微妙に/非常に/" <975 >976 ってやって空のファイルを作ってしまったあの頃...
998 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/16(木) 12:47:16.46 .net] 分からんでもない
999 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/16(木) 16:23:09.20 .net] 最初に head/tail、grep、sort 辺りを処理の都合上先にやることが多いので、 sed の入力にはパイプを使うことが多いかな。
1000 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/16(木) 22:48:37.43 .net] 日本語下手かw
1001 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/18(土) 22:25:35.75 .net] grepしてsedは素人
1002 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/18(土) 23:27:17.30 .net] なんで?
1003 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 00:04:19.09 .net] sedだけでできるからかと
1004 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 00:24:39.59 .net] grepである程度簡単なワードで絞ってからのほうが、複雑な置換は早そうだけど
1005 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 00:57:36.33 .net] 実験して見せられるまで性能に関する予想は信じない
1006 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 01:06:54.08 .net] まぁこじらせた人にてみればその手間は実に腹立つだろうな
1007 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 10:07:51.17 .net] 「ひとつのことを上手くやる」から考えると、grep してから sed の方がマッチしてそう
1008 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 11:41:33.99 .net] windowsのdos窓は使えるけれど、grep、sed、awk、perlなどはなし。当然他のスクリプト言語もなし。 さらに、新たなソフトのインスコはできない。 まあ、notepadでソースの編集はできる。 Eドライブには多くのフォルダがあって、中にはjpegのえろ画像が1テラ分てんこ盛り えろ画像だけを全部Dドライブにコピーしたい。 Eドライブのフォルダを見ると8階層ぐらいのフォルダもあって、とても手作業のコピペはムリ。 にゃんとか目的を達成する方法はないであろうか?! 各位のお知恵を拝借したい。
1009 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 13:00:13.49 .net] powershell でも使えばいいんじゃないかな
1010 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 14:12:15.82 .net] ここじゃなくてもっと他に聞くべき所があるだろうな
1011 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 20:18:27.47 .net] その環境的な制限がありつつ、エロ画像を扱うという状況が想像できないな 仕事でエロ画像を扱ってるか上司の個人環境とかかな
1012 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 20:31:39.22 .net] robocopyでコピーすれば良い
1013 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 20:55:37.07 .net] >>988 GNU grep + GNU awk の場合だけど、GNU awk単独よりも早いらしいぞ papiro.hatenablog.jp/entry/2015/05/19/003432
1014 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 22:03:55.18 .net] ドライブを別のPCからアクセス可能にしたらいいのに
1015 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 23:09:48.69 .net] >>996 timeの使い方を知らないって事を自慢してどうしたいんだ?
1016 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/19(日) 23:10:46.82 .net] エロ画像に寛容なUNIX板
1017 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/20(月) 10:44:19.74 .net] >>994 昔社内から netnews が見れてたので perl でスクリプト組んでエロ画像落としまくってたのをふと思い出した 当時は普通にFDに移動して持ち帰ってたけど
1018 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/20(月) 12:06:05.49 .net] 俺にはもうFDってのがもうすごいわ
1019 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています