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

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

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

シェルスクリプト総合 その30
https://mevius.5ch.net/test/read.cgi/tech/1561989867/
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として使えるんでつい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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