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

レス数が1000を超えています。これ以上書き込みはできません。
2019/08/10(土) 23:17:50.64ID:L+B8OP2P
シェルスクリプトに関する総合スレッドです。

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

シェルスクリプト総合 その30
https://mevius.5ch.net/test/read.cgi/tech/1561989867/
2019/08/10(土) 23:19:50.86ID:L+B8OP2P
お約束
・特記なき場合、POSIX 準拠の sh 可換シェルが既定です。(Bourne Shellは既にレガシーです)
 つまりシバンは #!/bin/sh です。
 特定のシェル(bash, zsh, (m|pd)ksh, (d)ash, yash, posh, fish, (t)csh など)の専用機能に依存する場合は明示しましょう。
  macOS (10.14以前), GNU/Linux ユーザー(Debian, Ubuntu 系以外) は /bin/sh の実体が bash なので*特に*注意
   自覚なき bashism---シバンが #!/bin/sh なのに bash に依存する構文を使っていませんか?
   ただし Debian, Ubuntu などでは /bin/sh の実体は POSIX sh 互換の dash ですのであまり気にしないでも大丈夫です。
  FreeBSD ユーザーは /bin/sh の実体が ash なので注意。
  Solaris, OpenBSD ユーザーは /bin/sh の実体が ksh なので注意。
  macOS 10.15以降のユーザーは/bin/sh の実体が zsh なので注意。
  android ユーザーは /bin/sh の実体が mksh なので注意。
 csh/tcshでのシェルスクリプトは*まったく推奨しません*。
  (参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIX に準拠しましょう
 有用なリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています。
 最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
  (左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIX の sh(1) に一番近いのは OpenSolaris 由来の Heirloom sh、次点で Debian などに搭載されている Dash shell
  Heirloom sh: http://heirloom.sourceforge.net/sh.html
  Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIX にはシェルスクリプトに便利な小さなコマンドがいろいろあります
 Man ページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
 apropos(1) ないしは man(1) の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
2019/08/10(土) 23:21:14.80ID:L+B8OP2P
初心者へのアドバイス
・適した道具を判断するのも頭の重要な使い方。
 シェルスクリプトよりも Per lまたは Python の方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたら man(1) を引きましょう。
・思い通りに動かないときは、まずは sh(1) の -x オプションでトレースしましょう。

回答者への注意事項
・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに「そういうのはPerl, Python使え」と回答するのはやめましょう。
 安易に Perl や Python に逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。
・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。
・例に対して、その例だけ動くコードを書くのはやめましょう。例は例です。本当に実現したいことを文章から読み取りましょう。
2019/08/10(土) 23:21:34.36ID:L+B8OP2P
参考リンク

Bourne shellの種類とか歴史とかシェルの挙動とかいろいろ詳しい
https://www.in-ulm.de/~mascheck/
2019/08/10(土) 23:57:47.48ID:L+B8OP2P
関連スレ

【Bash】Windows Subsystem for Linux【WSL】6
https://mao.5ch.net/test/read.cgi/linux/1560665525/

Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/

シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/

zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/

【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
2019/08/11(日) 00:00:50.90ID:GFStkW/c
【POSIX】 sh系互換 シェルスクリプトスレ
https://mevius.5ch.net/test/read.cgi/tech/1535195112/
2019/08/11(日) 02:27:44.34ID:d6NgfAAh
テンプレの「Version 7 UNIX の sh(1) に一番近い」ってそんな根拠ある?
むしろ「POSIX shを最もよく実装してる」ほうが適切な表現じゃね?
2019/08/11(日) 02:56:20.42ID:GFStkW/c
>>7
Heirloom shのことだとして(意図的だろうけど)POSIX shではなく
レガシーなBourne shellに近いから「Version 7 UNIX の sh(1) に一番近い」なんだよ

つまり、Version 7 UNIX の sh(1) は Bourne shell。
具体的には ArithmeticExpression $((1+2)) や
Parameter substitution のうち ${p#foo} や ${p%bar} みたいな
POSIXの仕様を実装してない。
2019/08/11(日) 03:02:13.27ID:GFStkW/c
もちろん次点のdashはPOSIX shを実装してる。
「最も」かどうかはしらんけど
2019/08/11(日) 06:42:57.65ID:d6NgfAAh
>>8
いや根拠ある?(公式文書内の発表とかで。無い気がする。)
しつこくてごめんね。小さいことが気になる性格なの。

Most scripts that run in the Heirloom Bourne Shell will run with any Unix shell that is still in use in the twenty-first century.
http://heirloom.sourceforge.net/sh.html
2019/08/11(日) 09:06:35.23ID:++HFlOfG
>>10
根拠を自分で考えるってことができない性格なんだねw
2019/08/11(日) 09:08:41.84ID:++HFlOfG
Version 7 UNIX の sh(1)やHeirloom Bourne Shellが
「POSIX shを最もよく実装してる」という根拠はないよね
(公式文書内の発表とかでw)
2019/08/11(日) 09:11:01.36ID:++HFlOfG
http://heirloom.sourceforge.net/sh.html
> Although the Bourne shell is not POSIX-conforming
意訳 The Heirloom Bourne Shellは POSIXと互換性がありません
2019/08/11(日) 09:14:38.09ID:++HFlOfG
(あ、これ、いつもの人かな?推論能力が圧倒的に低くて、書いてある内容から
「ゆえにThe Heirloom Bourne Shellは POSIXと互換性がない」を導き出せない)
2019/08/11(日) 09:16:58.74ID:lm+uP+yI
前スレ埋めてこいよw
2019/08/11(日) 09:42:08.39ID:d6NgfAAh
>>14
ワロタw
お前のそれは「推論」じゃなくて「論理の飛躍」だよ
2019/08/11(日) 09:44:11.25ID:++HFlOfG
あー、やっぱり読み取れないんだ・・・
2019/08/11(日) 09:47:59.57ID:++HFlOfG
かわいそうだから、せめて日本語訳にしてあげるね。

家宝ボーンシェル
家宝のBourneシェルは、伝統的なUnixシェルのポータブル変種です。
OpenSolarisコードから派生している ため、SVR4 / SVID3レベルのシェルを実装しています。

Bourneシェルは

・スクリプトの移植性テスト。
POSIX.2標準は既存のBourneシェルの動作と互換性のないシェルの要件を導入したため、
BourneシェルはPOSIX準拠ではありませんが、すべてのUnixシェルスクリプト言語の父のままです。
Heirloom Bourne Shellで実行されるほとんどのスクリプト は、21世紀にまだ使用されているUnixシェルで実行されます。
POSIX準拠でBourneシェルで使用可能なシェルスクリプトを記述するのは比較的簡単です。

・レガシースクリプトの処理。
いくつかの歴史的なスクリプトは、Bourneシェル独自の言語機能を使用していました。
それらをポータブルシェル言語に変換するのは難しい場合があるため、
Bourneシェルを使用して実行するのが便利な代替手段です。

・一般的なスクリプト処理。
Bourneシェルは、新しいUnixシェルほど多くの機能を提供しませんが、それでも非常に使いやすいスクリプト言語です。
また、Bourneシェルの言語は20年近く安定しており、この実装でも引き続き安定しています。
これにより、プログラマーが慣れ親しんだBourneシェルは驚くことのないスクリプト言語になります。
これは、新しいシェルの多くとは言えません。

・インタラクティブな使用。
Bourneシェルは、jshとして呼び出され 、端末で実行される場合、ジョブ制御を提供します。
もちろん、コマンド履歴、コマンドライン補完などの派手な機能はありません。しかし、これらの機能を使用すると、
ユーザーの注意をそらす傾向があります。慣れの段階の後、Bourneシェルを使用すると、
より均一で集中的な作業スタイルになります。試してみる。真剣に。
2019/08/11(日) 09:48:21.88ID:++HFlOfG
これで(他の人は)理解できたやろ?w
2019/08/11(日) 09:55:06.43ID:FACDvm3m
ムキーってなってるの?そんなに連投して
2019/08/11(日) 10:00:36.39ID:++HFlOfG
あそんでるだけやで、昨日からの続きで
2019/08/11(日) 10:05:58.63ID:lm+uP+yI
お前かわいいな
2019/08/11(日) 10:11:58.37ID:FACDvm3m
でも他人が同じようなことしたらムキーっとなってると言うよねえ
2019/08/11(日) 11:19:28.31ID:OeRZAsFl
>>7,10
derived from OpenSolaris code and thus implements the SVR4/SVID3 level
だから、Version 7 UNIX というのはいきなりっぽい
Version 7 UNIX の sh の重要性がまったくわからんが、SVR4 よりは重要、Version 7 UNIX の正当な流れを汲んだうちでの(ソースレベルで?)一番近いから、Version 7 UNIX としたんじゃないかな、そもそもソコを書いた人は

SVID3 は POSIX以前の時期での標準を作ろうとした規格のようなので、「POSIX shを最もよく実装してる」は無いんじゃないかな。SVID3とPOSIXの差異近似がわからんけど

あんま興味ない(使うことはないから)けどチラっと調べた範囲では。調べてもあんま興味わかないなw
2019/08/11(日) 12:03:55.85ID:d6NgfAAh
いや〜他人を怒らせないようにしてるんだけど
その当の他人がチガイだとどうしようもないなw
2019/08/11(日) 12:07:26.43ID:d6NgfAAh
「ムキー!ボクの意見と違うことを言うやつなんて嫌いだー!」
2019/08/11(日) 12:26:49.70ID:OeRZAsFl
落ち着こうなw
2019/08/11(日) 14:43:52.88ID:++HFlOfG
>>24
> Version 7 UNIX の sh の重要性がまったくわからんが
それな。

「Version 7 UNIX の sh(1) に一番近いのは〜」を最初に書いた当時は
まだレガシーなシェルスクリプトが存在したのかもね
このスレ元々UNIX板にあったわけだし

Heirloom shも(世間がPOSIX準拠になりつつある中)
レガシーなスクリプトを処理するために作った書かれてるし
日付を見ると2010年の話?

一般に商用UNIXと呼ばれるもの(macOSは含めない)が
閉鎖的で情報が共有されなくて、質問されても誰も確認できないでしょ?
Linuxばかり使われるようになった。だからその文章も時代に合わない。
次からは修正しておくよ。
2019/08/11(日) 15:06:11.53ID:++HFlOfG
テンプレで質問

> ・ワイルドカードは正規表現ではありません。
みんなワイルドカードって呼ぶ? MS-DOSではワイルドカードって言ってたけど
なんとなく最近聞かない気がする。かと言ってグロブと呼ぶか?というとそれも詳しい人ぐらいしか

> ・思い通りに動かないときは、まずは sh(1) の -x オプションでトレースしましょう。
-xオプションと似たやつに-vってのがあるんだね。
みんな使ってる? 俺は使ってみるも、たくさん実行がでてきて面倒くさくて結局見なかったことにしちゃうw
2019/08/11(日) 18:20:03.32ID:++HFlOfG
/bin/shの実体が/bin/bashになってる環境がなかったから時間がかかった。
今作ってやってみたけど、やっぱり、bashだとecho -n helloは
(POSIXにはない)-nを認識するね。

# which sh
/bin/sh
# /bin/sh
sh-3.2# ls -l /bin/sh
lrwxrwxrwx 1 root root 19 Aug 11 09:14 /bin/sh -> /usr/local/bin/bash
sh-3.2# sh --version
GNU bash, version 3.2.57(1)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
sh-3.2# sh
sh-3.2# echo -n hello
hellosh-3.2# exit
exit
sh-3.2# bash --posix
bash-3.2# echo -n hello
hellobash-3.2#

前スレ>>996はMacかな? (x86_64-apple-darwin18)って書いてるからそうだろうね。
Macの環境はビルドがおかしいのか時折変な動きをする。
2019/08/11(日) 18:24:50.03ID:k+c7cOcw
ええぇ、自分でMacもって言ってなかったかな?
元レスの人のがが何かはわからないが、その可能性はなくもない、だったらの話だが
エアプで見栄であれもこれもと羅列しただけ?w
2019/08/11(日) 18:24:58.94ID:++HFlOfG
へー、たしかに、macOS Mojaveのデフォルト(homebrewではない)のbash 3.2.57だと
echo -n hello が -n hello になるねw

これはひどいwww
なんでだろ。ちょっと調べてみるか。

その前に一言。だからPOSIX準拠で作れと言っただろー!
2019/08/11(日) 18:26:01.24ID:k+c7cOcw
それはお前の自説。うっかりだとしたらしょうがないで済む話
2019/08/11(日) 18:26:26.17ID:k+c7cOcw
てか、自分で確認できるくせにいろいろ妄想吐いていたのどうすんの?
2019/08/11(日) 18:27:23.91ID:++HFlOfG
>>31
デフォルトはHomebrewのbashに切り替えてるのでね。

まさかbashで同じバージョンなのに、Linuxで-nを改行なしオプションと認識して
macOSだと-nを解釈しないとは思わなかった。

まだぐぐってないけど、これ話題になってるんじゃね?
2019/08/11(日) 18:27:43.86ID:++HFlOfG
>>33
そういうお前の自説を述べられてもw
2019/08/11(日) 18:28:26.21ID:dSI5JGW8
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
2019/08/11(日) 18:28:44.04ID:k+c7cOcw
ああ、
>/bin/shの実体が/bin/bashになってる環境がなかったから時間がかかった
って。ああ、ツッコミどころ満載。わくわくしてきだぞw
そんなグダグダのヤツの傲慢な偉そうなご高説、誰が聞くかっw
2019/08/11(日) 18:31:38.54ID:k+c7cOcw
>>31
デフォルトと/bin/shは違うんですけど。/bin/shも書き換えてんのか。OSのアップデートで書き換えられるのに。まあ、ご自由にだから、いちおう信じてあげようw
でも、オマ環を理由にするのは情けないw

結局Appleが悪いにして自分のアホな妄想を否定するのはないんだな。さすがだよ
2019/08/11(日) 18:34:20.63ID:k+c7cOcw
>>39
× >>31
>>35

とりあえずあれだな。馬鹿な妄想で馬鹿にした自分が大馬鹿でしたと言いなさいw
2019/08/11(日) 18:36:37.47ID:++HFlOfG
(macから書き込んでるからID変わってるかも)

まずmacの/bin/shはシンボリックリンクではなく、
またファイルサイズが違っているので /bin/bash と完全に同じものでは無いのがわかる
(おそらくビルドオプションの違いだろう)

$ ls -al /bin/sh /bin/bash
-r-xr-xr-x 1 root wheel 618416 5 4 16:04 /bin/bash
-r-xr-xr-x 1 root wheel 618480 5 4 16:05 /bin/sh

にもかからわず、同じバージョン番号を名乗っている
(ビルドオプションが違うだけだから当然ともいえるが)

$ /bin/sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.

$ /bin/bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.

そして想像つく通り、echo -n の挙動が違う

$ /bin/sh -c 'echo -n hello'
-n hello

$ /bin/bash -c 'echo -n hello'
hello%
2019/08/11(日) 18:37:50.08ID:k+c7cOcw
だろ?そう言ってたんだけど。なに追試してんの?確認できてどうすんの?

Appleが悪いでうやむやに?
2019/08/11(日) 18:38:56.40ID:++HFlOfG
>>39
デフォルトっていうのは、OSのデフォルトシェルの話じゃなくて
デフォルトで使ってるシェルって意味だよ。
bash だけで起動するシェル。ログインシェル。
2019/08/11(日) 18:40:47.34ID:k+c7cOcw
ユーザ作った時のシェルもデフォルトシェルです。てか、そこはいいよ。信じてあげるって言っているんだから

そんなのじゃなくてな、もっと前にお前がレスしたのを始末つけろよ。なんで逃げる?w
2019/08/11(日) 18:45:07.11ID:++HFlOfG
>>42
お前の理屈は、

1. 前スレ>>975は、Macを使ってるに違いない!
2. だけど実行したら動かないから、実行してないに違いない!
3. だから、うっかり #/bin/sh にしてしまったに違いない!
4. コピペもしてない!

という根拠ない想像に基づくものだろ?


俺の理屈は「普段から Macでecho -n を使ってる人なら
Macでecho -nが動かないのを知らないはずがない」から
普段、echo -n が動く環境を使ってる。というお前とは正反対の前提なんだよ。

だからecho -nの部分に書き間違いはなく
[[ ]] がbash依存であることを知らなかったという結論
2019/08/11(日) 18:45:52.21ID:k+c7cOcw
いや、その俺の攻撃はいいから、お前のやらかしたのを始末つけなさい
47デフォルトの名無しさん
垢版 |
2019/08/11(日) 18:47:21.37ID:2JPwQqrg
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね…
2019/08/11(日) 18:48:15.91ID:++HFlOfG
まあおかげでPOSIX準拠にするべき理由が一つ増えたじゃないかw

同じbashを使っていても、挙動が違う場合がある
POSIX準拠で書きましょう
2019/08/11(日) 18:48:32.49ID:++HFlOfG
>>46
なにもやらかしてないけど?
2019/08/11(日) 18:48:53.43ID:++HFlOfG
>>47
bash依存するとそうなるだけw
2019/08/11(日) 18:49:00.05ID:k+c7cOcw
>>ID:++HFlOfG
なんで逃げる、やらかしたのは明らかだろう。カスなのか?
まあ、想像できるよ、常時偉そうにしたいんだもんな。普通のレス、単純なミスに対してもたかーいところからのいきなりなダメだしとか普通だもんな。そんなお前が自分の過ちを認めたらプライドがズタズタにでもなるんだろう

...カスだなw
2019/08/11(日) 18:49:53.93ID:++HFlOfG
宣言

今度から、echo -n を見かけたら、それはPOSIX準拠してないので
printfを使いましょうと書き込むことにする。
2019/08/11(日) 18:50:32.73ID:++HFlOfG
>>51
お前、文句言ってるだけじゃんw
やらかしてる部分はどこかを書けば、
やらかしてないという説明をしてあげるよ?
2019/08/11(日) 18:50:49.35ID:k+c7cOcw
>>49
異常だな。自分に強く言われたらすぐ反発するくせに。自分で何をどう言っているのかわかってないのか

てかそういうフリなんだろうな。>>51のままだな
2019/08/11(日) 18:52:32.37ID:k+c7cOcw
>>53
自分のレスを見直しなさい
自分の過ちがわからないのによく高慢に他人の過ちをあげつらえられるなあ

まあ、もうわかった。この繰り返ししかないだろうから、カスだと確定します
2019/08/11(日) 18:54:05.02ID:++HFlOfG
http://hints.macworld.com/article.php?story=20071106192548833
> This is not a bug. As OS X 10.5 is now certified to follow the Single Unix Specification, its /bin/sh and echo builtin now follow the specification

なるほど。OSX 10.5から仕様変更されたっぽい。

これAppleがオレオレパッチ当ててるのでは?
bash標準ではなさそうな気がする。

流石にAppleのオレオレパッチまではしらんてw
2019/08/11(日) 18:54:43.01ID:++HFlOfG
な?さっきから俺はシェルスクリプトの話題をしてる。

ID:k+c7cOcw は、俺の話題しかしてない(笑)
2019/08/11(日) 18:55:27.94ID:k+c7cOcw
逃げるばっか。自分でMacも使ってるそのためにもPOSIXとかのたまってたのに
2019/08/11(日) 18:56:17.71ID:++HFlOfG
10.4まではmacOSのbashは-nを改行なしと認識していたそうだ

> In fact, I tried echo -n from bash and sh on my 10.4 system and my Linux system and in all cases,
> the -n was recognised as a switch. On both of those machines, /bin/sh and /bin/bash were identical (in fact, on the Linux box, /bin/sh was a symlink).
2019/08/11(日) 18:56:22.80ID:k+c7cOcw
>>57
俺はとうに終わってるもん。お前もその俺のレスにレスしてんですけど?さすがだな
2019/08/11(日) 18:56:59.72ID:k+c7cOcw
(ごまかしたくてしょうがないのがアリアリ)
2019/08/11(日) 18:58:37.20ID:++HFlOfG
>>58
古いbashはLinuxで検証してるからね。
macでHomebrew使わないってありえんでしょ?
macではbashも古い3.2.57じゃなくて5.0.7を使ってるよ。
2019/08/11(日) 18:59:22.71ID:++HFlOfG
>>60
> お前もその俺のレスにレスしてんですけど?さすがだな

誰にレスしてるかではなくてレスの内容な。
お前は俺の話しかしてないけど、
俺は皆に役立つようにシェルの話をしてる。
2019/08/11(日) 19:03:26.79ID:k+c7cOcw
>>57と言っておいて我慢できなくて>>62なのか?>>58もお前だけの話題だけど?そのレスもオマ環の説明って、お前だけの話題だろうw

オマ環でそういうことをしていても、macOS使ってるなら/bin/shがbashだとわかっているだろうに。なぜ/bin/shをbashにする環境作るのがとかのたまうのかわからん。たいした使ってない=Macももただ並べただけだなという「俺の印象」w
てか、そのオマ環を理由にするのは辞めなさい、いつもの高慢なお前には情けないw
2019/08/11(日) 19:04:18.13ID:k+c7cOcw
>>63
意味わからんwさすがだな。POSIX原理主義者はやっぱり変なヤツと思うことにするぞw
2019/08/11(日) 19:05:17.46ID:k+c7cOcw
ああ、やらかしたのをうやむやにするためにか...なるほど
2019/08/11(日) 19:06:30.10ID:++HFlOfG
確認取れた。やっぱり-nを改行なしと認識しないのは、bashの動きではなく
Appleによるパッチみたいだ

http://hints.macworld.com/article.php?story=20071106192548833 の下の方に書いてあるけど
COMMAND_MODE=legacy /bin/sh -c 'echo -n hello'
と書いたら-nを改行なしオプションと認識した(legacy 笑)

この COMMAND_MODE は bashの機能ではなくAppleが用意したもの
https://developer.apple.com/library/archive/releasenotes/Darwin/RN-Unix03Conformance/

macOS特有の動きだから、それを「bashでは」いうのはおかしいね。
2019/08/11(日) 19:09:29.22ID:++HFlOfG
>>64
お前が俺にグダグダ言ってる間に答えを見つけたよ。

オマ環じゃなくて、macOS環境

お前は、bashは-nを認識しない(そのまま-nと出力される)と言っていたが、
それが間違いだとわかったよ。

bashは-nを改行なしオプションとして認識するのは正しい。(俺が今までLinuxで検証していたとおり)
ただしAppleがビルドした改変版bashでは、 Single Unix Specificationに準拠するために
POSIXでは規定されてない-nをそのまま出力されるようになってる。

まあこういう違いがあるから、やっぱりPOSIX準拠は大切だね。
2019/08/11(日) 19:10:38.51ID:k+c7cOcw
>>67
俺のレスをよく読もうな。書いてからお前がイチャモンwつけたんだからな

Macを持ってないとかならまだ許すが、自分で自らそのためにもPOSIXというひとつに挙げておいて、確認もせず、オマ環を自分で作ってそれも忘れ、
いろいろ忘れ、トンチキな妄想を吐いていたにもかかわらず、なかったことに&なにか知らんがwごまかしとしか思えないまったく真摯な態度が皆無なヤツです、いつもの高慢ちきは
と(改めてw)証明wできたので、満足しとくわw
2019/08/11(日) 19:12:20.49ID:k+c7cOcw
>>68
何を言いたいのかわからんが、現象は変わらない。そしてお前の間違いは変わらない

な?こういうやつだな、やっぱり
2019/08/11(日) 19:14:12.80ID:++HFlOfG
>>64
> macOS使ってるなら/bin/shがbashだとわかっているだろうに。なぜ/bin/shをbashにする環境作るのがとかのたまうのかわからん。

お前、macOSしかbash動く環境知らんのか?

bashはGNUプロジェクトで作られたもので、GNU環境(例 Linux)が一番に確認すべき環境だろ
bashでの動きの話をしてるんだから、Linuxで検証するのが一番手っ取り早い。macOSの話を持ち出したのは「お前が」「あとからだ」
Debinaでは/bin/shの実体はdashなんだから、/bin/shの実体がbashの場合の挙動を確認するには環境を作らなければいけない

もっとも、macOSでは、/bin/shは/bin/bashへのシンボリックリンクではなく
本物のbashでもなく、Appleによる改変版bashだったわけだけど
2019/08/11(日) 19:16:41.36ID:k+c7cOcw
>>71
トンチンカンすぎるな。めちゃくちゃ。最後だぞw安心しろww

/bin/shの実体が/bin/bashになってる環境がなかったから時間がかかった
Macあるやん、macOS使ってお前ほどの自称知っている人なら知ってるハズだろ

だよ。なにをトンチンカンなことを。まあ、わかるよ、ごまかすのに必死なのは。アホらしい
2019/08/11(日) 19:18:47.82ID:dSI5JGW8
相手は神様なんだから敬ってやれよ

> From: [36] デフォルトの名無しさん <sage>
> Date: 2019/08/11(日) 16:10:55.15 ID:++HFlOfG
>
> 現実世界では私は神なのだ
2019/08/11(日) 19:19:19.67ID:++HFlOfG
>>69
> 確認もせず、オマ環を自分で作ってそれも忘れ、

前スレ>>975でコードが書かれてから
お前は「macOS環境のbash」とは一言も言わず、
bashの場合としか言っておらず、

>>996で書いた実行ログの中にapple-darwinという文字が含まれていたのを
俺が見つけたっていう事実を忘れてないか?w
2019/08/11(日) 19:19:54.10ID:k+c7cOcw
>>73
なにそれww
オモロイとおもって書いたのかな?マジだったらオモロイんだけど
2019/08/11(日) 19:20:19.99ID:++HFlOfG
>>72
> /bin/shの実体が/bin/bashになってる環境がなかったから時間がかかった
> Macあるやん、

Macでは/bin/shの実体は/bin/bashではない。バイナリが違ってる。
ってさっき書かなかったか?
2019/08/11(日) 19:21:29.72ID:++HFlOfG
>>75
それはその数個上のレスを見ればわかるよ。

「現実世界では俺は優れたプログラマ」(といわれても証拠ないしなーw)
とか言ってるやつがいたから、そいつに対するレス。
2019/08/11(日) 19:23:55.89ID:k+c7cOcw
>>73
そのひとレスなのね。まあ、なんだ...まあ、いや、わからんwww
まあ、いいや
2019/08/11(日) 19:24:54.08ID:++HFlOfG
この話スレ建てる前に知りたかったなー。

 macOS (10.14以前), は /bin/sh の実体が (Apple改変版)bash なので*特に*注意

って書き直したい
2019/08/11(日) 19:35:35.33ID:++HFlOfG
これはひどいwww

http://moriyoshi.はてなぶろぐ.com/entry/20090208/1234108045

> Leopard の「ターミナル」で、/bin/sh の echo -n がおかしい挙動を示します。
>
> sh-3.2$ echo -n foo
> -n foo
> sh-3.2$
> 分ったこと:
>
> /bin/sh は bash だが、/bin/bash とは違うもの
> which echo すると /bin/echo と言われるが、built-in のようだ
> iTerm から起動すると echo -n はちゃんと動く
> ターミナルで /bin/sh の echo は、iBCS2 コンパチとして動くのでしょうか?
> google しても解決方法は分りませんでした。ご存知の方は教えて下さい。(_ _)
> ...
>
> kzysk: なぜか iTerm は環境変数 COMMAND_MODE=legacy, ターミナルは unix2003 になっていて、
> その違いで sh 上の echo の動きがかわるらしいです。
81デフォルトの名無しさん
垢版 |
2019/08/11(日) 22:27:57.25ID:tjpar2Yg
やっぱりどこでも動くシェルスクリプトなんて妄想なんだねw
2019/08/11(日) 22:34:19.90ID:owKtPG/2
POSIX準拠を意識してない未熟ものにとってはそうなんだろうな
2019/08/11(日) 22:39:31.82ID:owKtPG/2
POSIX準拠を意識している者にとっては、-nが使えないとか
想定の範囲内だからね。yashとか使えないわけだし。
だから最初から-nを使うぐらいならprintfを使ってる。
POSIX準拠でコードを書いてる人にとっては何ら問題ないわけ
2019/08/11(日) 22:58:12.04ID:tux8oNSc
あれだけアホ晒しても僕偉いww
2019/08/11(日) 23:02:56.27ID:owKtPG/2
俺が偉く見えてしまうのは、あんたの主観だから俺にはどうしようもないw
2019/08/11(日) 23:05:15.27ID:tux8oNSc
>POSIX準拠を意識してない未熟もの
不特定多数が含まれるというのがわからないのね
さすがあれだけアホ晒しても僕偉い人ww
2019/08/11(日) 23:08:19.13ID:owKtPG/2
不特定多数が含まれるからなんだっていうんだろう?
2019/08/11(日) 23:10:58.42ID:tux8oNSc
すげえよっ、さすがあれだけアホ晒しても僕偉い人ww脳の中身理解不能
2019/08/12(月) 00:45:59.42ID:OLWOasI9
なんでスレ進んでたのかと思ったらまたはしゃいでたのか
2019/08/12(月) 00:50:54.61ID:kdU0FwTT
神様なんだろ。許してやれ
(しかしネットは怖いな。やらかしたことがほぼ一生残る。)
2019/08/12(月) 00:56:58.46ID:LRX4Utg1
なにやらかしたの?
2019/08/12(月) 01:16:22.35ID:Mlg83N6h
よくわからん。揚げ足で騒いでるように見える。
2019/08/12(月) 01:48:53.53ID:kdU0FwTT
揚げ足というか、単に普通の失敗(理解不足)なんだけどな。
謝らないのが問題だった。
素直に謝罪しておけばよかったものを…。
2019/08/12(月) 02:03:12.93ID:tYO0tRVG
謝罪しろって韓国かよw
2019/08/12(月) 02:05:47.65ID:U5E/4roV
Mac特有の挙動(UNIXの要求に合わせるためにAppleが独自で変更してる)なのに
それに気づかないで、bashでは-nに対応してないって騒いでたんだっけ?
2019/08/12(月) 03:01:38.96ID:vrbZPf3l
そう。挙句の果てに、Macでテストしてなかった
お前が悪いとか言って荒らし始めた。
2019/08/12(月) 05:08:02.14ID:kdU0FwTT
自分に都合が悪くなるとすぐ韓国とかよく分からんこと持ちだして話を逸らすあたり,
これは重症っすね……。
2019/08/12(月) 08:13:29.23ID:TQ9KMPr7
これは人が離れて行くのも無理はないな

・自分の誤りを絶対に認めない
・人間関係は上下の主従関係のみで平等の概念がない

どこかで見たことあるような...おや、誰か来たようだ
2019/08/12(月) 08:14:46.28ID:d52ffprB
たしか前スレでも、質問してる側が下なんだから
回答する側に対してへりくだれ的なことを言ってたよな
2019/08/12(月) 08:16:14.37ID:d52ffprB
これだな。平等の概念がない

609 自分:デフォルトの名無しさん[sage] 投稿日:2019/08/07(水) 12:45:25.69 ID:WK8NJ3/V [18/28]
>>608
回答者のほうが偉いみたいな考え方。
質問者と回答者は対等です。

610 返信:デフォルトの名無しさん[] 投稿日:2019/08/07(水) 13:00:34.72 ID:9POPBXN5 [8/13]
>>609
対等じゃないよ。金を出す側と受け取る側と同じだもの。同じわけがないじゃん。
君はなんでそんな現実と食い違う思想を持ってるんだ?それでは人とのトラブルになるだけで世の中渡っていけんだろう。
2019/08/12(月) 08:22:26.39ID:TQ9KMPr7
あ、ひとつ忘れてた

・論点のすり替えが上手
2019/08/12(月) 08:38:45.76ID:HKovfvTl
またこいつは朝からシェルスクリプト「ではない」話をしてんのか
2019/08/12(月) 11:05:57.03ID:kdU0FwTT
そうせざるえないほど酷い人がいるからね。
このスレの住人は結構優しいんじゃないかな。
人格欠陥者を罵しったり無視することは簡単だけど,
その欠点を皆で指摘してくれるなんてかなり貴重だと思う。
まあどうせ当の本人は自分に対する攻撃としか捉えず,
都合の悪いことには目を塞ぐ能力をフル活用して目を翥すんだろうが。
2019/08/12(月) 11:48:18.69ID:7x51tVmW
bash 依存だけどこんな関数を作って使ってた事もあった

function _join {
local IFS="$1"; shift; echo "$*"
}

bash$ _join , {1..10}
1,2,3,4,5,6,7,8,9,10
2019/08/12(月) 11:51:12.48ID:OLWOasI9
いくらID変えても同じ言動なのがいよね
欲を言えばコテを付けてくれれば処分しやすいんだけど
2019/08/12(月) 12:15:08.81ID:kdU0FwTT
ていうか3スレくらい前からワッチョイ導入しようという話がチョイチョイ出てはいる。
2019/08/12(月) 15:40:50.17ID:FEiQT6YL
>>104
それをbash依存にしないのは簡単だよ
localの代わりにサブシェルを使えばいい

_join {
(IFS=$1; shift; echo "$*")
}

ちなみにlocalはPOSIX準拠じゃないけど、
local もしくは localと同等のことができるtypeset のどちらかが
POSIX準拠シェルのすべてに(おそらく)搭載されてるから
2パターン作ることになるが、サブシェルを使わずに作ることも可能

面倒だからOLDIFSに対比させるのが楽だけどねw
2019/08/12(月) 16:10:50.92ID:7x51tVmW
_join () (IFS=$1; shift; echo "$*")

でいいんじゃね
2019/08/12(月) 16:15:47.05ID:FEiQT6YL
>>108
その書式、使えないシェルがあるんだよ。
2019/08/12(月) 16:18:53.19ID:7x51tVmW
IFSを使う場合はデリミタに1文字しか使えないので
その後はこんな↓ふうに書き直した(けど最近は全く使うことがない)

function _join {
local d="$1"; shift; printf '%s' "$1"; shift;
printf '%s' "${@/#/$d}"; echo;
}

$ _join '->' {{1..4},5,{4..1..-1}}
1->2->3->4->5->4->3->2->1
2019/08/12(月) 16:20:03.86ID:FEiQT6YL
あ、でも今調べたら相当古いbashだけみたい。ならいいか
2019/08/12(月) 16:20:31.00ID:VzSWusfF
shellcheck のような書き方を指導する奴で
POSIX準拠の書き方でないところをチェックするツールでもあるのか?

滅茶苦茶詳しすぎる
2019/08/12(月) 16:37:37.51ID:FEiQT6YL
>>110
それをbash依存なくするにはループだろうな
たぶん誰でもわかると思うのでコードは省略w
local変数使わなくても行けるかも

>>112
shellcheck 以外だと使ったことがないけど shfmt
・・・でチェックできるのか知らない。使い方がよくわからないw

shfmtという名前を忘れたのでぐぐったら bash依存チェックするツールがあったよw
https://sourceforge.net/projects/checkbaskisms/
https://github.com/openstack/bashate

俺はもうだいたい覚えたね。POSIX準拠の書き方を調べたと言うよりも
とあるシェルで動かない。なんでや?POSIX準拠じゃないんかい。の繰り返しで。
だからPOSIX準拠だけど、シェルのバグで動かないっていうのも頭に入ってる。
2019/08/12(月) 16:53:21.75ID:FEiQT6YL
あ、たぶん>>112の疑問に答えてないw

なんで古いbashで動かないのかがわかったかと言うと
古いバージョンのシェルをビルドしたテスト環境を用意していて
単に実行して確認しただけの話。
2019/08/13(火) 12:23:48.45ID:PvshuRsa
$ ksh -c 'echo $KSH_VERSION'
Version AJM 93u+ 2012-08-01

これのAJMはなんだろう?と思ってググったけど、
コンパイル時のオプションってことでいいのかな?
https://www.in-ulm.de/~mascheck/various/shells/ksh_versions.html

After "Version" now there is a concatenation of letters indicating compile time options:

A SHOPT_AUDIT /* keyboard logging */
B SHOPT_BASH /* bash compatibility code */
L SHOPT_ACCT /* accounting */
M SHOPT_MULTIBYTE /* multibyte character handling */

Jはこれ?
J SHOPT_COSHELL /* job pools */
2019/08/15(木) 23:08:43.05ID:xN8IaB/K
前スレでboshのビルドができないと言っていた人へ
2019-08-13版でビルドできるようになってます。

2019-06-13 OK
2019-07-15 NG
2019-07-22 NG
2019-08-13 OK
2019/08/17(土) 20:53:09.43ID:R5VCpMP+
POSIXで定義されてるbatchとかatとかって使ってる?
俺は可搬性を失なう覚悟でcron使ってるけど
2019/08/17(土) 21:03:17.18ID:He41kTu9
pythonで mycron.pyを書いた
python さえ動けば
2019/08/17(土) 21:23:22.11ID:g4f/iCif
>>117
atは昔使ったことがあるけど、覚えてないレベル
batchは使ったこと無いな。

POSIXなんだよな。なんでかPOSIXの範囲にこんなものを
含めちゃっていいのか?って気がしてるw
2019/08/17(土) 21:26:52.13ID:g4f/iCif
ん?cronはPOSIXじゃないけど、crontabはPOSIXなのか?
これはコマンドは決まってるけど、それを実現しているものは決まってないってことなのかな?
2019/08/17(土) 21:30:38.30ID:R5VCpMP+
>>120
多分manと同じ感覚なんじゃないかな?
manというコマンドは決まってるけどroffの仕様は決まっていない。
2019/08/18(日) 13:02:29.86ID:zqR8kD3Y
>>119
SCCSまで含めようという動きがあるんだから
ジョブ管理くらいあってもおかしくないw

それがPOSIXにほんとうに定めるべきコマンドなのか
っていう疑念は拭えないけど。
2019/08/18(日) 13:29:09.33ID:KK6bG3/n
いつまでも完成しそうもない開発系?のツールなんかより
dateとかsortとか基本形のコマンドのオプションを拡張すればいいのに
だからいつまで経ってもMacのコマンドは貧弱でhomebrewでcoreutilsを入れなければいけなくなる
LinuxをバンドルしたWSLは便利になった。
2019/08/18(日) 19:00:47.29ID:zqR8kD3Y
単に拡張すりゃいいってもんじゃない。
どのシステムでも使えることを優先すべき。
2019/08/19(月) 03:40:41.24ID:ZZoimR+D
>>123
> dateとかsortとか基本形のコマンドのオプションを拡張すればいいのに
それな。 date +%s がPOSIX準拠じゃないとかびっくりやわw
unix timeどうすりゃいいねん。
2019/08/19(月) 04:03:23.22ID:M9mgefHn
>>124
拡張っていうか仕様の標準化だな
POSIXScript2020 とかいう仕様を作って
各社に対応を促す。

新POSIXScript2020に準拠していれば
どこでも同じように動く
2019/08/19(月) 07:34:11.92ID:JcVwKxxm
>>126
それに対応することによる各社のメリットとは?
2019/08/19(月) 08:34:19.51ID:xlQPwL5+
ないだろJK
2019/08/19(月) 08:35:48.66ID:xlQPwL5+
ていうか言語仕様の素早い更新・機能追加が好きならPython使えば?
過去互換性も同じくらい重視したいならC#-shell
2019/08/19(月) 09:33:40.73ID:W8+ngSHm
>>127
なんのためにPOSIXが出来て、みんなそれに対応してると思ってるの?
2019/08/19(月) 09:48:50.15ID:JcVwKxxm
>>130
当時と現在の状況の違いが理解できない理想主義の人?
2019/08/19(月) 09:51:47.61ID:W/U4wDij
現在ってまだPOSIX改定されてるでしょ?
歩みが遅いことを批判するのは正しいが、
そこにPOSIXはもういらないっていうのは、
POSIXの存在を否定してるよ。
2019/08/19(月) 09:54:30.67ID:xlQPwL5+
>>132
POSIX要らないって少なくともこのスレでは誰も言ってないけど
いったい誰と戦ってるの?
2019/08/19(月) 09:59:46.47ID:W/U4wDij
>>127と戦ってるんだけど?

結論としては、POSIXは必要で、POSIXは改定されてる。
新しいPOSIXに対応する各社のメリットがわからないなんてなw
2019/08/19(月) 10:13:25.39ID:U/sDEGN5
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
2019/08/19(月) 11:28:24.99ID:xlQPwL5+
文体がちょっと違うから危うく荒しに構うところだった。
いつものチガイか。
2019/08/19(月) 11:36:19.43ID:JcVwKxxm
>>134
POSIX要らないとか一言も書いてないのだが
なんか変な妄想にとらわれてる人なの?いつもの
2019/08/19(月) 11:40:44.54ID:W/U4wDij
>>137
そっちじゃないよw
新しいPOSIXに対応するメリットがわからないんでしょ?
2019/08/19(月) 12:46:41.76ID:IzREAmBO
シェル単体の交換可能性を担保したところで出来ることはたかが知れてる。
システムとして実用的なレベルまで規格拡張しないと使いものにならない。
現状のPOSIXは最低限のI/F仕様を規格化するだけの中途半端な規格だ。
将来的にネットワーク、ハードウェア管理、セキュリティなどシステムとしての仕様が標準化され、全てのシステムがそれに準拠するまでは、POSIXに固執する必要性は無いと言っていい。
もちろん、可能な範囲で可搬性を追求することは間違いではないと思うぞ。現状では限界があるということだ。
2019/08/19(月) 12:51:57.60ID:4iryI+Qn
現実として問題になってるのは、半ば当たり前のように書かれる
Linuxで動くコマンドが、macOSで動かないことだよな
ググって、なるほどこれでできるのか、って思ってもmacOSで動かないのは問題
2019/08/19(月) 12:52:53.15ID:4iryI+Qn
>>139
POSIXはシェルだけを決めてるものじゃないよ。
コマンドとそのオプションも決めてる。
2019/08/19(月) 12:58:21.94ID:IzREAmBO
>>141
シェル「だけ」とは言っていない。
ここはシェルスクリプトのスレだから、シェルについて言っている。
POSIXについては>>2を読めば分かる。
2019/08/19(月) 13:02:42.41ID:4iryI+Qn
>>142
主張がよくわからないんだけど
「シェル単体の交換可能性を担保したところで出来ることはたかが知れてる。」から、
現状のPOSIXは中途半端で、もっといいものにするために新しいPOSIXを
規格化するべきだって言ってるってことあってる?
2019/08/19(月) 13:23:29.26ID:oONnFCD4
POSIXのような標準はそう簡単には変更できないだろ。バージョンによるになるから
そして、ツールを作るのは大なり小なり思想があってやっているんで、言うようなできる最大のものに合わせるなんてなりっこない
文句なり言うなら、POSIXにではなくBSDに言う方が現実的だし、文句言うくらいな自分で実装してBSDに上げればいいだろう。上げても却下されるとかあるかもだがw
言っているのは単にWebで探した事例がLinuxでBSDだと動かないってのだけだもん
2019/08/19(月) 13:40:48.28ID:4iryI+Qn
>>144
難しく考えすぎでしょ。すでにある実装を採用すればいいだけ
思想なんかは、既に実装されてる時点で問題ないということだし。

POSIXにではなくBSDに言う方が現実的というけどBSDの現状知ってる?
すでにgreadlinkとかgtarとか結局GNU版を実装しちゃってるの。(その逆は聞かない)
そういう二重開発をなくすためにも、今の実装(の一部)をPOSIXにしてしまうべきだと思うね
2019/08/19(月) 13:51:36.11ID:oONnFCD4
>>145
その採用がだよ。やりとり見てみ。はいそうですねでは進んでないから
それはいらないとかふつうにあるぞ。POSIXに限らず

何言ってるの?単にBSDにGNU coreutilsのパッケージがあって、それが入ることもあるってだけだよ。gって自分で付けて気づかないの?GNU coreutilsが入っているのが嫌という人も居るようだけど
2019/08/19(月) 13:53:39.09ID:4iryI+Qn
>>146
> はいそうですねでは進んでないから

? 思想とかなんとか困難な道を乗り越えて見事、採用されたものを
POSIXにも入れればいいだけって言ってるんだけど
2019/08/19(月) 14:01:04.44ID:oONnFCD4
何を言いたいのかさっぱり

BSDも標準では入ってないぞ GNU coreutils は。何かそれを必要としたパッケージがあってそれにともないだろう
パッケージは誰かが作ってそれなりに利用されるのならわりと簡単にだぞ?パッケージだからな。必要な人は入れるというだけの
2019/08/19(月) 17:39:47.54ID:xlQPwL5+
・POSIXに準拠することにはメリットがある
↑これは俺もそう思うけど(正しいかどうかは別にして)
・今のPOSIXでは不十分なので,規格を拡張して,各社にそれを追従するよう促すべきだ
↑これは違うと思う。POSIXの「不便さ」は「どこでも動く」ことの引き換えであることを忘れてはいけいない(ルポ風)
2019/08/19(月) 17:40:43.60ID:xlQPwL5+
cat >>149 | sed -e 's/いけいない/いけない/'
151デフォルトの名無しさん
垢版 |
2019/08/19(月) 18:49:04.48ID:0HwI7cO5
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね。
152デフォルトの名無しさん
垢版 |
2019/08/19(月) 19:12:44.68ID:peefgVfy
Write once, Bug anywhere.
2019/08/19(月) 19:43:03.92ID:6nSAEgtv
>>149
でも「今のPOSIXでは不十分なので,規格を拡張して」は
遅いながらも今のPOSIX団体がやってることですよ?
POSIX団体がやってることを批判するんですか?
2019/08/19(月) 20:19:55.37ID:WiF5XT2w
bashで長いシェル書いてるといつもたくさんファイルを生成してしまうんだが上手い具合に生成しなくて済む方法ってある?
2019/08/19(月) 20:22:05.55ID:oWmB5KZ/
>>154
たくさんファイルってどういうこと?
2019/08/19(月) 20:25:47.56ID:GYeBbzEk
>>154
パイプ。リダイレクション。
2019/08/19(月) 20:28:19.59ID:WiF5XT2w
>>155
どっかからデータをとってくる

raw_file(最初)
user_file
user_and_id_file
format_file(完成形)

めっちゃテキトーに書いたけどこんな感じで4つぐらい作られてしまう
rmで消すのって有りなのかな
2019/08/19(月) 20:29:18.05ID:oWmB5KZ/
はぁ? と言われましても、
無駄なら無駄なところをなくせ、必要ならそうするしかないで終わるんだが?
それじゃ全く何もわからないよ
2019/08/19(月) 20:33:15.52ID:WiF5XT2w
>>156
参考になりました。ベストアンサーあげます
2019/08/19(月) 20:50:25.65ID:JcVwKxxm
>>149
おれは、促すまではいいと思うが、こんな所での妄想レベルの機能なんか
促されたからってそうホイホイ実装しないだろうと思うんだな
2019/08/19(月) 20:53:38.13ID:PiISpjsD
>>160
人の話ちゃんと聞こうぜ?
誰も妄想レベルの機能を言っちゃいない。
既に実装済みの機能をPOSIXで標準化しようって話をしてる。
2019/08/19(月) 20:58:54.83ID:QrnBNgWe
pasteで処理の結果をくっつける方法ってありますか?

処理A、処理B、処理Cの計3つでファイルを作成せずにくっつけたいです。
2019/08/19(月) 21:02:40.84ID:WV8MsfnG
Xxx <(Yyy) <(Zzz)
こんな感じのがあったような?
2019/08/19(月) 21:03:35.55ID:PiISpjsD
>>162
pasteは複数のファイルを受け付ける
pasterは標準入力からも受け付ける

この二つのどちらかまたは両方を使えばでできるでしょ?
165デフォルトの名無しさん
垢版 |
2019/08/19(月) 21:03:42.78ID:peefgVfy
プロセス置換でできるかな?
2019/08/19(月) 21:04:17.45ID:PiISpjsD
あ、入力元はファイルじゃないのか?
2019/08/19(月) 21:06:17.42ID:xlQPwL5+
>>163
BashやZshに依存してもいいならこれ。
2019/08/19(月) 21:08:14.71ID:PiISpjsD
pasteは複数の標準入力を受け付けるみたいね

printf '%s\n' a b c d e f g | paste - - -
a b c
d e f
g

だから処理A、処理B、処理Cをそれぞれ1行ずつ
出力できるならくっつけられるね。
2019/08/19(月) 21:12:53.53ID:PiISpjsD
あとは処理A、処理B、処理Cの順でデータを出力するなら、
それぞれ変数に入れといて、1行ずつとりだすとか。
まあできなくはない。
2019/08/19(月) 21:26:09.66ID:PiISpjsD
>>167
> BashやZshに依存してもいいならこれ。

どこでも動かないのはPOSIXに>>163が入ってないからだね
2019/08/19(月) 21:32:21.04ID:R3NGICj0
>>154-159
一時ファイルとか、メモリ内ファイルとかは?
2019/08/19(月) 21:38:04.83ID:PiISpjsD
>>162
あ、nlとsort使えばいけるじゃん。

(
処理Aを出力 | nl -i3 # 1, 4, 7 と行番号をつける
処理Bを出力 | nl -i3 -v2 # 2, 5, 8, と行番号をつける
処理Cを出力 | nl -i3 -v3 # 3, 6, 9, と行番号をつける
) | sort -n | paste - - - | 行番号を削除

これでできないかな?
行番号を消すのは、nlの-sで区切り記号をつけられるから、
cutかsedでやればいいかな? 1行目が1ってわかってるから、
行番号の文字数もわかるので、あとはどうにかw
2019/08/19(月) 21:52:44.53ID:PiISpjsD
こんな感じかな?

a() { printf '%s\n' a b c d e; }
b() { printf '%s\n' A B C D E; }
c() { printf '%s\n' 1 2 3 4 5; }

{
a | nl -i3 -v1 -s:
b | nl -i3 -v2 -s:
c | nl -i3 -v3 -s:
} | sort -n | cut -d: -f2- | paste - - -

出力
a A 1
b B 2
c C 3
d D 4
e E 5
2019/08/20(火) 07:40:59.29ID:Gkd3xMH4
そのsortって安定だっけ。
じゃなかったら処理結果が入れ替わるおそれない?
2019/08/20(火) 08:07:31.90ID:JOMXhFk+
>>174
安定になる条件と行番号の関係について
考えてみようか?
2019/08/20(火) 08:24:06.78ID:Gkd3xMH4
POSIX sortだと-s(=stable sortのs)オプションが提供されてないので
どう足掻いても安定にはならんな。

「たまたま」順番が変化しない場合もあるやもしれんが。
2019/08/20(火) 08:37:08.94ID:JOMXhFk+
なんで重複しない行番号の順にソートして並びが入れ替わるんだよw
2019/08/20(火) 12:54:26.88ID:/fB0Ptq3
>>176
「安定」の意味分かって書いてる?
179デフォルトの名無しさん
垢版 |
2019/08/20(火) 13:41:04.53ID:tzbk8R3g
安定の書き込みクオリティ
2019/08/20(火) 13:47:15.01ID:/V4ccaND
シェルスクリプトってテキストファイルこねくり回すくらいしかできないんだよな
2019/08/20(火) 13:52:13.54ID:I7f/WloD
それで十分ですよ
2019/08/20(火) 17:13:37.74ID:Gkd3xMH4
バイナリファイル扱えるスクリプト言語ってある?
Pythonとか?
183デフォルトの名無しさん
垢版 |
2019/08/20(火) 17:15:25.76ID:OyLrpvkx
使えないの挙げたほうが速いのでは?
2019/08/20(火) 17:32:48.20ID:30Dp6unL
使えるほうが多いのか?
2019/08/20(火) 17:47:53.72ID:CuOLtXP9
シェルスクリプトでバイナリを扱いたければ
odを使うしか無いだろう。

zshはNULLを扱えたはずだが、
bashやそれ以外はNULLを扱えない。

例のawkおじさんは、awkスクリプトで頑張ってるようだが
もちろんあれはシェルスクリプトではない
2019/08/20(火) 17:56:41.96ID:/V4ccaND
>>182
扱えるというのはバイナリファイルの編集ができるってことだよね
2019/08/20(火) 17:57:11.37ID:Gkd3xMH4
無知ですまんがAWKおじさんってだれ?
なんか否定的な書き方だけど悪名高いコテハン?
2019/08/20(火) 18:00:14.90ID:CuOLtXP9
>>187
自称シェルスクリプトで色々頑張ってる人。ググればわかる。
悪名高いコテハンではないが、俺的にはあのセンスが受け入れられない。

色々頑張ってるが、コードを見るとawkスクリプトを
シェルスクリプトで生成して、メインの処理はawkで
実行してるのでダサい
2019/08/20(火) 18:01:35.41ID:/V4ccaND
>>187
https://github.com/ShellShoccar-jpn
2019/08/20(火) 18:05:24.00ID:CuOLtXP9
odの他にhexdumpとかでもできるがhexdumpはPOSIXじゃない。
あとbase64もPOSIXじゃない。

あとは出来る可能性があるとすれば uuencode だけど
あれを処理するのは難しいだろうな。
2019/08/20(火) 18:07:02.56ID:CuOLtXP9
>>187
> なんか否定的な書き方だけど
別に否定はしてない。awkもPOSIX準拠だから物自体はいいけど
シェルスクリプトじゃないよねって話
2019/08/20(火) 18:10:40.86ID:Gkd3xMH4
>>189
あぁ、この人のことか。ありがとう。
なんかQiitaかどっかでメチャメチャ喧嘩腰のコメントしてた記憶があるわ。
https://qiita.com/richmikan@github/items/5158eac47467d8a29056
↑ここのコメントとかかな。
言ってることは正しいのかもしれんが、ちょっと品性に欠けるなぁと思った。
2019/08/20(火) 18:15:23.89ID:Gkd3xMH4
>>190
実はBase64はPOSIXの範囲でも(簡単に)実現できる。
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/uuencode.html
によればuuencode -m /dev/stdoutこれでほぼbase64コマンドと同じ挙動になる。
ていうか/dev/stdoutってPOSIXで規定されてないのにその肝心の公式が仕様書内で
/dev/stdoutを使っちゃっていいのかねw
2019/08/20(火) 18:19:45.77ID:5hgm7I5A
>>193
base64をしたいんじゃなくて、base64コマンドはPOSIXじゃないって意味なんだけど
その文章の読めなさ、相変わらずやなw
195デフォルトの名無しさん
垢版 |
2019/08/20(火) 18:23:52.47ID:PFkWfbQh
POSIX、POSIXとか言ってるやつも、AWKおじさん並みのKitty。
2019/08/20(火) 18:25:32.24ID:Gkd3xMH4
Base64を実現したくはないのにbase64コマンドが必要な状況ってどんなのだろう…?
2019/08/20(火) 18:27:06.57ID:5hgm7I5A
今シェルスクリプトでバイナリを扱う話してたろうが
そういうとこやで
2019/08/20(火) 18:41:10.24ID:Gkd3xMH4
こりゃダメだ
2019/08/20(火) 18:49:07.29ID:5hgm7I5A
ふぅ。アスペに説明しても理解できないかもしれんが(他の人は理解できるだろうから書くけど)

1. シェルスクリプトはテキストを扱えない。という話が発端 (>>180
2. バイナリを扱うにはどうするか?→バイナリをテキストに変換するコマンドを使えば良い
3. POSIXの範囲ではodが最適。hexdumpやbase64コマンドはPOSIXではない

ここまではまともな流れ。

なぜかBase64を実現したいことだと勘違いする>>193

(バイナリ→テキストを実現するための)base64 "コマンド" の話だというと

なぜかBase64を実現したくないのにとか、斜め上のことを言い出す>>196
2019/08/20(火) 18:52:24.07ID:/V4ccaND
はい解散
2019/08/20(火) 20:00:45.18ID:Gkd3xMH4
自分の主張をマトモだとか言っちゃう男の人って…
2019/08/20(火) 20:02:58.01ID:ar+OimNr
こいつ素でやってるのか?w

会話の流れがまともだって言ったら、
今度は主張がまともと言ってるんだと読み間違えやがったw

まあ確かにそのとおりではあるが、
文章はそう読めるはずがないよな
2019/08/20(火) 20:15:26.86ID:/fB0Ptq3
>>201
そんでsortの何が安定なのかは分かったの?
2019/08/20(火) 21:24:50.14ID:Gkd3xMH4
sortの話はもう終わったでしょ、お爺ちゃん。
2019/08/20(火) 21:27:12.41ID:ar+OimNr
>>204
あんた最後になにもレスしてないよね?
お前が間違っていましたってことで終わったの?w
2019/08/20(火) 21:28:59.99ID:ar+OimNr
176 名前:デフォルトの名無しさん[sage] 投稿日:2019/08/20(火) 08:24:06.78 ID:Gkd3xMH4 [2/10]
POSIX sortだと-s(=stable sortのs)オプションが提供されてないので
どう足掻いても安定にはならんな。

「たまたま」順番が変化しない場合もあるやもしれんが。

177 自分:デフォルトの名無しさん[sage] 投稿日:2019/08/20(火) 08:37:08.94 ID:JOMXhFk+ [2/2]
なんで重複しない行番号の順にソートして並びが入れ替わるんだよw

178 名前:デフォルトの名無しさん[sage] 投稿日:2019/08/20(火) 12:54:26.88 ID:/fB0Ptq3 [1/2]
>>176
「安定」の意味分かって書いてる?

179 名前:デフォルトの名無しさん[] 投稿日:2019/08/20(火) 13:41:04.53 ID:tzbk8R3g
安定の書き込みクオリティ
2019/08/20(火) 21:30:41.86ID:ar+OimNr
ここで、終わったって自分で言ってるから、
ここで\(^o^)/オワタなんだろうなw
2019/08/20(火) 22:46:08.19ID:Gkd3xMH4
お爺ちゃん怒りの3連レス。そんなに熱くならなくてもいいのに。冷房がもったいないw
2019/08/20(火) 23:02:20.69ID:55BxDwsc
みっともないな>>204
2019/08/20(火) 23:39:15.24ID:I7f/WloD
自称「神様」には何を言ってもムダ
2019/08/21(水) 00:33:27.35ID:XuzWeGbv
自分が常に正しいと思ってる奴にロクな奴はいない
2019/08/21(水) 02:24:45.15ID:GZen3C6t
>>208
あはは。二代目神様襲名おめでとうw
2019/08/21(水) 11:27:36.55ID:eilohrgH
思ったんだけどbash依存するのってなんの機能を使いたくてbash使うの?
bashだけにある機能の事なら知ってる
2019/08/21(水) 11:41:07.46ID:g3Au7XoK
ぐぐったら出てくるから
2019/08/21(水) 11:42:23.31ID:CWF24/8E
別に使いたいわけじゃなくて、ぐぐったらそれがbashスクリプトだったってこと?
じゃあそのbashスクリプトを書いた人はなんでって話になるけど
2019/08/21(水) 11:43:24.61ID:CWF24/8E
訂正

× そのbashスクリプトを書いた人はなんでって話になるけど
○ そのbashスクリプトを書いた人はなんの機能を使いたくてbashを使っているの?
2019/08/21(水) 12:37:03.95ID:+hDHTeft
bashしか使わない人がbash依存して何か問題あるのかね

シェルに限らずLinuxしか使わない人が「Windowsでも動く」プログラムを書く必要はないし

(シェアの低い変なコンピュータ使ってる人はその人だけ苦労すればいい)
2019/08/21(水) 12:38:05.34ID:tOxptV2F
> bashしか使わない人がbash依存して何か問題あるのかね

問題ないよ。なにを目的にbash依存してるのか聞いてるだけ
2019/08/21(水) 12:58:08.94ID:23vMmTO3
>>218
>>217って言ってるだろう
bashを使い他を使うこともないから、わざわざ他を意識する調べることがないってことだろ
2019/08/21(水) 13:00:19.86ID:tOxptV2F
>>219
bashのなにかの機能を使いたくてbashにしているわけじゃないってこと?
配列とかbashにしかないなにかの機能を使いたいからbashを使ってるんじゃないの?
2019/08/21(水) 13:02:07.60ID:23vMmTO3
大多数はそんなこと気にしてないだろう
配列使うにしてもシェルスクリプトで配列使えるか調べ、現在使ってるシェル(大多数がbashだろう)で使えればそう使ってるだけだろう
2019/08/21(水) 13:05:16.74ID:tOxptV2F
なんかそれだとbashにする理由はないのに
bash依存してるって言ってるように見えるなw
2019/08/21(水) 13:07:38.33ID:23vMmTO3
逆でもあるだろうに。それで問題ないなら問題ないだろに
てか、>>217って言ってるのをを未だに理解できないの?理解したくないの?
2019/08/21(水) 13:09:19.14ID:ttxmDenw
結果的にbash依存になっているが当人はそんな事を意識していない、って感じ
2019/08/21(水) 13:09:33.13ID:tOxptV2F
>>223
君が質問に答えないからだよ

質問
> 思ったんだけどbash依存するのってなんの機能を使いたくてbash使うの?

結論
特になにかの機能が使いたいわけではないが、動いてしまったからbash依存になっただけ
2019/08/21(水) 13:11:10.44ID:23vMmTO3
そう>>217が言っているんだがな。なにか文を変えたいだけか?それもいやらしく
いつのもやつか、やっぱり
2019/08/21(水) 13:11:19.76ID:tOxptV2F
>>224
そうそう。そういう感じの答えが欲しかった。

(便利だから)特定の○○の機能が使いたい
or 理由はない

そういう答えを期待していた。
2019/08/21(水) 13:12:38.86ID:tOxptV2F
bashの機能のうち、これは絶対欲しいっていう機能は
あまりないってことなのかな?
2019/08/21(水) 13:18:24.42ID:8muhIeVb
最初から「bashの便利な機能」を聞いてるのに、
思いつかないなら無いって言わないから話がこじれるんだろう。
2019/08/21(水) 13:26:22.43ID:23vMmTO3
bashの便利な機能ってのが何を聞いてるのか曖昧だからな
kash,zshなどでも同じくあるのではないあくまもでbash独自の機能なのかなんななの曖昧
シェルスクリプトに限らずスクリプトに限らずマルチプラットフォームを意識するかどうかの話にならざるを得ないだろう
2019/08/21(水) 13:28:58.51ID:rB/3mk9e
という話をして欲しいんじゃなくて
(あんたが思う)bashの便利な機能を聞いてるんだよ
2019/08/21(水) 13:30:51.65ID:KOXkIKEx
思いつかないなら、無いって素直に言えばいいじゃん。言い訳ばっかり
2019/08/21(水) 13:30:58.28ID:23vMmTO3
ksh,zshなどでも同じくあるのではないあくまもでbash独自の機能なのかなんなのか曖昧

bashの便利な機能もどっちにしろそれが使えないとわかった時に気がつくものだろう。もちろんそんなに便利でもないのもあるだろうけど
2019/08/21(水) 13:31:56.80ID:23vMmTO3
>>231,232
ksh,zshなどでも同じくあるのではないあくまもでbash独自の機能なの?
2019/08/21(水) 13:32:58.59ID:oH2mxJhX
>>233
POSIXにはなくて、bashにしかない機能。
kshやzshの話は聞いてないので無視して良い

これで質問に答えられるよね?
2019/08/21(水) 13:35:01.88ID:23vMmTO3
配列w
readのオプション
他にもあるけど、すぐに思いつかない、便利と意識して使ってるわけではないからな。空気と同じだよ
2019/08/21(水) 13:35:54.29ID:ttxmDenw
あまり便利だとは思わないけどよく使ってるのは "&>" と連想配列(declare -A)
2019/08/21(水) 13:39:22.38ID:dVKYqL0H
ほんと質問に答えさせるのに何レス消費させるのかw

配列、連想配列、readのオプション、"&>"
これぐらいか?
2019/08/21(水) 13:40:56.88ID:ttxmDenw
自称「神様」のきまぐれなお遊びに付き合ってやってるんだ
ありがたく思いやがって下さい
2019/08/21(水) 13:41:29.73ID:dVKYqL0H
あぁ昨日のsortが安定の神様かw
2019/08/21(水) 13:41:30.49ID:23vMmTO3
>>235といい質問に「答えさせる」といい、なんか見えすぎなんだけどな
どしたの?
あんたの意図がわからんからだよ。何をしたいの?いつもの負けん気だけか?

bashの便利な機能もどっちにしろそれが使えないとわかった時に気がつくものだろう
って言ってるんだけど。だから空気と同じと言っているんだがなあ
2019/08/21(水) 13:44:31.57ID:dVKYqL0H
という話をなんでするんだろう?w
2019/08/21(水) 13:44:58.76ID:dVKYqL0H
ほんと、質問の関係ない言い訳ばかりするよなw
2019/08/21(水) 13:45:07.40ID:23vMmTO3
>>240
俺のことなら違う。俺は>>204だったりするんだがなw
2019/08/21(水) 13:46:22.58ID:dVKYqL0H
>>244
やっぱりsortのおじちゃんじゃんw
安定の意味わかったの?

どうして行番号順にsortしてるのに、
並び順が変わると思ったの?

まだその答え聞いてないよ
2019/08/21(水) 13:46:59.44ID:23vMmTO3
>244
おお...違う違うwなんて間違いを
俺は>>209だったりするね

>>242
あんたの意図がわからんからだよw
2019/08/21(水) 13:47:41.90ID:cs49NQcU
意図がわからないなら、意図がわからないから教えてといえば良い
2019/08/21(水) 13:47:49.79ID:23vMmTO3
>>245
ノリでそのレスしたのか、嬉々としてそのレスしたのか、嬉々としてならすまんかったw
2019/08/21(水) 13:48:55.17ID:l+gTzvUp
んでsortの話はどうなったの?
安定がどうとか
2019/08/21(水) 13:50:29.02ID:23vMmTO3
>>247
そこに噛み付いている意味がわからない
会話として楽しんでいるんだからいいんじゃないの?みなさん(?)は
とか言ってみるw
2019/08/21(水) 13:55:16.57ID:+thc3RuF
bashのプロセス置換は便利だなー(棒
2019/08/21(水) 13:55:38.38ID:Z+yguh+d
働けよクソニート
2019/08/21(水) 14:00:20.39ID:+thc3RuF
ブレース展開も便利だなー
2019/08/21(水) 14:21:13.28ID:+thc3RuF
可搬性を求めるならPOSIXで書く。
テキストこねくり回す程度のものなら書ける。

可搬性要らないor自分の環境で動けば良いなら好きに書けば良い。
bash,zsh依存でOK。ちゃんとシバン書いてな
255デフォルトの名無しさん
垢版 |
2019/08/21(水) 15:27:51.40ID:zqKd/4GT
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね。
2019/08/21(水) 16:35:44.19ID:MMv7CGOe
初めて触れたRH8も、Cygwinもbashだったから、
今でもふつうにbash使ってるな。

それにしても、bashはなんでこんなに嫌われてるんだ?w
2019/08/21(水) 16:44:32.20ID:MKRUgKM/
ま、bashがデフォルトシェルじゃないOSもそれなりにあるもんな
2019/08/21(水) 17:14:23.54ID:M+fZiddG
いつかカーソルキーのないキーボードを使うかも知れないから常にHJKL使えってvimスレの仙人が言ってた
2019/08/21(水) 17:36:09.70ID:+thc3RuF
>>258
Emacs使いはHJKL使わないってじっちゃんが言ってた
2019/08/21(水) 19:28:59.77ID:/hAWXHxO
>>257
Webサイト向けだが、UbuntuとDebianをあわせて59.7%がbash拡張の無いdashだからね
https://news.mynavi.jp/article/20190701-851849/
2019/08/21(水) 19:32:04.69ID:CEaWdSia
>>256
bashがデファクトスタンダード的なもんだからな。採用の多さから
ksh,zshなどと置き換えても同じことだったりしてるからな、単なる象徴的な名称としてだけだろう
あとは/bin/shがbashな場合にイマイチな仕様だったりするとこか
2019/08/21(水) 19:33:05.60ID:/hAWXHxO
あとmacがbashをやめてzshになるらしいので、それなりどころか
過半数以上がbashを使わなくなりそう。

まあmac版のzshはbashと互換性があるように
デフォルトオプションを変更してそうな気がするけど
shwordsplitとか

>>258
bash以外を使うことがないって言いたいんだろうけど、その例えは的外れかな
現に多くの人がbash以外を使ってるわけだから
2019/08/21(水) 19:34:57.26ID:/hAWXHxO
あ、そういやWSLもUbuntuだっけか。他のディストリも使えるけど
そう考えるとdash使ってる人、かなりいるな。
2019/08/21(水) 19:35:53.33ID:CEaWdSia
>>261,256
訂正。bashを嫌ってる人はいるみたいだった。理解できんw
2019/08/21(水) 19:45:33.15ID:/hAWXHxO
>>264
bashコードなのに#!/bin/shを名乗るなってことでしょ?

Ubuntu/Debianでdashが採用されたのは
パフォーマンスがいいかららしい。

https://wiki.archlinux.jp/index.php/Dash
> 実行速度が速い。Bash などのシェルに比べて 4倍高速 に動作します。

その際にbash依存しているのに#!/bin/shを使われていたから
変更するのに手間がかかったって言われてるね。

あとセキュリティもbashよりもdashのほうが高そうだし。bashは今も機能加えてるから新たに脆弱性が生まれてくる可能性も高い。

https://ja.wikipedia.org/wiki/2014%E5%B9%B4%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B7%E3%83%A7%E3%83%83%E3%82%AF%E8%84%86%E5%BC%B1%E6%80%A7
> 2014年9月に公表されたBashについての一群の脆弱性(CVE-2014-6271 [1] 等)の発見は、
> 俗にシェルショック(Shellshock)、バッシュドア(bashdoor)と呼ばれている。
> 関連して6つの脆弱性が登録された。
2019/08/21(水) 19:51:13.28ID:CEaWdSia
なんかいきなりdash推ししているのがいるが>>257のいうデフォルトシェルがソレを指しているのって疑問
>>256なんぞからはデフォルトシェルはログインシェルのことを言っているのかと思ったけど

ちなみに大好きなPOSIXでググってみたが、デフォルトシェル=ログインシェルだなあ。引っかからなかったなにかがあるかもだが、引っかかったのがpasswd関連んとこだけというのもあり
2019/08/21(水) 19:53:39.23ID:/hAWXHxO
>>266
ログインシェルがbashでも
(UbuntuやDebianでは)#!/bin/shはdashだから
2019/08/21(水) 19:55:50.58ID:CEaWdSia
話が通じてないなw
2019/08/21(水) 20:02:35.45ID:MMv7CGOe
>>263
Ubuntu on WSL だと、デフォルトシェルはbashになる。
chshしない限り、WSLではbashのままの人が多いだろうな。
2019/08/21(水) 20:02:40.75ID:/hAWXHxO
>>268
ここでデフォルトシェルの定義がどうこう言っても無意味だっていう話

https://wiki.ubuntu.com/DashAsBinSh
> Why was this change made?
> The major reason to switch the default shell was efficiency.

デフォルトシステムシェルのことを
デフォルトシェルと呼んでる例なんていくらでもあるんだから
2019/08/21(水) 20:04:25.00ID:/hAWXHxO
>>269
> Ubuntu on WSL だと、デフォルトシェルはbashになる。
話通じてないなw

その人が書くシェルスクリプトの一行目には、どうせ #!/bin/sh って書くでしょ?
デフォルトログインシェルがなんであろうが、
デフォルトシステムシェルは dash になるんだよ。
2019/08/21(水) 20:08:56.78ID:MMv7CGOe
>>271
ああ、そいういうことね。

$ ll /bin/sh
lrwxrwxrwx 1 root root 4 7月 26 2018 /bin/sh -> dash*
2019/08/21(水) 20:09:40.60ID:CEaWdSia
誰かがデフォルトシェルと言えばそのデフォルトシステムシェルのことだと言っていたからなあ
流れ的に同じこと言っているなと。そんな話はしてないんじゃねえのってとことだな
2019/08/21(水) 20:12:54.47ID:/hAWXHxO
>>266
> ちなみに大好きなPOSIXでググってみたが、デフォルトシェル=ログインシェルだなあ。

POSIXが/bin/shについて語ることはあっても、
/bin/bashについて語ることはないと思う

POSIXの世界のシェルには/bin/shしかないのでは?
2019/08/21(水) 20:17:07.13ID:CEaWdSia
"default shell" というのはあるんだよ。そしてそれを指しているのはログインシェルっていう
なにか問題でも?ログインシェルをデフォルトシェルと言っても何も差し支えがなく間違いでもないってことだな、POSIXでの文章でそうなんだから
そして、ログインシェルの話をしていたって>>269で明らかになりましたってとこで俺は満足してますがw
2019/08/21(水) 20:19:20.00ID:MMv7CGOe
>>274
> POSIXの世界のシェルには/bin/shしかないのでは?
そうなの?
20年くらい前のbashの解説書 "bash Manual & Reference" には、
Bourn Shell(sh/bsh)をPOSIXに準拠させるために書き直したのが
Bourn Again Shell(bash)というふうに書かれていて、
そういうもんだと思ってたわ。
2019/08/21(水) 20:20:46.30ID:/hAWXHxO
>>275
うん、だからそこでデフォルトログインシェルの話をしたって意味がないでしょう?と言ってるわけ。

重要なのは /bin/sh の話だよ。
#!/bin/bash と書いてbashスクリプトを書くのはいいけど
#!/bin/shと書いていながらbashスクリプトになってるから嫌われているわけで
2019/08/21(水) 20:25:13.92ID:CEaWdSia
ふーん
食いつき&その後レスからそうとは思えないけど、まあそういうことでいいよw
2019/08/21(水) 20:26:05.08ID:/hAWXHxO
>>276
POSIXの世界にbashが出てくることはない。の反証として
bashの世界にPOSIXが登場したと言っても、それは反証になってないよw
2019/08/21(水) 20:28:27.61ID:LqLocPLj
bash bash bash
fish and bash
2019/08/21(水) 20:29:21.72ID:/hAWXHxO
>>278
なんでそう、本当は納得してないけど
納得してあげました風の言い方をするかな?w


最初から書いてるんだけど↓

265 自分:デフォルトの名無しさん[sage] 投稿日:2019/08/21(水) 19:45:33.15 ID:/hAWXHxO [4/10]
>>264
bashコードなのに#!/bin/shを名乗るなってことでしょ?
2019/08/21(水) 20:33:57.11ID:CEaWdSia
>>281
ああ、いつものだなってとこだなw
ログインシェルをデフォルトシェルと言っても何も差し支えがなく間違いでもない
というのがわかった|わかっているようなので、まあいいよってとこだよ
まさしく、その最初からも読み違いとしか思えないけど、まあそれもw
2019/08/21(水) 20:35:07.03ID:/hAWXHxO
>>282
ふーん、まあそういうことでいいよw










↑このレスにムカついた?
それがあんたがやってることだよ。
2019/08/21(水) 20:36:27.37ID:CEaWdSia
ムカついたのね。まあムカつくように書いたんだけどwなぜかはひみつww
2019/08/21(水) 20:40:12.26ID:/hAWXHxO
あーあ、とうとう反論はできないから、
ムカつかせるためだけにレスをしたって認めちゃったw
そういうとこやで
2019/08/21(水) 20:42:42.39ID:CEaWdSia
なんの反論????いきなりすぎて意味わかりません、なんの反論すればいいの?????

ちなみに、>>276は「そういうもんだと思ってた」と言っているように反証でもなんでもなく、困惑しているんじゃないかなあと思ってみたり
2019/08/21(水) 20:43:23.13ID:/hAWXHxO
>>286
ふーん、まあそういうことでいいよw
2019/08/21(水) 20:43:52.96ID:CEaWdSia
それなら、よしっww
終わって何よりw
2019/08/21(水) 20:44:38.88ID:/hAWXHxO
だからそういうことでいいってw
2019/08/21(水) 20:45:06.34ID:/hAWXHxO
bashコードなのに#!/bin/shを名乗るなってことでしょ?

ということが最後の話となった
2019/08/21(水) 20:45:11.83ID:CEaWdSia
だからそれでよかったねえw
2019/08/21(水) 20:45:37.37ID:ttxmDenw
         ,. '"´ ̄ ̄ ̄ ̄``ヽ、
        /::::::::::::::::::::::::::::::::::::::::::::::\
    /::::::::::::;.: --─---─-、:::::::::::::ヽ
    ./::::::::::::/ィC¨ヽ      \:::::::::::l
   /:::::::::/  └¬'´,   ィC¨ヽ';:::::::::!
  ./::::::::イ        / ,.  ヽ `¬┘';:::::::!
  l::::::::::::l       /ハ ハ }     ヾ::::j
  {::::{⌒l:!      / `   ' ヽ   V}
.  ';:::l ゝリ     l ,/ ̄¨ヽ  ',    }l
  ヾヽ__j     { {,. -−‐‐ヘ    {,l
    ヾ::::|   i  ヽ ヽェェェェェノ     {
    }:::l   ヽ    ` ̄¨´   ノ   }
     ヾ;k    \_  __  ,/   }
     "|       ̄ ̄ ̄    ノ
  _,. -‐"\              フー-、_
'"´      `ヽ、          /                  ┼ヽ  -|r‐、. レ |  
                                         d⌒) ./| _ノ  __ノ  
                                        ---------------  
                                        制作・著作 NHK
2019/08/21(水) 20:46:44.09ID:/hAWXHxO
>>291
あぁ、反論っていうのは、これに対する反論だよ。
2019/08/21(水) 20:47:09.06ID:/hAWXHxO
これって言うのは、これね

> bashコードなのに#!/bin/shを名乗るなってことでしょ?
2019/08/21(水) 20:49:21.93ID:/hAWXHxO
>>257
> ま、bashがデフォルトシェルじゃないOSもそれなりにあるもんな

bashがデフォルトシェルじゃないOSってなに?
流石にWindowsのことではないと思うけどw
2019/08/21(水) 20:50:16.25ID:/hAWXHxO
いや、OSもそれなりにあるもんなっていうから
そのOSはそれなりに使われてるんだろうなと思ってね。
2019/08/21(水) 20:51:38.32ID:CEaWdSia
誰もそんな話はしてないと思うし、俺は最初ので触れているんだけどな
誰かみたいに「名乗るな」とか言わなけどw

てか、続けんのかよw自分の言ったことを忘れすぎだろう
あら、あら、まあ。いつものだな。終わりますww
2019/08/21(水) 20:52:22.52ID:/hAWXHxO
あぁ、デフォルトシェルっていうのは、
デフォルトシステムシェルってことか

https://wiki.ubuntu.com/DashAsBinSh
> Why was this change made?
> The major reason to switch the default shell was efficiency.
↑この文脈の「the default shell」

それならたしかにたくさんあるわ
2019/08/21(水) 20:53:10.58ID:/hAWXHxO
>>297
ふーん、まあそういうことでいいよw
2019/08/21(水) 20:54:13.14ID:/hAWXHxO
デフォルトシステムシェルっていうか
システムが使うデフォルトのシェルっていうべきかな?
2019/08/21(水) 21:33:16.44ID:WsJBrYLB
macOS10.15でzshに変更になるって話、/bin/sh は結局何になるんだろう?
zshかな?って思ってたけど、dashの可能性もあるのかな?

ここ読んで知ったけど
https://scriptingosx.com/2019/06/moving-to-zsh/

ログインシェルに /bin/dash を選べるようになってるらしい。
https://support.apple.com/en-us/HT208050
(homebrewの話ではないよ)
302デフォルトの名無しさん
垢版 |
2019/08/21(水) 21:33:59.34ID:l+BF9a7q
やっぱりどこでも動くシェルスクリプトなんて幻影なんだね
2019/08/21(水) 21:46:11.50ID:CEaWdSia
>>301
その
https://support.apple.com/en-us/HT208050
How to test your shell scripts
If you change /var/select/sh to a shell other than bash, be aware that scripts that make use of bashisms may not work properly.
からはbashっぽいかなあ。変わった直後でもあるmacOS10.15では
2019/08/21(水) 21:49:36.68ID:WsJBrYLB
>>303
ふーん、まあそういうことでいいよw
2019/08/21(水) 21:51:21.56ID:g3Au7XoK
ソートの安定の話はどうなったの?
2019/08/21(水) 21:54:13.22ID:vg8ZIjZS
>>305
行番号が付いてるから、安定以前に並ぶ順番が入れ替わることはない。

> POSIX sortだと-s(=stable sortのs)オプションが提供されてないので

とか言ってるやつが間抜けでした。
(いつもの誤読ばっかりしてるやつだろう)

で終わりじゃない?
2019/08/21(水) 21:54:40.89ID:CEaWdSia
何が気に障ったのかわからんな
牛乳飲もうw
2019/08/21(水) 21:55:01.07ID:3uzLJz9e
そういうのいいから
2019/08/21(水) 21:58:52.30ID:CEaWdSia
だよなw

あと、sortはヤツじゃないだろう。もしかして俺?俺でもないぞw
2019/08/21(水) 22:14:47.06ID:ttxmDenw
そういうのいいからw
2019/08/21(水) 22:16:45.46ID:CEaWdSia
だよなあww
2019/08/22(木) 01:25:13.11ID:Oq4Y6cV4
bashrc zshrc みたいなところに alias 書くと
シェルスクリプトで bash,zsh依存の書くとaliasまで読まれてしまう
\Xxx のようなバックスラッシュを全部に付けるのは読みにくい
alias 全部切る宣言ないか?
2019/08/22(木) 01:31:08.84ID:RwKT/aao
unalias -a
2019/08/22(木) 01:32:36.38ID:Oq4Y6cV4
thanks
2019/08/22(木) 02:09:53.19ID:jM8tCXZ0
>>312
なんかおかしいぞ

aliasはシェルスクリプトには伝搬しない。
現在のシェルにのみ反映する。

例えば、zshでログインして#!/bin/shのシェルスクリプトを起動することを
想像すればなんとなくわかると思うが、別のプロセスになるんだから
zshと(zshではないかもしれない)別のプロセスとaliasが共通になるわけがない。

. (source)でカレントプロセスに読み込むならaliasが働くけど
それはシェルで使うaliasまで全部初期化するってことになるぞ(それでいいんだろうけど)
なんか勘違いか変なことをしてる気がする。
2019/08/22(木) 02:23:33.98ID:jM8tCXZ0
たまたま関連することをやっていたので気づいたが
zshって設定なしでも以下のaliasを作ってるな

run-help=man
which-command=whence

これを何に使ってるのか知らないけどunalias -aをするとそれが消えてしまう
2019/08/22(木) 16:38:31.14ID:maUgHi90
あんまりbashと関係ないけど
直前のmacのターミナルのログってどっかに自動保存されてたりするもんなのかね
318デフォルトの名無しさん
垢版 |
2019/08/22(木) 16:48:16.03ID:hwVLULCR
シェルとは直接関係ない話だが、vimってこんなこともできたんだな。
https://qiita.com/gorilla0513/items/4d1c610f1283bbe46f81
2019/08/22(木) 16:53:37.85ID:jM8tCXZ0
>>318
vscodeでよくない?
そこに書いてあるの、全部できるでしょ?
320デフォルトの名無しさん
垢版 |
2019/08/22(木) 17:04:13.34ID:hwVLULCR
あ、そうなの?
使ったことないから知らなかったよ。
2019/08/22(木) 17:15:22.21ID:hEbQ4qBk
vimでもvscodeでも自分が好きなの使えばええがな
2019/08/22(木) 20:05:03.45ID:GkmKkRib
ターミナルで動かせるメリットは大きい
2019/08/22(木) 22:15:12.37ID:mlpPC2JR
VSCodeは「沢山の機能から自分の欲しいものを選びたい人」向けで
Vim含めUnixツールは「少数の機能から自分の欲しいものを作りたい人」向け。
どっちも利点欠点があるけど,俺は後者かなぁ。
2019/08/22(木) 22:28:59.84ID:UjFyi9ja
> Vim含めUnixツールは「少数の機能から自分の欲しいものを作りたい人」向け。

vimを使う人は、vimの機能を作るのが目的の人ってこと?
本末転倒って言葉知ってる?
2019/08/22(木) 23:07:37.71ID:mlpPC2JR
Unixマニアにとって「本末転倒」は誉め言葉w
2019/08/22(木) 23:18:19.55ID:NaJTUw7c
Vimは基本的にファイラーとかないから、シェルに移ってコマンド操作しつつ開発するのが普通
なんで、TmuxとかScreenとか併用する
ソースコードのフォーマッターだとかリントみたいなのも直接、間接で外部コマンド叩いて使う
2019/08/22(木) 23:18:34.05ID:hEbQ4qBk
atom派は出てこないんだな
2019/08/22(木) 23:19:14.46ID:UjFyi9ja
聞いたことないで?

「unix 本末転倒 誉め言葉 」
検索結果 約 5 件 (0.35 秒)
2019/08/22(木) 23:20:40.75ID:UjFyi9ja
>>327
atomはMSの息がかかってないから使っていた人が多い。
githubをMSが買収してしまったので、あえてatomを使う理由もなくなった。
vscodeの方が洗練されてるよ。
2019/08/22(木) 23:31:29.63ID:xdlhVqlc
このスレ、ダメだね
2019/08/22(木) 23:36:33.00ID:hEbQ4qBk
あー俺はvimmerだからw
vscode悪くないけどviキーバインドがイマイチ
exコマンド使えんのがストレスで里帰りしたわ
2019/08/22(木) 23:50:38.35ID:bojKrn/j
テキストなら、vim

Ruby, Julia なら、VScode で、
グラフなら、Jupyter Notebook
2019/08/22(木) 23:57:59.62ID:mlpPC2JR
検索結果がすべてだと思ってる御坊ちゃまかわいい
334デフォルトの名無しさん
垢版 |
2019/08/23(金) 08:47:14.32ID:Wcc23IuY
UNIX哲学こそ正義(GNUのlsやsystemdから目を背けながら)
2019/08/23(金) 10:13:29.68ID:mT51SH+B
gitとかUnixの哲学の正反対だよな
2019/08/23(金) 11:56:56.10ID:UifFOlyJ
だってLinuxの作者が作ったコマンドだからな。
2019/08/23(金) 11:59:37.65ID:UifFOlyJ
ていうかGNU lsもsystemdも「Unix環境で使える」というだけで「Unix哲学に基づいてる」とは標榜してないしねぇ。
ま,俺は別にUnix哲学が絶対的正義とは思ってないけど。
ただ自分で作るツールはUnix哲学とユーザビリティを両立させるべく努力してるけど。
2019/08/23(金) 19:53:15.50ID:ge92wy5O
単機能のコマンド
標準入出力という共通インターフェース
それらを組み合わせて処理する

この思想を最初に知った時は感動したな
Small is beautiful.
339デフォルトの名無しさん
垢版 |
2019/08/23(金) 20:11:00.47ID:Kka1jIND
ls
2019/08/23(金) 20:24:40.67ID:GCcQKmFF
パイプが強烈なので他の言語のときもできるだけフィルターで機能するように書いている
Xxx の言語で書くと import use require ... ができるのは Xxx の言語でかかれたコード
しかし、パイプを開いて | ./Yyy arg1 arg2 ... とすれば
Yyyは任意の言語で大丈夫

シェルスクリプトが背景にあるのは間違いない
2019/08/24(土) 00:25:49.01ID:AZIGFNIF
何にせよ「ベンダ形式に依存しない」というのが遥か昔に実現できていただけでも評価できる。
今だとテキスト形式より表現能力の高いJSON,更に高いXML with NS & XSDがあるのものの
それらが無い時代によくも思い付いたなと。
342デフォルトの名無しさん
垢版 |
2019/08/24(土) 01:34:35.98ID:dr4oD/Ll
パイプとJSON, XMLを比較するとはね。
ヘリコプターと日本語を比べて云々するようなものだ。
2019/08/24(土) 02:19:04.83ID:AZIGFNIF
例え下手すぎて草
普通に説明したほうがマシだな。
344デフォルトの名無しさん
垢版 |
2019/08/24(土) 02:52:37.93ID:T//47Bbt
パイプとJSON, XMLを比較するとはね。
チンコとペニシリンを比べて云々するようなものだ。
2019/08/24(土) 03:13:32.51ID:ctAc+SuL
単にデータフォーマットの話でしょ?

昔は行指向が普通だったからCSVが良く使われたな。
今でも使うけど。Cはcharacterね。
それからXML,JSON,YAML,TOMLと規格が増えていった。

PowerShellはオブジェクトをパイプに流せるんだよな。
2019/08/24(土) 03:48:51.30ID:GJDIT1Pg
行指向はデータ処理がすぐに行えるって利点があるんだよな

XMLは全体を<xml>でくくるという仕様だからデータが全部揃って
タグが終了するまで処理できない。大きなデータをストリーミングで
受け取りながら処理していくということに向いていない。
ドキュメント専用と考えたほうがいい。

同じ問題はJSONにもある。ただしJSONLならJSONを使いつつも
行指向になってるからJSONを使いながらも行指向的なデータ処理が行える。
2019/08/24(土) 06:30:43.05ID:z5CiWEzT
正規表現で引っ掛けるしかないもんな
2019/08/24(土) 06:54:04.43ID:AZIGFNIF
>>345
そうそう。
PowerShellは「パイプ」という概念はそのままに,
流すアイテムをテキスト形式からオブジェクト形式に変更したんだよね。

もっとも,PowerShellはインターネットでググってるだけじゃあまり情報は出てこないし,
>>342 みたいに「パイプ」と(パイプに流す)「テキスト形式」を混用してしまうのも無理はないけどね。
349デフォルトの名無しさん
垢版 |
2019/08/24(土) 13:27:01.13ID:dr4oD/Ll
混用してるのは>>341

>>340-341を再掲。

340 デフォルトの名無しさん sage 2019/08/23(金) 20:24:40.67 ID:GCcQKmFF
パイプが強烈なので他の言語のときもできるだけフィルターで機能するように書いている
Xxx の言語で書くと import use require ... ができるのは Xxx の言語でかかれたコード
しかし、パイプを開いて | ./Yyy arg1 arg2 ... とすれば
Yyyは任意の言語で大丈夫

シェルスクリプトが背景にあるのは間違いない

341 デフォルトの名無しさん sage 2019/08/24(土) 00:25:49.01 ID:AZIGFNIF
何にせよ「ベンダ形式に依存しない」というのが遥か昔に実現できていただけでも評価できる。
今だとテキスト形式より表現能力の高いJSON,更に高いXML with NS & XSDがあるのものの
それらが無い時代によくも思い付いたなと。
2019/08/24(土) 13:37:16.85ID:ctAc+SuL
>>346
そうだね。
XMLとかマークアップ系はタグ閉じるまで処理できないからストリーミングには向かない。
パーサーに食わせて必要な要素取り出すのが常道だね。
2019/08/24(土) 13:37:41.91ID:GJDIT1Pg
ベンダ形式に依存しない?

psコマンドのオプションと出力フォーマットを見てから言え
2019/08/24(土) 13:49:16.53ID:ctAc+SuL
nodejs使いならawkwardというシェルが面白い
コマンド出力をオブジェクト配列に変換してforEachで回せる
2019/08/24(土) 18:36:54.54ID:AZIGFNIF
>>351
なんの為のPOSIXだと思ってるんだw
2019/08/24(土) 21:05:39.09ID:wirrzXpF
>>353
つまらない
2019/08/24(土) 23:30:16.23ID:AZIGFNIF
そりゃおめーを笑わす目的じゃなくて俺が笑う目的で書き込んだんだからなw
つまらないのは当然
2019/08/24(土) 23:33:11.08ID:GJDIT1Pg
https://www.weblio.jp/content/%E3%81%A4%E3%81%BE%E3%82%89%E3%81%AA%E3%81%84

B とりあげるだけの価値がない。取るに足りない。下らない。 「 − ・ないものを買ってしまった」 「 − ・ないうわさ」 〔「つまらないものですが」などの形で,相手に贈る品物を謙遜していう場合にも用いられる。「−・ないものですが,召し上がって下さい」〕
2019/08/24(土) 23:50:48.54ID:vHj0a3Gd
笑ってるんじゃなくて笑われてるだけでは
2019/08/25(日) 00:04:21.62ID:a7DQLwJd
原理主義者の自称神様には何を言ってもムダ
2019/08/25(日) 00:09:42.96ID:hoACBN+G
sortの話どうなったんだよ?自称神様
2019/08/25(日) 00:40:36.59ID:2WZBdFxH
>>355
自分が笑われる目的で?
なんとも自虐的な奴だなw
2019/08/25(日) 02:30:04.13ID:RhAWwavs
再掲してやろうw

> From: [36] デフォルトの名無しさん <sage>
> Date: 2019/08/11(日) 16:10:55.15 ID:++HFlOfG
>
> 現実世界では私は神なのだ

さっさとsortコマンドの話に答えろよw
2019/08/25(日) 03:09:53.26ID:ssItiA2j
しつこい
2019/08/25(日) 03:49:52.04ID:hoACBN+G
>>361
答えたで? >>173にコード書いてあるやろ?
2019/08/25(日) 04:39:23.92ID:edoCEBS2
神というだけあってシェルスクリプトに詳しいよな
2019/08/25(日) 04:45:30.28ID:ve1RKgr6
>>361
だっさw
2019/08/25(日) 05:11:51.88ID:X8LrMnru
>>361
なんで、>>75のレスって書かないの?
そしてほんとうの意味を書かないの?

>>75
それはその数個上のレスを見ればわかるよ。

「現実世界では俺は優れたプログラマ」(といわれても証拠ないしなーw)
とか言ってるやつがいたから、そいつに対するレス。
2019/08/25(日) 09:58:11.98ID:ve1RKgr6
粘着うぜーな
どーでもいいわ
2019/08/25(日) 11:32:58.43ID:coCCl2cg
簡単なシェルスクリプトならコピペせず書けるようになったけど他にも言語覚えた方がいいのかしら
sedにgrepにawkならかなり世話になってるけどpythonやrubyとは無縁なんだわ
シェルはbashに篭ってても困らんしな
2019/08/25(日) 12:52:50.34ID:RhAWwavs
粘着っていうか自業自得では。自称神さまw
2019/08/25(日) 13:36:51.55ID:1wFl7XLL
いいからシェルスクリプトの話をしてくださいよ
じゃまですよ
2019/08/25(日) 13:49:29.02ID:a7DQLwJd
お前がしてもええんやで
2019/08/25(日) 14:04:56.36ID:ve1RKgr6
俺が自称神さまかよw
2019/08/25(日) 14:11:34.62ID:ve1RKgr6
>>368
他になに書ける?
2019/08/25(日) 15:01:36.04ID:1wFl7XLL
仕事で使ったことがある言語縛りで言えば、
Ruby、JavaScript、Java、C、C++、Python、C#、Perl、PHP、VB6
これぐらいかなぁ?
2019/08/25(日) 17:42:40.59ID:7+B4jEzI
聞いてない
2019/08/25(日) 17:51:41.37ID:ssItiA2j
あー当人じゃねーのか
2019/08/25(日) 20:05:36.28ID:lm+LknRP
>>368
perl5は相性が良い ワンライナーで簡潔だし
sed awk より強い正規表現が使える
2019/08/25(日) 20:06:08.69ID:coCCl2cg
>>373
授業でVB、html、C、java、javascriptを齧っただけですハイ
表計算の方がまだガッツリ書けるわ
2019/08/26(月) 02:33:05.90ID:zrSc8z1e
sedは使うが、awkまでは使いこなせない。
代わりにperlのワンライナーで賄っちゃう。
2019/08/26(月) 04:00:11.44ID:9u1tekMW
PerlはWebサーバーも作れるスクリプト言語だからな。
2019/08/26(月) 04:09:12.67ID:NWn2YSWg
やっぱりシェルスクリプトの利点は
Linux/Unix系ならどんな環境でも最初から入ってるという点と
普段プロンプトから入力しているものと同じコマンドで動くという点だと思う
そのメリットが、メリットにならないような場面では他の言語がいい
2019/08/26(月) 04:32:57.21ID:Y1KwJO8H
やたら短く書けるのも良い点だと思う
2019/08/26(月) 08:29:42.50ID:9u1tekMW
短かく書けるプログラミング言語なんて
ジョークではなく実用的なのでさえごまんとあるんだから
あんまりシェルスクリプトの特筆すべき魅力とは言えんだろう
2019/08/26(月) 09:14:52.23ID:CMmg/EPX
Brainfuck「ふん」
2019/08/26(月) 09:19:30.79ID:CMmg/EPX
>>378
「何をやりたいのか」の方が重要だな
それによって言語が決まる
386デフォルトの名無しさん
垢版 |
2019/08/26(月) 10:12:59.25ID:easMKtRj
ソルバー系はやっていた方がいいと思う。
387デフォルトの名無しさん
垢版 |
2019/08/26(月) 11:41:59.66ID:2xzzFsoU
ソルバー系って?Prologとかのことですか?
2019/08/26(月) 12:36:08.60ID:NWn2YSWg
今日のお昼はザルソルバー
2019/08/26(月) 15:31:55.55ID:7r1lWQhX
これは座布団没収
390デフォルトの名無しさん
垢版 |
2019/08/26(月) 16:47:04.44ID:4xLfK+jj
審議中(AA略)
2019/08/26(月) 19:43:05.91ID:lDnuBORI
perlは便利っていうが専ら正規表現専用機になってる
ほぼsedとして使えるんでつい
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をベースに作った仕様だけどね
2019/09/01(日) 03:22:16.21ID:tx4fDw07
>>487なんて変なこと言い出さずに、それを言えよw
2019/09/01(日) 03:28:52.19ID:V0W1RnmC
だからBourne ShellはPOSIX準拠じゃないよね
でいいんでしょ
2019/09/01(日) 03:31:36.55ID:tx4fDw07
なにをそんなに食い下がっているのか意味わからん。なんの意味があるのそれに?
(そんなこと言い出すのはアホか?としか思えんぞw、常識的にPOSIXなんて存在する前のにPOSIX準拠もなにもないだろう)
2019/09/01(日) 03:33:35.57ID:V0W1RnmC
なんでPOSIXが存在する前の話になってるのか分からんけどねw
2019/09/01(日) 03:35:57.77ID:tx4fDw07
「POSIXって」「右と左で中身がガバガバ」「だから」「[作られた]」
って書いてあるだろう

わざとなのかわざとじゃないのかわからんが、人のレスを読む努力はした方がいいぞ
そうしたら変なこと言い出さずに変なこと言ったことを誤魔化すような醜態はさらさないだろうw
2019/09/01(日) 03:39:37.50ID:V0W1RnmC
>>490で言ったこと訂正しとけよw
2019/09/01(日) 03:40:28.13ID:tx4fDw07
そのレスは読めないなw
俺のレスが読めなくてのとしか思えん
2019/09/01(日) 04:22:29.76ID:5y1tL0M+
ごめんなさいって言えば良いのになんで突っ張るかねぇ
2019/09/01(日) 04:34:43.52ID:YaEsaVCE
>>488
> Bourne Shellに機能拡張した部分の最低限の共通仕様

それ日本語になってないだろ?w

自分が言った言葉を無理やり辻褄が合う(?)ように改変したから
そういう意味不明な言葉になってるんだぞ
2019/09/01(日) 04:36:27.29ID:YaEsaVCE
>>491
> POSIXはkshをベースに作った仕様だけどね
Bourne Shellではなくkshをベースに作られたんだな
2019/09/01(日) 04:40:50.68ID:tx4fDw07
ん?

Bourne Shellに機能拡張した部分の最低限の共通仕様

Bourne Shellありき
どこのぞのバージョンが、それに a b c etc... な機能を追加
どこのぞのバージョンが、それに b c d etc... な機能を追加
Bourne Shell + b + c = POSIX
という意味だろう>>480のいう最低限の共通仕様は

どう、日本語になってないの?
2019/09/01(日) 04:41:03.98ID:YaEsaVCE
>>477
> 候補は幾つかあるものの出しようがない。

候補が有るなら出せるのでは?w
後方がいくつか有るというのなら、その候補を言ってみなよ。
その中で最後に作られたもの(or 一番機能が多いと思われるもの)に
すればいいだけだからさ
2019/09/01(日) 04:42:29.94ID:YaEsaVCE
>>502
Bourne Shellに機能拡張した「部分」
の部分とはどこの部分?

その「部分」の「最低限の」「共通仕様」がPOSIXなんでしょ?
2019/09/01(日) 04:43:18.76ID:tx4fDw07
>>502 に書いてあるけど?
2019/09/01(日) 04:44:02.38ID:YaEsaVCE
>>505
書いてないから言ってる

「部分」=○○

という形で言えばいいだけ

はいどうぞ
2019/09/01(日) 04:44:51.13ID:tx4fDw07
b と c だよ
2019/09/01(日) 04:48:27.13ID:YaEsaVCE
b と c があって、その部分の
最低限の共通仕様がPOSIXなわけね
2019/09/01(日) 04:49:02.25ID:tx4fDw07
そう最初から言ってる、書いてるんだけどなあww
2019/09/01(日) 04:49:14.02ID:YaEsaVCE
つまり、Bourne ShellはPOSIXには含まれないと
2019/09/01(日) 04:50:02.57ID:tx4fDw07
ああ、違う、違う読み方してんのか??
どこのぞのバージョンが、それに a b c etc... な機能を追加
どこのぞのバージョンが、それに b c d etc... な機能を追加
なんぞの共通の最低限の共通仕様だからね
2019/09/01(日) 04:50:42.66ID:tx4fDw07
>>510
ん?
Bourne Shell + b + c = POSIX
って書いてるんだけど?
2019/09/01(日) 04:51:10.99ID:YaEsaVCE
> なんぞの共通の最低限の共通仕様だからね

お前「部分」って言ったよね?

Bourne Shellに機能拡張した部分(b+c)の最低限の共通仕様
2019/09/01(日) 04:52:24.67ID:tx4fDw07
それに a b c etc... な機能を追加
a b c etc... なんぞは部分だわな
2019/09/01(日) 04:52:27.35ID:YaEsaVCE
> b と c だよ

言質とりましたーw


Bourne Shellに機能拡張した部分(b+c)


(b+c)の最低限の共通仕様がPOSIXだって言いましたー
2019/09/01(日) 04:53:50.39ID:tx4fDw07
なにを喜んでいるのか意味わからんな。どこになんの言質??
2019/09/01(日) 04:54:23.93ID:YaEsaVCE
>>515をみろ
2019/09/01(日) 04:55:11.18ID:tx4fDw07
だから、なんの言質かと聞いているんだが
2019/09/01(日) 04:56:08.38ID:YaEsaVCE
Bourne Shellに機能拡張した「部分」が(b+c)だって言質とりましたーw
2019/09/01(日) 04:57:06.97ID:YaEsaVCE
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
2019/09/01(日) 04:59:06.93ID:tx4fDw07
まさか、POSIXとは (b+c)のことだって言ったと言っているわけじゃないだろうね?
Bourne Shell + b + c = POSIX
って書いてあるだろう。POSIXとはこれのことだと言っているのだろうとは俺は言っているけど。それも俺の主張ではなくて>>840の言いたいことはだがなw
2019/09/01(日) 05:00:27.58ID:JXg8T9pY
キチガイ VS キチガイ

ファイ!
2019/09/01(日) 05:00:57.18ID:tx4fDw07
>>521
× >>840の言いたいことは
>>480の言いたいことは
いい加減長いw
2019/09/01(日) 05:02:27.14ID:YaEsaVCE
>>521
だから

「Bourne Shelに」に「機能拡張した部分(b+c)」の「最低限の共通仕様」=POSIXだろ
2019/09/01(日) 05:03:43.36ID:JXg8T9pY
>>523
長くてもいいよ。
見てて面白いからもっとやれ。
どうせこんな場末のスレなんてチガイ同士の喧嘩かスクリプトくらいでしか活気付かないんだから。
2019/09/01(日) 05:04:01.75ID:tx4fDw07
>>524
それでいいよ(?)で?
2019/09/01(日) 05:05:08.99ID:YaEsaVCE
>>526
で、って最初から言ってる。
日本語になってないと。
2019/09/01(日) 05:05:14.28ID:tx4fDw07
>>525
すぐに喧嘩とか思っちゃうのねw
2019/09/01(日) 05:05:42.43ID:tx4fDw07
>>527
だから、どうなってないのかと聞いているんだが?
2019/09/01(日) 05:11:25.25ID:YaEsaVCE
>>529
Bourne Shellに機能拡張した部分(b+c)の最低限の共通仕様 がPOSIX
↑日本語になっていない

↓正しい日本語
Bourne Shellを機能拡張したシェルの共通仕様がPOSIX


まあ↑は日本語としては正しいが、言ってることは間違いだけどな

正解
Bourne Shellを機能拡張したkshのサブセットがPOSIX
2019/09/01(日) 05:17:42.82ID:tx4fDw07
その俺のからはその添削後の意味は取れないのね?ふーん
まあ、それならすまんかった。(なんかそうとは思えんけどw)
2019/09/01(日) 05:18:51.37ID:YaEsaVCE
まさにこれw

499 名前:デフォルトの名無しさん[sage] 投稿日:2019/09/01(日) 04:22:29.76 ID:5y1tL0M+ [2/2]
ごめんなさいって言えば良いのになんで突っ張るかねぇ
2019/09/01(日) 05:19:56.80ID:tx4fDw07
いや、言ってるけど
そこまで読めないのか?というのは拭えないというだけで
2019/09/01(日) 05:26:24.29ID:YaEsaVCE
で、話を戻そうか?

>>477
> 候補は幾つかあるものの出しようがない。

候補が有るなら出せるのでは?w
後方がいくつか有るというのなら、その候補を言ってみなよ。
その中で最後に作られたもの(or 一番機能が多いと思われるもの)に
すればいいだけだからさ
2019/09/01(日) 05:31:12.93ID:YaEsaVCE
忘れているかもしれないけど、

Bourne ShellとPOSIXシェルの機能の違いはなにか?
という話です。
536デフォルトの名無しさん
垢版 |
2019/09/01(日) 13:23:16.11ID:fPTBNnye
やっぱりどこでも動くシェルスクリプトなんて幻想なんだねw
2019/09/01(日) 13:28:25.22ID:hBg0Iyqv
まーた始まった
538デフォルトの名無しさん
垢版 |
2019/09/01(日) 13:38:39.47ID:sO2LPoJE
昨日神保町の本屋でこんな本みつけた。ペラペラの薄い本で妙に安い(300円+税)。内容は初心者向け。

シェルスクリプト入門の入門
http://ankokudan.org/d/d.htm?detail230-detailread-m.html
2019/09/01(日) 14:14:10.44ID:IrmDadb6
どうでもよさそうなものださなくていいよ
2019/09/01(日) 18:13:48.55ID:Zrnas7uJ
UNIXの分裂とかも、こんな不毛な言い争いから始まったんだよなw
2019/09/01(日) 18:27:20.62ID:5y1tL0M+
AT&Tの解体が原因じゃないの?
2019/09/01(日) 19:11:34.33ID:ugxLNVG7
う、うん…
2019/09/01(日) 23:36:59.29ID:V0W1RnmC
自分の間違いを素直に認められないやつは厄介だなw
2019/09/02(月) 02:57:56.84ID:qpVgNjbx
キチガイ
2019/09/02(月) 05:42:07.68ID:moJkj9e4
こんな場末の記事でしか偉ぶれないなんて,かわいそう。
2019/09/02(月) 06:47:31.22ID:mejwNGsW
こんな場末のスレで煽りしか入れられないなんて,かわいそう。
2019/09/02(月) 08:23:13.45ID:KSSQVEnP
>>546
自分を可哀想だと言い始めたら、人生終わりだよ
2019/09/02(月) 08:29:03.25ID:mejwNGsW
>>547
>>546
2019/09/02(月) 09:13:03.84ID:moJkj9e4
もしかして >>546 って >>545 に「言い返した」つもりなのかね。
ヤベーなw
2019/09/02(月) 09:29:50.35ID:mejwNGsW
>>549
>>546
2019/09/02(月) 10:24:24.46ID:PyPzRv4a
Bourne ShellとPOSIXシェルの機能の違いはなにか?
という話はどうなりましたか?
2019/09/02(月) 11:36:53.96ID:PWSlwBbe
※ 忘却の彼方に流れていきました
2019/09/02(月) 18:30:44.36ID:1C5pGEJg
https://tangentsoft.com/misc/unix-shells.svg
POSIX shellと比較するならkshの方が適切な希ガス
2019/09/02(月) 19:04:17.99ID:PyPzRv4a
Bourne ShellとkshだったらBourne Shellの方が有名だろ?
何を持って適切と言ってるのか知らんけど
2019/09/02(月) 22:23:56.37ID:8MncpZHQ
逆に言えば有名だから何なんだという話でもあるなw
2019/09/02(月) 23:36:30.01ID:PyPzRv4a
有名だから聞きたいんだよw
UbuntuとDebianの違いはよく書きれても
UbuntuとLinuxfxの違いなんて気にしないでしょ?

言われて初めて、へー、そんなのあったんだーレベルだから
2019/09/02(月) 23:36:49.17ID:PyPzRv4a
UbuntuとDebianの違いはよく聞かれても
2019/09/02(月) 23:45:33.27ID:KSSQVEnP
>>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的に正しいの?
2019/09/02(月) 23:46:05.05ID:KSSQVEnP
>>558
letは正しくないからそこは放置でw
2019/09/03(火) 00:05:50.68ID:zMaEK75z
ほぅ…
$ bash -c 'unset a b;echo 10| { read a;let b=a+10;echo $b; }'
20
2019/09/03(火) 00:13:50.73ID:1Annr1ic
>>560
へーそんな挙動するのか。
2019/09/03(火) 00:31:57.81ID:KovswbEV
パイプの右側がサブシェルになるのかどうかはPOSIXで規定されてない
どちらも間違いじゃないが、bashの動きのほうが多い
2019/09/03(火) 01:10:57.53ID:estwIa98
bash --posixでもうっかり配列は動く悲しみ
2019/09/03(火) 01:31:09.86ID:WJPOiKcg
>>562
多いとは?

POSIXshellはksh派生なのに動きが違うのがなんとも
2019/09/03(火) 02:41:22.59ID:KovswbEV
>>564
bash, dash, mksh, yash, posh が同じ動き
ksh, zsh が同じ動き
2019/09/03(火) 02:44:16.76ID:KovswbEV
>>564
POSIXシェルという実装は存在しない
だからkshの動きはPOSIXシェルの仕様通りと言える
bashはPOSIXシェルそのものではない。
2019/09/03(火) 02:56:06.66ID:1Annr1ic
>>566
「kshの動きはPOSIXシェルの仕様通り」
正確には
「kshの動きをPOSIXがシェルの仕様として採用した」
だな。
2019/09/03(火) 13:39:17.34ID:SNzApyUr
これマジ?
2019/09/03(火) 17:49:01.73ID:U7UFDLpo
>>566,567のこと?>>567の下は上と同じこと言っているとしか見えないが
だったらマジじゃないだろう
2019/09/11(水) 12:29:34.80ID:0GNwCqDq
POSIXは他の環境でも動く共通規約
GNUのソフトは高機能だがそれ自体が方言ということ
組み込みは機能を削ぎ落とすため色々知恵が必要
一般人はbashだけ使ってればおk
こんな認識で問題ない?
571デフォルトの名無しさん
垢版 |
2019/09/11(水) 12:40:30.30ID:3HQIKx2V
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね…
2019/09/11(水) 12:52:40.14ID:IEmfVi5w
>>570
Linuxユーザーという前提?

POSIXに準拠していれば、多くの環境で動かすことが出来る
GNUはPOSIX準拠+高機能な拡張(標準語+方言)
GNU以外でも多かれ少なかれ拡張されてる
組み込みも完璧ではないが、多くの場合POSIX準拠に近い
一般人はWindowsだけ使ってればおk
dashで動かす必要があるなら、bashの拡張は使えない
2019/09/11(水) 12:53:13.99ID:IEmfVi5w
>>571
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
2019/09/11(水) 13:53:14.59ID:/GwFJIf/
winでwsl使えるようになったし、bashが正義じゃないの?
macは知らないw
2019/09/11(水) 13:59:37.76ID:ujkZonF+
だからその、WSLのUbuntuの
/bin/sh は dash だっていってんの
2019/09/11(水) 14:06:58.77ID:Alp4BtBi
aptitude install bash
#!/usr/bin/bash
2019/09/11(水) 14:18:05.48ID:0GNwCqDq
>>572
Mint使ってるけどdashってどんな時に必要なの
軽さが求められるってラズパイやドローン辺り?
MacはBSDだからLinuxのコマンドオプションが使えないってのは面倒そうね
だからってそっちにcoreutils入れるのもアレだが
2019/09/11(水) 14:38:42.01ID:ujkZonF+
>>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
2019/09/11(水) 15:20:07.21ID:wb8QVF41
bashが使えない環境のほうが特殊だよなぁ
素直に #!/bin/bash で書いときゃいいんじゃね

ところで、#!/usr/bin/env bash って使えるのか?
2019/09/11(水) 15:55:05.69ID:ujkZonF+
特殊だろうがbashが使えない環境は現実として存在してるわけで
2019/09/11(水) 20:12:45.01ID:sXUhuJjU
またひとりで必死だな
2019/09/11(水) 22:51:13.32ID:zVcNXGaB
またお前か
2019/09/12(木) 00:11:11.54ID:GvsY5hZk
普通にPCでLinux(とWindows)使ってるだけならbashだけでなんにも困らないよなあ
これはLinuxに限らずちゃんとしたUnixを使う場合もそうだけど、客先で使ったり客に何かを提供する場合は気を遣うべきだが
自分で自由にできるAIXやHP-UXならbashインストールすりゃいいんだし
584デフォルトの名無しさん
垢版 |
2019/09/12(木) 01:59:12.99ID:Uy9QyXie
つまりPOSIXなんてピエロだとwww
2019/09/12(木) 02:11:14.84ID:iqiqB/tU
オープンソース開発者「そら、お前がお前のためだけのツール作るなら、それでいいだろな。責任もなんにもないし」
586デフォルトの名無しさん
垢版 |
2019/09/12(木) 02:18:54.66ID:xw2iu/gH
MITとかの主要なOSSライセンス読んでみろ。
ソフトの使用でどんな損害被っても作者は責任持ちません。
それに同意しないと使えませんて書いてあるだろ。
オープンソース開発者こそ責任もなんもない。そのためのライセンスだから当たり前だが。
何を勘違いしてんのかねこいつはw
2019/09/12(木) 07:53:28.61ID:umd/llTn
>>574
macOSもzshがデフォだから実質Bashの機能が使える。
2019/09/12(木) 07:54:28.26ID:YLSbOzHc
JavaだとJREまるごとついてくるソフトも珍しくなかったし、
今だとコンテナでlibcからなにまで添付。
ストレージの容量に気を使わなくてよくなってるんだから時代に合わせて
開発するのが良いんじゃないかね。
2019/09/12(木) 07:55:04.48ID:umd/llTn
まーーーたいつもの自称神のPOSIXキチが暴れてんのか。
2019/09/12(木) 09:05:58.55ID:iqiqB/tU
>>587
問題はシバンをどうするかだよ。
zshを使うには#!/usr/bin/zshとしないといけない
bashなら#!/bin/bashだ
だがzshとbashをうまく使い分けてくれるわけじゃない
シバンは#!/bin/shとするしかない
そうするとUbuntuではdashになる
2019/09/12(木) 10:57:28.70ID:d/tSjguy
#!/usr/bin/zsh にすればいいだろう、そういう話でもあるのに特定のヤツだけがなぜか拘っているだけだろに
そいつもたいしたもん作ってないくせに
2019/09/12(木) 11:04:35.83ID:6grXRSs+
だけどそうするとzshが必須になるって話でしょ
2019/09/12(木) 11:12:45.55ID:d/tSjguy
>>587はzshがbashの代替になるという話じゃないの
bashとの違いはあるだろうけど、些細なちょっと直せばいいというのを含んでの
そもそも一般人は=特定の環境で動けばいいだけの人はの話でしょう
2019/09/12(木) 11:23:02.84ID:6grXRSs+
「一般人」をオレオレ定義して語るのはやめましょう

複数の環境を使う一般人もいるわけです
2019/09/12(木) 11:52:17.18ID:7qK8Dq0y
zshスクリプト書くならzsh必須
bashスクリプト書くならbash必須
当たり前の話だ
2019/09/12(木) 11:55:43.46ID:Xwf8i9TU
あたり前田のcracker
2019/09/12(木) 12:04:51.42ID:d/tSjguy
>>594
大多数でもなんでもいいけど、そういう意味だろう。それでも読めなさそうだが
2019/09/12(木) 12:40:22.35ID:6grXRSs+
一般人を勝手に定義すんなって言ってるのに、
そういう意味だろとか、わかってなさすぎw

一般人にそういう意味はありません
2019/09/12(木) 12:43:04.42ID:d/tSjguy
話の通じないこだわりぶりは、いつものか
2019/09/12(木) 12:45:16.02ID:6grXRSs+
>>599
お前が「いつもの」だって言うのはわかってるぞ
2019/09/12(木) 12:45:43.48ID:6grXRSs+
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
2019/09/12(木) 12:47:01.39ID:d/tSjguy
どういつものなんだか
2019/09/12(木) 12:54:03.95ID:6grXRSs+
シェルスクリプトの話をしないやつだよ
2019/09/12(木) 12:56:58.88ID:d/tSjguy
自分でできないのにww
ないすボケと言って欲しいのかw
2019/09/12(木) 13:01:35.95ID:6grXRSs+
いいからシェルスクリプトの話をしろよ。まったく
2019/09/12(木) 13:04:19.98ID:d/tSjguy
>>601から全て自分自身に対して言っているのね?なるほど納得
2019/09/12(木) 17:43:49.36ID:umd/llTn
ここまで言われてなおシェルスクリプトと無関係な煽りを書き込めるって相当だぞ
2019/09/12(木) 18:46:23.43ID:i3mmqxJn
exec 2> >(tee -a stderr.log >&2)
後ろの>&2ってどんな意味なんです?
2019/09/12(木) 18:46:26.98ID:Um0WsLAR
bashが必要になるようなものはそもそも選択する言語が間違ってると思う
2019/09/12(木) 19:42:51.04ID:WUiTiHRA
>>608
stderrのをだから(サブシェル内の)stderrに出力、それが無ければstdoutに出力
あんまそれほど意味はなさげのような気がするけど
2019/09/12(木) 20:41:45.14ID:WUiTiHRA
インタラクティブ、もしくは、それ以下のスクリプトでサブシェルのstderrの先を変えようにも変えようがないし、やるならその前でしかなと、意味はなさげと思ったが、
それが入っているスクリプト起動時にリダイレクトする場合には意味があるか。(コンソールへの)stderrいらないから捨てるとか

hoge.sh
#!/bin/bash
exec 2> >(tee -a stderr.log >&2)
...

./hoge.sh 2> /dev/null
>&2があるので、(コンソールへの)stderrはうまく捨てれる
2019/09/13(金) 17:57:13.42ID:DBJTu1IU
bashのプロセス置換機能を活用して、シェル作業やスクリプト書きを効率化する
https://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
そのスクリプトの出処はここだな

出力のプロレス置換ってこう使うのか
入力のプロセス置換はよく使ってるけどそっちはどうもな
2019/09/14(土) 14:53:58.72ID:pQ8OW4Ak
プロレス乙
2019/09/14(土) 15:54:17.46ID:tdzCu94K
プロミスの間違い
2019/09/14(土) 17:27:42.22ID:niUt0I6q
サラ金市ね
2019/09/15(日) 16:58:31.20ID:BxQhi0/5
grepは自身で上書きすると中身空になるけど回避方法ある?要はspongeなんだけども
2019/09/15(日) 17:06:24.59ID:b8Gz5Yn9
data=$(grep 〜); echo "$data" > 〜
618デフォルトの名無しさん
垢版 |
2019/09/15(日) 17:10:14.49ID:riyG3w3b
>>612
こんなのが出たので見るのを止めた。


この接続ではプライバシーが保護されません
sechiro.hatenblog.com では、悪意のあるユーザーによって、パスワード、メッセージ、クレジット カードなどの情報が盗まれる可能性があります。詳細
NET::ERR_CERT_COMMON_NAME_INVALID
2019/09/15(日) 17:13:13.56ID:b8Gz5Yn9
>>618
お前のパソコンなんかおかしくなってるぞw
2019/09/15(日) 17:15:19.48ID:b8Gz5Yn9
ハッテンブログじゃなくてはてなブログだな
2019/09/15(日) 17:18:49.85ID:LMFjfaUx
hattenblogこわい
2019/09/15(日) 17:28:57.92ID:4TgO8+RX
5ch では、はてなブログのURL を貼ってはいけない!

書き込み禁止画面が出ずに、いきなり吸い込まれて、
アクセス禁止になるようにしてあるから、超危険!

同様に、twitter の長いURL にも、吸い込まれるものがあるらしい

そこだけ、全角などに変換した方がよい。
hatenblog
2019/09/15(日) 17:32:44.42ID:4TgO8+RX
>>612
のURL は、証明書エラー!

HTTPS の証明書が切れてる!
2019/09/15(日) 17:37:11.76ID:4TgO8+RX
>>612
hatenblog

そもそも、上ははてなブログじゃない!w
a が無い

はてなブログは、
hatenablog
2019/09/15(日) 17:40:16.44ID:4TgO8+RX
>>612
hatenblog に、a を追加したら、ちゃんと見れた!

はてなブログは、
hatenablog
2019/09/15(日) 17:40:54.01ID:h836vV7+
https://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
2019/09/15(日) 18:39:06.79ID:QquDNTIJ
https://sechiro.%68atenablog.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
628デフォルトの名無しさん
垢版 |
2019/09/15(日) 20:14:01.28ID:riyG3w3b
>>619
スマホのChromeなんだけどね。おかしいのかね?よくわからんが。
629デフォルトの名無しさん
垢版 |
2019/09/15(日) 20:17:20.74ID:riyG3w3b
>>621
あ、そういうことか。
たしかに無事開いてしまったら何か違う世界を見てしまいそうで怖いアドレスだなw
2019/09/16(月) 19:53:43.50ID:vTAkg/qq
16進数(最大二桁 0xFF)から8進数に変換したいんですが
bcを使う以外にsedなどを使った方法とかありますかね…?
$ printf 'obase=8;ibase=16;%s\n' 'FA' | bc
もしあれば,bcは16進数のアルファベットが大文字じゃないといけないし,
POSIX標準とはいえUbuntuとかには既定で導入されてないしで,
あまり使いたいくないんです(わがままですいません)
2019/09/16(月) 20:12:04.01ID:Zn9wpmWA
printf '%o\n' 0xfa
2019/09/16(月) 21:17:46.43ID:U9mfWlHU
8進数にパーミッション以外の使いみちなんてあったのか…
2019/09/16(月) 23:39:17.58ID:LCUbae2V
>>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) よりも速いはず
2019/09/16(月) 23:43:56.37ID:LCUbae2V
他にも case を使って書けるはず
最大0xFFなら

case $value in
01) 〜
02) 〜

[fF][eE])
[fF][fF])
esac

とかねw

たかだか256+α行。頑張ればFF の一桁ずつ処理すれば行は減らせるだろう。
2019/09/16(月) 23:46:42.80ID:LCUbae2V
>>633訂正

× oct=$(( ($hex >> 6) * 100 + ($hex >> 3 & 0x7) * 10 + ($hex & 0x7) ))
○ oct=$(( (0x$hex >> 6) * 100 + (0x$hex >> 3 & 0x7) * 10 + (0x$hex & 0x7) ))
2019/09/17(火) 00:06:22.06ID:IA1rgq5F
>>632
posixの範囲ではprintfで16進数から文字に変換することが出来ない

printf '\101' # => A
printf '\x41' # bashは変換できるが、dashでは変換できない

バイナリデータの処理など、文字コードを使って処理する必要がある場合は
8進数を使うほうが良い
2019/09/17(火) 00:09:45.15ID:IA1rgq5F
8進数よりも16進数の方が使い勝手が良いのにパーミッションが8進数なのは、
当時はまだ16進数が発明されてなかったからだったりするのかな?
シェルスクリプトもそうだけど、なんか古い時代は8進数しかなかった感じがする
それとも単なるビット数を節約しただけなんだろうか?
2019/09/17(火) 00:18:14.43ID:kEXgFQM4
7ビット機だったような
2019/09/17(火) 02:12:04.50ID:sr4VPY0J
rwxで3ビットしか使ってない必要ないと思ったからだろう
2019/09/17(火) 04:55:24.40ID:KdPNzCQK
パーミッションの話じゃなくて
2019/09/17(火) 09:45:35.22ID:3tDP3W6T
>>634
ありがとうございます!
2019/09/17(火) 12:39:27.59ID:e1bW+EWq
>>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ビット区切りで表した方が書いた方がわかりやすいのと同じように
2019/09/17(火) 12:48:38.39ID:N6BvjGdd
昔はなぜか 12bit 15bit 18bit 24bit 36bit あたりのマシンが多い
2019/09/17(火) 13:26:02.16ID:e1bW+EWq
そうなの。見物したスイッチをパチパチしてマシン語を打ち込む当時のコンピュータは16bitだったから、PDP-7(というかPDP-11の前までのDEC)が異端かと思ったw
2019/09/20(金) 09:32:25.18ID:pw3H64dJ
16進数から8進数への変換って↓
$ hex=fa; printf '%o' $((0x$hex))
↑こういうのだとPOSIX違反?
2019/09/20(金) 13:37:02.90ID:fQRmEVoK
POSIXは知らんが、 古いzsh? は $((0x$hex)) が使えなくて $((16#$hex)) だった気がする
もしくは $((011)) が zshでは8進数にならなくて $((8#11)) と書かないといけない
という問題だったかもしれない。まあ忘れたw
2019/09/20(金) 15:46:33.91ID:pw3H64dJ
ふむ。ということは今であればほぼ問題ないという訳か。
thx
2019/09/20(金) 18:40:57.99ID:YblgUZDU
>>644
基本的にメインフレームってカテゴリのコンピュータはCPUも自社設計だったので
8bit単位じゃなく自分たちの使いやすいbit数だった
ザイログとかモトローラのCPUを使っていると基本的に8bitの整数倍になる
2019/09/22(日) 22:42:51.90ID:UP8ZY9Jm
symlnkのフォルダからファイルをmvすると実体パスの方で移動するけどmvの仕様?
2019/09/22(日) 22:58:25.61ID:wuCdbk0L
移動なら実体を移動しなきゃ移動しないだろう、ファイルシステム的に
2019/09/22(日) 23:05:40.23ID:QKufl6gy
例えば/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にいるという情報は伝わらない。
2019/09/22(日) 23:22:54.08ID:dHMqf7rP
シェルによっては今いるディレクトリをシンボリックリンクのままPWD環境変数に出力するから、外部コマンドでも>>651の場合に/a/bではなく/x/yにいると分かることもある
だからmvでもやろうと思えば環境変数によって動作をかえて/x/cに移すこともー応可能ではある
ただ普通はそういう危なっかしい動きはしない
2019/09/23(月) 00:58:42.07ID:XnqhgXWR
なるほど
~/dir/foo.txtがあって、dirのリンクを~/Desktop/dir_linkに作ったんだ
んでdir_linkからmv foo.txt ../したらDesktopになくてあれってね
シンボリックリンクはあくまで別名だって念頭に置かないといつかやらかしそうだなぁ
2019/09/23(月) 13:44:18.78ID:uT43KuRv
シンボリックリンク自体はカーネルっていうかファイルシステムの機能であって
シェルの機能じゃないよね?

シンボリックリンクされたディレクトリへの移動やその表示が、シェルの機能?
2019/09/23(月) 14:55:36.41ID:16gV8N0U
シンボリックリンクはただのファイルで、APIが機能を提供してるだけだろう
ハードリンクはファイルシステムの機能だろうが
2019/09/23(月) 15:20:14.51ID:0wgm+uqt
シンボリックリンクはPOSIXで決まっているが、
シェルスクリプトとは関係ない。
シェルとも関係ない。すれ違いだ。
シェルスクリプトの話をしろ。
2019/09/23(月) 15:43:16.78ID:PpvL3bdr
シンボリックリンクもハードリンクもファイルシステムの機能だ
2019/09/23(月) 15:44:56.02ID:mZE+d06B
ドヤァ
2019/09/23(月) 16:01:07.98ID:16gV8N0U
>>657
どこまでをファイルシステムかと言うのかだが、論理矛盾とかリンク切れとかあってもなんも関係ないのだから低レベル=どのファイルシステムでフォーマットする?というファイルシステムのファイルシステムではないな
そのレベルではファイルとフラグを提供しているにすぎない

APIも含めたOSがアプリケーションに対しての提供するファイルシステムといえばファイルシステムだろうが
2019/09/23(月) 16:41:43.41ID:aoth6Tve
まぁ、いずれにしても、ここではスレ違い
2019/09/23(月) 16:58:42.91ID:COQ8/G13
シンボリックリンクやハードリンクはOSの機能
ファイルシステムはそれを実装するだけ
(FATのように実装してないものもある)
2019/09/23(月) 17:01:20.42ID:PpvL3bdr
アホばっかw
2019/09/23(月) 17:09:58.15ID:fWeAQpZu
自戒か
2019/09/23(月) 17:22:55.59ID:qNyZUwSM
ファイルシステムはOSの提供する1つの機能だろ
2019/09/23(月) 20:09:09.12ID:uT43KuRv
いつからカーネルがOSに掏り替わった?
2019/09/25(水) 16:36:07.25ID:vuS5tsH7
カーネルってファイルシステム含まないでしょうが
2019/09/25(水) 17:26:48.60ID:Fy/ppuPa
子供がまだ食ってる途中でしょうが
668デフォルトの名無しさん
垢版 |
2019/09/29(日) 15:56:27.36ID:kt1IDkk5
誠意って何かね
669デフォルトの名無しさん
垢版 |
2019/09/29(日) 17:07:22.81ID:G1Omq4Sq
2019/09/29(日) 19:09:52.55ID:VaR9nylT
女だったらアレかもしれんが
2019/09/29(日) 19:22:34.45ID:CY5JaLwa
俺が定期的にお題を出してやらないとすぐクソスレ化するなw
2019/09/29(日) 19:31:49.84ID:cn7qdGIP
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?
2019/09/29(日) 19:34:18.39ID:RIFVILY+
POSIXの話するから荒れて盛り上がるから誰かしてよ
2019/09/29(日) 19:34:36.19ID:RIFVILY+
POSIXの話すると荒れて盛り上がるから誰かしてよ
2019/09/29(日) 20:34:15.29ID:1ct4yMlj
POSIX準拠で固定小数点ライブラリほしいな
小数使うことは稀だけど、たまに無いとめんどくさい
exprは外部コマンドで遅いので却下w
2019/09/29(日) 20:53:22.53ID:UgGWrkoZ
bashって便利だけど計算部分だけマジでダサいな

1+1が
$((1+1))ってなんなんだよ
2019/09/29(日) 21:19:57.63ID:1ct4yMlj
どの言語にも言えることだけど、
ダサい部分ってのは互換性のためだよ

シェルスクリプトは外部コマンドを関数として呼び出せて、
そして外部コマンドに使える文字は、ファイルに使える文字と同じ
だから例えば@とか%とかいう文字でさえ、コマンド名として使える

だから、安易に記号を追加するわけにもいかないし予約語も増やせない。
$に関してはシェルスクリプト当初から特殊記号だったから
新たに特殊記号や予約語を増やすのではなく$を拡張するという方法を採用したのだろう

互換性は一番大事だからね
2019/09/29(日) 21:21:56.71ID:1ct4yMlj
補足

例えば「1 + 1」は、"1"コマンドを、+と1という引数で呼び出すという意味になるし
「1+1」だと"1+1"コマンドになる。

選択肢が限られるんだよね
2019/09/30(月) 06:57:25.74ID:Ceph+2oU
$ awk 'BEGIN {print 0.1+0.2}'
0.3
bcより使いやすい悲しみ
2019/09/30(月) 13:47:50.63ID:bgqbOy9v
POSIXの仕様書,
算術展開での(浮動)小数点演算は今度の2020年度改訂で一部解禁されるらしい。
ちなみに時を同じくして$'\n'←みたいな書式も解禁。
やったぜ。
2019/09/30(月) 14:14:05.05ID:gJLA2fQe
やったぜ。
682デフォルトの名無しさん
垢版 |
2019/09/30(月) 14:57:01.11ID:seE3nGDx
石器時代かよワロタw
2019/09/30(月) 14:59:09.67ID:1VQTT5dv
生理がこないんですけど
どうしたらいいですか?
2019/09/30(月) 15:14:42.58ID:g4qimp0d
俺も生理来たことないわー
2019/09/30(月) 15:24:33.48ID:g4qimp0d
>>680
どこ情報ですか?
2019/09/30(月) 17:46:55.62ID:zGRcNdYK
もしもし、先生!もしもし!
だけどもねー、実はあのー、子供つくらないようにしてるんですよね、わたくしも本当に辛くてですね、子供には遺伝しないでしょうか?
2019/09/30(月) 19:45:29.40ID:bgqbOy9v
>>685
http://austingroupbugs.net/view.php?id=249
こことか。
2019/09/30(月) 20:35:29.76ID:sHSicWZI
>>687
いや、小数の話
689デフォルトの名無しさん
垢版 |
2019/09/30(月) 21:58:43.29ID:M1BD3UNk
しょうっすか…
2019/09/30(月) 23:03:44.06ID:qRuhgEzP
無理にシェルスクリプトだけで小数対応しなくても、
perl -e "print 0.2*0.3"
とか、いろいろやりようはあるからあまり必要性を感じない。
2019/09/30(月) 23:20:20.33ID:nI7iDoAi
>>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回でここまで差が出るからね
2019/09/30(月) 23:28:35.91ID:qRuhgEzP
意図と違うと思うが、
time perl -e '$j=0; for($i=0;$i<1000;$i+=1) { $j+=0.2*0.3; }; print $j'
とか、別にシェルスクリプトだけに頼らんでもなんとかなってしまうというか・・・・
2019/09/30(月) 23:29:54.18ID:nI7iDoAi
だから出来るできないの話はして無くて
遅いって話をしてる
2019/09/30(月) 23:35:15.29ID:1VQTT5dv
>>692
これで事足りるな
2019/09/30(月) 23:58:52.54ID:nI7iDoAi
perlは入ってない環境も有るのでその点でも駄目だしね
2019/10/01(火) 00:02:33.23ID:cNB/gbgI
>>679
これで事足りるな
2019/10/01(火) 00:27:03.86ID:rxcb8vGn
必須すぎやろw
2019/10/01(火) 01:47:40.69ID:SPlRKvH8
なになに縛りが好きなマゾなんだろうw
2019/10/01(火) 02:00:19.69ID:rxcb8vGn
そんな事する必要がないなら縛りって言ってもいいけど、
perlが入ってない環境は実際に存在するからね
2019/10/01(火) 02:09:56.58ID:ESup7bfu
awkも使えない環境で何やるんだよw
2019/10/01(火) 02:09:58.85ID:PTA8MEY/
>>679
2019/10/01(火) 02:36:49.10ID:eGCx9XC9
>>700
awkはbusyboxに入ってるよw
2019/10/01(火) 09:01:32.62ID:O2y9FdCY
「可搬性が高い」を「POSIX縛り」と取り違えてるおバカさんがいますね…
2019/10/01(火) 09:11:30.09ID:ZA6pNaC0
POSIXで縛るだけではPOSIX未満のbusyboxで動かなかったりするからね
可搬性を高くするにはPOSIXで規定されたコマンドであっても
なるべく使わないほうが良い
2019/10/01(火) 10:51:02.41ID:CGhZJwfl
どういうことなの…
2019/10/01(火) 11:09:51.43ID:ZA6pNaC0
ここはシェルスクリプトのスレ
つまり可搬性とはシェルスクリプトの話をしてる。

シェルスクリプトではよく外部コマンドを呼び出す
しかし外部コマンドはOSによって違う。

特に基本的なコマンドは、各OSでバラバラに作っていたり
独自の修正を入れており複数の実装があり微妙に動きが異なっている。
例えば、LinuxのsedとMacのsedでは使える命令が違う。

POSIX準拠のコマンド(もちろんオプションなども含む)で規定されてるものだけを
使っていれば可搬性はそれなりにあるが、それでも完璧じゃない。
例えば組み込みで使われるbusyboxはPOSIX準拠コマンドのサブセットが実装されてる。

だから本気で可搬性を高くしようと思えばPOSIX縛りでも不十分。
POSIX準拠のコマンドが信じれない。という前提にたてば
思い切って外部コマンドすら呼び出さない、完全にシェルスクリプトだけで
実装するのがもっとも可搬性が高い。

もちろん限界は有るので実際には出来る限りシェルスクリプトで作って、
外部コマンドは必要最小限、必要に応じて互換性を吸収するようにラッパー関数を作る。
ということになる。
2019/10/01(火) 15:50:14.87ID:P1455Lxu
可搬性に異常に拘っているのは一人か二人しかいないけどな
可搬性に拘ってないというレスにも可搬性を押し付ける
708デフォルトの名無しさん
垢版 |
2019/10/01(火) 16:28:55.36ID:9fvqkmcJ
認めろよ。
シェルスクリプトに可搬性などない。
どこでも動くシェルスクリプトなど幻想。
2019/10/01(火) 16:40:08.47ID:8eIOCDAd
hoge () {
echo "Hello"
}

for i in $(seq 1000); do
hoge
a=$(hoge)
done

myfunc と a=$(myfunc) の実行時間の差はなんなん?標準出力を横取りするためだけにしてはコストが高いかな
簡単に思いつくのは横取りするためパイプでで別プロセスにしなきゃとかかな?
2019/10/01(火) 16:46:56.18ID:O2y9FdCY
それBashでやってない?
試しにKshでやってみて。(俺環かもしれんから,速度比較は晒さない)
711デフォルトの名無しさん
垢版 |
2019/10/01(火) 16:52:40.16ID:/6RuW8/Q
perlが入ってない環境ってそれは入れる必要ないんだろ
一から構築していくならそれでいいけど
2019/10/01(火) 16:54:32.38ID:8eIOCDAd
なるほど。ksh(だけが?)がなんか賢いかな。zsh他も差がある
2019/10/01(火) 17:07:00.59ID:cNB/gbgI
perlが無い環境があるからどうのこうの言うけど
kshが無い環境があるからは言わないんだなw
2019/10/01(火) 17:10:13.56ID:8eIOCDAd
違う人じゃね?同一人物だったらアレだけどw
2019/10/01(火) 18:59:48.82ID:8eIOCDAd
>>712
zsh他も差があるは、>>709で体感できる差があるが正しいか
kshでも差があるね。ループ数増やせば体感できるほどの差となるね
2019/10/01(火) 19:16:54.12ID:fust4gpU
>>709
forkだよ。$( ) の部分がサブシェルになってて
多くのシェルではサブシェル = 別プロセス生成で実装されてる。
そのおかげでサブシェルの中でcdを実行したり変数を使ったりしても
呼び出し元は汚染されたりしない

kshはサブシェルの実装が最適化されていて
全てではないが、サブシェルの部分を同一プロセスで実行する。
独自で状態の保存と復帰を実装してるのだろう。

https://codeday.me/jp/qa/20190810/1425430.html

kshは速いと言っちゃ速いんだが、その(複雑な?)仕組みのせいで
バグのもとになってたりする。ということを書いてあるページが
有ったんだがどこか忘れた。
2019/10/01(火) 19:25:21.59ID:fust4gpU
遅い原因の本質は標準出力のキャプチャじゃないから
この二つでも違いがでる

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
2019/10/01(火) 19:26:55.18ID:8eIOCDAd
>>716
内部関数なのにってとこがね&普通の他の言語とはやはり違うな(まあ当然だが)という(内部汚染とかこれの本題ではないっすよ)

zshはkshを習ってだけど、ちょこちょこ習えてないなあ。kshの否定面のレスだけど、kshは人に優しいとこもあるとも思うw
a=0
ls | while read line; do
[ "$line" = 'hoge' ] && a=1
done
[ a -eq 1 ] && ...
っていう見た目他の言語的では当たり前のがちゃんと動くというwまあ、異端だけど

とりあえず、どうしようもないそういうものということでいいのね。どうも
2019/10/01(火) 19:30:13.87ID:8eIOCDAd
>>717
せっかくですが、ちょい本題とは違うかな。そりゃ () は...
なんで内部関数なのにサブシェルになんのかねん、他の言語的感覚ではという
まあ、内部関数だろうと、() と同じで $() もサブシェルになるということをおっしゃっりたいのでしょうけど
どうも
2019/10/01(火) 19:37:54.80ID:fust4gpU
>>719
> なんで内部関数なのにサブシェルになんのかねん、

考え方が違う。

コマンド置換$( ) は「サブシェルを使用して実行する」という"仕様"なんだよ
なんでサブシェルになるのか?ではなく仕様でサブシェルにすると決まってる。

ただし別プロセスにするとは決まっていない。だから子プロセスとかいう既存の
名前ではなく、新たにサブシェルという用語を作った。

サブシェルの仕様としては、「サブシェル内で行った変数などの変更は呼び出し元には伝わらない。」
などがあるが、それを実現してるなら別の別プロセスでなくてもよい。
だけど別プロセスにするほうが実装が簡単だから多くのシェルではサブシェル=別プロセスになってる。
2019/10/01(火) 19:41:25.43ID:8eIOCDAd
>>720
その続きなどを読んでよ。言われていることはすでに書いてあるんですけど

どうしようもないという結論が得られたのでw、
結局、こんなことにもそれなりの差があるんだから「常時それも無条件で」実行時間の差があるなんて気にするなんて無意味だなと
なにかそれが問題になったときに気にする対応すればいいだけだなという。のをそもそも言いたかったw
2019/10/01(火) 19:44:28.64ID:fust4gpU
>>718
> 内部関数なのにってとこがね
他の言語の場合、(基本的に)関数内の変数の変更は呼び出し元に反映されない。
つまりローカル変数になってるだろ?

それと同じなんだよ。POSIXの範囲ではlocalもtypesetもないから
シェルスクリプトにはローカル変数がない

ように思えるが、実はサブシェルを使うからローカル変数は必要ない。とも言える。
ローカル変数を実現するためのサブシェルと言える。
サブシェルの仕様としてローカル変数は必須の機能だが、別プロセスにするのは必須ではない。

サブシェル(別プロセス)と捉えるから仰々しくなってるが、
変数のローカル化と考えれば、内部関数内の変数をローカル化するってだけだから
「内部関数なのに」とは思わないだろ?
2019/10/01(火) 19:51:56.19ID:8eIOCDAd
>>722
なにを教えてくれてるのか教えたいのかわからないです
内部変数?内部変数環境のことは言ってないです。他の言語でもの(内部)関数を呼ぶその返り値を使うって話なんですけど
内部変数云々ならhogeもサブシェルにしなくちゃじゃないですか?内部関数という言葉が悪かったならすまんすですけど
2019/10/01(火) 19:52:05.05ID:fust4gpU
>>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変数は実質ローカル変数として扱ってるんだから
スコープ的にはこっちのほうが適切だと気づくだろう
2019/10/01(火) 19:53:21.70ID:fust4gpU
>>723
> 内部変数云々ならhogeもサブシェルにしなくちゃじゃないですか?

使い分けるんだよ。

ローカル変数化したいならサブシェルを使う。
そうでないならサブシェルを使わないって。
2019/10/01(火) 19:56:56.36ID:8eIOCDAd
>>725
なんか教えたがりのようですけど、ちょっと無理があるかなと
あくまでも「他の言語的感覚では」が前提、それとは違うというのの確認でしかないんですけど
使い分けるとかそもそも内部変数の話はしてないんですよ
2019/10/01(火) 20:00:53.41ID:fust4gpU
>>726
他の言語感覚って言うけど、
じゃあお前いくつ言語しってんの?って話だよ。

狭い言語の知識=言語の全てって思ってるだけさ
2019/10/01(火) 20:02:16.96ID:8eIOCDAd
そもそものそもそもは、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
2019/10/01(火) 20:02:43.57ID:8eIOCDAd
>>727
はいはい
2019/10/01(火) 20:09:04.89ID:fust4gpU
>>728
どの言語でも、その言語を知らなければ、その言語特有の所でコストがかかるってだけだ
だからちゃんとその言語を知らなければいけない。
2019/10/01(火) 20:10:22.49ID:8eIOCDAd
はいはい。知っていることを延々と言われても。それも聞いてもいないのに
2019/10/01(火) 21:09:03.88ID:/EdGAgHY
>>726
つうか、お前の感覚の話なんか誰にもわからんだろ。
だから、馬鹿だと言う前提で説明してるだけじゃん?
それすら理解できないってことはやはり馬鹿なんだなぁと思うばかり。
2019/10/01(火) 21:21:30.07ID:T/R8ZN8b
ろくにシェルスクリプトのことを知らないから聞いてみた。
親切に教えてくれる人がいた。
……何が不満なんだ?
2019/10/01(火) 21:25:17.92ID:8eIOCDAd
何がお怒りのなのかさっぱりですけどw
2019/10/01(火) 21:31:30.87ID:8eIOCDAd
よくわからないが、他の言語で
func()

a = func()
で、こんな差があるのなんて、他にどの言語あるの?俺は知らない少々他の言語を知っているが
てか、そういうのは普通は「使えない」からそうならないようにするし、そもそもシングルプロセスを前提のが多いだろうから、他の一般的な言語でシェルスクリプトのようなのはちょっと思いつきません

func がまあ普通の速さなので、a = func もなんか他の方法があるのかなと。無いという確認はとれてお礼も言っているのになあ>>718
関係ない(知っていることを)ことを延々とでいい加減してくれというのはあったけどw
2019/10/01(火) 21:52:27.77ID:fust4gpU
すべての言語はそれぞれ違っているんだが、
同じ言語がほしいのか?
737デフォルトの名無しさん
垢版 |
2019/10/01(火) 21:57:08.01ID:Ueonb/Q5
みんな違って
 みんないい
  まつお
2019/10/01(火) 22:01:17.19ID:8eIOCDAd
>>736
相変わらずだね。何を言いたいのかさっぱり
返り値を使う(関数)使わない(サブルーチン)でコストがこんなにあるって話なのに
2019/10/01(火) 22:14:23.82ID:8eIOCDAd
そうだ、ksh(zsh)ならreadでと思ったら、逆に遅くなるのね
hoge | read a
サブシェルになるのはhoge。kshはパイプでもパイプを使わずになんちゃらを使ってなんとかかんとかwとかあったからちょっと期待したのに

あれだな、そもそもシェルスクリプトの関数の返り値はreturnでの実行ステータスしかない、それ以外の形態(テキスト)は考えていませんからこんな感じにしかなりませんってとこか
2019/10/01(火) 22:58:18.96ID:9HRGRt02
for ループは、while よりも遅いだろ。
bash も、dash よりも遅いだろ

ループでは、for, bashを使わない方が速い
2019/10/01(火) 23:34:09.29ID:DttT1lmW
returnが返り値ってw
あれはエラー情報だろ
例外と同じ。
2019/10/01(火) 23:35:42.98ID:DttT1lmW
パイプで処理をつなげていくシェルスクリプトにおいて
返り値=出力なんだよ

出力を読み取って、処理して出力する

そういう基本がわかってないだけ
2019/10/01(火) 23:53:15.78ID:8eIOCDAd
return
なんすけど。returnの意味知ってる?とかいう。いや、しつれい
エラー情報でもない、単なる終了ステータス。exit ではないのは、まあ、関数だからと、exit と区別がつかないからかなw
2019/10/01(火) 23:59:02.30ID:8eIOCDAd
function name () { }
が、POSIXではないのは(これからも採用されないかも?採用するの?)というのは、関数じゃねえー、所詮コマンドだなというとこかなと思ったりしてみたり、今回w

>>742そのレベルで馬鹿にできるのはあなたがそのレベルと言っているようなもんかなとw
てか、return なのにそれを返り値と見るのを頭から否定するのは、いままでの同一人物としか思えないんだけど。シェルスクリプトは知っているがシェルスクリプトしか知らないシェルスクリプトにだけ拘るw
2019/10/02(水) 00:19:13.78ID:DWeKr+Az
>>743
returnの意味は「帰る」
何かを戻すという意味はない
2019/10/02(水) 00:20:54.57ID:238K9SSk
マジで言ってるの?もっと勉強しよう、他人にアタるならw
2019/10/02(水) 00:20:59.41ID:DWeKr+Az
アセンブラでもreturn(RET)がある。
これも戻るという意味なだけ
呼び出し元に何かを戻すという意味はない
2019/10/02(水) 00:23:56.96ID:238K9SSk
アセンブラでもマクロアセンブラはあったりするけどな
戻り値をどういう形態で(どのレジスタにとか)という決まりであれば
>呼び出し元に何かを戻すという意味はない
マジで言っているの?アホらしい
2019/10/02(水) 00:25:12.52ID:DWeKr+Az
>>748
「マジでいってんの」しか言ってないよなw
returnを翻訳してみろ。戻るという意味しかない
2019/10/02(水) 00:26:09.34ID:DWeKr+Az
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_24
returnの説明にも、nは終了ステータスと書いてある。
return valueとは書いていない
2019/10/02(水) 00:30:13.30ID:238K9SSk
言うならアセンブラでなくて機械語だな。ほんとにしょうもない知識自慢

>>749
>returnを翻訳してみろ。戻るという意味しかない
マジで言ってるのとしか言えんやん。「return なんとか」とか普通にあるぞ?
>>743 にreturnしか書いてないからか?なんかしょうもないなああwなんかしょうもないけど、だったらなんかすまんな

>>750
関数として見たらだよ。すでにそういうことは>>743,744で言っているんだけど
所詮コマンドだなで終わってるよ
2019/10/02(水) 01:32:56.67ID:o4tQ0hze
>>735
よく分からないで批判する癖は辞めた方が良い
2019/10/02(水) 01:35:11.54ID:o4tQ0hze
>>751
機械語にreturnに類する語は出てこないぞ?
2019/10/02(水) 01:35:40.52ID:238K9SSk
「よくわからない」が何を指しているのか「よくわからない」だろう?
また単なる「語」に食いつくwいつものかとしか思えません
2019/10/02(水) 01:36:26.76ID:238K9SSk
>>753
イミフ。機械語は01だからな。そんな話はしてない
やっぱりいつものかw
2019/10/02(水) 01:39:39.82ID:238K9SSk
同一人物かどうか知らんが、>>742から同じ人物としてしまう、もうw
同じ「レベルw」でしかも同じ姿勢としか思えないので。もう十二分にそのレベルwを自ら率先して晒してしまったので>>744の後半で正解だったなと
あとはもう「教えてww」やんない
2019/10/02(水) 01:53:53.42ID:o4tQ0hze
いつもの妄言を喚いて自分の敵は一人だと思い込んでる痛い奴だったか
2019/10/02(水) 01:55:39.44ID:238K9SSk
敵www
そういう姿勢だったのね。そうだよね、あなたはw
2019/10/02(水) 02:46:06.49ID:JFJLbhDm
IDが変わっても判別しやすいのはいいこと
ぼんやりしてて助かる
2019/10/02(水) 02:51:03.64ID:o4tQ0hze
>>758
いやおまえ、オレと関係ない人を同一人物扱いしてんじゃん
2019/10/02(水) 02:58:29.05ID:238K9SSk
>>760
>>756をよーく読もうな。読めない?

>>753は何を言いたいの?
機械語は01だからreturnに対する語はないと言いたいの?ととって、ああまたかというw>>756なんだよ(よく読んでねw)

>機械語にreturnに類する語は出てこないぞ?
って、どういう意味?俺の理解とは別でならすまんかったちょっと続ける?
2019/10/02(水) 03:24:37.13ID:DWeKr+Az
知らないなら言わなければいいのにw

RET命令(Return from Procedure)
http://softwaretechnique.jp/OS_Development/Tips/IA32_Instructions/RET.html
2019/10/02(水) 03:28:45.47ID:238K9SSk
>>762
なにを言いたいのかさっぱりなんですが、具体的に自分のお言葉でお願い
まさか、RETはあるがReturnは無いではないだろうし、さっぱりわからん

(そしてなんで同じやねん、その姿勢w)
2019/10/02(水) 03:43:25.73ID:DWeKr+Az
同じだだろ。何いってんの?
略だから違うんだって言いたいの?
2019/10/02(水) 03:44:26.53ID:o4tQ0hze
>>762
そしてそれはアセンブリ言語という..
2019/10/02(水) 03:46:58.80ID:DWeKr+Az
シェルスクリプトのreturnは終了ステータスを返すもので
これは他の言語の返り値ではないのは一目瞭然なんだがね

だからこそ $_ という変数(外部コマンドを呼び出した時の終了ステータス)で
アクセスできるわけだし

しらないならシェルスクリプトを勉強してくださいって言うしか無いな

なんならbashのドキュメント引用しようか?

return [n]
指定した返り値 n で関数を終了させます。 n を省略すると、返却ステータスは 関数内で最後に実行したコマン
ドの返却ステータスになります。 関数の外側で使われているが、 . (source) コマンドによるスクリプトの実行
中である場合、 シェルはそのスクリプトの実行を止め、 n またはスクリプト内で最後に実行されたコマンドの
終了ステータスを スクリプトの終了ステータスとして返します。 関数の外側で . によるスクリプトの実行中以
外に使われた場合、 返却ステータスは偽となります。 関数やスクリプトから実行が戻る前に、 RETURN トラッ
プ に設定されたコマンドが実行されます。
2019/10/02(水) 03:47:32.93ID:DWeKr+Az
>>765
その違いは今、重要なのか?w

returnの意味なんて言語によって違うって話をしてるんだが
2019/10/02(水) 03:49:09.36ID:238K9SSk
>>764
マジか
残念ながらが同一人物に見えるとやはりなお思ってしまうよw

マジか。そんなんで偉ぶるwなんの意味があるのだかさっぱり
そもそもマシン語ではない、アセンブリ=ニーモニックだし。ニーモニック命令は3文字にという昔の風習なだけだろうに

豆知識
そもそも、そんなRETでもいいけどReturnすらないCPUもある。POPしてジャンプという

なんだかなあ
2019/10/02(水) 03:55:47.57ID:238K9SSk
あら。なんかすまん、別人なのね

>>766
んー、なんで「知らない」前提なのかさっぱりわからん。一般的な関数の形態としての話だし、その言っていることは>>743,744で書いているのだけど(もちろんそんなことは前々から知っていての)

あくまでも関数の形態としてのreturn文ね。わからないかなあ

なにか俺は知らないを前提に書いているようだけど、なんで??
2019/10/02(水) 04:19:21.82ID:238K9SSk
ん??
ID:DWeKr+Az が頓珍漢に横入りしたのかwwなにをのたまっているのかだかな。もうあんたはいいよw同じこと繰り返してるし

>>768,769はID:o4tQ0hzeかと思って書いた
>>761はID:o4tQ0hze にご理解いただけたということでよろしいのですかね??
2019/10/02(水) 06:38:15.47ID:Ge1fP5ct
シェルスクリプトはシェルスクリプトだっていってんのに

俺は他の言語しか知らん。シェルスクリプトは他の言語じゃない!
といわれても、

うんじゃあ、シェルスクリプトを使えるように、シェルスクリプトの勉強をしましょうか?
としか言えんわなw
2019/10/02(水) 07:03:56.09ID:R26grXOk
アセンブラじゃなくて機械語だってすごいよなw
2019/10/02(水) 08:47:07.26ID:238K9SSk
>>771
どう読んで、そう思っているのか??
俺は他の言語しか知らん。シェルスクリプトは他の言語じゃない!なんてこれっぽっちも言ってないけど

他の言語の関数とはやっぱ違う他の言語の関数と同じようにはできないねというだけだが?端的には>>735と所詮コマンドということ
POSIXとしてもfunctionと名乗ってるけど、一般的=他の多くの言語のfunctionとは違うfunction、functionというよりコマンドだなやっぱちう
それがシェルスクリプトのfunctionで他の言語のfunctionとは違うって強く俺に言いたいんですかね?

いいよ、めんどくさいから読まなくても。レスするのもめんどくさいからw


>>772
まあ、そういう意味じゃないんだけどね(どういう意味のレスなのかイマイチだがw)
マクロアセンブラがあるようにアセンブラはどのようにもできる、やろうと思えば。縛りはそこじゃなくて、機械語だなという
また、機械語になんて関数なんて概念ないからねって話にも膨らむのになというw
774デフォルトの名無しさん
垢版 |
2019/10/02(水) 09:15:47.03ID:gGwgwb6G
俺はたぬきしか知らないなんて言ってない!
みかんはたぬきとは違う!
2019/10/02(水) 09:19:32.36ID:R26grXOk
機械語に関数の概念が無いってすごいよなw
2019/10/02(水) 09:23:09.06ID:238K9SSk
めんどくせえなあ。とんちんかんな変すぎるレスいらんw

知らなかったのはサブルーチンとして使うのと関数として使うのにコストの差が思った以上にあったというだけだな。functionなんだからそんなに差が無いようになんかあるだろうと思い込みによる
それだけだよ

別にだから関数のように使わないとも言わんし、いままでも使ってるし変わらずに使うけど
2019/10/02(水) 09:25:03.86ID:238K9SSk
>>775
無いよ。機械語を駆使して関数を作ってるっていう
機械語レベルの関数って?まあ、そんなCPUがもしかしたらあるのかもだが、知らんんなあ
2019/10/02(水) 09:39:55.43ID:238K9SSk
機械語にはサブルーチンはある。なきゃ困る(主にどこのアドレスに返ってくるのかのため)。単なるサブルーチンコール、引数の概念とかも無いw
引数も返り値(サブルーチン+返り値=関数)も、単なるmoveとかpushとかで「適当」なとこに入れての(主に高級言語(ほぼCだが)の仕様にあわせての)で、機械語の概念では存在しない
おしまい
2019/10/02(水) 10:11:40.69ID:caSqV8Sl
これマジ?
2019/10/02(水) 10:39:50.67ID:238K9SSk
この板にもあるだろうと思ったらあったし、
「関数」で検索したらアセンブリで関数というのを説明しているようなレスもあるやん
調べろよそのぐらいw
2019/10/02(水) 10:46:24.58ID:238K9SSk
ああ、すまん。勇み足だった。よく読んだらあんま詳しくはないかな
ある程度知っていての注意点ぐらいだった
2019/10/02(水) 10:51:24.96ID:238K9SSk
お詫びに探してきた
https://nw.tsuda.ac.jp/lec/i486/
興味があるなら、読もう。アセンブリの部分をも
2019/10/02(水) 10:54:19.14ID:caSqV8Sl
サンクス
読んでくるわ
2019/10/02(水) 11:01:36.56ID:vYvaxxoe
だいたいシェルスクリプトと機械語なんて超相性悪いから
シェルスクリプトの概念を例える別の言語として機械語(含むアセンブリ言語)は最悪の選択ではw

シェルスクリプトの標準・仕様書であるPOSIXも機械語には全く言及してないってか
適用範囲の節で明言してるし。

(つーかこの喧嘩って俺がkshの速度を持ち出したことが発端なんだな…
良かれと思って余計なこと言わなけりゃよかった)
2019/10/02(水) 11:18:14.46ID:238K9SSk
>>784
>シェルスクリプトの概念を例える別の言語として機械語
じゃないよ、そもそも言いだしたのは。俺じゃないけど。単にreturnという「語」のに絡みついてだけの>>747
まあ、機械語(=1対一でしかないアセンブラ)では当たり前なんだが、上記の通りに

てか、めんどくさいから読まないでしょ?レスするのめんどくさいよw
2019/10/02(水) 11:26:54.15ID:238K9SSk
>>784
>シェルスクリプトの標準・仕様書であるPOSIXも機械語には全く言及してないってか
>適用範囲の節で明言してるし
CPUによって全然違うし(CPUメーカーが作るもんでしょう)なあ。標準化なんてする範疇じゃないんじゃないかな

>kshの速度を持ち出したことが発端なんだな…
いや、違うよ。kshの件は早々に終わっているといえば終わってる。そんなのが全く関係ないとこでながながとなってるだけだな
その前の俺の思惑wからだな、長々としている原因は。強いて言えば
2019/10/02(水) 14:05:10.23ID:D8VruPt/
>>718 , >>719 が既に頭悪そうなんだよ。その辺りから見直したらいいんじゃないかな。
2019/10/02(水) 14:31:23.77ID:238K9SSk
よくわかんないなw
2019/10/02(水) 17:06:22.98ID:em13adMU
ファイル名に()が入ってるやつをリネームしようとしたら
Syntax error: "(" unexpected
と言われる・・
ファイル名から()取り除いたらうまくいきました
どうすればよいでしょうか
2019/10/02(水) 17:19:25.51ID:ccSnb7w3
touch "foo()bar" で作れたからそれかな
あるいは 正規表現のできるrenameツールに任せちゃう
https://paiza.io/projects/GgkMgqOqyzwwgbmu-Fn-Vg
https://pastebin.com/pYBipcQt

~/bin/rename.pl dry s/foo../foo/ foo\(\)bar
foo()bar => foobar

~/bin/rename.pl run s/foo../foo/ foo\(\)bar
2019/10/02(水) 20:34:07.49ID:9nRFYl/a
>>789
file="aaa (bbb) ccc"
mv "$file" "aaa"

シェルスクリプトでは引数の変数は""でくくるもんだ
常識だからな

shellcheckでチェックしろ
792デフォルトの名無しさん
垢版 |
2019/10/02(水) 20:52:22.16ID:56vpBHGI
>>789
ファイル名をシングルクォートまたはダブルクォートで括る。またはそのようにシェルが特別な解釈をしてしまう文字の直前に \ を入れる。
2019/10/03(木) 00:15:58.71ID:SqD9WxB/
空白絡みで便乗質問です。

スクリプトがあるディレクトリを変数に入れるために、よく、
BASEDIR=$(cd $(dirname $0); pwd)
みたいなの書くと思うんですけど、
スクリプトを呼び出す際の相対パスや絶対パスに空白があっても大丈夫な場合はどう""をつければいいんでしょうか。

いつも試行錯誤するんですけどうまくいかなくて空白禁止にしちゃってます。
2019/10/03(木) 00:16:32.35ID:SqD9WxB/
大丈夫な場合→大丈夫にしたい場合、です。
2019/10/03(木) 00:41:53.26ID:kXokk7Ss
dirname "$0"じゃダメな理由はなに?
2019/10/03(木) 00:56:16.10ID:WHDqtNcX
"$(dirname "$0")" じゃない
2019/10/03(木) 02:58:37.36ID:DFQVUXe/
>>793
BASEDIR=$(cd "$(dirname "$0")"; pwd)


BASEDIR="$(cd "$(dirname "$0")"; pwd)"
↑これは不要

"引数"として渡す場合に必要。
変数への代入は引数ではないので不要
2019/10/03(木) 07:38:56.48ID:vim6DLSQ
>>790
ありがとうございます
今のところThunarに標準昨日の一括リネームでなんとかなりました
>>791,792
ls: 'aaa (bbb) ccc.jpg'にアクセスできません:
みたいな感じになりましたね
2019/10/03(木) 08:37:13.31ID:/bA39X9L
小数の計算がPOSIXで標準化されるって本当?
これどうにかしてほしいんだが

$ zsh -c 'echo $((0.1+0.2))'
0.30000000000000004

固定小数点をサポートしてくれよ。
800デフォルトの名無しさん
垢版 |
2019/10/03(木) 09:12:38.31ID:BSBvRGI4
各言語での 0.1 + 0.2 の結果
http://0.30000000000000004.com/
801デフォルトの名無しさん
垢版 |
2019/10/03(木) 09:41:30.99ID:T62xH6xP
言語というよりはどういうライブラリ使っているかの問題だと思うが
2019/10/03(木) 09:46:51.64ID:wbZFe5vy
きちんと0.3返す言語は
分子と分母の2つ記録するから速度は遅くなる

遅いシェルスクリプトの選択した方法は正しい
2019/10/03(木) 09:50:59.70ID:/bA39X9L
いや、誰が浮動小数点数的な答えを求めてるのよ?
誰も数学的に間違った答えなんか求めてないでしょ?
2019/10/03(木) 13:46:15.91ID:oxXSy4fC
固定小数点なんて採用することはないな
提案してみろ、まずはStandard C Libraryとして
2019/10/03(木) 14:46:29.02ID:Fw9k5QN4
>>801
ライブラリというより、内部での浮動小数点の形(float,double,long doubleのどれか。いまどきfloatは無いか)、および、いつ丸めてるかだけじゃね

>>800のも大体は結局はCでの結果でしかないだろう。デフォのdoubleの結果がほとんどだろう
例えば、awkは問題ないように見えるが。2.3 / 0.1 = 23 だが、int(2.3/0.1) = 22 になるのも
806デフォルトの名無しさん
垢版 |
2019/10/03(木) 14:56:31.03ID:gitagY/F
>>805
いや、だからライブラリだろ。
同じ言語でも内部表現に関する決まりのない言語なら例えばBCDで保持するようにしてそれ用のライブラリで計算や10進文字列変換したって構わないんだからな。
2019/10/03(木) 15:03:35.77ID:Fw9k5QN4
そういうある意味特殊なことをしようとする意志のがあればな
結局はCなんだよどういう言語でもああいう部分は。そしてCがそうだからただそうなだけ。わざわざ言うようなことをするのは極めて少ないだろ
浮動小数点がIEEEで決められてる正規なものだし。特殊なプログラムを使えということだよ=シェルとかに求めるのは現在のコンピュータ界隈では無理筋だな
2019/10/03(木) 15:08:16.36ID:wbZFe5vy
perl か何かに任せておけ
#!/usr/bin/env perl
use bigrat;
my ( $ss, $F, $ISO ) = (@ARGV);
unless ( defined $ISO ) { $ISO = 100 }

my %shutter_speed = (
30 => -5,
25 => -14/3,
20 => -13/3,
......
);
printf "%s\n", 0/1 + $shutter_speed{$ss} + $F_number{$F} - $ISO_number{$ISO};

ただし perl bigrat だと
0/1 +
を抜くと型が整数処理されるというわけのわからん挙動するケースがあったから
別の言語がいいけど
2019/10/03(木) 17:47:54.90ID:vTPkh0Cq
>>807
浮動小数点とIEEE754は同じ意味じゃないから語弊が生まれるよ。
文字コードとUTF-8ぐらいの関係だろう。
そして大抵の小数を扱えるプログラムがCでIEEE754に準拠した浮動小数点による取り扱いをしてるって意見は、全然同意できないな。
2019/10/03(木) 18:03:01.77ID:NYKgu9W2
1. 数学的には正しくない。
2. 速度のために正確さを犠牲にしている。
3. 誰も間違った答えは望んでいない

仕様だから〜とかいう話じゃないんだよね。
本当はみんな正しい答えが欲しい。

シェルスクリプトに速度は重要じゃないんだから
正しい答えのほうが便利だろ
2019/10/03(木) 18:39:51.77ID:K4DSf+RO
ほとんど近似値でたりるし必要なら自分でつくるなりすればとしか思わないよ
2019/10/03(木) 18:40:45.48ID:Fw9k5QN4
>>809
浮動小数点とIEEE754は同じ意味じゃないって?何を言いたいのかわからん
IEEE準拠じゃない独自のがあると?今時はFPUでやってるもんだし、速度なんぞを犠牲にしてまでもそういうのを「わざわざ」をやっている=それがウリになるからすぐに探せるんじゃないかなあ?

>>810
コンピュータサイエンス的にはそんなのはない=シェルスクリプト作る人も、そんな目新しいことをわざわざしないだろうとしか思えんな、いくらそう言っても
2019/10/03(木) 20:14:25.67ID:A9ow2usS
>>811
0.1+0.2が0.3にならなくてもいいよっていう業界を教えてくれ
814デフォルトの名無しさん
垢版 |
2019/10/03(木) 20:20:38.23ID:gitagY/F
適当なところで丸めりゃ良いんだからいいじゃねえか
2019/10/03(木) 20:23:06.87ID:Fw9k5QN4
少数なんて大体でしかないなんて常識だと思ってたのにな。少数使わないでも結局できたりするので、また、固定少数でも結局工夫が必要なのには変わりないので
なんでそんなに少数の正しさに拘っているのだか、どういう業界でそういうのをしかもスクリプトオンリーで書かなきゃならないって想像できないな
2019/10/03(木) 20:30:23.62ID:KR7C+a5e
>>813
必要なら用途に合うもん使えよ
2019/10/03(木) 23:39:56.70ID:5pSilKMJ
気が付いたら少数を使うことがほとんどなくなった
利子の計算ぐらいだが、これは何桁で計算を打ち切るか
あらかじめ決めておく。安易に double とか使わない
2019/10/03(木) 23:43:58.79ID:6kVVAM38
簡単なシェルスクリプトしか書けんが何が覚えとけって言語ある?
s以外のsedの機能をようやく覚えたけどコマンドは文字列操作系で手一杯だわ
やっぱりperlの呪文覚えるしかないか
2019/10/03(木) 23:49:00.65ID:wbZFe5vy
パイプが強烈だから文字列処理に強い perl でしょ
オブジェクト指向はいらない
2019/10/04(金) 00:41:14.19ID:jIZSSFYe
>>818
JavaScript
2019/10/04(金) 00:43:47.35ID:jIZSSFYe
>>817
それな。何桁で計算を打ち切るだと、どこで誤差が出るか想定しやすいが
doubleとかだと、桁数小さくても誤差が出るから、想定しづらいんだよね。

シェルスクリプトは型が文字列しか無いんだから、
内部の都合である数値型には影響されてほしくないな
822デフォルトの名無しさん
垢版 |
2019/10/04(金) 01:20:38.52ID:5l5U7bxj
>>812
文字コードってのは文字に番号を割り振って取り扱いますよ、という概念。
浮動小数点も一緒で、有限の長さの小数を、小数点の位置を自由にすること
(仮数部と基数部で表現する)ことで表しますよって概念。
各ベンダーが独自に実装したら不便極まりないから文字コードにおけるUnicode(とかUTF-8)と同様IEEE754という標準がある。

浮動小数点演算、と言ったときにそれは一概にIEEE754内部表現を用いた演算とはならない。
https://ja.wikipedia.org/wiki/任意精度演算 の方式の中にはIEEE754でない浮動小数点表現を取り扱ってるものだってあるだろう。
BCDで小数が扱えるライブラリだってそう言うのが多いと思うよ。

IEEE754の仕様の浮動小数点演算で十分な場合は、CPUに便利命令が用意されてて1桁ずつ計算とかしなくても
一発で計算が求まるからIEEE754の浮動小数点は使われている、というだけでしょ。

浮動小数点っていう大きい概念がどういったものかってのと、IEEE754はその概念を実現するための一例でしかないってのを、
Wikipediaなり読み込んで理解したほうが良いと思うよ。
ほんと、文字コードとUTF-8は同じものだ、って言ってるぐらいトンチンカンだから
2019/10/04(金) 01:34:09.77ID:N11Kz3K2
>>813
セブンイレブンとか
2019/10/04(金) 01:44:25.75ID:eSKeLXlH
>>818
1-liner、パイプ、CSV・テキスト処理、クローラーなら、可読性が高い、Ruby !

Perl のような謎のような記号は少ない
2019/10/04(金) 03:06:51.70ID:gCVTKDJQ
>>822
他のが無いというのではなく、実際に使われている多くはというのだよ
実際に使われているのはどれだけあるの?わざわざ使ってるのならそれは意味があるのだから、そうナニか書いてあってすぐにわかるだろうという。例えばbcのように

https://ja.wikipedia.org/wiki/IEEE_754
多くのプロセッサなどの〜 から書いてある通り。Javaがそうでないように書いてあるが、
https://www.ibm.com/developerworks/jp/java/library/j-jtp0114/index.html
同様に、java.math.BigDecimal が提供する任意精度の10進数もアプリケーションで使用されることは少ないため、開発者に無視されているケースがほとんどです
しかし整数を中心としたプログラムに、突如、整数以外の表現が出てくることがあります。たとえば、JDBCではSQLDECIMAL 列の優先変換形式としてBigDecimal が使用されます
なんてある意味それを表しすぎなくらい(まあ、ここは作る側ではなく使う側を言ってるけど)

CPUに便利命令ってFPUに対するのこと?一発で計算が決まるからという簡単だからとかじゃなくて、FPUがあるのはハードで支援用意しないとそもそも浮動小数点は重い演算だからなんだけど

>文字コードとUTF-8は同じものだ、って言ってるぐらい
いや、言ってないけど、なにか思い込みが激しいね。IEEEが利用されないのも普通という考え方もそうだが
2019/10/04(金) 03:13:49.05ID:gCVTKDJQ
>>825
>Javaがそうでないように書いてあるが
ああ、違ったしつれい。IEEE 754 を必須か
使ってないってどれだ?どういう理由でという思いがあって、おおと思ったんだけど
2019/10/04(金) 04:25:45.39ID:jIZSSFYe
もうさ、ハードで固定小数点数演算できるようにしたほうが良いんじゃね?
時代的にさ
2019/10/04(金) 05:02:19.85ID:Lr70dHDq
BCDはCPUで支援してた(そういう命令があったが)ようだが、無くなったっぽいという
BCDは速度的に有利な側面があるからわざわざそれ専用に用意しなくてもで無くなったかもしれない
2019/10/04(金) 07:56:41.21ID:sZOtDaP2
>>827
お前さんがこだわるほど他の人は必要だと思ってない。あったら便利なケースもあるかも知れんがコストなどに見合わないから誰もやらない。
2019/10/04(金) 08:55:49.66ID:UTOwlhyp
消費税の話もあるし、固定小数点は重要だよ
2019/10/04(金) 11:44:19.51ID:VMw2vpri
固定小数点演算なんて整数演算と同等だからわざわざハードで実装しなくても問題ない
832デフォルトの名無しさん
垢版 |
2019/10/04(金) 14:32:11.23ID:hcjI0QEW
>>818
そのままPerl覚えれば良い。

というのは、昔からあってあちこちで使われており、だいたいの Linux distribution はデフォルトでインストールされるような言語であるため。
インストールや環境整備で悩まなくて済む。後からモジュールを追加するとしても最初からrpmファイルがあったり、なくてもCPANを利用して簡単にインストールできる。
歴史が長く昔から使われて来たのでモジュールも沢山あり、またそれを解説しているサイトも多い。
833デフォルトの名無しさん
垢版 |
2019/10/04(金) 14:36:19.79ID:hcjI0QEW
>>824
知らない言語を見ればどれも謎の記号だらけに見えるとは思うけどね。

まあでもPerlは確かに多いかな。なるべく使わないようにも書けるが。
2019/10/04(金) 14:37:02.99ID:5wfXTPgW
alpine linuxでperllインストールされてないんだが?
835デフォルトの名無しさん
垢版 |
2019/10/04(金) 14:42:01.29ID:hcjI0QEW
>>831
そうそう。整数計算後に割って桁合わせすれば良い。
836デフォルトの名無しさん
垢版 |
2019/10/04(金) 14:42:43.80ID:hcjI0QEW
>>834
そうか。まあそういうのもある。
2019/10/04(金) 14:43:52.73ID:M3k51a5A
必要ならインストールすれば良いだけだ
2019/10/04(金) 14:59:17.54ID:5wfXTPgW
余計なものに依存したくない
2019/10/04(金) 17:13:04.07ID:/U6oHgYD
そりゃお前の趣味だからな
perlを使いたいならインストールする
当たり前の話だよな
2019/10/04(金) 21:55:54.53ID:a0HWEhLa
perlを使いたいわけじゃないからなぁ
2019/10/04(金) 22:57:45.34ID:eSKeLXlH
Perl, Python2・3 は最初から、入っているけど、
Ruby も、apt で、簡単にインストールできる

ただし、Ruby 2.3 〜 2.6 で、プログラマーが、新しめの書き方をしていた場合に、
古いバージョンで動かないことがあるかも
2019/10/06(日) 09:16:44.91ID:XBuBF2Rc
全員がsudo権限あるわけじゃないしな・・・
2019/10/06(日) 09:44:40.51ID:462kqzf/
perlなんて普通に入ってるからな
Solaris、AIX、HP-UX、FreeBSD、Ubuntu、Centos、Redhat、Fedora
俺が触ってきたシステムではデフォルトで入ってたな
入ってない方が少数派だろ
2019/10/06(日) 11:20:12.25ID:NnE09bAt
少数派だが入ってない
2019/10/06(日) 11:24:56.60ID:kChpVj98
所属する研究室のMFにも入ってねーな。
Bシェルとかは(もちろん)入ってるけど

そういう点で言えばPOSIX準拠のシェルがあるようなシステムにはPerlも入っていて
PerlもないようなシステムにはPOSIX準拠シェルもないのかも知れんw
2019/10/06(日) 12:03:22.79ID:NnE09bAt
だからAlpine linuxにはPOSIX準拠のシェルは入っているが
Perlは入ってないんだって。
いい加減Perl依存やめようぜw
2019/10/06(日) 12:15:46.78ID:rthNV3zo
俺達もそろそろPOSIX汚染から脱却しようぜ
2019/10/06(日) 12:17:46.00ID:NnE09bAt
>>847
じゃあ言い出しっぺのあなたから、POSIXが含まれてる
LinuxやBSDやUnixやMacやWindowsを使うのをやめてください
2019/10/06(日) 12:21:19.21ID:rthNV3zo
そもそも使ってないし
2019/10/06(日) 12:28:35.75ID:NnE09bAt
サーバー側で使われてる
2019/10/06(日) 12:38:20.58ID:462kqzf/
相変わらずPOSIX原理主義者が張り付いてるんだな
日本は信教の自由はあるが強要するのは犯罪だ
他人を巻き込まないで1人でやってろよ
2019/10/06(日) 12:54:03.04ID:NnE09bAt
だからPOSIX原理主義じゃないってw
Alpineはbusybox使ってるからPOSIX未満なんだよ
2019/10/06(日) 13:05:31.69ID:462kqzf/
お前はperl使いたくないんだろ?
お前の自由だし好きにすればいい

それを他人に押し付けるなと言っている

俺は普通にperlを使う
俺の自由だし好きにする

以上
2019/10/06(日) 13:12:15.17ID:rthNV3zo
        ∧∧  ミ _ ドスッ
        (   ,,)┌─┴┴─┐
       /   つ.  終  了 │
     〜′ /´ └─┬┬─┘
      ∪ ∪      ││ _ε3
               ゛゛'゛'゛
2019/10/06(日) 13:16:18.11ID:NnE09bAt
誰もPerl使うなって言ってないだろ。
Perlが入ってない環境があるという
事実を言ってるんだが
2019/10/06(日) 14:00:34.35ID:mC4FM69a
>>845
そのミッドフィールダーってなに?
857デフォルトの名無しさん
垢版 |
2019/10/06(日) 14:56:55.93ID:VRfDnOhz
マネーフォワードだろ。
858デフォルトの名無しさん
垢版 |
2019/10/06(日) 17:41:58.00ID:3lXqNGxa
容量削減のためにPerlだけ抜くのも変だしそれ目的なら他のも入ってないのでは?
2019/10/06(日) 21:01:12.68ID:TprJMO+0
まぁないものどうこう言っても始まらない

ただwin のiE6とかのようにubuntu以外は淘汰されていくだろうから
最終的には問題ないんじゃない?
860デフォルトの名無しさん
垢版 |
2019/10/06(日) 21:15:53.96ID:/W6lnfS0
Linuxはdistributionごとに色々目的が違うからPerl入ってないのがあっても特に不思議はない。
AndroidのベースのLinuxにも入ってないし、普通はそこでは必要とされない。
2019/10/06(日) 21:31:35.20ID:1e7RWsdc
AndroidをLinuxとして使ってるのはどれだけいるのかと
2019/10/06(日) 22:18:30.79ID:+aq+gJyQ
それ向けの端末エミュレータとかシェルスクリプト編集実行とかは結構種類あるけどね
割合は少ないだろうね
2019/10/07(月) 02:35:02.37ID:qQU+qyu9
そういう人はperlも必要なら入れるな。perlに限らず
2019/10/07(月) 08:39:27.35ID:4YPUQoiH
>>818 Python やっとけ。 perl は成仏させろ
865デフォルトの名無しさん
垢版 |
2019/10/07(月) 12:58:26.99ID:lSqRbxbA
PerlはCの如くしぶとく残ってしまうと思うなあ。
2019/10/07(月) 14:23:04.89ID:MItW4Ls8
sedやawkを忘れたんで代わりにperlを使うことが結構ある
2019/10/07(月) 15:51:12.82ID:Wc5EJs/z
perl -peをsed代わりに使ってるだけでperl自体には興味ないや
正規表現しか出番ないし使う機会がないんだよね
awkとかgrepとかどうせ他のコマンドも覚えなきゃならんし
2019/10/08(火) 14:32:15.36ID:C04IGCd6
>>865 残ることは残るだろうけど、誰からも見捨てられてる状態で生き延びていても学ぶ価値はない。

プログラミング言語人気トップ8、過去15年間で安定 - 例外はPython
2019/10/07 14:16 後藤大地
https://news.mynavi.jp/article/20191007-905781/

TIOBE Softwareから、2019年10月のTIOBE Programming Community Index (PCI)が公開された。
TIOBE PCIは、複数の検索エンジンの検索結果から、対象となるプログラミング言語がどれだけ話題に
なっているかをインデックス化したもの。(中略)

TIOBE Softwareは発表の中で、毎年新たなプログラミング言語が登場しているものの、TIOBE
Programming Community Indexのトップ8は過去15年間でほとんど変化していないと説明した。
Perlが消えてPythonに入れ替わったことや、Objective-Cが消えてSwiftに替わったというのが大きな
例外で、それ以外に大きな変動はないと指摘している。

ただし、プログラミング言語の分野に関してはいくつかの傾向があるとして、その例としてPHPやPerlから
Pythonへ移っていること、新しいプログラミング言語としてDart、Scala、Lua、Rust、Kotlin、TypeScript
などが人気上昇の渦中にあることなどを説明している。

10月TIOBE Programming Community Index / 円グラフ
https://news.mynavi.jp/article/20191007-905781/images/001.jpg
2019/10/08(火) 15:00:13.27ID:dg9qT1Hg
Perlはsedやawkと同じ位置で見ないとだめだよ
シェルスクリプトを書くときにsedやawkのように使う道具のひとつ
もちろんシェルスクリプトをまるごとPerlのスクリプトに置き換えてもいいけどそれは別の話
Perlを排除するのは武器を一つ捨てるようなもので損してるよ
2019/10/08(火) 15:03:58.28ID:4CpPhkv4
汎用言語としてはpython の時代に移ったかもしれないが
文字処理言語としてはいまだ現役
2019/10/08(火) 15:16:45.62ID:wc9EJfFY
>>869
と言ってもお前、sedやawkが使えないから
perlを使ってるだけやん。
お前の問題であって、perlである必要ないやん
2019/10/08(火) 15:49:08.88ID:dg9qT1Hg
俺当然sedもawkも使えるんだけど?
awkで複雑になる処理をPerlで可読性高く楽に書いてるってだけ
あんたも使える道具をうまく選べばいいんでPerlを知らなくても気にするな
2019/10/08(火) 16:39:54.73ID:9VgyN7XE
「Perlの方が楽に書ける」なんていうのは個人の嗜好に依存してて,ほとんど無根拠に近い。
もしPerlの「素晴しさ」とやらを報しめたいのなら,もっと客観的な事実――導入率・実績云々――を提示したほうがいいよ。

尤も,俺に言わせればAWKのほうが〜Perlのほうが〜なんていう議論とも呼べない喧嘩それ自体くだらねぇけどな
2019/10/08(火) 17:07:54.66ID:uaD7+k1O
>>872 sed もawk も使えるならPython を使えばいいじゃん。
お前がPythonを使えないだけだろ。
2019/10/08(火) 17:13:16.90ID:gh1TIWVl
python使ってわざわざ長いコード書いてどうするの?

sed -e 's/ABC/XYZ/' file1.txt

python -c 'import sys,re; [print(re.sub("ABC","XYZ",l,1),end="") for l in sys.stdin]'
2019/10/08(火) 18:40:06.69ID:4CpPhkv4
gnu sed なら -e すら省けるんだよな
877デフォルトの名無しさん
垢版 |
2019/10/08(火) 18:40:15.32ID:gO+Oxfwr
こうして宗教戦争が始まったのです。
2019/10/08(火) 19:07:13.65ID:/hvysQLZ
pythonはワンラインにはあまり向かんのは同意。
フリーフォーマットじゃないんで当たり前といえば当たり前か。
2019/10/08(火) 19:30:38.22ID:vS76WaY3
宗教戦争は自分の信じるものが正しく、それ以外は認めないという非寛容が原因で始まる
2019/10/09(水) 02:18:53.91ID:CaMm18My
python ワンライナーに挑戦 〜 初心者のお勉強 m(_ _)m - Qiita
https://qiita.com/wyamamo/items/667c79db7edbaa9a46a7
闇Pythonista入門(Pythonワンライナーのテクニック集) - Qiita
https://qiita.com/cocuh/items/37bfdc0f24750127e7d3

杓子定規にするからこうなる
知恵比べはまた別の課題だろうに
881デフォルトの名無しさん
垢版 |
2019/10/11(金) 19:00:05.85ID:QtmRuluN
case $value in
*-*=*-*)
esac

こんなふうに、*が複数ある場合の動きとかちゃんと仕様化されてるの
どのシェルでも同じように動く?
2019/10/11(金) 19:51:09.99ID:5TKzffM3
「されてるの?」
なのか
「されてるの(だ)」
なのか。
883デフォルトの名無しさん
垢版 |
2019/10/11(金) 22:19:25.99ID:EZwTHuUV
>>881
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_13_02
884デフォルトの名無しさん
垢版 |
2019/10/12(土) 11:56:42.38ID:6fabclhr
>>883
意味がわからん

abbb 、という文字に対して、a*b はマッチするのが正しいの?
aに続く残りのbは*で全部消費されるんじゃないの?


$ sh -c 'case "a-b-c-b-c-b-c" in (a*b*c) echo ok; esac'
$ sh -c 'case "a-b-c-b-c-b-c" in (a*b*c*b*c) echo ok; esac'
$ sh -c 'case "a-b-c-b-c-b-c" in (a*b*c*b*c*b*c) echo ok; esac'
すべてokってでる

どういうアルゴリズムなのかわからない
2019/10/12(土) 13:05:32.76ID:19ZHiYan
Perlの正規表現なら最長マッチがデフォ
886デフォルトの名無しさん
垢版 |
2019/10/12(土) 17:15:42.03ID:1KIHwFcK
IPアドレスもgreedyが基本だな。
2019/10/13(日) 14:15:24.81ID:wtTHifIn
ワイルドカードもだよね
2019/10/15(火) 20:13:38.52ID:tkdZ32xn
>>884
感覚的に分かりやすい
https://media.theync.com/videos/6/9/0/4/8/6904895d700f71ce3e9.mp4
889デフォルトの名無しさん
垢版 |
2019/10/16(水) 03:31:59.04ID:Pvq8peJ9
>>888
グロ
890デフォルトの名無しさん
垢版 |
2019/10/16(水) 08:08:38.68ID:9/jaba51
変数名を変数で指定できるのは欠陥じゃねえ
891デフォルトの名無しさん
垢版 |
2019/10/17(木) 13:11:40.29ID:huR1Dm0j
はー、すげー。yashの実装に感動した

getopts "ab" OPT -ab
echo "$OPT $OPTIND" # => a 1:2

getopts "ab" OPT -ab
echo "$OPT $OPTIND" # => b 1:3

getopts "ab" OPT -ab # exit status = 1
echo "$OPT $OPTIND" # => ? 2
2019/10/17(木) 16:55:00.31ID:PM8kIYTO
if ls "*.txt" > /dev/null 2>&1
then
echo "OK"
else
echo "NG"
fi

まったくうまくいかない
なぜ単なるファイルの存在確認だけにこんな苦労するのか
2019/10/17(木) 17:04:24.98ID:z1/RyPhF
ファイルの存在確認なら、-fを使えばいいだろ?
2019/10/17(木) 17:05:16.55ID:e7ZwLQTq
# # ls *txt && echo ok || echo bad
ls: '*txt' にアクセスできません: No such file or directory
bad

# # touch foo.txt
# # ls *txt && echo ok || echo bad
foo.txt
ok

こんな要領か?
2019/10/17(木) 17:05:47.88ID:z1/RyPhF
あ、ディレクトリに *.txt があるかどうかってことか?
2019/10/17(木) 17:08:50.43ID:PM8kIYTO
>>893
ところがワイルドカード使うと途端に何も引っかからなくなる
2019/10/17(木) 17:09:26.66ID:PM8kIYTO
>>895
そうです
2019/10/17(木) 17:10:05.98ID:z1/RyPhF
getopts vs getopt だけどさ、
BSDにおいてgetoptのメリットって何?

BSD版のgetoptはロングオプションに対応してないし、
引数にスペースが入ったらうまく行かないし
使い勝手悪いと思うんだが。

もしかして最初に作られたのがgetoptで
それを改良してgetoptsがシェルビルトインとして作られた。
(その後GNU版getoptが改良され、getoptsよりも便利になった)
という流れだったりするの?
2019/10/17(木) 17:10:16.84ID:e7ZwLQTq
普通のプログラミング言語と違って
シェルスクリプトはブーリアンの分岐は可能なら
if else 使うよりも && || が見やすく良いと思う
2019/10/17(木) 17:12:52.81ID:PM8kIYTO
>>894,899
いけた
分岐後の処理も大したことしないしこれでやってみようと思うd
2019/10/17(木) 17:13:24.29ID:z1/RyPhF
>>896
アスタリスクを使うと、シェルが解釈して、
例えば、 ls * だと、 ls file1 file2 file3 file4 って実行したのと同じことになるんだぞ。
lsコマンドの中からはアスタリスクが使われてるかどうかなんてわからない。

そしてダブルクォートで括ると、lsコマンドの中から引数は "*" という文字列が渡されたようになるんだよ。
2019/10/17(木) 17:14:21.91ID:ieavKq01
うまくいかなかった原因分かった?
2019/10/17(木) 17:19:49.73ID:z1/RyPhF
>>899
それだめ。 shellcheck使ってみ、エラーになる。

shellcheck において && || みたいな三項演算子風な使い方は
func && VALUE=ok || VALUE=ng
という書き方(変数代入)のみ認められる。

func && foo || bar
は認められない。

なぜかと言うと、
1. func が 正常終了して
2. foo が 異常終了すると
3. bar が 実行されるから

変数代入に限れば必ずVALUE=okは正常終了するから、
この書き方に限って許されてる。
だから、一応fooが必ず正常終了するものであれば、使えなくはないけど
静的解析ではそれを知ることが不可能なので、shellcheckはエラーになる。

あともう一つ、barが異常終了したとき、&& || だと $?はエラーになるが、
ifで書けばfi終了後、$? は正常終了になってるという違いもある。
だからset -eでの挙動が変わる。
2019/10/17(木) 17:21:53.83ID:z1/RyPhF
もちろん、&& 単独、もしくは || 単独で 使うならば問題ない。

func && foo とか func || bar ならOK
2019/10/17(木) 17:26:43.45ID:PM8kIYTO
今度は ls "$dir/tmp/*.txt"
みたいなことしたらアクセスできませんみたいなことを言われた

>>901
なるほど
>>902
多分"*.txt"ファイルにアクセスしようとしてできないって言われたことが原因?
でもなぜかls *.txtみたいに、ファイル直だとイケる
2019/10/17(木) 17:33:24.48ID:z1/RyPhF
あー、やっぱりそうなんや

https://en.wikipedia.org/wiki/Getopt
https://en.wikipedia.org/wiki/Getopts

getoptは1980年頃つくられた。初期のgetoptは低機能
その改良として getopts が1986年にBourne shellに実装されたらしい。

その後、getopts (Solaris) と getopt (GNU) それぞれ違うコマンドで
ロングオプションがサポートされ

どちらでもないBSD(macOS含む)では、従来どおり
低機能な getopt と それを少し改良した getopts があるが
どちらもロングオプションはサポートしてないと
2019/10/17(木) 17:37:12.84ID:z1/RyPhF
>>905
だからダブルクォートで括るからいかんのや

ls "$dir/tmp/" * ".txt"
これが正解(スペースは目立たせるために入れただけ)

この書き方ダサいよなw

ちなみに古いシェル(poshだっけ?)でこれがうまく行かない
バグがあるのだが、まあ誰も気にしないわなw
2019/10/17(木) 17:40:52.02ID:z1/RyPhF
getopts (Solaris) でロングオプションがサポートされたってシェルなんだ?って思ったら、
Solarisでは/usr/bin/getoptsが存在するのか・・・
紛らわしいな
https://docs.oracle.com/cd/E26924_01/html/E29112/getopts-1.html
2019/10/17(木) 17:43:27.80ID:z1/RyPhF
あ、いや /usr/bin/getopts もあるにはあるが、libcのgetopt()実装が拡張されたから
それを使ってるBourne Shellでも使えるようになったのか

> getopts (Solaris enhanced)
> As a result, this new feature was also available in the built-in command getopts of the Bourne Shell.
2019/10/17(木) 17:47:11.17ID:PM8kIYTO
>>907
うおおできた!
ls "$dir/tmp/"*".txt" && echo "ok" || echo "ng"
みたいな感じにした
(txtファイルがひとつもないときエラー出るけど!無視)
d
911デフォルトの名無しさん
垢版 |
2019/10/17(木) 19:06:38.69ID:yPX5iNuE
ジェルスクリプトってバッドノウハウの塊なんだな…
2019/10/17(木) 21:18:21.03ID:CFrrzXLD
TeXで書かれた人工知能みて,「バッドノウハウ」って言ってるみたいw
2019/10/17(木) 21:23:39.68ID:1JFOpLrO
GLOB展開と""内での文字列展開は別物で""内での文字列展開にGLOBは含まれないというだけだけどな
2019/10/17(木) 22:15:54.16ID:yIl6cqO6
マニュアルにかっちり書いてあるんだけどな
読み解くのは確かに能力が必要だが
2019/10/18(金) 00:25:26.47ID:DhnYyybT
>>892-897
find . -type f -name "*.txt" | wc -l

-type f は、ファイルのみ。
wc -l は、行数を数える。無ければ、0
2019/10/18(金) 00:33:26.40ID:l6dCA2lX
$ mkdir tmp && cd tmp
$ touch $'a\nb.txt'
$ find . -type f -name '*.txt' | wc -l
2
917915
垢版 |
2019/10/18(金) 00:51:30.34ID:DhnYyybT
相対パスなら、-path で、カレントディレクトリからの相対パスで指定する

find . -type f -path "./test/*.rb" | wc -l
2019/10/18(金) 02:59:20.26ID:Shj9H2hw
なるほろ
bash によるオプション解析 - Qiita
https://qiita.com/b4b4r07/items/dcd6be0bb9c9185475bb
bashのワイルドカード展開は該当するファイルが無いと*が展開されずに残る - Qiita
https://qiita.com/anqooqie/items/a2b607fe984ec982fa21

manはマニュアルだがman自体に取説が必要な皮肉
man manを読む時点で骨が折れるからしゃーない
919915
垢版 |
2019/10/18(金) 04:58:51.55ID:DhnYyybT
Ruby では、これでカレントディレクトリの該当ファイル数がわかる。
無ければ、0

ruby -e 'puts Dir.glob( "*.txt" ).length'
2019/10/18(金) 09:56:55.15ID:dNt3vJtH
/bin/ls -1d *.txt 2> /dev/null | wc -l
2019/10/18(金) 11:02:02.61ID:lmpJOwiE
find使うのは有りだと思うがmaxdepthとquitをつけたほうが良い

if test -n "$(find . -maxdepth 1 -name "*.txt" -print -quit)"; then
echo "OK"
else
echo "NG"
fi
2019/10/18(金) 11:55:18.87ID:O8T9zLoM
>>921
ただしそれらは POSIX 準拠ではない
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html
923デフォルトの名無しさん
垢版 |
2019/10/18(金) 13:39:28.03ID:+f5J2l87
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね…
2019/10/18(金) 14:04:15.02ID:e+8RgQym
>>918
暇なときに man と bash の man をちゃんと読み込むことをお勧めする
全部理解するのは確かに大変だが、こんな機能があるということだけ
覚えておいて、現実の問題に直面した時に詳細を再検索するのが
実用的。bash だけの問題ではないが。
2019/10/18(金) 23:14:29.88ID:m9M+BHHc
bashのmanはメンテされてないんじゃね?
2019/10/18(金) 23:19:16.34ID:1h1F7NR4
日本語版がメンテナンスされてない(もしくは遅い)だけだよ
2019/10/19(土) 00:34:03.00ID:+f1cBD8l
日本語版の記述が少なくて英語版の方だけびっしりとか実にマニュアルらしい
2019/10/19(土) 13:26:03.97ID:9TTj0TwZ
近頃は無料で web 上で使える翻訳ソフトの質も上がっているし
頑張って読んでくれ。
2019/10/19(土) 19:06:51.24ID:VYVT60v2
翻訳めっちゃハッテンしてきてるよね
2019/10/19(土) 20:14:11.99ID:jibveSnU
ウホッ
じゃなくて
なんだ
infoとかそっちしかハッテンしてないとかあるじゃん
2019/10/20(日) 17:43:31.69ID:Tm15VeOJ
まあ、確かに sed の s コマンドのオプションは man にも入れてほしかった。
オプション使えなくなったのかと思ったじゃないか…
2019/10/20(日) 23:14:32.47ID:n5s+FSXq
日本語版だけスカスカと言えばlocate
2019/10/21(月) 17:13:45.45ID:mT54cHzD
まあ裏を返せばそれだけ国際標準から離れていないってことよね。
ar.localeとか酷い……
2019/10/21(月) 21:16:47.36ID:SCSOJkPH
あるユーザー(Aとする)が、他のユーザー(Bとする)にのみWrite権限があるファイルを削除するような作業を自動化したいです。

当然そのままでは削除できないので、AからRootに切り替わり、ファイルを削除した後、Rootを抜けてAに戻るというBashスクリプトを作成しようとしています。

AはSudoが実行できない環境で、Expectコマンドもありません。Rootのパスワードはわかっており、平文でシェルスクリプト内に書き込んでも構いません(使用者が数人で、かつ外部に接続できないため。なのでセキュリティの問題は今回は無視)。
このような状態で、どうにか目的を果たすスクリプトはかけますでしょうか。

OSはFedora10、新たにプログラムパッケージ等はインストールできません。

よろしくおねがいします。
2019/10/21(月) 21:41:04.04ID:aSOXSPh+
すなおにrootで全部やれば良いんじゃね?
2019/10/21(月) 22:08:16.20ID:/woRRfjw
>>934
そもそもAがファイルを消せるようにパーミッションが初めから設定されるようには出来ないの?
2019/10/21(月) 22:24:13.78ID:Ol8k0rNq
>>934
ファイルを削除するだけの実行ファイルを作ってsetuidビット立てて所有者をBにするとかすればできないかな?
2019/10/21(月) 22:25:13.50ID:Ol8k0rNq
追記。シェルスクリプト自体にはsetuidは使えない。
2019/10/21(月) 22:52:13.48ID:pvaospDZ
Fedora10って10年前のかっ
su: must be run from a terminal
にならんのだったらsuでいいんじゃないの。パスワード流すのは exec ででも
2019/10/22(火) 00:44:01.51ID:7OkeLCGH
ディレクトリにwが付いてればファイルは消せるけどなあ
2019/10/22(火) 02:43:55.19ID:T9lP8zyy
>>936
パーミッションは変えない方針でいきたいですね
>>937
setuidという単語を初めて見たので、のちほど調べてみます。
>>939
su - <<EOF
password
EOF
は試しましたが、ttyを経由しろ的なメッセージで怒られました
調べたところttyなしを許可する設定がsudorsにあるらしいですが、sudoは設定したくないため、できなそうです
2019/10/22(火) 09:04:44.04ID:xSNqVMSD
>>941
# mkdir /dir
# chown userA:groupA /dir
# chmod 700 /dir
# cp /bin/rm /dir/rmB
# chown userB:groupB /dir/rmB
# chmod 6755 /dir/rmB

userA $ /dir/rmB /home/userB/file
2019/10/22(火) 10:51:03.29ID:p4xpj08d
こんな文字列野中に含まれる数字を
ゼロパディングしたいと思います

"何とかって講義 第5回 何とか特集.mp3"

まずは2桁でそろえてやりたいのですが

grep "第[1-9]回"

で一桁のものを引っ掛けて
前後をsedで除いて

sed "s/.*第//g
sed "s/回.*//g"

ゼロ埋めはprintfで実現しようと思うのですが

printf %02d $times

もっとシンプルな方法は無いでしょうか?
2019/10/22(火) 10:52:23.81ID:p4xpj08d
なお最終的な文字列の組み立てなおしは
数字の前後も抽出して3つを連結するつもりです
2019/10/22(火) 11:04:28.98ID:+cbyszgy
perl5 が使えるなら
echo "何とかって講義 第2345回 何とか特集.mp3" | perl -pe 's/第(\d+)回/ sprintf "第%06d回", $1/exm'
何とかって講義 第002345回 何とか特集.mp3
2019/10/22(火) 13:09:31.40ID:QfoZv31s
$ echo "何とかって講義 第2345回 何とか特集.mp3" | sed -E 's/第([0-9]+)回/第000000\1回/; s/0*([0-9]{6})/\1/'

6桁揃えにしたければ最初に6個0を足して次に6桁のみ残す

$ rename -n 's/\d+/sprintf("%06d",$&)/e' *.mp3

rename utilityが使えるならsprintfが使える
2019/10/22(火) 15:10:24.02ID:W8s8s9Eh
perlもrenameもPOSIX規格外
2019/10/22(火) 15:18:54.31ID:AwOtA+WM
みんな真偽値ってどうしてる?
2019/10/22(火) 15:21:29.60ID:p4xpj08d
>>945-946
ありがとうございます
perlは入っており期待通りに動作しました
perlの方が高機能なのですが
環境を移したときにperlがあるか保証できないため
sedでやろうと思います
2019/10/22(火) 15:23:02.88ID:AwOtA+WM
FLAG=true or false ?
FLAG=1 or 0 ?
FLAG=1 or unset ?
FLAG=1 or "" ?

それ以外?
2019/10/22(火) 20:26:37.95ID:2f71vpaR
alias FLAG true/alias FLAG false
if FLAG; then
2019/10/22(火) 20:27:08.55ID:2f71vpaR
でもBashだとファイル内では既定で使えない。
2019/10/22(火) 21:23:51.15ID:CciDAIxr
>>952
面白いけど、サブシェルの中で変えられないから

alias FLAG=true
(
alias FLAG=false
if FLAG; then
echo true
fi
)

出力
true
2019/10/23(水) 10:43:57.77ID:oiOUCahJ
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)

FLAG=$TRUE or $FALSE
2019/10/23(水) 10:57:17.22ID:jQcWWJt3
サイトによってrenameの構文が違うけどコマンド自体が違うのな
perl付属のprenameとutil-linux付属のrename.ulがあるとか
alternativesで書き換えられてるんだからそら気付かんわ
2019/10/24(木) 17:48:17.61ID:mthfJT/n
>>953
知らんかった。恥ずかしいw
2019/10/24(木) 17:49:17.77ID:mthfJT/n
>>954
それってTRUE=0とするのと何が違うの?
2019/10/24(木) 18:07:25.18ID:lp1ZwQII
>>956
サブシェルは関係ない。俺もちゃんと仕様読んだわけじゃないけど、
aliasは実行時じゃなくて、1単位ごとに → パース → 実行 の
パース時に変換してる感じ

そして1単位というのは、

alias FLAG=true
alias FLAG=false; FLAG && echo true
↑これは一行で一単位、だからtrueと表示されてしまうし

関数とか、プロンプトから、func() { 改行 とかやると
} 改行 するまで、ずっと行頭に > って表示されるだろ?

あれが1単位。だから↓みたいなものもtrueって表示されてしまうんだよ

alias FLAG=true
func() {
alias FLAG=false
if FLAG; then
echo true
fi
}
func
959793
垢版 |
2019/10/24(木) 18:35:35.72ID:n545jbBX
>>795-797
時間が経ってしまいましたが、ありがとうございました
"$()"の中の"はエスケープする必要があるのかどうか、とか、変数代入への挙動とか、そういう細かいところがよくわかってなかったです。
2019/10/24(木) 22:00:36.73ID:mthfJT/n
>>958
あー。
aliasってたしか一つの構文解析のかなり初期段階で展開される筈だから,
その一つの解析対象の内部で定義されているaliasは(当然)それ自身の解析結果には反映されんな。

このへんだろうか??
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_10
2019/10/25(金) 00:11:27.02ID:6btPTvif
次スレ
シェルスクリプト総合 その32
https://mevius.5ch.net/test/read.cgi/tech/1571929725/
2019/10/25(金) 07:59:28.70ID:6Bcci7V7
>>957
真は0、偽は0以外という値を意識する必要が無い
(Cの真偽値は逆で紛らわしい)
true/falseコマンドが使えない環境でも使える
2019/10/25(金) 23:17:19.52ID:TUsRGFSK
>>962
true/falseがビルトインじゃないシェルは存在しない
また、[ の結果はtrueなら0、falseなら1と決まっている
2019/10/26(土) 06:21:32.20ID:0I+FrAtF
>>963
> true/falseがビルトインじゃないシェルは存在しない
今ならそう言えるだろうが、かつては存在した
外部コマンドのtrue/falseがその名残りだ

> また、[ の結果はtrueなら0、falseなら1と決まっている
0は数値の0であってtrueではない
trueを表現するのに0を使っているだけだ

まあ真偽値を扱うならtrue/falseを使えってことだな
2019/10/26(土) 09:53:59.01ID:Q5pTtErv
trueを表現するのに0を使っているというより、真偽に成功不成功をそのまま使ってるというだけだろ
2019/10/26(土) 10:32:17.69ID:a0V3mxKP
>>964
> 今ならそう言えるだろうが、かつては存在した
かつてとはいつで、どこの実装であるのか答えなさい

また、現存しない物の話をしても意味はない
そもそも [ が存在しない環境では使えない
外部コマンドの [ がその名残りだ
2019/10/26(土) 10:33:01.78ID:swDBEFOl
成功/不成功は終了ステータスであって真偽値ではない
2019/10/26(土) 10:37:22.98ID:3fttRo5u
え、まさか、
hoge && FLAG=$TRUE || FLAG=$FALSE
 :
 :
if [ "$FLAG" -eq "$TRUE" ] then ・・・
if [ "$FLAG" -eq "$FALSE" ] then ・・・

とか書くつもり・・・?
2019/10/26(土) 10:56:36.80ID:0I+FrAtF
>>968
終了ステータスを真偽値で判断するのか
珍しいやつだなw
2019/10/26(土) 11:14:58.17ID:3fttRo5u
>>969
変数に真偽値を入れるって話で
終了ステータスを入れる馬鹿を皮肉ってるだけだろw
2019/10/26(土) 11:16:54.58ID:Q5pTtErv
while true
do
や、
FLAG=true
or
FLAG=false
if $FLAG; then

真偽に成功不成功をそのままは、なんて書きたかっただけだろ、そうの方が見た目がいいしな
なんでそんなに拘っているんだか
2019/10/26(土) 11:21:27.44ID:3fttRo5u
つーか、いいかげんにしろよ。
真偽値の値を何にするかって話だろ
誰も真偽値をどうやって生成するかの話なんかしてねーよ
2019/10/26(土) 11:22:36.82ID:3fttRo5u
いつものやつ言っとくわ

>>971
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
2019/10/26(土) 11:23:54.27ID:Q5pTtErv
FLAG=true or false
FLAG=1 or 0
etc
なんでも好きにすればいいだろ
true/falseコマンドを使った方が見た目簡潔じゃないかと思うがな、個人的に。使わんけど
お前がいいかげんにしろよw
2019/10/26(土) 11:29:02.54ID:3fttRo5u
質問が出てる時点で、意図がわからないコードってことなんだがw

957 名前:デフォルトの名無しさん[sage] 投稿日:2019/10/24(木) 17:49:17.77 ID:mthfJT/n [2/3]
>>954
それってTRUE=0とするのと何が違うの?


それに>>954ののコードは、set -eで正しく動かない
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)

意図が不明確なコードを書いて、バグを入れるのは
アホでしか無いよ
2019/10/26(土) 11:32:55.31ID:Q5pTtErv
俺は他alias使ったのやのその話題は、なにをわざわざ凝ったことしようとしてるのか意図不明で趣味なんだろなとしか思ってない
977デフォルトの名無しさん
垢版 |
2019/10/26(土) 11:33:38.63ID:T/HAOzs9
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね…
2019/10/26(土) 11:34:25.41ID:3fttRo5u
>>976
趣味(実用的ではないネタコード)に、正当っぽい理由をつけるなって話だ
2019/10/26(土) 11:36:44.02ID:Q5pTtErv
ただの雑談だろ
あれを強制するなりしているわけでもないのに、なにをそう否定してんだか
そんなヤツがリアルで一緒に仕事するなら思いっきりくそ叩くがなw
2019/10/26(土) 11:37:51.16ID:3fttRo5u
あとC言語の世界しか知らんようだから言っておくと、rubyは0も1もtrueな
シェルスクリプトは反対で0がtrueで1がfalseなんだ、それ以外の回答はない!ってのは
ちょっと考えが浅いんじゃないですかねぇw

http://osishow3.hateblo.jp/entry/2017/04/20/235500
nil is false
false is false
0 is true
1 is true
2019/10/26(土) 11:39:18.03ID:Q5pTtErv
何をひとりで妄想に走っているんだか
だれか「いいかげんにしろ」とか言ってなかったか?w
2019/10/26(土) 11:42:23.29ID:3fttRo5u
俺に突っかかってきてないで、シェルスクリプトの話題をしたら?
2019/10/26(土) 11:43:40.40ID:Q5pTtErv
よくいうよw
2019/10/26(土) 11:47:29.21ID:3fttRo5u
そりゃいうだろ、いきなりシェルスクリプトと関係ない
「俺」の話を始めるんだからw
2019/10/26(土) 11:50:09.04ID:Q5pTtErv
言ったことに対してはそりゃ言うだろう。お前がわざわざ言ったんだから
そんなのが無くてもいいのに。お前だった元々のやつを「アホ」呼ばわりしてるじゃん
2019/10/26(土) 15:54:12.94ID:0I+FrAtF
>>975

set +e
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)
set -e

動かんと言ってる方がアホだと思う
2019/10/26(土) 16:04:47.31ID:+M+pJ73c
set -eで正しく動かない

set +eと書いて動くと主張。赤っ恥w
2019/10/26(土) 16:15:33.38ID:0I+FrAtF
逃げ方がチョン臭くてキモい
2019/10/26(土) 16:17:36.78ID:+M+pJ73c
しかも、最初の状態が set +e だったら
set -e に状態が変わってしまうというクソコード
汎用性がない
2019/10/26(土) 16:20:27.41ID:+M+pJ73c
true / false を使えばいいのに、[ が入ってない環境を考慮せずに、
true / false が入ってないかもしれないから [ を使ったと言う無能ぶりw
2019/10/26(土) 16:22:55.60ID:0I+FrAtF
最初にset -eするとルール化するだけ
いちゃもんつけるの得意だな
2019/10/26(土) 16:24:16.70ID:0I+FrAtF
[]やtestが使えないシェル教えてくれよ
2019/10/26(土) 16:25:06.04ID:+M+pJ73c
TRUEの反対だからfalseというが、
FALSEの反対もfalseになってると気づいてなくて
そもそもシェルスクリプトの仕様をわかってないw

[ 0 = 0 ]; echo $? # => 0
[ ! 0 ]; echo $? # => 1
[ ! 1 ]; echo $? # => 1
2019/10/26(土) 16:27:23.30ID:+M+pJ73c
>>992
上の方で /bin/true, /bin/false コマンドがあるんだから
true, false が使えないシェルがあるはずだって主張していたぞw
その理屈で言えば [ コマンドもあるんだから、 [ が使えないシェルもあるってことになるんだがなw
2019/10/26(土) 16:28:56.67ID:+M+pJ73c
更に言うなら

TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)

これにサブシェルを使うのもアホらしいw
2019/10/26(土) 16:29:21.39ID:0I+FrAtF
>>994
cshのbuiltin調べてこい
分かったらすいませんって言えよw
2019/10/26(土) 16:29:57.11ID:+M+pJ73c
>>1みろ

 csh/tcshでのシェルスクリプトは*まったく推奨しません*。
2019/10/26(土) 16:30:08.87ID:0I+FrAtF
あーいつものマウントとらないと死ぬ病気のやつか

おだいじに
2019/10/26(土) 16:30:30.62ID:+M+pJ73c
>>1じゃなくて>>2だったな

> ・特記なき場合、POSIX 準拠の sh 可換シェルが既定です。(Bourne Shellは既にレガシーです)
2019/10/26(土) 16:30:49.43ID:+M+pJ73c
>>998
マウント取られて可愛そうwww
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 76日 17時間 12分 59秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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