シェルスクリプト総合 その31

■ このスレッドは過去ログ倉庫に格納されています
2019/08/10(土) 23:17:50.64ID:L+B8OP2P
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

シェルスクリプト総合 その30
https://mevius.5ch.net/test/read.cgi/tech/1561989867/
2019/08/26(月) 22:19:06.53ID:bOZvrPaH
perlで使える正規表現文字クラスは、
POSIXの正規表現文字クラスより簡単に書けるから、
sedより楽といえば楽だよね。
2019/08/26(月) 22:35:23.01ID:pJei9Vjv
GNU sed だとコンパイルオプションを追加すれば PCRE が
使える(-R オプション)らしいな
2019/08/27(火) 09:47:28.46ID:jAZb3mMb
perlの存在を知る前から\dや\wは使ってたからこれが使えねぇって言われた時は焦ったわ
正規表現入門では当然のようにperl版を使うけど正規表現の種類までは解説しないからな
基本だの拡張だの方言があるって知ったのはvimやgrepで悩んだ時だし
2019/08/27(火) 12:20:19.16ID:WoMQ7lMm
sed は n で次の行に簡単に飛ばせるのが使いやすかった
もっとも多くの行送りは読みにくいので過信できないが
2019/08/27(火) 18:42:49.47ID:AbLHt6c7
perlでは[\s\S]でほぼ同じことができるけどね
2019/08/28(水) 05:11:25.57ID:mFl1zXF1
C言語とシェルスクリプトの対比・協調について
「シェルスクリプトは文字列処理がある程度得意で
キャラクタによるユーザーインターフェースを作るのに向いている。
一方C言語は↑このような操作は不得手であるが
素早い数値計算やシステムAPI呼出しは向いている。
だからインターフェースはシェルスクリプトで書いて
シェルスクリプトで適切に処理した引数(例えばヌル文字を削除したり数値だけにしたり)
をC言語をコンパイルしたプログラムに渡すようにすれば
「早くて堅牢、かつ使いやすい」システムができる」

こういうのってどの程度正しい?
2019/08/28(水) 05:39:32.47ID:K2P0GJ1V
言語なんて色々有るし、C言語と対比しないほうがいいのでは?
2019/08/28(水) 07:27:17.72ID:Z/4RZqPN
>>397
どこから突っ込んでいいか分からないくらいピンぼけな文章
2019/08/28(水) 07:38:14.25ID:JyOge16s
20年前からタイムスリップしてきたんだ。許してくれ
2019/08/28(水) 08:10:37.66ID:j4+M+GB0
>>397
ちんぼ
402デフォルトの名無しさん
垢版 |
2019/08/28(水) 10:41:08.33ID:gV1iThk/
昭和何年からタイムスリップしてきたのか?
2019/08/28(水) 11:20:21.46ID:ddpchJVU
可読性が高く、CUI が作りやすい言語は、Ruby。
テキスト処理・コマンド作り・1-liner も得意

ただし、Rubyは遅いから、
ベクトル演算などを速く処理したいなら、C言語で作った、NArray ライブラリを呼び出す

その速さは、数値計算専門言語のOctave にも匹敵する!
2019/08/28(水) 11:31:26.07ID:Dqewl7QB
スクリプトの中で起動速度が一番速いのがシェルスクリプト。次がPerl。
その次はPythonとPHPが同着ぐらい。
Rubyはひときわ遅くて、シェルスクリプトの50倍。Python、PHPの3倍遅い
2019/08/28(水) 11:52:55.32ID:Z/4RZqPN
TwitterはRuby on Railsで書かれていたがScalaで書き直した
それは大量のトラフィックを捌き切れなくなったからだ
パフォーマンスの問題を解決しない限りは
死んだと言われても仕方がないな
2019/08/28(水) 12:15:10.11ID:wbjCXnts
railsってどんぐらいの規模ならいけるの
2019/08/28(水) 14:38:52.61ID:odAj9D7Z
もう10年以上前だけど、Twitterの開発者が何かのインタビューでScala移行した理由としてRubyは自前で型チェックを大量に記述しないといけないから、JavaやScalaみたいに型を指定するほうがいいって気づいたみたいなこと言ってた
海外のプログラミングサイトみたいなやつで、当時少し話題になったけど、探せばまだ見つかるかも
2019/08/28(水) 17:24:45.64ID:ZwB1MHJ/
すごいわかる
動的型付け言語使ってユニットテストで型チェック書くのギャグかよってぐらい馬鹿げてる
2019/08/28(水) 20:00:01.16ID:Z/4RZqPN
静的型付け言語の時代になったな
Scala,Rust,Swift,TypeScript...
パフォーマンスチューニングに労力使いたくないよな
2019/08/28(水) 23:53:16.25ID:7Kt8r9pr
ちょっとperlを覚える気になったけどなんで書きやすいやすくて読みにくいのか分かったわ
記号で変数の使い分ける時点でダメだった
正規表現さえ出来ればいいんだけどPerl6の展望ってどうなんですかね
411デフォルトの名無しさん
垢版 |
2019/08/28(水) 23:54:49.23ID:ddpchJVU
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 になる!
2019/08/29(木) 00:22:15.02ID:VY7wxkJm
シェルスクリプトと同じぐらいの速度とブログで読んで
perl6の処理系が高速化するまでは導入延期予定
速度さえなんとかなれば併用するつもり 新型の正規表現クール
---
perl5 の正規表現は
(?{perl-code})
(??{perl-code})
などがあるから使えると便利
2019/08/29(木) 00:40:07.63ID:mztHiQ0L
まあ考え方次第なんだけどね
$や@を使うことでスカラー変数と配列変数と連想配列変数を厳密に区別できて、違う型の変数に代入できなくするっていう
Perl6は更に進んで、静的な型指定をできるようにしようって、2000年代前半の時点で今のPHPとかJSがやろうとして方向に進んでたんだけど
2019/08/29(木) 01:56:31.92ID:mPTYynKQ
Perl 6の正規表現について - Qiita
https://qiita.com/sinya8282/items/361f13409a0ca9e3e66c
俺の知ってる正規表現と違う
2019/08/29(木) 09:08:01.33ID:VG5IecJ5
童貞「俺の知ってる性器表現と違う」
2019/08/29(木) 20:01:19.83ID:jZJUsq6Z
定期的にruby布教しては信者を得られず帰っていく
逆効果だと思うんだけどなw
2019/08/29(木) 20:57:49.50ID:VG5IecJ5
>>416
末期の日本軍みたいよな。
日本生まれのRubyがその生みの親と同じ末路を辿るとはあまりに悲しい皮肉よ
2019/08/30(金) 00:19:45.85ID:LpXSw35l
日本軍は現場を知らない奴が出世して参謀とかになってるからおかしいことになった
自分は死ぬ気が無いのに他人に市ねと命令するクズ

rubyの人は現場で手を動かしてる分、かなりマシ
2019/08/30(金) 02:13:05.42ID:/ghu33Nb
その肝心要の現場でRubyが動いてないって話をしてんだよなぁ…
2019/08/30(金) 02:39:34.78ID:1KmU2S17
ム版でここまでヘイトを集められるのはある意味ユニークスキル
2019/08/30(金) 05:01:24.34ID:+D5+4uT9
貴様ら!大日本帝国陸海軍を愚弄するか!
Ruby如きの比喩に使うな馬鹿者が!
2019/08/30(金) 05:19:46.60ID:Nlc2IKSs
ここ以外にプログラミングについて活発に議論してるとこってある?
QiitaとかTwitterみたいなとこじゃなくて匿名でかしこまってないのがええ
2019/08/30(金) 06:18:12.78ID:LpXSw35l
>>421
今の日本では馬鹿の象徴だよ?帝国陸海軍
2019/08/30(金) 07:57:05.44ID:yjTPnYwz
つーかなんで日本軍が出てくるのか意味不明
2019/08/30(金) 08:10:38.43ID:jhLEZvWx
大失敗の象徴としてだろけど、Rubyと絡めるのは意味不明
なんであれどういうものであれ批判するヤツ、アンチはことさら大げさに言うのが定番のだろう
2019/08/30(金) 08:49:34.60ID:1L0XShC3
やれやれ、じゃあまた俺がシェルスクリプトのお題でも出してやろうかね?
2019/08/30(金) 08:53:17.88ID:1L0XShC3
じゃあいつもとは趣向を変える

Bourne ShellとPOSIXシェルの違いを教えて下さい。
2019/08/30(金) 08:53:40.01ID:1L0XShC3
じゃあいつもとは趣向を変えて
と書こうとしたw
2019/08/30(金) 09:03:36.53ID:jhLEZvWx
いつもの承認欲求だけだろ
2019/08/30(金) 09:07:30.27ID:yjTPnYwz
>>422
知恵袋いけ
2019/08/30(金) 09:30:45.39ID:1L0XShC3
Bourne ShellとPOSIXシェルの違い、教えてくださらぬか?
2019/08/30(金) 10:04:47.60ID:BnHn7wdj
日英両対応のクリップボードへのコピーとペーストの部分どうしてる?
cygwin Linux mac などを
uname | grep "CYGWIN" > /dev/null && do-something
のようなかんじの分岐を copy_to_clipboard paste_from_clipboard で考えている
そして コピーのときに
cygwin だと > /dev/clipboard
linux や mac だと別の何かになる

本当は perlモジュールの Clipboard が OS の差異を吸収してくれる予定だったが
日本語だけはうまく処理してくれないから半分車輪の最発明ののようなことになった
2019/08/30(金) 10:50:41.75ID:1L0XShC3
そんなことやろうと思ったこともないんだが、
どうやってSSH越しにクリップボードに入れられるんだ?
それシェルの機能なのか?端末の機能では?
2019/08/30(金) 10:57:15.04ID:BnHn7wdj
SSH 超しじゃなく、ポータブルなコードが欲しかった
環境によってクリップボードのアクセス違うから
Xxx | copy_to_clipboad
paste_from_clipboard | Yyy
のように書けたら楽じゃないか?
2019/08/30(金) 11:18:44.20ID:yjTPnYwz
macはpbpaste/pbcopy
linuxはxselかxclip
2019/08/30(金) 11:28:41.14ID:BnHn7wdj
thanks
2019/08/30(金) 11:34:05.64ID:1L0XShC3
コピペしたいとか思わないからなぁ。
コピーはともかくペーストしたいわけでバイナリのペーストもなくはないけど
通常は出力したテキストのペーストでしょ?
ファイルに書き出せばいいじゃんって思っちゃう。
まあ別にコピペを否定したいわけじゃなくて、やろうと思わないなって話。
2019/08/30(金) 18:38:47.93ID:CkOCkFW4
Cygwinならclip.exeを呼び出せばいいんじゃない
2019/08/30(金) 19:33:44.50ID:yjTPnYwz
>>438
clip.exeはペーストできない
cygwinは/dev/clipboard
2019/08/31(土) 00:01:36.74ID:nixiltP4
getclipboard使えば
2019/08/31(土) 02:48:40.05ID:0iGUnrw4
クリップボードみたいなGUIに強く依存した(例えば画像や装飾のある文章を切り貼りできる)機能は
なかなかOS間・ベンダー間で協調したり標準化したりするのが難しそう。
素人考えだが。
2019/08/31(土) 03:00:42.96ID:4qIvp+ND
httpみたいにMIMEを流用すればいいんじゃないの?
扱えないタイプはぺっすればいいんだし
2019/08/31(土) 08:47:44.75ID:0iGUnrw4
ではその旨を各社にお伝えください。
2019/08/31(土) 08:49:53.41ID:0iGUnrw4
一個人がアレコレ妄想するぶんには訳ないけど、各々のベンダーが顧客の体験を変えることなく(つまりインターフェース面での過去互換性を最小限にして)
「ぼくのかんがえたさいきょう」のクリップボード仕様を採用してくれるとは到底思えんがね。
2019/08/31(土) 13:00:30.93ID:LtUqD47M
クリップボードってそのままのデータをやり取りするIPCだろ
2019/08/31(土) 13:02:39.70ID:MkewyPY7
それはパイプ。クリップボードはクリップボード
2019/08/31(土) 13:08:50.01ID:LtUqD47M
クリップボードは共有メモリだろパイプじゃない
2019/08/31(土) 13:13:42.31ID:MkewyPY7
IPCというならだよ。プロセス間通信という感じではない、言うような共有メモリだな
どのプロセスが書いたのか知らん知ってるフォーマットのデータを読むだけだし
2019/08/31(土) 13:18:28.51ID:LtUqD47M
IPCは共有メモリ、セマフォ、パイプなどのプロセス間通信の総称なんだが
2019/08/31(土) 13:22:09.06ID:MkewyPY7
共有メモリは広義にはIPCに含まれるだろうが、通信ではないし、クリップボードはプロセス間通信ではないな
共有メモリを使ったプロセス間通信はあるだろうけど、クリップボードがプロセス間通信かと言えば違うだろう。パイプはもろにプロセス間通信という

クリップボードってそのままのデータをやり取りする共有メモリだろ
でまさしくだし、それでいいんじゃね
2019/08/31(土) 13:26:20.90ID:LtUqD47M
共有メモリは広義にも狭義にもプロセス間通信なんだが
プロセス間でデータをやり取りするための機構だ
2019/08/31(土) 13:36:21.83ID:MkewyPY7
プロセス間でデータのやりとりさえできれば、通信するプロセス間の関係性即時性一時性なんて全く関係ないのもプロセス間通信と思えるならそうだろな
そもそもプロセス間通信をするために用意したのが共有メモリだと思うよ。共有メモリを使うから=プロセス間通信ではないだろうとは俺は思うけど。ファイルシステムもIPCになる感じになるな、そのままのデータをやり取りするなら
2019/08/31(土) 13:39:19.82ID:iNpyZmkw
つーかどれとどれのプロセスの通信なんだよw
2019/08/31(土) 13:40:17.30ID:iNpyZmkw
コピペは重要な機能なのに、標準化されなかったから
vimからemacsへのコピペすら出来ない
2019/08/31(土) 13:40:59.50ID:iNpyZmkw
UNIX思想の限界の一つだよな
2019/08/31(土) 13:43:50.78ID:LtUqD47M
IPCの意味調べてこいよ
オレオレ定義を語られても困るんだけど
2019/08/31(土) 13:48:52.24ID:MkewyPY7
自分でも共有メモリと言っているのに、IPCに拘る方がわからんわ
クリップボードがIPCと言われると違和感しかないな。ファイルシステムもになるからw言っている意味がわからんのならIPCとはなんのためになんぞやを調べた方がいいよ
2019/08/31(土) 13:51:06.96ID:LtUqD47M
だからおまえが調べてこいよ
わけわからんやつだな
2019/08/31(土) 13:56:35.05ID:ndYyEVRN
調べてきたぞ。そのうえで意見は何も変わらん。
なにか言いたいなら、自分の口で言いたまえ
つーか俺が不利になることを俺が調べると思ってんの?w
2019/08/31(土) 13:57:20.39ID:LtUqD47M
じゃあ頭悪いんだから無理するなよ
2019/08/31(土) 13:57:22.41ID:MkewyPY7
言われるまでもなく知ってるよというのを匂わせていたんだけどww

