1 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/05/03(木) 17:54:23.25 .net] シェルスクリプトの総合スレです。 □お約束 ・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。 bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。 FreeBSDユーザは/bin/shの正体がashなので注意。 ・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています 最新の仕様はこちらへ pubs.opengroup.org/onlinepubs/9699919799/ (左上の「Shell & Utilities」 から参照することができます。) ・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に逃げずにシェルスクリプトで処理するのが頭のいいやり方。 質問に対して問題が間違ってるといちゃもんをつけるのもやめましょう 前スレ シェルスクリプト総合 その26 https://mevius.5ch.net/test/read.cgi/unix/1489979246/
388 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:39:51.59 .net] >>371 いや、お前のこと。たぶん それは単に利用できそうなキーポイントでそれを利用してって話でしかないな たぶん、お前だろうが、得意げには仕様が絶対でどうであれ利用しちゃダメっていう変なヤツ
389 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:40:34.63 .net] >>375 俺は最初からCSV形式のデータを扱う話なんかしてないんですが?
390 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:42:26.75 .net] >>373 だいたいの普通の人はその処理方法を想像できる「だいたい」だし、想像=書けるってことなんだが お前が無闇に絡んでる&お前も具現生ゼロなのになんで謝らなきゃならんのねん
391 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:43:16.71 .net] >>376 だったら何を言いたいのかさっぱり。単に絡みたいだけか
392 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:45:59.83 .net] 今更なんの話かわかってませんっていうのかよw ↓この話だろ。「?」で聞いているところが質問だよ。それぐらいわかれアホ Excelから出力したCSVのように一行(?)の中に改行が含まれた データを扱うにはどうしたら良いでしょうか? もう少し具体的に書きます。 カンマ区切りのCSVデータだと仮定して、 シェルスクリプトの中に関数を一行ごとに呼び出し、 列を引数に対応させたいです。 例えば以下のような内容のファイルがあったとして a1,a2,a3,a4 b1,b2,b3,b4 c1,c2,c3,c4 syori "a1" "a2" "a3" "a4" syori "b1" "b2" "b3" "b4" syori "c1" "c2" "c3" "c4" という風にsyori関数を呼び出したいのです。 ただし実際には各項目(a1等の部分)にExcelから出力したデータのように 改行やカンマやダブルクォートやシングルクォートや空白が入ることがあるのです
393 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:50:13.04 .net] 何を言っているのだか。最初からCSV形式のデータ扱う話なんかしてないって言っておきながら、前レスではCVSのこと「だけ」のレスなことだから、そのCVSのことだけのことを何を言いたいのかだよ すでに書いたが、 データ | フィルタ | シェルスクリプト(関数なり) | フィルタ > データ でしかない。CVSはどうフィルタを書く上では具体的にそれしかでしかないからだけだな てか、その設問がそんなにきになるならお前が答えろよっw
394 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:54:06.97 .net] >>380 お前、実際に脳内でどう変換されるか考えてないだろ? 最初のフィルタで\nを全部改行コードにしてしまうと シェルスクリプトで区別できなくなるんだよ。
395 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:54:09.52 .net] >>380 × CVS ○ CSV まあ、たぶん他でもやってるだろうけど、すまんが、読み替えてください
396 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:55:28.23 .net] >>381 はあ???? 最初のフィルタでやることは改行コードを他の何かにするに決まってるだろ。なんで逆のことをするねん?さっぱりわからん
397 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:56:05.49 .net] ダメだ。異次元すぎる>>381 なんて言われると、バカだろとしかおもえん
398 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:57:43.94 .net] >>383 >改行コードを他の何かに 行端/レコードの終わりでない改行コードだけな。異次元な人なので、行端/レコードの終わりもと思われそうなので、いちおうw
399 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:01:19.44 .net] >>383 > 最初のフィルタでやることは改行コードを他の何かにするに決まってるだろ。 はい、言質を取りました
400 名前:386 mailto:sage [2018/06/10(日) 17:02:32.48 .net] 最
401 名前:堰@の フ ィ ル タ で デ ー タ に 含 ま れ る 改 行 コ ー ド を 他 の な に か に 変 換 す る な ら ば 今度はシェルスクリプトの関数に渡す前に 改行コードに戻さないといけません でないとこれが実現できません > syori "a1" "a2" "a3" "a4" > syori "b1" "b2" "b3" "b4" > syori "c1" "c2" "c3" "c4" > > という風にsyori関数を呼び出したいのです。 なので1データごとに改行コードをもとに戻す処理が必要になります。 すでに指摘してますがforkが発生し遅くなります。 [] [ここ壊れてます]
402 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:02:57.65 .net] 言質ww まあ、永遠に「否定だけ」してろ。もうオツムの具合わかったので、いいよ、どう思われようが
403 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:04:45.37 .net] >>385 それを実現するには1データずつ処理 しなければいけませんね。 デ ー タ 全 体 を 一 気 に 変 換 し よ う と す る と、 区別できないんで
404 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:05:24.55 .net] >>387 言い方が伝わらなかったようで、それは残念。データの改行を他の何かにな。そういう意味での>>386 なんだがなあ。まあ、言い方は悪かったかもしれない で、その指摘はなんらアホな指摘にしかなってません...もう、いいや、勝手にしてくれ
405 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:07:18.69 .net] >>388 「言質」しらんのか? そんなことじゃ不慮の事故で死んだ時困るぞ
406 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:07:51.94 .net] 多分\エスケープ云々は途中でなんらか処理をする時にRFC準拠のエスケープだと不都合だからじゃないかな 「Mika says "I'm Happy"」という文を一つのフィールドとして処理するとき RFC準拠だと 「Mika says ""I'm Happy""」になるけど、例えばこれをsed(1)やらawk(1)に通したいと思ったときは 「Mika says \"I'm Happy\"」という形にしたほうが処理しやすいでしょう? そういうことなんじゃないかな。
407 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:09:13.29 .net] >>389 シェルスクリプトに合わせた出力すればええねん
408 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:09:28.43 .net] >>390 だから デ ー タ の中の改 行を何かに変 換すると もとに戻す処 理を 一 行 一 行やらない といけないから 遅くなるって指摘をずーっと前にした その遅く なる理由を思 いつかなかった んだろ?
409 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:09:57.89 .net] >>393 >>392 でも言ってるよ
410 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:10:08.09 .net] つーかなんでさっきから、おっぱいがいっぱいとかで 書き込めないんだ?変な言葉書いてないだろ
411 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:17:21.14 .net] >>394 なんで一行一行なんだか。sedかtrでやりゃええことやん。それが一行一行か? 遅くなる遅くなるって遅くなるに決まってるやん。条件によりそれが妥当かどうかなんてなんでそう否定できるのか不思議でならない んな速度速度言うなら、Cなりでやればって言うw 遅い遅い言うてるけど、お前のもじゃどうすんの?ってのがさっぱりだな
412 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:18:30.12 .net] >>395 何を言いたのかわかりません
413 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:22:11.92 .net] >>392 > 「Mika says \"I'm Happy\"」という形にしたほうが処理しやすいでしょう? 今の話はもっと複雑で 「Mika says "I'm Happy 'couse picked up \10."」 という文だったらどうするか?って話なんだけどな。 いやわかるよ。どうすればいいかは。 問題はどうやってそれを実現するかって話 sedやawkに通す前に、変換すんの?
414 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:24:25.73 .net] >>399 最後にマジれすすると最初のフィルタはひとつのawkだけでできる。めーんどくさいけど
415 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:25:37.95 .net] >>397 sedやtrを使うと遅いfork、子プロセス生成が行われるからね データ量に比例してその回数が増えるやり方は駄目 1回か固定の数回でできるって言うなら話は別だけど
416 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:26:19.38 .net] >>400 最初だけできてもだめ駄目 これが実現できないと駄目 > syori "a1" "a2" "a3" "a4" > syori "b1" "b2" "b3" "b4" > syori "c1" "c2" "c3" "c4" > > という風にsyori
417 名前:関数を呼び出したいのです。 [] [ここ壊れてます]
418 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:39:23.49 .net] >>401 ,402 ダメダメ言ってないで、少しは考えろ。どっちも指摘がトンチンカン
419 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:48:10.30 .net] 思ったんだが 正規表現でやらずに有限状態機械を作って if ダブルクオートで始まらない コンマを探して終了 else ""でない"に続くコンマを探して終了 とすれば解決するんじゃないかな。少なくともRFC勧告に則ってるCSVは。
420 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 18:47:23.27 .net] どういうことだ
421 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 19:24:35.96 .net] 盛り上がりすぎだろwwww一日100近く伸びるってどんだけだwwww
422 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 20:05:44.39 .net] >>385 どうやってそれを区別するの?
423 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 20:07:14.87 .net] >>397 sedは改行コードで切れちゃうから、データ中の改行と行の区切りの区別をつけられないだろ
424 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 20:08:19.79 .net] >>404 CSVじゃないらしいので、"が閉じてる必要はないだろう?
425 名前:名無しさん@お腹いっぱい。 [2018/06/10(日) 20:27:13.49 .net] 【またカミカゼ暴走、群馬のスーパー、重傷9人】 放射能が原因だけど、国防上、トップシークレット? rosie.5ch.net/test/read.cgi/liveplus/1528627781/l50
426 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 20:50:13.84 .net] >>408 後処理のだぞ。そのデータ中の改行と行の区切りの区別をつけるために最初にータ中の改行を処理して、終わったらデータ中の改行を戻すって話だぞ? 少しは処理を想像そしてからなんか言ったら?すごい近視眼で明後日な文句言う前に
427 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 20:55:32.25 .net] >>409 CSVじゃないからあって言うのもいるけど、だったらデータはどう表すのだろうな データ中の改行と行の区切りの改行ってわからなくね?そのためにデータの始め終わりを表す何かが必要でそれが何かを言ってないんだったら、それを " として話をしてもおかしくはないってか、それしかないだろう なんでそんな近視眼なツッコミばかりやねん
428 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 20:56:07.54 .net] >>282 GNU awk の FPAT を使ってみる。一論理行のデータ数は4個で固定、という前提。 gawk -v RS='\0' -v FPAT='"(([^,\n]*)|(([^"]|\\\\"|\"\")*))"' \ 'function syori(v1,v2,v3,v4){ ## ここで何らかの処理 ## } { i=1 while(i<NF){ syori($(i++),$(i++),$(i++),$(i++)) } }' data.txt
429 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:03:59.12 .net] >>411 > 終わったらデータ中の改行を戻すって話だぞ? そのときに全データの改行を一度に戻すとデータの中の改行と データ区切りの改行の区別がつかなくなってしまうので、 1データずつ処理する=1行ずつsedなどを実行して遅くなるってことには 気づきましたか?
430 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:29:15.51 .net] >>411 データ中の改行とデータの区切りの改行はどう区別するんだよ。 同じコードだろ。しかもCSVじゃないんだろ?""でくくられてないんだぜ。
431 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:30:35.05 .net] >>412 だからさ、それ、sedで書いてみろよ。 絶対おまえにはかけないから。
432 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:42:11.32 .net] >>414-416 前処理と後処理を混同してあーだこーだ言われても。アホかっ
433 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:48:58.34 .net] >>417 言い訳はいいから書いてみろよ 前提条件は後出しでどんどん追加していいからw
434 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:49:09.09 .net] もうそろそろ、安全な文字に変換するというアプローチ (例えば>>289 のようなもの)が ムダで効率が悪いってことに気づきませんかね? もう一回煽りますね? >>323 正直、そういう解答を出してほしかったね。だせるかなーって思っていたけど シェルスクリプトでそういうデータを扱うなんておかしいとかのたまうばかり \x1c(ファイル分離)、\x1d(グループ分離)、\x1e(レコード分離)、\x1f(ユニット分離)は まさにそういう用途で使うもの。ここの連中の技術力の低下を感じる。
435 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:49:14.03 .net] もう一から説明しないと、情報処理の基本すらわかってないようなので バカバカ
436 名前:オすぎだけど、 ・改行がデータ中とレコードの終わりを示すのが混在している ・シェルスクリプトは基本、改行は改行でしかなく、データ中なんて知らんただの一行=レコードがブッタ切られる ・データ中の改行を他のナニかに変えれば、シェルスクリプトは一行=1レコードと認識する 前処理:データ中の改行だけをナニかに変える 本処理:改行が終端の一行=1レコードを処理する 後処理:ナニかに変えたのを改行に戻す たった、これだけのことをなぜ理解できないでトンチンカンなことばっかり言うのか。前処理をsedでできるなんて言ったことないぞ(できるかもだが、それはもっと面倒なの俺は考えんw)。後処理はsedでできることは馬鹿でもわかるだろうにぃぃぃ [] [ここ壊れてます]
437 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:50:39.10 .net] >>418 なんでそんなに出せ出せ言うのかww その頭の悪さというか未経験ぶりは、元の質問者か?と疑うぞ
438 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:50:59.99 .net] >>420 に補足すると、 (POSIXの範囲では)readは必ず改行コードでぶった切られる
439 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:53:10.76 .net] >>420 > 前処理:データ中の改行だけをナニかに変える > 本処理:改行が終端の一行=1レコードを処理する > 後処理:ナニかに変えたのを改行に戻す それは理解しているが、 1. 改行を何かに また 何かを改行にするには、どうやるのか? 2. 変える または 戻す 処理は1コマンドで実行できるのか? の答えが、1行ずつfork、execしなきゃならないから データ量に比例して遅くなるって話をしてる
440 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:55:00.78 .net] >>423 お前にじゃねえよ。お前は面倒なのでいいよw 遅い遅い言っていれば。1行ずつfork、execしなくてもいい方法もあるのにそこには考えが及ばないだろうし
441 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:55:49.68 .net] やたらスレが延びてるけど動くモノが出来上がる気配がない さっさと手を動かせよ
442 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:56:51.41 .net] >>419 「効率悪い」のに「そういう解答を出してほし」かったの? ちょっと意図が分かりかねるな
443 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:56:58.92 .net] > 1行ずつfork、execしなくてもいい方法もあるのに それがもっと遅くなる方法だったら笑うがねw
444 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:58:11.88 .net] >>426 お前馬鹿だわ U+001EやU+001Fを区切り文字として利用するんだから わざわざ改行コードなどを使われない文字に変換する必要ねーだろw
445 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:58:14.56 .net] 最初の質問者じゃなかった、何を目的に延々と絡んでるのか意味不明すぎ できないできないってばかりで
446 名前:426 mailto:sage [2018/06/10(日) 22:59:16.28 .net] あ、「安全な文字」っていうのは「通常の用途に使われるけれども日本語圏では滅多に使われない文字」の意味だったのね。 俺の解釈としてはUnicodeに収録されてる四種の区切り文字も「安全な文字」の類に入るからさ。 勘違いしてすまんな
447 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:59:31.44 .net] bash拡張は置換命令あるけど、 POSIXシェルの場合、外部コマンドを呼び出す以外に 置換命令はないんだよ。知ってる?
448 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:03:46.06 .net] >>430 > 俺の解釈としてはUnicodeに収録されてる四種の区切り文字も「安全な文字」の類に入るからさ。 まさに、ぽか〜んだわw 今度はお前にUTF-8の講釈をしないといかんのか? Unix系で簡単に使えるUnicodeはUTF-8しかないが (その他のエンコードは、文字の中にNULL文字が入るためシェルスクリプトで扱えない) そのUTF-8はASCII互換であるため、U+001EやU+001Fは ASCIIコードの0x1Eと0x1Fと全く同じであるため、 この文脈で、Unicodeかどうかなんて考える必要ないんだよ
449 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:05:23.11 .net] >>428 それは元々のデータがそうであるってこと?そんなんだったら別にこのスレで話題にするようなもんじゃないだろう いつからそんなのが前提になってるねんwなんかムチャクチャぶりが...ww
450 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:07:34.36 .net] >>430 なんか変に絡まれてるな 全く理解できるから気にすんなw
451 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:13:46.83 .net] >>433 > それは元々のデータがそうであるってこと? ちょっと違うな 「元々のデータがそうであってもよい」ってこと 元々のデータ形式について指定はないのだから (処理するには効率の悪い)CSVデータでも
452 名前:OKだし、 どんなデータでもよい そのデータ形式も含めて、 どうしたらいいでしょうか?という話だ [] [ここ壊れてます]
453 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:15:22.00 .net] >>435 データの改行とそうじゃない改行をどうすんの?どうやんの?
454 名前:435 mailto:sage [2018/06/10(日) 23:16:17.88 .net] まあ、そのデータもシェルスクリプトで生成はするんだけどな シェルスクリプト1 → 何らかのデータ形式 → シェルスクリプト2 「何らかのデータ形式」のデータの中に(データ区切りの改行とは別に) 1データの値として改行等が含まれることがあるのでどうすっかなーって話
455 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:16:40.28 .net] >>432 お前は>>323 を引用して > そういう解答を出してほしかった と言ってるんだろ? UnicodeはASCIIの範囲ではそれと互換なんだからUnicodeかそうじゃないかなんてどうでもいいだろうが お前が言ってるのは 「フィールド区切りにはカンマやアルメニア文字ではなくそれ専用に用意されている文字種を使いましょうね」 ってことだろ? なんか間違ってる? 「ポカーン」とするのもいいけれど、その前に文章をよく読め。脊髄反射でレスするな。
456 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:17:19.92 .net] >>436 > データの改行とそうじゃない改行をどうすんの?どうやんの? そこをどうするのが質問だって〜の > Excelから出力したCSVのように一行(?)の中に改行が含まれた > データを扱うにはどうしたら良いでしょうか? って書いてあるんだろ
457 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:18:11.57 .net] >>437 ん?変換するんじゃないの?変換するなら別にコードがどの値とかは関係ないだろうし??ん??
458 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:19:01.94 .net] >>438 > ってことだろ? なんか間違ってる? 間違ってるよ。 >>289 の案に対して置換すんなボケっていってる
459 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:19:23.68 .net] >>439 初期から出てるだろ
460 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:20:29.10 .net] >>440 だから 改行コードとか\を 安全な文字に置換すんなってw
461 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:21:35.91 .net] また変換すんな君が出てるし。代替案を何も言わずに遅い遅いだけな。お前が遅々として進まんわっ
462 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:21:59.29 .net] >>442 > 初期から出てるだろ 残念 ながら出てない。 \ を安全 な文字に変 換ってことは つまりデータを 変 換すると言ってる わけだが、 データは 変換(置換)するななってのが 俺の煽ってる内容
463 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:22:01.17 .net] >>435 CSVのRFCはフィールド・レコード区切りにU+001F/Eを使えなんて一言も言ってねぇぞ つーかそれこそコンマと改行が区切り文字ですよと言ってる。 そういうデータを扱うことを議論してる時に、横から偉そうな態度で 「データ区切り専用の文字があるんだから元のデータにそれを使うべき」 なんて言われてもなぁ……。 あなたは論理的思考に弱いようだからもう一度同じことを違う言い方で繰り返すと、 「前提を無視した発言は控えてください」 分かった?
464 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:22:47.84 .net] >>445 お前は何も進まないので、もう以後無視します
465 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:23:45.97 .net] >>444 代替案は >>323 ででている 俺が煽ってる内容は↓これな。おまいらに>>323 のような代替案をだせよって言ってる 326 自分:名無しさん@お腹いっぱい。[sage] 投稿日:2018/06/10(日) 08:14:53.42 >>323 正直、そういう解答を出してほしかったね。だせるかなーって思っていたけど シェルスクリプトでそういうデータを扱うなんておかしいとかのたまうばかり \x1c(ファイル分離)、\x1d(グループ分離)、\x1e(レコード分離)、\x1f(ユニット分離)は まさにそういう用途で使うもの。ここの連中の技術力の低下を感じる。
466 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:24:21.02 .net] >>446 > CSVのRFCはフィールド・レコード区切りにU+001F/Eを使えなんて一言も言ってねぇぞ この期に及んでなんでまだCSVの話してんの? CSVじゃないですって何度も言ってるよね?
467 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:24:54.06 .net] >>448 いやいやいやいやwwダメだこりゃ なんら代替案にもなってないのだけど。なんかやけに繰り返すなwやっぱり遅々として進まんな。じゃ、お元気で
468 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:26:44.47 .net] >>449 お前さ&も一人さ、わざとめちゃくちゃなレスをして楽しんでるだけだろ? もうそうとしか思えない
469 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:28:24.22 .net] >>450 お前本当に馬鹿だなw 1データの中に改行コードが含まれてるなら、 (データの中に含まれる改行コードではなく) データの区切りの方を改行コードではなく、 そのために作られた制御文字を使うって話で 代替案になってるだろ 頭硬すぎw なんで1データを必ず改行コード区切りにしないといけないのか シェルスクリプトは1行ずつ読み
470 名前:謔驕iのが得意)ってだけで データの区切りまで改行コード区切りにする必要はない つーかこの制御文字がなぜ用意されているかに気づかんの? いやはや、ここまで言わんと理解できないのか [] [ここ壊れてます]
471 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:28:31.79 .net] >>424 だからやり方書いてみろよ。 出来もしないくせに煽るからバカだと言われてることに気づけよいい加減w
472 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:31:18.96 .net] なんでこんなに荒れてんのよ
473 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:31:40.43 .net] >>452 >>422 なんですけど?
474 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:33:06.87 .net] >>455 >>422 を書いたのも俺なんですけど?w readが改行コードでぶった切られるからって、 データ区切りとする必要はありませんよねぇ(にやにや
475 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:33:38.89 .net] >>453 なんでそんな高圧な奴に「教えて」あげなきゃならんねんwアホか 下手くそな煽りだな
476 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:35:13.32 .net] >>454 > なんでこんなに荒れてんのよ 俺様がたどり着いたゴールにおまいらが どこまでたどり着けるかを試していたらこうなった
477 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:36:47.05 .net] >>456 ん?よくわからんな。にやけぶりがw>>422 はトラップすぎだなw
478 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:40:01.41 .net] >>459 トラップでも何でもないよ。 readの-dでできると言われたとき、 それbash拡張だって指摘するのが面倒だから 先に注意してあげただけ
479 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:43:44.04 .net] >>460 あー、そういうことか。いちおう試してみていたんだけどね。できんの? 後処理が必要ないのでそれができるのなら確かにそうだな
480 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 23:49:44.49 .net] >>460 ,461 & 遅い君 確かにできるね。っかしいなあw これができての、後処理が無駄という話なら全然それに異存はないな。変に絡んでいたらすまんかった
481 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 00:03:29.86 .net] >>461 ん? ようやく理解したのか? 煽りフェーズが終わると途端につまらなくなるなw 普通にできるし、俺はすでに近い形のものを実装している 自分の用途に合わせて最適化してるんで、汎用的にはなってないがな (その後に>>282 を質問という形でおまいらに問題を出したのだよ) 最初はデータの方をエスケープしてたんだが目に見えて遅くなってな エスケープの方式をシェルビルトインのprintfでアンエスケープ できるようにもしたが大した効果はなかった。 そこで制御文字を眺めていたら、その用途ピッタリの文字を見つけたのだよ データとしては、0x1F(US: Unit Separator)を各項目の区切り(CSVでいうカンマ相当) 0x1Eを(RS: Record Separator)を名前の通り、データ区切りとして使ってる USの方はIFSを使うことでPOSIX準拠でforなどで処理することができる さらに0x1D(GS: Group Separotor)を使えば階層構造があるデータを取り扱えるだろうし 0x1C(FS: File Separator)を使えば標準入力で複数のファイルを渡すようなこともできるだろう 便利だがそれに気づいたのは>>323 が最初。 おまいらは最初、シェルスクリプトで扱うもんじゃないとか言っていた >>323 のあともその使い道に気づかないでいた。まだまだだなw
482 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 00:07:10.97 .net] キモ偉そう
483 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 00:15:39.42 .net] おまけで、一つだけ>>431 に補足しておいてやろう (もちろん>>431 を書いたのも俺だけどなw) > bash拡張は置換命令あるけど、 > POSIXシェルの場合、外部コマンドを呼び出す以外に > 置換命令はないんだよ。知ってる? 置換命令は無いが、fork相当のことをせずにprintfも使わずに エスケープされた文字をアンエスケープする方法はある 例えばエスケープの方式がよくある\記号を使うやり方だとして、 IFS='\' (エスケープが必要だったかも知れない)でデータをsplitして caseで n
484 名前:*) なら改行を表すエスケープ文字と解釈して 一文字目のnを ${STRING#?} で削除しつつ、 改行コードを一文字目に加えるという方法だ これはこれで遅くなるので却下したんだがなw [] [ここ壊れてます]
485 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 00:18:20.26 .net] 性格が歪んでるな。これ以後の質問者とかどうするとか思わないのだろうな
486 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 00:19:46.66 .net] 相手にするだけ時間の無駄だと思うが…
487 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 00:20:59.85 .net] >>466 もう人は俺がたどり着いた答えとは別の もっといい案が出るのではないかと思って 先入観を与えないために、あえて俺がたどり着いた答えを出さずに 質問の形でかいた。 しかし、俺がたどり着いた答えに辿り着く前に 諦める奴らばかりだった。情けないなw
488 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 00:21:27.45 .net] × もう人は俺がたどり ○ もう一つは俺がたどり
489 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 00:22:08.47 .net] >>467 確かに。性格が歪んでるのを自覚してないようで
490 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 00:26:05.87 .net] >>470 俺tueee系の主人公は、大抵性格が歪んでるものだよw 大好物です(笑)
491 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 00:27:33.78 .net] 某原理主義者のニオイがする
492 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 00:29:42.66 .net] >>472 アレと一緒にするのはマジで止めてくれ 発想が似ていたとしてもセンスがダサすぎる。 ショッカーとかアホかと
493 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 01:13:05.93 .net] たしかにリッチー大佐は酷い人格だけど間違ったことは言ってねえし しかも有用なツールを作ってから、ああいう毒を吐いてる。 上で喚いてるなんの解決策も出さず人を否定し馬鹿にすることしかできない人間と比較するのは失礼千万
494 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 01:13:17.92 .net] 誰かちょっと流れをまとめてくれ 誰が何を言いたいのかさっぱりわからん
495 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 01:21:58.95 .net] >>475 現実世界で死んだ ↓ 異世界で俺tueeeやってる
496 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 01:22:56.01 .net] >>474 > しかも有用なツールを作って なんかあったっけ? 使ったこと無いな
497 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 01:42:28.78 .net] 見た目でわかる文字列への置き換え派ですが、いにしえのエスケープコードの流用はいいアイデアだと思いました。
498 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 01:43:29.77 .net] >>463 後で使うかもだからブログに簡単にまとめとけw 荒らした罰な
499 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 02:22:50.42 .net] >>479 俺は書かないよ。だけどこのスレを参考にして誰かが書くかもしれないね。 その場合、このスレを参考にしましたって書いても書かなっくてもいいよ 他の誰かがこことは別に思いついて書くかもしれないけどw
500 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 02:45:32.35 .net] スレチの自覚が無いとか、本当バカ
501 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 02:49:17.37 .net] シェルスクリプトの話題なのにスレチってどういうこと?
502 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 02:57:45.51 .net] >>482 俺はすべて分かってた。 ヒントだけ出してやったんだからありがたくいただけ。 これがスレ違い以外の何物だと...
503 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 03:07:25.04 .net] ん? シェルスクリプト総合でしょ? 質問スレじゃないし シェルスクリプトの話題で楽しめばいいじゃん?
504 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 03:30:27.23 .net] そろそろ仲直りしろよお前ら
505 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 03:44:51.73 .net] 確かにそれ専用の文字があるならそれを使ったほうがいいね。 some data␟other data␟42␞ some data␟other data␟42␞ ↑こういうの。 既にそういうフォーマットがあってもいいと思うけどざっと検索したところでは見付からない。 なにか不都合でもあるのか、単純にU+001E/Fの知名度が低すぎるのか。 ところでPOSIX awkはRsやFSに任意の文字って指定できたっけ。GNU awkではできたんだけれど。
506 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 04:48:35.52 .net] ");
//]]>-->507 名前:86" rel="noopener noreferrer" target="_blank">>>486 https://www.freebsd.org/cgi/man.cgi?query=awk&sektion=1 あるし、STANDARDSはもとより本文でも拡張したよってのは無いからPOSIXとしてあるんじゃね [] [ここ壊れてます]
508 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 04:51:18.43 .net] pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html こっちかこれか。あるね
509 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 06:07:49.77 .net] つまらない点だから指摘していなかったが、 この話で U+ という表記はだめだぞ U+ というのはUnicodeの話で+の後の16進数は 文字集合におけるコードポイントだ U+001Eは符号方式がUTF-8だと0x1Eになるが、 UTF-16だと 0x00 0x1E(ビッグエンディアンの場合) もしくは 0x1E 0x00 (リトルエンディアンの場合) となる U+ だとUnicodeという文字集合を表すことになるが 符号方式がUTF-8だと決めつけることはできない
510 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 09:45:54.74 .net] あほか 最初に本データの形式仕様から制定してもいいという条件を書かないから みんな処理元のデータ形式は弄れない前提で答えてるんやん 説明不足なのに自分だけ神視点でお題気取りか 死ぬほど痛々しいわ
511 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 10:09:41.26 .net] ようやく気づいたわ スレを盛り上げたかったんやな
512 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 10:26:48.37 .net] 俺が主役が強すぎて贔屓目にみてもだな
513 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 10:40:14.39 .net] 日本語で
514 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 11:22:26.93 .net] >>490 > 最初に本データの形式仕様から制定してもいいという条件を書かないから > みんな処理元のデータ形式は弄れない前提で答えてるんやん データを加工(エスケープ)していいと書いてないのに勝手に加工してるやん? だから変えたら駄目って書いてないなら変えていいって前提で 答えてるでしょ?
515 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 11:29:27.18 .net] スレは十分伸びたからもうええやろ 何と戦ってるんや
516 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 11:43:52.49 .net] 自作自演ではないか
517 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 13:33:30.08 .net] 結局特に解決や参考になるような話は出なかったね まあ今更CSVで新ネタも出ないだろう
518 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 13:38:57.30 .net] まだお前CSVって言ってんのか? そんなにCSVの話だと勘違いしていたことが ショックだったのか?
519 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 13:40:15.04 .net] もう引っ張るなや子供かよ
520 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 13:42:59.29 .net] 元データの上書きとバッファにコピーしての加工を同列に語っちゃうんだすげえな ていうか元データの仕様からやっていいなら最初から↓で 改行的な区切り文字を許さない仕様にすればいいだけじゃね > syori "a1" "a2" "a3" "a4" > syori "b1" "b2" "b3" "b4" > syori "c1" "c2" "c3" "c4"
521 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 13:44:44.59 .net] さんざん偉そうだが全くコードを出さないのでお察しでもういいだろう
522 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 14:09:05.24 .net] >>500 特に指定がない部分に関しては、 自由に変えていいと言ったの 改行が含まれてるとか、カンマやダブルクォートが含まれてるとかは 指定されているので、そこは変えたら駄目 当たり前だろ、ガキみたいな言い訳すんな
523 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 14:10:12.79 .net] > 自由に変えていいと言ったの 変えていいと言うか、もともと指定がないから 変えるのではなくどんなものでもOKってことだが
524 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 14:11:48.62 .net] >>502 これには同意する 変えてもいい/変えるべきなのは区切り文字。
525 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 15:25:33.31 .net] もういい加減コードで語れ どれほど偉そうにしてもコードがアレだったらアレだし、偉そうにしてなくても素晴らしいコードはそれだけで尊敬されるだろう。後者が断然かっこいいのに
526 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 16:00:25.01 .net] 意訳 参考にしたいのでコード教えてください
527 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 16:04:12.37 .net] いや、全然。使わないもの。それも勝手なお題のだし まあ勉強のためというのでなら、それはあるかもだが、どんなんだかだな。そもそもコードはそういうものだろうし、教えてやるって立場なんだしなw
528 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 16:50:37.25 .net] >>506 言ってやるなw
529 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 17:10:06.71 .net] 結局一行も書けてない
530 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 17:15:08.96 .net] ようやくこのスレも静かになるな…
531 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 17:51:10.54 .net] そう思うやろ? 次のネタ準備中やで
532 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 17:56:57.42 .net] なにこいつ
533 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 18:49:50.82 .net] こいつもしかしてこの間の「標準入力と標準エラー出力を同時に操作したい」のアホか。
534 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 18:55:33.57 .net] これ以上くだらん問答するならコテハンつけてくれ
535 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 03:51:38.30 .net] >>513 これって解決したんだっけ
536 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 06:46:40.08 .net] 今時Python使わないでわざわざシェル使う理由って?
537 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 08:01:38.11 .net] Pythonを使う理由が特にないから
538 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 08:37:27.40 .net] pythonであるコマンドを実行して それを他のコマンドに流すみたいな ことが簡単にできたらね
539 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 10:53:58.20 .net] 普通にできるぞ
540 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 11:54:38.75 .net] >>519 じゃあ、これ相当のことをやってみて ここまで簡潔に書ける言語をシェルスクリプト以外しらない シェルスクリプトは(特定の用途に対して)最善だから使ってるんだよ
541 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 11:55:23.82 .net] >>519 じゃあ、これ相当のことをやってみて cat /etc/password | grep /bin/bash | cut -d: -f1 (なんかブロックされたからパスワードを大文字にしてる) ここまで簡潔に書ける言語をシェルスクリプト以外しらない シェルスクリプトは(特定の用途に対して)最善だから使ってるんだよ
542 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:05:07.20 .net] >>520 これってどれ? ここ>>282 -以降にある記述だとてんで仕様になってないから、 仕事レベルとまではいかないまでも、 学生演習の問題として出せる程度には仕様をまとめて書いて。 あとPythonに限らずスクリプト言語はどれでも シェルにパイプ繋いで任意のシェルコマンドが実行できるから、 シェルにできてPythonでできないことなんてないよ。 勿論シェルでできないことも普通にできるし。
543 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:10:52.66 .net] 大文字w
544 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:12:33.73 .net] >>522 これは、>>521 に訂正しておいた。見れてるやろ? >>523 多分 /etc/p@ssw0rd がブロックされるんだと思う
545 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:13:42.07 .net] >>522 > シェルにできてPythonでできないことなんてないよ。 あるよ。 (特定の用途に対して)シェルスクリプトほどに "簡潔にできない"
546 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:14:36.84 .net] そりゃまあ、冗長でいいなら、アセンブラでなんでも作れますわなw 作れるか作れないかの話なんかしてない
547 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:34:38.85 .net] >>521 そういうのはperlやawk向きだな。 perl -F: -anle 'print $F[0] if $F[6] eq "/bin/bash"' /etc/passwd awk -F: '$7=="/bin/bash" {print $1}' /etc/passwd pythonはもっと汎用言語よりだからずっと長くなる。 こんな感じか? f = open("/etc/passwd", "r"); for l in f : c = l[:-1].split(":") if c[6] == "/bin/bash" : print(c[0]) ふだんpython書いてないからよくわからん。 専用言語がそれに向いた用途なら、汎用言語よりもコンパクトに書けるのは当たり前。 でなきゃ専用言語の存在価値がない。 でもたとえば改行もデータの一部として扱いたいみたいに向いてない用途だと 書きやすさも長さも逆転したりする。 ひとつの言語にこだわるんじゃなくて、用途に応じて言語を選択するのが UNIX流だよ。
548 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:43:39.68 .net] import csv [p[0] for p in csv.reader(open('/etc/pas@wd'), delimiter=':') if p[-1] == '/bin/bash']
549 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:44:23.95 .net] >>395 >>396 多分\エスケープ云々は途中でなんらか処理をする時にRFC準拠のエスケープだと不都合だからじゃないかな 「Mika says "I'm Happy"」という文を一つのフィールドとして処理するとき RFC準拠だと 「Mika says ""I'm Happy""」になるけど、例えばこれをsed(1)やらawk(1)に通したいと思ったときは 「Mika says \"I'm Happy\"」という形にしたほうが処理しやすいでしょう? そういうことなんじゃないかな。
550 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 13:05:44.44 .net] >>528 やっぱりそのわかりにくいのが限界ですよね
551 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 13:48:35.13 .net] >>527 > でもたとえば改行もデータの一部として扱いたいみたいに向いてない用途だと > 書きやすさも長さも逆転したりする。 まだこだわってんのかw 中身がない反論(?)は惨めなだけやで?
552 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 13:51:53.23 .net] 老害じじいかよ
553 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 13:55:48.66 .net] その話続けたければいい加減名前つけろ NGするから
554 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 13:57:32.52 .net] だな。なんで、へー、そう書けるんだとかならずに、あれが駄目これが駄目ってばっかなんかな。会話として見ててくもそ面白くない、いらいらすんなw
555 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 14:08:40.82 .net] >>527 > pythonはもっと汎用言語よりだからずっと長くなる。 汎用言語だから長くなるんじゃなくて、 Pythonには向かない作業だから長くなるっていうのが正解
556 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 18:38:07.06 .net] >>529 RFC準拠ってなんの話してるの? CSV形式ではないと明確に言われてるのに まだCSV形式にこだわってるの?
557 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 18:40:26.84 .net] よほどお前がこだわってるな。てかキモいわ
558 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 18:46:13.86 .net] 俺はレスしただけだけど? >>529 が書かなければ、この話をすることもなかった
559 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 18:49:00.93 .net] 新参なので>>513 ってなんのこっちゃと、ちょっと前スレの当該箇所を流し読みしてはいた。ふーんてな で、>>538 となんか同じようなのがあったようなww
560 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 18:51:25.65 .net] お前の落ち度だってのはわかった
561 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 18:52:26.75 .net] >>540 >>538 のな?w
562 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:00:28.24 .net] 自分のことだって自覚してるからレスしたんだろ?
563 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:03:32.17 .net] へ? さすが、自分のことだけはよくわかってるな。それはお前がそうだからだろう 何を言っているのかわからん、>>538 によく似合うレスだなっていう
564 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:12:05.82 .net] どうも同一人物みたいだが(>>539 に対しての?>>540 あたりからも)、だとしたら>>513 はすげえなっということでw
565 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:16:54.17 .net] 自作自演
566 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:18:03.28 .net] いつまでも俺のこと話題にしつづけてくれ! まで読んだ 自意識過剰すぎてきもい
567 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:21:22.12 .net] >>546 いやあ、本人はそうは思ってなさそうだけど?自己顕示欲は満々みたいだけど まあ、話題にしている>>513 や俺などに対する当てつけ的になら、なんかすまん
568 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:23:17.23 .net] 自作自演2
569 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:27:22.55 .net] なにか気に触るようだな、繰り返しとはwなにが気に触ってるのかさっぱりだな
570 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:37:04.17 .net] これ以上そのクソを撒き散らすなら大量のコピペでスレ埋め尽くすぞ
571 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:39:25.91 .net] 問題定義をはっきりせずに、回答に対して一方的にダメ出ししてるから当たり前だろ。 >>521 だって awk や perl の解は >>521 とほぼ同程度の記述量なのに (GECOS に /bin/bash とか書いてあっても誤動作しないという点ではむしろ優れてる) 「シェルスクリプト以外しらない」とかいう視野の狭さを撤回しないし。 ほぼすべてのプログラマーにとってシェルスクリプトってのは 第二・第三言語であって、シェルスクリプトが最適な用途なら使うけど、 そうじゃない場合があることは当然知ってて、 こんな風
572 名前:に威張って使うものじゃないんだよ。 インフラ担当ならシェルスクリプトが第一言語ってのもありうるけど、 そういう場合にはこんなに威張らないよなあ。 [] [ここ壊れてます]
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:40:09.57 .net] なんでやねんっwヤツより悪質/ヤツ以下になってどうするねん まさかお前(てか、ここ一連の)はヤツじゃないよな?
574 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:42:22.47 .net] この板ってワッチョイは使えるんだっけ? 次回からいれるか
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:42:45.45 .net] >>551 たぶん、前スレの最初の方で言っていた人のヤツの性質があたり的な 真っ当なやりとりはできなさそうな上に逆に私怨を持ちやすいタイプだから、そういう真っ当なのをちゃんと聞くかどうか怪しいな
576 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 21:34:04.16 .net] シェルスクリプトのデバグに関する質問です eval XXX というコマンドで実行されるコマンドを確かめるには evalをechoに置き換えて echo XXX とやればいいですかね。 両者の間に、実行されるか表示されるだけかの違い以外の差異はありますか? 例えばある種の展開が行われないとか。
577 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 22:22:58.09 .net] eval を echo に書き換えるという方法でデバッグはできるんだけど、 a='echo $PATH' という状況で echo $a →「echo $PATH」と表示する eval $a →「echo /bin:/usr/bin:/usr/local」を実行する みたいな違いはある。 eval は引数文字列に含まれるシェルのメタキャラクタを再評価するけど、 eval 以外の普通のコマンドではそういうことはないので。 あとデバッグは sh -x スクリプト名(ないしスクリプト先頭で「set -x」)して 実行状況を標準エラーに表示させるってやり方もお勧め。
578 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 22:40:48.60 .net] >>556 ありがとうございます。 シングルクオートでも展開されるのは盲点でした。 sh -x のほうが確実ですね…… 訊いてよかったです。
579 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 22:45:26.76 .net] >>557 ちなみにevalで再評価されてるシェルのメタキャラクタは シングルクオートじゃなくて $PATH の $ の方ね。 シングルクオートは代入時に字句解釈されるだけで、 $a の中身には残ってないので。
580 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:19:14.33 .net] >>551 > >>521 だって awk や perl の解は >>521 とほぼ同程度の記述量なのに > (GECOS に /bin/bash とか書いてあっても誤動作しないという点ではむしろ優れてる) いや、そんなことドヤ顔で言われましても・・・ 4文字追加で終わりだし cat /etc/password | grep ':/bin/bash$' | cut -d: -f1 減らそうと思えば減らせるし grep ':/bin/bash$' /etc/password | cut -d: -f1 あれあれ、じゃあこれ↑は、"grep向き" の問題ってことですかね?w 俺が言ってるシェルスクリプト向きの問題っていうのは 既存のコマンドの実行と組み合わせが簡単に実行できるってことだよ
581 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:34:25.44 .net] >>551 > ほぼすべてのプログラマーにとってシェルスクリプトってのは > 第二・第三言語であって、シェルスクリプトが最適な用途なら使うけど、 はぁ?第二とか第三とか何いってんだか。 適切な言語を使うだけの話だろ シェルスクリプトじゃなくてPythonを使えばいいと言われたから、 "シャルスクリプトで普段やってること" = >>521 で書いたような 外部コマンドの実行とそれをパイプでつないで簡単に処理することが 簡単にできるって例に出したのに、 お前は「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」 というお題を、awkやperlに置き換えるしpythonで全く違うコードに書き換えるしw 今からでも良いんやで、pythonで 「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」 を書いてみなよ。 いいか? catコマンドとgrepコマンドとcutコマンドを ちゃんと呼び出すんだぞ。今度は間違えるなよw ほんとシェルスクリプトがなにが得意なのか全くわかってねーわw
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:41:12.01 .net] な?www
583 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:43:50.91 .net] な?問題を誤解して的はずれなレスを出すんやで 話にならんわ
584 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:46:19.16 .net] >>5
585 名前:59 > あれあれ、じゃあこれ↑は、"grep向き" の問題ってことですかね?w 勿論そうだよ。 正規表現で書ける条件だったから、grepでうまくいった。 世の中には正規表現で書けない条件とかも当然あって、そういう場合 perlやawkなら自明にかけるけど、スクリプト言語使わずに シェルだけで書こうとすると面倒だったりする。 > 俺が言ってるシェルスクリプト向きの問題っていうのは > 既存のコマンドの実行と組み合わせが簡単に実行できるってことだよ それに反対してる人は誰もいないと思うよ。 それこそがシェルが特化している応用分野なわけで。 しかし>>521 はそれを示す例題としてはよろしくない。 他の言語ならコマンドの組み合わせとかせずに容易に解ける問題だからね。 [] [ここ壊れてます]
586 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:47:07.64 .net] お前に言ってない。さすがだなwwいつもその調子。問題出すのもその調子だからなあw
587 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:48:09.54 .net] >>563 真面目だなっ!w ある意味尊敬(馬鹿にはしてない)
588 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 00:13:02.23 .net] >>563 お前が問題を理解できなかっただけのこと >>516 > 今時Python使わないでわざわざシェル使う理由って? 俺はこれ↑に対して、シェルスクリプトの方が適した問題だからって コマンドをつなげて実行できるのが簡単だと↓以下のように>>518 でレスしたわけだが > pythonであるコマンドを実行して > それを他のコマンドに流すみたいな > ことが簡単にできたらね 結局、だから俺が最初から言ってるように、シェルスクリプトの方が 適してるんだろ? ならもうお前口塞げ、混ぜっ返してるだけでなにも役に立ってない
589 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 00:20:43.06 .net] >>563 あとなやっぱりわかってないわお前 grepもperlもawkもコマンドなんだよ。 シェルスクリプトっていうのは、そのコマンドを "組み合わせる"のが得意って話だ。 だからgrepもperlもawkもシェルスクリプトのパワーの一つなんだよ。 もちそんそれだけじゃない。便利な多くのコマンドが 用意されてる。それらはシェルスクリプトの関数であると言える pythonで、せっかく用意されたこれらのコマンドを使わないで python用ライブラリとか使って冗長にコードを書くならそれは無駄だし コマンドを使う場合でも、シェルスクリプトほど簡潔にできない。 シェルスクリプト(grep, perl, awkを組み合わせること) VS python(grep, perl, awkコマンドを使う もしくは 使わない) って話であって、perlの方が〜awkの方が〜っていうのは シェルスクリプトの方がシンプルに書けることの反論になってないんだよ。
590 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 00:23:56.99 .net] なんか変な人が居着いちゃった
591 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 00:24:50.12 .net] >>568 前からやで。ずっといついている ずっと前から俺はいる
592 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:18:17.08 .net] IDもワッチョイもないからオレオレ言われてもレスの時系列で追えないし面倒だわ まあキチガイ君がお題の条件だしが決定的に出来ない子なのはよく分かる >「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」 >521読んで道程まで完全に一致させろいう意図だと理解できたやつがいたら天才だわ 普段から人と会話してなさそう
593 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:27:58.12 .net] >>521 grep /bin/bash </etc/password | cut -d: -f1
594 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:32:08.64 .net] >>570 >>518 を読んでいればわかるだろ > pythonであるコマンドを実行して > それを他のコマンドに流すみたいな > ことが簡単にできたらね
595 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:38:12.94 .net] 普段から人と会話してなさそうが如実
596 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:40:17.86 .net] そういう悪口しか言えなくなったらおしまい
597 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:55:40.86 .net] そろそろ名前つけてくれませんかね
598 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 02:14:43.53 .net] POSIX shで絶対値をなるべく簡単に扱いたいんだけどいい方法ありますかね exprコマンドにabsとかがあればよかったんだけども
599 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 02:31:02.70 .net] >>571 入力側のリダイレクトって読みにくいので、自分もcatで書くかも
600 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 03:18:10.80 .net] >>575 いやでござるwww >>576 マイナスだけでいいなら echo ${a#-} プラスも考慮するなら echo $((${a#-}))
601 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 03:20:58.92 .net] お前じゃないよ自意識過剰
602 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 05:05:47.59 .net] >>576 こんなのどうだろう $(((0 < a)?a:a * -1)) (aに値を代入)
603 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 05:23:49.94 .net] なんで俺が短く書いたのに、わざわざ冗長なコード書くかね? しかも三項演算子を使ってもっと短くかけるし $(((0 < a)?a:a * -1)) $((a>0?a:-a)) $((${a#-})) ${a#-}
604 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 06:09:33.52 .net] >>581 おまえのコードは本質的じゃない 彼が望むのは「絶対値」であって「マイナスを除いたもの」ではない OK? 分かったらひっこんでろ低能 もしこれに反論があったら「分かってない」ことになるからな?
605 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 06:26:16.58 .net] >>582 わかってないのはお前では? つーか、その反論されたら困るからって 「反論したら俺のかちー」みたいな言い方やめた方がいいよ 恥ずかしいw 俺は反論したから、さあ、次はお前が反論する番だ
606 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 06:48:30.93 .net] なんで阿呆が二人に増えるんだよ
607 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:16:13.42 .net] もう消えろお前ら このスレに相応しくない なんだよ最近のこのスレの雰囲気最悪じゃねーか 長文ダラダラ返信長々と最後にレスしたほうが勝ちみたいな古い争いしやがってからに
608 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:17:03.30 .net] ヒント:一人二役
609 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:17:43.72 .net] >>577 簡潔に書きたいというお題じゃなかったのか
610 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:31:11.05 .net] >>577 <をどこに書いてもいいことはあまり知られていない。 </etc/password grep /bin/bash | cut -d: -f1
611 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:38:00.62 .net] いや読みにくいって話であってだな
612 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:45:03.32 .net] >>577 そりゃあんたの頭のレベルが低いからだと思うよ
613 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:58:22.24 .net] >583の脳内では全く論がない噛みつくだけの行為も反「論」になるらしい これもう日本語が分かってないってレベルじゃないな ただの小学生だわ
614 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 09:13:46.26 .net] 小学生なら簡単に構ってちゃんになりそうなのはわかるな。もう構うなw
615 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 09:49:23.22 .net] GNU grep なら $ grep -Po '^.+?(?=:.+:/bin/bash$)' /etc/passwd
616 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 09:56:16.86 .net] >>591 論じゃなければ、何か言い返せよって言うだけの話だけど? ほんと本質じゃないどうでもいい所にしか反応しないのなw
617 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 10:00:11.88 .net] さいごにレスしたぼくがしょうりなんだ!
618 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 10:17:30.52 .net] >>595 違うと思うぞw でもあんたはそう思ったから、書き込んだんだよね
619 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 10:21:55.43 .net] なんにでもレスするやつ
620 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 10:56:37.40 .net] レスしなきゃ負けると信じてるみたいだからしょうがないね
621 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 11:34:13.17 .net] $ cat <<. <<. 1AAA . 2BBB . とやると 2BBB とだけ出力されるんだけど、これどういう理屈か分かる? 標準入力ってヒアドキュメントでさえ上書きされる仕様なの?
622 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 11:42:05.35 .net] strace で見ると 2BBB だけ read してるな(1AAA は無視)。
623 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 12:01:06.03 .net] >>598 なるほど。だから「さいごに〜」とか話に全く関係ないことを言い出したのねw >>599 ヒアドキュメントって標準入力として読み取るものでしょ? そこは何らおかしくない cat < /proc/loadavg < /proc/uptime ってかいて、/proc/uptime からしか読み込まないのと一緒だと思うよ
624 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 12:22:00.85 .net] >>595 0x03e8 ばんさえとれればあなたのしょうりです。
625 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 16:23:41.49 .net] >>601 なるほどね $ somecmd < a.file < b.file ↑これでb.fileしか読み込まれないのも(やったことなかったから)知らなかった。 ありがとう
626 名前: [] [ここ壊れてます]
627 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 16:51:47.47 .net] リダイレクトは引数じゃないからね 実質これと同じわけだし exec </proc/loadavg exec </proc/uptime cat
628 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 17:56:57.18 .net] >>604 なるほど、納得
629 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 18:05:22.98 .net] >>593 を〜、grep -oで切り出しできるのね 久々にこのスレで参考になりました
630 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 18:44:51.04 .net] なんか嫌らしい感じ
631 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 18:54:32.62 .net] コロンを含むディレクトリを$PATHに登録した場合ってどういう挙動になるんだろう
632 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 20:11:28.93 .net] コロンがセパレータなのでそこで分かれる
633 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 20:52:33.17 .net] findでexecオプションの引数のあとにシェルに渡すパイプを付けるとexecに渡したコマンドがシグナル13パイプ破壊を出してくるんですけど どうにかなりませんかね。 今のところ/dev/nullに標準エラー出力を捨てることで解決してるんですけども。 find . -exec basename \{\} \; | head ↑これで再現するはずです。 解決するときはできればPOSIXの範囲でやりたいです。findのGNU拡張で解決できるならそれでもいいんですが メインPCがOS Xなので、最低でもBSD拡張、さらに言えばPOSIXに限定してほしいです すいません。
634 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 21:25:25.31 .net] macOSだが再現しないなあ
635 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:13:02.03 .net] FreeBSDは再現しない。 CentOSは再現した。 対策は後で考える。
636 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:18:48.70 .net] なにか最近やけに POSIX にこだわってる奴が多いが同一人物か?
637 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:31:37.92 .net] >>613 単純にPOSIXの価値というかシェルスクリプト全体の有用性が見直されているだけでは たとえば*BSDのスレでGNUライセンスに拘ったレスが連続するのはおかしいが BSDライセンスを重視するスレがたくさんあっても別におかしくはないだろう
638 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:32:42.05 .net] パイプでなのでfindとhead が同時にプロセスとして存在 findが標準出力に出力するとパイプを通して/パイプとして繋がってるheadの標準入力に入力として headが目的を達して終了=パイプが無くなる、だがしかし、findは出力を続けようとし出力しようとしたらパイプが壊れてるうううっ 普通何もしなくても、パイプが損失したらSIGPIPEが飛んできて(強制)終了するんだけど(フィルタとしてもなUNIX的な望ましいデフォルト動作)、なぜかSIGPIPE無視して続けようという謎動作? findとheadが直接は繋がっていなくてかもしれんが。パイプの送出側がSIGPIPEを無視って謎動作なのは変わらないかな
639 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:38:09.62 .net] >>615 basenameが標準出力につながってるだけだから、findはwriteしないのでSIGPIPEを受け取らないよ。 basenameが事故死したのをfindが報告してるだけ。 というわけで、basenameが事故死したらfindを続けるのをやめるようにしてみた。 この方が無駄にbasenameを続けるよりよかろう。 find /var \( -exec basename {} \; -o -quit \) | head ただし、最初の事故死についてだけはfindがおせっかいに報告してしまう。 あとはまかせた。
640 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:41:30.04 .net] >>616 そのへんが実装によりちょっと違うってとこなのかなあ。出る出ないは
641 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:48:28.09 .net] >>613 自分側で「なにか違って」動かなかったらめんどくさいってだけじゃないの、単に
642 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:49:53.08 .net] >>610
643 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:50:38.44 .net] CentOS$ strings /bin/find | grep -i signal signal %s terminated by signal %d FreeBSD$ strings /
644 名前:usr/bin/find | grep -i signal なんもなし 以上、findのおせっかい度の差。 [] [ここ壊れてます]
645 名前:619 mailto:sage [2018/06/14(木) 22:51:53.48 .net] すまん間違えて送信しちゃった $ find /etc -exec sh -c 'basename {}' \; | head これでどうだろう。 -quitオプションはPOSIXの範疇ではないけどこれはPOSIXに準拠してる ちなみに>>610 のコマンドラインはDebian GNU/Linuxのfind 4.7で再現した。
646 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:55:42.54 .net] >>619 ,620 なーるほどっ ww なるほどっ、なっとく
647 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:57:07.67 .net] >>621 ん? それSIGPIPEは回避できるけど別の問題が発生しない? 「basename: 余分な演算子 XXX」←みたいに怒られるんだが あと $ find /etc -exec sh -c 'echo {}' \; | head ↑これをやるとやっぱりSIGPIPEが出されるようだ。
648 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 00:01:24.90 .net] >>613 どこかの先生が課題にそう書いてるんだろう。 ちゃんと調べないで持ってくるバカ学生が多いんじゃないの。
649 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 00:03:14.56 .net] >>610 >findでexecオプションの引数のあとにシェルに渡すパイプを付けるとexecに渡したコマンドがシグナル13パイプ破壊を出してくるんですけど この動作は、POSIX的にはどうなの? まずいというならPOSIX的にどうまずいの?
650 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 00:08:14.14 .net] find . -exec basename \{\} \; | { head; cat >/dev/null; }
651 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 00:14:45.23 .net] >>626 どういう仕組みなん?
652 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 00:39:45.42 .net] -execにこだわりがないのであれば、 find . -print0 | xargs -0 -L 1 basename | head 今度はxargsがお節介メッセージ出すけど、findはheadが終了したら終了する
653 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 01:01:37.95 .net] xargs(1)に-0オプションはない(POSIX厨)
654 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 02:22:41.09 .net] findにも-print0は無いけどな。BSDにもあるからいいんじゃね
655 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 08:25:40.13 .net] find . -print | xargs -n1 basename 2>/dev/null | head
656 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 20:58:34.50 .net] execオプションはやめといたほうがいいね
657 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 21:35:58.85 .net] 元々何が気に入らなかったのかイマイチわからない
658 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 22:35:17.99 .net] POSIX的に気に入らない
659 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 23:11:38.57 .net] POSIX POSIXうっせー
660 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 23:13:05.02 .net] >>634 こういうPOSIXにやたらこだわってるのって なにかの精神障碍があるんじゃないの? 一度そういう病院で診てもらえ。
661 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 00:18:50.65 .net] findutilsのソース取って来てあのメッセージ出ないようにパッチして使っちゃえよもう git.savannah.gnu.org/cgit/findutils.git/tree/find/exec.c?h=v4.6.0#n354
662 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 00:33:50.14 .net] >>616 find . -exec sh -c 'trap "exit" pipe; basename {}' \; -o -quit | head
663 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 01:07:40.99 .net] >>638 試してないけど、trapせずにbasenameのあとにexitするだけでだめなん?
664 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 08:33:03.61 .net] find /etc -exec basename \{\} \; |& head これでエラーも出ず余計な出力も引っ掛らなかったんだけど 理屈が分からん |& は標準出力と標準エラー出力両方を通すはずなので SIGPIPEのエラーが出力されるはずだがgrepしても見当らない
665 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 10:03:37.06 .net] find自身がSIGPIPEで終了してんじゃない 実行時間も短くなってるし
666 名前:640 mailto:sage [2018/06/16(土) 10:31:40.54 .net] >>641 すいません。それどうやって確かめたらいいですかね
667 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 10:39:12.35 .net] Linux なら strace で見ると分かる $ strace -f bash -c 'find /etc -exec basename \{\} \; |& head'
668 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 11:10:29.82 .net] stderrが(標準出力)のパイプになりの、そのパイプが無くなり、find自身がエラーメッセージをそれに書き込もうとしてSIGPIPEを受けるってとこか find . -exec basename {} \; -o -print | head としても同じように終わるってとこで
669 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 12:55:30.00 .net] >>644 ほほう
670 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 13:02:42.26 .net] >>640 だれかこれをmacOSでやってくれない? あれは確かSIGPIPEを受けとらないから GNU findと違ってこの書き方だと不具合が起こりそうだ
671 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 13:15:44.53 .net] >>646 >あれは確かSIGPIPEを受けとらない いや、それはないだろう。単に>>621 の違いじゃないの macOS Sierra標準のbashはまだ |& をサポートしてないヤツみたいなので(??)、2>&1 | としたが同じくfindは終わる
672 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 13:16:47.78 .net] >>647 × >>621 ○ >>620
673 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 13:26:10.67 .net] ああ、|& は元々はzshのなのか(?) macOS Sierra標準のzshでは/でも、>>640 のままで特に何も問題なく終わった
674 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 14:10:29.68 .net] >>649 |&はcsh由来。zshはパクっただけ。
675 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 17:20:45.43 .net] |&はPOSIXなの?
676 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 17:32:28.45 .net] やかましいわっw、おばかさん
677 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 17:58:54.17 .net] それはPOSIXですか?POSIXじゃないのですか?
678 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 18:00:34.28 .net] ところで俺のPOSIXを見てくれ。こいつをどう思う?
679 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 18:14:03.11 .net] すごく、標準的です
680 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 18:39:24.01 .net] Is it POSIX?
681 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 18:58:44.20 .net] No, it is Apple
682 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 19:58:16.75 .net] まあPOSIXじゃないので質問者の要請は満たしてないよね 俺が提案するとしたらexecは使わず find . | xargs -I @ basename @ | head ↑これ。
683 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 20:06:12.48 .net] それじゃあかんだろ。xargsのオプションが足りない
684 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 20:09:55.36 .net] いいのか。すまん
685 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 20:37:42.14 .net] 俺がやるなら xargs -I には {} を 指定するがな @というのは見たことがない 社内規約かなにかかな?
686 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 20:51:48.06 .net] >>656-657 定冠詞がないよ
687 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 20:56:44.95 .net] この問題って本質的には、 find は /etc の下の全部のファイル(10以上)を返すが、 head は 10行で打ち切ってしまうという矛盾にある。 そこは目をつぶるって方針なんだから、最初に書いてあったstderrを捨てるって 方法で正しいと思うよ
688 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 20:59:20.95 .net] >>658 xargs: basename: terminated by signal 13 って表示されちゃう >>661 俺は @ しか使ったことがない
689 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 21:30:02.51 .net] >>662 バッカこれはどっちも形容詞だよ だからネタとして成立してんじゃん
690 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 22:02:52.02 .net] >>662 マジレスアッポー
691 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 23:19:14.74 .net] コマンドの重複を数える(つまり$PATHに登録され実行可能なファイルの重複を列挙する)一番短い方法をってなんでしょう。ただし確実に動作しかつ可搬であることが条件です。 僕が考えたのは $ echo $PATH | tr ':' '\n' | xargs -I @ find @ \( -type f -a -perm -+x \) -exec basename \{\} \; | sort | uniq -c です。
692 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 23:24:18.70 .net] basenameにしたらファイル名じゃなくなるじゃん
693 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 23:36:17.54 .net] >>668 ? もしかして-type fが見えてないだけ?
694 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 04:18:06.91 .net] パスの中に空白が入ってる or PATHの中身が多すぎたらおそらくアウト ( IFS=:; find $PATH -type f -a -perm -+x ) | sed 's|.*/||g' | sort | uniq -c ( IFS=:; for i in $PATH; do find "$i" -type f -a -perm -+x; done ) | sed 's|.*/||g' | sort | uniq -c
695 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 08:19:10.40 .net] できればsedでやりたいことなんですが aaa << bbb >> もしくは aaa <<bbb>>
696 名前:ニいうようなファイルがあったとしてaaaの次行から「>>」を含む行までを読み出したいです。 (aaaが存在する行はすでに具体的な数値で判明しています; ここでは42行目とします) 特に二番目の場合には sed -n -e '43,/>>/p'とやると43行目に「>>」があるのに見つけてくれません。 なにか手助けをおねがいします。 [] [ここ壊れてます]
697 名前:名無しさん@お腹いっぱい。 [2018/06/17(日) 09:24:18.61 .net] >>671 sed -e '42,/>>/!d' -e 42d
698 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 12:39:57.71 .net] あれんじ sed -e '43,$!d;/>>/q'
699 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 14:39:23.57 .net] 標準規約に従いましょう GNU Coding Standards https://www.gnu.org/prep/standards/standards.html
700 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 14:43:41.30 .net] 言いたいことがわからない
701 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 16:46:05.17 .net] 言っても無駄なんだろうが、そんなファイルを処理しようってのが間違ってると思う
702 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 19:18:43.97 .net] >>676 処理したい時はどうすればいいですかね。
703 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 19:23:59.83 .net] POSIXで。
704 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 19:24:04.76 .net] Windowsだと%TEMP%で一時ファイルの格納場所が指定できますがUnixではそういう環境変数はないのですか? $TEMPとか
705 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 19:27:47.07 .net] >>669 basenameって拡張子消えるよね?
706 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 19:28:33.83 .net] >>679 誰に対して使用して欲しいのか分からないな
707 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 19:40:16.19 .net] >>680 消せと言えばね
708 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 19:43:21.15 .net] >>679 TMPDIR かな /tmp が古からあるからな。TMPDIRが設定されていたら(OSとして初期設定されているか、なんらかの形でTMPDIR設定されてたら)TMPDIR。設定されてなかったら普通に /tmp かな
709 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 19:45:54.91 .net] >>679 ,683 >TMPDIRが設定されていたら〜 って、TMPDIRを意識していればね。当然のように、んなの知らん、/tmp 一択ってのも普通にある
710 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 20:07:00.69 .net] >>681 一応、TMPDIRはPOSIX標準環境変数らしい。 tmpfile(3)やmkstem(3)なんぞはPOSIXとしてはTMPDIRを参照しろとはなってないらしい が、実装するならTMPDIR参照するだろうし、してる。ちゃんとtmpfile(3)やmkstem(3)やmktemp(1)などを使っていれば、誰でもなんだろうけどね
711 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 20:58:57.79 .net] >>685 それってPOSIX shellの話なの?
712 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 21:18:57.03 .net] シェルじゃなくてシステム
713 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 21:19:01.81 .net] >>686 何を聞いてるのかわからん
714 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 21:19:45.24 .net] 俺…POSIXだったのか…?
715 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 21:59:03.03 .net] 関数のなかってalias使えないっぽいね somefnc() { alias AAA='pwd' AAA } # → AAA: command not found
716 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/17(日) 23:04:57.63 .net] 6.6 Aliases ... Aliases are expanded when a function definition is read, not when the function is executed, because a function definition is itself a compound command. As a consequence, aliases defined in a function are not available until after that function is executed. somefnc () { alias AAA='pwd'; } somefnc AAA otherfnc () { AAA; } otherfnc
717 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 03:25:19.77 .net] aaa="cat /etc/*release | grep -E '^NAME='" echo ${aaa} 上を実行すると、 $ ./hoge.sh cat /etc/os-release | grep -E '^NAME=' こうなってしまいます。 cat 〜の結果をaaaに入れる方法教えて欲しいです。
718 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 03:35:59.29 .net] 自己レス evalで出来ました
719 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 07:01:
] [ここ壊れてます]
720 名前:47.43 .net mailto: >>690 関数の中でaliasが使えないと言うよりか、 関数の定義が実行された時点でのalias情報が反映される。 つまりシェルスクリプトを上から実行していって、 somefunc()関数定義文が見つかると、 この関数 "全体" に対して、alias展開処理が行われてから関数が定義される だからsomefunc()関数定義文よりも前にaliasが設定されていれば そのとおりに展開されるが、関数の中はすでにalias展開済みなので もう処理されない [] [ここ壊れてます]
721 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 07:11:33.65 .net] ちなみにこれだとうまくいく somefnc() { alias AAA='pwd' eval AAA } evalは実行する段階でalias展開されるようだ evalで実行する文は、実行段階ならないと わからないのだから当然ではあるが
722 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 08:15:26.93 .net] >>695 すげぇ!ありがとう ちなみに今さっきの地震に伴う停電のせいでパソコンがおしゃかになったっぽいので 試せないw
723 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 09:27:00.32 .net] なるほど。大阪だけにおしゃかになったわけだな
724 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 09:36:50.09 .net] は?
725 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 09:40:49.35 .net] うちの研究室もすごいことになった。 ところで前々から関数のなかで alias が展開されないのを歯痒くおもっていたので eval 使えばいいというのは非常に有益な Tips だわ。
726 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 10:09:39.01 .net] あまりにもPOSIX、POSIXしつこいから、POSIXでNGにしたったわ
727 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 10:13:14.51 .net] PSOIXでいこう
728 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 10:15:28.33 .net] P0SIX(いやがらせ)
729 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 10:20:36.56 .net] P051X
730 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 10:23:39.71 .net] ぽじっくす
731 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/18(月) 17:53:22.33 .net] >>699 makefile とか crontab でもエイリアス無視だけど evalならいけるのかな 試してみよう
732 名前:名無しさん@お腹いっぱい。 [2018/06/18(月) 20:47:12.93 .net] oldcar-purchase.com/
733 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/19(火) 04:10:29.03 .net] 関数の中、もしくはmakefileやcrontabで aliasを使いたい状況っていうのがよくわからないが どんなときに使うの? aliasではなく変数とかじゃ駄目なの?
734 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/19(火) 04:54:42.99 .net] 自分は引数を取らず固定されたフィルタはaliasで定義することにしている 例えばeraelコマンド(ERAce Empty Line)。 alias erael='sed -e "/^$/d"' ただ大抵はシェルスクリプトの先頭に記述するのであなたの言う通り関数の中で宣言する意図は分からん。
735 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/19(火) 05:16:14.31 .net] つづりeraseやで
736 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/19(火) 05:53:06.78 .net] >>708 使い方としてはわかったけど、 ぶっちゃけそれだって関数作ればいいだけなんだよなぁ erase() { sed -e "/^$/d" "$@"; }
737 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/19(火) 06:00:33.38 .net] >>710 いやそうなんだけど 「引数を取らず固定されたフィルタ」 ↑これを実現するのに関数は大仰な気がしてきてな。
738 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/19(火) 06:15:17.17 .net] 関数とエイリアスの使い分けに意味はあるの? 使用メモリ?性能?
739 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/19(火) 06:31:47.07 .net] >>712 いやまったく大差ない。 ただただaliasというだけ 分かってると思うが俺は別に「使え!」なんて言ってないから そんな気にする必要ないぜ。 個人的な問題だから。
740 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/19(火) 07:04:14.39 .net] みんな知ってるかい? 関数の中で関数を定義できるってことを foo() { bar() { echo bar } } foo bar
741 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/19(火) 07:22:52.49 .net] 全角字下げやめてくれ コピペで試せん
742 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/19(火) 07:27:20.24 .net] foo() { bar() { echo bar } } foo bar
743 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/19(火) 08:03:40.13 .net] 5chに貼られたソースコードをコピペするってwセキュリティ意識ゼロかよw 絶対こんなの相手に発注したく
744 名前:ヒぇww [] [ここ壊れてます]
745 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/19(火) 13:37:44.18 .net] アクalias飲みてぇ
746 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/19(火) 18:46:56.46 .net] >>717 たかが数行のソースが危険かどうかもわからん奴には発注したくないな
747 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/20(水) 02:21:04.28 .net] somefunc() { echo "${1:='need a arg'}" } のような関数を作ったのですが引数なしで起動すると -bash: $1: この方法で割当はできません と怒られるのですがどうすればいいですかね。
748 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/20(水) 03:20:33.94 .net] somefunc() { arg="$1" echo "${arg:='need a arg'}" }
749 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/20(水) 03:34:23.66 .net] >>721 ありがとうございます! できました! すいませんが、もしよければなぜ直接引数に:=変数置換を適用できないのか教えていただけないでしょうか。 例えば${1:-aaa}などはごく普通にできるので、不思議です。
750 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/20(水) 05:12:57.83 .net] bash: $1: この方法で割当はできません bash: $1: cannot assign in this way 代入文を使って位置パラメータへの代入を行うことはできません。 Positional parameters may not be assigned to with assignment statements.
751 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/20(水) 06:53:00.27 .net] すべての言語で引数に対する代入は禁止されればいいのに
752 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/20(水) 07:57:59.37 .net] 引数に代入できる言語って例えば?
753 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/20(水) 08:43:18.41 .net] ば…bat
754 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/20(水) 10:20:31.09 .net] それ言語?
755 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/20(水) 11:38:13.87 .net] Cだとargvは一度どこかに書き出さないと置換とか操作できないよね。
756 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/20(水) 12:45:30.95 .net] >>728 別に直接書き換えもできる。constを「自分で」付ければできないようにもできるけど Cで書き換えるのは危険すぎるだけだな。配列/文字列等のメモリ境界保護なんてないから。OSによってはargvがメモリ保護域にあるのもあるだろけど
757 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/20(水) 12:48:49.26 .net] >>728 argv の指す先は変更できないけど argv 自体は変更し放題
758 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/20(水) 12:56:35.45 .net] >>730 argvの指す先(char **argv/*argv[]の中身/値でいいの?)も変更できるよ argv = myArgv; argv[1] = myArg; argv[1][0] = myChar; どれもできる
759 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/20(水) 15:25:21.41 .net] ああそうか。728だけど,すごいまぬけな発言をしてたわ。 Cでのargvはあくまで約束事としての変数名だからなんの保護・制約も掛けられてないのか。 一方シェルスクリプトでは引数変数を明確に他と区別できるようになってる。 ただし半保護状態。
760 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/21(木) 05:57:06.66 .net] script(1)コマンドかそれと似たCLI記録ツールで、 ~/.profile(←ここに~/.bashrcなどを読みこむコマンドが書いてある)を読み込ませたいのですがどうすればいいですかね。
761 名前:名無しさん@お腹いっぱい。 [2018/06/21(木) 06:34:26.14 .net] >>733 #!/bin/sh exec /bin/bash --init-file "$HOME"/.profile "$@" こういうスクリプトを書く ファイル名を mysh でホームに保存したとして、次のようにして script に使わせる env SHELL="$HOME"/mysh script
762 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/21(木) 08:42:01.32 .net] >>733 surce ~/.profile ではだめなの?
763 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/21(木) 09:33:47.42 .net] ✕ surce △ source ◯ .
764 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/21(木) 09:34:32.68 .net] 1行目は×な。
765 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/21(木) 09:45:45.51 .net] bashの場合、インタラクティブでログインシェルでなければ.bashrcを読むはずだけど、それじゃ足らんの?
766 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/21(木) 15:08:24.51 .net] >>734 ありがとうございます! できました!
767 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/21(木) 15:25:56.39 .net] 733です。すいません。もうひとつ訊きたいことがあるのですが script(1)実行中はCO
768 名前:LUMNS=80,LINES=25に固定したいです。 しかしそのmyshに export COLUMNS=80 などと記述しても反映されません。 ~/.profileなどでは特にCOLUMNSの値を設定している訳ではないです。 これどうすればいいですかね [] [ここ壊れてます]
769 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/21(木) 17:29:46.87 .net] stty cols 80 rows 25 なんかLINESもってとこから、ターミナルのウィンドウサイズなんぞもってぽいけど、それは個々のターミナルアプリ次第&一方通行っぽい(COLUMNSの値を設定している訳ではないのはそゆこと)けど
770 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/22(金) 07:10:56.19 .net] シェルスクリプトってeval使えばメタプログラミングっぽいことできるよね。 例えば引数をfor文で増加さしてeval arg$i=\$$iみたいな。
771 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/22(金) 08:39:33.18 .net] >>742 evalはインタープリタそのものだからね
772 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/22(金) 08:56:09.19 .net] evalは一番最初に現れたプリミティブなメタプログラミング機能だからまあ当然だな。 ちな最初にeval を発明した言語はLisp な。
773 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/22(金) 15:33:32.30 .net] eval is evilを発明したのはLISPか
774 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/23(土) 05:10:08.14 .net] eval is evilはJSでは
775 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/23(土) 10:04:22.34 .net] evalは強力すぎて危険だからどの言語でも濫用はevil扱いだと思う。 REPLみたいにevalがぴったりした応用もあるから禁止はできんし、 シェルスクリプトは比較的ミニマムな言語だからevalしか解がないケースも多いけど。
776 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/23(土) 11:22:58.87 .net] 「ミニマルな言語」って他には例えばなに? それLLとはまた違うの? いや煽ってるんではなくて単純に訊ねたい。
777 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/23(土) 11:42:26.04 .net] コマンド置換の入れ子の限界を試そうと思って $ i=1; while true; do echo $i; eval $( (yes '$(echo' | head -n $i | tr -d '\n'); (yes ')' | head -n $i | tr -d '\n') ); : $((i++)); done ↑こんなコードを実行してみた。 100あたりから面白いくらいに遅くなっていく しかし500くらいまで試したけど表示は続き、限界を探る目的は達成できなかった。
778 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/23(土) 13:19:07.15 .net] ミニマムはすき
779 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/23(土) 14:46:23.27 .net] eval関連なんですがaliasの出力結果をevalする方法を教えてください。 具体的にはroot権限でlsがしたいのですが、その時通常のlsと同じオプションを付けて実行したいのです。 ですので(通常の状態での)alias lsの結果を変数かなにかに格納してそれを実行しようと思ったのですが良い方法が思い付きません。 そのコマンド自体もaliasにしたい(具体的にはls@rootコマンドとしてalias ls@root=の形で定義したい)です。 どうかよろしくお願いします。
780 名前:752 mailto:sage [2018/06/23(土) 14:52:25.95 .net] すいません。一番上の行は無視してください。 evalでできるかなと考えてたプロセスが漏れてしまっただけです。 多分このアプローチは間違っているので無視してください。
781 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/23(土) 19:13:35.47 .net] >>750 偽物臭強いけどなw ただ身長が小さいだけじゃないかっつー 本物双子のやつは結構好き
782 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/23(土) 19:18:52.33 .net] >>751 普通にぐぐれ
783 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/24(日) 00:39:25.04 .net] >>751 aliasでなくてsudo使って関数定義するのがいいと思うけどだめなの?
784 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/24(日) 07:01:44.49 .net] LS=`alias ls` じゃだめなの?
785 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/24(日) 09:15:58.74 .net] >>753 詳しく
786 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/24(日) 10:16:34.78 .net] /tmpでいいじゃん
787 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/24(日) 22:14:10.69 .net] >>748 データ型が少ないって意味でTclとかかな。 でもTclには文字列型の他に連想配列があるのよね。 POSIX shellの範囲内だと引数配列を除けばホントに文字列しかないので。
788 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 16:44:06.12 .net]
789 名前:アんにちは ド素人です。 VPSの立ち上げ時にスタートアップシェルスクリプトを使って効率化したいです。 とあるwgetを叩くと、user名とパスワード、パスワードの再入力を求められるのですが、 このuser名、パスワードをシェルスクリプトで入力させるにはどうしたらよいでしょうか。 [] [ここ壊れてます]
790 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 17:04:46.28 .net] wgetでgithub上にある既存のシェルスクリプトを叩くと ユーザー名とパスワードを聞かれるのですが、 その入力を自動化したいという意味です。 github上のシェルスクリプトは変更できません・・・
791 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 17:16:35.68 .net] wgetでシェルスクリプト叩くてどういう意味? 出力をシェルに流し込むって事?
792 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 17:25:22.13 .net] なんかパスワード 自動入力 あたりでggったらすぐ出てきそうやな
793 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 17:29:12.30 .net] >>761 相手側の要求に従ったuser名パスワードの提供方法をwgetでするとよいでしょう どのVPS?どういう相手側のサービス?その使ったというはGitHubのどれ? https://gist.github.com/kevinold/216077/4d725773b46a2ac32c0f5a689339d3da004d7f5d これでいいのか?適当にぐぐったらVPSだしwget使ってるしw >>762 まあ、なんかセットアップでコマンド叩いたりするのだろう。そういえばwgetで認証できなかったら再入力なんて求められないよな...??あったかな??
794 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 17:55:18.59 .net] wgetは--userと--passwordでユーザー名とパスワードを指定できるはずだけど
795 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 18:04:40.17 .net] httpのBASIC認証やftpのならそれで問題はないよね。普通にBASIC認証でそのオプションを教えてっていうことだけかな
796 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 18:12:51.93 .net] manくらい嫁カス案件
797 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 19:26:12.11 .net] wgetが書かれたシェルスクリプトを呼び出すシェルスクリプトを書きたいように見えるが… まあ質問が日本語的に不自由すぎるね
798 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 20:51:22.89 .net] wgetがBASIC認証を要求してくるんですが、 パスワードをシェルスクリプトに書きたくないです。 別ファイルに生パスワードを書くのも嫌です。 かといって毎回入力するのは面倒です。 ssh-agent利用して最初に一回いれて覚えさせるだけで あとはパスワードなしにできたりしないですかね?
799 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 21:11:05.80 .net] ssh-agent/ssh-keychainはどうなんだろ、無理じゃねと思うが、keyring(Linux/BSD)/Keychain Access(macOS)を使えばふつーにできるだろうな
800 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 21:17:58.64 .net] 最初の質問と内容か変わってるし、パスワード書きたくないらしいので、役にたたないだろうけど、俺ならexpectでスクリプト書く
801 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 21:25:16.46 .net] 最初の質問者と別人じゃね?レスの書き方から同一人物にも見えるけどw
802 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 22:26:52.66 .net] まあなんか知らんがもっとドキュメントに当たったらって気がする
803 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/27(水) 00:54:07.84 .net] jqについて教えてください。 https://ideone.com/SZlhR4 やり方が分からないので、以下のようにとりあえすyenを指定したら並び順が思ったようになりませんでした。 $ cat kudamono.json | jq -r '.genre_name, .list[].name, .list[].hinshu_list[].yen' くだもの りんご みかん いちご 180 500 200 50 63 300 null null null 続く
804 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/27(水) 00:54:30.18 .net] 以下のように標準出力に出す方法を教えてください。 くだもの りんご ふじ 180 サンふじ 500 つがる 200 みかん きんかん 50 いよかん 63 せとみ 300 いちご あまおう null ひのしずく null とちおとめ null
805 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/27(水) 01:36:22.49 .net] >>772 別の人ですよー。
806 名前:竄閧スいことを思い出したので、書いてみたの♪ [] [ここ壊れてます]
807 名前:名無しさん@お腹いっぱい。 [2018/06/27(水) 03:13:21.88 .net] >>774-775 . | .genre_name, (.list[] | .name, (.hinshu_list[] | .hinshu, .yen)) https://stedolan.github.io/jq/tutorial/ https://stedolan.github.io/jq/manual/ 見つつ https://jqplay.org で試した jq初めての俺でもすぐできたじゃねーか まじめにやれ
808 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/27(水) 07:24:03.91 .net] >>777 どうもありがとうございます! カッコを使うといいんですね
809 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/28(木) 16:24:57.87 .net] dashで動くシェルスクリプトってPOSIX準拠のシェルスクリプトだと思って問題ない?
810 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/28(木) 17:11:46.11 .net] そいつから呼ぶコマンドもPOSIXじゃないとな。
811 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/29(金) 00:29:23.70 .net] dashはPOSIX準拠である だからPOSIX準拠のコードはdashで期待どおり動く だけどdash専用のコードはPOSIX準拠ではない
812 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/29(金) 01:00:02.18 .net] kshのposixモードがかな。POSIX仕様の元となった自負があるだろうからposixモードもちゃんとしてそう
813 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/30(土) 22:10:41.02 .net] あの,すごく初歩的なことだと思うのですが, Excelなどのように隣のセルの値を参照して現在のセルの値を計算するという手法を シェルスクリプトで行うにはどうすればいいでしょうか。 具体的には,参照した値をaとして,(1-sin^2(a))/2^aを計算したいです。 Excelだと,A列に値を入力していき,B1セルに「(1-(SIN(A1))^2)/2^A1」と入力した後ドラッグすればいいのですが……。
814 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/30(土) 22:52:18.06 .net] a=値 echo "(1-s($a)^2)/2^$a" | bc -l とか?
815 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/01(日) 20:12:26.02 .net] cat <<. | xargs -I @ echo (1-s(@)^2)/2^@ | bc -l 3 44 -6 . こんなのでどう?
816 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:00:06.28 .net] cat と echo と print の違いが分からない あと、print と printfの違いも 教えて
817 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:00:38.56 .net] less と moreも
818 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:07:32.55 .net] manすりゃいいんじゃないの
819 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:15:59.23 .net] cat と echo,printf は全然違う。主に出力するソースが(ゆえにパイプで入力受ける受けないとなり?) echo と printf は、書式が指定できるかというか、コマンド由来とC由来かな printって?awk内のならprintはechoのようなもんかな(Ubuntuには print がコマンドであるけど Mailcap とかナニそれな普通じゃないのだな)
820 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:19:26.23 .net] ググったらechoは改行されてしまうけどprintfは自分で\nしないと改行されないってあった
821 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:23:46.00 .net] それらの違いが分からないのは使ってないからだろ 使ってないなら知る必要もないし知ろうとも思わない 自作自演かな?
822 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:26:27.85 .net] >>791 宿題
823 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:27:23.78 .net] コマンド由来とC由来ゆうてるやんw printf(1) は printf(3) と同じと思えば不思議ではないだろう。echo も -n で改行しないようにもできるけどイレギュラー、コマンド由来だからな >>791 まあ、なんの目的で聞いてるのかさっぱりわからんくはあるな。なんの自作自演なのかさっぱりだけど
824 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:27:58.46 .net] >>792 宿題かああ。程度が低いな。高校でとかか?
825 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:28:13.36 .net] >>792 あぁ…
826 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:39:06.49 .net] >コマンド由来 コマンドはつねに改行されるの?
827 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:40:31.96 .net] あと、printfのfって何? f付けたのはcが最初? fって?
828 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:44:50.94 .net] 少しは自分で調べろよ
829 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:47:13.07 .net] 調べたから改行の事分かったんだけど?
830 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:47:50.56 .net] もっと自分で調べろよ
831 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:49:35.35 .net] じゃぁfだけヒント教えて
832 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:50:22.47 .net] それな
833 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:50:43.52 .net] >>796 ,797 コマンドで何か出力するのに「改行しない」方が少ないだろうという。echo "Hello"が改行しなかったら
834 名前:プロンプトが続いてとか。改行した方がその機会が多いので省けるだろう f = フォーマット。printfはCが起源じゃないのかなあ。の前の何かの言語ではprintがあっただろうな(どういうのか知らんけど) 聞く姿勢が小学生低学年並みだな。そろそろ>>798 の言うとおり [] [ここ壊れてます]
835 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:55:17.35 .net] >>803 どうもありがとうございました
836 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 15:22:33.69 .net] 礼儀正しいな 少し見直したw
837 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 15:24:56.72 .net] manとinfoどっち使ってる? infoは文中から別のページに飛べるから便利そうだけどウェブブラウザのように戻る進むボタンがあるわけでも無いし全部文字だけだから現在位置が分からなくなるからmanがいいと思うんだけどどう?
838 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 15:25:43.12 .net] なんか最近ほんとこういうアンケートみたいなの増えたな どっかから流れてきたか?
839 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 15:27:19.76 .net] この質問は乾燥機かせてほしいだけだから
840 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 15:29:11.19 .net] UNIX板だからmanだな
841 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 15:31:13.31 .net] 何を乾燥させたいのかしばらく悩んだ
842 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 18:41:01.45 .net] 「乾燥機貸して」ってアンジャッシュのネタにあったなそういや
843 名前:名無しさん@お腹いっぱい。 [2018/07/02(月) 19:09:02.32 .net] man manて口で言うと恥ずかしいからinfo
844 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 19:35:17.38 .net] rcsのco(1)を
845 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 21:56:08.50 .net] tinfo
846 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 22:32:14.11 .net] そのあたりのネタはもう聞き飽きた
847 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/03(火) 00:21:24.80 .net] ディレクトリの中の拡張子がm2tsのファイル全てをtsselectというコマンドに投げてその標準出力をひとつのファイルに追記で書き込みたいんですが、その際、ファイル名も一緒に書き込みたいです。 どうやってファイル名を取得するんでしょうか? $ tsselect *.m2ts > ana.log
848 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/03(火) 00:43:49.80 .net] 1行で書けなかったので、複数行に分けてfor分を使いました。
849 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/03(火) 01:01:05.23 .net] こんなん? for i in *.m2ts; do echo $i >>ana.log; tsselect $i >>ana.log; done
850 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 07:39:11.34 .net] 近頃のどこか(このスレかも)で, 「fgrepはgrepより遅い」というような話を耳にしたんですが,ほんとうですか? 手元のgrepで試したところ,ほとんど有意な差はありませんでしたが……。
851 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 08:10:45.64 .net] それぞれ独自バイナリだった昔の話な。 あとgrepよりegrepの方が速かったんで、 今でも手はegrepを優先して打っちゃうけどな。
852 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 08:43:22.98 .net] いや独自バイナリだった頃もfgrepの方が速かったような。 grepだけ非決定性オートマトンで遅い的な。
853 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 15:23:44.48 .net] ファイルの一括リネームで $ find . -name "*X*" | while read F; do mv $F ${F/X/Y}; done だとXXXがYXXになるんですけどYYYにするには繰り返さなきゃいけないんですかね?
854 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:18:50.48 .net] If pattern begins with /, all matches of pattern are replaced with string.
855 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:22:26.78 .net] 日本語で書いてくれないとわかりません できれば修正したコマンドを書いてください
856 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:25:40.84 .net] お断りします
857 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:27:15.37 .net] 断る理由とは?
858 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:29:57.71 .net] ひな鳥に餌を上げるのはひな鳥がかわいいからだ なんかこのひな鳥うざいって思ったら餌は与えない
859 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:31:49.67 .net] 可愛く思われる質問の仕方でもあったんですかね
860 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:34:15.63 .net] とりあえず「sh 変数展開」あたりでggってからここに来
861 名前:い それで分からなきゃどこかの暇人が餌与えてくれるまでずっと待ってな [] [ここ壊れてます]
862 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:35:48.08 .net] ありがとうございました
863 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:54:10.40 .net] もう来んなよ
864 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 18:24:31.29 .net] すみません ワードとかに出来る~$で始まるファイルを一括で消したいのですがどうすればいいですか。 find ./ -name "~$*" -exec rm -rf {} \; これだと上手くいかないです。 find ./ -name "~\$*" -exec rm -rf {} \; エスケープしてもダメです。 find ./ -name "~*" -exec rm -rf {} \; これだと上手くいきますが$も指定するためにはどうすればいいですか。
865 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 18:27:42.16 .net] シングルクォート使っとけばぁ
866 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 18:30:53.83 .net] >>833 上手くいかないです $ find . -name ~'$'* Unknown user: $*. $ find . -name "~'$'*" Illegal variable name. $ find . -name ~"$"* Illegal variable name. $ find . -name '~"$"*' 何も出力されない
867 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 18:41:11.43 .net] 自己解決 bashにしたら\で普通にエスケープできました find . -name "~\$*" なんでcsh使ってたんだろ
868 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 18:44:18.71 .net] csh使ってたならプロンプト$にすんなよ紛らわしい
869 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 18:46:56.81 .net] cshだと%でしたねすみません % find . -name "~\$*"
870 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 20:48:13.14 .net] なんで-rつけてんねん
871 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 20:56:00.21 .net] ファイルフォルダ関係なく消したいからフォルダがないとわかっていても付けてる
872 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 21:12:02.88 .net] \; より + かな。forkの遅いCygwinでは特に。
873 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 21:21:14.22 .net] 最後以外の改行を削除する単純で可搬な方法を探しています。 私が現在使っている方法は cat <<. | tr -d '\n' | printf '%s\n' "$(cat)" a bbb cc . です。これは可搬性は抜群ですが、冗長すぎると感じています。 できれば一つのコマンド(sedとか?)で済ませたいです。よろしくお願いします。
874 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 21:32:09.95 .net] awkで
875 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 21:34:23.01 .net] フォルダっつーかディレクトリ
876 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 21:37:25.99 .net] 同じだろ
877 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 21:40:52.56 .net] >>841 sed ':l;N;s/\n//;bl' とかかな。// を /,/ にすると、1行CSVに出来る。
878 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 22:22:07.40 .net] >>845 ありがとうございます! すごいですね……。:lってラベル付けでしたっけ。
879 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 23:00:04.93 .net] >>841 cat <<. | { tr -d '\n'; echo; } a bbb cc .
880 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 09:36:25.04 .net] Mac付属のsedじゃうまく行かなかった、ってお呼びじゃないか 最近のBSD sedはどうかわからないけど
881 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 10:23:41.12 .net] >>848 え? そうなの? OS Xを持ってないので知らんが Busyboxでも行けるくらいの可搬性はあるぜ? 全部POSIXで規定されてる命令だし。
882 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 12:53:17.75 .net] macOSだけでなくBSDでだめっぽい。BSDでだめというか、GNU sedでなら動くか
883 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 14:18:26.92 .net] 主にパターンスペースに対して処理した直後にどうするってとこの違いかな。他ではBSDでもmacOSとOpenBSDでは行を処理しなかった場合どうするがちょっと動作が違ったり、いろいろ鬼門だなsedは sed '$!{H;d;};${H;g;s/\n//g;}' で、いちおう、sedもGNU sedものようだけど、ゴテっとはしてんな
884 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 14:50:09.34 .net] >>845 も結局改行を削除しているだけ&最後の改行はsedの勝手に付けるだけなので、>>847 の方がシンプルでこっちの方がって感じだな
885 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 15:36:04.46 .net] >>845 のMacやBSD向け変種でけた sed -e :l -e 'N;s/\n//;$p;bl'
886 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 15:51:48.45 .net] おおっ ラベルを別にすれば/しなきゃなのか $はそこに入れるのか、なるほど GNU sedではそれだと.
887 名前:..オプションで変えられるかな くせが強いw [] [ここ壊れてます]
888 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 17:34:11.18 .net] 教訓。移植性を重視するならsedで変なことするな。普通の正規表現だけ使え
889 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 18:25:50.29 .net] 昔はもっと酷かったんだろうな #移植性 sedだけじゃなくてgrepとかも。
890 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 18:33:28.39 .net] >>856 昔は一つしかなかったから移植性よかったよ。 GNUが台無しにした。
891 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 18:41:45.18 .net] ぐぬぅ
892 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 22:10:39.00 .net] sed で可搬性を考えると、セミコロンで分ける方法はちょっとあやしいから、 愚直に -e で分けるしか無いのかも知れない、短く書けないけどw それはさておき、sed の「無限ループに N を入れる」って、趣があると思うんだよね。 C で「ファイルを while の条件文で fgets() が EOF になるまで読み込む処理」に近いというか。
893 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 22:32:39.96 .net] >>855 >普通の正規表現だけ使え というより、一行単位サイクルで処理しろかな
894 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 23:00:24.55 .net] >>859 溜めに溜めて溜め込んでってイメージしかないなw そのwhile〜fgets〜で言うなら、中にreallocでどんどこ的な 実際どうなんだろと65Mのファイルで「ちょっと」試したら、使用メモリは増えない(??)けど終わらんぞw
895 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/06(金) 00:57:10.67 .net] bashのプロセス置換なんですけど、最初のプロセス置換が/dev/fd/63に固定(?)されているのはなにか理由があるんですかね。 bash-4.4$ eval echo $(yes '<(echo) ' | head -n 63) とやったら/dev/fd/63からデクリメントされていって/dev/fd/5→/dev/fd/3→/dev/fd/64 という謎の変化を経てインクリメントされていくという……。 これ仕様ですかね。
896 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 16:45:13.41 .net] 仕様です 63は昔は大きい数字だったのですが 最近は小さくなってしまった
897 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 19:05:22.41 .net] 数千行のCSVの値を一個一個指定の条件に沿っているかチェックするにはシェルスクリプトでも出来ますかね? 参考書教えて頂けたら嬉しいです。 それともこういうのは他のスクリプトの方が適してたりしますか? perlも使える環境ではあります。
898 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 19:24:54.18 .net] >>864 そのチェックが他の行の参照を含まなくて、shellでできるかという質問にawkやsedも含まれているのなら、できる というか、excelでやったりしないし、最近はpythonでやることが多い
899 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 20:21:55.89 .net] 指定の条件によるな。CSVの項目も数値や文字列だけだったらシェルスクリプトだけでもできるだろう
900 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 20:52:55.66 .net] ああ、文字列の中のフィールドセパレータ(,)をフィールドセパレータとして除外というのはしないか。awkも同じかな。やってできないこともないだろうけどめんどくさいな perlはcsv処理するモジュールを入れてだっけ、pythonは最初から入っているよな
901 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 21:04:50.61 .net] それ以前にCSVのフォーマットによると思う 改行とかカンマとかダブルクォーテーションを含むとかをきちんとやりだすとシェルだけでもできるだろうけどやりたくない
902 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 23:07:51.61 .net] またCSV嵐が来てんのか
903 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 23:12:15.86 .net] カンマ入っている場合には "" もしくは '' で囲わなければならないから、それはシェルスクリプトにとっても都合がいい、 IFS=',' fields=($raw) で簡単にと思ったがそう甘くはなかった。最近流行りのevalでなんとかだとしても、$とかまた別の問題があるしなあ
904 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 23:14:30.65 .net] >>869 別にあれとは違うだろうにw 単にCSVだからって拒
905 名前:否反応示しすぎ [] [ここ壊れてます]
906 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 23:47:30.31 .net] 皆さんお答えありがとうございます。 出来るけど面倒だという感じですね。 PHP使いたいけど仕様上ダメみたいなんですよね。。。 後にメンテナンスが面倒くさそう
907 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 23:50:19.59 .net] >>867 残念ながらpythonは入ってなかったです。DBサーバーなんで
908 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/08(日) 00:37:11.05 .net] >>873 perlで高機能な(?)Text::CSVを入れればだけど、それすらなら、 t2aki.doncha.net/?id=1403586022 なんぞの数行のをコピペってでもかな。後はperlスレだな
909 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/09(月) 08:36:49.76 .net] >>869 いいえ、また "お前" が来てるんですよ
910 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/09(月) 09:05:14.05 .net] >>872 上とかけあってperl/python/rubyのどれかを入れさせれもらった方がいいと思う。 あるいはjava VMがインストールされてるなら、そっち使ってもシェルよりは楽。
911 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/09(月) 13:02:45.84 .net] 素直にCで書けばw
912 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/09(月) 15:13:46.00 .net] 1990年代には確かにこういうプログラムもCで書いてたが、今では はやらんよ。 スクリプト言語とかJava VM系言語とかでCSVライブラリ呼ぶように書くのが普通。 もっと低レイヤの処理ならCも使うけど、業務システムにCを使うってのは、 開発効率が悪いせいで、ほぼ亡びた。
913 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/09(月) 19:00:09.14 .net] compgenによる補完候補の絞り込みですが bashでは正常に動作するもののzshでは絞り込まれません。 なぜでしょう? # bash 4.4.19 on Ubuntu 18.04 $ compgen -W "aaa bbb ccc" a aaa # zsh 5.5.1 on Ubuntu 18.04 % compgen -W "aaa bbb ccc" a aaa bbb ccc .zshrcでは autoload -U +X compinit && compinit autoload -U +X bashcompinit && bashcompinit してます
914 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/09(月) 22:19:36.10 .net] >>878 すでに入ってるLL使うならわかるが、JavaVM入れるくらいならCでいだろ。
915 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/10(火) 08:36:39.48 .net] >>880 >>876 は「java VMがインストールされてるなら」って書いてあるじゃろ。 つまりCSV処理のためにjava VM入れるんじゃなくて既に入ってるならって話。 入ってないなら交渉してスクリプト言語入れる方を推奨だな。 エンタープライズ系は静的型検査が欲しいので相変わらずjava VMな言語が強いのよ。
916 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/15(日) 05:45:07.54 .net] シェルスクリプトでwebpackみたいに結合して1ファイルにしてくれるものとか babelみたいにトランスパイルすることで言語を拡張するものって無いかな
917 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/15(日) 13:28:22.06 .net] >>882 シェルアーカイブ形式とか? file.sharという形で,ファイル後半に(圧縮した)バイナリーファイル,前半(というかヘッダ)に展開用シェルスクリプトとインストールスクリプトを書いておく) 最近のソフトウェアだとVMWare Horizon ClientsのLinux向けインストーラーがその形式だった。
918 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/16(月) 09:08:44.64 .net] >>883 別にバイナリファイルを動かそうって話じゃないよ 単にくっつけてくれればいいだけ
919 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/16(月) 11:20:08.69 .net] >>884 それがshar
920 名前:名無しさん@お腹いっぱい。 [2018/07/17(火) 14:15:20.69 .net] >>885 だからぜんぜん違う webpackみたいに1ファイルに結合するって話をしてる 結合しても結合する前と同じように動く すこしはsharについて調べてきたら?
921 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/17(火) 14:17:28.78 .net] shar知らない人のために説明しておくと、 これは単なる自己解凍形式の圧縮ファイル形式に過
922 名前:ャない [] [ここ壊れてます]
923 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/17(火) 14:31:39.62 .net] それよりwebpackとやらについて説明しておくべきだったろ 聞き方が悪い
924 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/17(火) 14:59:08.62 .net] 名前出てるんだから調べればいいだけだろ
925 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/17(火) 15:01:52.39 .net] なんで聞く側が偉そうなんだよって話だろ
926 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/17(火) 16:41:05.27 .net] どう使いたいかとかわからんのにな >>887 って言ってるけど、得られるのは自分でそれを使ってダイレクトにも頑張ればできる範囲だし
927 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/17(火) 18:43:00.23 .net] webpackはCのプリプロセッサのincludeみたいなやつだよ
928 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/17(火) 19:48:43.74 .net] バンドルじゃないの。macOSのバンドルのようなのを単一ファイルでの 単にincludeだったらシェルスクリプトにcatでくっつければええやん。目的は単一のファイルにしたいだけなんだから バンドルなんだからバンドルをハンドルするヤツが必要じゃないの。んなのはshar使って自分で作ればってとこじゃね
929 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 07:15:49.95 .net] webpackとかbabelとか覚えたてのキーワード並べてみたかったんでしょ そんなのが必要になる状況がクソなんだがなw
930 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 10:45:31.69 .net] >>891 > >>887 って言ってるけど、得られるのは自分でそれを使ってダイレクトにも頑張ればできる範囲だし 自分で頑張ればできるって話なら、ファイル結合なんだからcatでもできるよ? 自分で頑張ればいいだけ。結合されても大丈夫なようにコードを書く必要があるけどな その頑張るのが面倒だからツール使うんだろう? ちなみにsharなんていらない。だってこれ目的を満たすためのツールじゃないから 自分でcatで頑張る+圧縮もしたいなーって思った時にオプションで使えるかもしれないツール
931 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 10:47:00.38 .net] >>894 単一のファイルで何千行も書きたいの?
932 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 10:48:08.70 .net] ちなみにsharの問題は展開しないと使えないって所 ルータのような書き込み回数に制限があるシステムでは致命的
933 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 10:48:51.53 .net] あと展開のためのコマンドが入ってない可能性もあるしな ファイル結合するだけなら、外部のコマンドにも依存しない
934 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 12:29:11.73 .net] シェルスクリプトは実行可能なままファイル結合する必要性があんまりないってこと そんなのとかトランスパイルとかが必要になるJavaScriptを指して、クソだなって言われてるんじゃない?
935 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 14:24:18.43 .net] てゆうかそれ以前に、そんな長いプログラムをシェルスクリプトで書いちゃいかんやろ。 他の言語を使うべき。 JavaScriptくらい高級な言語ならアリだけど。
936 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 19:30:47.19 .net] ディレクトリ A の中のファイルを全部 ディレクトリ B の中の同名のファイルと diff を撮りたいんですけどどうすればいいですか xarg で1つの引き数を渡す方法しかわからないのでおねがいします
937 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 19:32:58.08 .net] diff -r A B でいいのでは?
938 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 20:29:52.99 .net] 少しはggるとかしてからここに恋や
939 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 21:00:07.83 .net] その前にmanすれ
940 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 21:33:29.76 .net] システムのスクリプトにも参考になるものがたくさんあるよね。zgrepとかzdiffとか linuxだけどlddがシェルスクリプトだったのには驚いた
941 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 21:51:54.45 .net] bashのHISTTIMEFORMATを設定した環境だと sshログアウトしてもbgプロセス消えないみたいなんだが なんでなん?
942 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 22:33:43.46 .net] 設定してなくてもsshログアウトしてもbgプロセス消えないけど、うちでは 他の設定じゃね
943 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/18(水) 23:31:51.58 .net] うーむ 会社の環境だとその設定の有無で変わったんだけど 今vmでcentのminimal立てたら設定なしにbgプロセス生きてた 何か勘違いしてるのか
944 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/19(木) 00:16:48.11 .net] https://serverfault.com/questions/117152/do-background-processes-get-a-sighup-when-logging-off だって。ちょい昔からデフォで子プロセスに
945 名前:HUP送らなくなってるんだなあ。OSやディストリによってデフォが違うだろうけど huponexitオンにして、HISTTIMEFORMATを設定してもbgプロセスは消えるねえ [] [ここ壊れてます]
946 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/19(木) 09:21:29.33 .net] case文で,Bash特有の高速化オプションとかありませんかね。
947 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/19(木) 10:02:38.02 .net] >>910 高速化できるんならオプションじゃなく最初からそうしてると思うが、 さらに、高速化が必要なほど遅いcaee文とは?
948 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/19(木) 10:34:16.62 .net] >>902 Aにあるファイル名だけ比較したいんです Bのなかにはほかにもファイルがあったりするので diff A/$f B/$f とか場合によっては diff A/$f B/*/$f みたいなことがしたかったのです… ls なり find なりの出力ファイル名を変数に取り出すのってやっぱり難しいんですね 諦めます レスありがとうございました
949 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/19(木) 11:14:05.74 .net] お題としてはちょっと楽しめると思うけど、諦めちゃうのか
950 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/19(木) 11:19:41.98 .net] find A -type fして、それぞれbasenameとって、find B -name filename -exec hogeってかんじかな。 B側で何度もfindするのを減らしたいけど、キャッシュされればそれほど負荷じゃないか。
951 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/19(木) 12:11:39.09 .net] diffの話ついでに (GNU) diffでディレクトリごと比較したときに、一方のディレクトリにのみあるファイルを無視するオプションってある? diff -r /dirA /dirB | grep -v 'にのみ存在' とやればまあ大抵の場合解決するんだけども、たまたまあるファイルの変更箇所に「にのみ存在」っていう文があった時に 困るので、できればオプションで解決したい。
952 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/19(木) 12:28:48.82 .net] LANG=Cで^Onlyにマッチさせてはじく
953 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/19(木) 12:35:37.30 .net] diffの出力って行頭の文字が重要なのに、 これを無視した日本語ロケール作者は反省するべき。
954 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/19(木) 12:53:00.49 .net] 結果に対してsedで…ってのはさすがに無駄だな
955 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/19(木) 12:57:00.83 .net] >>916 ああなるほど。 diffの出力結果では行頭は変化を表わすところだから その行頭を除けばいいね。
956 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/19(木) 15:19:36.24 .net] 詳しい解説サンクス
957 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/19(木) 20:13:49.97 .net] >>909 サンクス 俺の勘違いだったっぽい
958 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/20(金) 01:50:52.37 .net] >>900 > てゆうかそれ以前に、そんな長いプログラムをシェルスクリプトで書いちゃいかんやろ。 行数で使う言語を決めるなや シェルスクリプトは、コマンドの連携処理を一番シンプルに書くことができる言語 シェルスクリプトが適している問題を、長いからという理由で他の言語を使うともっと長くなる なぜ非効率な言語を使うのか?
959 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/20(金) 02:03:28.48 .net] はいはい
960 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/20(金) 06:54:58.07 .net] この引用符…あっ(察し
961 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/20(金) 07:21:43.92 .net] 引用符?
962 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/20(金) 12:12:45.33 .net] >>922 まさにシェルスクリプトがプログラム間連携のための言語だからだよ。 1000行以上にも及ぶ複雑なプログラム間連携処理を シェルスクリプトで書く状況ってのは モジュール分割に失敗してる可能性がきわめて高い。 100行くらいの単体でも十分に使えるシェルスクリプトが10個ならば問題ないが。 シェルスクリプトは現代的プログラミング言語の持つ数々の抽象化機能を 欠いていて大規模プログラミングに向かないことは常に意識するべき。
963 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/20(金) 16:50:00.03 .net] 仕事でならな。個人的なのでもそういう学習習得意欲がないんだったら馬の耳に念仏かと
964 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/20(金) 20:11:37.10 .net] ケンカはやめて(><)
965 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/21(土) 02:15:31.20 .net] 二人をとめて \(^o^)/
966 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/21(土) 02:44:08.71 .net] 私だ
967 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/21(土) 09:20:03.54 .net] あえて不向き
968 名前:なことをやるのは好きだよ [] [ここ壊れてます]
969 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/21(土) 13:29:23.62 .net] >>926 > 1000行以上にも及ぶ複雑なプログラム間連携処理を > シェルスクリプトで書く状況ってのは > モジュール分割に失敗してる可能性がきわめて高い。 だからシェルスクリプトでモジュール分割するんでしょ?
970 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/21(土) 13:30:12.48 .net] >>931 外部コマンドの呼び出しが多数存在する場合、 シェルスクリプトを使うのが向いてる
971 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/21(土) 15:15:10.19 .net] >>933 外部コマンド呼び出しは敗北と同義よ! 漢なら全て内蔵コマンドで処理をせい!
972 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/21(土) 15:36:08.22 .net] >>932 できてるならそんな話題になってないな
973 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/21(土) 16:05:41.70 .net] >>935 普通に . (source)を使用するだけだけど?
974 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/21(土) 16:08:19.12 .net] >>934 内部コマンドだけで処理できるなら 普通の言語のほうが良いよ 外部コマンドの連携に強いシェルスクリプトは 外部コマンドを呼び出すために使うもの 逆に普通の言語だと外部コマンドの呼び出しは面倒なんだ。
975 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/21(土) 16:16:33.64 .net] そろそろ板違い
976 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/21(土) 16:30:52.91 .net] >>936 そういうのもできてるなら話題になってないって言ってるんだけど できてるって、言語的にできるできないじゃないよ >>938 板違いってか本題から外れすぎだな
977 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/22(日) 19:37:39.33 .net] >>934 includeやimportも禁止な
978 名前:名無しさん@お腹いっぱい。 [2018/07/22(日) 22:44:37.34 .net] やっぱ次のスレからワッチョイ付きにしようね
979 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/22(日) 23:49:40.49 .net] >>939 だからモジュール分割は . で出来てるから話題になってないってことでしょ?
980 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 01:44:04.51 .net] この掲示板ってワッチョイないのでは… というかidもなかった
981 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 01:57:54.18 .net] 使えないのかもしかして
982 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 02:50:48.89 .net] 掲示板ごとの設定だからね
983 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 03:47:58.52 .net] じゃあもうこの板捨てるか? Linux板にでも移動すりゃいいでしょ
984 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 04:20:40.19 .net] ワンチャンある 最近精神年齢キッズが多すぎるしな
985 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 11:29:23.13 .net] test
986 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 11:56:50.52 .net] false
987 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 20:31:02.18 .net] >>946 OSの話じゃないから向こうでやってもいいかもね
988 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 20:36:06.85 .net] あっ、でも向こうだと動かすOSがLInux前提になってしまうのか
989 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 21:56:56.76 .net] プログラム板にすれば?
990 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 22:23:40.05 .net] するならそっちだな
991 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 22:28:36.47 .net] ム板に賛成する
992 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 22:46:21.28 .net] ム板にしましょう
993 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/23(月) 22:48:33.03 .net] バッチ、パワシェのスレがム板にあるから不自然じゃないよね
994 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 01:25:43.39 .net] 賛成だ しかしシェルスクリプトがunixにいられなくなるってのもなんかすごいな
995 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 01:37:47.14 .net] 俺も賛成だわ
996 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 01:43:21.92 .net] まあUnixもそれだけ多くの人に知られてきたってことじゃない? もちろんキチガイは不要だけども。
997 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 06:02:37.30 .net] テンプレは同じでいいな もし嫌ならそいつが新しいの考えろ
998 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 11:06:17.93 .net] とりあえず立てました。 テンプレを書き込もうとしたら長すぎと怒られたので、分割するついでにちょっと改変しました。 https://mevius.5ch.net/test/read.cgi/tech/1532397676/l50
999 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 11:25:29.69 .net] IDだけか? ワッチョイいれるんじゃないのか
1000 名前:961 mailto:sage [2018/07/24(火) 11:43:21.78 .net] >>962 実はワッチョイを提案したのは俺なんだけど あんまり賛同者がいないようだし 勝手にやるのもどうかなと思ったんだわ。 今はID板でやって それでも荒れるようであればワッチョイ付けるっていう方針でいいかなと思ってる
1001 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 11:51:50.17 .net] >>963 俺はワッチョイも含めて賛成してたけど、まぁそれでいいか ざっと厶板の他のスレみた感じワッチョイまで採用してるスレほとんどないみたいだし、あっちでもあまり使わない文化なのかもしれん
1002 名前:、どうなんだろ [] [ここ壊れてます]
1003 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 11:53:47.82 .net] ヘタレすぐる
1004 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 12:31:44.59 .net] プログラム板移動とか計画通りすぎるwww
1005 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 12:32:21.76 .net] どうせならIPアドレス表示まですればいいのに 攻撃してやんよ
1006 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 12:41:26.67 .net] プログラム板という修羅の国に移動か
1007 名前:961 mailto:sage [2018/07/24(火) 12:54:08.96 .net] プログラム板ってここと違って保守しなきゃいけないよね 誰かどのくらいで落ちるか分かる人います?
1008 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 12:54:54.13 .net] 20
1009 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 12:55:43.39 .net] あぁ時間か どうだったっけな、さすがに覚えてない 20レスすれば当面落ちないとだけしか
1010 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 13:29:33.13 .net] 先日lispスレ立てたけど、4レスのまま全然落ちる気配ないよ。
1011 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/24(火) 20:36:12.16 .net] >>963 その段階的なやり方で良いと思う スレ立て乙!!
1012 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/25(水) 04:22:56.20 .net] UNIX板伝統のシェルスクスレもム板行きかあ UNIX板に限らず、専門板って過疎ってるところ多いから、統廃合してほしいな
1013 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/25(水) 15:06:43.63 .net] シェルスクリプトはもはやUNIXだけのものじゃなくなったからなぁ。 クロスプラットフォームが当たり前になって、 OS別のマターというのもだいぶ限られてきたね。
1014 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/25(水) 16:55:26.81 .net] UNIX板の中でシェルスクリプト総合スレが一番、というか唯一勢いがあるんだが、 これなくなると凄まじい限界集落になるな… Vim/Emacs/TeXあたりもソフトウエア板あたりなんか行ったら、もう…(´;ω;`)
1015 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/25(水) 18:05:53.09 .net] せめてIDが出る板だったらよかったのにね…
1016 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/25(水) 18:31:00.38 .net] まぁ言っても仕方ない 変わらない環境なんざないさ
1017 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/25(水) 20:33:48.37 .net] WindowsではWSLでシェルスクリプトが動く だけどWSL環境なんだよなぁ Windows標準でbusyboxとか採用してくれればいいのに バッチファイルの代わりとして使えるんだが
1018 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/25(水) 21:09:31.29 .net] >>979 どんなことにつかいたいの?
1019 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/25(水) 21:12:51.81 .net] バッチの意味不明なsyntaxと貧相なコマンド類は発狂しそうになるけど、パワシェではいかんの? パワシェ使ったことないけど、さすがにまともに設計されてるんだろ
1020 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/25(水) 22:21:31.92 .net] PowerShellは、普段使いのシェルとしては使えない
1021 名前:名無しさん@お腹いっぱい。 [2018/07/25(水) 23:38:49.24 .net] Powershellは高機能なんだろうけど、高機能すぎて、あれこれ調べているうちに疲れた 結果として、Powershellの機能を呼び出すバッチファイルが出来上がってしまった
1022 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/26(木) 05:51:18.22 .net] >>980 WindowsでもLinuxでも動くスクリプトの作成 busyboxがあればシェルと基本的なコマンドは手に入るから あとは特定のアプリのWindowsバイナリ版を入れるだけで WindowsでもLinuxでもMacでも使えるスクリプトが作れる cygwinやmsysもあるけど、Windowsに標準搭載してほしい 最低限のことはできるようになる。 >>981 PowerShellはコマンド体型違うから
1023 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/27(金) 11:09:39.45 .net] >>984 太ってるの?
1024 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/27(金) 11:11:30.73 .net] >>984 cygwinのdllと起動batを持ち歩くといいよ どこでもsh動く
1025 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/27(金) 21:15:51.75 .net] >>986 いつのまにか感染してました、で会社をクビになるんですね。
1026 名前:名無しさん@お腹いっぱい。 [2018/08/01(水) 17:27:03.04 .net] >>986 Windows標準でbusyboxとか採用してって話なのに cygwinを持ち出されても、 そんなのが必要になるから、Windows標準で採用してって言ってるんだよ で終わる
1027 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 01:46:48.23 .net] >>988 SFU や WSL の流れからして、Busybox 相当の標準搭載も需要も無いと思いますよ。 必要ならば S
1028 名前:ysinternals 等の TechNet フォーラムに参加して要望を出してみては。 [] [ここ壊れてます]
1029 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 04:05:27.78 .net] >>989 需要がないのになんで次から次へと出てくるの?
1030 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 04:15:34.43 .net] もうすぐみんなとお別れなの(´;ω;`)
1031 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 05:22:46.59 .net] 次スレ シェルスクリプト総合 その28 https://mevius.5ch.net/test/read.cgi/unix/1533154936/
1032 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 06:31:33.06 .net] >>992 たぶん善意からだと思うが、すでに>>961 この板とはお別れ
1033 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:08:24.46 .net] 悪意だろ
1034 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:24:36.20 .net] そう先に思うのはお前自身が腐ってるからだろう
1035 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 09:08:24.13 .net] 埋め
1036 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 09:08:47.19 .net] 埋め
1037 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 09:09:28.02 .net] 次スレこちら https://mevius.5ch.net/test/read.cgi/tech/1532397676/
1038 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 09:09:44.23 .net] 埋め
1039 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 09:09:52.51 .net] お前らあばよ
1040 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 90日 15時間 15分 29秒
1041 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています