19/08/26 22:19:06.53 bOZvrPaH.net
perlで使える正規表現文字クラスは、
POSIXの正規表現文字クラスより簡単に書けるから、
sedより楽といえば楽だよね。
398:デフォルトの名無しさん
19/08/26 22:35:23.01 pJei9Vjv.net
GNU sed だとコンパイルオプションを追加すれば PCRE が
使える(-R オプション)らしいな
399:デフォルトの名無しさん
19/08/27 09:47:28.46 jAZb3mMb.net
perlの存在を知る前から\dや\wは使ってたからこれが使えねぇって言われた時は焦ったわ
正規表現入門では当然のようにperl版を使うけど正規表現の種類までは解説しないからな
基本だの拡張だの方言があるって知ったのはvimやgrepで悩んだ時だし
400:デフォルトの名無しさん
19/08/27 12:20:19.16 WoMQ7lMm.net
sed は n で次の行に簡単に飛ばせるのが使いやすかった
もっとも多くの行送りは読みにくいので過信できないが
401:デフォルトの名無しさん
19/08/27 18:42:49.47 AbLHt6c7.net
perlでは[\s\S]でほぼ同じことができるけどね
402:デフォルトの名無しさん
19/08/28 05:11:25.57 mFl1zXF1.net
C言語とシェルスクリプトの対比・協調について
「シェルスクリプトは文字列処理がある程度得意で
キャラクタによるユーザーインターフェースを作るのに向いている。
一方C言語は↑このような操作は不得手であるが
素早い数値計算やシステムAPI呼出しは向いている。
だからインターフェースはシェルスクリプトで書いて
シェルスクリプトで適切に処理した引数(例えばヌル文字を削除したり数値だけにしたり)
をC言語をコンパイルしたプログラムに渡すようにすれば
「早くて堅牢、かつ使いやすい」システムができる」
こういうのってどの程度正しい?
403:デフォルトの名無しさん
19/08/28 05:39:32.47 K2P0GJ1V.net
言語なんて色々有るし、C言語と対比しないほうがいいのでは?
404:デフォルトの名無しさん
19/08/28 07:27:17.72 Z/4RZqPN.net
>>397
どこから突っ込んでいいか分からないくらいピンぼけな文章
405:デフォルトの名無しさん
19/08/28 07:38:14.25 JyOge16s.net
20年前からタイムスリップしてきたんだ。許してくれ
406:デフォルトの名無しさん
19/08/28 08:10:37.66 j4+M+GB0.net
>>397
ちんぼ
407:デフォルトの名無しさん
19/08/28 10:41:08.33 gV1iThk/.net
昭和何年からタイムスリップしてきたのか?
408:デフォルトの名無しさん
19/08/28 11:20:21.46 ddpchJVU.net
可読性が高く、CUI が作りやすい言語は、Ruby。
テキスト処理・コマンド作り・1-liner も得意
ただし、Rubyは遅いから、
ベクトル演算などを速く処理したいなら、C言語で作った、
409:NArray ライブラリを呼び出す その速さは、数値計算専門言語のOctave にも匹敵する!
410:デフォルトの名無しさん
19/08/28 11:31:26.07 Dqewl7QB.net
スクリプトの中で起動速度が一番速いのがシェルスクリプト。次がPerl。
その次はPythonとPHPが同着ぐらい。
Rubyはひときわ遅くて、シェルスクリプトの50倍。Python、PHPの3倍遅い
411:デフォルトの名無しさん
19/08/28 11:52:55.32 Z/4RZqPN.net
TwitterはRuby on Railsで書かれていたがScalaで書き直した
それは大量のトラフィックを捌き切れなくなったからだ
パフォーマンスの問題を解決しない限りは
死んだと言われても仕方がないな
412:デフォルトの名無しさん
19/08/28 12:15:10.11 wbjCXnts.net
railsってどんぐらいの規模ならいけるの
413:デフォルトの名無しさん
19/08/28 14:38:52.61 odAj9D7Z.net
もう10年以上前だけど、Twitterの開発者が何かのインタビューでScala移行した理由としてRubyは自前で型チェックを大量に記述しないといけないから、JavaやScalaみたいに型を指定するほうがいいって気づいたみたいなこと言ってた
海外のプログラミングサイトみたいなやつで、当時少し話題になったけど、探せばまだ見つかるかも
414:デフォルトの名無しさん
19/08/28 17:24:45.64 ZwB1MHJ/.net
すごいわかる
動的型付け言語使ってユニットテストで型チェック書くのギャグかよってぐらい馬鹿げてる
415:デフォルトの名無しさん
19/08/28 20:00:01.16 Z/4RZqPN.net
静的型付け言語の時代になったな
Scala,Rust,Swift,TypeScript...
パフォーマンスチューニングに労力使いたくないよな
416:デフォルトの名無しさん
19/08/28 23:53:16.25 7Kt8r9pr.net
ちょっとperlを覚える気になったけどなんで書きやすいやすくて読みにくいのか分かったわ
記号で変数の使い分ける時点でダメだった
正規表現さえ出来ればいいんだけどPerl6の展望ってどうなんですかね
417:デフォルトの名無しさん
19/08/28 23:54:49.23 ddpchJVU.net
Rails 6 では、DHH のいるBasecamp 社から、GitHub へ移籍した、Eileen Uchitelle が、
複数データベース接続(read replica)と、ブラウザによるE2E の並列テストを実装した
最近のRailsは、大規模用
Basecamp, GitHub, Shopify 社などが中心。
日本では、Cookpad, マネーフォワード、Ruby開発とか
初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発、オライリー、2017
この本は、10年以上やってないと、難しすぎて読めない。
だから、サーバー側をNode.js に変えることは難しい
同様に、Go も難しいから、現時点では、Ruby になる!
418:デフォルトの名無しさん
19/08/29 00:22:15.02 VY7wxkJm.net
シェルスクリプトと同じぐらいの速度とブログで読んで
perl6の処理系が高速化するまでは導入延期予定
速度さえなんとかなれば併用するつもり 新型の正規表現クール
---
perl5 の正規表現は
(?{perl-code})
(??{perl-code})
などがあるから使えると便利
419:デフォルトの名無しさん
19/08/29 00:40:07.63 mztHiQ0L.net
まあ考え方次第なんだけどね
$や@を使うことでスカラー変数と配列変数と連想配列変数を厳密に区別できて、違う型の変数に代入できなくするっていう
Perl6は更に進んで、静的な型指定をできるようにしようって、2000年代前半の時点で今のPHPとかJSがやろうとして方向に進んでたんだけど
420:デフォルトの名無しさん
19/08/29 01:56:31.92 mPTYynKQ.net
Perl 6の正規表現について - Qiita
URLリンク(qiita.com)
俺の知ってる正規表現と違う
421:デフォルトの名無しさん
19/08/29 09:08:01.33 VG5IecJ5.net
童貞「俺の知ってる性器表現と違う」
422:デフォルトの名無しさん
19/08/29 20:01:19.83 jZJUsq6Z.net
定期的にruby布教しては信者を得られず帰っていく
逆効果だと思うんだけどなw
423:デフォルトの名無しさん
19/08/29 20:57:49.50 VG5IecJ5.net
>>416
末期の日本軍みたいよな。
日本生まれのRubyがその生みの親と同じ末路を辿るとはあまりに悲しい皮肉よ
424:デフォルトの名無しさん
19/08/30 00:19:45.85 LpXSw35l.net
日本軍は現場を知らない奴が出世して参謀とかになってるからおかしいことになった
自分は死ぬ気が無いのに他人に市ねと命令するクズ
rubyの人は現場で手を動かしてる分、かなりマシ
425:デフォルトの名無しさん
19/08/30 02:13:05.42 /ghu33Nb.net
その肝心要の現場でRubyが動いてないって話をしてんだよなぁ…
426:デフォルトの名無しさん
19/08/30 02:39:34.78 1KmU2S17.net
ム版でここまでヘイトを集められるのはある意味ユニークスキル
427:デフォルトの名無しさん
19/08/30 05:01:24.34 +D5+4uT9.net
貴様ら!大日本帝国陸海軍を愚弄するか!
Ruby如きの比喩に使うな馬鹿者が!
428:デフォルトの名無しさん
19/08/30 05:19:46.60 Nlc2IKSs.net
ここ以外にプログラミングについて活発に議論してるとこってある?
QiitaとかTwitterみたいなとこじゃなくて匿名でかしこまってないのがええ
429:デフォルトの名無しさん
19/08/30 06:18:12.78 LpXSw35l.net
>>421
今の日本では馬鹿の象徴だよ?帝国陸海軍
430:デフォルトの名無しさん
19/08/30 07:57:05.44 yjTPnYwz.net
つーかなんで日本軍が出てくるのか意味不明
431:デフォルトの名無しさん
19/08/30 08:10:38.43 jhLEZvWx.net
大失敗の象徴としてだろけど、Rubyと絡めるのは意味不明
なんであれどういうものであれ批判するヤツ、アンチはことさら大げさに言うのが定番のだろう
432:デフォルトの名無しさん
19/08/30 08:49:34.60 1L0XShC3.net
やれやれ、じゃあまた俺がシェルスクリプトのお題でも出してやろうかね?
433:デフォルトの名無しさん
19/08/30 08:53:17.88 1L0XShC3.net
じゃあいつもとは趣向を変える
Bourne ShellとPOSIXシェルの違いを教えて下さい。
434:デフォルトの名無しさん
19/08/30 08:53:40.01 1L0XShC3.net
じゃあいつもとは趣向を変えて
と書こうとしたw
435:デフォルトの名無しさん
19/08/30 09:03:36.53 jhLEZvWx.net
いつもの承認欲求だけだろ
436:デフォルトの名無しさん
19/08/30 09:07:30.27 yjTPnYwz.net
>>422
知恵袋いけ
437:デフォルトの名無しさん
19/08/30 09:30:45.39 1L0XShC3.net
Bourne ShellとPOSIXシェルの違い、教えてくださらぬか?
438:デフォルトの名無しさん
19/08/30 10:04:47.60 BnHn7wdj.net
日英両対応のクリップボードへのコピーとペーストの部分どうしてる?
cygwin Linux mac などを
uname | grep "CYGWIN" > /dev/null && do-something
のようなかんじの分岐を copy_to_clipboard paste_from_clipboard で考えている
そして コピーのときに
cygwin だと > /dev/clipboard
linux や mac だと別の何かになる
本当は perlモジュールの Clipboard が OS の差異を吸収してくれる予定だったが
日本語だけはうまく処理してくれないから半分車輪の最発明ののようなことになった
439:デフォルトの名無しさん
19/08/30 10:50:41.75 1L0XShC3.net
そんなことやろうと思ったこともないんだが、
どうやってSSH越しにクリップボードに入れられるんだ?
それシェルの機能なのか?端末の機能では?
440:デフォルトの名無しさん
19/08/30 10:57:15.04 BnHn7wdj.net
SSH 超
441:しじゃなく、ポータブルなコードが欲しかった 環境によってクリップボードのアクセス違うから Xxx | copy_to_clipboad paste_from_clipboard | Yyy のように書けたら楽じゃないか?
442:デフォルトの名無しさん
19/08/30 11:18:44.20 yjTPnYwz.net
macはpbpaste/pbcopy
linuxはxselかxclip
443:デフォルトの名無しさん
19/08/30 11:28:41.14 BnHn7wdj.net
thanks
444:デフォルトの名無しさん
19/08/30 11:34:05.64 1L0XShC3.net
コピペしたいとか思わないからなぁ。
コピーはともかくペーストしたいわけでバイナリのペーストもなくはないけど
通常は出力したテキストのペーストでしょ?
ファイルに書き出せばいいじゃんって思っちゃう。
まあ別にコピペを否定したいわけじゃなくて、やろうと思わないなって話。
445:デフォルトの名無しさん
19/08/30 18:38:47.93 CkOCkFW4.net
Cygwinならclip.exeを呼び出せばいいんじゃない
446:デフォルトの名無しさん
19/08/30 19:33:44.50 yjTPnYwz.net
>>438
clip.exeはペーストできない
cygwinは/dev/clipboard
447:デフォルトの名無しさん
19/08/31 00:01:36.74 nixiltP4.net
getclipboard使えば
448:デフォルトの名無しさん
19/08/31 02:48:40.05 0iGUnrw4.net
クリップボードみたいなGUIに強く依存した(例えば画像や装飾のある文章を切り貼りできる)機能は
なかなかOS間・ベンダー間で協調したり標準化したりするのが難しそう。
素人考えだが。
449:デフォルトの名無しさん
19/08/31 03:00:42.96 4qIvp+ND.net
httpみたいにMIMEを流用すればいいんじゃないの?
扱えないタイプはぺっすればいいんだし
450:デフォルトの名無しさん
19/08/31 08:47:44.75 0iGUnrw4.net
ではその旨を各社にお伝えください。
451:デフォルトの名無しさん
19/08/31 08:49:53.41 0iGUnrw4.net
一個人がアレコレ妄想するぶんには訳ないけど、各々のベンダーが顧客の体験を変えることなく(つまりインターフェース面での過去互換性を最小限にして)
「ぼくのかんがえたさいきょう」のクリップボード仕様を採用してくれるとは到底思えんがね。
452:デフォルトの名無しさん
19/08/31 13:00:30.93 LtUqD47M.net
クリップボードってそのままのデータをやり取りするIPCだろ
453:デフォルトの名無しさん
19/08/31 13:02:39.70 MkewyPY7.net
それはパイプ。クリップボードはクリップボード
454:デフォルトの名無しさん
19/08/31 13:08:50.01 LtUqD47M.net
クリップボードは共有メモリだろパイプじゃない
455:デフォルトの名無しさん
19/08/31 13:13:42.31 MkewyPY7.net
IPCというならだよ。プロセス間通信という感じではない、言うような共有メモリだな
どのプロセスが書いたのか知らん知ってるフォーマットのデータを読むだけだし
456:デフォルトの名無しさん
19/08/31 13:18:28.51 LtUqD47M.net
IPCは共有メモリ、セマフォ、パイプなどのプロセス間通信の総称なんだが
457:デフォルトの名無しさん
19/08/31 13:22:09.06 MkewyPY7.net
共有メモリは広義にはIPCに含まれるだろうが、通信ではないし、クリップボードはプロセス間通信ではないな
共有メモリを使ったプロセス間通信はあるだろうけど、クリップボードがプロセス間通信かと言えば違うだろう。パイプはもろにプロセス間通信という
クリップボードってそのままのデータをやり取りする共有メモリだろ
でまさしくだし、それでいいんじゃね
458:デフォルトの名無しさん
19/08/31 13:26:20.90 LtUqD47M.net
共有メモリは広義にも狭義にもプロセス間通信なんだが
プロセス間でデータをやり取りするための機構だ
459:デフォルトの名無しさん
19/08/31 13:36:21.83 MkewyPY7.net
プロセス間でデータのやりとりさえできれば、通信するプロセス間の関係性即時性一時性なんて全く関係ないのもプロセス間通信と思えるならそうだろな
そもそもプロセス間通信をするために用意したのが共有メモリだと思うよ。共有メモリを使うから=プロセス間通信ではないだろうとは俺は思うけど。ファイルシステムもIPCになる感じになるな、そのままのデータをやり取りするなら
460:デフォルトの名無しさん
19/08/31 13:39:19.82 iNpyZmkw.net
つーかどれとどれのプロセスの通信なんだよw
461:デフォルトの名無しさん
19/08/31 13:40:17.30 iNpyZmkw.net
コピペは重要な機能なのに、標準化されなかったから
vimからemacsへのコピペすら出来ない
462:デフォルトの名無しさん
19/08/31 13:40:59.50 iNpyZmkw.net
UNIX思想の限界の一つだよな
463:デフォルトの名無しさん
19/08/31 13:43:50.78 LtUqD47M.net
IPCの意味調べてこいよ
オレオレ定義を語られても困るんだけど
464:デフォルトの名無しさん
19/08/31 13:48:52.24 MkewyPY7.net
自分でも共有メモリと言っているのに、IPCに拘る方がわからんわ
クリップボードが
465:IPCと言われると違和感しかないな。ファイルシステムもになるからw言っている意味がわからんのならIPCとはなんのためになんぞやを調べた方がいいよ
466:デフォルトの名無しさん
19/08/31 13:51:06.96 LtUqD47M.net
だからおまえが調べてこいよ
わけわからんやつだな
467:デフォルトの名無しさん
19/08/31 13:56:35.05 ndYyEVRN.net
調べてきたぞ。そのうえで意見は何も変わらん。
なにか言いたいなら、自分の口で言いたまえ
つーか俺が不利になることを俺が調べると思ってんの?w
468:デフォルトの名無しさん
19/08/31 13:57:20.39 LtUqD47M.net
じゃあ頭悪いんだから無理するなよ
469:デフォルトの名無しさん
19/08/31 13:57:22.41 MkewyPY7.net
言われるまでもなく知ってるよというのを匂わせていたんだけどww
プロセスがどのプロセスが(読むか読まれるか知らんけど)書く、どこぞのプロセスが誰が書いたのか知らんのを読む
対象が共有メモリだからIPCとでも言っているようだけど?だからIPCとはなんのためになんぞやを調べた方がいいと言っているのだが
470:デフォルトの名無しさん
19/08/31 13:58:45.11 wH7D17fo.net
共有メモリに関数(プロシージャー)をおいて
呼び出すのがI(インターネット)P(プロシージャ)C(コール)なわけだが?
471:デフォルトの名無しさん
19/08/31 13:59:35.20 MkewyPY7.net
ちょっと訂正
プロセスが(どのプロセスが読むか読まれんか知らんけど)書く、どこぞのプロセスが誰が書いたのか知らんのを読む
クリップボードってそのままのデータをやり取りする共有メモリだろ
でいいだろうに、なんでIPCのこだわっているのかさっぱりわからんな
472:デフォルトの名無しさん
19/08/31 13:59:51.95 gu7Dz/47.net
馬鹿二匹
馬鹿1「俺のほうが知ってる。お前調べてこい。そして俺に教えろ。」
馬鹿2「俺のほうが知ってる。お前調べてこい。そして俺に教えろ。」
473:デフォルトの名無しさん
19/08/31 14:00:12.26 LtUqD47M.net
お大事に
474:デフォルトの名無しさん
19/08/31 14:02:37.03 ITKcc2Rb.net
割り込んで良い?
Bourne ShellとPOSIXシェルの違いを教えて下さい。
475:デフォルトの名無しさん
19/08/31 14:57:30.64 Zp9ErCWA.net
うーーんメーカー規格と標準規格で中身はおんなじとか
476:デフォルトの名無しさん
19/08/31 15:05:45.40 0iGUnrw4.net
まーーーた始まった。
しかも今度はシェルの話題ですらないw
477:デフォルトの名無しさん
19/08/31 15:11:29.97 0iGUnrw4.net
>>466
知らんけど
いわゆるBourneシェルはUnix V7あたりの「古き良き」シェルを指す?
でPOSIXはそのBシェルと前後して登場していた種々のシェルの微妙な非互換性を埋めるべく
Unix V7が全盛だった頃よりもっと後になって登場した「実装のない」シェル?
だからPOSIXシェルというのは正確にはPOSIX準拠シェルで
POSIX準拠シェルにはBシェルで使えない機能もある。具体的には set -o <機能の長い名称> とかかな?。
Bシェルが動いてる環境にPOSIXに準じた書き方をした筈の(つまり「現時点での」最大限の互換性がある筈の)
シェルを持っていっても,動かない場合がある。
POSIXはBシェルを大いに参考にはしたかも知れないが,Bシェルでも動くようにとか,
ましてBシェルと過去互換であるようになんてことは念頭に置いてない。
どうっすか先生。
478:デフォルトの名無しさん
19/08/31 15:16:19.89 a1oQmbic.net
>>467 >>469
あー、なりたちとかそういうのじゃなくて
何が出来て何が出来ないとか機能的な話です。
479:デフォルトの名無しさん
19/08/31 15:30:41.04 4qIvp+ND.net
>>470
POSIXの仕様書は読んだの?
480:デフォルトの名無しさん
19/08/31 15:57:20.87 0iGUnrw4.net
>>470
つ URLリンク(pubs.opengroup.org)
481:デフォルトの名無しさん
19/08/31 16:03:38.88 3i1dPJsj.net
Bourne Shellの仕様がないと比べようがないんだが?
482:デフォルトの名無しさん
19/08/31 16:40:24.77 0iGUnrw4.net
「ないんだが?」←草
483:デフォルトの名無しさん
19/08/31 16:50:51.67 4qIvp+ND.net
>>473
ソース公開されてるから自分で読みなよ
何甘えてんだよ
484:デフォルトの名無しさん
19/08/31 17:01:32.42 3i1dPJsj.net
やっぱりだれもBourne Shellの仕様を知らないのかな?
485:デフォルトの名無しさん
19/08/31 18:16:09.72 0iGUnrw4.net
だって「いつの」「どのOSに搭載された」「どんなベンダーが配布していた」Bシェルか一切指定されてないからね。
候補は幾つかあるものの出しようがない。
486:デフォルトの名無しさん
19/08/31 18:19:00.41 0iGUnrw4.net
まさかと思うがBourne Shellが絶対不可侵,永久不滅の存在だなんて思ってないよな。
円周率じゃないんだから,単に「Bourne Shellの仕様」と言っただけで特定できる訳がない。
「Windows XPの仕様」←これがどれだけ曖昧な言明か,ちょっとでも真面目に
プログラミングとその文書化に取り組んだなら分かる筈。
487:デフォルトの名無しさん
19/08/31 18:20:26.43 0iGUnrw4.net
「Solaris 10の仕様」「Unix V7の仕様」←「Windowsのことなんてシラネーシ」みたいな反論を先に封じておくために
Windowsでない例を挙げておこう。
488:デフォルトの名無しさん
19/09/01 00:08:11.60 1i1y7fC5.net
POSIXって右と左で中身がガバガバだから作られた最低限の共通仕様じゃないのか
無人島じゃ家電は役立たずでもアーミーナイフならどこでも使える的な
489:デフォルトの名無しさん
19/09/01 00:12:22.70 7+2OKNJu.net
>>478
言い訳してるようにしか見えんが、
特定できないというのなら、一例としてお前のよく知る
○○と仮定して答えりゃいいやん
490:デフォルトの名無しさん
19/09/01 00:15:35.40 7+2OKNJu.net
>>480
POSIX準拠シェルの説明としては間違ってないが、
Bourne Shellとの比較であれば、POSIX準拠シェルの方が機能が多い
POSIX準拠シェルを「最低限の共通仕様」というのなら
Bourne Shellは最低限の仕様すら満たしてない使えない実装
491:デフォルトの名無しさん
19/09/01 00:36:05.17 tx4fDw07.net
最低限の共通仕様と言ってるだろ、最低限の仕様じゃないよ
492:デフォルトの名無しさん
19/09/01 00:37:19.00 5y1tL0M+.net
>>478
複数の機能の複合体のWindowsXPと、もう誰もいじってないBourne Shellを
同列に並べるあたり、必死に言い訳をしてるようにしか見えんなあ
493:デフォルトの名無しさん
19/09/01 01:30:55.26 7+2OKNJu.net
>>483
だからBourne Shellは「最低限の共通仕様」を
満たしてないんだってば
494:デフォルトの名無しさん
19/09/01 02:19:47.47 tx4fDw07.net
Bourne ShellをベースにBourne Shellの機能を満たすように作るだろ、最低限でも
Bourne Shellの機能に飽き足らず拡張した部分の最低限の共通仕様だろ
最低限の仕様といえばBourne Shellの仕様だろ
495:デフォルトの名無しさん
19/09/01 02:27:49.82 V0W1RnmC.net
Bourne ShellはPOSIX準拠じゃないから「最低限の共通仕様」を満たしてないんだってば
496:デフォルトの名無しさん
19/09/01 02:31:19.82 tx4fDw07.net
POSIXが出る前POSIXを作るときの話だよ。Bourne ShellはPOSIX準拠じゃないってズレすぎ
Bourne Shellに機能拡張した部分の最低限の共通仕様だろって言ってるだろに
そもそもだな、つっこみどころが違う、「(右と左で中身がガバガバだから作られた)共通仕様」なのか?と思うけどw
497:デフォルトの名無しさん
19/09/01 02:51:26.82 V0W1RnmC.net
「最低限の共通仕様」ってPOSIXのことじゃないの?
498:デフォルトの名無しさん
19/09/01 03:07:24.67 tx4fDw07.net
Bourne Shellに機能拡張した部分の最低限の共通仕様=POSIX
「Bourne Shellに」「機能拡張した部分の」「最低限の共通仕様」だって言ってるだろに
Bourne Shellありき
どこのぞのバージョンが、それに a b c etc... な機能を追加
どこのぞのバージョンが、それに b c d etc... な機能を追加
Bourne Shell + b + c = POSIX
という意味だろう>>480のいう最低限の共通仕様は
499:デフォルトの名無しさん
19/09/01 03:21:19.69 V0W1RnmC.net
POSIXはkshをベースに作った仕様だけどね
500:デフォルトの名無しさん
19/09/01 03:22:16.21 tx4fDw07.net
>>487なんて変なこと言い出さずに、それを言えよw
501:デフォルトの名無しさん
19/09/01 03:28:52.19 V0W1RnmC.net
だからBourne ShellはPOSIX準拠じゃないよね
でいいんでしょ
502:デフォルトの名無しさん
19/09/01 03:31:36.55 tx4fDw07.net
なにをそんなに食い下がっているのか意味わからん。なんの意味があるのそれに?
(そんなこと言い出すのはアホか?としか思えんぞw、常識的にPOSIXなんて存在する前のにPOSIX準拠もなにもないだろう)
503:デフォルトの名無しさん
19/09/01 03:33:35.57 V0W1RnmC.net
なんでPOSIXが存在する前の話になってるのか分からんけどねw
504:デフォルトの名無しさん
19/09/01 03:35:57.77 tx4fDw07.net
「POSIXって」「右と左で中身がガバガバ」「だから」「[作られた]」
って書いてあるだろう
わざとなのかわざとじゃないのかわからんが、人のレスを読む努力はした方がいいぞ
そうしたら変なこと言い出さずに変なこと言ったことを誤魔化すような醜態はさらさないだろうw
505:デフォルトの名無しさん
19/09/01 03:39:37.50 V0W1RnmC.net
>>490で言ったこと訂正しとけよw
506:デフォルトの名無しさん
19/09/01 03:40:28.13 tx4fDw07.net
そのレスは読めないなw
俺のレスが読めなくてのとしか思えん
507:デフォルトの名無しさん
19/09/01 04:22:29.76 5y1tL0M+.net
ごめんなさいって言えば良いのになんで突っ張るかねぇ
508:デフォルトの名無しさん
19/09/01 04:34:43.52 YaEsaVCE.net
>>488
> Bourne Shellに機能拡張した部分の最低限の共通仕様
それ日本語になってないだろ?w
自分が言った言葉を無理やり辻褄が合う(?)ように改変したから
そういう意味不明な言葉になってるんだぞ
509:デフォルトの名無しさん
19/09/01 04:36:27.29 YaEsaVCE.net
>>491
> POSIXはkshをベースに作った仕様だけどね
Bourne Shellではなくkshをベースに作られたんだな
510:デフォルトの名無しさん
19/09/01 04:40:50.68 tx4fDw07.net
ん?
Bourne Shellに機能拡張した部分の最低限の共通仕様
Bourne Shellありき
どこのぞのバージョンが、それに a b c etc... な機能を追加
どこのぞのバージョンが、それに b c d etc... な機能を追加
Bourne Shell + b + c = POSIX
という意味だろう>>480のいう最低限の共通仕様は
どう、日本語になってないの?
511:デフォルトの名無しさん
19/09/01 04:41:03.98 YaEsaVCE.net
>>477
> 候補は幾つかあるものの出しようがない。
候補が有るなら出せるのでは?w
後方がいくつか有るというのなら、その候補を言ってみなよ。
その中で最後に作られたもの(or 一番機能が多いと思われるもの)に
すればいいだけだからさ
512:デフォルトの名無しさん
19/09/01 04:42:29.94 YaEsaVCE.net
>>502
Bourne Shellに機能拡張した「部分」
の部分とはどこの部分?
その「部分」の「最低限の」「共通仕様」がPOSIXなんでしょ?
513:デフォルトの名無しさん
19/09/01 04:43:18.76 tx4fDw07.net
>>502 に書いてあるけど?
514:デフォルトの名無しさん
19/09/01 04:44:02.38 YaEsaVCE.net
>>505
書いてないから言ってる
「部分」=○○
という形で言えばいいだけ
はいどうぞ
515:デフォルトの名無しさん
19/09/01 04:44:51.13 tx4fDw07.net
b と c だよ
516:デフォルトの名無しさん
19/09/01 04:48:27.13 YaEsaVCE.net
b と c があって、その部分の
最低限の共通仕様がPOSIXなわけね
517:デフォルトの名無しさん
19/09/01 04:49:02.25 tx4fDw07.net
そう最初から言ってる、書いてるんだけどなあww
518:デフォルトの名無しさん
19/09/01 04:49:14.02 YaEsaVCE.net
つまり、Bourne ShellはPOSIXには含まれないと
519:デフォルトの名無しさん
19/09/01 04:50:02.57 tx4fDw07.net
ああ、違う、違う読み方してんのか??
どこのぞのバージョンが、それに a b c etc... な機能を追加
どこのぞのバージョンが、それに b c d etc... な機能を追加
なんぞの共通の最低限の共通仕様だからね
520:デフォルトの名無しさん
19/09/01 04:50:42.66 tx4fDw07.net
>>510
ん?
Bourne Shell + b + c = POSIX
って書いてるんだけど?
521:デフォルトの名無しさん
19/09/01 04:51:10.99 YaEsaVCE.net
> なんぞの共通の最低限の共通仕様だからね
お前「部分」って言ったよね?
Bourne Shellに機能拡張した部分(b+c)の最低限の共通仕様
522:デフォルトの名無しさん
19/09/01 04:52:24.67 tx4fDw07.net
それに a b c etc... な機能を追加
a b c etc... なんぞは部分だわな
523:デフォルトの名無しさん
19/09/01 04:52:27.35 YaEsaVCE.net
> b と c だよ
言質とりましたーw
Bourne Shellに機能拡張した部分(b+c)
(b+c)の最低限の共通仕様がPOSIXだって言いましたー
524:デフォルトの名無しさん
19/09/01 04:53:50.39 tx4fDw07.net
なにを喜んでいるのか意味わからんな。どこになんの言質??
525:デフォルトの名無しさん
19/09/01 04:54:23.93 YaEsaVCE.net
>>515をみろ
526:デフォルトの名無しさん
19/09/01 04:55:11.18 tx4fDw07.net
だから、なんの言質かと聞いているんだが
527:デフォルトの名無しさん
19/09/01 04:56:08.38 YaEsaVCE.net
Bourne Shellに機能拡張した「部分」が(b+c)だって言質とりましたーw
528:デフォルトの名無しさん
19/09/01 04:57:06.97 YaEsaVCE.net
/\___/\
/ / ヽ ::: \
| (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ,,ノ(、_, )ヽ、,, | < まーたはじまった
| ,;‐=‐ヽ .:::::| \_______
\ `ニニ´ .:::/
/`ー‐--‐‐―´´\
529:デフォルトの名無しさん
19/09/01 04:59:06.93 tx4fDw07.net
まさか、POSIXとは (b+c)のことだって言ったと言っているわけじゃないだろうね?
Bourne Shell + b + c = POSIX
って書いてあるだろう。POSIXとはこれのことだと言っているのだろうとは俺は言っているけど。それも俺の主張ではなくて>>840の言いたいことはだがなw
530:デフォルトの名無しさん
19/09/01 05:00:27.58 JXg8T9pY.net
キチガイ VS キチガイ
ファイ!
531:デフォルトの名無しさん
19/09/01 05:00:57.18 tx4fDw07.net
>>521
× >>840の言いたいことは
○ >>480の言いたいことは
いい加減長いw
532:デフォルトの名無しさん
19/09/01 05:02:27.14 YaEsaVCE.net
>>521
だから
「Bourne Shelに」に「機能拡張した部分(b+c)」の「最低限の共通仕様」=POSIXだろ
533:デフォルトの名無しさん
19/09/01 05:03:43.36 JXg8T9pY.net
>>523
長くてもいいよ。
見てて面白いからもっとやれ。
どうせこんな場末のスレなんてチガイ同士の喧嘩かスクリプトくらいでしか活気付かないんだから。
534:デフォルトの名無しさん
19/09/01 05:04:01.75 tx4fDw07.net
>>524
それでいいよ(?)で?
535:デフォルトの名無しさん
19/09/01 05:05:08.99 YaEsaVCE.net
>>526
で、って最初から言ってる。
日本語になってないと。
536:デフォルトの名無しさん
19/09/01 05:05:14.28 tx4fDw07.net
>>525
すぐに喧嘩とか思っちゃうのねw
537:デフォルトの名無しさん
19/09/01 05:05:42.43 tx4fDw07.net
>>527
だから、どうなってないのかと聞いているんだが?
538:デフォルトの名無しさん
19/09/01 05:11:25.25 YaEsaVCE.net
>>529
Bourne Shellに機能拡張した部分(b+c)の最低限の共通仕様 がPOSIX
↑日本語になっていない
↓正しい日本語
Bourne Shellを機能拡張したシェルの共通仕様がPOSIX
まあ↑は日本語としては正しいが、言ってることは間違いだけどな
正解
Bourne Shellを機能拡張したkshのサブセットがPOSIX
539:デフォルトの名無しさん
19/09/01 05:17:42.82 tx4fDw07.net
その俺のからはその添削後の意味は取れないのね?ふーん
まあ、それならすまんかった。(なんかそうとは思えんけどw)
540:デフォルトの名無しさん
19/09/01 05:18:51.37 YaEsaVCE.net
まさにこれw
499 名前:デフォルトの名無しさん[sage] 投稿日:2019/09/01(日) 04:22:29.76 ID:5y1tL0M+ [2/2]
ごめんなさいって言えば良いのになんで突っ張るかねぇ
541:デフォルトの名無しさん
19/09/01 05:19:56.80 tx4fDw07.net
いや、言ってるけど
そこまで読めないのか?というのは拭えないというだけで
542:デフォルトの名無しさん
19/09/01 05:26:24.29 YaEsaVCE.net
で、話を戻そうか?
>>477
> 候補は幾つかあるものの出しようがない。
候補が有るなら出せるのでは?w
後方がいくつか有るというのなら、その候補を言ってみなよ。
その中で最後に作られたもの(or 一番機能が多いと思われるもの)に
すればいいだけだからさ
543:デフォルトの名無しさん
19/09/01 05:31:12.93 YaEsaVCE.net
忘れているかもしれないけど、
Bourne ShellとPOSIXシェルの機能の違いはなにか?
という話です。
544:デフォルトの名無しさん
19/09/01 13:23:16.11 fPTBNnye.net
やっぱりどこでも動くシェルスクリプトなんて幻想なんだねw
545:デフォルトの名無しさん
19/09/01 13:28:25.22 hBg0Iyqv.net
まーた始まった
546:デフォルトの名無しさん
19/09/01 13:38:39.47 sO2LPoJE.net
昨日神保町の本屋でこんな本みつけた。ペラペラの薄い本で妙に安い(300円+税)。内容は初心者向け。
シェルスクリプト入門の入門
URLリンク(ankokudan.org)
547:デフォルトの名無しさん
19/09/01 14:14:10.44 IrmDadb6.net
どうでもよさそうなものださなくていいよ
548:デフォルトの名無しさん
19/09/01 18:13:48.55 Zrnas7uJ.net
UNIXの分裂とかも、こんな不毛な言い争いから始まったんだよなw
549:デフォルトの名無しさん
19/09/01 18:27:20.62 5y1tL0M+.net
AT&Tの解体が原因じゃないの?
550:デフォルトの名無しさん
19/09/01 19:11:34.33 ugxLNVG7.net
う、うん…
551:デフォルトの名無しさん
19/09/01 23:36:59.29 V0W1RnmC.net
自分の間違いを素直に認められないやつは厄介だなw
552:デフォルトの名無しさん
19/09/02 02:57:56.84 qpVgNjbx.net
キチガイ
553:デフォルトの名無しさん
19/09/02 05:42:07.68 moJkj9e4.net
こんな場末の記事でしか偉ぶれないなんて,かわいそう。
554:デフォルトの名無しさん
19/09/02 06:47:31.22 mejwNGsW.net
こんな場末のスレで煽りしか入れられないなんて,かわいそう。
555:デフォルトの名無しさん
19/09/02 08:23:13.45 KSSQVEnP.net
>>546
自分を可哀想だと言い始めたら、人生終わりだよ
556:デフォルトの名無しさん
19/09/02 08:29:03.25 mejwNGsW.net
>>547
>>546
557:デフォルトの名無しさん
19/09/02 09:13:03.84 moJkj9e4.net
もしかして >>546 って >>545 に「言い返した」つもりなのかね。
ヤベーなw
558:デフォルトの名無しさん
19/09/02 09:29:50.35 mejwNGsW.net
>>549
>>546
559:デフォルトの名無しさん
19/09/02 10:24:24.46 PyPzRv4a.net
Bourne ShellとPOSIXシェルの機能の違いはなにか?
という話はどうなりましたか?
560:デフォルトの名無しさん
19/09/02 11:36:53.96 PWSlwBbe.net
※ 忘却の彼方に流れていきました
561:デフォルトの名無しさん
19/09/02 18:30:44.36 1C5pGEJg.net
URLリンク(tangentsoft.com)
POSIX shellと比較するならkshの方が適切な希ガス
562:デフォルトの名無しさん
19/09/02 19:04:17.99 PyPzRv4a.net
Bourne ShellとkshだったらBourne Shellの方が有名だろ?
何を持って適切と言ってるのか知らんけど
563:デフォルトの名無しさん
19/09/02 22:23:56.37 8MncpZHQ.net
逆に言えば有名だから何なんだという話でもあるなw
564:デフォルトの名無しさん
19/09/02 23:36:30.01 PyPzRv4a.net
有名だから聞きたいんだよw
UbuntuとDebianの違いはよく書きれても
UbuntuとLinuxfxの違いなんて気にしないでしょ?
言われて初めて、へー、そんなのあったんだーレベルだから
565:デフォルトの名無しさん
19/09/02 23:36:49.17 PyPzRv4a.net
UbuntuとDebianの違いはよく聞かれても
566:デフォルトの名無しさん
19/09/02 23:45:33.27 KSSQVEnP.net
>>553
$ bash -c 'unset a b;echo 10|read a;let b=a+10;echo $b'
10
$ ksh -c 'unset a b;echo 10|read a;let b=a+10;echo $b'
20
$
どっちがPOSIX的に正しいの?
567:デフォルトの名無しさん
19/09/02 23:46:05.05 KSSQVEnP.net
>>558
letは正しくないからそこは放置でw
568:デフォルトの名無しさん
19/09/03 00:05:50.68 zMaEK75z.net
ほぅ…
$ bash -c 'unset a b;echo 10| { read a;let b=a+10;echo $b; }'
20
569:デフォルトの名無しさん
19/09/03 00:13:50.73 1Annr1ic.net
>>560
へーそんな挙動するのか。
570:デフォルトの名無しさん
19/09/03 00:31:57.81 KovswbEV.net
パイプの右側がサブシェルになるのかどうかはPOSIXで規定されてない
どちらも間違いじゃないが、bashの動きのほうが多い
571:デフォルトの名無しさん
19/09/03 01:10:57.53 estwIa98.net
bash --posixでもうっかり配列は動く悲しみ
572:デフォルトの名無しさん
19/09/03 01:31:09.86 WJPOiKcg.net
>>562
多いとは?
POSIXshellはksh派生なのに動きが違うのがなんとも
573:デフォルトの名無しさん
19/09/03 02:41:22.59 KovswbEV.net
>>564
bash, dash, mksh, yash, posh が同じ動き
ksh, zsh が同じ動き
574:デフォルトの名無しさん
19/09/03 02:44:16.76 KovswbEV.net
>>564
POSIXシェルという実装は存在しない
だからkshの動きはPOSIXシェルの仕様通りと言える
bashはPOSIXシェルそのものではない。
575:デフォルトの名無しさん
19/09/03 02:56:06.66 1Annr1ic.net
>>566
「kshの動きはPOSIXシェルの仕様通り」
正確には
「kshの動きをPOSIXがシェルの仕様として採用した」
だな。
576:デフォルトの名無しさん
19/09/03 13:39:17.34 SNzApyUr.net
これマジ?
577:デフォルトの名無しさん
19/09/03 17:49:01.73 U7UFDLpo.net
>>566,567のこと?>>567の下は上と同じこと言っているとしか見えないが
だったらマジじゃないだろう
578:デフォルトの名無しさん
19/09/11 12:29:34.80 0GNwCqDq.net
POSIXは他の環境でも動く共通規約
GNUのソフトは高機能だがそれ自体が方言ということ
組み込みは機能を削ぎ落とすため色々知恵が必要
一般人はbashだけ使ってればおk
こんな認識で問題ない?
579:デフォルトの名無しさん
19/09/11 12:40:30.30 3HQIKx2V.net
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね…
580:デフォルトの名無しさん
19/09/11 12:52:40.14 IEmfVi5w.net
>>570
Linuxユーザーという前提?
POSIXに準拠していれば、多くの環境で動かすことが出来る
GNUはPOSIX準拠+高機能な拡張(標準語+方言)
GNU以外でも多かれ少なかれ拡張されてる
組み込みも完璧ではないが、多くの場合POSIX準拠に近い
一般人はWindowsだけ使ってればおk
dashで動かす必要があるなら、bashの拡張は使えない
581:デフォルトの名無しさん
19/09/11 12:53:13.99 IEmfVi5w.net
>>571
/\___/\
/ / ヽ ::: \
| (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ,,ノ(、_, )ヽ、,, | < まーたはじまった
| ,;‐=‐ヽ .:::::| \_______
\ `ニニ´ .:::/
/`ー‐--‐‐―´´\
582:デフォルトの名無しさん
19/09/11 13:53:14.59 /GwFJIf/.net
winでwsl使えるようになったし、bashが正義じゃないの?
macは知らないw
583:デフォルトの名無しさん
19/09/11 13:59:37.76 ujkZonF+.net
だからその、WSLのUbuntuの
/bin/sh は dash だっていってんの
584:デフォルトの名無しさん
19/09/11 14:06:58.77 Alp4BtBi.net
aptitude install bash
#!/usr/bin/bash
585:デフォルトの名無しさん
19/09/11 14:18:05.48 0GNwCqDq.net
>>572
Mint使ってるけどdashってどんな時に必要なの
軽さが求められるってラズパイやドローン辺り?
MacはBSDだからLinuxのコマンドオプションが使えないってのは面倒そうね
だからってそっちにcoreutils入れるのもアレだが
586:デフォルトの名無しさん
19/09/11 14:38:42.01 ujkZonF+.net
>>577
そんなもん、こんなの重いbash使うまでもないですよねってときに使うに決まってるじゃん
/bin/bzdiff:#!/bin/sh
/bin/bzexe:#!/bin/sh
/bin/bzgrep:#!/bin/sh
/bin/bzmore:#!/bin/sh
/bin/egrep:#!/bin/sh
/bin/fgrep:#!/bin/sh
/bin/fsck.btrfs:#!/bin/sh -f
/bin/gunzip:#!/bin/sh
/bin/gzexe:#!/bin/sh
/bin/gzexe:#!/bin/sh
/bin/lesspipe:#!/bin/sh
/bin/setupcon:#!/bin/sh
/bin/uncompress:#!/bin/sh
/bin/unicode_start:#!/bin/sh
/bin/zcat:#!/bin/sh
/bin/zcmp:#!/bin/sh
/bin/zdiff:#!/bin/sh
/bin/zegrep:#!/bin/sh
/bin/zfgrep:#!/bin/sh
/bin/zforce:#!/bin/sh
/bin/zgrep:#!/bin/sh
/bin/zless:#!/bin/sh
/bin/zmore:#!/bin/sh
/bin/znew:#!/bin/sh
587:デフォルトの名無しさん
19/09/11 15:20:07.21 wb8QVF41.net
bashが使えない環境のほうが特殊だよなぁ
素直に #!/bin/bash で書いときゃいいんじゃね
ところで、#!/usr/bin/env bash って使えるのか?
588:デフォルトの名無しさん
19/09/11 15:55:05.69 ujkZonF+.net
特殊だろうがbashが使えない環境は現実として存在してるわけで
589:デフォルトの名無しさん
19/09/11 20:12:45.01 sXUhuJjU.net
またひとりで必死だな
590:デフォルトの名無しさん
19/09/11 22:51:13.32 zVcNXGaB.net
またお前か
591:デフォルトの名無しさん
19/09/12 00:11:11.54 GvsY5hZk.net
普通にPCでLinux(とWindows)使ってるだけならbashだけでなんにも困らないよなあ
これはLinuxに限らずちゃんとしたUnixを使う場合もそうだけど、客先で使ったり客に何かを提供する場合は気を遣うべきだが
自分で自由にできるAIXやHP-UXならbashインストールすりゃいいんだし
592:デフォルトの名無しさん
19/09/12 01:59:12.99 Uy9QyXie.net
つまりPOSIXなんてピエロだとwww
593:デフォルトの名無しさん
19/09/12 02:11:14.84 iqiqB/tU.net
オープンソース開発者「そら、お前がお前のためだけのツール作るなら、それでいいだろな。責任もなんにもないし」
594:デフォルトの名無しさん
19/09/12 02:18:54.66 xw2iu/gH.net
MITとかの主要なOSSライセンス読んでみろ。
ソフトの使用でどんな損害被っても作者は責任持ちません。
それに同意しないと使えませんて書いてあるだろ。
オープンソース開発者こそ責任もなんもない。そのためのライセンスだから当たり前だが。
何を勘違いしてんのかねこいつはw
595:デフォルトの名無しさん
19/09/12 07:53:28.61 umd/llTn.net
>>574
macOSもzshがデフォだから実質Bashの機能が使える。
596:デフォルトの名無しさん
19/09/12 07:54:28.26 YLSbOzHc.net
JavaだとJREまるごとついてくるソフトも珍しくなかったし、
今だとコンテナでlibcからなにまで添付。
ストレージの容量に気を使わなくてよくなってるんだから時代に合わせて
開発するのが良いんじゃないかね。
597:デフォルトの名無しさん
19/09/12 07:55:04.48 umd/llTn.net
まーーーたいつもの自称神のPOSIXキチが暴れてんのか。
598:デフォルトの名無しさん
19/09/12 09:05:58.55 iqiqB/tU.net
>>587 問題はシバンをどうするかだよ。 zshを使うには#!/usr/bin/zshとしないといけない bashなら#!/bin/bashだ だがzshとbashをうまく使い分けてくれるわけじゃない シバンは#!/bin/shとするしかない そうするとUbuntuではdashになる
600:デフォルトの名無しさん
19/09/12 10:57:28.70 d/tSjguy.net
#!/usr/bin/zsh にすればいいだろう、そういう話でもあるのに特定のヤツだけがなぜか拘っているだけだろに
そいつもたいしたもん作ってないくせに
601:デフォルトの名無しさん
19/09/12 11:04:35.83 6grXRSs+.net
だけどそうするとzshが必須になるって話でしょ
602:デフォルトの名無しさん
19/09/12 11:12:45.55 d/tSjguy.net
>>587はzshがbashの代替になるという話じゃないの
bashとの違いはあるだろうけど、些細なちょっと直せばいいというのを含んでの
そもそも一般人は=特定の環境で動けばいいだけの人はの話でしょう
603:デフォルトの名無しさん
19/09/12 11:23:02.84 6grXRSs+.net
「一般人」をオレオレ定義して語るのはやめましょう
複数の環境を使う一般人もいるわけです
604:デフォルトの名無しさん
19/09/12 11:52:17.18 7qK8Dq0y.net
zshスクリプト書くならzsh必須
bashスクリプト書くならbash必須
当たり前の話だ
605:デフォルトの名無しさん
19/09/12 11:55:43.46 Xwf8i9TU.net
あたり前田のcracker
606:デフォルトの名無しさん
19/09/12 12:04:51.42 d/tSjguy.net
>>594
大多数でもなんでもいいけど、そういう意味だろう。それでも読めなさそうだが
607:デフォルトの名無しさん
19/09/12 12:40:22.35 6grXRSs+.net
一般人を勝手に定義すんなって言ってるのに、
そういう意味だろとか、わかってなさすぎw
一般人にそういう意味はありません
608:デフォルトの名無しさん
19/09/12 12:43:04.42 d/tSjguy.net
話の通じないこだわりぶりは、いつものか
609:デフォルトの名無しさん
19/09/12 12:45:16.02 6grXRSs+.net
>>599
お前が「いつもの」だって言うのはわかってるぞ
610:デフォルトの名無しさん
19/09/12 12:45:43.48 6grXRSs+.net
/\___/\
/ / ヽ ::: \
| (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ,,ノ(、_, )ヽ、,, | < まーたはじまった
| ,;‐=‐ヽ .:::::| \_______
\ `ニニ´ .:::/
/`ー‐--‐‐―´´\
611:デフォルトの名無しさん
19/09/12 12:47:01.39 d/tSjguy.net
どういつものなんだか
612:デフォルトの名無しさん
19/09/12 12:54:03.95 6grXRSs+.net
シェルスクリプトの話をしないやつだよ
613:デフォルトの名無しさん
19/09/12 12:56:58.88 d/tSjguy.net
自分でできないのにww
ないすボケと言って欲しいのかw
614:デフォルトの名無しさん
19/09/12 13:01:35.95 6grXRSs+.net
いいからシェルスクリプトの話をしろよ。まったく
615:デフォルトの名無しさん
19/09/12 13:04:19.98 d/tSjguy.net
>>601から全て自分自身に対して言っているのね?なるほど納得
616:デフォルトの名無しさん
19/09/12 17:43:49.36 umd/llTn.net
ここまで言われてなおシェルスクリプトと無関係な煽りを書き込めるって相当だぞ
617:デフォルトの名無しさん
19/09/12 18:46:23.43 i3mmqxJn.net
exec 2> >(tee -a stderr.log >&2)
後ろの>&2ってどんな意味なんです?
618:デフォルトの名無しさん
19/09/12 18:46:26.98 Um0WsLAR.net
bashが必要になるようなものはそもそも選択する言語が間違ってると思う
619:デフォルトの名無しさん
19/09/12 19:42:51.04 WUiTiHRA.net
>>608
stderrのをだから(サブシェル内の)stderrに出力、それが無ければstdoutに出力
あんまそれほど意味はなさげのような気がするけど
620:デフォルトの名無しさん
19/09/12 20:41:45.14 WUiTiHRA.net
インタラクティブ、もしくは、それ以下のスクリプトでサブシェルのstderrの先を変えようにも変えようがないし、やるならその前でしかなと、意味はなさげと思ったが、
それが入っているスクリプト起動時にリダイレクトする場合には意味があるか。(コンソールへの)stderrいらないから捨てるとか
hoge.sh
#!/bin/bash
exec 2> >(tee -a stderr.log >&2)
...
./hoge.sh 2> /dev/null
>&2があるので、(コンソールへの)stderrはうまく捨てれる
621:デフォルトの名無しさん
19/09/13 17:57:13.42 DBJTu1IU.net
bashのプロセス置換機能を活用して、シェル作業やスクリプト書きを効率化する
URLリンク(sechiro.haten) blog.com/entry/2013/08/15/bash%E3%81%AE%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E7%BD%AE%E6%8F%9B%E6%A9%9F%E8%83%BD%E3%82%92%E6%B4%BB%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E3%82%B7%E3%82%A7%E3%83%AB%E4%BD%9C%E6%A5%AD%E3%82%84%E3%82%B9
そのスクリプトの出処はここだな
出力のプロレス置換ってこう使うのか
入力のプロセス置換はよく使ってるけどそっちはどうもな
622:デフォルトの名無しさん
19/09/14 14:53:58.72 pQ8OW4Ak.net
プロレス乙
623:デフォルトの名無しさん
19/09/14 15:54:17.46 tdzCu94K.net
プロミスの間違い
624:デフォルトの名無しさん
19/09/14 17:27:42.22 niUt0I6q.net
サラ金市ね
625:デフォルトの名無しさん
19/09/15 16:58:31.20 BxQhi0/5.net
grepは自身で上書きすると中身空になるけど回避方法ある?要はspongeなんだけども
626:デフォルトの名無しさん
19/09/15 17:06:24.59 b8Gz5Yn9.net
data=$(grep ~); echo "$data" > ~
627:デフォルトの名無しさん
19/09/15 17:10:14.49 riyG3w3b.net
>>612
こんなのが出たので見るのを止めた。
この接続ではプライバシーが保護されません
sechiro.hatenblog.com では、悪意のあるユーザーによって、パスワード、メッセージ、クレジット カードなどの情報が盗まれる可能性があります。詳細
NET::ERR_CERT_COMMON_NAME_INVALID
628:デフォルトの名無しさん
19/09/15 17:13:13.56 b8Gz5Yn9.net
>>618
お前のパソコンなんかおかしくなってるぞw
629:デフォルトの名無しさん
19/09/15 17:15:19.48 b8Gz5Yn9.net
ハッテンブログじゃなくてはてなブログだな
630:デフォルトの名無しさん
19/09/15 17:18:49.85 LMFjfaUx.net
hattenblogこわい
631:デフォルトの名無しさん
19/09/15 17:28:57.92 4TgO8+RX.net
5ch では、はてなブログのURL を貼ってはいけない!
書き込み禁止画面が出ずに、いきなり吸い込まれて、
アクセス禁止になるようにしてあるから、超危険!
同様に、twitter の長いURL にも、吸い込まれるものがあるらしい
そこだけ、全角などに変換した方がよい。
hatenblog
632:デフォルトの名無しさん
19/09/15 17:32:44.42 4TgO8+RX.net
>>612
のURL は、証明書エラー!
HTTPS の証明書が切れてる!
633:デフォルトの名無しさん
19/09/15 17:37:11.76 4TgO8+RX.net
>>612
hatenblog
そもそも、上ははてなブログじゃない!w
a が無い
はてなブログは、
hatenablog
634:デフォルトの名無しさん
19/09/15 17:40:16.44 4TgO8+RX.net
>>612
hatenblog に、a を追加したら、ちゃんと見れた!
はてなブログは、
hatenablog
635:デフォルトの名無しさん
19/09/15 17:40:54.01 h836vV7+.net
URLリンク(sechiro.)hatenablog.com/entry/2013/08/15/bash%E3%81%AE%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E7%BD%AE%E6%8F%9B%E6%A9%9F%E8%83%BD%E3%82%92%E6%B4%BB%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E3%82%B7%E3%82%A7%E3%83%AB%E4%BD%9C%E6%A5%AD%E3%82%84%E3%82%B9
636:デフォルトの名無しさん
19/09/15 18:39:06.79 QquDNTIJ.net
URLリンク(sechiro.%68atenablog.com)
637:デフォルトの名無しさん
19/09/15 20:14:01.28 riyG3w3b.net
>>619
スマホのChromeなんだけどね。おかしいのかね?よくわからんが。
638:デフォルトの名無しさん
19/09/15 20:17:20.74 riyG3w3b.net
>>621
あ、そういうことか。
たしかに無事開いてしまったら何か違う世界を見てしまいそうで怖いアドレスだなw
639:デフォルトの名無しさん
19/09/16 19:53:43.50 vTAkg/qq.net
16進数(最大二桁 0xFF)から8進数に変換したいんですが
bcを使う以外にsedなどを使った方法とかありますかね…?
$ printf 'obase=8;ibase=16;%s\n' 'FA' | bc
もしあれば,bcは16進数のアルファベットが大文字じゃないといけないし,
POSIX標準とはいえUbuntuとかには既定で導入されてないしで,
あまり使いたいくないんです(わがままですいません)
640:デフォルトの名無しさん
19/09/16 20:12:04.01 Zn9wpmWA.net
printf '%o\n' 0xfa
641:デフォルトの名無しさん
19/09/16 21:17:46.43 U9mfWlHU.net
8進数にパーミッション以外の使いみちなんてあったのか…
642:デフォルトの名無しさん
19/09/16 23:39:17.58 LCUbae2V.net
>>630
hex=fa
oct=$(( ($hex >> 6) * 100 + ($hex >> 3 & 0x7) * 10 + ($hex & 0x7) ))
# oct=$((0x$hex >> 6))$((0x$hex >> 3 & 0x7))$((0x$hex & 0x7)) 3桁固定版
echo "$oct"
出力が必須でない場合(変数に入れて処理する場合)は
oct=$(printf '%o\n' 0xfa) よりも速いはず
643:デフォルトの名無しさん
19/09/16 23:43:56.37 LCUbae2V.net
他にも case を使って書けるはず
最大0xFFなら
case $value in
01) ~
02) ~
:
[fF][eE])
[fF][fF])
esac
とかねw
たかだか256+α行。頑張ればFF の一桁ずつ処理すれば行は減らせるだろう。
644:デフォルトの名無しさん
19/09/16 23:46:42.80 LCUbae2V.net
>>633訂正
× oct=$(( ($hex >> 6) * 100 + ($hex >> 3 & 0x7) * 10 + ($hex & 0x7) ))
○ oct=$(( (0x$hex >> 6) * 100 + (0x$hex >> 3 & 0x7) * 10 + (0x$hex & 0x7) ))
645:デフォルトの名無しさん
19/09/17 00:06:22.06 IA1rgq5F.net
>>632
posixの範囲ではprintfで16進数から文字に変換することが出来ない
printf '\101' # => A
printf '\x41' # bashは変換できるが、dashでは変換できない
バイナリデータの処理など、文字コードを使って処理する必要がある場合は
8進数を使うほうが良い
646:デフォルトの名無しさん
19/09/17 00:09:45.15 IA1rgq5F.net
8進数よりも16進数の方が使い勝手が良いのにパーミッションが8進数なのは、
当時はまだ16進数が発明されてなかったからだったりするのかな?
シェルスクリプトもそうだけど、なんか古い時代は8進数しかなかった感じがする
それとも単なるビット数を節約しただけなんだろうか?
647:デフォルトの名無しさん
19/09/17 00:18:14.43 kEXgFQM4.net
7ビット機だったような
648:デフォルトの名無しさん
19/09/17 02:12:04.50 sr4VPY0J.net
rwxで3ビットしか使ってない必要ないと思ったからだろう
649:デフォルトの名無しさん
19/09/17 04:55:24.40 KdPNzCQK.net
パーミッションの話じゃなくて
650:デフォルトの名無しさん
19/09/17 09:45:35.22 3tDP3W6T.net
>>634
ありがとうございます!
651:デフォルトの名無しさん
19/09/17 12:39:27.59 e1bW+EWq.net
>>637
>当時はまだ16進数が発明されてなかったからだったりするのかな?
どこでなにが「発明」を指して居るのかわからんが、コンピュータ業界コンピュータサイエンス(?)としては当時でも普通に16進数があっただろう。スイッチをパチパチしてマシン語を打ち込む当時のコンピュータでは打ち込むプログラムは16進数で書いてたようだから
Unix version 1 は 18ビットマシンの PDP-7 でから始まり、すぐに PDP-11 に移行したがその名残だろう、K&R C の文字リテラルでは8進数表現しかできないのとかは、また、K&R C の影響じゃね
PDP-7 は 18ビット= 3 3 3 3 3 3 で表した方書いた方がきりがいいからそれが普通のような感じだったんじゃね、今でもパーミッションは3ビットに収まっているので3ビット区切りで表した方が書いた方がわかりやすいのと同じように
652:デフォルトの名無しさん
19/09/17 12:48:38.39 N6BvjGdd.net
昔はなぜか 12bit 15bit 18bit 24bit 36bit あたりのマシンが多い
653:デフォルトの名無しさん
19/09/17 13:26:02.16 e1bW+EWq.net
そうなの。見物したスイッチをパチパチしてマシン語を打ち込む当時のコンピュータは16bitだったから、PDP-7(というかPDP-11の前までのDEC)が異端かと思ったw
654:デフォルトの名無しさん
19/09/20 09:32:25.18 pw3H64dJ.net
16進数から8進数への変換って↓
$ hex=fa; printf '%o' $((0x$hex))
↑こういうのだとPOSIX違反?
655:デフォルトの名無しさん
19/09/20 13:37:02.90 fQRmEVoK.net
POSIXは知らんが、 古いzsh? は $((0x$hex)) が使えなくて $((16#$hex)) だった気がする
もしくは $((011)) が zshでは8進数にならなくて $((8#11)) と書かないといけない
という問題だったかもしれない。まあ忘れたw
656:デフォルトの名無しさん
19/09/20 15:46:33.91 pw3H64dJ.net
ふむ。ということは今であればほぼ問題ないという訳か。
thx
657:デフォルトの名無しさん
19/09/20 18:40:57.99 YblgUZDU.net
>>644
基本的にメインフレームってカテゴリのコンピュータはCPUも自社設計だったので
8bit単位じゃなく自分たちの使いやすいbit数だった
ザイログとかモトローラのCPUを使っていると基本的に8bitの整数倍になる
658:デフォルトの名無しさん
19/09/22 22:42:51.90 UP8ZY9Jm.net
symlnkのフォルダからファイルをmvすると実体パスの方で移動するけどmvの仕様?
659:デフォルトの名無しさん
19/09/22 22:58:25.61 wuCdbk0L.net
移動なら実体を移動しなきゃ移動しないだろう、ファイルシステム的に
660:デフォルトの名無しさん
19/09/22 23:05:40.23 QKufl6gy.net
例えば/a/b/cがあって、/x/yが/a/bを指すとする。
cd /x/y; mv c ..したときにcが/x/cじゃなくて/a/cになるという話なら仕様。
実際はcd /x/yの時点でカーネル的には既に/a/bに移っている。
pwdして/x/yと表示されたり、プロンプトに/x/yと出たりすることがあるのは、シェルがそう見せているだけ。
外部コマンドを呼んだ時点で/x/yにいるという情報は伝わらない。
661:デフォルトの名無しさん
19/09/22 23:22:54.08 dHMqf7rP.net
シェルによっては今いるディレクトリをシンボリックリンクのままPWD環境変数に出力するから、外部コマンドでも>>651の場合に/a/bではなく/x/yにいると分かることもある
だからmvでもやろうと思えば環境変数によって動作をかえて/x/cに移すこともー応可能ではある
ただ普通はそういう危なっかしい動きはしない
662:デフォルトの名無しさん
19/09/23 00:58:42.07 XnqhgXWR.net
なるほど
~/dir/foo.txtがあって、dirのリンクを~/Desktop/dir_linkに作ったんだ
んでdir_linkからmv foo.txt ../したらDesktopになくてあれってね
シンボリックリンクはあくまで別名だって念頭に置かないといつかやらかしそうだなぁ
663:デフォルトの名無しさん
19/09/23 13:44:18.78 uT43KuRv.net
シンボリックリンク自体はカーネルっていうかファイルシステムの機能であって
シェルの機能じゃないよね?
シンボリックリンクされたディレクトリへの移動やその表示が、シェルの機能?
664:デフォルトの名無しさん
19/09/23 14:55:36.41 16gV8N0U.net
シンボリックリンクはただのファイルで、APIが機能を提供してるだけだろう
ハードリンクはファイルシステムの機能だろうが
665:デフォルトの名無しさん
19/09/23 15:20:14.51 0wgm+uqt.net
シンボリックリンクはPOSIXで決まっているが、
シェルスクリプトとは関係ない。
シェルとも関係ない。すれ違いだ。
シェルスクリプトの話をしろ。
666:デフォルトの名無しさん
19/09/23 15:43:16.78 PpvL3bdr.net
シンボリックリンクもハードリンクもファイルシステムの機能だ
667:デフォルトの名無しさん
19/09/23 15:44:56.02 mZE+d06B.net
ドヤァ
668:デフォルトの名無しさん
19/09/23 16:01:07.98 16gV8N0U.net
>>657
どこまでをファイルシステムかと言うのかだが、論理矛盾とかリンク切れとかあってもなんも関係ないのだから低レベル=どのファイルシステムでフォーマットする?というファイルシステムのファイルシステムではないな
そのレベルではファイルとフラグを提供しているにすぎない
APIも含めたOSがアプリケーションに対しての提供するファイルシステムといえばファイルシステムだろうが
669:デフォルトの名無しさん
19/09/23 16:41:43.41 aoth6Tve.net
まぁ、いずれにしても、ここではスレ違い
670:デフォルトの名無しさん
19/09/23 16:58:42.91 COQ8/G13.net
シンボリックリンクやハードリンクはOSの機能
ファイルシステムはそれを実装するだけ
(FATのように実装してないものもある)
671:デフォルトの名無しさん
19/09/23 17:01:20.42 PpvL3bdr.net
アホばっかw
672:デフォルトの名無しさん
19/09/23 17:09:58.15 fWeAQpZu.net
自戒か
673:デフォルトの名無しさん
19/09/23 17:22:55.59 qNyZUwSM.net
ファイルシステムはOSの提供する1つの機能だろ
674:デフォルトの名無しさん
19/09/23 20:09:09.12 uT43KuRv.net
いつからカーネルがOSに掏り替わった?
675:デフォルトの名無しさん
19/09/25 16:36:07.25 vuS5tsH7.net
カーネルってファイルシステム含まないでしょうが
676:デフォルトの名無しさん
19/09/25 17:26:48.60 Fy/ppuPa.net
子供がまだ食ってる途中でしょうが
677:デフォルトの名無しさん
19/09/29 15:56:27.36 kt1IDkk5.net
誠意って何かね
678:デフォルトの名無しさん
19/09/29 17:07:22.81 G1Omq4Sq.net
金
679:デフォルトの名無しさん
19/09/29 19:09:52.55 VaR9nylT.net
女だったらアレかもしれんが
680:デフォルトの名無しさん
19/09/29 19:22:34.45 CY5JaLwa.net
俺が定期的にお題を出してやらないとすぐクソスレ化するなw
681:デフォルトの名無しさん
19/09/29 19:31:49.84 cn7qdGIP.net
Oh, I like Japan.
Japanese are crazy. Ha ha ha.
Japanese are pigs, pigs, you know.
Moneys and they have small cocks you know short legs yellow monkeys.
Do you understand?
682:デフォルトの名無しさん
19/09/29 19:34:18.39 RIFVILY+.net
POSIXの話するから荒れて盛り上がるから誰かしてよ
683:デフォルトの名無しさん
19/09/29 19:34:36.19 RIFVILY+.net
POSIXの話すると荒れて盛り上がるから誰かしてよ
684:デフォルトの名無しさん
19/09/29 20:34:15.29 1ct4yMlj.net
POSIX準拠で固定小数点ライブラリほしいな
小数使うことは稀だけど、たまに無いとめんどくさい
exprは外部コマンドで遅いので却下w
685:デフォルトの名無しさん
19/09/29 20:53:22.53 UgGWrkoZ.net
bashって便利だけど計算部分だけマジでダサいな
1+1が
$((1+1))ってなんなんだよ
686:デフォルトの名無しさん
19/09/29 21:19:57.63 1ct4yMlj.net
どの言語にも言えることだけど、
ダサい部分ってのは互換性のためだよ
シェルスクリプトは外部コマンドを関数として呼び出せて、
そして外部コマンドに使える文字は、ファイルに使える文字と同じ
だから例えば@とか%とかいう文字でさえ、コマンド名として使える
だから、安易に記号を追加するわけにもいかないし予約語も増やせない。
$に関してはシェルスクリプト当初から特殊記号だったから
新たに特殊記号や予約語を増やすのではなく$を拡張するという方法を採用したのだろう
互換性は一番大事だからね
687:デフォルトの名無しさん
19/09/29 21:21:56.71 1ct4yMlj.net
補足
例えば「1 + 1」は、"1"コマンドを、+と1という引数で呼び出すという意味になるし
「1+1」だと"1+1"コマンドになる。
選択肢が限られるんだよね
688:デフォルトの名無しさん
19/09/30 06:57:25.74 Ceph+2oU.net
$ awk 'BEGIN {print 0.1+0.2}'
0.3
bcより使いやすい悲しみ
689:デフォルトの名無しさん
19/09/30 13:47:50.63 bgqbOy9v.net
POSIXの仕様書,
算術展開での(浮動)小数点演算は今度の2020年度改訂で一部解禁されるらしい。
ちなみに時を同じくして$'\n'←みたいな書式も解禁。
やったぜ。
690:デフォルトの名無しさん
19/09/30 14:14:05.05 gJLA2fQe.net
やったぜ。
691:デフォルトの名無しさん
19/09/30 14:57:01.11 seE3nGDx.net
石器時代かよワロタw
692:デフォルトの名無しさん
19/09/30 14:59:09.67 1VQTT5dv.net
生理がこないんですけど
どうしたらいいですか?
693:デフォルトの名無しさん
19/09/30 15:14:42.58 g4qimp0d.net
俺も生理来たことないわー
694:デフォルトの名無しさん
19/09/30 15:24:33.48 g4qimp0d.net
>>680
どこ情報ですか?
695:デフォルトの名無しさん
19/09/30 17:46:55.62 zGRcNdYK.net
もしもし、先生!もしもし!
だけどもねー、実はあのー、子供つくらないようにしてるんですよね、わたくしも本当に辛くてですね、子供には遺伝しないでしょうか?
696:デフォルトの名無しさん
19/09/30 19:45:29.40 bgqbOy9v.net
>>685
URLリンク(austingroupbugs.net)
こことか。
697:デフォルトの名無しさん
19/09/30 20:35:29.76 sHSicWZI.net
>>687
いや、小数の話
698:デフォルトの名無しさん
19/09/30 21:58:43.29 M1BD3UNk.net
しょうっすか…
699:デフォルトの名無しさん
19/09/30 23:03:44.06 qRuhgEzP.net
無理にシェルスクリプトだけで小数対応しなくても、
perl -e "print 0.2*0.3"
とか、いろいろやりようはあるからあまり必要性を感じない。
700:デフォルトの名無しさん
19/09/30 23:20:20.33 nI7iDoAi.net
>>690
大量に計算をするとプロセス呼び出しになるから遅いんだよ
$ time ksh -c 'for i in $(seq 1000); do n=$(echo "0.2*0.3" | bc -l); done'
real 0m1.921s
user 0m1.762s
sys 0m0.715s
$ time ksh -c 'for i in $(seq 1000); do n=$((0.2*0.3)); done'
real 0m0.009s
user 0m0.009s
sys 0m0.000s
たったの1000回でここまで差が出るからね
701:デフォルトの名無しさん
19/09/30 23:28:35.91 qRuhgEzP.net
意図と違うと思うが、
time perl -e '$j=0; for($i=0;$i<1000;$i+=1) { $j+=0.2*0.3; }; print $j'
とか、別にシェルスクリプトだけに頼らんでもなんとかなってしまうというか・・・・
702:デフォルトの名無しさん
19/09/30 23:29:54.18 nI7iDoAi.net
だから出来るできないの話はして無くて
遅いって話をしてる
703:デフォルトの名無しさん
19/09/30 23:35:15.29 1VQTT5dv.net
>>692
これで事足りるな
704:デフォルトの名無しさん
19/09/30 23:58:52.54 nI7iDoAi.net
perlは入ってない環境も有るのでその点でも駄目だしね
705:デフォルトの名無しさん
19/10/01 00:02:33.23 cNB/gbgI.net
>>679
これで事足りるな
706:デフォルトの名無しさん
19/10/01 00:27:03.86 rxcb8vGn.net
必須すぎやろw
707:デフォルトの名無しさん
19/10/01 01:47:40.69 SPlRKvH8.net
なになに縛りが好きなマゾなんだろうw
708:デフォルトの名無しさん
19/10/01 02:00:19.69 rxcb8vGn.net
そんな事する必要がないなら縛りって言ってもいいけど、
perlが入ってない環境は実際に存在するからね
709:デフォルトの名無しさん
19/10/01 02:09:56.58 ESup7bfu.net
awkも使えない環境で何やるんだよw
710:デフォルトの名無しさん
19/10/01 02:09:58.85 PTA8MEY/.net
>>679
711:デフォルトの名無しさん
19/10/01 02:36:49.10 eGCx9XC9.net
>>700
awkはbusyboxに入ってるよw
712:デフォルトの名無しさん
19/10/01 09:01:32.62 O2y9F
713:dCY.net
714:デフォルトの名無しさん
19/10/01 09:11:30.09 ZA6pNaC0.net
POSIXで縛るだけではPOSIX未満のbusyboxで動かなかったりするからね
可搬性を高くするにはPOSIXで規定されたコマンドであっても
なるべく使わないほうが良い
715:デフォルトの名無しさん
19/10/01 10:51:02.41 CGhZJwfl.net
どういうことなの…
716:デフォルトの名無しさん
19/10/01 11:09:51.43 ZA6pNaC0.net
ここはシェルスクリプトのスレ
つまり可搬性とはシェルスクリプトの話をしてる。
シェルスクリプトではよく外部コマンドを呼び出す
しかし外部コマンドはOSによって違う。
特に基本的なコマンドは、各OSでバラバラに作っていたり
独自の修正を入れており複数の実装があり微妙に動きが異なっている。
例えば、LinuxのsedとMacのsedでは使える命令が違う。
POSIX準拠のコマンド(もちろんオプションなども含む)で規定されてるものだけを
使っていれば可搬性はそれなりにあるが、それでも完璧じゃない。
例えば組み込みで使われるbusyboxはPOSIX準拠コマンドのサブセットが実装されてる。
だから本気で可搬性を高くしようと思えばPOSIX縛りでも不十分。
POSIX準拠のコマンドが信じれない。という前提にたてば
思い切って外部コマンドすら呼び出さない、完全にシェルスクリプトだけで
実装するのがもっとも可搬性が高い。
もちろん限界は有るので実際には出来る限りシェルスクリプトで作って、
外部コマンドは必要最小限、必要に応じて互換性を吸収するようにラッパー関数を作る。
ということになる。
717:デフォルトの名無しさん
19/10/01 15:50:14.87 P1455Lxu.net
可搬性に異常に拘っているのは一人か二人しかいないけどな
可搬性に拘ってないというレスにも可搬性を押し付ける
718:デフォルトの名無しさん
19/10/01 16:28:55.36 9fvqkmcJ.net
認めろよ。
シェルスクリプトに可搬性などない。
どこでも動くシェルスクリプトなど幻想。
719:デフォルトの名無しさん
19/10/01 16:40:08.47 8eIOCDAd.net
hoge () {
echo "Hello"
}
for i in $(seq 1000); do
hoge
a=$(hoge)
done
myfunc と a=$(myfunc) の実行時間の差はなんなん?標準出力を横取りするためだけにしてはコストが高いかな
簡単に思いつくのは横取りするためパイプでで別プロセスにしなきゃとかかな?
720:デフォルトの名無しさん
19/10/01 16:46:56.18 O2y9FdCY.net
それBashでやってない?
試しにKshでやってみて。(俺環かもしれんから,速度比較は晒さない)
721:デフォルトの名無しさん
19/10/01 16:52:40.16 /6RuW8/Q.net
perlが入ってない環境ってそれは入れる必要ないんだろ
一から構築していくならそれでいいけど
722:デフォルトの名無しさん
19/10/01 16:54:32.38 8eIOCDAd.net
なるほど。ksh(だけが?)がなんか賢いかな。zsh他も差がある
723:デフォルトの名無しさん
19/10/01 17:07:00.59 cNB/gbgI.net
perlが無い環境があるからどうのこうの言うけど
kshが無い環境があるからは言わないんだなw
724:デフォルトの名無しさん
19/10/01 17:10:13.56 8eIOCDAd.net
違う人じゃね?同一人物だったらアレだけどw
725:デフォルトの名無しさん
19/10/01 18:59:48.82 8eIOCDAd.net
>>712
zsh他も差があるは、>>709で体感できる差があるが正しいか
kshでも差があるね。ループ数増やせば体感できるほどの差となるね
726:デフォルトの名無しさん
19/10/01 19:16:54.12 fust4gpU.net
>>709
forkだよ。$( ) の部分がサブシェルになってて
多くのシェルではサブシェル = 別プロセス生成で実装されてる。
そのおかげでサブシェルの中でcdを実行したり変数を使ったりしても
呼び出し元は汚染されたりしない
kshはサブシェルの実装が最適化されていて
全てではないが、サブシェルの部分を同一プロセスで実行する。
独自で状態の保存と復帰を実装してるのだろう。
URLリンク(codeday.me)
kshは速いと言っちゃ速いんだが、その(複雑な?)仕組みのせいで
バグのもとになってたりする。ということを書いてあるページが
有ったんだがどこか忘れた。
727:デフォルトの名無しさん
19/10/01 19:25:21.59 fust4gpU.net
遅い原因の本質は標準出力のキャプチャじゃないから
この二つでも違いがでる
hoge () {
:
}
for i in $(seq 1000); do
hoge
(hoge)
done
>>715
> kshでも差があるね。ループ数増やせば体感できるほどの差となるね
そうなんだよね。サブシェルのコストは以外と大きい。
だから変数に入れて使うことが目的とした関数は以下のように
グローバル変数を使って返したほうがずっと速いわけさ
hoge () {
RET=Hello
}
for i in $(seq 1000); do
hoge
a=$RET
done
728:デフォルトの名無しさん
19/10/01 19:26:55.18 8eIOCDAd.net
>>716
内部関数なのにってとこがね&普通の他の言語とはやはり違うな(まあ当然だが)という(内部汚染とかこれの本題ではないっすよ)
zshはkshを習ってだけど、ちょこちょこ習えてないなあ。kshの否定面のレスだけど、kshは人に優しいとこもあるとも思うw
a=0
ls | while read line; do
[ "$line" = 'hoge' ] && a=1
done
[ a -eq 1 ] && ...
っていう見た目他の言語的では当たり前のがちゃんと動くというwまあ、異端だけど
とりあえず、どうしようもないそういうものということでいいのね。どうも
729:デフォルトの名無しさん
19/10/01 19:30:13.87 8eIOCDAd.net
>>717
せっかくですが、ちょい本題とは違うかな。そりゃ () は...
なんで内部関数なのにサブシェルになんのかねん、他の言語的感覚ではという
まあ、内部関数だろうと、() と同じで $() もサブシェルになるということをおっしゃっりたいのでしょうけど
どうも
730:デフォルトの名無しさん
19/10/01 19:37:54.80 fust4gpU.net
>>719
> なんで内部関数なのにサブシェルになんのかねん、
考え方が違う。
コマンド置換$( ) は「サブシェルを使用して実行する」という"仕様"なんだよ
なんでサブシェルになるのか?ではなく仕様でサブシェルにすると決まってる。
ただし別プロセスにするとは決まっていない。だから子プロセスとかいう既存の
名前ではなく、新たにサブシェルという用語を作った。
サブシェルの仕様としては、「サブシェル内で行った変数などの変更は呼び出し元には伝わらない。」
などがあるが、それを実現してるなら別の別プロセスでなくてもよい。
だけど別プロセスにするほうが実装が簡単だから多くのシェルではサブシェル=別プロセスになってる。
731:デフォルトの名無しさん
19/10/01 19:41:25.43 8eIOCDAd.net
>>720
その続きなどを読んでよ。言われていることはすでに書いてあるんですけど
どうしようもないという結論が得られたのでw、
結局、こんなことにもそれなりの差があるんだから「常時それも無条件で」実行時間の差があるなんて気にするなんて無意味だなと
なにかそれが問題になったときに気にする対応すればいいだけだなという。のをそもそも言いたかったw
732:デフォルトの名無しさん
19/10/01 19:44:28.64 fust4gpU.net
>>718
> 内部関数なのにってとこがね
他の言語の場合、(基本的に)関数内の変数の変更は呼び出し元に反映されない。
つまりローカル変数になってるだろ?
それと同じなんだよ。POSIXの範囲ではlocalもtypesetもないから
シェルスクリプトにはローカル変数がない
ように思えるが、実はサブシェルを使うからローカル変数は必要ない。とも言える。
ローカル変数を実現するためのサブシェルと言える。
サブシェルの仕様としてローカル変数は必須の機能だが、別プロセスにするのは必須ではない。
サブシェル(別プロセス)と捉えるから仰々しくなってるが、
変数のローカル化と考えれば、内部関数内の変数をローカル化するってだけだから
「内部関数なのに」とは思わないだろ?
733:デフォルトの名無しさん
19/10/01 19:51:56.19 8eIOCDAd.net
>>722
なにを教えてくれてるのか教えたいのかわからないです
内部変数?内部変数環境のことは言ってないです。他の言語でもの(内部)関数を呼ぶその返り値を使うって話なんですけど
内部変数云々ならhogeもサブシェルにしなくちゃじゃないですか?内部関数という言葉が悪かったならすまんすですけど
734:デフォルトの名無しさん
19/10/01 19:52:05.05 fust4gpU.net
>>718
そのコードに関しては
ls | {
a=0
while read line; do
[ "$line" = 'hoge' ] && a=1
done
[ a -eq 1 ] && ...
}
こう書けばいいって事がわかってから悩むことはなくなったなw
上記をさらに発展して、関数化すれば以下のようになる。
hoge() {
a=0
while read line; do
[ "$line" = 'hoge' ] && a=1
done
[ a -eq 1 ] && ...
}
ls | hoge
そうするとa変数は実質ローカル変数として扱ってるんだから
スコープ的にはこっちのほうが適切だと気づくだろう
735:デフォルトの名無しさん
19/10/01 19:53:21.70 fust4gpU.net
>>723
> 内部変数云々ならhogeもサブシェルにしなくちゃじゃないですか?
使い分けるんだよ。
ローカル変数化したいならサブシェルを使う。
そうでないならサブシェルを使わないって。
736:デフォルトの名無しさん
19/10/01 19:56:56.36 8eIOCDAd.net
>>725
なんか教えたがりのようですけど、ちょっと無理があるかなと
あくまでも「他の言語的感覚では」が前提、それとは違うというのの確認でしかないんですけど
使い分けるとかそもそも内部変数の話はしてないんですよ
737:デフォルトの名無しさん
19/10/01 20:00:53.41 fust4gpU.net
>>726
他の言語感覚って言うけど、
じゃあお前いくつ言語しってんの?って話だよ。
狭い言語の知識=言語の全てって思ってるだけさ
738:デフォルトの名無しさん
19/10/01 20:02:16.96 8eIOCDAd.net
そもそものそもそもは、bcの毎回起動するのに時間がかかるというので、せっっかくの標準で暗黙的にもマルチプロセスなのでサーバ&クラアント的に起動しとけばいいんじゃねと
trap 'exec 8>&-; exec 7>&-; rm -f from-server to-server' EXIT
mkfifo from-server
mkfifo to-server
exec 8<> to-server
exec 7<> from-server
< to-server bc -l > from-server &
calc () {
echo "$*" > to-server
read result < from-server
echo $result
}
てのを書いたのよ、単なる興味的にどれだけのコスト削減できるのかを試し確認するために。で、この一連の(他の言語的には)思ってもいなかったとこでコストがあるなと。その確認だけだよ。で、やっぱり>>721のようなことだなとw
739:デフォルトの名無しさん
19/10/01 20:02:43.57 8eIOCDAd.net
>>727
はいはい
740:デフォルトの名無しさん
19/10/01 20:09:04.89 fust4gpU.net
>>728
どの言語でも、その言語を知らなければ、その言語特有の所でコストがかかるってだけだ
だからちゃんとその言語を知らなければいけない。
741:デフォルトの名無しさん
19/10/01 20:10:22.49 8eIOCDAd.net
はいはい。知っていることを延々と言われても。それも聞いてもいないのに
742:デフォルトの名無しさん
19/10/01 21:09:03.88 /EdGAgHY.net
>>726
つうか、お前の感覚の話なんか誰にもわからんだろ。
だから、馬鹿だと言う前提で説明してるだけじゃん?
それすら理解できないってことはやはり馬鹿なんだなぁと思うばかり。
743:デフォルトの名無しさん
19/10/01 21:21:30.07 T/R8ZN8b.net
ろくにシェルスクリプトのことを知らないから聞いてみた。
親切に教えてくれる人がいた。
……何が不満なんだ?
744:デフォルトの名無しさん
19/10/01 21:25:17.92 8eIOCDAd.net
何がお怒りのなのかさっぱりですけどw
745:デフォルトの名無しさん
19/10/01 21:31:30.87 8eIOCDAd.net
よくわからないが、他の言語で
func()
と
a = func()
で、こんな差があるのなんて、他にどの言語あるの?俺は知らない少々他の言語を知っているが
てか、そういうのは普通は「使えない」からそうならないようにするし、そもそもシングルプロセスを前提のが多いだろうから、他の一般的な言語でシェルスクリプトのようなのはちょっと思いつきません
func がまあ普通の速さなので、a = func もなんか他の方法があるのかなと。無いという確認はとれてお礼も言っているのになあ>>718で
関係ない(知っていることを)ことを延々とでいい加減してくれというのはあったけどw
746:デフォルトの名無しさん
19/10/01 21:52:27.77 fust4gpU.net
すべての言語はそれぞれ違っているんだが、
同じ言語がほしいのか?
747:デフォルトの名無しさん
19/10/01 21:57:08.01 Ueonb/Q5.net
みんな違って
みんないい
まつお
748:デフォルトの名無しさん
19/10/01 22:01:17.19 8eIOCDAd.net
>>736
相変わらずだね。何を言いたいのかさっぱり
返り値を使う(関数)使わない(サブルーチン)でコストがこんなにあるって話なのに
749:デフォルトの名無しさん
19/10/01 22:14:23.82 8eIOCDAd.net
そうだ、ksh(zsh)ならreadでと思ったら、逆に遅くなるのね
hoge | read a
サブシェルになるのはhoge。kshはパイプでもパイプを使わずになんちゃらを使ってなんとかかんとかwとかあったからちょっと期待したのに
あれだな、そもそもシェルスクリプトの関数の返り値はreturnでの実行ステータスしかない、それ以外の形態(テキスト)は考えていませんからこんな感じにしかなりませんってとこか
750:デフォルトの名無しさん
19/10/01 22:58:18.96 9HRGRt02.net
for ループは、while よりも遅いだろ。
bash も、dash よりも遅いだろ
ループでは、for, bashを使わない方が速い
751:デフォルトの名無しさん
19/10/01 23:34:09.29 DttT1lmW.net
returnが返り値ってw
あれはエラー情報だろ
例外と同じ。
752:デフォルトの名無しさん
19/10/01 23:35:42.98 DttT1lmW.net
パイプで処理をつなげていくシェルスクリプトにおいて
返り値=出力なんだよ
出力を読み取って、処理して出力する
そういう基本がわかってないだけ
753:デフォルトの名無しさん
19/10/01 23:53:15.78 8eIOCDAd.net
return
なんすけど。returnの意味知ってる?とかいう。いや、しつれい
エラー情報でもない、単なる終了ステータス。exit ではないのは、まあ、関数だからと、exit と区別がつかないからかなw
754:デフォルトの名無しさん
19/10/01 23:59:02.30 8eIOCDAd.net
function name () { }
が、POSIXではないのは(これからも採用されないかも?採用するの?)というのは、関数じゃねえー、所詮コマンドだなというとこかなと思ったりしてみたり、今回w
>>742そのレベルで馬鹿にできるのはあなたがそのレベルと言っているようなもんかなとw
てか、return なのにそれを返り値と見るのを頭から否定するのは、いままでの同一人物としか思えないんだけど。シェルスクリプトは知っているがシェルスクリプトしか知らないシェルスクリプトにだけ拘るw
755:デフォルトの名無しさん
19/10/02 00:19:13.78 DWeKr+Az.net
>>743
returnの意味は「帰る」
何かを戻すという意味はない
756:デフォルトの名無しさん
19/10/02 00:20:54.57 238K9SSk.net
マジで言ってるの?もっと勉強しよう、他人にアタるならw
757:デフォルトの名無しさん
19/10/02 00:20:59.41 DWeKr+Az.net
アセンブラでもreturn(RET)がある。
これも戻るという意味なだけ
呼び出し元に何かを戻すという意味はない
758:デフォルトの名無しさん
19/10/02 00:23:56.96 238K9SSk.net
アセンブラでもマクロアセンブラはあったりするけどな
戻り値をどういう形態で(どのレジスタにとか)という決まりであれば
>呼び出し元に何かを戻すという意味はない
マジで言っているの?アホらしい
759:デフォルトの名無しさん
19/10/02 00:25:12.52 DWeKr+Az.net
>>748
「マジでいってんの」しか言ってないよなw
returnを翻訳してみろ。戻るという意味しかない
760:デフォルトの名無しさん
19/10/02 00:26:09.34 DWeKr+Az.net
URLリンク(pubs.opengroup.org)
returnの説明にも、nは終了ステータスと書いてある。
return valueとは書いていない
761:デフォルトの名無しさん
19/10/02 00:30:13.30 238K9SSk.net
言うならアセンブラでなくて機械語だな。ほんとにしょうもない知識自慢
>>749
>returnを翻訳してみろ。戻るという意味しかない
マジで言ってるのとしか言えんやん。「return なんとか」とか普通にあるぞ?
>>743 にreturnしか書いてないからか?なんかしょうもないなああwなんかしょうもないけど、だったらなんかすまんな
>>750
関数として見たらだよ。すでにそういうことは>>743,744で言っているんだけど
所詮コマンドだなで終わってるよ
762:デフォルトの名無しさん
19/10/02 01:32:56.67 o4tQ0hze.net
>>735
よく分からないで批判する癖は辞めた方が良い
763:デフォルトの名無しさん
19/10/02 01:35:11.54 o4tQ0hze.net
>>751
機械語にreturnに類する語は出てこないぞ?
764:デフォルトの名無しさん
19/10/02 01:35:40.52 238K9SSk.net
「よくわからない」が何を指しているのか「よくわからない」だろう?
また単なる「語」に食いつくwいつものかとしか思えません
765:デフォルトの名無しさん
19/10/02 01:36:26.76 238K9SSk.net
>>753
イミフ。機械語は01だからな。そんな話はしてない
やっぱりいつものかw
766:デフォルトの名無しさん
19/10/02 01:39:39.82 238K9SSk.net
同一人物かどうか知らんが、>>742から同じ人物としてしまう、もうw
同じ「レベルw」でしかも同じ姿勢としか思えないので。もう十二分にそのレベルwを自ら率先して晒してしまったので>>744の後半で正解だったなと
あとはもう「教えてww」やんない
767:デフォルトの名無しさん
19/10/02 01:53:53.42 o4tQ0hze.net
いつもの妄言を喚いて自分の敵は一人だと思い込んでる痛い奴だったか
768:デフォルトの名無しさん
19/10/02 01:55:39.44 238K9SSk.net
敵www
そういう姿勢だったのね。そうだよね、あなたはw
769:デフォルトの名無しさん
19/10/02 02:46:06.49 JFJLbhDm.net
IDが変わっても判別しやすいのはいいこと
ぼんやりしてて助かる
770:デフォルトの名無しさん
19/10/02 02:51:03.64 o4tQ0hze.net
>>758
いやおまえ、オレと関係ない人を同一人物扱いしてんじゃん
771:デフォルトの名無しさん
19/10/02 02:58:29.05 238K9SSk.net
>>760
>>756をよーく読もうな。読めない?
>>753は何を言いたいの?
機械語は01だからreturnに対する語はないと言いたいの?ととって、ああまたかというw>>756なんだよ(よく読んでねw)
>機械語にreturnに類する語は出てこないぞ?
って、どういう意味?俺の理解とは別でならすまんかったちょっと続ける?
772:デフォルトの名無しさん
19/10/02 03:24:37.13 DWeKr+Az.net
知らないなら言わなければいいのにw
RET命令(Return from Procedure)
URLリンク(softwaretechnique.jp)
773:デフォルトの名無しさん
19/10/02 03:28:45.47 238K9SSk.net
>>762
なにを言いたいのかさっぱりなんですが、具体的に自分のお言葉でお願い
まさか、RETはあるがReturnは無いではないだろうし、さっぱりわからん
(そしてなんで同じやねん、その姿勢w)