プロセスがどのプロセスが(読むか読まれるか知らんけど)書く、どこぞのプロセスが誰が書いたのか知らんのを読む
対象が共有メモリだからIPCとでも言っているようだけど?だからIPCとはなんのためになんぞやを調べた方がいいと言っているのだが
2019/08/31(土) 13:58:45.11ID:wH7D17fo
共有メモリに関数(プロシージャー)をおいて
呼び出すのがI(インターネット)P(プロシージャ)C(コール)なわけだが?
2019/08/31(土) 13:59:35.20ID:MkewyPY7
ちょっと訂正
プロセスが(どのプロセスが読むか読まれんか知らんけど)書く、どこぞのプロセスが誰が書いたのか知らんのを読む

クリップボードってそのままのデータをやり取りする共有メモリだろ
でいいだろうに、なんでIPCのこだわっているのかさっぱりわからんな
2019/08/31(土) 13:59:51.95ID:gu7Dz/47
馬鹿二匹

馬鹿1「俺のほうが知ってる。お前調べてこい。そして俺に教えろ。」
馬鹿2「俺のほうが知ってる。お前調べてこい。そして俺に教えろ。」
2019/08/31(土) 14:00:12.26ID:LtUqD47M
お大事に
2019/08/31(土) 14:02:37.03ID:ITKcc2Rb
割り込んで良い?

Bourne ShellとPOSIXシェルの違いを教えて下さい。
2019/08/31(土) 14:57:30.64ID:Zp9ErCWA
うーーんメーカー規格と標準規格で中身はおんなじとか
2019/08/31(土) 15:05:45.40ID:0iGUnrw4
まーーーた始まった。
しかも今度はシェルの話題ですらないw
2019/08/31(土) 15:11:29.97ID:0iGUnrw4
>>466
知らんけど
いわゆるBourneシェルはUnix V7あたりの「古き良き」シェルを指す?
でPOSIXはそのBシェルと前後して登場していた種々のシェルの微妙な非互換性を埋めるべく
Unix V7が全盛だった頃よりもっと後になって登場した「実装のない」シェル?
だからPOSIXシェルというのは正確にはPOSIX準拠シェルで
POSIX準拠シェルにはBシェルで使えない機能もある。具体的には set -o <機能の長い名称> とかかな?。
Bシェルが動いてる環境にPOSIXに準じた書き方をした筈の(つまり「現時点での」最大限の互換性がある筈の)
シェルを持っていっても,動かない場合がある。
POSIXはBシェルを大いに参考にはしたかも知れないが,Bシェルでも動くようにとか,
ましてBシェルと過去互換であるようになんてことは念頭に置いてない。

