シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
前スレ: シェルスクリプト総合 その34
https://mevius.5ch.net/test/read.cgi/tech/1597990675/
探検
シェルスクリプト総合 その35
■ このスレッドは過去ログ倉庫に格納されています
2020/11/24(火) 21:37:20.06ID:mbTiTj6s
2020/11/24(火) 21:37:36.71ID:mbTiTj6s
・特記なき場合、POSIX準拠シェルが既定です(古きBourneシェルはほぼ絶滅しました)
POSIX準拠シェルは(d)ash, bash, zsh, (m)ksh, yash, posh, (p)boshです
参考 https://unix.stackexchange.com/questions/145522/
特定のシェルの専用機能に依存する場合は明示しましょう(特にPOSIX準拠シェルではないfish, (t)csh等)
・デフォルトシェルのシバンはBourneシェル時代からの伝統で#!/bin/shを使用します。ただしその実体はOSによって様々です
Debian系 … dash CentOS系 … bash Alpine … ash(busybox) Android … mksh
FreeBSD … ash Solaris,OpenBSD … ksh
macOS … bash(Single UNIX Specification準拠のために一部動作が異なる)
・ログインシェルは/bin/shでない場合があります。例 macOS … zsh
・シェルスクリプトは可搬性を持たせるために可能な限りPOSIXに準拠しましょう
仕様 http://pubs.opengroup.org/onlinepubs/9699919799/
参考 https://en.wikipedia.org/wiki/POSIX
・bash依存はなるべく避けましょう。自覚なきbashism。シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?
#!/bin/shを使うならシェル依存は厳禁です。bash依存するなら#!/bin/bashです
・BourneシェルはPOSIX標準化前に主にUNIXで使われていたシェルで多くの亜種が存在します
Bourneシェル≒Version 7 UNIXのshに一番近いのはOpenSolaris由来のHeirloom Bourne Shell、次点でSchily Bourne Shellのoboshです
Heirloom Bourne Shell: sh http://heirloom.sourceforge.net/sh.html
Schily Bourne Shell: obosh http://schilytools.sourceforge.net/bosh.html
歴史的資料 https://www.in-ulm.de/~mascheck/
・csh/tcshでのシェルスクリプトは*まったく推奨しません*
参考 http://www.speech-lab.org/~hiroki/csh-whynot.euc
・Linux/UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。Manページや各種リンクを見ましょう
aproposやman -kでそれらしい単語による簡単な検索もできます
・ワイルドカード・パターンは正規表現ではありません。正規表現の話題はスレ違い(正規表現スレへ)
・シェル芸はシェルスクリプトとは異なります
・シェルスクリプトのことをシェルってゆうな
POSIX準拠シェルは(d)ash, bash, zsh, (m)ksh, yash, posh, (p)boshです
参考 https://unix.stackexchange.com/questions/145522/
特定のシェルの専用機能に依存する場合は明示しましょう(特にPOSIX準拠シェルではないfish, (t)csh等)
・デフォルトシェルのシバンはBourneシェル時代からの伝統で#!/bin/shを使用します。ただしその実体はOSによって様々です
Debian系 … dash CentOS系 … bash Alpine … ash(busybox) Android … mksh
FreeBSD … ash Solaris,OpenBSD … ksh
macOS … bash(Single UNIX Specification準拠のために一部動作が異なる)
・ログインシェルは/bin/shでない場合があります。例 macOS … zsh
・シェルスクリプトは可搬性を持たせるために可能な限りPOSIXに準拠しましょう
仕様 http://pubs.opengroup.org/onlinepubs/9699919799/
参考 https://en.wikipedia.org/wiki/POSIX
・bash依存はなるべく避けましょう。自覚なきbashism。シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?
#!/bin/shを使うならシェル依存は厳禁です。bash依存するなら#!/bin/bashです
・BourneシェルはPOSIX標準化前に主にUNIXで使われていたシェルで多くの亜種が存在します
Bourneシェル≒Version 7 UNIXのshに一番近いのはOpenSolaris由来のHeirloom Bourne Shell、次点でSchily Bourne Shellのoboshです
Heirloom Bourne Shell: sh http://heirloom.sourceforge.net/sh.html
Schily Bourne Shell: obosh http://schilytools.sourceforge.net/bosh.html
歴史的資料 https://www.in-ulm.de/~mascheck/
・csh/tcshでのシェルスクリプトは*まったく推奨しません*
参考 http://www.speech-lab.org/~hiroki/csh-whynot.euc
・Linux/UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。Manページや各種リンクを見ましょう
aproposやman -kでそれらしい単語による簡単な検索もできます
・ワイルドカード・パターンは正規表現ではありません。正規表現の話題はスレ違い(正規表現スレへ)
・シェル芸はシェルスクリプトとは異なります
・シェルスクリプトのことをシェルってゆうな
2020/11/24(火) 21:37:51.87ID:mbTiTj6s
関連スレ
【Bash】Windows Subsystem for Linux【WSL】8
https://mao.5ch.net/test/read.cgi/linux/1590742701/
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/
【Bash】Windows Subsystem for Linux【WSL】8
https://mao.5ch.net/test/read.cgi/linux/1590742701/
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/
2020/11/24(火) 21:40:10.48ID:mbTiTj6s
しかし>>3の関連スレが,1スレ消費した後にまだリンク張り替えなくて良いあたり,
全然書き込まれていないんだな。
人気がないのかあるいは,安定していて一斉に文句が書き込まれるような問題も無いのか……。
全然書き込まれていないんだな。
人気がないのかあるいは,安定していて一斉に文句が書き込まれるような問題も無いのか……。
2020/11/24(火) 23:21:17.54ID:EBaS3Lgi
fishはどうなの?
2020/11/25(水) 00:17:50.27ID:jf5n46hh
fishとかxosh?だとかPOSIXじゃないから
うんいいね。でおしまい
あんなのでスクリプト書くやつはいない
うんいいね。でおしまい
あんなのでスクリプト書くやつはいない
2020/11/25(水) 02:48:27.65ID:zD7zhP2P
クソッシュってのもあるんだ?
2020/11/25(水) 06:48:03.19ID:BAAT1DM9
別にfishが使い続けられてそれが便利ならそのスクリプトがどういう文法だろうがどうでもよくないか?
2020/11/25(水) 10:55:21.76ID:4qZN2cIE
POSIXかどうかはとくにどうでもよい。
2020/11/25(水) 11:27:15.22ID:zD7zhP2P
クソッシュについておしえて
2020/11/25(水) 17:20:14.98ID:7xSU5LuF
>>8
シェルはインタラクティブだけじゃなくてシェルスクリプトとしても使われてる
例えば/bin以下でこんなのがシェルスクリプトで実装されてる
/bin/bzdiff: POSIX shell script, ASCII text executable
/bin/bzexe: POSIX shell script, ASCII text executable
/bin/bzgrep: POSIX shell script, ASCII text executable
/bin/bzmore: POSIX shell script, ASCII text executable
/bin/egrep: POSIX shell script, ASCII text executable
/bin/fgrep: POSIX shell script, ASCII text executable
/bin/gunzip: POSIX shell script, ASCII text executable
/bin/gzexe: POSIX shell script, ASCII text executable
/bin/which: POSIX shell script, ASCII text executable
/bin/zcat: POSIX shell script, ASCII text executable
/bin/zdiff: POSIX shell script, ASCII text executable
/bin/zgrep: POSIX shell script, ASCII text executable
/bin/zless: POSIX shell script, ASCII text executable
/bin/zmore: POSIX shell script, ASCII text executable
なのでPOSIXシェルがシステムから取り除かれることはない
そしてfishはシステムにとって使えず必須ではないのでインストールされない
という状況がこれからも続く
悪くはないが代替として使えない
シェルはインタラクティブだけじゃなくてシェルスクリプトとしても使われてる
例えば/bin以下でこんなのがシェルスクリプトで実装されてる
/bin/bzdiff: POSIX shell script, ASCII text executable
/bin/bzexe: POSIX shell script, ASCII text executable
/bin/bzgrep: POSIX shell script, ASCII text executable
/bin/bzmore: POSIX shell script, ASCII text executable
/bin/egrep: POSIX shell script, ASCII text executable
/bin/fgrep: POSIX shell script, ASCII text executable
/bin/gunzip: POSIX shell script, ASCII text executable
/bin/gzexe: POSIX shell script, ASCII text executable
/bin/which: POSIX shell script, ASCII text executable
/bin/zcat: POSIX shell script, ASCII text executable
/bin/zdiff: POSIX shell script, ASCII text executable
/bin/zgrep: POSIX shell script, ASCII text executable
/bin/zless: POSIX shell script, ASCII text executable
/bin/zmore: POSIX shell script, ASCII text executable
なのでPOSIXシェルがシステムから取り除かれることはない
そしてfishはシステムにとって使えず必須ではないのでインストールされない
という状況がこれからも続く
悪くはないが代替として使えない
2020/11/25(水) 19:19:27.01ID:4qZN2cIE
>>11
そんな話は聞いてない。
そんな話は聞いてない。
2020/11/25(水) 20:38:12.08ID:uhQhH5gv
だから、別にfishでスクリプトを書いてもいいけど
統一された企画も何もないんだから、
少なくともこのスレで話す話題じゃねーよなって言う話
それこそ、Pythonも、
逐次的に入力を解釈して利用者に入力を促進する状態がある
と言う点ではシェルの一緒だけど、
じゃあここで話すの話題かっていう。
統一された企画も何もないんだから、
少なくともこのスレで話す話題じゃねーよなって言う話
それこそ、Pythonも、
逐次的に入力を解釈して利用者に入力を促進する状態がある
と言う点ではシェルの一緒だけど、
じゃあここで話すの話題かっていう。
2020/11/25(水) 20:39:13.80ID:uhQhH5gv
すまん音声入力が誤爆した
企画→規格
企画→規格
2020/11/25(水) 21:29:52.71ID:0vRedS2N
こんなキモイことホソボソ独りでつぶやいてんのかw
2020/11/25(水) 21:41:57.79ID:uhQhH5gv
最新のfishは使うけど音声入力は使いません!
wwww
wwww
2020/11/25(水) 22:04:20.77ID:Hppr2Ato
2020/11/25(水) 22:50:57.68ID:m5om5rgh
シカトすればすぐに終わるだろうに、なぜか自ら話を伸ばすw
2020/11/25(水) 23:07:49.06ID:zD7zhP2P
いつから統一された規格とやらが要件になったの?
いいけどそれなら総合の看板下ろしてPOSIX専用掲げてよ紛らわしい
いいけどそれなら総合の看板下ろしてPOSIX専用掲げてよ紛らわしい
2020/11/26(木) 00:09:07.40ID:JCzWlVbS
shに似ても似つかないスクリプトはスレ違いなのはたしか。
POSIXはある程度どうでもよいとして。
ただスレ違いを前提として、別のシェルをすこしくらい話題にするのはいいのでは。
そんなに活発なスレでもないし。
POSIXはある程度どうでもよいとして。
ただスレ違いを前提として、別のシェルをすこしくらい話題にするのはいいのでは。
そんなに活発なスレでもないし。
2020/11/26(木) 00:38:08.15ID:WQpiaax/
いつも思うがポジキチは病気
2020/11/26(木) 01:12:59.63ID:T00uXQW1
昔話だが、まだいろんなUNIXワークステーションが使われていた頃、あるOS用に
書いたスクリプトが別のOSで微妙に動かなかったりして、面倒だった。
そうするとやっぱPOSIXかあと思ったりした。
今なんかどこでもたいていbashが入ってるしな。てゆうかたいがいLinuxだし。
そしてCPUがたいがいインテルに... まARMのクロスコンパイルはするけど。
書いたスクリプトが別のOSで微妙に動かなかったりして、面倒だった。
そうするとやっぱPOSIXかあと思ったりした。
今なんかどこでもたいていbashが入ってるしな。てゆうかたいがいLinuxだし。
そしてCPUがたいがいインテルに... まARMのクロスコンパイルはするけど。
2020/11/26(木) 01:14:37.64ID:T00uXQW1
あれ、ディレクトリ構造というのもPOSIXで規定されてるんだっけ?
違うOSで動かすときはそういうのも問題になったな。
そうやってGNUのconfigureなんかも複雑化していったという。
違うOSで動かすときはそういうのも問題になったな。
そうやってGNUのconfigureなんかも複雑化していったという。
2020/11/26(木) 02:04:23.72ID:JCzWlVbS
2020/11/26(木) 08:58:40.11ID:Czgib+VC
手元に有用なfishスクリプトがあってそれを使いたいならfishをインストールすればいいだけじゃね?
なぜデフォルトインストールされたシェルだけの縛りゲーしてるの
なぜデフォルトインストールされたシェルだけの縛りゲーしてるの
2020/11/26(木) 11:11:31.59ID:ZeK0fFqz
fishをインストールする権限がないから
2020/11/26(木) 12:05:54.70ID:JCzWlVbS
パーミッションだけの話なら、$HOMEのどこかにいれとけ。
/usr/bin以下でないとダメなわけでもないやろ。
/usr/bin以下でないとダメなわけでもないやろ。
2020/11/26(木) 13:13:04.55ID:BChkjCh/
>>27
だからインストールできない
linux-vdso.so.1 (0x00007fffeddc6000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f211d340000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f211d110000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f211cef0000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f211cce0000)
libpcre2-32.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-32.so.0 (0x00007f211ca60000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f211c6d0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f211c2c0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f211da00000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f211bf20000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f211bd00000)
だからインストールできない
linux-vdso.so.1 (0x00007fffeddc6000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f211d340000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f211d110000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f211cef0000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f211cce0000)
libpcre2-32.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-32.so.0 (0x00007f211ca60000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f211c6d0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f211c2c0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f211da00000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f211bf20000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f211bd00000)
2020/11/26(木) 14:24:24.05ID:dGdApgXM
2020/11/26(木) 14:30:52.27ID:SyhWTBHJ
感想は同意。マウント取るためのネタとしてするなとも言っているのもありそうだな
2020/11/26(木) 15:57:47.46ID:JCzWlVbS
テンプレに、明示してたらほかのシェルでも可、とあるんだからここでええやろ。
POSIXバカは無視で。
POSIXバカは無視で。
2020/11/27(金) 15:29:21.75ID:3pf/tsln
awkやsedの話でもなんかすぐ「そんな複雑なことやるな!」って否定しだすしな。
awk,sedは独立したプログラム言語とはいえシェルスクリプトの一部と言えるんだから,
fishと同じでここで扱っても良い話題。
awk,sedは独立したプログラム言語とはいえシェルスクリプトの一部と言えるんだから,
fishと同じでここで扱っても良い話題。
2020/11/27(金) 15:55:39.83ID:w5Az7J0d
そんな事するなとは言ってないな
シェルスクリプトではないというだけの話だ
独立したプログラム言語でシェルスクリプトではない
シェルスクリプトではないというだけの話だ
独立したプログラム言語でシェルスクリプトではない
2020/11/27(金) 16:00:25.98ID:pgQorB3q
息を吐くように嘘をつく
2020/11/27(金) 18:09:13.28ID:yWTZwmZ1
>>28
ライブラリもホームに置けば。一工夫いると思うけど。
ライブラリもホームに置けば。一工夫いると思うけど。
2020/11/27(金) 18:51:24.04ID:OZT1ua32
2020/11/27(金) 19:51:16.84ID:3pf/tsln
POSIX信者ウゼー
FishでもAWKでもシェルスクリプト一と言えるだろうが。
そりゃ突き詰めて見れば,「PowerShellを扱わないんであればFishシェルも扱わない」
「Pythonを扱わないんであればAWKも扱わない」という理屈は分からなくもないけど,
どうしてそう強情に0か1かでしか物事を捉えられんのかね……。
FishでもAWKでもシェルスクリプト一と言えるだろうが。
そりゃ突き詰めて見れば,「PowerShellを扱わないんであればFishシェルも扱わない」
「Pythonを扱わないんであればAWKも扱わない」という理屈は分からなくもないけど,
どうしてそう強情に0か1かでしか物事を捉えられんのかね……。
2020/11/27(金) 21:43:43.30ID:w5Az7J0d
awkがシェルスクリプトじゃないというのはPOSIXとは関係ない
awkを呼び出すコードは当然シェルスクリプトだが
awkはシェルではないので、awkの文法に関することは
シェルスクリプトではないというだけのことだ。
そしてfishはシェルなのだから、当然シェルスクリプトだ
ただしPOSIXではないシェルスクリプトであるが
awkを呼び出すコードは当然シェルスクリプトだが
awkはシェルではないので、awkの文法に関することは
シェルスクリプトではないというだけのことだ。
そしてfishはシェルなのだから、当然シェルスクリプトだ
ただしPOSIXではないシェルスクリプトであるが
2020/11/27(金) 21:51:03.71ID:w5Az7J0d
例えばシェルスクリプトで$_ってどういう意味ですか?
って聞かれても困るだろ?このコードで
cat test.txt | ruby -e 'while gets; print $_; end'
って聞かれても困るだろ?このコードで
cat test.txt | ruby -e 'while gets; print $_; end'
2020/11/27(金) 22:24:30.25ID:tPIe9OcJ
>>39
それはRubyの記号だよ、で済む話
それはRubyの記号だよ、で済む話
2020/11/27(金) 22:33:58.69ID:OZT1ua32
2020/11/27(金) 22:39:54.65ID:w5Az7J0d
そういうことだな。それはawkの文法だよ。
だからawkスレで聞いてねで終わる
だからawkスレで聞いてねで終わる
2020/11/27(金) 22:40:48.72ID:3pf/tsln
>>38
じゃあPowerShellやcmdの話題も扱っていい筈よね。
ここUnix板じゃねーし,
仮にUnixシェル専用だという暗黙の了解があるにしても
PowerShellはLinuxの上で動くし。
……とまあ,際限なくチャチャを入れることができる
ガバガバ理論なんで,別にAWK程度なら
このスレで扱っても構わないでしょう。
柔軟に生きよう。
じゃあPowerShellやcmdの話題も扱っていい筈よね。
ここUnix板じゃねーし,
仮にUnixシェル専用だという暗黙の了解があるにしても
PowerShellはLinuxの上で動くし。
……とまあ,際限なくチャチャを入れることができる
ガバガバ理論なんで,別にAWK程度なら
このスレで扱っても構わないでしょう。
柔軟に生きよう。
2020/11/27(金) 22:51:49.53ID:w5Az7J0d
>>43
専用スレがあるのだからそっちに行ったほうがいい
専用スレがあるのだからそっちに行ったほうがいい
2020/11/27(金) 22:58:10.21ID:YUFOKuwU
ご覧の通り何を言っても無駄
無駄に突っかかってくるやつ相手にしてもSAN値下がるだけなので
「POSIXにこだわらないシェルスクリプト総合スレ」を立てたほうが建設的だよ
POSIXに強くこだわりたいときにこのスレ使えばいい
無駄に突っかかってくるやつ相手にしてもSAN値下がるだけなので
「POSIXにこだわらないシェルスクリプト総合スレ」を立てたほうが建設的だよ
POSIXに強くこだわりたいときにこのスレ使えばいい
2020/11/27(金) 23:00:51.97ID:W+zDVYCR
>>43
ぺこぱかよ
ぺこぱかよ
2020/11/27(金) 23:06:24.74ID:0Fqhj3Tv
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★10 [ぐれ★]
- トランプ氏「台湾侵攻すれば北京爆撃」“過激予告発言”報道がXで再燃「高市氏の1億倍やばい」 [七波羅探題★]
- 【維新国会議員が800万円超の公金を使用】藤田文武共同代表が印刷代569万円を維新市議の「身内企業に支出」していた! [ぐれ★]
- 【ペルソナ・ノン・グラータ】中国総領事の早期国外退去を首相に要請へ 自民・保守系グループ「日本の尊厳と国益を護(まも)る会」 [ぐれ★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 ★2 [おっさん友の会★]
- 【(・(ェ)・)】収穫前のリンゴ2トン!丸々と太ったクマがリンゴ畑に連日現れ…一晩中居座る「こんなに食べられたのは初めて」長野・上田 [ぐれ★]
- 安倍晋三さん、完全にチェックアウトしてしまう…「母の部屋に安倍元首相が表紙の旧統一教会の機関誌があった」 [405019576]
- 中国報道、高市首相を「毒苗」と中傷😡 [399259198]
- 【高市悲報】🇨🇳中国「日本への報復措置? 他にいくらでも方法はある。 まだまだやめないよ」 😨😱 [485983549]
- 【悲報】日本、パンダ0にwwwwwwwwwwww高市さんありがとう🐼 [271912485]
- 高市早苗、約1ヶ月でドル円・10円円安を達成 [256556981]
- 高市さん「自賠責を勝手に他の財源に充てるな、返せ」財務省さん、しぶしぶ5700億円を返還 [881878332]