どうっすか先生。
2019/08/31(土) 15:16:19.89ID:a1oQmbic
>>467 >>469
あー、なりたちとかそういうのじゃなくて
何が出来て何が出来ないとか機能的な話です。
2019/08/31(土) 15:30:41.04ID:4qIvp+ND
>>470
POSIXの仕様書は読んだの?
2019/08/31(土) 15:57:20.87ID:0iGUnrw4
>>470
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html
2019/08/31(土) 16:03:38.88ID:3i1dPJsj
Bourne Shellの仕様がないと比べようがないんだが?
2019/08/31(土) 16:40:24.77ID:0iGUnrw4
「ないんだが?」←草
2019/08/31(土) 16:50:51.67ID:4qIvp+ND
>>473
ソース公開されてるから自分で読みなよ
何甘えてんだよ
2019/08/31(土) 17:01:32.42ID:3i1dPJsj
やっぱりだれもBourne Shellの仕様を知らないのかな?
2019/08/31(土) 18:16:09.72ID:0iGUnrw4
だって「いつの」「どのOSに搭載された」「どんなベンダーが配布していた」Bシェルか一切指定されてないからね。
候補は幾つかあるものの出しようがない。
2019/08/31(土) 18:19:00.41ID:0iGUnrw4
まさかと思うがBourne Shellが絶対不可侵,永久不滅の存在だなんて思ってないよな。
円周率じゃないんだから,単に「Bourne Shellの仕様」と言っただけで特定できる訳がない。
「Windows XPの仕様」←これがどれだけ曖昧な言明か,ちょっとでも真面目に
プログラミングとその文書化に取り組んだなら分かる筈。
2019/08/31(土) 18:20:26.43ID:0iGUnrw4
「Solaris 10の仕様」「Unix V7の仕様」←「Windowsのことなんてシラネーシ」みたいな反論を先に封じておくために
Windowsでない例を挙げておこう。
2019/09/01(日) 00:08:11.60ID:1i1y7fC5
POSIXって右と左で中身がガバガバだから作られた最低限の共通仕様じゃないのか
無人島じゃ家電は役立たずでもアーミーナイフならどこでも使える的な
2019/09/01(日) 00:12:22.70ID:7+2OKNJu
>>478
言い訳してるようにしか見えんが、
特定できないというのなら、一例としてお前のよく知る
○○と仮定して答えりゃいいやん
2019/09/01(日) 00:15:35.40ID:7+2OKNJu
>>480
POSIX準拠シェルの説明としては間違ってないが、
Bourne Shellとの比較であれば、POSIX準拠シェルの方が機能が多い

POSIX準拠シェルを「最低限の共通仕様」というのなら
Bourne Shellは最低限の仕様すら満たしてない使えない実装
2019/09/01(日) 00:36:05.17ID:tx4fDw07
最低限の共通仕様と言ってるだろ、最低限の仕様じゃないよ
2019/09/01(日) 00:37:19.00ID:5y1tL0M+
>>478
複数の機能の複合体のWindowsXPと、もう誰もいじってないBourne Shellを
同列に並べるあたり、必死に言い訳をしてるようにしか見えんなあ
2019/09/01(日) 01:30:55.26ID:7+2OKNJu
>>483
だからBourne Shellは「最低限の共通仕様」を
満たしてないんだってば
2019/09/01(日) 02:19:47.47ID:tx4fDw07
Bourne ShellをベースにBourne Shellの機能を満たすように作るだろ、最低限でも
Bourne Shellの機能に飽き足らず拡張した部分の最低限の共通仕様だろ
最低限の仕様といえばBourne Shellの仕様だろ
2019/09/01(日) 02:27:49.82ID:V0W1RnmC
Bourne ShellはPOSIX準拠じゃないから「最低限の共通仕様」を満たしてないんだってば
2019/09/01(日) 02:31:19.82ID:tx4fDw07
POSIXが出る前POSIXを作るときの話だよ。Bourne ShellはPOSIX準拠じゃないってズレすぎ
Bourne Shellに機能拡張した部分の最低限の共通仕様だろって言ってるだろに

そもそもだな、つっこみどころが違う、「(右と左で中身がガバガバだから作られた)共通仕様」なのか?と思うけどw
2019/09/01(日) 02:51:26.82ID:V0W1RnmC
「最低限の共通仕様」ってPOSIXのことじゃないの?
2019/09/01(日) 03:07:24.67ID:tx4fDw07
Bourne Shellに機能拡張した部分の最低限の共通仕様=POSIX
「Bourne Shellに」「機能拡張した部分の」「最低限の共通仕様」だって言ってるだろに

Bourne Shellありき
どこのぞのバージョンが、それに a b c etc... な機能を追加
どこのぞのバージョンが、それに b c d etc... な機能を追加
Bourne Shell + b + c = POSIX
という意味だろう>>480のいう最低限の共通仕様は
2019/09/01(日) 03:21:19.69ID:V0W1RnmC
POSIXはkshをベースに作った仕様だけどね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況