シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
シェルスクリプト総合 その33
https://mevius.5ch.net/test/read.cgi/tech/1584893550/
探検
シェルスクリプト総合 その34
レス数が1000を超えています。これ以上書き込みはできません。
2020/08/21(金) 15:17:55.64ID:mArnj/tT
2020/08/21(金) 15:18:16.96ID:mArnj/tT
・特記なき場合、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/08/21(金) 15:19:27.93ID:mArnj/tT
関連スレ
【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/08/21(金) 15:25:17.16ID:MuUIpq44
>>1
おっつん
おっつん
5デフォルトの名無しさん
2020/08/24(月) 18:01:20.80ID:xVB6pD3/ こんにちは
Macでzshを使っています
フォルダに
memo20200810.txt
memo20200817.txt
memo20200824.txt
のようなファイルがあったとして(週に1つずつ増える)
最新のファイルをechoで見たいとしたらどうするのがいいでしょうか???
Macでzshを使っています
フォルダに
memo20200810.txt
memo20200817.txt
memo20200824.txt
のようなファイルがあったとして(週に1つずつ増える)
最新のファイルをechoで見たいとしたらどうするのがいいでしょうか???
2020/08/24(月) 18:06:26.10ID:xVB6pD3/
すみませんechoではなくcatでした
別にコマンドは何でもいいので最新のテキストの内容を見る方法を知りたいです
別にコマンドは何でもいいので最新のテキストの内容を見る方法を知りたいです
2020/08/24(月) 18:08:35.17ID:eDLiikcy
cat "$(/bin/ls *.txt | tail -1)"
2020/08/24(月) 18:14:51.49ID:xVB6pD3/
ありがとうございました!
9デフォルトの名無しさん
2020/08/24(月) 19:06:43.25ID:8Ar+AlN+ ファイルが大量にあった場合には大きい順でソートして1行目を取り出すみたいに書いた方が速くないか?
10デフォルトの名無しさん
2020/08/24(月) 19:12:31.00ID:8Ar+AlN+ ただし ls で引数に指定するのはディレクトリ。
2020/08/25(火) 08:17:19.49ID:kX+0EEJG
>>7
ちなみにlsだけフルパスなのは? lsがエイリアスである可能性を考慮とか?
ちなみにlsだけフルパスなのは? lsがエイリアスである可能性を考慮とか?
2020/08/25(火) 08:57:33.67ID:c6c4SV8K
Unixで「複数のパスを区切る」といえばコロン区切りが普通だと思うんだけど
(例えばPATH,CDPATH,NLSPATHとか)
POSIXの
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03
でも言われている通りコロンが含まれているパスを指定することができない。
もちろん自分で勝手にPOSIXを逸脱して,バックスラッシュでコロンを
エスケープする,みたいなことをしてもいいんだけど,
なるたけ標準に合わせたい。
環境変数で複数のパスを指定するときに,
コロンを含めるようにしているユーティリティの例とか知らない?
(例えばPATH,CDPATH,NLSPATHとか)
POSIXの
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03
でも言われている通りコロンが含まれているパスを指定することができない。
もちろん自分で勝手にPOSIXを逸脱して,バックスラッシュでコロンを
エスケープする,みたいなことをしてもいいんだけど,
なるたけ標準に合わせたい。
環境変数で複数のパスを指定するときに,
コロンを含めるようにしているユーティリティの例とか知らない?
2020/08/25(火) 09:30:33.15ID:lHpt9rtN
PATHがコロン含められないのにコロン使えるようにするの?
チャレンジャーだなw
Unixはパスに使えない文字を決めたほうが良かったと思うね
MS-DOS/Windowsはちょっと多すぎだけど
チャレンジャーだなw
Unixはパスに使えない文字を決めたほうが良かったと思うね
MS-DOS/Windowsはちょっと多すぎだけど
2020/08/25(火) 12:32:57.49ID:c6c4SV8K
2020/08/25(火) 14:21:00.18ID:qvclnJmh
>>14
シェルスクリプトには関係なくね?
シェルスクリプトには関係なくね?
2020/08/25(火) 14:22:05.05ID:qvclnJmh
そういや環境変数名に記号とか改行とか使えるの知ってる?w
2020/08/27(木) 12:47:09.11ID:Di05+wlc
コマンドの戻り値を反転させたい、つまり0のときは非0に、非0のときは0に変えたいんだけど、どうすれば?
set -e状態のスクリプトで、特殊なコマンドを使いたい場合に。
また、makeで使うときにmake専用の記法(-とか@とか)がもしあればそれも。
set -e状態のスクリプトで、特殊なコマンドを使いたい場合に。
また、makeで使うときにmake専用の記法(-とか@とか)がもしあればそれも。
2020/08/27(木) 13:37:00.71ID:Q9F08mvx
2020/08/27(木) 13:56:01.63ID:Di05+wlc
2020/08/27(木) 14:11:33.44ID:Di05+wlc
ちなみに、makefileの場合は、次のように一行にまとめてしまえばごまかすことはできるが、set -eスクリプトだとやっぱりダメなもよう。
コマンド; test $? -ne 0
コマンド; test $? -ne 0
2020/08/27(木) 14:24:40.22ID:eXOTJM+N
!
2020/08/27(木) 15:13:00.41ID:Q9F08mvx
>>19
まあ大体そうなんだろうとは思ったが
どういうときにコマンドの戻り値を反転させたいのか気になるけど
処理をmain関数に入れてしまってこれでできるはず
( main ) && return 1
return 0
! ( main ) でも一応良いはずなんだけど ifを使わずにコマンドの頭に
!をつけるだけだと動かないシェルがあった気がする
今回はサブシェルが間に入っているから大丈夫かもだけど
あとは、思いつきだけどこんな感じでも出来る気がする
#!/bin/sh
set -e
trap 'exit $(($? == 0 ? 1 : 0))' EXIT
任意のコマンド
まあ大体そうなんだろうとは思ったが
どういうときにコマンドの戻り値を反転させたいのか気になるけど
処理をmain関数に入れてしまってこれでできるはず
( main ) && return 1
return 0
! ( main ) でも一応良いはずなんだけど ifを使わずにコマンドの頭に
!をつけるだけだと動かないシェルがあった気がする
今回はサブシェルが間に入っているから大丈夫かもだけど
あとは、思いつきだけどこんな感じでも出来る気がする
#!/bin/sh
set -e
trap 'exit $(($? == 0 ? 1 : 0))' EXIT
任意のコマンド
2020/08/27(木) 15:13:43.83ID:Q9F08mvx
ちなみにmakefileは知らんw
24デフォルトの名無しさん
2020/08/27(木) 15:30:52.02ID:aM8Ck5Vz 0/1の二択なら1から引けばいいじゃんね
2020/08/27(木) 15:33:26.32ID:Q9F08mvx
set -eでエラー終了した時は$?が1とは限らん
trap 'exit $(($? == 0 ? 1 : 0))' EXIT
trap 'exit $(($? > 0 ? 0 : 1))' EXIT # 一文字短縮化w
trap 'exit $(($? == 0 ? 1 : 0))' EXIT
trap 'exit $(($? > 0 ? 0 : 1))' EXIT # 一文字短縮化w
2020/08/28(金) 15:22:32.20ID:hYmDe1I0
2020/08/28(金) 19:08:43.38ID:0gWrnmZ1
trap 'exit $(($? > 0 ? 0 : 1))' EXIT
これいいね
これいいね
2020/08/29(土) 14:16:28.94ID:fysUNitN
MirBSDの記事として書き込まれてたけど
このスレの前々スレくらいでもちょっと議論されてた
「ASCII区切り文字による表形式」についての話
https://www.mirbsd.org/permalinks/wlog2020_e20200620.htm#e20200620_wlog2020
このスレの前々スレくらいでもちょっと議論されてた
「ASCII区切り文字による表形式」についての話
https://www.mirbsd.org/permalinks/wlog2020_e20200620.htm#e20200620_wlog2020
2020/08/29(土) 15:32:00.60ID:tFn2MGZe
>>28
あー、その記事読んだ。FSってフィールドセパレータだと思っちゃうよねw
たまたま俺は、レコードとフィールドと、ファイル区切りもいるかなぁ?って
考えながら探してたから、お、4つもあるじゃんって感じで気付いたが
あー、その記事読んだ。FSってフィールドセパレータだと思っちゃうよねw
たまたま俺は、レコードとフィールドと、ファイル区切りもいるかなぁ?って
考えながら探してたから、お、4つもあるじゃんって感じで気付いたが
30デフォルトの名無しさん
2020/08/29(土) 16:27:42.59ID:2GmTjly/ >>16
知ってる。
知ってる。
31デフォルトの名無しさん
2020/08/29(土) 16:39:43.91ID:2GmTjly/2020/08/29(土) 16:42:17.42ID:2GmTjly/
あ。上の方からゆっくり読んで下まで読まずに書いたら途中で色々と話が進んでいたorz
2020/08/30(日) 18:43:29.75ID:CLO3al/P
https://mevius.5ch.net/test/read.cgi/tech/1537584801/206
この問題のレベル2を実装できないw
レベル1は
foo() { set -- $2 $1 $(shift 2; printf ' %s' "$@"); bar "$@"; }
↑こんな感じのが正解の一つだと思うんだが,
これだと
foo 1 2 3 4 '5 includes space'
という引数を指定した場合に
$ foo 1 2 3 4 '5 includes space'
begin
2
1
3
4
5
includes
space
end
というような出力になってしまう。
この問題のレベル2を実装できないw
レベル1は
foo() { set -- $2 $1 $(shift 2; printf ' %s' "$@"); bar "$@"; }
↑こんな感じのが正解の一つだと思うんだが,
これだと
foo 1 2 3 4 '5 includes space'
という引数を指定した場合に
$ foo 1 2 3 4 '5 includes space'
begin
2
1
3
4
5
includes
space
end
というような出力になってしまう。
2020/08/31(月) 12:38:22.81ID:pjiHotrY
age
2020/09/02(水) 11:33:18.91ID:ifuz91bD
シェルスクリプトマスターしてしまったので
シェルスクリプト難しいって言ってる人が
何が難しいのかわからなくなった
シェルスクリプトが難しいんじゃなくて
初心者だから難しいだけなんじゃ?
シェルスクリプト難しいって言ってる人が
何が難しいのかわからなくなった
シェルスクリプトが難しいんじゃなくて
初心者だから難しいだけなんじゃ?
36デフォルトの名無しさん
2020/09/02(水) 19:16:56.69ID:orWCnyGy >>33
age
age
37デフォルトの名無しさん
2020/09/03(木) 02:22:39.28ID:weiyro1+ >>33
いくつかやり方があると思うがヒントな
位置パラメータが 1 2 3 4 5 の状態から
1 2 3 4 5 2 1 3 4 5 を作り出すことができれば
あとはshift 5をするだけで
2 1 3 4 5 にすることができる
この問題を解くカギは、終了条件をどうするか?なんだよ
いくつかやり方があると思うがヒントな
位置パラメータが 1 2 3 4 5 の状態から
1 2 3 4 5 2 1 3 4 5 を作り出すことができれば
あとはshift 5をするだけで
2 1 3 4 5 にすることができる
この問題を解くカギは、終了条件をどうするか?なんだよ
38デフォルトの名無しさん
2020/09/03(木) 02:23:25.90ID:ZRdxhfh3 1 2 3 4 5 2 1 3 4 5 を作り出すことができれば
スペース入れたつもりだったが見やすくならなかったな
スペース入れたつもりだったが見やすくならなかったな
2020/09/03(木) 21:49:28.77ID:cH7nhQ1J
2020/09/03(木) 23:57:53.85ID:BJh39Y3Y
補足 わかると思うけど
この問題を解くカギは、「ループの」終了条件をどうするか?なんだよ
この問題を解くカギは、「ループの」終了条件をどうするか?なんだよ
2020/09/06(日) 11:36:07.13ID:r+7yP+3C
2020/09/06(日) 14:08:50.79ID:B3LMKUW8
もう自演にしか見えないw
2020/09/06(日) 20:01:46.98ID:7hbRm2sU
前スレ止まってると思ったら埋めずに分裂してたんかい
2020/09/06(日) 20:55:56.09ID:racdSqu4
>>41
できたかニャ?
できたかニャ?
2020/09/07(月) 13:21:21.27ID:77IwCGLU
46デフォルトの名無しさん
2020/09/08(火) 10:49:07.66ID:4xL00uJx 申し訳ないですが誰か教えてください。
以下のような感じで処理をしたいのですが
a.sh(rootで実行)
#!/bin/bash
#処理
#postgresでb.shを実行
su - postgres -c "bash パス/b.sh `$1`"
echo "b.sh完了"
#testでc.shを実行
su - test -c "bash パス/c.sh"
echo "c.sh完了"
exit 0;
b.sh(postgres)
#!bin/bash
#複数処理
exit 0;
これをやるとb.shの一番最初の処理は実行できるのですが
2番目の処理からがエラーで実行できません。
postgresにてb.sh単体で処理を動かすと問題なく動かすことが出来るのですが・・・
このb.shをrootのa.shからpostgresのb.shを呼ぶ方法を教えていただけないでしょうか。
またシェルを分けずに、一貫してやった場合てどうやって途中でユーザ切り替えするのでしょうか?
申し訳ございませんが教えてください・・・
以下のような感じで処理をしたいのですが
a.sh(rootで実行)
#!/bin/bash
#処理
#postgresでb.shを実行
su - postgres -c "bash パス/b.sh `$1`"
echo "b.sh完了"
#testでc.shを実行
su - test -c "bash パス/c.sh"
echo "c.sh完了"
exit 0;
b.sh(postgres)
#!bin/bash
#複数処理
exit 0;
これをやるとb.shの一番最初の処理は実行できるのですが
2番目の処理からがエラーで実行できません。
postgresにてb.sh単体で処理を動かすと問題なく動かすことが出来るのですが・・・
このb.shをrootのa.shからpostgresのb.shを呼ぶ方法を教えていただけないでしょうか。
またシェルを分けずに、一貫してやった場合てどうやって途中でユーザ切り替えするのでしょうか?
申し訳ございませんが教えてください・・・
2020/09/08(火) 11:14:25.07ID:ymgasiE/
48デフォルトの名無しさん
2020/09/08(火) 11:52:32.28ID:4xL00uJx >>47
[root@test-srv test]# ll
合計 8
-rwxrwxrwx 1 root root 216 9月 8 11:46 a.sh
-rwxrwxrwx 1 postgres postgres 115 9月 8 11:44 b.sh
[root@test-srv test]# cat a.sh
#!/bin/bash
echo "a.shの処理を開始します。"
echo "a.shのテスト出力、引数は${1}です。"
echo "b.shを実行します"
su - postgres `/home/postgres/work/work/test/b.sh ${1}`
echo "a.shを終了します"
exit 0;
[root@test-srv test]# cat b.sh
#!/bin/bash
echo "b.shの引数1は${1}です。"
echo "b.shのテスト出力です。"
echo "b.shのテスト出力です。"
exit 0;
[root@test-srv test]# ./a.sh test
a.shの処理を開始します。
a.shのテスト出力、引数はtestです。
b.shを実行します
-bash: b.shの引数1はtestです。: そのようなファイルやディレクトリはありません
a.shを終了します
[root@test-srv test]#
少し処理を変えた結果もこんな下の感じです。
[root@test-srv test]# ./a.sh test
テスト: 引数1はtestです: command not found
これはテストです
[root@test-srv test]# ll
合計 8
-rwxrwxrwx 1 root root 216 9月 8 11:46 a.sh
-rwxrwxrwx 1 postgres postgres 115 9月 8 11:44 b.sh
[root@test-srv test]# cat a.sh
#!/bin/bash
echo "a.shの処理を開始します。"
echo "a.shのテスト出力、引数は${1}です。"
echo "b.shを実行します"
su - postgres `/home/postgres/work/work/test/b.sh ${1}`
echo "a.shを終了します"
exit 0;
[root@test-srv test]# cat b.sh
#!/bin/bash
echo "b.shの引数1は${1}です。"
echo "b.shのテスト出力です。"
echo "b.shのテスト出力です。"
exit 0;
[root@test-srv test]# ./a.sh test
a.shの処理を開始します。
a.shのテスト出力、引数はtestです。
b.shを実行します
-bash: b.shの引数1はtestです。: そのようなファイルやディレクトリはありません
a.shを終了します
[root@test-srv test]#
少し処理を変えた結果もこんな下の感じです。
[root@test-srv test]# ./a.sh test
テスト: 引数1はtestです: command not found
これはテストです
2020/09/08(火) 12:32:53.69ID:o44vEJ9h
`/home/postgres/work/work/test/b.sh ${1}`
` じゃん
su - postgres b.shの引数1はtestです。
をしようとしてるじゃん、
-bash: b.shの引数1はtestです。: そのようなファイルやディレクトリはありません
のメッセージの通りじゃん?
` じゃん
su - postgres b.shの引数1はtestです。
をしようとしてるじゃん、
-bash: b.shの引数1はtestです。: そのようなファイルやディレクトリはありません
のメッセージの通りじゃん?
2020/09/08(火) 13:38:46.77ID:wSlh5XRm
いったい何がしたいんや?
バッククォートは何のため?
バッククォートは何のため?
51デフォルトの名無しさん
2020/09/08(火) 13:41:35.55ID:4xL00uJx52デフォルトの名無しさん
2020/09/08(火) 13:44:08.25ID:4xL00uJx2020/09/08(火) 13:47:28.39ID:o44vEJ9h
` で囲んだのは、その時点でそれが実行されてその出力に置き換えられる。$() はほぼ等価
su - postgres `/home/postgres/work/work/test/b.sh ${1}`
は
su - postgres b.shの引数1はtestです。
をやろうとしてる(b.shの引数1はtestです。に b.shのテスト出力です。もあるけどな)
だから、
-bash: b.shの引数1はtestです。: そのようなファイルやディレクトリはありません
というメッセージなんだよ
su - postgres b.shの引数1はtestです。
をしようとしてるんだから
やりたいのは、
su - postgres `/home/postgres/work/work/test/b.sh ${1}`
ではなくて、
su - postgres "/home/postgres/work/work/test/b.sh ${1}"
とかだろう
su - postgres `/home/postgres/work/work/test/b.sh ${1}`
は
su - postgres b.shの引数1はtestです。
をやろうとしてる(b.shの引数1はtestです。に b.shのテスト出力です。もあるけどな)
だから、
-bash: b.shの引数1はtestです。: そのようなファイルやディレクトリはありません
というメッセージなんだよ
su - postgres b.shの引数1はtestです。
をしようとしてるんだから
やりたいのは、
su - postgres `/home/postgres/work/work/test/b.sh ${1}`
ではなくて、
su - postgres "/home/postgres/work/work/test/b.sh ${1}"
とかだろう
54デフォルトの名無しさん
2020/09/08(火) 13:58:43.10ID:4xL00uJx2020/09/08(火) 14:04:44.26ID:o44vEJ9h
ちゃんとメッセージ見ような。だいたいにおいて正しく問題点が書いてあるんだからw
2020/09/08(火) 15:16:17.47ID:wSlh5XRm
2020/09/08(火) 15:37:36.08ID:o44vEJ9h
だが、typoでもよくみるメッセージだからな
それを実行しようとしてる、なぜなんだぜぐらいから始めないとな
それを実行しようとしてる、なぜなんだぜぐらいから始めないとな
2020/09/08(火) 15:59:34.51ID:7o8rcsWh
ブログはクォート関係はよく文字化けする
2020/09/08(火) 17:39:44.03ID:ymgasiE/
cshやAndroidにも対応した上で
POSIXに準拠したシェルスクリプトの書き方
(cshの場合はshで起動し直すらしい)
https://togetter.com/li/1077808?page=5
ここまでやる意義は不明w
POSIXに準拠したシェルスクリプトの書き方
(cshの場合はshで起動し直すらしい)
https://togetter.com/li/1077808?page=5
ここまでやる意義は不明w
2020/09/08(火) 20:25:26.31ID:7o8rcsWh
>>59
それは読んだことがあるが
どうももやもやしている
どういう環境でそれが必要なのかが書いてないからかな?
Androidといわれてもー
バージョンわからないしー
検証環境用意できないしーw
読んでて思うのはtogetterはツイートをまとめるだけなので
検証内容をまとめるには適してねーわ
それは読んだことがあるが
どうももやもやしている
どういう環境でそれが必要なのかが書いてないからかな?
Androidといわれてもー
バージョンわからないしー
検証環境用意できないしーw
読んでて思うのはtogetterはツイートをまとめるだけなので
検証内容をまとめるには適してねーわ
2020/09/09(水) 10:55:40.97ID:L9ofENhq
>>60
同意。
「結局なにが分かったのか」
「解決方法はどうだったのか」
っていう,一番重要な情報もめちゃめちゃ
みにくいところにある。
しかも,まとめ主は
「あとで記事にする」と言っているのに
その後音沙汰がないし
アカウント乗り換えてる模様。
怪しすぎる。
同意。
「結局なにが分かったのか」
「解決方法はどうだったのか」
っていう,一番重要な情報もめちゃめちゃ
みにくいところにある。
しかも,まとめ主は
「あとで記事にする」と言っているのに
その後音沙汰がないし
アカウント乗り換えてる模様。
怪しすぎる。
2020/09/09(水) 11:00:38.40ID:ShrkmEVF
2020/09/09(水) 11:05:11.17ID:ShrkmEVF
だれかもうずばっと シバンはちゃんと書きましょう。
shを使うなら #!/bin/sh です。このパスがない環境はもうありません
って言ってくれないかな?w
真偽不明でタイトルだけ残ってて困る
shを使うなら #!/bin/sh です。このパスがない環境はもうありません
って言ってくれないかな?w
真偽不明でタイトルだけ残ってて困る
2020/09/09(水) 11:54:49.47ID:L9ofENhq
>>63
ちょっとつっかかるけど
「このパスがない環境はもうありません」
これも根拠なくないか?
POSIXでは定められていない訳だし,
Solarisだと/bin/shはめちゃめちゃ古い。
POSIX shは/usr/xpg4/bin/shにある。
ちょっとつっかかるけど
「このパスがない環境はもうありません」
これも根拠なくないか?
POSIXでは定められていない訳だし,
Solarisだと/bin/shはめちゃめちゃ古い。
POSIX shは/usr/xpg4/bin/shにある。
2020/09/09(水) 12:45:45.54ID:SvwSYfrG
#!/usr/bin/env sh
2020/09/09(水) 13:06:06.44ID:L9ofENhq
2020/09/09(水) 17:24:48.34ID:QPd8QPwA
たまたまSolarisの環境があるから調べてみたが、
> Solarisだと/bin/shはめちゃめちゃ古い。
これはSolaris 10以前の話。古いというかPOSIX以前のBourne Shellだな。
これがSolaris 11ではkshに変わっている。
それからシステムの初期設定PATHと
getconf PATHは必ずしも同じではない
Solarisのシステムの初期設定PATHは/usr/sbin:/usr/binなんだが互換性上の理由(?)で
POSIXに準拠してない可能性があるコマンドが入っていると考えて良さそう
getconfはPOSIX準拠のコマンドということもあり、getconf PATHもPOSIX準拠のためのPATHを返す
例えば /usr/xpg4/bin/ が優先されている。ただし /usr/sbin は入ってない。Linuxでも/bin:/usr/binしか返ってこないな
だから PATH=$(getconf PATH) なんかしてしまうと fdisk が使えなくなったw
ちなみに /bin はどちらのPATHにも入ってない
getconf PATHをどう使うかもOS依存な気がするけど、Togetterまとめに書いてあるように
PATH="$(command -p getconf PATH):$PATH"
こうすることで、標準を壊すことなくPOSIX準拠に近くするという意味になるんだろう
ちなみにだけどcommandの-pオプションは古いzsh(たしか4.0あたり)で使えなかったりするけどなw
個人的にはgetconfがない環境があるのは知っていたので、そこは何も不思議はない
Togetterまとめに書いてあるPATHの初期化方法は何をやりたいのかよくわからんw
なんつーか一行にしようとして意味不明にしてるとしか思えんな。こんなんでいいやろ?
default_path="$(command -p getconf PATH 2>/dev/null ||:)"
[ "$default_path" ] && PATH="$default_path:$PATH"
> Solarisだと/bin/shはめちゃめちゃ古い。
これはSolaris 10以前の話。古いというかPOSIX以前のBourne Shellだな。
これがSolaris 11ではkshに変わっている。
それからシステムの初期設定PATHと
getconf PATHは必ずしも同じではない
Solarisのシステムの初期設定PATHは/usr/sbin:/usr/binなんだが互換性上の理由(?)で
POSIXに準拠してない可能性があるコマンドが入っていると考えて良さそう
getconfはPOSIX準拠のコマンドということもあり、getconf PATHもPOSIX準拠のためのPATHを返す
例えば /usr/xpg4/bin/ が優先されている。ただし /usr/sbin は入ってない。Linuxでも/bin:/usr/binしか返ってこないな
だから PATH=$(getconf PATH) なんかしてしまうと fdisk が使えなくなったw
ちなみに /bin はどちらのPATHにも入ってない
getconf PATHをどう使うかもOS依存な気がするけど、Togetterまとめに書いてあるように
PATH="$(command -p getconf PATH):$PATH"
こうすることで、標準を壊すことなくPOSIX準拠に近くするという意味になるんだろう
ちなみにだけどcommandの-pオプションは古いzsh(たしか4.0あたり)で使えなかったりするけどなw
個人的にはgetconfがない環境があるのは知っていたので、そこは何も不思議はない
Togetterまとめに書いてあるPATHの初期化方法は何をやりたいのかよくわからんw
なんつーか一行にしようとして意味不明にしてるとしか思えんな。こんなんでいいやろ?
default_path="$(command -p getconf PATH 2>/dev/null ||:)"
[ "$default_path" ] && PATH="$default_path:$PATH"
2020/09/09(水) 17:25:20.59ID:QPd8QPwA
↑でこれはシバンがないほうがいいかどうかとは全く関係ない話
まぜるなや
まぜるなや
2020/09/09(水) 18:30:55.68ID:COY4N7BF
宇宙刑事シバン
2020/09/09(水) 18:57:01.22ID:L9ofENhq
2020/09/09(水) 18:59:49.28ID:L9ofENhq
2020/09/10(木) 02:57:03.19ID:wmlkkGXD
>>71
command -p (もしくはただのcommand)って
シェルで微妙に動作が違うんだよな
ちゃんとまとめてないからきっちりとは言えんけど
例えば dash や ksh だと command -p printf --help は
ビルトインコマンドが実行される
zshだと外部コマンド
zsh で command -p : がエラーになるのはそのせい
command -p (もしくはただのcommand)って
シェルで微妙に動作が違うんだよな
ちゃんとまとめてないからきっちりとは言えんけど
例えば dash や ksh だと command -p printf --help は
ビルトインコマンドが実行される
zshだと外部コマンド
zsh で command -p : がエラーになるのはそのせい
2020/09/10(木) 03:02:01.02ID:wmlkkGXD
なんで昔の人って
command ・・・ 外部コマンドを実行する
builtin ・・・ ビルトインコマンドを実行する
function ・・・ シェル関数を実行する
みたいに全部作ろうと思わなかったんだろうな?
ユースケースを思いつかなかったということなんかな
command ・・・ 外部コマンドを実行する
builtin ・・・ ビルトインコマンドを実行する
function ・・・ シェル関数を実行する
みたいに全部作ろうと思わなかったんだろうな?
ユースケースを思いつかなかったということなんかな
2020/09/10(木) 03:19:24.10ID:Imxe+iF3
zsh
% type command
command is a shell builtin
https://linux.die.net/man/1/zshbuiltins
command [ -pvV ] simple command
The simple command argument is taken as an external command instead of a function or builtin and is executed. If the POSIX_BUILTINS option is set, builtins will also be executed but certain special properties of them are suppressed. The -p flag causes a default path to be searched instead of that in $path. With the -v flag, command is similar to whence and with -V, it is equivalent to whence -v.
See also the section 'Precommand Modifiers'.
% type command
command is a shell builtin
https://linux.die.net/man/1/zshbuiltins
command [ -pvV ] simple command
The simple command argument is taken as an external command instead of a function or builtin and is executed. If the POSIX_BUILTINS option is set, builtins will also be executed but certain special properties of them are suppressed. The -p flag causes a default path to be searched instead of that in $path. With the -v flag, command is similar to whence and with -V, it is equivalent to whence -v.
See also the section 'Precommand Modifiers'.
2020/09/10(木) 04:00:38.67ID:MVNZ6OMc
zshにしたら今まで使ってたbashがぶっ壊れることって結構ありますか?
2020/09/10(木) 05:24:13.89ID:krA4WMn4
bashがぶっ壊れるって何?
両方入れるだけでしょ?
bash消してzsh入れるっていうのならぶっ壊れる可能性が高い
もしくは最初からbashが入ってない(必要ない)システムを使うとかね
例えばdashを採用しているdebian/ubuntuとか
そういうシステムでもdashを消してzshにしたらぶっ壊れる
zshをPOSIXモードで実行すればワンチャンあるかもしれんけど
両方入れるだけでしょ?
bash消してzsh入れるっていうのならぶっ壊れる可能性が高い
もしくは最初からbashが入ってない(必要ない)システムを使うとかね
例えばdashを採用しているdebian/ubuntuとか
そういうシステムでもdashを消してzshにしたらぶっ壊れる
zshをPOSIXモードで実行すればワンチャンあるかもしれんけど
2020/09/10(木) 08:23:53.97ID:gaq4bikN
bash用スクリプトはzshで動かすことを考えて作っていない限り動かない
sh用スクリプトであってもzshでは動かない可能性がある
sh用スクリプトであってもzshでは動かない可能性がある
2020/09/10(木) 09:30:12.19ID:KfHzrxU8
カタリナにしてからmacのターミナル起動するたびに出てくる
`chsh -s /bin/zsh`って実行したらbash使えなくなるよね?
`chsh -s /bin/zsh`って実行したらbash使えなくなるよね?
79デフォルトの名無しさん
2020/09/10(木) 13:51:29.36ID:a+RPoaYl >>73
zshを基準に見ているからそうなる。
zshを基準に見ているからそうなる。
80デフォルトの名無しさん
2020/09/10(木) 13:53:05.81ID:a+RPoaYl シェルとコマンドの関係はOS依存たぞ
2020/09/10(木) 14:42:26.26ID:aa4WTOXX
2020/09/10(木) 14:47:37.11ID:aa4WTOXX
>>78
ならない。
macは最初からbashとzshの両方がインストールされてる。容量の無駄遣い
macOSでbashは/bin/shとして使われてる。Debianで使われてるdashよりも重い
最新のbashは5系だがmacOSの/bin/shのbashは3系で古い。
ライセンスのせいで新しいbashにアップデートできない
しかしPOSIX準拠のdashにしようと思っても
bash依存してるスクリプトがあって互換性の問題が出るからdashにもできない
つまりmacOSの/bin/shはPOSIX準拠のdashでもない上に
古いbashという中途半端な状態
ならない。
macは最初からbashとzshの両方がインストールされてる。容量の無駄遣い
macOSでbashは/bin/shとして使われてる。Debianで使われてるdashよりも重い
最新のbashは5系だがmacOSの/bin/shのbashは3系で古い。
ライセンスのせいで新しいbashにアップデートできない
しかしPOSIX準拠のdashにしようと思っても
bash依存してるスクリプトがあって互換性の問題が出るからdashにもできない
つまりmacOSの/bin/shはPOSIX準拠のdashでもない上に
古いbashという中途半端な状態
2020/09/10(木) 14:49:08.50ID:aa4WTOXX
>>77
> `chsh -s /bin/zsh`って実行したらbash使えなくなるよね?
さっさと実行しろ。どうせシェルスクリプトの類はbashで動く
明示的にしていて無い限りmacOSでは古いbashでスクリプトを動かすことになる
最新のbashの機能も使えない
> `chsh -s /bin/zsh`って実行したらbash使えなくなるよね?
さっさと実行しろ。どうせシェルスクリプトの類はbashで動く
明示的にしていて無い限りmacOSでは古いbashでスクリプトを動かすことになる
最新のbashの機能も使えない
84デフォルトの名無しさん
2020/09/10(木) 15:45:56.05ID:uhPbYbU6 >>81
コマンドについてはデフォルトのシェル用に作られたものを、別のシェルでは動きを変えて対応している。
だから同じ名前のシェルでもOSが異なれば、動きが変わる。
Linuxのshはbashがsh風に動かしているだけで、いろんなところがshではない。
コマンドについてはデフォルトのシェル用に作られたものを、別のシェルでは動きを変えて対応している。
だから同じ名前のシェルでもOSが異なれば、動きが変わる。
Linuxのshはbashがsh風に動かしているだけで、いろんなところがshではない。
2020/09/10(木) 16:58:53.57ID:aa4WTOXX
86デフォルトの名無しさん
2020/09/10(木) 18:11:40.04ID:uhPbYbU6 >>85
UNIXは体系的に作られたものではないということ。
それぞれが他人によって作られ、それらを統合しているため、一貫性がないのが普通。
細かい規格も存在していないので、コマンド、スクリプトは環境に依存する。
UNIXは体系的に作られたものではないということ。
それぞれが他人によって作られ、それらを統合しているため、一貫性がないのが普通。
細かい規格も存在していないので、コマンド、スクリプトは環境に依存する。
2020/09/10(木) 18:21:46.36ID:aa4WTOXX
>>86
だからそれが何の関係があるの?
だからそれが何の関係があるの?
2020/09/10(木) 19:21:59.58ID:aD+veWb6
2020/09/10(木) 19:37:41.08ID:pjCowNAw
なんでだろう?→疑問に思うな!
思考停止か
思考停止か
2020/09/10(木) 22:48:02.68ID:QyeHeLUF
>>86 って言ってるのに、疑問に思うな思考停止とか読めないやつなんだろな
91デフォルトの名無しさん
2020/09/10(木) 23:37:28.48ID:a+RPoaYl そもそもUNIXは、たまたまこうなったんじゃなくて、合理的な理由があるんだけど、なんでそれを知ろうとしないの?
UNIXはこういう思想で物を作ってますと宣言してるのに。
UNIXはこういう思想で物を作ってますと宣言してるのに。
2020/09/11(金) 01:22:31.38ID:hZ3Ldf5L
いやー、たまたまやろ。
根っこにポリシーはあっても、それ以外はかなりのいきあたりばったり。
根っこにポリシーはあっても、それ以外はかなりのいきあたりばったり。
2020/09/11(金) 03:59:13.43ID:d1DTUP2t
>>92
それな。"$1" みたいにダブルクォートでくくらないといけないのは
明らかな仕様の失敗だって言われてるし
他の言語と同じようにPOSIXシェル以前やBourneシェル以前との
互換性をある程度保ちながら改良を続けてきた
必ずしも合理的な理由があるわけじゃないよ。作者がたまたま必要だった
必要と思いつかなかった。それだけだろ
それな。"$1" みたいにダブルクォートでくくらないといけないのは
明らかな仕様の失敗だって言われてるし
他の言語と同じようにPOSIXシェル以前やBourneシェル以前との
互換性をある程度保ちながら改良を続けてきた
必ずしも合理的な理由があるわけじゃないよ。作者がたまたま必要だった
必要と思いつかなかった。それだけだろ
2020/09/11(金) 08:15:02.44ID:xA9OFzcD
2020/09/11(金) 08:49:14.16ID:5RqPMo1H
96デフォルトの名無しさん
2020/09/11(金) 11:23:25.35ID:oZv/fWa7 ぬるぽ
2020/09/11(金) 11:48:58.51ID:+wXdjlpn
>>94
あるというか、そうしなければならない場合も。
引数がなかったときに、クォートされてると、空文字列になってしまうので、意味が変わる。
make $1
みたいなスクリプトだとクォートしてはいけない。
あるというか、そうしなければならない場合も。
引数がなかったときに、クォートされてると、空文字列になってしまうので、意味が変わる。
make $1
みたいなスクリプトだとクォートしてはいけない。
2020/09/11(金) 13:38:53.46ID:2ygR8GWv
>>97もクォートしないと駄目。嘘を教えるな
2020/09/11(金) 13:45:46.53ID:GM+a9m1V
100デフォルトの名無しさん
2020/09/11(金) 14:05:53.38ID:2ygR8GWv101デフォルトの名無しさん
2020/09/11(金) 14:32:38.68ID:GM+a9m1V >>100
じゃあ引数がないときは?
じゃあ引数がないときは?
102デフォルトの名無しさん
2020/09/11(金) 14:36:02.66ID:FL1BL0eE103デフォルトの名無しさん
2020/09/11(金) 15:18:28.07ID:GM+a9m1V104デフォルトの名無しさん
2020/09/11(金) 15:22:36.50ID:ClWA61Ey105デフォルトの名無しさん
2020/09/11(金) 17:22:23.47ID:GM+a9m1V >>104
勝手に-uをベストに決めつけんな。クズ。
オプションは使うべきときに使え。クズ。
makeみたいな、引数の有無で挙動が変わるコマンドがあって、考えなしに変数をクォートすりゃあいいってもんじゃない、って話をしてんだよ。クズ。
勝手に-uをベストに決めつけんな。クズ。
オプションは使うべきときに使え。クズ。
makeみたいな、引数の有無で挙動が変わるコマンドがあって、考えなしに変数をクォートすりゃあいいってもんじゃない、って話をしてんだよ。クズ。
106デフォルトの名無しさん
2020/09/11(金) 17:26:30.94ID:rpshaWn6 考えなしにクォートしなかったから
バグが増え危険なコードになってんだろが
バグが増え危険なコードになってんだろが
107デフォルトの名無しさん
2020/09/11(金) 17:39:34.54ID:cQZtEKri ガッ
108デフォルトの名無しさん
2020/09/11(金) 17:48:50.71ID:oZv/fWa7 make組のスクツか
109デフォルトの名無しさん
2020/09/11(金) 17:53:09.84ID:JEMEP9MD ガッ
なコード書きたいただの甘えん坊だな ID:GM+a9m1V は
なコード書きたいただの甘えん坊だな ID:GM+a9m1V は
110デフォルトの名無しさん
2020/09/11(金) 18:41:08.82ID:GM+a9m1V >>108
lsでも同じ。
lsでも同じ。
111デフォルトの名無しさん
2020/09/11(金) 19:09:02.73ID:JEMEP9MD シェルスクリプト書くうえで、
command
command arg
どちらも(前にチェック無しで)書きたいなんてほとんどないだろうに。ほとんどないのはあげつらってるのはお前だけという点で明らかだな
ls で言えば
ls target
ls
結果が違うんだから目的も違う
ls ''
でエラーになる方が大体の目的にあっているだろうにとしか思えない
command
command arg
どちらも(前にチェック無しで)書きたいなんてほとんどないだろうに。ほとんどないのはあげつらってるのはお前だけという点で明らかだな
ls で言えば
ls target
ls
結果が違うんだから目的も違う
ls ''
でエラーになる方が大体の目的にあっているだろうにとしか思えない
112デフォルトの名無しさん
2020/09/11(金) 21:09:13.16ID:GJYer3nV >>92
だから、そう説明してるんだよ。わざわざ作り直したり、同じようなものを作らないのがUNIXの考え方。
だから、そう説明してるんだよ。わざわざ作り直したり、同じようなものを作らないのがUNIXの考え方。
113デフォルトの名無しさん
2020/09/11(金) 21:25:03.10ID:GM+a9m1V114デフォルトの名無しさん
2020/09/11(金) 21:30:01.59ID:xA9OFzcD そこでPlan 9 rcですよ。
引用符の種類が一つしかない。
そしてクソほど使いにくいw
引用符の種類が一つしかない。
そしてクソほど使いにくいw
115デフォルトの名無しさん
2020/09/11(金) 22:09:45.47ID:JEMEP9MD >>113
文盲と他人をあげつらってるくせにの文盲はお前じゃ
>クォートしないことにも意義がある
誰も意義がないなんて言ってないだろが
発端は
>それな。"$1" みたいにダブルクォートでくくらないといけないのは
>明らかな仕様の失敗だって言われてるし
だからな。その流れ中にクォートありだけをあげつらっている(?)のは、クォートしないことにも意義があるじゃなく読まれてもしょうがないな
文盲と他人をあげつらってるくせにの文盲はお前じゃ
>クォートしないことにも意義がある
誰も意義がないなんて言ってないだろが
発端は
>それな。"$1" みたいにダブルクォートでくくらないといけないのは
>明らかな仕様の失敗だって言われてるし
だからな。その流れ中にクォートありだけをあげつらっている(?)のは、クォートしないことにも意義があるじゃなく読まれてもしょうがないな
116デフォルトの名無しさん
2020/09/11(金) 22:26:19.12ID:JEMEP9MD 失敗だって言われてるってその例では「全く」wピンと来ないが、
今時名前の中にスペースが入っているの当たり前で、ほぼ必ずダブルクォートで囲まなければならないのがメンドくさいのは確かだな
逆(単にダブルクォート有無の動作が逆ではなく、ダブルクォート無しでもダブルクォート有りの動作、IFSで分かつなら別の表現)っていうのならわかるが、失敗というほどでもねえなとも思われる
多分、伝わってないのは、そういうことだよw
今時名前の中にスペースが入っているの当たり前で、ほぼ必ずダブルクォートで囲まなければならないのがメンドくさいのは確かだな
逆(単にダブルクォート有無の動作が逆ではなく、ダブルクォート無しでもダブルクォート有りの動作、IFSで分かつなら別の表現)っていうのならわかるが、失敗というほどでもねえなとも思われる
多分、伝わってないのは、そういうことだよw
117デフォルトの名無しさん
2020/09/11(金) 22:45:29.66ID:GM+a9m1V118デフォルトの名無しさん
2020/09/11(金) 22:54:33.23ID:JEMEP9MD119デフォルトの名無しさん
2020/09/12(土) 00:02:20.83ID:8+3Td7f1 $1と書いてるのに$1がないとみなされるのは
利点ではなく欠点
利点ではなく欠点
120デフォルトの名無しさん
2020/09/12(土) 01:27:02.50ID:cIbo/3Vm121デフォルトの名無しさん
2020/09/12(土) 01:28:06.18ID:cIbo/3Vm >>118
いや、あきらかに文盲であることがはっきりした。w
いや、あきらかに文盲であることがはっきりした。w
122デフォルトの名無しさん
2020/09/12(土) 01:28:55.85ID:Q/cMHo3Y123デフォルトの名無しさん
2020/09/12(土) 01:51:34.41ID:lVvt6egL >>121
流れに関係なく、俺の突然言い出したことを理解できないのは文盲というのなら、お前から見たら文盲なんだろな
文盲という意味(厳密な意味じゃない)を理解してないアレだと俺は思うけどな
っていうことで明らかに終わりだな、その投げやり言い放ちだけのレスでw
流れに関係なく、俺の突然言い出したことを理解できないのは文盲というのなら、お前から見たら文盲なんだろな
文盲という意味(厳密な意味じゃない)を理解してないアレだと俺は思うけどな
っていうことで明らかに終わりだな、その投げやり言い放ちだけのレスでw
124デフォルトの名無しさん
2020/09/12(土) 03:31:42.22ID:d3hRbJnw 仮にお前が賢い人間だとするじゃん
仮に相手が馬鹿な人間だとするじゃん
その場合だと争いにならないわけだから争いになってるということはその過程は合っていなかったわけだね
つまり
お前らは馬鹿だってことさ
仮に相手が馬鹿な人間だとするじゃん
その場合だと争いにならないわけだから争いになってるということはその過程は合っていなかったわけだね
つまり
お前らは馬鹿だってことさ
125デフォルトの名無しさん
2020/09/12(土) 04:17:42.56ID:wMTnI8uy >>122
コードをどう解釈するのかはシェル内部の仕様。
変数名を文字列として指定し、文字列で指定された変数の値を参照する仕組みもシェルの仕様。
これは結果的にわかりにくい表現、使ううえで間違いやすい仕様として認識されている。
UNIXはたいしたことない欠点をあとから変更する文化はない。
マイクロソフトのように次から次へ新しいものを作っては捨て、作っては捨てということはしない。
コードをどう解釈するのかはシェル内部の仕様。
変数名を文字列として指定し、文字列で指定された変数の値を参照する仕組みもシェルの仕様。
これは結果的にわかりにくい表現、使ううえで間違いやすい仕様として認識されている。
UNIXはたいしたことない欠点をあとから変更する文化はない。
マイクロソフトのように次から次へ新しいものを作っては捨て、作っては捨てということはしない。
126デフォルトの名無しさん
2020/09/12(土) 05:24:39.89ID:Q/cMHo3Y 単に互換性のために修正できないだけ
欠点は欠点。修正できない可哀想
だからPOSIXに新しい言語も追加できない
欠点は欠点。修正できない可哀想
だからPOSIXに新しい言語も追加できない
127デフォルトの名無しさん
2020/09/12(土) 05:39:35.64ID:Q/cMHo3Y > 変数名を文字列として指定し、文字列で指定された変数の値を参照する仕組み
ウソ
ウソ
128デフォルトの名無しさん
2020/09/12(土) 05:49:23.00ID:UoolulYH 行為主体(発言主体)の意思ではなく事柄の客観的事実に言及したいのであれば、「ウソ」ではなく「間違い」「事実ではない」といった言葉を用いるべし
129デフォルトの名無しさん
2020/09/12(土) 05:49:59.50ID:Q/cMHo3Y わかってていってるからウソだろう
130デフォルトの名無しさん
2020/09/12(土) 06:29:49.25ID:UoolulYH だろうおじさんでしたか...
131デフォルトの名無しさん
2020/09/12(土) 07:07:17.20ID:uZ7XE8wK 本人が否定しなければウソだということ
132デフォルトの名無しさん
2020/09/12(土) 13:09:24.18ID:wMTnI8uy >>126
そうね。でもそれで大成功をおさめているのがUNIX系。もうすべてがUNIXになりつつある。WindowsのUNIX化もとまらない。
そもそもシェルスクリプトに不満があるのなら、別のスクリプト言語を使えばいい。
そうね。でもそれで大成功をおさめているのがUNIX系。もうすべてがUNIXになりつつある。WindowsのUNIX化もとまらない。
そもそもシェルスクリプトに不満があるのなら、別のスクリプト言語を使えばいい。
133デフォルトの名無しさん
2020/09/12(土) 13:09:48.29ID:65NtGZ7l 仕事でシェルスクリプトを触りはじめたけどすぐに地雷を踏む
134デフォルトの名無しさん
2020/09/12(土) 13:23:20.82ID:6ll5lvdV macのローカルで作ったシェルをLinuxで動かしたら悲しいことになった
135デフォルトの名無しさん
2020/09/12(土) 14:00:32.63ID:Py28fth2 >>132
> そもそもシェルスクリプトに不満があるのなら、別のスクリプト言語を使えばいい。
/bin/shが他のスクリプト言語になることなんてあるんか?
最小構成で他のスクリプト言語が含まれることなんかあるんか?
POSIXが改定して別のスクリプト言語が使えるようになることなんてあるんか?
現実的にありえない話をしても意味がない
> そもそもシェルスクリプトに不満があるのなら、別のスクリプト言語を使えばいい。
/bin/shが他のスクリプト言語になることなんてあるんか?
最小構成で他のスクリプト言語が含まれることなんかあるんか?
POSIXが改定して別のスクリプト言語が使えるようになることなんてあるんか?
現実的にありえない話をしても意味がない
136デフォルトの名無しさん
2020/09/12(土) 14:01:12.85ID:Py28fth2137デフォルトの名無しさん
2020/09/12(土) 14:34:38.84ID:tj7slUn6 >>133
例えば?
例えば?
138デフォルトの名無しさん
2020/09/12(土) 14:58:47.65ID:cIbo/3Vm139デフォルトの名無しさん
2020/09/12(土) 15:02:55.76ID:WICsaeqa 自分が無知なのをごまかすためにわなと言ってる
140デフォルトの名無しさん
2020/09/12(土) 15:05:52.91ID:cIbo/3Vm141デフォルトの名無しさん
2020/09/12(土) 15:52:04.79ID:WICsaeqa 自分は良くても他人のイメージを使うときに困るだろ
posh?好きなら自分でイントールしてろw
posh?好きなら自分でイントールしてろw
142デフォルトの名無しさん
2020/09/12(土) 15:58:40.31ID:WICsaeqa >>140
そのposhとかいうのをmacにインストールしたんだが
$ cd /
posh: cd: too many arguments
で動かないんだがwww
こんなバグソフト普及するわけねーだろwww
そのposhとかいうのをmacにインストールしたんだが
$ cd /
posh: cd: too many arguments
で動かないんだがwww
こんなバグソフト普及するわけねーだろwww
143デフォルトの名無しさん
2020/09/12(土) 16:01:00.14ID:WICsaeqa poshを終了しようとして
$ exit
posh: exit: bad number
www
$ exit
posh: exit: bad number
www
144デフォルトの名無しさん
2020/09/12(土) 17:12:01.89ID:cIbo/3Vm145デフォルトの名無しさん
2020/09/12(土) 17:14:06.13ID:l+/2U9kY https://hoge1http://hoge2https://hoge3
を
https://hoge1
http://hoge2
https://hoge3
にしようと、sedやperlワンライナーで頑張ってみたけど
https://hoge1http://hoge2
https://hoge3
にしかならないです
どうやればできますか?
を
https://hoge1
http://hoge2
https://hoge3
にしようと、sedやperlワンライナーで頑張ってみたけど
https://hoge1http://hoge2
https://hoge3
にしかならないです
どうやればできますか?
146デフォルトの名無しさん
2020/09/12(土) 17:37:28.98ID:lYGfHMY4 >>144
全て同じではないから/bin/shはdashかbashしかありえない
全て同じではないから/bin/shはdashかbashしかありえない
147デフォルトの名無しさん
2020/09/12(土) 17:39:17.54ID:bxqUAjH/ PS > "https://hoge1http://hoge2https://hoge3" -split "http"| %{if($_ -ne ""){"http" + $_}}
https://hoge1
http://hoge2
https://hoge3
https://hoge1
http://hoge2
https://hoge3
148デフォルトの名無しさん
2020/09/12(土) 18:48:43.31ID:T2sfpjbr149デフォルトの名無しさん
2020/09/12(土) 22:08:36.54ID:wMTnI8uy >>135
シェルスクリプトで全部やるなんて言われたら、バークレー校出身者もびっくりだわw
シェルスクリプトで全部やるなんて言われたら、バークレー校出身者もびっくりだわw
150デフォルトの名無しさん
2020/09/12(土) 23:06:50.77ID:T2sfpjbr https://mrsh.sh/
A minimal POSIX shell
A minimal POSIX shell
151デフォルトの名無しさん
2020/09/13(日) 01:46:19.84ID:adiCUzyX152デフォルトの名無しさん
2020/09/13(日) 01:47:10.49ID:adiCUzyX >>149
今話をしてるのはシェルスクリプトでやることの話だろ
今話をしてるのはシェルスクリプトでやることの話だろ
153デフォルトの名無しさん
2020/09/13(日) 01:59:03.48ID:Z+zAoG6v よくわからないのが、シェル関数や外部プログラムを作って、呼び出せばいいんじゃないの。
シェルスクリプトの見た目がどうこうという話は不毛だよ。
シェルスクリプトの見た目がどうこうという話は不毛だよ。
154デフォルトの名無しさん
2020/09/13(日) 02:53:31.51ID:adiCUzyX シェルスクリプト(の文法)に不満がある
→別のスクリプト使えばいい。あちこちに頼んで入れてもらえ
馬鹿なの?
どこにシェルスクリプト以外のスクリプト言語が
予めインストールされている世界があるというのか
現実を見たほうがいい
→別のスクリプト使えばいい。あちこちに頼んで入れてもらえ
馬鹿なの?
どこにシェルスクリプト以外のスクリプト言語が
予めインストールされている世界があるというのか
現実を見たほうがいい
155デフォルトの名無しさん
2020/09/13(日) 04:07:42.04ID:yf/OpS3O156デフォルトの名無しさん
2020/09/13(日) 06:59:54.51ID:adiCUzyX だから他人が作ったイメージでは無理だろ
なんでもroot持ってると思うな
なんでもroot持ってると思うな
157デフォルトの名無しさん
2020/09/13(日) 08:18:10.16ID:Z+zAoG6v158デフォルトの名無しさん
2020/09/13(日) 08:30:33.36ID:723dk/Fa >>154
だからシェルスクリプト以外を使えないだろって話をしてる
だからシェルスクリプト以外を使えないだろって話をしてる
159デフォルトの名無しさん
2020/09/13(日) 08:30:53.63ID:723dk/Fa160デフォルトの名無しさん
2020/09/13(日) 10:56:17.02ID:lPS2EOvv161デフォルトの名無しさん
2020/09/13(日) 11:12:17.07ID:gk+8XYjA162デフォルトの名無しさん
2020/09/13(日) 11:14:43.75ID:lvPQUdaN >>151
え,開発途中だったら興味ないの?
え,開発途中だったら興味ないの?
163デフォルトの名無しさん
2020/09/13(日) 11:16:03.05ID:gk+8XYjA 開発断念には興味ないよw
164デフォルトの名無しさん
2020/09/13(日) 13:04:46.28ID:lPS2EOvv >>161
助かりました
助かりました
165デフォルトの名無しさん
2020/09/13(日) 14:46:18.01ID:fPwxPBWU >>164
いえいえ
いえいえ
166デフォルトの名無しさん
2020/09/13(日) 17:11:10.48ID:yiIqPN8F お前じゃない
167デフォルトの名無しさん
2020/09/13(日) 18:32:41.62ID:lvPQUdaN >>163
This project is a work in progress
This project is a work in progress
168デフォルトの名無しさん
2020/09/13(日) 18:38:01.19ID:8aNWh6BR >>167
コミット見てみ。もう飽きてる。
コミット見てみ。もう飽きてる。
169デフォルトの名無しさん
2020/09/13(日) 20:15:09.89ID:lvPQUdaN >>168
そんなことわかるなんてすごいね。
そんなことわかるなんてすごいね。
170デフォルトの名無しさん
2020/09/13(日) 20:50:53.96ID:Z+zAoG6v171デフォルトの名無しさん
2020/09/13(日) 20:53:16.41ID:qg7N5frC Ubuntuのインストールを学ぶべき。
172デフォルトの名無しさん
2020/09/13(日) 21:07:19.31ID:Z+zAoG6v Linuxをインストールしたら、Perlもデフォルトでインストールされることも知らないんだろうな。
そもそもシェルの概念がわかってないと、シェルスクリプトがシェルのスクリプトだとおそらく理解できない。
そもそもシェルの概念がわかってないと、シェルスクリプトがシェルのスクリプトだとおそらく理解できない。
173デフォルトの名無しさん
2020/09/13(日) 21:18:59.72ID:Z+zAoG6v 別にシェルからすれば、シェルスクリプトではなく、実行ファイル形式を橋渡ししてマシン語でやり取りしてもらってもかまわない。
ただし、UNIXは既存のものの組み合わせでできるのであれば作らないという思想なので、C言語でゴリゴリ作るやつは批難される。
ただし、UNIXは既存のものの組み合わせでできるのであれば作らないという思想なので、C言語でゴリゴリ作るやつは批難される。
174デフォルトの名無しさん
2020/09/13(日) 22:50:04.20ID:yf/OpS3O175デフォルトの名無しさん
2020/09/13(日) 22:53:06.96ID:yf/OpS3O176デフォルトの名無しさん
2020/09/13(日) 23:54:22.32ID:w3Y31Eld Windows10, WSL, Ubuntu 18.04 では、最初から、Python3 も入っている。
anyenv, asdf などで、Ruby, Node.js などの好きなバージョンも入れられる
file `which python`
/usr/bin/python: symbolic link to python2.7
file `which python2`
/usr/bin/python2: symbolic link to python2.7
file `which python3`
/usr/bin/python3: symbolic link to python3.6
anyenv, asdf などで、Ruby, Node.js などの好きなバージョンも入れられる
file `which python`
/usr/bin/python: symbolic link to python2.7
file `which python2`
/usr/bin/python2: symbolic link to python2.7
file `which python3`
/usr/bin/python3: symbolic link to python3.6
177デフォルトの名無しさん
2020/09/14(月) 00:00:43.38ID:8/TQSAVT178デフォルトの名無しさん
2020/09/14(月) 00:39:00.87ID:LBeWsbwt179デフォルトの名無しさん
2020/09/14(月) 00:43:01.28ID:LBeWsbwt >>177
あのさ、LinuxはUNIXをPCアーキテクチャのハード用に、初めは個人が作ったものなんだよ。
UNIXの仕様が完全にはわからなくて、Linuxは少し異なるものになってしまった。
だから、LinuxはUNIXでないと説明される。しかし、UNIXの定義はPOSIX程度しかないため、UNIXから見ればLinuxもUNIXに含めてもいいかなあレベルになる。
あのさ、LinuxはUNIXをPCアーキテクチャのハード用に、初めは個人が作ったものなんだよ。
UNIXの仕様が完全にはわからなくて、Linuxは少し異なるものになってしまった。
だから、LinuxはUNIXでないと説明される。しかし、UNIXの定義はPOSIX程度しかないため、UNIXから見ればLinuxもUNIXに含めてもいいかなあレベルになる。
180デフォルトの名無しさん
2020/09/14(月) 00:46:08.13ID:LBeWsbwt181デフォルトの名無しさん
2020/09/14(月) 01:28:26.98ID:arqUoPz9 実際に存在するLinuxの話をしましょうよw
$ docker run -it alpine
/ # perl
/bin/sh: perl: not found
/ # python
/bin/sh: python: not found
/ # pyton3
/bin/sh: pyton3: not found
/ # ruby
/bin/sh: ruby: not found
$ docker run -it alpine
/ # perl
/bin/sh: perl: not found
/ # python
/bin/sh: python: not found
/ # pyton3
/bin/sh: pyton3: not found
/ # ruby
/bin/sh: ruby: not found
182デフォルトの名無しさん
2020/09/14(月) 01:51:11.45ID:Cxw6q39C183デフォルトの名無しさん
2020/09/14(月) 01:58:31.80ID:8w1wBNml Alpine は、5MB しかない。
何も入っていない
それに、Ruby on Rails, Node.js などを入れて使うもの
何も入っていない
それに、Ruby on Rails, Node.js などを入れて使うもの
184デフォルトの名無しさん
2020/09/14(月) 02:31:04.77ID:Cxw6q39C185デフォルトの名無しさん
2020/09/14(月) 02:41:43.07ID:LBeWsbwt186デフォルトの名無しさん
2020/09/14(月) 02:43:36.81ID:LBeWsbwt コンピューターの仕組みを理解していないのにいちいち見当違いのことを書くんじゃない。
187デフォルトの名無しさん
2020/09/14(月) 09:57:03.60ID:Cxw6q39C188デフォルトの名無しさん
2020/09/14(月) 10:40:45.77ID:S/jhW9z+ Perlが入ってないLinuxがあるってこともしらんのか
189デフォルトの名無しさん
2020/09/14(月) 10:41:04.73ID:S/jhW9z+ しかも有名でよく使われてるディストリ
190デフォルトの名無しさん
2020/09/14(月) 17:25:24.86ID:LBeWsbwt 揚げ足取りは久しぶりに
191デフォルトの名無しさん
2020/09/14(月) 17:37:46.13ID:dr1ZmQsx >>178
どうしてperlかなかったら画面真っ暗で文字が打てないわけ?
どうしてperlかなかったら画面真っ暗で文字が打てないわけ?
192デフォルトの名無しさん
2020/09/15(火) 01:42:38.92ID:Yms7aROo シェルがなかったらと書いてあるだろ。
しつこいけどシェルは人間とのユーザーインタフェースだよ。
シェルがなければ人間は何もできない。
しつこいけどシェルは人間とのユーザーインタフェースだよ。
シェルがなければ人間は何もできない。
193デフォルトの名無しさん
2020/09/15(火) 01:43:33.60ID:Yms7aROo コンピューターは必ずCUIの画面があると思ってしまうのだろうか?
194デフォルトの名無しさん
2020/09/15(火) 03:10:33.47ID:0TDTec2Q 言葉遊びには意味がない。
195デフォルトの名無しさん
2020/09/15(火) 05:57:39.18ID:+pcRVQQ5 シェルはLinuxに必ずインストールされているが
Perlはインストールされてないものが実際に存在し使われている
話はこれだけだろ
Perlはインストールされてないものが実際に存在し使われている
話はこれだけだろ
196デフォルトの名無しさん
2020/09/15(火) 08:21:54.14ID:QH5y4eUt197デフォルトの名無しさん
2020/09/15(火) 11:38:13.21ID:Ru6NgLud このスレの人ってどうでもいい事になんでこんなすぐ必死になるの?
198デフォルトの名無しさん
2020/09/15(火) 13:03:13.91ID:DboEcGlM199デフォルトの名無しさん
2020/09/15(火) 13:59:53.23ID:y5g42ZKf 真面目で、相手の誤りを修正してあげたいから。
バカで、自分の誤りを認識できないから。
とか、人それぞれに理由があるやろ。
まあ、最大の理由はヒマだから。w
おまえもな。
バカで、自分の誤りを認識できないから。
とか、人それぞれに理由があるやろ。
まあ、最大の理由はヒマだから。w
おまえもな。
200デフォルトの名無しさん
2020/09/15(火) 15:48:33.27ID:Yms7aROo >>196
デフォルトというのはLinuxだったら、bashシェルがインストールされて起動するということ。PerlはLinuxの大半のインストーラが標準設定でインストールしてしまう。
デフォルトというのはLinuxだったら、bashシェルがインストールされて起動するということ。PerlはLinuxの大半のインストーラが標準設定でインストールしてしまう。
201デフォルトの名無しさん
2020/09/15(火) 16:02:10.84ID:0TDTec2Q202デフォルトの名無しさん
2020/09/15(火) 17:23:49.50ID:SdJ7XIqb >>200
bashがインストールされてない環境はあるし実際によく使われている
bashがインストールされてない環境はあるし実際によく使われている
203デフォルトの名無しさん
2020/09/15(火) 18:41:25.99ID:DboEcGlM これ何の話だっけ。
「シェルが存在せずにPerlなどが存在する環境」
と
「シェルは存在するがPerlは存在しない環境」
の比較?
いや,違うのかもしれないが,
だとするとPerlがどうとかいう話がどこから出てきたのか分からんw
「シェルが存在せずにPerlなどが存在する環境」
と
「シェルは存在するがPerlは存在しない環境」
の比較?
いや,違うのかもしれないが,
だとするとPerlがどうとかいう話がどこから出てきたのか分からんw
204デフォルトの名無しさん
2020/09/15(火) 18:52:17.80ID:SdJ7XIqb これだろ?
172 名前:デフォルトの名無しさん[] 投稿日:2020/09/13(日) 21:07:19.31 ID:Z+zAoG6v [4/5]
Linuxをインストールしたら、Perlもデフォルトでインストールされることも知らないんだろうな。
200 名前:デフォルトの名無しさん[] 投稿日:2020/09/15(火) 15:48:33.27 ID:Yms7aROo [3/3]
>>196
デフォルトというのはLinuxだったら、bashシェルがインストールされて起動するということ。
perlもbashも入ってない環境が実際にあってよく使われている
172 名前:デフォルトの名無しさん[] 投稿日:2020/09/13(日) 21:07:19.31 ID:Z+zAoG6v [4/5]
Linuxをインストールしたら、Perlもデフォルトでインストールされることも知らないんだろうな。
200 名前:デフォルトの名無しさん[] 投稿日:2020/09/15(火) 15:48:33.27 ID:Yms7aROo [3/3]
>>196
デフォルトというのはLinuxだったら、bashシェルがインストールされて起動するということ。
perlもbashも入ってない環境が実際にあってよく使われている
205デフォルトの名無しさん
2020/09/15(火) 19:01:42.43ID:1jncYIE/ 極論が好きな人が居るねぇ
root権限でのパッケージ導入を依頼するでもOS/ディストリビューションの選定提案をするでもVMを生やすでもコンテナを建てるでも何でも使える手は使って、自分の手段と環境の中で一番楽な地獄を使うのがいい
手を尽くしてもシェルスクリプト以外使えないか、手を尽くすのがダルいならそりゃそのままシェルスクリプトを使うしかないのはそれはそう
ただ現代においてシェルスクリプトしかスクリプト言語を使えない上に新規導入もできない案件が多数派だし普通だよって言われると本当?って思うしその立場に同情するまである
root権限でのパッケージ導入を依頼するでもOS/ディストリビューションの選定提案をするでもVMを生やすでもコンテナを建てるでも何でも使える手は使って、自分の手段と環境の中で一番楽な地獄を使うのがいい
手を尽くしてもシェルスクリプト以外使えないか、手を尽くすのがダルいならそりゃそのままシェルスクリプトを使うしかないのはそれはそう
ただ現代においてシェルスクリプトしかスクリプト言語を使えない上に新規導入もできない案件が多数派だし普通だよって言われると本当?って思うしその立場に同情するまである
206デフォルトの名無しさん
2020/09/15(火) 19:14:03.32ID:0TDTec2Q 最近はコンテナ系がはやって、ガチガチの最小構成も現実的やろ。
昔なら、とりあえずあれこれ入ってるし入れるのがふつうだったが。
昔なら、とりあえずあれこれ入ってるし入れるのがふつうだったが。
207デフォルトの名無しさん
2020/09/15(火) 20:21:38.62ID:DboEcGlM >>206
これ
これ
208デフォルトの名無しさん
2020/09/15(火) 20:36:21.55ID:Bkm+Im76 >>197
1つの道具しか使えない人や1つの道具への依存度の高い人は
その道具の必要性を下げる話や短所を指摘されると
無意識に自分の存在意義を否定された(攻撃された)と感じるので必死になる
特定の道具への精神的依存度の高い人たちが集まってる所ではよくあること
1つの道具しか使えない人や1つの道具への依存度の高い人は
その道具の必要性を下げる話や短所を指摘されると
無意識に自分の存在意義を否定された(攻撃された)と感じるので必死になる
特定の道具への精神的依存度の高い人たちが集まってる所ではよくあること
209デフォルトの名無しさん
2020/09/15(火) 20:40:12.28ID:d9JYg3Jf >>206
そういう時はGoで書いてもいいよね?
そういう時はGoで書いてもいいよね?
210デフォルトの名無しさん
2020/09/15(火) 20:49:49.54ID:st0X4sID コンテナ向け最小構成ならそれこそコンテナ生やせばいいじゃん…
211デフォルトの名無しさん
2020/09/15(火) 21:05:24.21ID:0TDTec2Q212デフォルトの名無しさん
2020/09/15(火) 21:06:37.35ID:0TDTec2Q213デフォルトの名無しさん
2020/09/15(火) 21:22:33.55ID:bVn8kGX2214デフォルトの名無しさん
2020/09/15(火) 21:23:36.57ID:bVn8kGX2 なんでもPython、なんでもPerl、なんでもGoっていうのは
単に勉強したくないだけなんだろうなって思ってる
単に勉強したくないだけなんだろうなって思ってる
215デフォルトの名無しさん
2020/09/15(火) 21:49:15.52ID:DboEcGlM Goがやろうとしてる「どこでも動く!,依存性最小!」って
それまさにPOSIXシェルが数十年前から実践してることなんだけどねw
それまさにPOSIXシェルが数十年前から実践してることなんだけどねw
216デフォルトの名無しさん
2020/09/15(火) 22:09:41.62ID:5uVwOM3u YouTube で有名な雑食系エンジニア・KENTA は、
初心者が進む道を、サーバー側言語のRuby → Go を王道としてる
この2つ以外は、出てこない
GUI 系は、画面の手直しなどで、工数がかさむ。
C#, dot.net などのWindows 系は、いらない。
Java などの土方系も、いらない。
Elixir, Rust は、普及へのchasm・溝を超えられなかった
言語よりも、Docker, Kubernetes, AWS などの、サーバー構築・新規案件を重視する。
上流工程・新規案件の方が、価格交渉力が強いから
初心者が進む道を、サーバー側言語のRuby → Go を王道としてる
この2つ以外は、出てこない
GUI 系は、画面の手直しなどで、工数がかさむ。
C#, dot.net などのWindows 系は、いらない。
Java などの土方系も、いらない。
Elixir, Rust は、普及へのchasm・溝を超えられなかった
言語よりも、Docker, Kubernetes, AWS などの、サーバー構築・新規案件を重視する。
上流工程・新規案件の方が、価格交渉力が強いから
217デフォルトの名無しさん
2020/09/15(火) 22:27:04.19ID:5aHfCmvT218デフォルトの名無しさん
2020/09/15(火) 23:33:10.49ID:Tmf/kgmE 「シェルスクリプトで書いていたもの」を他の言語に
置き換えることで楽になることなんてないと思っている
※最初からシェルスクリプトで書いてないものの話ではない
置き換えることで楽になることなんてないと思っている
※最初からシェルスクリプトで書いてないものの話ではない
219デフォルトの名無しさん
2020/09/16(水) 00:01:35.11ID:MNPDZagX220デフォルトの名無しさん
2020/09/16(水) 00:07:40.59ID:NJW1Qx1P 1. PythonやPerlが入ってない環境がある
2. シェルスクリプトで実現できる
3. PythonやPerl入れればいいじゃん!
4. PythonやPerlで書き直す
5. コードがシェルスクリプトよりも面倒になってる
ほとんどがこれ
シェルスクリプトで実現できることを
他の言語で書いたら余計面倒になる
面倒になるのに他の言語で書こうとするやつは
単に(効率的な)シェルスクリプトを勉強したくないだけ
2. シェルスクリプトで実現できる
3. PythonやPerl入れればいいじゃん!
4. PythonやPerlで書き直す
5. コードがシェルスクリプトよりも面倒になってる
ほとんどがこれ
シェルスクリプトで実現できることを
他の言語で書いたら余計面倒になる
面倒になるのに他の言語で書こうとするやつは
単に(効率的な)シェルスクリプトを勉強したくないだけ
221デフォルトの名無しさん
2020/09/16(水) 00:18:53.14ID:fQIibdhg はしゃいでるところに水を差して悪いけどシェルスクリプトに必要な心得ってなんですかね?
素人ながらとりあえず動く物は作れたけどifだらけのクッソ汚いコードなんで修正したい
オプションもgetopts知らずにifと[[でなんとかしてる
bashの基本は押さえたけどLinuxの常識までは網羅できてないんで
素人ながらとりあえず動く物は作れたけどifだらけのクッソ汚いコードなんで修正したい
オプションもgetopts知らずにifと[[でなんとかしてる
bashの基本は押さえたけどLinuxの常識までは網羅できてないんで
222デフォルトの名無しさん
2020/09/16(水) 00:26:37.24ID:NJW1Qx1P ifだらけだからクソ汚いってことにはならない
もしキレイなコードとやらを知ってるのであれば
それをシェルスクリプトでやればいいだけ
もしキレイなコードとやらを知ってるのであれば
それをシェルスクリプトでやればいいだけ
223デフォルトの名無しさん
2020/09/16(水) 00:40:05.89ID:BkyZoSl2224デフォルトの名無しさん
2020/09/16(水) 00:41:31.46ID:67D9s6fy ほんとに必死だね
よほどコンプレックスが強いんだろうな
シェルスクリプトに固執しないとダメな状況ってそうそうないだろうに
よほどコンプレックスが強いんだろうな
シェルスクリプトに固執しないとダメな状況ってそうそうないだろうに
225デフォルトの名無しさん
2020/09/16(水) 00:49:16.66ID:NJW1Qx1P シェルスクリプトに固執っていうか、シェルスクリプトが最善な場合に
シェルスクリプトを使うってだけだよね
シェルスクリプトを使うってだけだよね
226デフォルトの名無しさん
2020/09/16(水) 01:41:09.00ID:BkyZoSl2227デフォルトの名無しさん
2020/09/16(水) 02:44:08.53ID:0ZaEBr0v >>221
入門UNIXシェルプログラミングという名著を読めばよい。
入門UNIXシェルプログラミングという名著を読めばよい。
228デフォルトの名無しさん
2020/09/16(水) 02:45:36.69ID:0ZaEBr0v >>226
シェルスクリプトと、コマンド、外部プログラムの呼び出しはシェルスクリプトではないからな?
シェルスクリプトと、コマンド、外部プログラムの呼び出しはシェルスクリプトではないからな?
229デフォルトの名無しさん
2020/09/16(水) 02:48:58.69ID:0ZaEBr0v シェルのスクリプトだから、シェルスクリプトの構文だけの話をすると、このスレは過疎化すると思うぞ。
230デフォルトの名無しさん
2020/09/16(水) 06:01:38.56ID:NJW1Qx1P だからといって外部コマンドのオプションやら文法の話をしたって意味ない
そういうのはmanページ見ろで終わる話
そういうのはmanページ見ろで終わる話
231デフォルトの名無しさん
2020/09/16(水) 10:12:38.47ID:+0jueX8G シェルスクリプトにこだわることの是非はともかく,
このスレに住み着くのは理があるわけだけど,
一方でPythonやRubyに固執している人が
このスレに居座りつづける理由が不明。
このスレはシェルスクリプトのことを話すスレなんだから,
Perl,Python,Ruby,Goなんかにこだわってても
ストレス溜まるだけだと思うんだけど……。
しかも不毛だしw
このスレに住み着くのは理があるわけだけど,
一方でPythonやRubyに固執している人が
このスレに居座りつづける理由が不明。
このスレはシェルスクリプトのことを話すスレなんだから,
Perl,Python,Ruby,Goなんかにこだわってても
ストレス溜まるだけだと思うんだけど……。
しかも不毛だしw
232デフォルトの名無しさん
2020/09/16(水) 10:14:49.79ID:+0jueX8G >>229
過疎化してなにか問題あるか?
シェルスクリプトの構文で質問がある場合は
ageればいいだけだし,
技術系のスレは勢いがなくても一定数の閲覧があるんだから
それで全く問題ない。
もしかしてなんJとかその辺りと同じような考えで
「過疎化する」=「悪」みたいに捉えちゃってる?
過疎化してなにか問題あるか?
シェルスクリプトの構文で質問がある場合は
ageればいいだけだし,
技術系のスレは勢いがなくても一定数の閲覧があるんだから
それで全く問題ない。
もしかしてなんJとかその辺りと同じような考えで
「過疎化する」=「悪」みたいに捉えちゃってる?
233デフォルトの名無しさん
2020/09/16(水) 10:33:38.10ID:+Zum6F6u シェルスクリプトとPythonやRubyの使い方は全く違っていて
シェルスクリプトの代替にはならないんだよ
だってPythonやRuby言語がシェルになるかい?
そういうのもあるみたいだけど使わないだろ
lslの代わりにPythonやRubyの関数を使えってことだよ
やるかい?
シェススクリプトはそういう手作業の操作をスクリプトにまとめたもので
「手作業の操作」そのものであることに価値があるんだよ
シェルスクリプトの代替にはならないんだよ
だってPythonやRuby言語がシェルになるかい?
そういうのもあるみたいだけど使わないだろ
lslの代わりにPythonやRubyの関数を使えってことだよ
やるかい?
シェススクリプトはそういう手作業の操作をスクリプトにまとめたもので
「手作業の操作」そのものであることに価値があるんだよ
234デフォルトの名無しさん
2020/09/16(水) 10:34:04.05ID:+Zum6F6u × lslの代わりにPythonやRubyの関数を使えってことだよ
○ ls -alの代わりに
○ ls -alの代わりに
235デフォルトの名無しさん
2020/09/16(水) 10:40:48.87ID:2aHyKEnC シェルスクリプトを使わないほうがいいケースや使うべきでないケースを判断出来ないようなやつは技術力が低くて使えない
だからリアルでは軽んじられる
その反動がネット上でのマウンティング合戦
不毛なマウンティング合戦を繰り返すスレを見たらリアルでは相手にされない人達だと思って反面教師にしつつその技術への依存度を下げるといい
だからリアルでは軽んじられる
その反動がネット上でのマウンティング合戦
不毛なマウンティング合戦を繰り返すスレを見たらリアルでは相手にされない人達だと思って反面教師にしつつその技術への依存度を下げるといい
236デフォルトの名無しさん
2020/09/16(水) 10:44:06.38ID:BkyZoSl2 >>235
シェルスクリプトを使ったほうがいいケースや使うべきであるケースを判断出来ないようなやつは技術力が低くて使えない
だからリアルでは軽んじられる
その反動がネット上でのマウンティング合戦
不毛なマウンティング合戦を繰り返すスレを見たらリアルでは相手にされない人達だと思って反面教師にしつつその技術への依存度を下げるといい
シェルスクリプトを使ったほうがいいケースや使うべきであるケースを判断出来ないようなやつは技術力が低くて使えない
だからリアルでは軽んじられる
その反動がネット上でのマウンティング合戦
不毛なマウンティング合戦を繰り返すスレを見たらリアルでは相手にされない人達だと思って反面教師にしつつその技術への依存度を下げるといい
237デフォルトの名無しさん
2020/09/16(水) 10:52:37.21ID:MNPDZagX >>223
当然その他個別に必要な要素はDockerfileに書き出すけど、実運用でコンテナを使えるのがDockerHubやオーケストレーションツールを含めた現代コンテナ運用の強みだし革新性だと思ってるよ
なんていうか「シェルスクリプトの文法や仕様が嫌い過ぎてシェルスクリプト数行で済むものにも別の言語を導入して書こうとする1byteもシェルスクリプトを書きたくない人間」に対してシェルスクリプトの可搬性や有用性・必要性を説こうとしてる人と
「シェルスクリプトの文法や仕様でウッとなってしまう嫌な部分が出てくるような複雑さ・処理対象・処理内容の、シェルスクリプトで扱うのにある意味不適な案件がある人間」に対して別の言語や環境で扱うのも選択肢だよって説こうとしてる人が争ってる感
当然その他個別に必要な要素はDockerfileに書き出すけど、実運用でコンテナを使えるのがDockerHubやオーケストレーションツールを含めた現代コンテナ運用の強みだし革新性だと思ってるよ
なんていうか「シェルスクリプトの文法や仕様が嫌い過ぎてシェルスクリプト数行で済むものにも別の言語を導入して書こうとする1byteもシェルスクリプトを書きたくない人間」に対してシェルスクリプトの可搬性や有用性・必要性を説こうとしてる人と
「シェルスクリプトの文法や仕様でウッとなってしまう嫌な部分が出てくるような複雑さ・処理対象・処理内容の、シェルスクリプトで扱うのにある意味不適な案件がある人間」に対して別の言語や環境で扱うのも選択肢だよって説こうとしてる人が争ってる感
238デフォルトの名無しさん
2020/09/16(水) 10:58:35.61ID:VpAz8kB7 格言「すべての道は、Vagrant に通ず」
Homebrew が、何十年も他の言語で書かれないわけ
つまり、システム構築運用は、できる限りRuby で書く。
シンプルなものに限って、シェルスクリプト
Homebrew が、何十年も他の言語で書かれないわけ
つまり、システム構築運用は、できる限りRuby で書く。
シンプルなものに限って、シェルスクリプト
239デフォルトの名無しさん
2020/09/16(水) 11:10:41.03ID:Uxf3IaQ5 このスレのおかげでシェルだけでWebサイト作れました!
RubyやPythonなんて学ぶ価値無いですね
RubyやPythonなんて学ぶ価値無いですね
240デフォルトの名無しさん
2020/09/16(水) 11:36:55.73ID:+0jueX8G >>235
PythonやRubyを使わないほうがいいケースや使うべきでないケースを判断出来ないようなやつは技術力が低くて使えない
だからリアルでは軽んじられる
その反動がネット上でのマウンティング合戦
不毛なマウンティング合戦を繰り返すスレを見たらリアルでは相手にされない人達だと思って反面教師にしつつその技術へ
こうですか? 分かりません!
PythonやRubyを使わないほうがいいケースや使うべきでないケースを判断出来ないようなやつは技術力が低くて使えない
だからリアルでは軽んじられる
その反動がネット上でのマウンティング合戦
不毛なマウンティング合戦を繰り返すスレを見たらリアルでは相手にされない人達だと思って反面教師にしつつその技術へ
こうですか? 分かりません!
241デフォルトの名無しさん
2020/09/16(水) 11:38:45.59ID:+0jueX8G いいかげん下らなくなってきたけど,ともかく
「シェルスクリプトにこだわるな! Python・Rubyを使え!」
という主張は同時に「Python・Rubyにこだわっている」わけなんだから,
いくら「こだわり」をバカにしてマウント取ったところで,
ものすごい勢いで自分に跳ね返ってくるだけっていうねw
「シェルスクリプトにこだわるな! Python・Rubyを使え!」
という主張は同時に「Python・Rubyにこだわっている」わけなんだから,
いくら「こだわり」をバカにしてマウント取ったところで,
ものすごい勢いで自分に跳ね返ってくるだけっていうねw
242デフォルトの名無しさん
2020/09/16(水) 11:58:19.63ID:sxVBKKDL え、両方使いなよって主張じゃないの?
そういうレスした本人じゃないから知らんけど
そういうレスした本人じゃないから知らんけど
243デフォルトの名無しさん
2020/09/16(水) 12:04:24.33ID:+Zum6F6u >>237
> 「シェルスクリプトの文法や仕様でウッとなってしまう
それってようするにオブジェクト指向言語にそまってて
関数型言語に抵抗があるやつと一緒なんだわ
パラダイムが同じならそれもわかるけど、シェルスクリプトは異なるパラダイムなので
単に異なるパラダイムのものをつけつけられないだけ
> 「シェルスクリプトの文法や仕様でウッとなってしまう
それってようするにオブジェクト指向言語にそまってて
関数型言語に抵抗があるやつと一緒なんだわ
パラダイムが同じならそれもわかるけど、シェルスクリプトは異なるパラダイムなので
単に異なるパラダイムのものをつけつけられないだけ
244デフォルトの名無しさん
2020/09/16(水) 12:09:15.41ID:+Zum6F6u >>238
HomebrewのインストーラーをRubyからBashに書き直しました!
https://itchyny.hate
nablog.com/entry/2020/03/03/100000
> 将来的にmacOSデフォルトにRubyやPythonが含まれなくなる (参考リンク)。
こうなる
HomebrewのインストーラーをRubyからBashに書き直しました!
https://itchyny.hate
nablog.com/entry/2020/03/03/100000
> 将来的にmacOSデフォルトにRubyやPythonが含まれなくなる (参考リンク)。
こうなる
245デフォルトの名無しさん
2020/09/16(水) 12:39:23.56ID:BkyZoSl2 >>237
シェルスクリプト自体に文句があるのはしゃあない(つーか、ないヤツはおらんやろw)が、全否定したらこのスレではただのあらしでしかない。
さらに、最近の一部のヤツはとくにバカっぽかったからな。
シェルスクリプト自体に文句があるのはしゃあない(つーか、ないヤツはおらんやろw)が、全否定したらこのスレではただのあらしでしかない。
さらに、最近の一部のヤツはとくにバカっぽかったからな。
246デフォルトの名無しさん
2020/09/16(水) 12:41:43.36ID:0bH7BLR9 状況に応じて使う道具を変えなよって言われてるのに、PythonやRubyを持ち出して否定したがるのはそれらを使えないことへのコンプレックスが強いから
どの技術でもその限界や短所を理解してないやつが多ければ要注意
どの技術でもその限界や短所を理解してないやつが多ければ要注意
247デフォルトの名無しさん
2020/09/16(水) 12:42:57.45ID:uLph0UBy シェススクリプトへの文句というより
シェルスクリプトが改善されないことに文句がある
何年停滞してるんだ
シェルスクリプトが改善されないことに文句がある
何年停滞してるんだ
248238
2020/09/16(水) 12:55:13.00ID:VpAz8kB7 ハーバード大学には、Ruby on Rails の授業がある。
他の言語だと、数年以上遅れて、その間にシェアを取られてしまうから
他の言語では、複雑さが並みじゃないから、簡単に作れない。
かなりの費用・期間が掛かるから、そういうプロジェクトを起ち上げられない
例えば、Ruby以外のプロジェクトで、半年過ぎると取りやめになる。
サーバー側言語では、Ruby, Go しか使われない
他の言語だと、数年以上遅れて、その間にシェアを取られてしまうから
他の言語では、複雑さが並みじゃないから、簡単に作れない。
かなりの費用・期間が掛かるから、そういうプロジェクトを起ち上げられない
例えば、Ruby以外のプロジェクトで、半年過ぎると取りやめになる。
サーバー側言語では、Ruby, Go しか使われない
249デフォルトの名無しさん
2020/09/16(水) 13:03:02.60ID:D69h0Ren PythonとかRubyみたいな簡単な言語使ってる雑魚がイキってるのマジで笑える
250238
2020/09/16(水) 13:04:02.76ID:VpAz8kB7 例えば、Ruby の数値リテラルには、_ を含めることができる
1_000_000_000 # 1000000000
0xffff_ffff # 0xffffffff
この機能がないと、下みたいに、コメントを書かないといけないし、確かめるのも大変
1000000000 # 1_000_000_000
Ruby では、こういうように、バグを減らす工夫をしている。
だから、こういうことを思いつく日本人は、smart だって言われる
1_000_000_000 # 1000000000
0xffff_ffff # 0xffffffff
この機能がないと、下みたいに、コメントを書かないといけないし、確かめるのも大変
1000000000 # 1_000_000_000
Ruby では、こういうように、バグを減らす工夫をしている。
だから、こういうことを思いつく日本人は、smart だって言われる
251デフォルトの名無しさん
2020/09/16(水) 13:11:20.74ID:MNPDZagX >>243
どこの誰の事を異なるパラダイムを受け付けられない人間としてるのか知らないけど、パラダイムが異なれば当然向き不向きがあるよね?
その上で私は
> シェルスクリプトの文法や仕様でウッとなってしまう嫌な部分が出てくるような複雑さ・処理対象・処理内容の、シェルスクリプトで扱うのにある意味不適な案件
っていう「シェルスクリプトのパラダイムに向かない作業」を話題の前提にしてる人が他の言語を提案してるんじゃないの?って話しかしてないのよ
「何らかの作業をシェルスクリプトのパラダイムに向かない作業だと感じるのは、そいつがパラダイムを受け付けないだけで不向きな作業だからではない」という可能性は間違いなくある
ただ可能性はあるけれど恒真とは思わない
私がシェルスクリプトに向いてない作業はあると思ってるから
もしあなたがシェルスクリプトに向かない作業なんてないと思ってるなら何も言わない
この先は気持ちの問題なので
どこの誰の事を異なるパラダイムを受け付けられない人間としてるのか知らないけど、パラダイムが異なれば当然向き不向きがあるよね?
その上で私は
> シェルスクリプトの文法や仕様でウッとなってしまう嫌な部分が出てくるような複雑さ・処理対象・処理内容の、シェルスクリプトで扱うのにある意味不適な案件
っていう「シェルスクリプトのパラダイムに向かない作業」を話題の前提にしてる人が他の言語を提案してるんじゃないの?って話しかしてないのよ
「何らかの作業をシェルスクリプトのパラダイムに向かない作業だと感じるのは、そいつがパラダイムを受け付けないだけで不向きな作業だからではない」という可能性は間違いなくある
ただ可能性はあるけれど恒真とは思わない
私がシェルスクリプトに向いてない作業はあると思ってるから
もしあなたがシェルスクリプトに向かない作業なんてないと思ってるなら何も言わない
この先は気持ちの問題なので
252デフォルトの名無しさん
2020/09/16(水) 14:56:05.79ID:+0jueX8G ほとんどの人が「別にPythonでもRubyでもいいけど,
そうじゃない選択肢としてシェルがある」というだけの話をしてるのに
「いまだにシェルを使ってるのは時代遅れ!」
「シェルにこだわるな!Python・Rubyを使え!(こだわり)」
となるのはなぜなのか。
あと一部の奴が「シェル最高!世の中にはこれしか要らない!」みたいな
主張をしてるのも問題。
そうじゃない選択肢としてシェルがある」というだけの話をしてるのに
「いまだにシェルを使ってるのは時代遅れ!」
「シェルにこだわるな!Python・Rubyを使え!(こだわり)」
となるのはなぜなのか。
あと一部の奴が「シェル最高!世の中にはこれしか要らない!」みたいな
主張をしてるのも問題。
253デフォルトの名無しさん
2020/09/16(水) 15:03:48.26ID:BkyZoSl2254デフォルトの名無しさん
2020/09/16(水) 15:06:08.22ID:BkyZoSl2255デフォルトの名無しさん
2020/09/16(水) 18:42:23.15ID:vxZ/INdB 技術力のある人はシェルスクリプトの短所や限界をよく理解している
Google曰く
If you are writing a script that is more than 100 lines long,
you should rewrite it in a more structured language now.
https://google.github.io/styleguide/shellguide.html#s1.2-when-to-use-shell
GitLab曰く
we recommend staying away from shell scripts as much as possible.
A language like Ruby or Python is almost always a better choice.
https://docs.gitlab.com/ee/development/shell_scripting_guide/#avoid-using-shell-scripts
Google曰く
If you are writing a script that is more than 100 lines long,
you should rewrite it in a more structured language now.
https://google.github.io/styleguide/shellguide.html#s1.2-when-to-use-shell
GitLab曰く
we recommend staying away from shell scripts as much as possible.
A language like Ruby or Python is almost always a better choice.
https://docs.gitlab.com/ee/development/shell_scripting_guide/#avoid-using-shell-scripts
256デフォルトの名無しさん
2020/09/16(水) 19:16:11.22ID:PhvdJ7XH >>255
全てに当てはまることだけど、理由が書いてないコーディング規約はクソ
全てに当てはまることだけど、理由が書いてないコーディング規約はクソ
257デフォルトの名無しさん
2020/09/16(水) 19:59:30.26ID:YseoXyv4 そういやユニケージで作られた例のシステム、ユニケージを捨てて
全部作り直したそうだな
全部作り直したそうだな
258デフォルトの名無しさん
2020/09/16(水) 20:58:02.47ID:VpAz8kB7 同じディレクトリ内にある、yarn.js ファイルを呼ぶラッパーである、yarn ファイル・コマンド
#!/bin/sh
argv0=$(echo "$0" | sed -e 's,\\,/,g')
basedir=$(dirname "$(readlink "$0" || echo "$argv0")")
case "$(uname -s)" in
Darwin) basedir="$( cd "$( dirname "$argv0" )" && pwd )";;
Linux) basedir=$(dirname "$(readlink -f "$0" || echo "$argv0")");;
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
*MSYS*) basedir=`cygpath -w "$basedir"`;;
esac
command_exists() { command -v "$1" >/dev/null 2>&1; }
if command_exists node; then
if [ "$YARN_FORCE_WINPTY" = 1 ] || command_exists winpty && test -t 1; then
winpty node "$basedir/yarn.js" "$@"
else
exec node "$basedir/yarn.js" "$@"
fi
ret=$?
# Debian, Ubuntu では、node ではなく、nodejs
elif command_exists nodejs; then
exec nodejs "$basedir/yarn.js" "$@"
ret=$?
else
>&2 echo 'Yarn requires Node.js 4.0 or higher to be installed.'
ret=1
fi
exit $ret
#!/bin/sh
argv0=$(echo "$0" | sed -e 's,\\,/,g')
basedir=$(dirname "$(readlink "$0" || echo "$argv0")")
case "$(uname -s)" in
Darwin) basedir="$( cd "$( dirname "$argv0" )" && pwd )";;
Linux) basedir=$(dirname "$(readlink -f "$0" || echo "$argv0")");;
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
*MSYS*) basedir=`cygpath -w "$basedir"`;;
esac
command_exists() { command -v "$1" >/dev/null 2>&1; }
if command_exists node; then
if [ "$YARN_FORCE_WINPTY" = 1 ] || command_exists winpty && test -t 1; then
winpty node "$basedir/yarn.js" "$@"
else
exec node "$basedir/yarn.js" "$@"
fi
ret=$?
# Debian, Ubuntu では、node ではなく、nodejs
elif command_exists nodejs; then
exec nodejs "$basedir/yarn.js" "$@"
ret=$?
else
>&2 echo 'Yarn requires Node.js 4.0 or higher to be installed.'
ret=1
fi
exit $ret
259デフォルトの名無しさん
2020/09/16(水) 20:59:44.06ID:PhvdJ7XH ユニケージはシェルスクリプトじゃないからなぁ
シェルスクリプトを使って作られたCOBOL用関数みたいなもん
ユニケージを使った途端、シェルスクリプト言語から
COBOL言語に開発スタイルが変わる
シェルスクリプトを使って作られたCOBOL用関数みたいなもん
ユニケージを使った途端、シェルスクリプト言語から
COBOL言語に開発スタイルが変わる
260デフォルトの名無しさん
2020/09/16(水) 21:09:23.04ID:PhvdJ7XH シェルスクリプトを始めた頃は
> usp Tukubaiは短期間低コストで企業システムを構築するエンタープライズ向けコマンド群。
> ユニケージ開発手法で利用するコマンド群であり、
https://uec.usp-lab.com/tukubai_man
に便利なコマンドがあるんじゃないか?って思ったんだよ
実際に見てみたら完全にゴミ
> ctail(1) ファイルの末尾n行を削って出力
例えばこれとかhead -n -10でいいじゃんとか
> count(1) 同じキーの行数をカウント
それをawkでやるのがシェルスクリプトでしょとか
そういうのばかりで、
根底に CSVならぬ、空白区切りのファイル形式を使うという前提があって
そのデータ操作するためのコマンド群でしかないことに気付いた
> usp Tukubaiは短期間低コストで企業システムを構築するエンタープライズ向けコマンド群。
> ユニケージ開発手法で利用するコマンド群であり、
https://uec.usp-lab.com/tukubai_man
に便利なコマンドがあるんじゃないか?って思ったんだよ
実際に見てみたら完全にゴミ
> ctail(1) ファイルの末尾n行を削って出力
例えばこれとかhead -n -10でいいじゃんとか
> count(1) 同じキーの行数をカウント
それをawkでやるのがシェルスクリプトでしょとか
そういうのばかりで、
根底に CSVならぬ、空白区切りのファイル形式を使うという前提があって
そのデータ操作するためのコマンド群でしかないことに気付いた
261デフォルトの名無しさん
2020/09/16(水) 21:16:09.82ID:PhvdJ7XH ユニケージのコマンドに絶望した後
クソコマンドをまともにしてやろうと思ったが
クソな理由はコマンドではなくデータ形式だったので
どうしようもないというねw
データ形式を空白区切り前提にしなければ、
通常のシェルスクリプトで使うコマンドを使うことになるが
ユニケージのコマンドとは全く異なる仕様になる
直しようがない
クソコマンドをまともにしてやろうと思ったが
クソな理由はコマンドではなくデータ形式だったので
どうしようもないというねw
データ形式を空白区切り前提にしなければ、
通常のシェルスクリプトで使うコマンドを使うことになるが
ユニケージのコマンドとは全く異なる仕様になる
直しようがない
262デフォルトの名無しさん
2020/09/16(水) 21:31:53.79ID:fQIibdhg263デフォルトの名無しさん
2020/09/16(水) 21:36:41.16ID:66kQJWEh264デフォルトの名無しさん
2020/09/16(水) 22:04:09.41ID:RIbUq78m ポイント? なんでそう思ったの?
根拠がないから具体的ではないだけ
根拠がないから具体的ではないだけ
265デフォルトの名無しさん
2020/09/16(水) 22:36:59.59ID:+0jueX8G どうでもいいんですけど,
シェルスクリプト以外の話題なら他所でやってもらえません?
もちろんシェルスクリプトの存在論も含めて。
テンプレくらい読んでくれよな〜頼むよ〜
シェルスクリプト以外の話題なら他所でやってもらえません?
もちろんシェルスクリプトの存在論も含めて。
テンプレくらい読んでくれよな〜頼むよ〜
266デフォルトの名無しさん
2020/09/16(水) 22:48:58.53ID:AIq8Iw+F 長々とどうでもいいこと書き綴ってスレ荒らしてたのお前じゃん
267デフォルトの名無しさん
2020/09/16(水) 22:56:04.59ID:BkyZoSl2 >>264
わかる人にはわかる。
わからない人のほうがその理由を内省するべき。
ただ、Bashは関数と連想配列のおかげで、それなりの構造化はできてるな。
逆に言うと、よっぽどややこしいデータ構造を組むのでなければ、シェルスクリプトでも可、ってことか。w
わかる人にはわかる。
わからない人のほうがその理由を内省するべき。
ただ、Bashは関数と連想配列のおかげで、それなりの構造化はできてるな。
逆に言うと、よっぽどややこしいデータ構造を組むのでなければ、シェルスクリプトでも可、ってことか。w
268デフォルトの名無しさん
2020/09/17(木) 05:40:41.40ID:arhYEtgP269デフォルトの名無しさん
2020/09/17(木) 06:53:22.12ID:7lkKgDUb まあ結局
「シェルスクリプトでおかしな書き方をするやつは
Pythonで書こうがRubyを使って メタプログラミング() をしようが
下手な書き方をすることに変わりない」
ってことよね。
「シェルスクリプトでおかしな書き方をするやつは
Pythonで書こうがRubyを使って メタプログラミング() をしようが
下手な書き方をすることに変わりない」
ってことよね。
270デフォルトの名無しさん
2020/09/17(木) 07:33:41.05ID:hnEDQboZ シェルスクリプトから○○言語に変更したってやつは
変更した結果どうなったのか、そのコードを見てみたいんだが
シェルスクリプトで一体何をしていたのか?
変更した結果どうなったのか、そのコードを見てみたいんだが
シェルスクリプトで一体何をしていたのか?
271デフォルトの名無しさん
2020/09/17(木) 09:41:38.06ID:v24DPghR Pythonさえやっておけばシェルスクリプトやる必要ないってことじゃないですかやったー!
272デフォルトの名無しさん
2020/09/17(木) 09:46:01.87ID:HvzSxf7x Pythonの関数(特別に作られたものではなく標準関数)を使うという前提の
シェルが作れるものなら作ってみて欲しいね
Python以外でもいいけど
シェルが作れるものなら作ってみて欲しいね
Python以外でもいいけど
273デフォルトの名無しさん
2020/09/17(木) 09:53:36.15ID:d9Y9RH6u274デフォルトの名無しさん
2020/09/17(木) 10:32:54.56ID:chlfrU3v275デフォルトの名無しさん
2020/09/17(木) 10:53:19.56ID:PVLBY2eY >>267
POSIX準拠じゃないから使えないねw
POSIX準拠じゃないから使えないねw
276デフォルトの名無しさん
2020/09/17(木) 11:04:29.11ID:d9Y9RH6u277デフォルトの名無しさん
2020/09/17(木) 11:05:00.12ID:Ebl/PrBy bash特有の機能を使おうと思った時点で
それはシェルスクリプトでやるべきことじゃないんだろうな
もちろんちゃんとシェルスクリプトのスタイル(関数型)でコーディングするのは大前提
ようするにシェルスクリプトはPOSIX準拠の機能で十分なんだよ
それはシェルスクリプトでやるべきことじゃないんだろうな
もちろんちゃんとシェルスクリプトのスタイル(関数型)でコーディングするのは大前提
ようするにシェルスクリプトはPOSIX準拠の機能で十分なんだよ
278デフォルトの名無しさん
2020/09/17(木) 11:47:37.44ID:6qIvJTFZ シェルスクリプトのスタイルは関数型!
さすがシェルスクリプターの考えることは次元が違うぜ
さすがシェルスクリプターの考えることは次元が違うぜ
279デフォルトの名無しさん
2020/09/17(木) 12:00:55.65ID:Ebl/PrBy >>278
https://qiita.com/piroor/items/77233173707a0baa6360
ところで、「流入してくるデータを加工して返却する」「ステートレスな」処理が得意で、
「内部で複雑な状態を持つ必要のある」「ステートフルな」処理が苦手だというのは、
関数型言語にも見られる特徴です。14
そう考えると、シェルスクリプトで凝った事をしようとする人があまり多くないのも頷けます。
「関数型言語は難しい」と言われる事が多いですが、他の言語とパラダイムが違う言語だと思えば、
これまでのプログラミングのパラダイムに囚われたままでは理解が進まないのも当然です。
14. 実際、関数型言語が得意な人にこの説を披露してみた所、
「関数型言語というのはストリーム型のデータを処理するという所が
キモ(なので、解釈としてそう外してはいない)」という感じの感想を頂きました。 ?
https://qiita.com/piroor/items/77233173707a0baa6360
ところで、「流入してくるデータを加工して返却する」「ステートレスな」処理が得意で、
「内部で複雑な状態を持つ必要のある」「ステートフルな」処理が苦手だというのは、
関数型言語にも見られる特徴です。14
そう考えると、シェルスクリプトで凝った事をしようとする人があまり多くないのも頷けます。
「関数型言語は難しい」と言われる事が多いですが、他の言語とパラダイムが違う言語だと思えば、
これまでのプログラミングのパラダイムに囚われたままでは理解が進まないのも当然です。
14. 実際、関数型言語が得意な人にこの説を披露してみた所、
「関数型言語というのはストリーム型のデータを処理するという所が
キモ(なので、解釈としてそう外してはいない)」という感じの感想を頂きました。 ?
280デフォルトの名無しさん
2020/09/17(木) 12:33:52.60ID:7lkKgDUb 沈黙してて草
281デフォルトの名無しさん
2020/09/17(木) 12:45:52.84ID:NHfa1bvj 関数型Elixir は、map・パイプラインばっかり
元の要素を変更しない。
新たに要素を作りながら、変換していく
元の要素を変更しない。
新たに要素を作りながら、変換していく
282デフォルトの名無しさん
2020/09/17(木) 14:19:40.85ID:HGhOp2pI283デフォルトの名無しさん
2020/09/17(木) 14:32:15.94ID:+vk10SUH 関数型言語と同様の特徴があるなら、関数型スタイルでいいだろw
関数型言語だって言ってないんだからさぁ
関数型言語だって言ってないんだからさぁ
284デフォルトの名無しさん
2020/09/17(木) 14:32:58.85ID:+vk10SUH > パイプでつなぐスタイルとでも書いとけば恥かかずに済んだのにね
パイプ以外も関数型にみ見られる特徴があるので
関数型スタイルでいいだろw
パイプ以外も関数型にみ見られる特徴があるので
関数型スタイルでいいだろw
285デフォルトの名無しさん
2020/09/17(木) 15:23:37.29ID:d9Y9RH6u >>283
ダメ。
関数型は、結果を呼び出し側に戻すことに意義がある。
処理の流れも記述の形式も、むしろ何も似ていない。
もとの文で「特徴」と言っているが、カテゴリの基準にしていい意味ではない。
シェルスクリプトは、フィルタ型とかパイプライン型とか呼べばいいのでは。
ダメ。
関数型は、結果を呼び出し側に戻すことに意義がある。
処理の流れも記述の形式も、むしろ何も似ていない。
もとの文で「特徴」と言っているが、カテゴリの基準にしていい意味ではない。
シェルスクリプトは、フィルタ型とかパイプライン型とか呼べばいいのでは。
286デフォルトの名無しさん
2020/09/17(木) 16:19:03.20ID:kAbaS/2M > 関数型は、結果を呼び出し側に戻すことに意義がある。
結果を呼び出し側に戻すなんて、どの言語でも同じじゃん
正しく説明することすらできない程度なら語らないようがいいよ
墓穴掘るだけだから
結果を呼び出し側に戻すなんて、どの言語でも同じじゃん
正しく説明することすらできない程度なら語らないようがいいよ
墓穴掘るだけだから
287デフォルトの名無しさん
2020/09/17(木) 18:06:50.53ID:7lkKgDUb その理屈で言うなら
C言語は「C言語型」だし
Elixirは「Elixir言語型」だし
F*は「F*言語型」だね。
言語使うたび,パラダイム増えるね♪
C言語は「C言語型」だし
Elixirは「Elixir言語型」だし
F*は「F*言語型」だね。
言語使うたび,パラダイム増えるね♪
288デフォルトの名無しさん
2020/09/17(木) 18:20:43.06ID:d9Y9RH6u >>286
まともに理解することすらできない程度なんだね。w
シェルスクリプトでは、関数式のように値を返すのではなく、パイプラインのように出力を流していくように考えよう、とリンク先は主張してる。
ステートレスでというほかの主張とあわせて一貫している。
うむ。
これは、たしかにわかりやすいな。
覚えておこう。
まともに理解することすらできない程度なんだね。w
シェルスクリプトでは、関数式のように値を返すのではなく、パイプラインのように出力を流していくように考えよう、とリンク先は主張してる。
ステートレスでというほかの主張とあわせて一貫している。
うむ。
これは、たしかにわかりやすいな。
覚えておこう。
289デフォルトの名無しさん
2020/09/17(木) 18:21:07.37ID:d9Y9RH6u >>287
アホなのかな?
アホなのかな?
290デフォルトの名無しさん
2020/09/17(木) 18:34:36.35ID:0NbLDZXP >>288
> シェルスクリプトでは、関数式のように値を返すのではなく、パイプラインのように出力を流していくように考えよう、とリンク先は主張してる。
> ステートレスでというほかの主張とあわせて一貫している。
まさに関数型の動作だねw
初心者でよくいるんだわ。関数を使うのが関数型だって思ってるやつ
お前がそれだな
> シェルスクリプトでは、関数式のように値を返すのではなく、パイプラインのように出力を流していくように考えよう、とリンク先は主張してる。
> ステートレスでというほかの主張とあわせて一貫している。
まさに関数型の動作だねw
初心者でよくいるんだわ。関数を使うのが関数型だって思ってるやつ
お前がそれだな
291デフォルトの名無しさん
2020/09/17(木) 19:02:35.37ID:Wtt+0SS3 シェルスクリプトは手続き型
他言語との一番の違いは処理の入力と出力が文字列に固定されていること
処理の合成を容易にした代わりに入出力に関わる部分で一般的な手続き型言語とは異なる作法が必要
その作法はプログラミングパラダイムというほど大げさなものじゃない
他言語との一番の違いは処理の入力と出力が文字列に固定されていること
処理の合成を容易にした代わりに入出力に関わる部分で一般的な手続き型言語とは異なる作法が必要
その作法はプログラミングパラダイムというほど大げさなものじゃない
292デフォルトの名無しさん
2020/09/17(木) 19:31:27.99ID:d9Y9RH6u293デフォルトの名無しさん
2020/09/17(木) 21:33:54.93ID:0NbLDZXP 言い返せないでおしまい
294デフォルトの名無しさん
2020/09/17(木) 22:32:05.15ID:d9Y9RH6u295デフォルトの名無しさん
2020/09/17(木) 22:33:18.53ID:0NbLDZXP296デフォルトの名無しさん
2020/09/17(木) 23:57:34.63ID:7k+fww17 https://wiki-dev.bash-hackers.org/syntax/basicgrammar#shell_function_definitions
$ {x}<"$x" _=${x=<(echo moo)} <&0$(cat <&"$x" >&2)
simpleとは一体
$ {x}<"$x" _=${x=<(echo moo)} <&0$(cat <&"$x" >&2)
simpleとは一体
297デフォルトの名無しさん
2020/09/18(金) 02:31:56.89ID:Mudt/vfl298デフォルトの名無しさん
2020/09/18(金) 04:54:45.60ID:5l49iFOd299デフォルトの名無しさん
2020/09/18(金) 21:42:27.80ID:JMG0ZHyH300デフォルトの名無しさん
2020/09/18(金) 21:53:19.38ID:5l49iFOd >>299
そこに書いてること読んだ?w
そこに書いてること読んだ?w
301デフォルトの名無しさん
2020/09/18(金) 22:00:45.75ID:JMG0ZHyH 読んだよ?だから聞いてるんだけど
302デフォルトの名無しさん
2020/09/19(土) 14:52:56.70ID:Uw1s41Nc シェルって普通に「副作用」があるコマンドが使われてるよね
POSIXには収録されてないとはいえ,mktempなんかはめちゃめちゃ利用されて
かつ副作用があるコマンドの一例じゃないかしら。
mktemp $$-XXXXX
とすると「ファイルが作られて」かつ「標準出力にそのファイル名が出力」される。
POSIXには収録されてないとはいえ,mktempなんかはめちゃめちゃ利用されて
かつ副作用があるコマンドの一例じゃないかしら。
mktemp $$-XXXXX
とすると「ファイルが作られて」かつ「標準出力にそのファイル名が出力」される。
303デフォルトの名無しさん
2020/09/19(土) 16:37:30.78ID:1l7cqS+f 今なら、プロセス置換やcoprocを使えば、テンポラリファイルなしにできることも少なくなさそう。
304デフォルトの名無しさん
2020/09/19(土) 17:20:44.75ID:Uw1s41Nc305デフォルトの名無しさん
2020/09/19(土) 17:25:16.15ID:VJFBPJzE 標準エラー出力を画面にそのまま表示し、同時にパイプで繋いだ先にも標準出力として出力する方法ってありませんか?
色付きのエラーを画面に表示させ、さらにその内容をgrepで判定したいです
エラー出力はそのままパイプに渡せないのでgrepにかけられません
エラー出力を標準出力に渡すとgrepで判定できますが色が消えてしまいます
色付きのエラーを画面に表示させ、さらにその内容をgrepで判定したいです
エラー出力はそのままパイプに渡せないのでgrepにかけられません
エラー出力を標準出力に渡すとgrepで判定できますが色が消えてしまいます
306デフォルトの名無しさん
2020/09/19(土) 19:23:52.66ID:1l7cqS+f307デフォルトの名無しさん
2020/09/19(土) 19:45:10.10ID:okNEuTuK308デフォルトの名無しさん
2020/09/19(土) 19:51:41.55ID:okNEuTuK 副作用がまったくないのは"純粋"関数型言語
純粋じゃない関数型言語は副作用を許容する
そして関数型スタイルという言い方なら
別に関数型言語である必要はない
https://docs.python.org/ja/3.6/howto/functional.html
> この文書では、関数型スタイルでプログラムを実装するのに
> ピッタリな Python の機能を見てまわることにしましょう。
純粋じゃない関数型言語は副作用を許容する
そして関数型スタイルという言い方なら
別に関数型言語である必要はない
https://docs.python.org/ja/3.6/howto/functional.html
> この文書では、関数型スタイルでプログラムを実装するのに
> ピッタリな Python の機能を見てまわることにしましょう。
309デフォルトの名無しさん
2020/09/19(土) 20:15:47.31ID:9OWUS6ol 初心者のうろ覚えですが、モナドというのは関係ない?
310デフォルトの名無しさん
2020/09/19(土) 20:37:42.24ID:Uw1s41Nc >>307
え,ファイル作成って副作用としてしか表現できないと思ってんの?
え,ファイル作成って副作用としてしか表現できないと思ってんの?
311デフォルトの名無しさん
2020/09/19(土) 20:41:20.32ID:okNEuTuK シェルスクリプトのファイル作成もモナドですねー
312デフォルトの名無しさん
2020/09/19(土) 20:46:22.01ID:okNEuTuK https://qastack.jp/software/369770/do-functional-programming-languages-disallow-side-effects
その意味で、関数型プログラミング言語は実際には副作用を許容します。
外部の世界に影響を及ぼし、他の関数を呼び出し、例外を発生させ、
ファイルに書き込むなどの無数の例があるからです。
その意味で、関数型プログラミング言語は実際には副作用を許容します。
外部の世界に影響を及ぼし、他の関数を呼び出し、例外を発生させ、
ファイルに書き込むなどの無数の例があるからです。
313デフォルトの名無しさん
2020/09/19(土) 20:50:25.87ID:okNEuTuK 常識で考えればわかるだろうに、関数型言語でファイルの作成ができるならそれは副作用でしか無いんだよ。
関数型言語でファイルの作成が副作用に当たらないという屁理屈を言えるなら言ってみるが良い
知ってるなら「○○で表現できる」と断定する言い方をしてみろよ
知らないから>>310のような言い方をしてごまかしている
関数型言語でファイルの作成が副作用に当たらないという屁理屈を言えるなら言ってみるが良い
知ってるなら「○○で表現できる」と断定する言い方をしてみろよ
知らないから>>310のような言い方をしてごまかしている
314デフォルトの名無しさん
2020/09/19(土) 21:22:03.60ID:L0h6VTd7 >>305
scriptで実行してからtypescriptをgrepすれば?
scriptで実行してからtypescriptをgrepすれば?
315デフォルトの名無しさん
2020/09/19(土) 21:28:34.09ID:MdHTO1xD また延々と恥さらしなレスがはじまった
>>304は責任取って
>>304は責任取って
316デフォルトの名無しさん
2020/09/19(土) 21:42:31.36ID:YcZMzNxL ステートレスなパイプでの受け渡しをする様が関数型的という表現に同意しない訳ではないが、関数が第一級オブジェクトじゃないので関数型言語ではないです
evalで取り扱うのはあくまで文字列です
まぁこれ以外にもないない尽くしだしその一点のみで関数型言語だと主張するのは無理があると思うよ
副作用云々に関しては副作用を明示する事を大事にする関数型言語が純粋関数型言語としてあるよねくらいで終わり
evalで取り扱うのはあくまで文字列です
まぁこれ以外にもないない尽くしだしその一点のみで関数型言語だと主張するのは無理があると思うよ
副作用云々に関しては副作用を明示する事を大事にする関数型言語が純粋関数型言語としてあるよねくらいで終わり
317デフォルトの名無しさん
2020/09/19(土) 21:45:34.72ID:Uw1s41Nc >>316
同意。
同意。
318デフォルトの名無しさん
2020/09/19(土) 21:50:48.10ID:okNEuTuK319デフォルトの名無しさん
2020/09/19(土) 22:21:10.97ID:YcZMzNxL >>318
スクリプト内でコマンド列組み立てて文字列で標準出力に投げて標準入力から受け取った側がexecやevalで解釈させてってやってるなら関数型スタイルだと納得するかな
まぁスタイルってぼかされたらこれまた気持ちの問題にしかならないのでここまで
あとファイル作成をモナドとして表現することは可能だけどシェルスクリプトのファイル作成はモナドとして表現されてないからモナドじゃないよ
スクリプト内でコマンド列組み立てて文字列で標準出力に投げて標準入力から受け取った側がexecやevalで解釈させてってやってるなら関数型スタイルだと納得するかな
まぁスタイルってぼかされたらこれまた気持ちの問題にしかならないのでここまで
あとファイル作成をモナドとして表現することは可能だけどシェルスクリプトのファイル作成はモナドとして表現されてないからモナドじゃないよ
320デフォルトの名無しさん
2020/09/19(土) 22:42:01.76ID:1l7cqS+f321デフォルトの名無しさん
2020/09/19(土) 22:50:47.80ID:VJFBPJzE322デフォルトの名無しさん
2020/09/19(土) 23:02:36.62ID:okNEuTuK323デフォルトの名無しさん
2020/09/19(土) 23:10:17.14ID:kGktsB/f 「なんちゃって関数型風味」を「関数型スタイル」て呼ぶなや
そんなん言い出したらなんでもありやぞ
Bash依存スクリプトはPOSIX準拠スタイル!(あくまでスタイル)
そんなん言い出したらなんでもありやぞ
Bash依存スクリプトはPOSIX準拠スタイル!(あくまでスタイル)
324デフォルトの名無しさん
2020/09/19(土) 23:11:45.95ID:kGktsB/f 標準入力/出力/エラーと常にI/Oを伴う関数型スタイル!?
325デフォルトの名無しさん
2020/09/19(土) 23:43:29.10ID:okNEuTuK > Bash依存スクリプトはPOSIX準拠スタイル!(あくまでスタイル)
何も問題ないのでは?w
> 標準入力/出力/エラーと常にI/Oを伴う関数型スタイル!?
何も問題ないのでは?w
何も問題ないのでは?w
> 標準入力/出力/エラーと常にI/Oを伴う関数型スタイル!?
何も問題ないのでは?w
326デフォルトの名無しさん
2020/09/19(土) 23:44:13.39ID:okNEuTuK C言語はオブジェクト指向言語ではないが
工夫することでオブジェクト指向スタイルのプログラミングが可能
この文章は別にどこもおかしくないしなぁ
工夫することでオブジェクト指向スタイルのプログラミングが可能
この文章は別にどこもおかしくないしなぁ
327デフォルトの名無しさん
2020/09/19(土) 23:53:41.32ID:1l7cqS+f328デフォルトの名無しさん
2020/09/20(日) 00:06:05.33ID:ylbIOeZ5 >>321
Windows 10, WSL, Ubuntu 18.04 の、.bashrc には、以下のように書いてある
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
Windows 10, WSL, Ubuntu 18.04 の、.bashrc には、以下のように書いてある
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
329デフォルトの名無しさん
2020/09/20(日) 00:24:20.42ID:hAWRhXL/ > 既存の用語を使ってないから、何の説明にもなってない
これに尽きる
これに尽きる
330デフォルトの名無しさん
2020/09/20(日) 00:27:06.89ID:VssaCpFN >>327
それな
ADTって言葉を知らずオブジェクト指向もよく理解してないから
なんとなくで「オブジェクト指向スタイル」って呼んじゃうんだよね
「オレオレ定義のオブジェクト指向」をスタイルという言葉でごまかしてわかったつもりになってるからタチが悪い
それな
ADTって言葉を知らずオブジェクト指向もよく理解してないから
なんとなくで「オブジェクト指向スタイル」って呼んじゃうんだよね
「オレオレ定義のオブジェクト指向」をスタイルという言葉でごまかしてわかったつもりになってるからタチが悪い
331デフォルトの名無しさん
2020/09/20(日) 00:29:04.06ID:Gp2XD0lD じゃあ、C言語でオブジェクト指向スタイルで設計してる時
それを他の人になんて説明するのさ?
C言語でオブジェクト指向っぽい設計にしていますっていうの?
言い方を変えただけじゃんw
それを他の人になんて説明するのさ?
C言語でオブジェクト指向っぽい設計にしていますっていうの?
言い方を変えただけじゃんw
332デフォルトの名無しさん
2020/09/20(日) 00:38:19.98ID:0m+KJQOi ファイルやディレクトリみたいな外部状態に依存するものはステートフル?
常駐型のサーバープロセスとかネットワークプロトコルに使う用語なのでシェルスクリプトに対してステートレスって言うのは少し違和感ある
常駐型のサーバープロセスとかネットワークプロトコルに使う用語なのでシェルスクリプトに対してステートレスって言うのは少し違和感ある
333デフォルトの名無しさん
2020/09/20(日) 00:39:02.21ID:mlVvoUwY >>331
ADTとは違うの?
ADTとは違うの?
334デフォルトの名無しさん
2020/09/20(日) 00:55:42.03ID:8zr1eESi335デフォルトの名無しさん
2020/09/20(日) 01:20:17.18ID:Gp2XD0lD パイプラインじゃなくてストリーミング処理と言ったほうが良いな
.NETでいえばLINQだ。LINQも関数型と言われてるな。
.NETでいえばLINQだ。LINQも関数型と言われてるな。
336デフォルトの名無しさん
2020/09/20(日) 01:21:00.25ID:I6IOvHiB ステートレスなバッチプログラムと、スステートフルなバッチプログラムって言われても違和感ない?
元記事読み返したがステートレスの使い方が定まってなくていい加減
元記事読み返したがステートレスの使い方が定まってなくていい加減
337デフォルトの名無しさん
2020/09/20(日) 01:44:09.20ID:W0vzNZm6 >>312
機械翻訳クソサイトを貼るな
機械翻訳クソサイトを貼るな
338デフォルトの名無しさん
2020/09/20(日) 02:00:41.31ID:Gp2XD0lD >>337
元の英語を読めばいいと思いますよ(笑)
元の英語を読めばいいと思いますよ(笑)
339デフォルトの名無しさん
2020/09/20(日) 02:10:49.86ID:8zr1eESi340デフォルトの名無しさん
2020/09/20(日) 02:17:23.54ID:8zr1eESi341デフォルトの名無しさん
2020/09/20(日) 02:56:29.74ID:Gp2XD0lD > LINQの関数型的要素は、高階関数なところやろ。
シェルスクリプトの関数型的要素は、コマンドを高階関数として使うところやろ
パイプラインを複数つなげられるところではない。
シェルスクリプトの関数型的要素は、コマンドを高階関数として使うところやろ
パイプラインを複数つなげられるところではない。
342デフォルトの名無しさん
2020/09/20(日) 03:59:49.76ID:0cFAZqtZ まだやってるのか、グルー言語だろに
本来もだしほとんどの場合も。コマンドを高級関数だって。なんかPOSIXな人は言語として扱ってるような感じだが。だがawkが主だったりしたり
パイプラインもストリームの一つだろうに、開く閉じる書く読むをほとんど意識しないからパイプラインの方が適切かなあ
変なとこの自説をぶってるなあ
本来もだしほとんどの場合も。コマンドを高級関数だって。なんかPOSIXな人は言語として扱ってるような感じだが。だがawkが主だったりしたり
パイプラインもストリームの一つだろうに、開く閉じる書く読むをほとんど意識しないからパイプラインの方が適切かなあ
変なとこの自説をぶってるなあ
343デフォルトの名無しさん
2020/09/20(日) 05:50:15.33ID:md9GHmZV グルー言語だったら、その他は何にも当てはまらないとでも言うつもりだろうか?
グルー言語 かつ 関数型スタイルの言語ってだけだろ
グルー言語 かつ 関数型スタイルの言語ってだけだろ
344デフォルトの名無しさん
2020/09/20(日) 05:51:02.56ID:md9GHmZV > パイプラインもストリームの一つだろうに
変なとこの自説をぶってるなあ(笑)
関数型スタイルでいいだろ
パイプラインだーって自説をぶるなよ(笑)
変なとこの自説をぶってるなあ(笑)
関数型スタイルでいいだろ
パイプラインだーって自説をぶるなよ(笑)
345デフォルトの名無しさん
2020/09/20(日) 07:53:20.99ID:qcN7Nyvi 関数型スタイルという表現すらも自説のぶん回しだと気づいていらっしゃらない……?
コマンドが高階関数なら >>319 にあるように受け取ったコマンド列文字列を適用するとかそういう扱い方をすることになるんだけど本当に意味分かってて使ってる?
もし本当なら書いてるシェルスクリプトなり任意の関数型言語のコードを見てみたいものだ
コマンドが高階関数なら >>319 にあるように受け取ったコマンド列文字列を適用するとかそういう扱い方をすることになるんだけど本当に意味分かってて使ってる?
もし本当なら書いてるシェルスクリプトなり任意の関数型言語のコードを見てみたいものだ
346デフォルトの名無しさん
2020/09/20(日) 07:55:14.75ID:gYz9ZwfZ347デフォルトの名無しさん
2020/09/20(日) 08:01:49.26ID:1uipuJDZ ろくろ回し好きそう
348デフォルトの名無しさん
2020/09/20(日) 08:39:31.58ID:OYShpTRx ストリーミング君はいろいろ詳しくは知らない漠然とした知識と他は妄想からの思い込みで言っているだけだな
初歩的なコンピュータサイエンスの知識さえ怪しい。端々にポロポロ出てるのに自覚ないからな
初歩的なコンピュータサイエンスの知識さえ怪しい。端々にポロポロ出てるのに自覚ないからな
349デフォルトの名無しさん
2020/09/20(日) 09:14:06.85ID:I6IOvHiB 高階関数すら理解してなかったかぁ
>もちろんちゃんとシェルスクリプトのスタイル(関数型)でコーディングするのは大前提
それでよくこんなこと言えたねぇ
シェルスクリプトのスタイルは関数型ww
大前提www
>もちろんちゃんとシェルスクリプトのスタイル(関数型)でコーディングするのは大前提
それでよくこんなこと言えたねぇ
シェルスクリプトのスタイルは関数型ww
大前提www
350デフォルトの名無しさん
2020/09/20(日) 11:23:53.54ID:55J7R452351デフォルトの名無しさん
2020/09/20(日) 11:24:41.19ID:55J7R452352デフォルトの名無しさん
2020/09/20(日) 11:25:23.93ID:55J7R452 自説のぶん回しにたいして、自説のぶん回しを持ってきても何の反論にもなってないし
反論せずに、wwwだけ並べても反論にはならない
反論せずに、wwwだけ並べても反論にはならない
353デフォルトの名無しさん
2020/09/20(日) 11:57:32.48ID:qcN7Nyvi354デフォルトの名無しさん
2020/09/20(日) 12:03:08.73ID:55J7R452 これが結論
https://qiita.com/piroor/items/77233173707a0baa6360
ところで、「流入してくるデータを加工して返却する」「ステートレスな」処理が得意で、
「内部で複雑な状態を持つ必要のある」「ステートフルな」処理が苦手だというのは、
関数型言語にも見られる特徴です。14
そう考えると、シェルスクリプトで凝った事をしようとする人があまり多くないのも頷けます。
「関数型言語は難しい」と言われる事が多いですが、他の言語とパラダイムが違う言語だと思えば、
これまでのプログラミングのパラダイムに囚われたままでは理解が進まないのも当然です。
14. 実際、関数型言語が得意な人にこの説を披露してみた所、
「関数型言語というのはストリーム型のデータを処理するという所が
キモ(なので、解釈としてそう外してはいない)」という感じの感想を頂きました。 ?
https://qiita.com/piroor/items/77233173707a0baa6360
ところで、「流入してくるデータを加工して返却する」「ステートレスな」処理が得意で、
「内部で複雑な状態を持つ必要のある」「ステートフルな」処理が苦手だというのは、
関数型言語にも見られる特徴です。14
そう考えると、シェルスクリプトで凝った事をしようとする人があまり多くないのも頷けます。
「関数型言語は難しい」と言われる事が多いですが、他の言語とパラダイムが違う言語だと思えば、
これまでのプログラミングのパラダイムに囚われたままでは理解が進まないのも当然です。
14. 実際、関数型言語が得意な人にこの説を披露してみた所、
「関数型言語というのはストリーム型のデータを処理するという所が
キモ(なので、解釈としてそう外してはいない)」という感じの感想を頂きました。 ?
355デフォルトの名無しさん
2020/09/20(日) 12:43:51.66ID:8zr1eESi356デフォルトの名無しさん
2020/09/20(日) 12:53:30.22ID:55J7R452357デフォルトの名無しさん
2020/09/20(日) 13:59:08.57ID:5WkIzV16 >シェルスクリプトに適しているのは〜 フィルタ的な働きが求められる種類の仕事にも適しています
ってあるじゃん、そもそもそういうものでしかなく(それを実現してるのはパイプ=シンプルなプロセス間通信というUNIXらしいシことで実現)、関数型言語として作られてもいないし発展も変化もしてない
シェルスクリプトに適しているのはフィルタ以外のは単なるジョブらしいぞ
似てる部分があるだけで関数型とするのは無理がありすぎ
単にフィルタの段々ができるってだけでいいのに、なんで関数型と言いたいのか
今までのコメからはなんかそれで一人悦に入りたいらしいけど目的がわからんな
ってあるじゃん、そもそもそういうものでしかなく(それを実現してるのはパイプ=シンプルなプロセス間通信というUNIXらしいシことで実現)、関数型言語として作られてもいないし発展も変化もしてない
シェルスクリプトに適しているのはフィルタ以外のは単なるジョブらしいぞ
似てる部分があるだけで関数型とするのは無理がありすぎ
単にフィルタの段々ができるってだけでいいのに、なんで関数型と言いたいのか
今までのコメからはなんかそれで一人悦に入りたいらしいけど目的がわからんな
358デフォルトの名無しさん
2020/09/20(日) 14:30:46.33ID:V1UjDwA2 >>357
>なんで関数型と言いたいの
これは自分が使ってる道具が古臭くないぞ、最近流行してる機能を昔から実現してるんだぞと主張することで
自分自身が古臭い老害じゃないぞ、新しい技術だって知ってるんだぞ、優秀なんだぞと暗に主張したいから
老害多めのレガシーな言語スレでよく見られる現象
>なんで関数型と言いたいの
これは自分が使ってる道具が古臭くないぞ、最近流行してる機能を昔から実現してるんだぞと主張することで
自分自身が古臭い老害じゃないぞ、新しい技術だって知ってるんだぞ、優秀なんだぞと暗に主張したいから
老害多めのレガシーな言語スレでよく見られる現象
359デフォルトの名無しさん
2020/09/20(日) 14:36:18.77ID:55J7R452 >>357
> 関数型言語として作られてもいないし
まーた「関数型言語」って妄想してる
だーれもシェルスクリプトが「関数型言語」なんていってない
「関数型スタイル」って言ってんの
何回言えばお前が戦ってる相手が
お前の妄想の中の架空の人物だって理解すんの?
> 関数型言語として作られてもいないし
まーた「関数型言語」って妄想してる
だーれもシェルスクリプトが「関数型言語」なんていってない
「関数型スタイル」って言ってんの
何回言えばお前が戦ってる相手が
お前の妄想の中の架空の人物だって理解すんの?
360デフォルトの名無しさん
2020/09/20(日) 14:36:32.46ID:5WkIzV16 シングルタスク、プログラムを一つ起動して終わって次なしかできない環境では、
command1 > foo.txt
command2 < foo.txt > bar.txt
command3 < bar.txt > foo.txt
command4 < foo.txt
とか、一時ファイルに逐次書いて読んでだろうが。もちろん、面倒くさがりが多いこの業界ではこんなのやってられない繋げてしまえと思うのはいたって普通
関数型なんて関係ない、ただそれだけだろな
前プロセスの標準出力を次(フィルタ)プロセスの標準入力に繋げるというシンプルな仕組みだからスクリプト内でも他の形態でも使えるが、ベースは同じ
確かMS-DOSはパイプもどきを実現してるが(一時ファイルに書き出してって上記のを逐一ってのを実際はやって実現してたはず)、
表記的表記的には同じようにステートレスとやらになるが MS-DOS batch fileも関数型の親戚か?
>>358
そうはっきり言わなくてもw
そんなの透けて見えてるけど、自問させてみようかなと
逆に全然優秀に見えないのはなんでだろうなあ
command1 > foo.txt
command2 < foo.txt > bar.txt
command3 < bar.txt > foo.txt
command4 < foo.txt
とか、一時ファイルに逐次書いて読んでだろうが。もちろん、面倒くさがりが多いこの業界ではこんなのやってられない繋げてしまえと思うのはいたって普通
関数型なんて関係ない、ただそれだけだろな
前プロセスの標準出力を次(フィルタ)プロセスの標準入力に繋げるというシンプルな仕組みだからスクリプト内でも他の形態でも使えるが、ベースは同じ
確かMS-DOSはパイプもどきを実現してるが(一時ファイルに書き出してって上記のを逐一ってのを実際はやって実現してたはず)、
表記的表記的には同じようにステートレスとやらになるが MS-DOS batch fileも関数型の親戚か?
>>358
そうはっきり言わなくてもw
そんなの透けて見えてるけど、自問させてみようかなと
逆に全然優秀に見えないのはなんでだろうなあ
361デフォルトの名無しさん
2020/09/20(日) 14:37:24.66ID:55J7R452362デフォルトの名無しさん
2020/09/20(日) 14:38:40.31ID:5WkIzV16363デフォルトの名無しさん
2020/09/20(日) 14:41:37.03ID:5WkIzV16364デフォルトの名無しさん
2020/09/20(日) 14:41:52.86ID:55J7R452 ふむ。あってるよな
https://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%80%E8%AA%9E
最初の関数型言語といわれてるLISPは1958年、Haskellは1990年
https://en.wikipedia.org/wiki/Bourne_shell
Bourne shellは1976年、POSIX shellはksh88として1988年
関数型が新しい技術???
https://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%80%E8%AA%9E
最初の関数型言語といわれてるLISPは1958年、Haskellは1990年
https://en.wikipedia.org/wiki/Bourne_shell
Bourne shellは1976年、POSIX shellはksh88として1988年
関数型が新しい技術???
365デフォルトの名無しさん
2020/09/20(日) 14:42:43.83ID:55J7R452 >>363
お前は世間のブームが基準なのかよw
お前は世間のブームが基準なのかよw
366デフォルトの名無しさん
2020/09/20(日) 14:47:03.43ID:5WkIzV16 自分であんなサイトを自慢げに貼って何を言っているのかな?
そんな古く周知されてるなら、あんなサイトを持ち出さなくてもいいし、一人延々と自説を唱えることはないわな
表記的表記的には同じようにステートレスとやらになるが MS-DOS batch fileも関数型の親戚か?
で結論は出ているから、もうおしまい
そんな古く周知されてるなら、あんなサイトを持ち出さなくてもいいし、一人延々と自説を唱えることはないわな
表記的表記的には同じようにステートレスとやらになるが MS-DOS batch fileも関数型の親戚か?
で結論は出ているから、もうおしまい
367デフォルトの名無しさん
2020/09/20(日) 14:47:47.68ID:55J7R452 自分であんなサイトを自慢げってなんのこと?w
ググって出てきたものを貼ってるだけなんだけど
記事の内容じゃなくて、サイトを批判してるようじゃぁ
説得力ゼロですなぁ
ググって出てきたものを貼ってるだけなんだけど
記事の内容じゃなくて、サイトを批判してるようじゃぁ
説得力ゼロですなぁ
368デフォルトの名無しさん
2020/09/20(日) 14:51:24.36ID:55J7R452 >>366
> MS-DOS batch fileも関数型の親戚か?
ぜんぜん違う
コマンドを実行してみりゃわかることだがWindowsのコマンドは対話型
実行したら「○○を処理しました。」とか標準出力に表示されたりして
ストリーミング処理できるように設計されていない
もちろん並列処理が行われないなどという点もあるがそれ以前の問題
お前はパイプラインの有無で判断しているからバッチファイルも同じだと
考えているようだが、パイプラインは関係ないと最初から言っている
> MS-DOS batch fileも関数型の親戚か?
ぜんぜん違う
コマンドを実行してみりゃわかることだがWindowsのコマンドは対話型
実行したら「○○を処理しました。」とか標準出力に表示されたりして
ストリーミング処理できるように設計されていない
もちろん並列処理が行われないなどという点もあるがそれ以前の問題
お前はパイプラインの有無で判断しているからバッチファイルも同じだと
考えているようだが、パイプラインは関係ないと最初から言っている
369デフォルトの名無しさん
2020/09/20(日) 14:56:03.76ID:5WkIzV16370デフォルトの名無しさん
2020/09/20(日) 14:59:06.57ID:55J7R452 > あなたがシェルスクリプトを関数型と根拠にしたのはパイプで繋げるだからな
別の人と勘違いしてるねw
パイプラインとか言い出したのはこいつ(>>285)
> シェルスクリプトは、フィルタ型とかパイプライン型とか呼べばいいのでは。
別の人と勘違いしてるねw
パイプラインとか言い出したのはこいつ(>>285)
> シェルスクリプトは、フィルタ型とかパイプライン型とか呼べばいいのでは。
371デフォルトの名無しさん
2020/09/20(日) 15:00:06.11ID:55J7R452 重要なのはパイプラインではなく、ストリーミングであるという所だ。
つまり1行1データになってないといけない
MS-DOSはそうなってないので全く的外れ
つまり1行1データになってないといけない
MS-DOSはそうなってないので全く的外れ
372デフォルトの名無しさん
2020/09/20(日) 15:10:50.29ID:5WkIzV16 >>354 って自分で書いたくせに何をおっしゃってるのだが
まさかググっただけ中はよく読んでない、都合の良さげの文があったのでというのか?
ちゃんと自分で改めてあのサイトの内容を見てから言いなさいな、まさしくパイプで繋げることしか書いてないから=それが関数型に似てるだけだから
なんだか知らんが俺が決める仕様なのか、関数型とやらは。誰も納得しないだろうな、その俺が決める仕様なら
まさかググっただけ中はよく読んでない、都合の良さげの文があったのでというのか?
ちゃんと自分で改めてあのサイトの内容を見てから言いなさいな、まさしくパイプで繋げることしか書いてないから=それが関数型に似てるだけだから
なんだか知らんが俺が決める仕様なのか、関数型とやらは。誰も納得しないだろうな、その俺が決める仕様なら
373デフォルトの名無しさん
2020/09/20(日) 15:29:06.24ID:55J7R452 > >>354 って自分で書いたくせに何をおっしゃってるのだが
354にはパイプラインなんて出てきてませんねぇw
> ところで、「流入してくるデータを加工して返却する」「ステートレスな」処理が得意で、
> 「内部で複雑な状態を持つ必要のある」「ステートフルな」処理が苦手だというのは、
> 関数型言語にも見られる特徴です。14
354にはパイプラインなんて出てきてませんねぇw
> ところで、「流入してくるデータを加工して返却する」「ステートレスな」処理が得意で、
> 「内部で複雑な状態を持つ必要のある」「ステートフルな」処理が苦手だというのは、
> 関数型言語にも見られる特徴です。14
374デフォルトの名無しさん
2020/09/20(日) 15:30:01.00ID:55J7R452 なんつーか、設計方針を理解してないみたいだな
「パイプ」があれば、設計が同じだと思ってしまう
その程度の理解力なんでしょうね
「パイプ」があれば、設計が同じだと思ってしまう
その程度の理解力なんでしょうね
375デフォルトの名無しさん
2020/09/20(日) 15:38:04.31ID:5WkIzV16 自分では「パイプ」とは書いてない、抽出した先で抽出した文がパイプだけのことをを指してあっても、自分は書いてないからかあ
どういう思考してるのか理解できないな
>>374
ますます自分の都合の良い捻じ曲げ方してますねえ
自分で抽出した先でそのことだけを言及して、それを自分で開陳してるなら、抽出した先でパイプで繋げることしかなら同じだろうという、いたって単純な結論になるのは当たり前
しかも「これが結論」って自分で書いてらっしゃるんですけど
ちなみに、よく読めばわかるだろうと思うのだが、あれを書いた人もそんな設計方針が必要なほどのことはシェルスクリプトで書かないよ、そう書いてあるでしょう
どういう思考してるのか理解できないな
>>374
ますます自分の都合の良い捻じ曲げ方してますねえ
自分で抽出した先でそのことだけを言及して、それを自分で開陳してるなら、抽出した先でパイプで繋げることしかなら同じだろうという、いたって単純な結論になるのは当たり前
しかも「これが結論」って自分で書いてらっしゃるんですけど
ちなみに、よく読めばわかるだろうと思うのだが、あれを書いた人もそんな設計方針が必要なほどのことはシェルスクリプトで書かないよ、そう書いてあるでしょう
376デフォルトの名無しさん
2020/09/20(日) 16:04:51.92ID:8zr1eESi ストリーミンガーには、まず「関数型スタイル」というものをあきらかにしてほしい。今さらだけど。
ところで、あのWebページのひと、なんかかわいそう。。。
シェルスクリプトには関数型的な特徴がある、ふつうのスクリプト言語とはちょっと違うような、と言っただけなのに、針小棒大にネタにされて。
ところで、あのWebページのひと、なんかかわいそう。。。
シェルスクリプトには関数型的な特徴がある、ふつうのスクリプト言語とはちょっと違うような、と言っただけなのに、針小棒大にネタにされて。
377デフォルトの名無しさん
2020/09/20(日) 17:23:12.71ID:55J7R452 > 抽出した先で抽出した文がパイプだけのことをを指してあっても
ストリーミングと書いてますが?
ストリーミングと書いてますが?
378デフォルトの名無しさん
2020/09/20(日) 17:24:34.33ID:55J7R452 シェルスクリプトには関数型的な特徴がある、
シェルスクリプトには関数型スタイルである、
同じことを言ってますねw
シェルスクリプトには関数型スタイルである、
同じことを言ってますねw
379デフォルトの名無しさん
2020/09/20(日) 18:33:36.30ID:8zr1eESi >>378
なるほど、話が通じない理由がわかった。
それが同じことだと本当に思っているなら、コンピュータのこと以前に、まず国語を勉強する必要がある。
たまたま似た特徴があるとしても、全体がかなり違っていれば、ふつうは同じものと見なさない。
「スタイル」という言葉は、一部に似た特徴がある程度のものを統合しない。
なるほど、話が通じない理由がわかった。
それが同じことだと本当に思っているなら、コンピュータのこと以前に、まず国語を勉強する必要がある。
たまたま似た特徴があるとしても、全体がかなり違っていれば、ふつうは同じものと見なさない。
「スタイル」という言葉は、一部に似た特徴がある程度のものを統合しない。
380デフォルトの名無しさん
2020/09/20(日) 18:47:56.61ID:55J7R452 > 「スタイル」という言葉は、一部に似た特徴がある程度のものを統合しない。
それはどこの誰の定義ですか?
https://docs.python.org/ja/3/howto/functional.html
この文書では、関数型スタイルでプログラムを実装するのにピッタリな Python の機能を見てまわることにしましょう。
関数型スタイルにおいては、内部状態を変えてしまったり、返り値に現れない変更をしたりといった副作用のある関数はやめるように言われています。
関数型スタイルで書いた Python プログラムはふつう、I/O や代入を完全になくすといった極端なところまでは行かずに、
関数型っぽく見えるインタフェースを提供しつつも内部では非関数型の機能を使います。
まずは関数型スタイルのプログラムを書く際の基礎となる重要な Python 機能から見ていきましょう: イテレータです。
これらの章内の多くのデザインアプローチは関数スタイルな Python コードにも適用できます。
それはどこの誰の定義ですか?
https://docs.python.org/ja/3/howto/functional.html
この文書では、関数型スタイルでプログラムを実装するのにピッタリな Python の機能を見てまわることにしましょう。
関数型スタイルにおいては、内部状態を変えてしまったり、返り値に現れない変更をしたりといった副作用のある関数はやめるように言われています。
関数型スタイルで書いた Python プログラムはふつう、I/O や代入を完全になくすといった極端なところまでは行かずに、
関数型っぽく見えるインタフェースを提供しつつも内部では非関数型の機能を使います。
まずは関数型スタイルのプログラムを書く際の基礎となる重要な Python 機能から見ていきましょう: イテレータです。
これらの章内の多くのデザインアプローチは関数スタイルな Python コードにも適用できます。
381デフォルトの名無しさん
2020/09/20(日) 19:17:05.28ID:77Xtdks6 こいつって前からいるけど致命的に日本語を読めないな
382デフォルトの名無しさん
2020/09/20(日) 19:28:01.14ID:55J7R452 とまあ、こういうふうに悪口しか言えないわけでw
383デフォルトの名無しさん
2020/09/20(日) 19:36:37.16ID:77Xtdks6 今までので何も読めてないのは確かだな。誰もお前と話が通じてないからな
>>380も読めてないお前にしか見えない何かがお前にだけ見えるだけ
>>380も読めてないお前にしか見えない何かがお前にだけ見えるだけ
384デフォルトの名無しさん
2020/09/20(日) 19:41:15.67ID:8zr1eESi >>380
その引用文はどこもおかしくない。
だが、おまえの話はおかしい。
全然関係ない文をもってくるな。
あのね、たとえ話をするね。
カタコトの日本語をしゃべる人がいたとしても、その人が日本人かどうかはわからないのね。
まったく別のところから、きれいな日本語をしゃべる人を連れてきたとしても、カタコトの日本語をしゃべる人とはあくまで他人なので、なにかがわかるわけではないのね。
そして、きれいな日本語をしゃべる人も、結局、日本人かどうかはわからないのね。
要するに、しっかり理屈でしゃべれ!
その引用文はどこもおかしくない。
だが、おまえの話はおかしい。
全然関係ない文をもってくるな。
あのね、たとえ話をするね。
カタコトの日本語をしゃべる人がいたとしても、その人が日本人かどうかはわからないのね。
まったく別のところから、きれいな日本語をしゃべる人を連れてきたとしても、カタコトの日本語をしゃべる人とはあくまで他人なので、なにかがわかるわけではないのね。
そして、きれいな日本語をしゃべる人も、結局、日本人かどうかはわからないのね。
要するに、しっかり理屈でしゃべれ!
385デフォルトの名無しさん
2020/09/20(日) 20:50:37.14ID:55J7R452 おや?またシェルスクリプトとは関係ない話で終りですか?(笑)
内容に対してのコメントはないのに、レスだけはしたいんですね。
内容に対してのコメントはないのに、レスだけはしたいんですね。
386デフォルトの名無しさん
2020/09/20(日) 21:11:26.77ID:i6/MN77q コミュニケーションに問題があるということを言うことは
コミュニケーションの場で言うことには何も問題ではない
内容以前の話。内容が無茶振りな理屈でこいつの頭の中でしか通らないからな
そしてすぐにくだらない言い逃れに走るしなw
コミュニケーションの場で言うことには何も問題ではない
内容以前の話。内容が無茶振りな理屈でこいつの頭の中でしか通らないからな
そしてすぐにくだらない言い逃れに走るしなw
387デフォルトの名無しさん
2020/09/20(日) 21:34:50.84ID:qcN7Nyvi ここが匿名の場なので仕方ないんだけど、シェルスクリプトのファイル作成はモナドって言う人やコマンドは高階関数って言う人が、シェルスクリプトは関数型ないし関数型スタイルだと言いがち(だし他には散々レスがなされているのに、そこの指摘に対して何の反論もなく、意図的にスルーしていると言われても仕方がないような立ち回りをしている)ので信用が得られていないというのはあるかもね
認めようとさせるなら、例えば「awkやsedの文字列でコマンドを渡すのが無名リテラルとしてのラムダ式に相当してる」とか、「while readによる標準入力受け取りイディオムによってスクリプトがfunctor/mappableになるのだ」とか言いくるめないと
認めようとさせるなら、例えば「awkやsedの文字列でコマンドを渡すのが無名リテラルとしてのラムダ式に相当してる」とか、「while readによる標準入力受け取りイディオムによってスクリプトがfunctor/mappableになるのだ」とか言いくるめないと
388デフォルトの名無しさん
2020/09/20(日) 21:38:30.85ID:8zr1eESi389デフォルトの名無しさん
2020/09/20(日) 21:48:53.60ID:55J7R452 だから意味不明な理由を言えばいいだろw
言い訳ばっかりだな
言い訳ばっかりだな
390デフォルトの名無しさん
2020/09/20(日) 22:04:58.48ID:GOdQy7G8 そろそろ次スレ立てましょうか?
391デフォルトの名無しさん
2020/09/20(日) 22:41:23.61ID:8zr1eESi392デフォルトの名無しさん
2020/09/20(日) 22:50:20.84ID:55J7R452 はいまたシェルスクリプトと関係ないレスをしました
393デフォルトの名無しさん
2020/09/20(日) 23:41:44.50ID:8zr1eESi394デフォルトの名無しさん
2020/09/21(月) 08:20:34.71ID:0WrTUa3Q もう少し推敲しなよお客さん
395デフォルトの名無しさん
2020/09/21(月) 11:57:46.54ID:249hXDDO >>394
シェルスクリプトと関係ないレス。w
シェルスクリプトと関係ないレス。w
396デフォルトの名無しさん
2020/09/21(月) 19:00:59.34ID:OB+sYWJW あの〜。なんでみなさん「個人の感性」を根拠にできるんですかね。
この世界では学者はそんなに重要じゃないのかな。
そんなことないと思うけど……。
この世界では学者はそんなに重要じゃないのかな。
そんなことないと思うけど……。
397デフォルトの名無しさん
2020/09/21(月) 19:36:50.17ID:dSuXtJgv 個人の感性以上でも以下でもない話題だからじゃないですかね
398デフォルトの名無しさん
2020/09/21(月) 19:55:48.18ID:GxzcHgtD 個人の感性ですかねぇ?
シェルスクリプトはreturnで数字以外返せない。返すには標準出力を使う。
つまり a=$(hoge) とか hoge | other_command とかするしか無い。
そうすると前者はサブシェルになるから変数、つまり状態を書き換えられない。
正確には書き換えられるけど破棄される。後者もサブシェルだから同様。
前者はストリーミング処理ではないが、大量のデータを扱う場合は遅くなるので推奨されない
しかしこれを改善するつもりはないだろう。なぜなら大量のデータを扱う場合は後者の書き方を使えばいいからだ。
後者の書き方は関数型が得意とするストリーミング処理。
シェルスクリプトで遅くならない書き方をすると自然とストリーミング処理になり
変数が書き換わることもない。そしてパイプラインは並列処理が行われる。
ここも並列処理が得意な関数型の特徴と似ている。
これらの事実はシェルスクリプトが関数型として設計されているとみなすには十分な理由だろう。
シェルスクリプトはreturnで数字以外返せない。返すには標準出力を使う。
つまり a=$(hoge) とか hoge | other_command とかするしか無い。
そうすると前者はサブシェルになるから変数、つまり状態を書き換えられない。
正確には書き換えられるけど破棄される。後者もサブシェルだから同様。
前者はストリーミング処理ではないが、大量のデータを扱う場合は遅くなるので推奨されない
しかしこれを改善するつもりはないだろう。なぜなら大量のデータを扱う場合は後者の書き方を使えばいいからだ。
後者の書き方は関数型が得意とするストリーミング処理。
シェルスクリプトで遅くならない書き方をすると自然とストリーミング処理になり
変数が書き換わることもない。そしてパイプラインは並列処理が行われる。
ここも並列処理が得意な関数型の特徴と似ている。
これらの事実はシェルスクリプトが関数型として設計されているとみなすには十分な理由だろう。
399デフォルトの名無しさん
2020/09/21(月) 20:28:55.67ID:249hXDDO400デフォルトの名無しさん
2020/09/21(月) 20:43:06.20ID:GxzcHgtD な?ちゃんと書いた所でまともな反論が返ってこないんだもんな。
自分で「シェルスクリプトと関係ないレス。w」と言っておきながら
それをすぐ自分でやっちゃうわけだ。
そういうことを自分がしているという自覚がない証拠。
自分で「シェルスクリプトと関係ないレス。w」と言っておきながら
それをすぐ自分でやっちゃうわけだ。
そういうことを自分がしているという自覚がない証拠。
401デフォルトの名無しさん
2020/09/21(月) 20:54:42.96ID:249hXDDO402デフォルトの名無しさん
2020/09/21(月) 20:59:40.48ID:GxzcHgtD アホなことであるという根拠がないから
>>401がアホだと思ってるだけ←イマココ。そしてココで終り
>>401がアホだと思ってるだけ←イマココ。そしてココで終り
403デフォルトの名無しさん
2020/09/21(月) 21:26:24.47ID:dSuXtJgv このページで[機能の/機能する]の意でない(つまり関数型を示唆する意味での)functionalを探してみ
余裕があればshellで扱われている文字通りのfunctionとC言語のfunctionと[機能/働き]のfunctionを除く(つまり関数型言語で扱われる関数の意味を示す)functionも探してみるといい
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
まぁそもそもBourne Shellの作者がC言語の文法をALGOL68に寄せるためのマクロを書くしBourne Shellソースがそれで書かれてるくらいALGOL人間で、シェルの文法もそっちに寄ってる訳だ
cshのようにUNIX本体に使われてるC言語の影響を受けるとか、動的型の点でLispの影響を受けるならまだしも、MLの影響を受ける余地があるかなぁホントかなぁという気持ちになるよ
余裕があればshellで扱われている文字通りのfunctionとC言語のfunctionと[機能/働き]のfunctionを除く(つまり関数型言語で扱われる関数の意味を示す)functionも探してみるといい
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
まぁそもそもBourne Shellの作者がC言語の文法をALGOL68に寄せるためのマクロを書くしBourne Shellソースがそれで書かれてるくらいALGOL人間で、シェルの文法もそっちに寄ってる訳だ
cshのようにUNIX本体に使われてるC言語の影響を受けるとか、動的型の点でLispの影響を受けるならまだしも、MLの影響を受ける余地があるかなぁホントかなぁという気持ちになるよ
404デフォルトの名無しさん
2020/09/21(月) 21:41:21.38ID:psQWnHmR いや、お前こそ探してみ?
探してみといって、何になるのか?
探してみといって、何になるのか?
405デフォルトの名無しさん
2020/09/21(月) 21:41:57.64ID:dSuXtJgv 俺が読んだ限りではなかったけど君は信用しないでしょ?
406デフォルトの名無しさん
2020/09/21(月) 22:01:29.40ID:249hXDDO407デフォルトの名無しさん
2020/09/22(火) 03:08:07.81ID:bItwwpmo408デフォルトの名無しさん
2020/09/22(火) 05:40:42.36ID:jDsJ+rCA 関数型スタイルwに拘るのがさっぱりわからん
単に名称に拘ってるのか?そうでないなら、今までと違う関数型スタイルやらをコードで書いてみせれば?もちろん今までと違って読みやすいとかで
単に名称に拘ってるのか?そうでないなら、今までと違う関数型スタイルやらをコードで書いてみせれば?もちろん今までと違って読みやすいとかで
409デフォルトの名無しさん
2020/09/22(火) 11:58:28.88ID:cIkntQZr >>407
>>398が、シェルスクリプトを実行したときの特徴の一部を指摘しているのはそのとおり。事実として認められる。
今までも、そこを否定したコメはないはず。
しかし、次の文は根拠がない。論理の飛躍というか、「個人の感性」というよりも、個人の妄想。
> これらの事実はシェルスクリプトが関数型として設計されているとみなすには十分な理由だろう。
たまたま一致する特徴だけで、そうなるように「設計」されたとは言えない。
# >>403の指摘も、そこに対する疑問であろう。
副作用がもれないこと、並列動作が期待できることは、あくまで特徴。
ふつうに考えれば、別プロセスで実行する都合、そうなることは必然の結果でしかない。
因果関係を逆転させるには、別の充分な根拠が必要。
また、一般的に「スタイル」は、主でない特徴がたまたま似ているだけのもののグループを統合する言葉として使われない。
>>398が、シェルスクリプトを実行したときの特徴の一部を指摘しているのはそのとおり。事実として認められる。
今までも、そこを否定したコメはないはず。
しかし、次の文は根拠がない。論理の飛躍というか、「個人の感性」というよりも、個人の妄想。
> これらの事実はシェルスクリプトが関数型として設計されているとみなすには十分な理由だろう。
たまたま一致する特徴だけで、そうなるように「設計」されたとは言えない。
# >>403の指摘も、そこに対する疑問であろう。
副作用がもれないこと、並列動作が期待できることは、あくまで特徴。
ふつうに考えれば、別プロセスで実行する都合、そうなることは必然の結果でしかない。
因果関係を逆転させるには、別の充分な根拠が必要。
また、一般的に「スタイル」は、主でない特徴がたまたま似ているだけのもののグループを統合する言葉として使われない。
410デフォルトの名無しさん
2020/09/22(火) 13:00:12.76ID:qKy/ayU4 たぶん読めない伝わらないだろうなせっかく長文書いたのにw
411デフォルトの名無しさん
2020/09/22(火) 13:18:38.89ID:UY6+hZuP >>409
> また、一般的に「スタイル」は、主でない特徴がたまたま似ているだけのもののグループを統合する言葉として使われない。
Pythonが関数型スタイルと書かれていることとの違いは?
なぜPythonはOKでシェルスクリプトは駄目なのか
https://docs.python.org/ja/3/howto/functional.html
> この文書では、関数型スタイルでプログラムを実装するのにピッタリな Python の機能を見てまわることにしましょう。
> また、一般的に「スタイル」は、主でない特徴がたまたま似ているだけのもののグループを統合する言葉として使われない。
Pythonが関数型スタイルと書かれていることとの違いは?
なぜPythonはOKでシェルスクリプトは駄目なのか
https://docs.python.org/ja/3/howto/functional.html
> この文書では、関数型スタイルでプログラムを実装するのにピッタリな Python の機能を見てまわることにしましょう。
412デフォルトの名無しさん
2020/09/22(火) 14:22:37.92ID:cIkntQZr413デフォルトの名無しさん
2020/09/22(火) 14:23:19.49ID:cIkntQZr414デフォルトの名無しさん
2020/09/22(火) 14:45:04.78ID:KrrXHwz7 >>411
Pythonは根本的に関数がOOP的オブジェクトで自然と第一級オブジェクトなので高階関数が扱えるし、対象ページにある通りラムダ式も扱える(もっというとcallableオブジェクトもその類だが)
カリー化こそないけど部分適用も扱えるし、OOP的イテレータパターンを利用して複数の値に対する個別の適用をmap,reduce,filter,zip,product関数のように一般化した高階関数で扱える
定数名前束縛がサポートされてないのは個人的には理解に苦しむんだけどw閑話休題、集合・辞書・リスト内包表記は数学的内包に由来するだけでなく、実はモナド内包表記の具象化で(つまりこれらの内包表記は対象をモナドまで一般化した上でモナド内包表記として扱われることもある)手続きによる個別の変数や領域確保なしに目的のオブジェクトを表現できる
ジェネレータ/コルーチンそれ自身はスタックフル/スタックレス問わずステートフルなものなんだけど、わざわざ事前に領域を確保しなくても逐次計算して要求された値を返す事ができるオブジェクトとしてのイテレータを扱えるという点で先に記述した面々と相性がよく、嬉しい
Pythonは根本的に関数がOOP的オブジェクトで自然と第一級オブジェクトなので高階関数が扱えるし、対象ページにある通りラムダ式も扱える(もっというとcallableオブジェクトもその類だが)
カリー化こそないけど部分適用も扱えるし、OOP的イテレータパターンを利用して複数の値に対する個別の適用をmap,reduce,filter,zip,product関数のように一般化した高階関数で扱える
定数名前束縛がサポートされてないのは個人的には理解に苦しむんだけどw閑話休題、集合・辞書・リスト内包表記は数学的内包に由来するだけでなく、実はモナド内包表記の具象化で(つまりこれらの内包表記は対象をモナドまで一般化した上でモナド内包表記として扱われることもある)手続きによる個別の変数や領域確保なしに目的のオブジェクトを表現できる
ジェネレータ/コルーチンそれ自身はスタックフル/スタックレス問わずステートフルなものなんだけど、わざわざ事前に領域を確保しなくても逐次計算して要求された値を返す事ができるオブジェクトとしてのイテレータを扱えるという点で先に記述した面々と相性がよく、嬉しい
415デフォルトの名無しさん
2020/09/22(火) 14:47:50.51ID:6o8of7S0416デフォルトの名無しさん
2020/09/22(火) 14:48:54.36ID:6o8of7S0417デフォルトの名無しさん
2020/09/22(火) 15:34:54.52ID:KrrXHwz7 >>416
それはそれで別に良いんだ
途中で勝手に切らないで全部読んでくれ
追加で説明するとPythonはそれらの特徴から
・関数を受け取って別の関数にして返す関数(この時点では引数の受け取りと評価はしていない)
(ex.関数に必要な引数を部分的に与えて残り必要な分の引数を受け取る別の関数にして返す関数)
・関数を受け取って複数の値が纏まったiterableオブジェクトに個別に適用し、複数の値が纏まった別のiterableオブジェクトないし2引数演算子によって纏められた単一の値を返す関数
っていう関数に帰着させられるし、何よりmapのようにあくまで受け取るのはcallableとiterableでしかないし、partialのようにcallableと対象になる値でしかないという所まで一般化されてるのが重点なんだ(静的型付きの言語なら更にそれの妥当性も検証できて嬉しいんだけどPythonも実行時には最低限型やメソッドのレベルで整合性見てエラー吐いてくれるけど)
一方シェルスクリプト、そのレベルまで一般化されたコマンドはそう多くないし、自分で書く分にはむしろ1つのことを上手くやるように具体的なコマンドをゴリゴリ書くと思うんだ
扱う対象に関してシェルスクリプトだって文字列として一般化されてるじゃないか、という意見もあると思うけど、表現能力が貧弱で一緒になってしまったものと、意味表現された上でこの基準に合えば同じものとみなせるっていうのは違うよね、違わない?
それはそれで別に良いんだ
途中で勝手に切らないで全部読んでくれ
追加で説明するとPythonはそれらの特徴から
・関数を受け取って別の関数にして返す関数(この時点では引数の受け取りと評価はしていない)
(ex.関数に必要な引数を部分的に与えて残り必要な分の引数を受け取る別の関数にして返す関数)
・関数を受け取って複数の値が纏まったiterableオブジェクトに個別に適用し、複数の値が纏まった別のiterableオブジェクトないし2引数演算子によって纏められた単一の値を返す関数
っていう関数に帰着させられるし、何よりmapのようにあくまで受け取るのはcallableとiterableでしかないし、partialのようにcallableと対象になる値でしかないという所まで一般化されてるのが重点なんだ(静的型付きの言語なら更にそれの妥当性も検証できて嬉しいんだけどPythonも実行時には最低限型やメソッドのレベルで整合性見てエラー吐いてくれるけど)
一方シェルスクリプト、そのレベルまで一般化されたコマンドはそう多くないし、自分で書く分にはむしろ1つのことを上手くやるように具体的なコマンドをゴリゴリ書くと思うんだ
扱う対象に関してシェルスクリプトだって文字列として一般化されてるじゃないか、という意見もあると思うけど、表現能力が貧弱で一緒になってしまったものと、意味表現された上でこの基準に合えば同じものとみなせるっていうのは違うよね、違わない?
418デフォルトの名無しさん
2020/09/22(火) 17:48:16.01ID:cIkntQZr >>415
逆。
同じであることの理由を言うのが先。
理由もなく、全然関係ないことを持ち出してもダメ。
https://ja.wikipedia.org/wiki/%E8%A9%AD%E5%BC%81
おまえの理屈は、詭弁の話しかたのいくつかにあてはまる。
それを説明するのはさすがにイヤなので、このままであればそろそろ相手を放棄する。
ま、がんばれや。
とりあえず国語からな。
逆。
同じであることの理由を言うのが先。
理由もなく、全然関係ないことを持ち出してもダメ。
https://ja.wikipedia.org/wiki/%E8%A9%AD%E5%BC%81
おまえの理屈は、詭弁の話しかたのいくつかにあてはまる。
それを説明するのはさすがにイヤなので、このままであればそろそろ相手を放棄する。
ま、がんばれや。
とりあえず国語からな。
419デフォルトの名無しさん
2020/09/22(火) 18:17:27.25ID:J3IrN4Ey functional-styleは日本語に訳すと「関数型風」
関数型と関数型風の違いは中華料理と中華風の料理の違いと同じ
中華風と呼ぶには作り手が意図的に中華料理に寄せる必要がある
意図せず結果的に中華料理に似た特徴をもったものを中華風の料理とは言わない
それは中華っぽい(見た目の/味がする)料理
もちろんどんな料理でも中華風と主張するのは作り手の自由だが
中華風として受け入れられるかどうかは別の問題
関数型風はPythonはコミュニティに受け入れられたけど
シェルスクリプトのコミュニティには受け入れられていない(受け入れられそうにもない)
理由が知りたければ受け入れられている関数型風との違いを知る必要がある
関数型と関数型風の違いは中華料理と中華風の料理の違いと同じ
中華風と呼ぶには作り手が意図的に中華料理に寄せる必要がある
意図せず結果的に中華料理に似た特徴をもったものを中華風の料理とは言わない
それは中華っぽい(見た目の/味がする)料理
もちろんどんな料理でも中華風と主張するのは作り手の自由だが
中華風として受け入れられるかどうかは別の問題
関数型風はPythonはコミュニティに受け入れられたけど
シェルスクリプトのコミュニティには受け入れられていない(受け入れられそうにもない)
理由が知りたければ受け入れられている関数型風との違いを知る必要がある
420デフォルトの名無しさん
2020/09/22(火) 18:19:34.74ID:6o8of7S0421デフォルトの名無しさん
2020/09/22(火) 18:20:37.37ID:6o8of7S0422デフォルトの名無しさん
2020/09/22(火) 18:24:13.02ID:6o8of7S0 Pythonは関数型として作られたのではありませんね。
使う側が工夫することで関数型スタイルにできるという話です。
ハンバーグは和食ではありません。和食として作られたわけではありません。
工夫することで和風にすることができるのです。
それが和風ハンバーグです。
シェルスクリプトも関数型スタイルにできるのです。
使う側が工夫することで関数型スタイルにできるという話です。
ハンバーグは和食ではありません。和食として作られたわけではありません。
工夫することで和風にすることができるのです。
それが和風ハンバーグです。
シェルスクリプトも関数型スタイルにできるのです。
423デフォルトの名無しさん
2020/09/22(火) 18:33:53.89ID:OaSKQeOx 内容のないレス連投
424デフォルトの名無しさん
2020/09/22(火) 19:46:26.11ID:KrrXHwz7 >>421
それは読めて欲しかったな
結論だけ先に言うと「関数型言語では先に述べたような関数とデータの扱いが基本なのでそれをPythonにおいて多用する事を関数型スタイルだと述べても批判は少ないが、シェルスクリプトにおいてコマンドを関数と見立ててデータの1in1outの形態の類似性を見ても、それ以外の先の2つに見られる関数合成・部分適用・一般化された高階関数の取り扱いが多用されていない(し多用するには苦痛を伴う)ので関数型スタイルだと述べて批判が来ることが多い」
まず関数型言語っていう言葉がnot well-definedなんだ
関数が第一級オブジェクトであるとこは必要条件であって十分条件でない
一般的にPythonもC++もマルチパラダイムであって大手を振って関数型言語とは呼ばれないと思う
じゃあ関数型言語ないし関数型スタイル、関数型風他類似の名称が何を指してるのか
スタイルは言語のデザイン方針に依存せず自身の書き方で決まるだとか風は更にふわっと雰囲気だけとか細かい部分はあれども結局言語機能の方針やコミュニティのお気持ちで決まってるんだ
ただより豊かに、つまり制約を多く持たせる事には当然批判は少ないと思う
それは既存の言語を参照して帰納的に(ここお気持ちポインツ)考えられる訳で、MLとHaskell(と少なからずLisp)を見た上で出てきたのが、ラムダ式だったり関数合成であったり部分適用だったり一般化された高階関数だったり、Pythonにないものだとデフォルトイミュータブルだったりカリー化だったり静的型付けだったりHM型推論だったりパターンマッチ(正規表現のそれではない)他リッチな型機能だったりモナドだったりするんだ
(続く、長文ごめんね)
それは読めて欲しかったな
結論だけ先に言うと「関数型言語では先に述べたような関数とデータの扱いが基本なのでそれをPythonにおいて多用する事を関数型スタイルだと述べても批判は少ないが、シェルスクリプトにおいてコマンドを関数と見立ててデータの1in1outの形態の類似性を見ても、それ以外の先の2つに見られる関数合成・部分適用・一般化された高階関数の取り扱いが多用されていない(し多用するには苦痛を伴う)ので関数型スタイルだと述べて批判が来ることが多い」
まず関数型言語っていう言葉がnot well-definedなんだ
関数が第一級オブジェクトであるとこは必要条件であって十分条件でない
一般的にPythonもC++もマルチパラダイムであって大手を振って関数型言語とは呼ばれないと思う
じゃあ関数型言語ないし関数型スタイル、関数型風他類似の名称が何を指してるのか
スタイルは言語のデザイン方針に依存せず自身の書き方で決まるだとか風は更にふわっと雰囲気だけとか細かい部分はあれども結局言語機能の方針やコミュニティのお気持ちで決まってるんだ
ただより豊かに、つまり制約を多く持たせる事には当然批判は少ないと思う
それは既存の言語を参照して帰納的に(ここお気持ちポインツ)考えられる訳で、MLとHaskell(と少なからずLisp)を見た上で出てきたのが、ラムダ式だったり関数合成であったり部分適用だったり一般化された高階関数だったり、Pythonにないものだとデフォルトイミュータブルだったりカリー化だったり静的型付けだったりHM型推論だったりパターンマッチ(正規表現のそれではない)他リッチな型機能だったりモナドだったりするんだ
(続く、長文ごめんね)
425デフォルトの名無しさん
2020/09/22(火) 19:47:21.14ID:KrrXHwz7 >>424
じゃあその増えた制約のうちどれだけを持っていれば関数型風なのか、どれだけを使って書いていれば関数型スタイルなのか、全くなーんにも決まっていない
その中で君が言っている「シェルスクリプトはいい感じに書くと自然に関数型スタイルになる」というのは「1in1out形式のステートレスなインターフェース(1スクリプトだけ見た時内部的に状態を持っていたとしてもinとoutだけ見るとそれらの関係は一意に定まる)を持っている」がベースなんだと私は読んでいる
次いでコマンドを受け取るコマンドの存在と、文字列をコマンドとして解釈させる事が可能である事くらいか(この辺はむしろ反論に対するアンサーとして出てきた側面が強いが)
これと比較するとPythonがどうかというと、より豊かで多い制約を満たす関数型の要素を持っていて、それらを活用して書くことができる
その多さがどのくらいなら関数型スタイルで書けるのだと喧伝していいのか私も知った事ではないし、全人類に検証可能な必要十分な定義はない
少なくともこんだけ続くくらい批判は来てるし、私は関数を引数と戻り値で(つまりシェルスクリプトなら標準入出力で)引き回してもないのに何が関数型スタイルだという気持ちになっている
これは蛇足だけど標準入出力と引数が切り分けられてるのも実用上は理解するけど、カリー化を導入するくらいの数学や関数型の一般化してく文化とは噛み合わせが悪いなぁと思ってるよ
ね、個人の感性だし気持ちの問題でしょ?
じゃあその増えた制約のうちどれだけを持っていれば関数型風なのか、どれだけを使って書いていれば関数型スタイルなのか、全くなーんにも決まっていない
その中で君が言っている「シェルスクリプトはいい感じに書くと自然に関数型スタイルになる」というのは「1in1out形式のステートレスなインターフェース(1スクリプトだけ見た時内部的に状態を持っていたとしてもinとoutだけ見るとそれらの関係は一意に定まる)を持っている」がベースなんだと私は読んでいる
次いでコマンドを受け取るコマンドの存在と、文字列をコマンドとして解釈させる事が可能である事くらいか(この辺はむしろ反論に対するアンサーとして出てきた側面が強いが)
これと比較するとPythonがどうかというと、より豊かで多い制約を満たす関数型の要素を持っていて、それらを活用して書くことができる
その多さがどのくらいなら関数型スタイルで書けるのだと喧伝していいのか私も知った事ではないし、全人類に検証可能な必要十分な定義はない
少なくともこんだけ続くくらい批判は来てるし、私は関数を引数と戻り値で(つまりシェルスクリプトなら標準入出力で)引き回してもないのに何が関数型スタイルだという気持ちになっている
これは蛇足だけど標準入出力と引数が切り分けられてるのも実用上は理解するけど、カリー化を導入するくらいの数学や関数型の一般化してく文化とは噛み合わせが悪いなぁと思ってるよ
ね、個人の感性だし気持ちの問題でしょ?
426デフォルトの名無しさん
2020/09/22(火) 19:58:05.93ID:aoFeMTcw だから、関数型スタイルと言っていいわけですね。Pythonも関数型スタイルと言ってますからね。
427デフォルトの名無しさん
2020/09/22(火) 20:11:05.91ID:KrrXHwz7 分かってて言う分には誰が何を言ってもしゃーないしそもそも君の自由でもあるしそれでいいんじゃない?
知らんけど
知らんけど
428デフォルトの名無しさん
2020/09/22(火) 20:40:23.93ID:cIkntQZr429デフォルトの名無しさん
2020/09/22(火) 20:40:40.82ID:cIkntQZr >>427
とつぜんあきらめんな。w
とつぜんあきらめんな。w
430デフォルトの名無しさん
2020/09/22(火) 22:14:39.02ID:J3IrN4Ey >>422
>工夫することで和風にすることができるのです。
和風にするためにどういう工夫をしたの?
和風と名乗るのは自由だけど食べる側がそれを和風料理として受け入れるかどうかは別問題
シェルスクリプトを関数型風にするのにどういう工夫したの?
関数型風シェルスクリプトを謳ってるけどそれは今のところ受け入れられてないよね
なんでかな?
>工夫することで和風にすることができるのです。
和風にするためにどういう工夫をしたの?
和風と名乗るのは自由だけど食べる側がそれを和風料理として受け入れるかどうかは別問題
シェルスクリプトを関数型風にするのにどういう工夫したの?
関数型風シェルスクリプトを謳ってるけどそれは今のところ受け入れられてないよね
なんでかな?
431デフォルトの名無しさん
2020/09/22(火) 22:54:40.10ID:TWSwG1ae > シェルスクリプトを関数型風にするのにどういう工夫したの?
関数からの戻り値を標準出力への出力にした
これにより別の関数に流れるようにデータを渡せるようになった
関数からの戻り値を標準出力への出力にした
これにより別の関数に流れるようにデータを渡せるようになった
432デフォルトの名無しさん
2020/09/23(水) 01:38:09.58ID:ekwcF8Ey >>431
シェルスクリプトを語る前に、ふつうのシェルでコマンドラインを実行してこい!
シェルスクリプトを語る前に、ふつうのシェルでコマンドラインを実行してこい!
433デフォルトの名無しさん
2020/09/23(水) 02:07:45.81ID:2ZA3ZE+E 無駄だぞ、そのレスで意図してることも多分わからないだろから
434デフォルトの名無しさん
2020/09/23(水) 13:32:17.22ID:BgUeNus/ lsコマンドをシェルスクリプトの中で使う場合ってなにかある?
ファイルの列挙に関してはfindコマンドや,もっと簡単にグロブとかを使った方が
余計な書式を含まずに処理しやすいし,
ファイルの情報に関してはtestコマンドの方が一発で分かる
(例えばディレクトリかどうかはlsコマンドの場合権限欄の情報を文字列として
解析しなくてはいけない(先頭にdがあるかどうか)が,
testコマンドの場合はtest -e && test -dで完結する)
lsコマンドを使わないとできないシェルスクリプトでの処理ってなにかあるかな。
興味本位でききたい(言わずもがなだけどlsコマンドが不要!とかそういう話ではなく)。
ファイルの列挙に関してはfindコマンドや,もっと簡単にグロブとかを使った方が
余計な書式を含まずに処理しやすいし,
ファイルの情報に関してはtestコマンドの方が一発で分かる
(例えばディレクトリかどうかはlsコマンドの場合権限欄の情報を文字列として
解析しなくてはいけない(先頭にdがあるかどうか)が,
testコマンドの場合はtest -e && test -dで完結する)
lsコマンドを使わないとできないシェルスクリプトでの処理ってなにかあるかな。
興味本位でききたい(言わずもがなだけどlsコマンドが不要!とかそういう話ではなく)。
435デフォルトの名無しさん
2020/09/23(水) 13:37:39.50ID:ekwcF8Ey findの困るところ :
ディレクトリをもぐる。
ドットファイルを避けない。
ふつうに見えてるファイルだけを列挙するときはls -1がもっとも便利。
ディレクトリをもぐる。
ドットファイルを避けない。
ふつうに見えてるファイルだけを列挙するときはls -1がもっとも便利。
436デフォルトの名無しさん
2020/09/23(水) 14:50:49.40ID:vSGAtuQW シェルスクリプトの中でlsを使うメリットとしては
可読性が高くなるというのはある
findとかだとごちゃごちゃして見にくい
\が必要になることも多いし
可読性が高くなるというのはある
findとかだとごちゃごちゃして見にくい
\が必要になることも多いし
437デフォルトの名無しさん
2020/09/23(水) 16:13:40.06ID:9Qi89m1Q >>434
lsはPOSIX準拠。POSIX準拠でファイルの属性を取得する場合、lsコマンド一択となる
lsはPOSIX準拠。POSIX準拠でファイルの属性を取得する場合、lsコマンド一択となる
438デフォルトの名無しさん
2020/09/23(水) 16:14:33.84ID:9Qi89m1Q ファイルの属性とは例えばパーミッションやファイルサイズなど
これらを取得するコマンドがls
これらを取得するコマンドがls
439デフォルトの名無しさん
2020/09/23(水) 16:16:36.13ID:9Qi89m1Q > ファイルの情報に関してはtestコマンドの方が一発で分かる
testでわかるのは、自分が何をできるか?(書き込み等)だけ
他のユーザーのことはわからない
testでわかるのは、自分が何をできるか?(書き込み等)だけ
他のユーザーのことはわからない
440デフォルトの名無しさん
2020/09/23(水) 16:18:45.57ID:9Qi89m1Q .sshディレクトリは自分は読み書きできるが
他の人は読み書きできてはいけない
ということを、testコマンドでは確認することができない
他の人は読み書きできてはいけない
ということを、testコマンドでは確認することができない
441デフォルトの名無しさん
2020/09/23(水) 16:29:52.08ID:A5kzXZmA これだけの文章を纏められない奴
442デフォルトの名無しさん
2020/09/23(水) 16:40:38.03ID:BgUeNus/443デフォルトの名無しさん
2020/09/23(水) 16:43:09.16ID:BgUeNus/444デフォルトの名無しさん
2020/09/23(水) 16:47:01.90ID:ekwcF8Ey445デフォルトの名無しさん
2020/09/23(水) 16:49:53.24ID:ekwcF8Ey446デフォルトの名無しさん
2020/09/23(水) 16:53:59.75ID:YMosw178 >>440
ちなみにそれをlsを使ったスクリプトで書くとどうなるんでしょう。
ちなみにそれをlsを使ったスクリプトで書くとどうなるんでしょう。
447デフォルトの名無しさん
2020/09/23(水) 17:12:18.91ID:9Qi89m1Q448デフォルトの名無しさん
2020/09/23(水) 17:16:04.24ID:9Qi89m1Q ファイルサイズなんかもstatだとLinuxとmacでオプションが違うからな
449デフォルトの名無しさん
2020/09/23(水) 19:03:55.60ID:ORLEAcPg 自分で読み書きできるのかだったらtestの方が簡単だわな
rootで他のユーザではだったら素直にsudo使えばだしな、自分でごちゃごちゃ書く必要もなく
rootで他のユーザではだったら素直にsudo使えばだしな、自分でごちゃごちゃ書く必要もなく
450デフォルトの名無しさん
2020/09/23(水) 19:12:36.11ID:ekwcF8Ey451デフォルトの名無しさん
2020/09/23(水) 19:17:09.45ID:9Qi89m1Q >>449
testではだめな場合があるって話をしてるのに、話を元に戻すな
それからパーミッションと実際に読み書きできるかは厳密には異なる
お前が持ってきた、そのrootがその一例だな
所有者rootでパーミッションが000。パーミッションを見れば
読み書きできないが、実際にはrootで読み書きできる
testではだめな場合があるって話をしてるのに、話を元に戻すな
それからパーミッションと実際に読み書きできるかは厳密には異なる
お前が持ってきた、そのrootがその一例だな
所有者rootでパーミッションが000。パーミッションを見れば
読み書きできないが、実際にはrootで読み書きできる
452デフォルトの名無しさん
2020/09/23(水) 19:22:23.40ID:9Qi89m1Q >>450
lsの出力は(基本的なものは)POSIXで決まってるはずだがSELinuxはドットがつくんか?
SELinuxがPOSIXを歪めてるってことになるんだがそれは本当なのか?
画面でそう出力されているからって、シェルスクリプト(出力先がttyでないとき)でも同じとは限らんぞ
例えばGNUのlsはファイル名に改行などが含まれている時、
画面に表示した時はエスケープされていてこれはPOSIXの仕様を逸脱してる。
しかし出力がttyでないときはPOSIX準拠の動作をするので互換性は保たれている。
まあ本当にドットが付いていたりするなら、それを取り除けばいいだけだが
lsの出力は(基本的なものは)POSIXで決まってるはずだがSELinuxはドットがつくんか?
SELinuxがPOSIXを歪めてるってことになるんだがそれは本当なのか?
画面でそう出力されているからって、シェルスクリプト(出力先がttyでないとき)でも同じとは限らんぞ
例えばGNUのlsはファイル名に改行などが含まれている時、
画面に表示した時はエスケープされていてこれはPOSIXの仕様を逸脱してる。
しかし出力がttyでないときはPOSIX準拠の動作をするので互換性は保たれている。
まあ本当にドットが付いていたりするなら、それを取り除けばいいだけだが
453デフォルトの名無しさん
2020/09/23(水) 19:24:51.56ID:9Qi89m1Q >>450
軽くググったがドットがつくのは頭じゃなくて後ろじゃないのか?
パーミッションの後ろであれば、追加で何かをくっつけてもPOSIX的にはOK
macOSでも何かくっついてたはずだな
それもちゃんと考慮しての ????------*) アスタリスクだ
軽くググったがドットがつくのは頭じゃなくて後ろじゃないのか?
パーミッションの後ろであれば、追加で何かをくっつけてもPOSIX的にはOK
macOSでも何かくっついてたはずだな
それもちゃんと考慮しての ????------*) アスタリスクだ
454デフォルトの名無しさん
2020/09/23(水) 19:29:08.48ID:ORLEAcPg455デフォルトの名無しさん
2020/09/23(水) 19:30:24.99ID:9Qi89m1Q456デフォルトの名無しさん
2020/09/23(水) 19:31:28.98ID:9Qi89m1Q testでできることの話はもうしてないの。終わった話なの。
今はtestでできないことの話をしてるの。だから話を戻すなと言ってるの。
今はtestでできないことの話をしてるの。だから話を戻すなと言ってるの。
457デフォルトの名無しさん
2020/09/23(水) 19:36:03.39ID:ORLEAcPg458デフォルトの名無しさん
2020/09/23(水) 19:46:19.51ID:9Qi89m1Q459デフォルトの名無しさん
2020/09/23(水) 19:52:36.32ID:ORLEAcPg なに言ってるの?sshのシェルスクリプトでやってるってどのシェルスクリプト?
460デフォルトの名無しさん
2020/09/23(水) 19:55:44.26ID:9Qi89m1Q >>459
どうもお前は話が理解できないようだから
数字で答えてくれ
あるファイルが「自分以外のユーザーから読み書きできるかどうか」を
確認したいことは
1. ありえる
2. ありえない
3. 想像力がない
4. 言ってることが難しすぎてわからない(笑)
レスするのは数字だけな。それ以外の言葉はいらんから(全部言い訳としてみなす)
どうもお前は話が理解できないようだから
数字で答えてくれ
あるファイルが「自分以外のユーザーから読み書きできるかどうか」を
確認したいことは
1. ありえる
2. ありえない
3. 想像力がない
4. 言ってることが難しすぎてわからない(笑)
レスするのは数字だけな。それ以外の言葉はいらんから(全部言い訳としてみなす)
461デフォルトの名無しさん
2020/09/23(水) 20:04:40.84ID:ORLEAcPg はあ...
答えるのもアホくさいが、>>449って書いてんだから 1 に決まってるだろ
>>449、また、読めなさそうなお前のために>>457って書いてんだろに
読めればそんなアホくさい問題を出さないだろうに(わざわざそんな何行もかけてw)
実はお前のなんか知らんが偉そうなw自説はダメなはずだぞ。なんででしょう?
(sshのシェルスクリプトでやってるってどのシェルスクリプト?ってのも答えてな、そのアホな質問にこんだけ答えてやったんだからw)>>459
>sshのシェルスクリプトでやってるってどのシェルスクリプト?
なんか制限を勝手に付けたが、いつもの自分の都合の良いように反論押さえ込むだけの馬鹿な言葉なので無視
答えるのもアホくさいが、>>449って書いてんだから 1 に決まってるだろ
>>449、また、読めなさそうなお前のために>>457って書いてんだろに
読めればそんなアホくさい問題を出さないだろうに(わざわざそんな何行もかけてw)
実はお前のなんか知らんが偉そうなw自説はダメなはずだぞ。なんででしょう?
(sshのシェルスクリプトでやってるってどのシェルスクリプト?ってのも答えてな、そのアホな質問にこんだけ答えてやったんだからw)>>459
>sshのシェルスクリプトでやってるってどのシェルスクリプト?
なんか制限を勝手に付けたが、いつもの自分の都合の良いように反論押さえ込むだけの馬鹿な言葉なので無視
462デフォルトの名無しさん
2020/09/23(水) 20:09:20.35ID:ORLEAcPg ああ、
あるユーザ=管理者権限がある=sudoが使える
な
一般ユーザはそんなことする必要もないしするべきでもないから、2 な
あるユーザ=管理者権限がある=sudoが使える
な
一般ユーザはそんなことする必要もないしするべきでもないから、2 な
463デフォルトの名無しさん
2020/09/23(水) 20:16:59.78ID:9Qi89m1Q464デフォルトの名無しさん
2020/09/23(水) 20:18:16.77ID:9Qi89m1Q > 一般ユーザはそんなことする必要もないしするべきでもないから、2 な
うわーw
一般ユーザーが、自分以外はファイルにアクセスできないような
パーミッションになってるかを確認する必要はないって
いっちゃったよこいつwww
うわーw
一般ユーザーが、自分以外はファイルにアクセスできないような
パーミッションになってるかを確認する必要はないって
いっちゃったよこいつwww
465デフォルトの名無しさん
2020/09/23(水) 20:20:56.17ID:ORLEAcPg 答えたぞ。読めない読まないのは知らない
質問するのはいいが馬鹿な偉そうな素人のような態度での質問のしかたは辞めなさいw
言い訳でもなんでもいいから俺の質問にも応えてねw
sshのシェルスクリプトでやってるってどのシェルスクリプト?
実はお前のなんか知らんが偉そうなw自説はダメなはずだぞ。なんででしょう?
質問するのはいいが馬鹿な偉そうな素人のような態度での質問のしかたは辞めなさいw
言い訳でもなんでもいいから俺の質問にも応えてねw
sshのシェルスクリプトでやってるってどのシェルスクリプト?
実はお前のなんか知らんが偉そうなw自説はダメなはずだぞ。なんででしょう?
466デフォルトの名無しさん
2020/09/23(水) 20:22:26.95ID:ORLEAcPg467デフォルトの名無しさん
2020/09/23(水) 20:22:42.48ID:9Qi89m1Q > sshのシェルスクリプトでやってるってどのシェルスクリプト?
sshのシェルスクリプトでやってるなんて一言も言っていません。
自分の都合のいいように読み替えるのはやめろ
sshのシェルスクリプトでやってるなんて一言も言っていません。
自分の都合のいいように読み替えるのはやめろ
468デフォルトの名無しさん
2020/09/23(水) 20:24:26.32ID:9Qi89m1Q >>466
> 逆にある場合を具体的に言ってみてほしいな
こいつヤバイなぁw
ファイルに他人には秘密にして置かなければいけないような
パスワード等を保存したとしても、パーミッションが
問題ないかを確認したりしないって言っちゃってるよw
ドコモ口座とかこういうやつが原因なんだろうな
> 逆にある場合を具体的に言ってみてほしいな
こいつヤバイなぁw
ファイルに他人には秘密にして置かなければいけないような
パスワード等を保存したとしても、パーミッションが
問題ないかを確認したりしないって言っちゃってるよw
ドコモ口座とかこういうやつが原因なんだろうな
469デフォルトの名無しさん
2020/09/23(水) 20:31:55.84ID:ORLEAcPg >>467
なんだ
>あ、もしかしてお前、「自分以外には見れない」ことを
>(シェルスクリプトで)チェックすることはありえないと思ってんの?w
>sshがやってるんですが?
って、括弧付きでわざわざ シェルスクリプト って書いていて、続いて、sshって書いてるから、そんなのあるかと思った
sshが〜なんて、sshって別次元のある意味当たり前の話だからな
sshも作るときはパーミッションを設定するが、読み書きは読み書きできるかどうか(単なるopenできるかどうか)じゃないのかなあ、知らんけど
ともあれ、すっきりしたwから、どうも
なんだ
>あ、もしかしてお前、「自分以外には見れない」ことを
>(シェルスクリプトで)チェックすることはありえないと思ってんの?w
>sshがやってるんですが?
って、括弧付きでわざわざ シェルスクリプト って書いていて、続いて、sshって書いてるから、そんなのあるかと思った
sshが〜なんて、sshって別次元のある意味当たり前の話だからな
sshも作るときはパーミッションを設定するが、読み書きは読み書きできるかどうか(単なるopenできるかどうか)じゃないのかなあ、知らんけど
ともあれ、すっきりしたwから、どうも
470デフォルトの名無しさん
2020/09/23(水) 20:34:44.76ID:ORLEAcPg >>468
>ファイルに他人には秘密にして置かなければいけないような
>パスワード等を保存したとしても、パーミッションが
>問題ないかを確認したりしないって言っちゃってるよw
イミフすぎw
何でそれを管理者権限もない一般ユーザが他のユーザのそれをしなきゃならん??のだか?
何言ってるの??
なんか管理がむちゃくちゃなシステムを作ってそうなお前がやりそうだけどw
>ファイルに他人には秘密にして置かなければいけないような
>パスワード等を保存したとしても、パーミッションが
>問題ないかを確認したりしないって言っちゃってるよw
イミフすぎw
何でそれを管理者権限もない一般ユーザが他のユーザのそれをしなきゃならん??のだか?
何言ってるの??
なんか管理がむちゃくちゃなシステムを作ってそうなお前がやりそうだけどw
471デフォルトの名無しさん
2020/09/23(水) 20:38:37.12ID:9Qi89m1Q > 何でそれを管理者権限もない一般ユーザが他のユーザのそれをしなきゃならん??のだか?
こいつ理解力ゼロじゃねw
管理者(root)の話を持ってきたのはこいつだけど、
俺の話には管理者という登場人物は出てきていない
くり返し言うね。
「自分(=一般ユーザー)以外のユーザーから読み書きできるかどうか」を
(自分=一般ユーザーが)testでは調べることができない
この話をしていたという理解力はありますか?
こいつ理解力ゼロじゃねw
管理者(root)の話を持ってきたのはこいつだけど、
俺の話には管理者という登場人物は出てきていない
くり返し言うね。
「自分(=一般ユーザー)以外のユーザーから読み書きできるかどうか」を
(自分=一般ユーザーが)testでは調べることができない
この話をしていたという理解力はありますか?
472デフォルトの名無しさん
2020/09/23(水) 20:39:34.10ID:9Qi89m1Q もちろん俺は
「管理者権限もない一般ユーザが他のユーザのそれをしなきゃならん」
などと一言も言ってません。
こいつはいつも、自分の思い込みで発言を改ざんしています。
「管理者権限もない一般ユーザが他のユーザのそれをしなきゃならん」
などと一言も言ってません。
こいつはいつも、自分の思い込みで発言を改ざんしています。
473デフォルトの名無しさん
2020/09/23(水) 20:43:15.10ID:ORLEAcPg だから既に答えたことを質問すんなって
ちゃんと管理してる(てかいたって当たり前の)環境では、「必要ない/すんな/あり得ない」よ、当たり前に
同じ質問繰り返してばかり堂々めぐりではなくて「逆にある場合を具体的に言ってみてほしいな」に応えた方が話は進むと思うぞw
あと、悪いが、
実はお前のなんか知らんが偉そうなw自説はダメなはずだぞ。なんででしょう?
も、よろしくw
ちゃんと管理してる(てかいたって当たり前の)環境では、「必要ない/すんな/あり得ない」よ、当たり前に
同じ質問繰り返してばかり堂々めぐりではなくて「逆にある場合を具体的に言ってみてほしいな」に応えた方が話は進むと思うぞw
あと、悪いが、
実はお前のなんか知らんが偉そうなw自説はダメなはずだぞ。なんででしょう?
も、よろしくw
474デフォルトの名無しさん
2020/09/23(水) 20:43:52.75ID:9Qi89m1Q >>469
こいつには、かっこの使い方も説明しないといかんのか(呆)
丸括弧
https://kotobank.jp/word/%E4%B8%B8%E6%8B%AC%E5%BC%A7-636089
文章表記中などで用いる( )の記号。補足説明や省略可能などを表すのに用いる。
「(シェルスクリプト)」は補足説明であり省略可能なんだから
重要な言葉じゃねーんだよ。はー、こいつ日本人じゃないだろw
こいつには、かっこの使い方も説明しないといかんのか(呆)
丸括弧
https://kotobank.jp/word/%E4%B8%B8%E6%8B%AC%E5%BC%A7-636089
文章表記中などで用いる( )の記号。補足説明や省略可能などを表すのに用いる。
「(シェルスクリプト)」は補足説明であり省略可能なんだから
重要な言葉じゃねーんだよ。はー、こいつ日本人じゃないだろw
475デフォルトの名無しさん
2020/09/23(水) 20:45:12.45ID:9Qi89m1Q >>473
お前に言っておく。
自分で作ったファイルに他人には見られてはいけないパスワードなどを入れるなら
パーミッションに問題がないか必ず確認しろ
このように「自分以外が見れないことを確認する必要」はあるんだからな
お前に言っておく。
自分で作ったファイルに他人には見られてはいけないパスワードなどを入れるなら
パーミッションに問題がないか必ず確認しろ
このように「自分以外が見れないことを確認する必要」はあるんだからな
476デフォルトの名無しさん
2020/09/23(水) 20:47:29.66ID:ORLEAcPg >>474
お前はいつも指摘の仕方が異常
お前自身ががその程度なのかもしれないがという話にかならんぞ
なに当たり前のことを言っているねん
それに、逆に補足するということはそれもある意味重要ということだぞ?別にどうでもいいなら補足もしないからな
お前はいつも指摘の仕方が異常
お前自身ががその程度なのかもしれないがという話にかならんぞ
なに当たり前のことを言っているねん
それに、逆に補足するということはそれもある意味重要ということだぞ?別にどうでもいいなら補足もしないからな
477デフォルトの名無しさん
2020/09/23(水) 20:51:39.81ID:9Qi89m1Q 重要なときには ”ダブルクォートで” とか「かぎかっこ」でくくるんだよアホw
478デフォルトの名無しさん
2020/09/23(水) 20:52:38.90ID:ORLEAcPg >>475
>自分で作ったファイルに他人には見られてはいけないパスワードなどを入れるなら
パーミッションに問題がないか必ず確認しろ
なるほど、むちゃくちゃなシステムなんだな
自分では確認できない、他人になり変わらないとわからないってかw
大丈夫、お前の使ってるようなお前が作った変な環境なのは使ってない作ってないから
てか、lsで確認できる程度なら全然関係ない話だろうがっ。それも自分のではなくて他人のって話だろうが、お前のは(一般ユーザがすることではないな)
無理がありすぎな設定だな。また妄想の世界に入ってるのか
>lsで確認できる程度
ここのヒントがあります(ナゾw)
>自分で作ったファイルに他人には見られてはいけないパスワードなどを入れるなら
パーミッションに問題がないか必ず確認しろ
なるほど、むちゃくちゃなシステムなんだな
自分では確認できない、他人になり変わらないとわからないってかw
大丈夫、お前の使ってるようなお前が作った変な環境なのは使ってない作ってないから
てか、lsで確認できる程度なら全然関係ない話だろうがっ。それも自分のではなくて他人のって話だろうが、お前のは(一般ユーザがすることではないな)
無理がありすぎな設定だな。また妄想の世界に入ってるのか
>lsで確認できる程度
ここのヒントがあります(ナゾw)
479デフォルトの名無しさん
2020/09/23(水) 20:54:09.45ID:9Qi89m1Q >>478
もう「testでは自分以外が見れないことを確認することができない」って話をしてること忘れちゃったの?
もう「testでは自分以外が見れないことを確認することができない」って話をしてること忘れちゃったの?
480デフォルトの名無しさん
2020/09/23(水) 20:54:47.00ID:ORLEAcPg481デフォルトの名無しさん
2020/09/23(水) 20:56:27.40ID:9Qi89m1Q482デフォルトの名無しさん
2020/09/23(水) 21:17:39.64ID:ORLEAcPg >>479
わかった、話が通じないのは
test なんて自分で読み書きできるかどうかだけの話、それを他のユーザが読めるか確認するために使おうとする奴なんていない
ls(他)使うのは当たり前(ていうか普通コマンドなどで確認するよなw)
お前のいうtestをそんなので使うシチュエーションなんてハナからあり得ないから俺の頭に入ってこなかった
あくまでも、ファイル読みたい書きたいの話でしかしてない、俺は
なんか悪かったなw
悪かった答えの一つとしてACLを調べればいいよ。lsで確認できない、ACLはパーミッション無視してACLでのになるシステムもあったず
(めんどくさいからお前のいう目的でもsudo+test使った方が簡単だと思うぞw ダミーユーザ作ってもな、コマンドで確認しても後で変わるような変なシステム使ってるなら)
わかった、話が通じないのは
test なんて自分で読み書きできるかどうかだけの話、それを他のユーザが読めるか確認するために使おうとする奴なんていない
ls(他)使うのは当たり前(ていうか普通コマンドなどで確認するよなw)
お前のいうtestをそんなので使うシチュエーションなんてハナからあり得ないから俺の頭に入ってこなかった
あくまでも、ファイル読みたい書きたいの話でしかしてない、俺は
なんか悪かったなw
悪かった答えの一つとしてACLを調べればいいよ。lsで確認できない、ACLはパーミッション無視してACLでのになるシステムもあったず
(めんどくさいからお前のいう目的でもsudo+test使った方が簡単だと思うぞw ダミーユーザ作ってもな、コマンドで確認しても後で変わるような変なシステム使ってるなら)
483デフォルトの名無しさん
2020/09/23(水) 21:19:44.43ID:ORLEAcPg484デフォルトの名無しさん
2020/09/23(水) 21:20:01.69ID:9Qi89m1Q >>434の質問に対して、>>482という答えを言うバカでしたね(笑)
434 名前:デフォルトの名無しさん[sage] 投稿日:2020/09/23(水) 13:32:17.22 ID:BgUeNus/ [1/3]
lsコマンドをシェルスクリプトの中で使う場合ってなにかある?
ファイルの列挙に関してはfindコマンドや,もっと簡単にグロブとかを使った方が
余計な書式を含まずに処理しやすいし,
ファイルの情報に関してはtestコマンドの方が一発で分かる
(例えばディレクトリかどうかはlsコマンドの場合権限欄の情報を文字列として
解析しなくてはいけない(先頭にdがあるかどうか)が,
testコマンドの場合はtest -e && test -dで完結する)
lsコマンドを使わないとできないシェルスクリプトでの処理ってなにかあるかな。
興味本位でききたい(言わずもがなだけどlsコマンドが不要!とかそういう話ではなく)。
434 名前:デフォルトの名無しさん[sage] 投稿日:2020/09/23(水) 13:32:17.22 ID:BgUeNus/ [1/3]
lsコマンドをシェルスクリプトの中で使う場合ってなにかある?
ファイルの列挙に関してはfindコマンドや,もっと簡単にグロブとかを使った方が
余計な書式を含まずに処理しやすいし,
ファイルの情報に関してはtestコマンドの方が一発で分かる
(例えばディレクトリかどうかはlsコマンドの場合権限欄の情報を文字列として
解析しなくてはいけない(先頭にdがあるかどうか)が,
testコマンドの場合はtest -e && test -dで完結する)
lsコマンドを使わないとできないシェルスクリプトでの処理ってなにかあるかな。
興味本位でききたい(言わずもがなだけどlsコマンドが不要!とかそういう話ではなく)。
485デフォルトの名無しさん
2020/09/23(水) 21:22:05.00ID:ORLEAcPg お前が質問とは関係ないシチュエーションの話をいきなりしだしたのがだな
質問者もそんな目的でtest使おうとは思ってないだろうw
質問者もそんな目的でtest使おうとは思ってないだろうw
486デフォルトの名無しさん
2020/09/23(水) 21:24:49.53ID:9Qi89m1Q 質問と関係ないシチュエーション?
自分以外から読み書きできないことを確かめるというシチュエーションは
testではできずlsではできるので、質問と関係ありますが?
> 質問者もそんな目的でtest使おうとは思ってないだろうw
すでに、礼を貰ってるんだがw
> 443 名前:デフォルトの名無しさん[sage] 投稿日:2020/09/23(水) 16:43:09.16 ID:BgUeNus/ [3/3]
> >>439
> あーこれはあるな。
> thx
な?こいつ色々やばいだろ?w
自分以外から読み書きできないことを確かめるというシチュエーションは
testではできずlsではできるので、質問と関係ありますが?
> 質問者もそんな目的でtest使おうとは思ってないだろうw
すでに、礼を貰ってるんだがw
> 443 名前:デフォルトの名無しさん[sage] 投稿日:2020/09/23(水) 16:43:09.16 ID:BgUeNus/ [3/3]
> >>439
> あーこれはあるな。
> thx
な?こいつ色々やばいだろ?w
487デフォルトの名無しさん
2020/09/23(水) 21:29:24.56ID:ORLEAcPg だから、それもそのユーザがという話だろう。それが俺の言う
質問者がどっちかというのは知らんけど、さすがにtestを使ってるならお前の言うようなシチュエーションはないなっていう、そう書いてるだろ
質問者がどっちかというのは知らんけど、さすがにtestを使ってるならお前の言うようなシチュエーションはないなっていう、そう書いてるだろ
488デフォルトの名無しさん
2020/09/23(水) 21:33:26.77ID:ORLEAcPg489デフォルトの名無しさん
2020/09/23(水) 21:38:54.36ID:9Qi89m1Q490デフォルトの名無しさん
2020/09/23(水) 21:40:57.92ID:9Qi89m1Q ドコモ口座のくだりは「自分以外が見れないことを確認するというシチュエーション」を
あなたが思いつかなかったからですねw
あなたが思いつかなかったからですねw
491デフォルトの名無しさん
2020/09/23(水) 21:45:02.67ID:9Qi89m1Q 質問者「lsコマンドをシェルスクリプトの中で使う場合ってなにかある?」
ORLEAcPg「testを使ってるならお前の言うようなシチュエーションはない」
な?会話になってない
ORLEAcPg「testを使ってるならお前の言うようなシチュエーションはない」
な?会話になってない
492デフォルトの名無しさん
2020/09/23(水) 21:46:06.17ID:ORLEAcPg シチュエーションは書いてないね
だから、それも その別のユーザが読み書きしたいときにできるか確認=読み書きできないのかではなくて読み書きしたいができるのか という話も全然ありえるね
多分、>>446もそうだと思うよ「スクリプトで書くと」と書いてるしね
質問者も。理由を書いてるように
お前のようにはなりたくないけどw、多分俺の方じゃないかなあどうかなああ
お前はそのシチュエーションに当たった想像した時にtestを使おうと思ったの?そんなに自説に拘るとは
だから、それも その別のユーザが読み書きしたいときにできるか確認=読み書きできないのかではなくて読み書きしたいができるのか という話も全然ありえるね
多分、>>446もそうだと思うよ「スクリプトで書くと」と書いてるしね
質問者も。理由を書いてるように
お前のようにはなりたくないけどw、多分俺の方じゃないかなあどうかなああ
お前はそのシチュエーションに当たった想像した時にtestを使おうと思ったの?そんなに自説に拘るとは
493デフォルトの名無しさん
2020/09/23(水) 21:49:21.84ID:9Qi89m1Q > だから、それも その別のユーザが読み書きしたいときにできるか確認=読み書きできないのかではなくて読み書きしたいができるのか という話も全然ありえるね
質問者「lsコマンドをシェルスクリプトの中で使う場合ってなにかある?」
俺「他のユーザーが読み書きでないこと確認したいときはls使うしか無いよ」
質問者「 あーこれはあるな。tkx」
ORLEAcPg「読み書きしたいができるのかというシチュエーションがー」
意味不明w
質問者「lsコマンドをシェルスクリプトの中で使う場合ってなにかある?」
俺「他のユーザーが読み書きでないこと確認したいときはls使うしか無いよ」
質問者「 あーこれはあるな。tkx」
ORLEAcPg「読み書きしたいができるのかというシチュエーションがー」
意味不明w
494デフォルトの名無しさん
2020/09/23(水) 21:50:10.12ID:ORLEAcPg495デフォルトの名無しさん
2020/09/23(水) 21:52:19.69ID:ORLEAcPg 自説は一歩も引きません、俺の頭の中で思ったことは全て正解ですそれしかありません
モードに入ったか
すでにそれだけじゃないと書いたので ちゃんとそれに対して 反論してね(なんて言いたくはないが誰かの常套句なのでw)
モードに入ったか
すでにそれだけじゃないと書いたので ちゃんとそれに対して 反論してね(なんて言いたくはないが誰かの常套句なのでw)
496デフォルトの名無しさん
2020/09/23(水) 21:53:09.37ID:9Qi89m1Q 会話のキャッチボールができてないんだろうね
俺は質問者の質問に対して、testではできずにlsでしかできないという一例を
言ったのにこいつは何が言いたいんだろうかw
ORLEAcPg「testを使ってるならお前の言うようなシチュエーションはない」
俺は質問者の質問に対して、testではできずにlsでしかできないという一例を
言ったのにこいつは何が言いたいんだろうかw
ORLEAcPg「testを使ってるならお前の言うようなシチュエーションはない」
497デフォルトの名無しさん
2020/09/23(水) 21:54:32.42ID:ORLEAcPg うん、お前がな
明らかに堂々巡りしてるのはお前w
明らかに堂々巡りしてるのはお前w
498デフォルトの名無しさん
2020/09/23(水) 21:54:33.12ID:9Qi89m1Q499デフォルトの名無しさん
2020/09/23(水) 21:55:07.75ID:9Qi89m1Q500デフォルトの名無しさん
2020/09/23(水) 21:58:26.51ID:ORLEAcPg すでに書いてる。堂々巡りだな、それでよくキャッチボールとかw
そして ls はお前の言うようなのでも俺の言うようなシチュエーションでも不備があるともなw
そして ls はお前の言うようなのでも俺の言うようなシチュエーションでも不備があるともなw
501デフォルトの名無しさん
2020/09/23(水) 21:59:35.70ID:9Qi89m1Q > すでに書いてる。
聞いてるのは質問者への答えだが?どのレス?
言えないはず
聞いてるのは質問者への答えだが?どのレス?
言えないはず
502デフォルトの名無しさん
2020/09/23(水) 22:01:18.13ID:ORLEAcPg503デフォルトの名無しさん
2020/09/23(水) 22:01:22.69ID:9Qi89m1Q > そして ls はお前の言うようなのでも俺の言うようなシチュエーションでも不備があるともなw
質問者にlsを使う場合を聞かれたから、その答えである「lsを使わなければいけない場合」を俺が言ったのに、
なぜか「lsでは駄目な場合もある!」と言い出してけんかを売ってくるアホw
質問者にlsを使う場合を聞かれたから、その答えである「lsを使わなければいけない場合」を俺が言ったのに、
なぜか「lsでは駄目な場合もある!」と言い出してけんかを売ってくるアホw
504デフォルトの名無しさん
2020/09/23(水) 22:01:51.35ID:9Qi89m1Q505デフォルトの名無しさん
2020/09/23(水) 22:02:18.95ID:ORLEAcPg506デフォルトの名無しさん
2020/09/23(水) 22:02:57.86ID:9Qi89m1Q 「質問者の質問に答えろ」の意味がわからないらしいw
507デフォルトの名無しさん
2020/09/23(水) 22:04:23.38ID:ORLEAcPg508デフォルトの名無しさん
2020/09/23(水) 22:04:56.57ID:9Qi89m1Q 質問者の質問に答えてみろっていっても、やっぱり俺にレスをするw
4回目
4回目
509デフォルトの名無しさん
2020/09/23(水) 22:05:31.69ID:ORLEAcPg510デフォルトの名無しさん
2020/09/23(水) 22:06:09.41ID:9Qi89m1Q 質問者の質問に答えたらねw
5回目
5回目
511デフォルトの名無しさん
2020/09/23(水) 22:06:23.28ID:ORLEAcPg512デフォルトの名無しさん
2020/09/23(水) 22:07:14.53ID:9Qi89m1Q イミフという言葉でごまかして
質問者の質問に答えないw
6回目
質問者の質問に答えないw
6回目
513デフォルトの名無しさん
2020/09/23(水) 22:07:34.39ID:ORLEAcPg しょもな。さすが自称キャッチボールできるが実はしたことがない人だなあ
ショーーーもなっ
ショーーーもなっ
514デフォルトの名無しさん
2020/09/23(水) 22:08:30.66ID:9Qi89m1Q 質問者の質問に答えないからキャッチボールできてない
7回目
7回目
515デフォルトの名無しさん
2020/09/23(水) 22:09:15.87ID:BgUeNus/ なんかすいません。
516デフォルトの名無しさん
2020/09/23(水) 22:09:23.19ID:ORLEAcPg517デフォルトの名無しさん
2020/09/23(水) 22:09:27.29ID:9Qi89m1Q いいえいいえ、いつもの人ですからw
518デフォルトの名無しさん
2020/09/23(水) 22:10:15.53ID:9Qi89m1Q >>515
心当たりないと思うけど、 ID:ORLEAcPgはレスを返したつもりらしいよw
心当たりないと思うけど、 ID:ORLEAcPgはレスを返したつもりらしいよw
519デフォルトの名無しさん
2020/09/23(水) 22:11:59.79ID:ORLEAcPg520434
2020/09/23(水) 22:20:56.68ID:BgUeNus/ どっちの味方をする訳でもないんですけど,
私の質問を別の言い方で表わすなら
「(対話的でない)シェルスクリプトにおいて
私はlsコマンドを使う意義をあまり感じないんだけれど
(なぜならlsコマンドを使うほぼ全ての状況において
やりたいことをもっと簡単に実現できる
コマンドが用意されてるから。例: find, test),
lsコマンドを積極的に使わないといけない場合はありますか」
ということで,それに対して
「ある。lsコマンドでないと他人の権限を確認できない。
(testコマンドは自分の権限のみ)」
という解答を頂いたので,それで十分です。
ありがとうございました。
私の質問を別の言い方で表わすなら
「(対話的でない)シェルスクリプトにおいて
私はlsコマンドを使う意義をあまり感じないんだけれど
(なぜならlsコマンドを使うほぼ全ての状況において
やりたいことをもっと簡単に実現できる
コマンドが用意されてるから。例: find, test),
lsコマンドを積極的に使わないといけない場合はありますか」
ということで,それに対して
「ある。lsコマンドでないと他人の権限を確認できない。
(testコマンドは自分の権限のみ)」
という解答を頂いたので,それで十分です。
ありがとうございました。
521デフォルトの名無しさん
2020/09/23(水) 22:53:35.65ID:9Qi89m1Q どういたしましてw
lsは対話型で使うようなイメージだけど
POSIX準拠コマンドは最低限だが必要なコマンドを網羅しているはずという観点から見ると、
もっと簡単に実現できるコマンド(findやtestじゃなくてstatなどね)の多くは
POSIX準拠ではないので、じゃあどうやって実現するんだ?と考えると
lsコマンドでできるじゃんという結論に達するんだよ
その結論を前提としてlsコマンドの仕様を再確認すると
lsコマンドの出力形式はちゃんと決まっており
(対話的でない)シェルスクリプトから使うことも
想定されてることに気づく
lsコマンドは一覧表示だけではなくファイルの属性を
取得するためのコマンドでもあるんだよ
lsは対話型で使うようなイメージだけど
POSIX準拠コマンドは最低限だが必要なコマンドを網羅しているはずという観点から見ると、
もっと簡単に実現できるコマンド(findやtestじゃなくてstatなどね)の多くは
POSIX準拠ではないので、じゃあどうやって実現するんだ?と考えると
lsコマンドでできるじゃんという結論に達するんだよ
その結論を前提としてlsコマンドの仕様を再確認すると
lsコマンドの出力形式はちゃんと決まっており
(対話的でない)シェルスクリプトから使うことも
想定されてることに気づく
lsコマンドは一覧表示だけではなくファイルの属性を
取得するためのコマンドでもあるんだよ
522デフォルトの名無しさん
2020/09/24(木) 23:24:13.87ID:92vN9a+2 >>434
何万ファイルもあるディレクトリ以下の実際のファイル数をカウントしたい時とか。
ls -U ディレクトリ | wc -l
が速くて良いかな。
これじゃディレクトリも一緒にカウントしちゃうか・・・
何万ファイルもあるディレクトリ以下の実際のファイル数をカウントしたい時とか。
ls -U ディレクトリ | wc -l
が速くて良いかな。
これじゃディレクトリも一緒にカウントしちゃうか・・・
523デフォルトの名無しさん
2020/09/24(木) 23:25:44.41ID:92vN9a+2 うう。リロード忘れてとっくの昔に終わった話にレスを・・・orz
524デフォルトの名無しさん
2020/09/24(木) 23:27:34.11ID:92vN9a+2 あ、まだ終わってなかったかな?
まあでもたいした事書いてないからどうでもいいや。俺のことは忘れてくれ。
まあでもたいした事書いてないからどうでもいいや。俺のことは忘れてくれ。
525デフォルトの名無しさん
2020/09/25(金) 18:57:33.19ID:zTEUyLd9 スクリプト中でlsはしょっちゅう使うな、俺。
526デフォルトの名無しさん
2020/09/25(金) 19:30:49.67ID:mj+ujYgo 普通に使うな。逆になんで使わないと思うのか不思議
lsで問題があるようなら言うような別のをにするけど
lsで問題があるようなら言うような別のをにするけど
527デフォルトの名無しさん
2020/09/25(金) 20:48:34.96ID:3RZRIqWS いろんなコマンドを臨機応変に使うことが気になる質だったんやろ。
好き好きとしか。
好き好きとしか。
528デフォルトの名無しさん
2020/09/25(金) 21:48:25.44ID:jsxvfqFg >>526
POSIX限定コマンドじゃないなら
ls以外でほとんどのことができるからでしょ
macOSがオプション違っていて面倒くさすぎるってのを除けば
パーミッションとかもstatコマンドで取得できるし
それにしてもWindowsはLinuxに対応したから楽になったけど
macOSはBSD系だからローカルでテストして
そのままサーバーに持っていくってのが難しくなってるなw
POSIX限定コマンドじゃないなら
ls以外でほとんどのことができるからでしょ
macOSがオプション違っていて面倒くさすぎるってのを除けば
パーミッションとかもstatコマンドで取得できるし
それにしてもWindowsはLinuxに対応したから楽になったけど
macOSはBSD系だからローカルでテストして
そのままサーバーに持っていくってのが難しくなってるなw
529デフォルトの名無しさん
2020/09/25(金) 21:49:09.32ID:jsxvfqFg 訂正
POSIX準拠コマンドに限定しないなら
ls以外でほとんどのことができるからでしょ
POSIX準拠コマンドに限定しないなら
ls以外でほとんどのことができるからでしょ
530デフォルトの名無しさん
2020/09/26(土) 00:48:11.88ID:dttQ22N8531デフォルトの名無しさん
2020/09/26(土) 00:51:51.88ID:QU/lr7ZN532デフォルトの名無しさん
2020/09/26(土) 02:08:03.67ID:4T/mBKG7 >>531
使うことが気になる(から使いたくない)質
使うことが気になる(から使いたくない)質
533デフォルトの名無しさん
2020/09/26(土) 02:34:50.07ID:QU/lr7ZN534デフォルトの名無しさん
2020/09/28(月) 21:25:26.80ID:iGYBTUav 誰とは言わんけどツイッターで永遠と古い記事繰り返し流してるボットいるよね
リンク切れてるし邪魔なだけなんだけどああいうの消し去りたい
リンク切れてるし邪魔なだけなんだけどああいうの消し去りたい
535デフォルトの名無しさん
2020/09/30(水) 23:58:17.77ID:QG8+TwCh https://zenn.dev/mattn/books/bb181f3f4731920f29a5/viewer/5
> 既にシェルスクリプトのみでやる領域を超えてきています。
> 本来ならば正しいプログラミング言語を選んで正しくフィルタリングすべきだと思います。
と書いてありますが、これを「正しいプログラミング言語」で書くとどうなりますか?
シェルスクリプトだけでやるより分かりやすくなりますか?
> 既にシェルスクリプトのみでやる領域を超えてきています。
> 本来ならば正しいプログラミング言語を選んで正しくフィルタリングすべきだと思います。
と書いてありますが、これを「正しいプログラミング言語」で書くとどうなりますか?
シェルスクリプトだけでやるより分かりやすくなりますか?
536デフォルトの名無しさん
2020/10/01(木) 00:02:53.15ID:5ZG2Vz6Q あげー
537デフォルトの名無しさん
2020/10/01(木) 07:52:50.34ID:theiHz1p >>535
Windows のRuby で、JSON ファイルをダウンロードして保存する、部分だけを作ったが、
85KB のファイルの中身には、日本語は無く、
ほとんど、\u6708 みたいなユニコード・コードポイントの表示ばかりで読めない。
{{\u30ab\u30ec\u30f3\u30c0\u30fc 10\u6708}}
ダウンロードする際の、オプションでも間違ったのかな?
download_file = "wikipedia.json"
# ファイルが存在しない時だけ、ダウンロードして保存する
unless FileTest.exist? download_file
require 'open-uri'
require 'cgi'
require 'date'
today = Date.today.strftime( "%-m月%-d日" ) # 今日の日付。1桁表示。例、10月1日
url = "https://ja.wikipedia.org/w/api.php?format=json&action=query&prop=revisions&rvprop=content&exintro&explaintext&redirects=1&titles=" +
CGI.escape( today ) # URL encode
# ダウンロードしたファイルを保存する
open( url ) do |file|
open( download_file, "w" ) do |out|
out.write( file.read ) # 書き込み
end
end
end
Windows のRuby で、JSON ファイルをダウンロードして保存する、部分だけを作ったが、
85KB のファイルの中身には、日本語は無く、
ほとんど、\u6708 みたいなユニコード・コードポイントの表示ばかりで読めない。
{{\u30ab\u30ec\u30f3\u30c0\u30fc 10\u6708}}
ダウンロードする際の、オプションでも間違ったのかな?
download_file = "wikipedia.json"
# ファイルが存在しない時だけ、ダウンロードして保存する
unless FileTest.exist? download_file
require 'open-uri'
require 'cgi'
require 'date'
today = Date.today.strftime( "%-m月%-d日" ) # 今日の日付。1桁表示。例、10月1日
url = "https://ja.wikipedia.org/w/api.php?format=json&action=query&prop=revisions&rvprop=content&exintro&explaintext&redirects=1&titles=" +
CGI.escape( today ) # URL encode
# ダウンロードしたファイルを保存する
open( url ) do |file|
open( download_file, "w" ) do |out|
out.write( file.read ) # 書き込み
end
end
end
538デフォルトの名無しさん
2020/10/01(木) 07:56:51.16ID:eBr+ViBh >>537
やっぱり逆に長くなってるし分かりやすくなってないですよね?
やっぱり逆に長くなってるし分かりやすくなってないですよね?
539537
2020/10/01(木) 08:27:48.51ID:theiHz1p Ruby の方が、一般的な関数を使っているから、分かりやすい。
例えば、CGI.escape で、URL encode してる
元のサイトだと、date +%-m月%-d日
の部分を、何かでエンコードして、以下のようにして、
date +%-m%%E6%%9C%%88%-d%%E6%%97%%A5
それを、titles の所に書いている。
titles=$(date +%-m%%E6%%9C%%88%-d%%E6%%97%%A5)
例えば、CGI.escape で、URL encode してる
元のサイトだと、date +%-m月%-d日
の部分を、何かでエンコードして、以下のようにして、
date +%-m%%E6%%9C%%88%-d%%E6%%97%%A5
それを、titles の所に書いている。
titles=$(date +%-m%%E6%%9C%%88%-d%%E6%%97%%A5)
540デフォルトの名無しさん
2020/10/01(木) 23:43:56.76ID:GxyRQFaD > Ruby の方が、一般的な関数を使っているから、分かりやすい。
その理屈だとシェルスクリプトにもそのような関数(コマンド)があればいいって話になるよね?
その理屈だとシェルスクリプトにもそのような関数(コマンド)があればいいって話になるよね?
541デフォルトの名無しさん
2020/10/02(金) 00:24:23.57ID:DKz3pZcY シェルスクリプトの場合はJSONからデータ取るのにjqのミニ言語を覚えなきゃいけないというのはあるけど
Wikipediaのように構造化しにくいデータをテキストのまま加工するならそこまで大きな差はないよね
便利な関数が用意されてるかどうかやエラーハンドリングがやりやすいかどうかくらいの違い
Wikipediaのデータ用のパーサー使ってテキストじゃなく構造化したデータを扱えるなら差が出てくる
Wikipediaのように構造化しにくいデータをテキストのまま加工するならそこまで大きな差はないよね
便利な関数が用意されてるかどうかやエラーハンドリングがやりやすいかどうかくらいの違い
Wikipediaのデータ用のパーサー使ってテキストじゃなく構造化したデータを扱えるなら差が出てくる
542デフォルトの名無しさん
2020/10/02(金) 01:31:17.04ID:yAc5FveJ jqのミニ言語 vs 言語のパーサー?とかだろうけど
結局、jqのミニ言語の方が小さくならね?
それでも言語のパーサー使うってことは
大きくなったら、さくっと複雑な正規表現一発よりもも
愚直に文字や単語を検索していって処理を書いたほうが
分かりやすいと言ってるのと同じようなことなんかな?
結局、jqのミニ言語の方が小さくならね?
それでも言語のパーサー使うってことは
大きくなったら、さくっと複雑な正規表現一発よりもも
愚直に文字や単語を検索していって処理を書いたほうが
分かりやすいと言ってるのと同じようなことなんかな?
543デフォルトの名無しさん
2020/10/02(金) 01:39:10.41ID:ChxT/cO/ 答えを教えてくれという質問に答える必要があるのか?
544デフォルトの名無しさん
2020/10/02(金) 01:40:52.28ID:ChxT/cO/ なんでRubyなのか。初心者ならどのプラットフォームでも動くPythonを勧めておけよ。
545デフォルトの名無しさん
2020/10/02(金) 01:59:11.44ID:yAc5FveJ546デフォルトの名無しさん
2020/10/02(金) 02:02:36.55ID:ChxT/cO/ シェルスクリプトの話ではないならな
547デフォルトの名無しさん
2020/10/02(金) 02:07:55.41ID:3z5rsnx9 いつもの
548デフォルトの名無しさん
2020/10/02(金) 02:09:25.19ID:yAc5FveJ なるほどw
549デフォルトの名無しさん
2020/10/02(金) 03:39:17.87ID:b+gARvx0 macOSがzshに変わっても/bin/shはbashなんだしzshでコード書くやつなんておらんだろと
思っていたけどzshrcとかで書くことはあるんだな
思っていたけどzshrcとかで書くことはあるんだな
550デフォルトの名無しさん
2020/10/02(金) 04:11:27.42ID:3z5rsnx9 何言ってるのかと思ったら、zsh固有のを使ってことか
誰も好き好んでそうシェルはそう変えないけど、デフォがzshになったらそれなりに出てくるんじゃね
だいたいがデフォだからそのシェルを使ってるって理由にならない理由wだからな
>zshに変わっても/bin/shはbashなんだし
bashismに慣れているんだったら脱却した方がいいぞ。あくまでも過渡期(変えた直後)だからそうしてるだけで、そのうち無くなるぞ。絶対何かに変わる。dashとか(dashとは言ってない)
誰も好き好んでそうシェルはそう変えないけど、デフォがzshになったらそれなりに出てくるんじゃね
だいたいがデフォだからそのシェルを使ってるって理由にならない理由wだからな
>zshに変わっても/bin/shはbashなんだし
bashismに慣れているんだったら脱却した方がいいぞ。あくまでも過渡期(変えた直後)だからそうしてるだけで、そのうち無くなるぞ。絶対何かに変わる。dashとか(dashとは言ってない)
551デフォルトの名無しさん
2020/10/02(金) 04:20:08.62ID:Kgg5xh5c なくならないほうに賭けるぜ!
Bashはもうなくせんやろ。w
Bashはもうなくせんやろ。w
552デフォルトの名無しさん
2020/10/02(金) 04:27:45.79ID:b+gARvx0 bashはなくならないが、インタラクティブシェル
/bin/shはdash、もしくはPOSIX準拠のシェルだろ
dashよりも速いシェルって作れる気がするんだよな
JITとか取り入れてさ
/bin/shはdash、もしくはPOSIX準拠のシェルだろ
dashよりも速いシェルって作れる気がするんだよな
JITとか取り入れてさ
553デフォルトの名無しさん
2020/10/02(金) 04:58:29.55ID:3z5rsnx9 メンテするのめんどくさくなって消してしまうのが定番だからなあ
必要なら自分で入れろになると思うよ。いつも通りならw
必要なら自分で入れろになると思うよ。いつも通りならw
554デフォルトの名無しさん
2020/10/02(金) 08:31:08.24ID:Ym6Y+dmB dash dash dash
bash and dash
bash and dash
555デフォルトの名無しさん
2020/10/02(金) 09:54:23.17ID:b+gARvx0 bashismは嫌いだから/bin/shはdashにしてbashをオプショナルにするか
POSIXで標準化して欲しい
POSIXで標準化して欲しい
556デフォルトの名無しさん
2020/10/02(金) 12:30:02.56ID:Kgg5xh5c >>553
既存シェルスクリプトの動作検証よりはマシやろ。w
BashとかPerl5とかはすでにインフラみたいなもんだし。
まあ、Python2も消せないやろ、と思ってたら、意外と3のみになったもよう。
既存シェルスクリプトの動作検証よりはマシやろ。w
BashとかPerl5とかはすでにインフラみたいなもんだし。
まあ、Python2も消せないやろ、と思ってたら、意外と3のみになったもよう。
557デフォルトの名無しさん
2020/10/02(金) 12:40:10.03ID:kBx+3rAk >>556
何を言っているのかイマイチわからん
現在の bash 3.2 ですら時代遅れだし、Apple自身でメンテしなくてはならない
macOS内でApple製のスクリプトがあるんだったらもちろん代替になるので問題なく書き換えられるだろう
今まで通りならmacOSバンドルとしてはインストールされなくなるのは当然のような帰結
何を言っているのかイマイチわからん
現在の bash 3.2 ですら時代遅れだし、Apple自身でメンテしなくてはならない
macOS内でApple製のスクリプトがあるんだったらもちろん代替になるので問題なく書き換えられるだろう
今まで通りならmacOSバンドルとしてはインストールされなくなるのは当然のような帰結
558デフォルトの名無しさん
2020/10/02(金) 12:52:27.29ID:sGznlVtc macOSの/bin/shのbash3.2はもう負債だよねw
これからAppleはどうするつもりなんだろ
zshは互換性ないし、dashにしたら機能低下だしw
これからAppleはどうするつもりなんだろ
zshは互換性ないし、dashにしたら機能低下だしw
559デフォルトの名無しさん
2020/10/02(金) 16:49:14.59ID:Kgg5xh5c560デフォルトの名無しさん
2020/10/02(金) 18:28:44.86ID:bqQ3ZGOC いつ無くなってもいいように今からしとこというマジメに考えたらの話だけど
マジメってどういう意味なのか知らんけど
マジメってどういう意味なのか知らんけど
561デフォルトの名無しさん
2020/10/02(金) 21:23:42.67ID:VhuuBVU8 Appleは突然Swift出してきたりMetal出してきたりArm出してきたりであらゆる分野で考慮するだけ無駄というスタンス
562デフォルトの名無しさん
2020/10/02(金) 22:46:19.69ID:Kgg5xh5c563デフォルトの名無しさん
2020/10/02(金) 22:58:56.81ID:r3ReT+S4 その今使えるbashっていうのがmacOSでは3.2なのよね・・・
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/migration_planning_guide/sect-migration_guide-package_changes-bash
Bash-4.0 およびそれ以降のバージョンは、 プロセス置換の構成をブレース展開を使って変更せずに渡すことができるようになるため、
内容の展開はすべて別々に指定し、 各プロセス置換を別々に入力しなければならなくなります。
Bash-4.0 およびそれ以降のバージョンでは Posix が指定するのと同様に、 SIGCHLD が wait の組込みに割り込みを許可するため、
全ての子を待機するよう「wait」を使用する場合、 子を終了したら SIGCHLD トラップは常に呼び出されることがなくなります。
Bash-4.0 およびそれ以降のバージョンは、 クローズ用の区切り文字 $() コマンド置換を検索する場合に
Posix のルールに従うようになり、 旧バージョンのような動作はしなくなりますが、
より多くの構文および解析のエラーを先に捕らえてからコマンド置換を評価するためのサブシェルを生成します。
Bash-4.0 およびそれ以降のバージョンでは、 パイプラインのコマンドのひとつがコマンド一覧を実行している間に
SIGINT によって終了させられた場合、 シェルは割り込みを受けたかのような動作をします。
Bash-4.0 およびそれ以降のバージョンでは、 set -e オプションの処理法が変更されるため、
パイプラインが失敗すると (失敗したパイプライン内の最後のコマンドが単純なコマンドでない場合も) シェルは終了します。
これは Posix が指定するものとは異なります。 この部分の基準を更新する作業が進展中です。
Bash-4.0 の動作はリリースの時点での合意を得ようとしている動作です。
Bash-4.0 およびそれ以降のバージョンでは、"." がシステムの PATH に存在しない場合でも、. (source) ビルトインが
ファイル名の引数を現在のディレクトリで検索してしまう原因となっていた Posix モードのバグが修正されています。
Posix では、このような場合シェルによる PWD 変数内の検索は行われるべきではないと述べられています。
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/migration_planning_guide/sect-migration_guide-package_changes-bash
Bash-4.0 およびそれ以降のバージョンは、 プロセス置換の構成をブレース展開を使って変更せずに渡すことができるようになるため、
内容の展開はすべて別々に指定し、 各プロセス置換を別々に入力しなければならなくなります。
Bash-4.0 およびそれ以降のバージョンでは Posix が指定するのと同様に、 SIGCHLD が wait の組込みに割り込みを許可するため、
全ての子を待機するよう「wait」を使用する場合、 子を終了したら SIGCHLD トラップは常に呼び出されることがなくなります。
Bash-4.0 およびそれ以降のバージョンは、 クローズ用の区切り文字 $() コマンド置換を検索する場合に
Posix のルールに従うようになり、 旧バージョンのような動作はしなくなりますが、
より多くの構文および解析のエラーを先に捕らえてからコマンド置換を評価するためのサブシェルを生成します。
Bash-4.0 およびそれ以降のバージョンでは、 パイプラインのコマンドのひとつがコマンド一覧を実行している間に
SIGINT によって終了させられた場合、 シェルは割り込みを受けたかのような動作をします。
Bash-4.0 およびそれ以降のバージョンでは、 set -e オプションの処理法が変更されるため、
パイプラインが失敗すると (失敗したパイプライン内の最後のコマンドが単純なコマンドでない場合も) シェルは終了します。
これは Posix が指定するものとは異なります。 この部分の基準を更新する作業が進展中です。
Bash-4.0 の動作はリリースの時点での合意を得ようとしている動作です。
Bash-4.0 およびそれ以降のバージョンでは、"." がシステムの PATH に存在しない場合でも、. (source) ビルトインが
ファイル名の引数を現在のディレクトリで検索してしまう原因となっていた Posix モードのバグが修正されています。
Posix では、このような場合シェルによる PWD 変数内の検索は行われるべきではないと述べられています。
564デフォルトの名無しさん
2020/10/03(土) 02:30:20.61ID:GCdjvz0l >Bashをなくしたとして、POSIX互換シェルをわざわざ残すのかと
何もわかってないのに口出す馬鹿
何もわかってないのに口出す馬鹿
565デフォルトの名無しさん
2020/10/03(土) 11:56:15.65ID:ylT9+9xh シェル上で別の種類のシェルが動いたり、種類が異なるシェルが別のシェルの動作をエミュレートしていることを知らないんだろうね。
566デフォルトの名無しさん
2020/10/03(土) 12:51:18.99ID:Pwjke0L1567デフォルトの名無しさん
2020/10/03(土) 13:59:59.45ID:/+lXvOCZ 変わるも何も現状及びその対応の予測の理解が間違ってるってことなんだがw
568デフォルトの名無しさん
2020/10/03(土) 14:04:51.63ID:F0et+WHN POSIXという標準があるから変わるわけないんだよな
多く使われてるdebian/ubuntuがPOSIXに準拠を頑なに守ってる
/bin/shがdashが多いからPOSIX準拠で書くしかない
そうすればmacOSでも動く
多く使われてるdebian/ubuntuがPOSIXに準拠を頑なに守ってる
/bin/shがdashが多いからPOSIX準拠で書くしかない
そうすればmacOSでも動く
569デフォルトの名無しさん
2020/10/03(土) 14:12:51.48ID:/+lXvOCZ 1行目と2行目以降が繋がらない
bashのエミュレーションがちゃんとしてたら問題がなかったのにな
GNUはライセンスにうるさいwくせになぜあんなのなのだかな
bashのエミュレーションがちゃんとしてたら問題がなかったのにな
GNUはライセンスにうるさいwくせになぜあんなのなのだかな
570デフォルトの名無しさん
2020/10/06(火) 07:21:02.23ID:8TYkjhvC571デフォルトの名無しさん
2020/10/10(土) 22:35:58.03ID:33g/v1Rs シェルスクリプト関連のツイート見てたらGPT-3?か知らんけど
AIで文章を生成して日本語に翻訳してるボットを発見したw
https://twitter.com/5hc7PFFLfvjD88V
https://twitter.com/5chan_nel (5ch newer account)
AIで文章を生成して日本語に翻訳してるボットを発見したw
https://twitter.com/5hc7PFFLfvjD88V
https://twitter.com/5chan_nel (5ch newer account)
572デフォルトの名無しさん
2020/10/13(火) 23:49:10.96ID:fWSRS6M8 素人ですが世話になります
POSIXってシェルの最低限の共通規約って認識でいいんだろうか
機能を拡張しても所詮は方言だから封印しとけと
POSIXってシェルの最低限の共通規約って認識でいいんだろうか
機能を拡張しても所詮は方言だから封印しとけと
573デフォルトの名無しさん
2020/10/14(水) 00:14:50.23ID:1GHjlaSZ grep -Lqだとqの方が勝つんか…
574デフォルトの名無しさん
2020/10/14(水) 00:24:26.43ID:1GHjlaSZ grep -L pat file > /dev/null って捨てると返り血が変わる…?
575デフォルトの名無しさん
2020/10/14(水) 01:29:03.98ID:0TgtAVoq >>572
POSIXに準拠しておけば、Debian、Ubuntuの/bin/sh(dash)や
Alpine Linux(busybox)やmacOS(古いbash 3系)やmacOSのユーザーシェル(zsh)
でもそのまま、もしくはわずかな修正で動くようになるというメリットが有る
世の中全部bashやろーとか言ってるやつは、Debianで実際にシェルが変わったときや
macOSのbashが古いなどで変化に耐えられず、最新のbashしかしらん
どうせbash使うもんって言いはる羽目になってる
bash依存してるやつは、なにか理由があってbash依存してるのではなく
無知ゆえに必要もないのに[[ ]]を使ったりfunctionキーワードを使ったり
独自のforの書き方をしたり配列を使ってたりするだけ
ちゃんと知っていればbashスクリプトの9割は簡単にPOSIX準拠で書ける
もしPOSIX shではなくbashを使いたくなったら、他の言語を使ったほうが良い
POSIX shの機能は本当に必要なものだけを実装している。それがUNIXの思想
素人はまずPOSIXの機能だけ勉強しとけ
最初にbashから入ると、これはPOSIXで使えるんだっけ?って悩む羽目になる
POSIXに準拠しておけば、Debian、Ubuntuの/bin/sh(dash)や
Alpine Linux(busybox)やmacOS(古いbash 3系)やmacOSのユーザーシェル(zsh)
でもそのまま、もしくはわずかな修正で動くようになるというメリットが有る
世の中全部bashやろーとか言ってるやつは、Debianで実際にシェルが変わったときや
macOSのbashが古いなどで変化に耐えられず、最新のbashしかしらん
どうせbash使うもんって言いはる羽目になってる
bash依存してるやつは、なにか理由があってbash依存してるのではなく
無知ゆえに必要もないのに[[ ]]を使ったりfunctionキーワードを使ったり
独自のforの書き方をしたり配列を使ってたりするだけ
ちゃんと知っていればbashスクリプトの9割は簡単にPOSIX準拠で書ける
もしPOSIX shではなくbashを使いたくなったら、他の言語を使ったほうが良い
POSIX shの機能は本当に必要なものだけを実装している。それがUNIXの思想
素人はまずPOSIXの機能だけ勉強しとけ
最初にbashから入ると、これはPOSIXで使えるんだっけ?って悩む羽目になる
576デフォルトの名無しさん
2020/10/14(水) 01:36:55.66ID:LOnQ9LGm 原理主義者のニオイがする
577デフォルトの名無しさん
2020/10/14(水) 02:01:39.11ID:0TgtAVoq そういや日本人が作った口先だけのPOSIXの原理主義みたいな変なのがありましたねw
3人ぐらいのグループでPOSIXにしろーしろーと叫ぶだけで何も生み出さない
それを使って自分たちは商売してるから
本人にとっては生み出してるんでしょうが
あれに洗脳された学生とかは可哀想です。
だってそのグループ界隈以外ではまったく使われてないものだから
3人ぐらいのグループでPOSIXにしろーしろーと叫ぶだけで何も生み出さない
それを使って自分たちは商売してるから
本人にとっては生み出してるんでしょうが
あれに洗脳された学生とかは可哀想です。
だってそのグループ界隈以外ではまったく使われてないものだから
578デフォルトの名無しさん
2020/10/14(水) 02:14:34.88ID:rQGDkRcC579デフォルトの名無しさん
2020/10/14(水) 03:02:47.56ID:0TgtAVoq 現実の動作確認ならDebianやmacOSやAlpine Linuxでできますが?
580デフォルトの名無しさん
2020/10/14(水) 04:07:29.66ID:6lVggo30 >>578
原理主義者といえばそうかもしれんが、臨機応変なことができないのは確かそうだな
原理主義者といえばそうかもしれんが、臨機応変なことができないのは確かそうだな
581デフォルトの名無しさん
2020/10/14(水) 04:18:21.34ID:rQGDkRcC >>579
それは、あくまで個々の実際であって、POSIXの証明にはならんやろ。
それは、あくまで個々の実際であって、POSIXの証明にはならんやろ。
582デフォルトの名無しさん
2020/10/14(水) 09:13:33.96ID:e7axr172 >>581
POSIXの証明って何の話?
bash拡張機能はbashでしか使えない。POSIX shの範囲でならどのPOSIXシェルでも使える
実際にbash拡張機能はDebianの/bin/sh(dash)やAlpine Linuxの/bin/sh(busybox)では使えない
という当たり前の話しかしてないが
俺に何を証明して欲しいん?
動かない命令でも書いてほしいんか?
array=(1 2 3)
↑DebianやAlpine Linuxで動かない。ほらPOSIXの証明になったろw
POSIXの証明って何の話?
bash拡張機能はbashでしか使えない。POSIX shの範囲でならどのPOSIXシェルでも使える
実際にbash拡張機能はDebianの/bin/sh(dash)やAlpine Linuxの/bin/sh(busybox)では使えない
という当たり前の話しかしてないが
俺に何を証明して欲しいん?
動かない命令でも書いてほしいんか?
array=(1 2 3)
↑DebianやAlpine Linuxで動かない。ほらPOSIXの証明になったろw
583デフォルトの名無しさん
2020/10/14(水) 09:18:46.30ID:q9X9j9UM POSIX STRICTチェックみたいなものないの?
もしくはピュアPOSIXの実装とか
もしくはピュアPOSIXの実装とか
584デフォルトの名無しさん
2020/10/14(水) 09:25:02.38ID:e7axr172 >>583
shellcheck
こういうエラーが出る
$ shellcheck posix.sh
In posix.sh line 3:
array=(1 2 3)
^---^ SC2034: array appears unused. Verify use (or export if used externally).
^-----^ SC2039: In POSIX sh, arrays are undefined.
For more information:
https://www.shellcheck.net/wiki/SC2034 -- array appears unused. Verify use ...
https://www.shellcheck.net/wiki/SC2039 -- In POSIX sh, arrays are undefined.
> もしくはピュアPOSIXの実装とか
それがdash
shellcheck
こういうエラーが出る
$ shellcheck posix.sh
In posix.sh line 3:
array=(1 2 3)
^---^ SC2034: array appears unused. Verify use (or export if used externally).
^-----^ SC2039: In POSIX sh, arrays are undefined.
For more information:
https://www.shellcheck.net/wiki/SC2034 -- array appears unused. Verify use ...
https://www.shellcheck.net/wiki/SC2039 -- In POSIX sh, arrays are undefined.
> もしくはピュアPOSIXの実装とか
それがdash
585デフォルトの名無しさん
2020/10/14(水) 09:43:48.30ID:e7axr172 WSL(Ubuntu)の/bin/shもdash、ピュアPOSIXの実装
586デフォルトの名無しさん
2020/10/15(木) 06:07:28.41ID:/dATFcTZ 目的はピュアPOSIXの実装ではないけどな
587デフォルトの名無しさん
2020/10/15(木) 07:43:17.35ID:VXXH9SNU dashの目的は、それまで使われていた/bin/shの代替
高速で軽量でPOSIX互換を目指している
この目的と目標は実現され /bin/shの代替として
Debian系(Ubuntu含む)などで多く使われている
FreeBSDやNetBSDでもashが使われてる
dashはそのashをDebian用に移植したもの
bashはインタラクティブシェルとしては一番使われてるだろうが
shebangのは/bin/shが使われることが多いので
シェルスクリプトを動かす場合はdashが一番使われているシェルだろう
高速で軽量でPOSIX互換を目指している
この目的と目標は実現され /bin/shの代替として
Debian系(Ubuntu含む)などで多く使われている
FreeBSDやNetBSDでもashが使われてる
dashはそのashをDebian用に移植したもの
bashはインタラクティブシェルとしては一番使われてるだろうが
shebangのは/bin/shが使われることが多いので
シェルスクリプトを動かす場合はdashが一番使われているシェルだろう
588デフォルトの名無しさん
2020/10/15(木) 10:07:06.34ID:r6YkuFXF https://twitter.com/col_richie/status/1316543524569903111
リッチー大佐の中の人
@col_richie
「シェルスクリプトによる○○」と銘打ちながら、必要なものにPythonやGoが含まれるというなら、
それは「Pythonによる○○」あるいは「Goによる○○」に他ならな
なぜ「シェルスクリプトによる○○」と語ることにこだわるのか?
他言語に頼る時点で既にそんな資格はない。当たり前だろうが!!!
↓
郵便番号から住所欄を満たすアレを、シェルスクリプトで実装
https://github.com/ShellShoccar-jpn/zip2addr
https://github.com/ShellShoccar-jpn/zip2addr/blob/master/commands/parsrj.sh
※ これはシェルスクリプトではなくawk(笑)
# #
# === Generate the JSONPath-value with referring the head of the ======= #
# strings and thier order #
awk ' #
BEGIN { #
# Load shell values which have option parameters #
alt_spc_in_key=ENVIRON["sk"]; #
root_symbol =ENVIRON["rt"]; #
key_delimit =ENVIRON["kd"]; #
list_prefix =ENVIRON["lp"]; #
list_suffix =ENVIRON["ls"]; #
# Initialize the data category stack #
datacat_stack[0]=""; #
delete datacat_stack[0] #
# Initialize the key name stack #
https://twitter.com/5chan_nel (5ch newer account)
リッチー大佐の中の人
@col_richie
「シェルスクリプトによる○○」と銘打ちながら、必要なものにPythonやGoが含まれるというなら、
それは「Pythonによる○○」あるいは「Goによる○○」に他ならな
なぜ「シェルスクリプトによる○○」と語ることにこだわるのか?
他言語に頼る時点で既にそんな資格はない。当たり前だろうが!!!
↓
郵便番号から住所欄を満たすアレを、シェルスクリプトで実装
https://github.com/ShellShoccar-jpn/zip2addr
https://github.com/ShellShoccar-jpn/zip2addr/blob/master/commands/parsrj.sh
※ これはシェルスクリプトではなくawk(笑)
# #
# === Generate the JSONPath-value with referring the head of the ======= #
# strings and thier order #
awk ' #
BEGIN { #
# Load shell values which have option parameters #
alt_spc_in_key=ENVIRON["sk"]; #
root_symbol =ENVIRON["rt"]; #
key_delimit =ENVIRON["kd"]; #
list_prefix =ENVIRON["lp"]; #
list_suffix =ENVIRON["ls"]; #
# Initialize the data category stack #
datacat_stack[0]=""; #
delete datacat_stack[0] #
# Initialize the key name stack #
https://twitter.com/5chan_nel (5ch newer account)
589デフォルトの名無しさん
2020/10/15(木) 10:08:30.55ID:r6YkuFXF さらしあげとこうw
590デフォルトの名無しさん
2020/10/15(木) 10:13:25.16ID:r6YkuFXF https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html
NAME
awk - pattern scanning and processing language
awk - パターン走査および処理言語
DESCRIPTION
The awk utility shall execute programs written in the awk programming language,
which is specialized for textual data manipulation.
awk ユーティリティは,テキストデータ操作に特化した awk プログラミング言語で書かれたプログラムを実行する.
_人人人人人人人人人人人_
> awk プログラミング言語 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
NAME
awk - pattern scanning and processing language
awk - パターン走査および処理言語
DESCRIPTION
The awk utility shall execute programs written in the awk programming language,
which is specialized for textual data manipulation.
awk ユーティリティは,テキストデータ操作に特化した awk プログラミング言語で書かれたプログラムを実行する.
_人人人人人人人人人人人_
> awk プログラミング言語 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
591デフォルトの名無しさん
2020/10/15(木) 10:17:25.72ID:WTnE7/zf awkもjqも全部シェルスクリプトだよ
592デフォルトの名無しさん
2020/10/15(木) 10:22:25.09ID:r6YkuFXF >>591
awk ユーティリティは,テキストデータ操作に特化した
awk プログラミング言語で書かれたプログラムを実行する.
_人人人人人人人人人人人_
> awk プログラミング言語 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
awk ユーティリティは,テキストデータ操作に特化した
awk プログラミング言語で書かれたプログラムを実行する.
_人人人人人人人人人人人_
> awk プログラミング言語 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
593デフォルトの名無しさん
2020/10/15(木) 10:25:32.93ID:r6YkuFXF たっくん
シェルスクリプトでTwitterBotっていうのを見かけたけど、「コマンドの実装にGoを使う」って書いてあって「うーん?」となってしまった
リッチー大佐の中の人
まったくだ。なめてるのかと。我らの小鳥男こそシェルスクリプトによる最強のTwitterクライアントアプリだ。
もちろん、別途シェルスクリプトを組めばbotも好きなように作れる。 https://github.com/ShellShoccar-jpn/kotoriotoko
↓
シェルスクリプトでTwitterBotっていうのを見かけたけど、「コマンドの実装にGoを使う」って書いてあって「うーん?」となってしまった
リッチー大佐の中の人
まったくだ。なめてるのかと。我らの小鳥男こそシェルスクリプトによる最強のTwitterクライアントアプリだ。
もちろん、別途シェルスクリプトを組めばbotも好きなように作れる。 https://github.com/ShellShoccar-jpn/kotoriotoko
↓
594デフォルトの名無しさん
2020/10/15(木) 10:26:22.84ID:r6YkuFXF https://github.com/ShellShoccar-jpn/kotoriotoko/blob/master/UTL/base64
# Main
(cat ${1+"$@"}; echo '') |
awk ' #
BEGIN { #
# --- prepare #
OFS = ""; #
ORS = ""; #
# --- prepare encoding #
for(i= 0;i<256;i++){c2p[sprintf("%c",i)]=sprintf("%%%02X",i);} #
c2p[" "]="'"$instead_of_spc"'"; #
for(i=48;i< 58;i++){c2p[sprintf("%c",i)]=sprintf("%c",i); } #
for(i=65;i< 91;i++){c2p[sprintf("%c",i)]=sprintf("%c",i); } #
for(i=97;i<123;i++){c2p[sprintf("%c",i)]=sprintf("%c",i); } #
c2p["-"]="-"; c2p["."]="."; c2p["_"]="_"; c2p["~"]="~"; #
# Main
(cat ${1+"$@"}; echo '') |
awk ' #
BEGIN { #
# --- prepare #
OFS = ""; #
ORS = ""; #
# --- prepare encoding #
for(i= 0;i<256;i++){c2p[sprintf("%c",i)]=sprintf("%%%02X",i);} #
c2p[" "]="'"$instead_of_spc"'"; #
for(i=48;i< 58;i++){c2p[sprintf("%c",i)]=sprintf("%c",i); } #
for(i=65;i< 91;i++){c2p[sprintf("%c",i)]=sprintf("%c",i); } #
for(i=97;i<123;i++){c2p[sprintf("%c",i)]=sprintf("%c",i); } #
c2p["-"]="-"; c2p["."]="."; c2p["_"]="_"; c2p["~"]="~"; #
595デフォルトの名無しさん
2020/10/15(木) 10:38:59.90ID:r6YkuFXF POSIX準拠コマンドの中で言語と言えるもの
(セミコロンや改行区切りで "複数の命令" を手続き的に実行できるものを言語としています)
awk - pattern scanning and processing language
bc - arbitrary-precision arithmetic language
ed - edit text
sed - stream editor
他にもあるかな?
bcは複数の命令を実行できるから言語だけど
exprは式を評価するだけだから違う
(セミコロンや改行区切りで "複数の命令" を手続き的に実行できるものを言語としています)
awk - pattern scanning and processing language
bc - arbitrary-precision arithmetic language
ed - edit text
sed - stream editor
他にもあるかな?
bcは複数の命令を実行できるから言語だけど
exprは式を評価するだけだから違う
596デフォルトの名無しさん
2020/10/15(木) 20:22:35.08ID:cNnx9G5T exを忘れちゃいけない
597デフォルトの名無しさん
2020/10/15(木) 22:29:33.58ID:BrsJS6s+ exでもできるん?
sedとか"s/a/b/"みたいに一行のコマンドを実行してるように見えるけど
実際には
s/a/b/
s/c/d/
みたいにsedスクリプトを実行できるわけだよね
sedは置換をベースとしたかなり独特な言語だけど
awkなんてBEGINで全部書いてしまえば
完全に普通のスクリプト言語になる
bcも実際はスクリプトを使って計算する
https://linux.die.net/man/1/bc の中間あたりにある例は
関数定義やif文while文も使っていて実は言語であることがわかると思う
まあ言いたいことは、シェルスクリプトからPythonやGoを呼び出していて
そこがメインで処理してるのがシェルスクリプトでないように
awkやsedでメインの処理を行ってるなら同様にそれもシェルスクリプトではない
sedとか"s/a/b/"みたいに一行のコマンドを実行してるように見えるけど
実際には
s/a/b/
s/c/d/
みたいにsedスクリプトを実行できるわけだよね
sedは置換をベースとしたかなり独特な言語だけど
awkなんてBEGINで全部書いてしまえば
完全に普通のスクリプト言語になる
bcも実際はスクリプトを使って計算する
https://linux.die.net/man/1/bc の中間あたりにある例は
関数定義やif文while文も使っていて実は言語であることがわかると思う
まあ言いたいことは、シェルスクリプトからPythonやGoを呼び出していて
そこがメインで処理してるのがシェルスクリプトでないように
awkやsedでメインの処理を行ってるなら同様にそれもシェルスクリプトではない
598デフォルトの名無しさん
2020/10/15(木) 22:51:46.33ID:rxPXHFq5 じゃCで書いてるコマンド呼び出したらシェルスクリプトじゃないね
599デフォルトの名無しさん
2020/10/15(木) 23:01:29.76ID:BrsJS6s+ >>598
そのとおりだよ
シェルスクリプトで階乗を行うコードを実装しましたと言っておきながら
C言語でコードを実装して、シェルスクリプトではそれを呼び出すだけなら
それはシェルスクリプトで実装したとは言えない
シェルスクリプトで実装というのなら、シェルスクリプトで
定義されているものだけを使って使って作らないといけない
例えば変数展開(を利用した文字列処理)や算術式展開を使った四則演算や
case文を使った文字列パターンマッチング処理で作る
外部コマンド呼び出しは(そのコマンドを自分で実装してないなら)
外部コマンドと組み合わせてシェルスクリプトで実装したと言えなくはないが
そもそもその外部コマンドがPythonやawkのような"別の言語"を使うものなら
そこから別の言語に切り替わっている
そのとおりだよ
シェルスクリプトで階乗を行うコードを実装しましたと言っておきながら
C言語でコードを実装して、シェルスクリプトではそれを呼び出すだけなら
それはシェルスクリプトで実装したとは言えない
シェルスクリプトで実装というのなら、シェルスクリプトで
定義されているものだけを使って使って作らないといけない
例えば変数展開(を利用した文字列処理)や算術式展開を使った四則演算や
case文を使った文字列パターンマッチング処理で作る
外部コマンド呼び出しは(そのコマンドを自分で実装してないなら)
外部コマンドと組み合わせてシェルスクリプトで実装したと言えなくはないが
そもそもその外部コマンドがPythonやawkのような"別の言語"を使うものなら
そこから別の言語に切り替わっている
600デフォルトの名無しさん
2020/10/15(木) 23:02:18.89ID:5H3UlTi7 イチャモンつけるならmakeがチューリング完全って話にまで火花が散るので、適当な落しどころは
POSIXに規定されておらず、それ自身が汎用プログラミング言語であることを目的として実装されたインタプリタやランタイムに対して、目的の処理を委譲しているのをシェルスクリプトだと表現されると気に食わない人が居る
くらいでいいでしょ
イチャモンつけるのも程々にしとかなきゃただ相手の意図を汲み取るつもりのない人間でしかなくなるぞ
POSIXに規定されておらず、それ自身が汎用プログラミング言語であることを目的として実装されたインタプリタやランタイムに対して、目的の処理を委譲しているのをシェルスクリプトだと表現されると気に食わない人が居る
くらいでいいでしょ
イチャモンつけるのも程々にしとかなきゃただ相手の意図を汲み取るつもりのない人間でしかなくなるぞ
601デフォルトの名無しさん
2020/10/15(木) 23:03:31.46ID:BrsJS6s+ >>600
厳密な境目を見つけたいんじゃなくて
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html
The awk utility shall execute programs written in the awk programming language,
awkユーティリティは、awkプログラミング言語で記述されたプログラムを実行します。
と書いてあるんだから、awkは「awkプログラミング言語」
厳密な境目を見つけたいんじゃなくて
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html
The awk utility shall execute programs written in the awk programming language,
awkユーティリティは、awkプログラミング言語で記述されたプログラムを実行します。
と書いてあるんだから、awkは「awkプログラミング言語」
602デフォルトの名無しさん
2020/10/15(木) 23:09:18.27ID:BrsJS6s+ make は内部的にシェルを呼び出してるので
GNU拡張は無視するとして、makeの範囲だけでなにか作れるんですかね?
GNU拡張を含むなら沢山の関数があるので
それらを使って作ったものは当然シェルスクリプトで実装したことにはならないですよ
GNU拡張は無視するとして、makeの範囲だけでなにか作れるんですかね?
GNU拡張を含むなら沢山の関数があるので
それらを使って作ったものは当然シェルスクリプトで実装したことにはならないですよ
603デフォルトの名無しさん
2020/10/15(木) 23:12:13.35ID:BrsJS6s+ あとイチャモンの内容は、Pythonで作ったものはシェルスクリプトではないのはそのとおりだけど
同じ用にawkで実装したものもシェルスクリプトではないんだから
awkで実装ばかりしてるお前(リッチー大佐)は自分のことを棚に上げてるwwwって言ってるだけ
同じ用にawkで実装したものもシェルスクリプトではないんだから
awkで実装ばかりしてるお前(リッチー大佐)は自分のことを棚に上げてるwwwって言ってるだけ
604デフォルトの名無しさん
2020/10/15(木) 23:22:09.05ID:9L6aMfZP ♪しぇまるー、ショッカー
605デフォルトの名無しさん
2020/10/16(金) 00:01:24.96ID:NkS9Y4UZ >>599
C言語でsystem()関数を使って、Bashを呼び出したら、シェルスクリプトだな!
C言語でsystem()関数を使って、Bashを呼び出したら、シェルスクリプトだな!
606デフォルトの名無しさん
2020/10/16(金) 00:18:33.05ID:V+ycHLUt607デフォルトの名無しさん
2020/10/16(金) 06:54:13.19ID:AxWc82uj >>603
だーからそういう揚げ足取りがしょーもないって話してんのが分からんかね
awkがプログラミング言語であるのは否定しない
ただ発端の話者はPOSIX狂いで有名な上awk多用してるんだから、対象のツイート中で言うプログラミング言語がPOSIXを除くものについての言及と考えれば辻褄は合うし、そう考えるのも突飛な発想と言うほどおかしくはないでしょ
確かにその人は語り口が横柄な事があるし好かれる性格キャラ作りはしてないさ
でも個人憎しでしょーもない揚げ足取りしてんのは同等かそれ以上につまんねーことしてんなって感じだよ
だーからそういう揚げ足取りがしょーもないって話してんのが分からんかね
awkがプログラミング言語であるのは否定しない
ただ発端の話者はPOSIX狂いで有名な上awk多用してるんだから、対象のツイート中で言うプログラミング言語がPOSIXを除くものについての言及と考えれば辻褄は合うし、そう考えるのも突飛な発想と言うほどおかしくはないでしょ
確かにその人は語り口が横柄な事があるし好かれる性格キャラ作りはしてないさ
でも個人憎しでしょーもない揚げ足取りしてんのは同等かそれ以上につまんねーことしてんなって感じだよ
608デフォルトの名無しさん
2020/10/16(金) 07:32:49.12ID:8MUyS0MS >>607
だから結論としては、awkはシェルスクリプトじゃないんだから
お前(しょっかー)もawk使ってるくせにシェルスクリプトって言ってるじゃん
ってことでしょ
それ以外になにか言うべきことあんの?
ないでしょ
それで話は終わりだよね
だから結論としては、awkはシェルスクリプトじゃないんだから
お前(しょっかー)もawk使ってるくせにシェルスクリプトって言ってるじゃん
ってことでしょ
それ以外になにか言うべきことあんの?
ないでしょ
それで話は終わりだよね
609デフォルトの名無しさん
2020/10/16(金) 07:49:02.57ID:AxWc82uj610デフォルトの名無しさん
2020/10/16(金) 07:50:20.39ID:hscjZ2ao611デフォルトの名無しさん
2020/10/16(金) 08:10:20.93ID:AxWc82uj612デフォルトの名無しさん
2020/10/16(金) 08:21:19.35ID:hscjZ2ao >>611
意図じゃなくてお前の願望だろw
awkは明らかにシェルスクリプトじゃないし
POSIX準拠のコマンドだけを使って作ったというのなら、そう言えばいいだけで
そう言わない理由はあるわけがないので、単にそのことを理解してないってだけ
それをお前はかばおうとしてるだけだろ
意図じゃなくてお前の願望だろw
awkは明らかにシェルスクリプトじゃないし
POSIX準拠のコマンドだけを使って作ったというのなら、そう言えばいいだけで
そう言わない理由はあるわけがないので、単にそのことを理解してないってだけ
それをお前はかばおうとしてるだけだろ
613デフォルトの名無しさん
2020/10/16(金) 08:47:26.97ID:AxWc82uj614デフォルトの名無しさん
2020/10/16(金) 09:11:10.47ID:095UBA8m 恥ずかしいよねw
自分がシェルスクリプトといいながら、awkで書いちゃってるのに
他に人にはPythonはシェルスクリプトじゃないと言っちゃってるわけだw
自分がシェルスクリプトといいながら、awkで書いちゃってるのに
他に人にはPythonはシェルスクリプトじゃないと言っちゃってるわけだw
615デフォルトの名無しさん
2020/10/16(金) 10:47:36.16ID:94/KGSru もう直接言いに行けよ、キモいレスするぐらいなら
616デフォルトの名無しさん
2020/10/16(金) 10:52:10.99ID:rggqlWcj >>614
awkやsedはシェルスクリプトの一部とみなす慣例は大昔からだから。
awkやsedはシェルスクリプトの一部とみなす慣例は大昔からだから。
617デフォルトの名無しさん
2020/10/16(金) 13:05:08.68ID:Sbv90d+P シェルスクリプトに混ぜて書く場面が多ければほぼシェルスクリプトのようなものと思ったって何の問題もない
618デフォルトの名無しさん
2020/10/16(金) 13:14:33.80ID:s+qbwWMb それはお前の願望ですよね?
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html
The awk utility shall execute programs written in the awk programming language,
awkユーティリティは、awkプログラミング言語で記述されたプログラムを実行します。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html
The awk utility shall execute programs written in the awk programming language,
awkユーティリティは、awkプログラミング言語で記述されたプログラムを実行します。
619デフォルトの名無しさん
2020/10/16(金) 14:28:05.49ID:rggqlWcj >>618
そうだよ。UNIXでもそう説明される。ただし、実態は単独では使われない。
そうだよ。UNIXでもそう説明される。ただし、実態は単独では使われない。
620デフォルトの名無しさん
2020/10/16(金) 15:42:36.85ID:gWa/7c+R awkをシェルスクリプトと組み合わせて使っても
awk言語がシェルスクリプトに変わるわけがないって話ですよね?
いつから単独で使われるかどうかの話にすり替わったんですか?
awk言語がシェルスクリプトに変わるわけがないって話ですよね?
いつから単独で使われるかどうかの話にすり替わったんですか?
621デフォルトの名無しさん
2020/10/16(金) 16:33:59.64ID:rggqlWcj シェルスクリプトがシェルのスクリプトだとわかってない?
622デフォルトの名無しさん
2020/10/16(金) 16:36:29.14ID:j/dNEpw/ シェルのスクリプトから呼び出す
外部コマンド(awkやpython)が
シェルではないことぐらい知ってるよね
外部コマンド(awkやpython)が
シェルではないことぐらい知ってるよね
623デフォルトの名無しさん
2020/10/16(金) 16:39:41.36ID:rggqlWcj スクリプトの意味がわかっていない墓穴掘り書き込みですね。
624デフォルトの名無しさん
2020/10/16(金) 16:40:16.10ID:HABswBQ5 シェルのスクリプトはシェルが実行している
シェルとはdashとかbashとかzshのこと
そのスクリプトをシェルが実行していないなら
それはシェルスクリプトではない
シェルとはdashとかbashとかzshのこと
そのスクリプトをシェルが実行していないなら
それはシェルスクリプトではない
625デフォルトの名無しさん
2020/10/16(金) 16:41:33.85ID:JU6AgX+H >>623
いやぁ、そこは「スクリプトの今は○○だ!」って
お前が宣言するところだよ
宣言しちゃったら、間違ってたときに恥ずかしいから言えないんでしょ?
相手のミスを待つんじゃなくてさ、自分の意見を言ってみなよ
いやぁ、そこは「スクリプトの今は○○だ!」って
お前が宣言するところだよ
宣言しちゃったら、間違ってたときに恥ずかしいから言えないんでしょ?
相手のミスを待つんじゃなくてさ、自分の意見を言ってみなよ
626デフォルトの名無しさん
2020/10/16(金) 16:41:50.26ID:JU6AgX+H いやぁ、そこは「スクリプトの意味は○○だ!」って
627デフォルトの名無しさん
2020/10/16(金) 16:43:40.44ID:JU6AgX+H https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html
It was pointed out that with the rules contained in early drafts, the following 【script】 would print nothing:
BEGIN {
y[1.5] = 1
OFMT = "%e"
print y[1.5]
}
> the following 【script】 would print nothing:
It was pointed out that with the rules contained in early drafts, the following 【script】 would print nothing:
BEGIN {
y[1.5] = 1
OFMT = "%e"
print y[1.5]
}
> the following 【script】 would print nothing:
628デフォルトの名無しさん
2020/10/16(金) 16:53:32.17ID:JU6AgX+H629デフォルトの名無しさん
2020/10/16(金) 16:57:30.29ID:RKtFr9bS pythonのコードを描いてそれをログインシェルにしても良いんだぜ
630デフォルトの名無しさん
2020/10/16(金) 16:58:10.24ID:JU6AgX+H シェルスクリプトの話しかしてません
ログインシュルの話なんかしてません
ログインシュルの話なんかしてません
631デフォルトの名無しさん
2020/10/16(金) 17:01:13.72ID:RRnEM1bt ほらね
馬鹿がバレただろ?
馬鹿がバレただろ?
632デフォルトの名無しさん
2020/10/16(金) 17:02:24.56ID:JU6AgX+H ほらね
馬鹿がバレただろ?
※理由を言わないテクニック(笑)
馬鹿がバレただろ?
※理由を言わないテクニック(笑)
633デフォルトの名無しさん
2020/10/16(金) 17:32:16.72ID:Wq4ZK+I/ dashはダッシュ
bashならバッシュ
zshはなんと読む?
bashならバッシュ
zshはなんと読む?
634デフォルトの名無しさん
2020/10/16(金) 17:35:04.80ID:rggqlWcj オツシュ
635デフォルトの名無しさん
2020/10/16(金) 19:12:07.11ID:49KTAZqQ dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash bash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash bash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
636デフォルトの名無しさん
2020/10/16(金) 20:45:17.03ID:QdYgfUXk ゼットシェル
637デフォルトの名無しさん
2020/10/16(金) 21:51:16.80ID:YwASt5fw zsh規制
638デフォルトの名無しさん
2020/10/17(土) 10:31:07.65ID:0qFIP5N2 ch
sch
tsch
sch
tsch
639デフォルトの名無しさん
2020/10/17(土) 16:56:16.43ID:1zxs+zPu foo() { echo $A; }
A=1
A=2 foo
echo $A
ってやった時、1行目に2が表示されると思ってる。
そして2行目には1が表示されると思ってたんだけど
dashだと2と表示される。これってバグ?
A=1
A=2 foo
echo $A
ってやった時、1行目に2が表示されると思ってる。
そして2行目には1が表示されると思ってたんだけど
dashだと2と表示される。これってバグ?
640デフォルトの名無しさん
2020/10/17(土) 16:59:33.10ID:sPQ7iLy+ 普通の挙動じゃない?なにがおかしいと思ってる?
641デフォルトの名無しさん
2020/10/17(土) 17:00:23.70ID:1zxs+zPu642デフォルトの名無しさん
2020/10/17(土) 17:16:48.26ID:oDONqj5W bashやzshが仕様通りだと思うけど
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_01
If the command name is not a special built-in utility or function, the variable assignments shall be exported for the execution environment of the command and shall not affect the current execution environment except as a side-effect of the expansions performed in step 4
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_01
If the command name is not a special built-in utility or function, the variable assignments shall be exported for the execution environment of the command and shall not affect the current execution environment except as a side-effect of the expansions performed in step 4
643デフォルトの名無しさん
2020/10/17(土) 17:17:04.79ID:1zxs+zPu そもそも変数に代入しつつコマンド実行って
POSIXで規程されてない?
POSIXで規程されてない?
644デフォルトの名無しさん
2020/10/17(土) 17:17:34.52ID:1zxs+zPu あ>>642を読む前に書き込んだ。今から見てみる。
645デフォルトの名無しさん
2020/10/17(土) 17:22:47.37ID:1zxs+zPu >>642
これは?
If the command name is a function that is not a standard utility implemented as a function, variable assignments shall affect the current execution environment during the execution of the function. It is unspecified:
Whether or not the variable assignments persist after the completion of the function
Whether or not the variables gain the export attribute during the execution of the function
Whether or not export attributes gained as a result of the variable assignments persist after the completion of the function (if variable assignments persist after the completion of the function)
これは?
If the command name is a function that is not a standard utility implemented as a function, variable assignments shall affect the current execution environment during the execution of the function. It is unspecified:
Whether or not the variable assignments persist after the completion of the function
Whether or not the variables gain the export attribute during the execution of the function
Whether or not export attributes gained as a result of the variable assignments persist after the completion of the function (if variable assignments persist after the completion of the function)
646デフォルトの名無しさん
2020/10/17(土) 17:26:44.95ID:oDONqj5W >>645
あー、関数だからそっちだね
あー、関数だからそっちだね
647デフォルトの名無しさん
2020/10/17(土) 17:35:03.05ID:1zxs+zPu なんでこんなに複雑なんだ・・・
648デフォルトの名無しさん
2020/10/18(日) 00:40:25.10ID:ngGOxfYz649デフォルトの名無しさん
2020/10/18(日) 01:14:29.68ID:u/6+iFla なんで?
650デフォルトの名無しさん
2020/10/19(月) 05:17:03.52ID:8QFJcUQW for music in `cat $OUT`; do
のようなループを書いている
1行ごとに仕事をさせたいのだが
1行の中には空白があり、1行の要素が分断されている
どうすれば分断を防げるだろう?
のようなループを書いている
1行ごとに仕事をさせたいのだが
1行の中には空白があり、1行の要素が分断されている
どうすれば分断を防げるだろう?
651デフォルトの名無しさん
2020/10/19(月) 09:45:54.95ID:4EZdKnY4 while read
652デフォルトの名無しさん
2020/10/19(月) 10:00:20.18ID:8QFJcUQW thanks
653デフォルトの名無しさん
2020/10/25(日) 20:39:06.02ID:/pMQZumA tputってさどこまでがPOSIX準拠なの?
色はPOSIX準拠じゃないでしょ?
色はPOSIX準拠じゃないでしょ?
654デフォルトの名無しさん
2020/10/26(月) 04:13:51.20ID:tssW3pbf UNIX系で端末管理はどうやってるのか学べ
655デフォルトの名無しさん
2020/10/26(月) 16:46:36.36ID:4vMqqkwn AWKがシェルスクリプトに含まれるかどうかは
(定義不十分だし)勝手に議論しとけと思うけど,
GNU・BSD拡張を使っていないAWKで何か実装した場合それは
「POSIXに準拠している」と言えるわな。
だから「シェルスクリプトで〜」と言わずに
「POSIXに準拠したやりかたで〜」と言っておけば,
くだらない揚げ足取られずに済んだ訳だ。
時すでにお寿司🍣
(定義不十分だし)勝手に議論しとけと思うけど,
GNU・BSD拡張を使っていないAWKで何か実装した場合それは
「POSIXに準拠している」と言えるわな。
だから「シェルスクリプトで〜」と言わずに
「POSIXに準拠したやりかたで〜」と言っておけば,
くだらない揚げ足取られずに済んだ訳だ。
時すでにお寿司🍣
656デフォルトの名無しさん
2020/10/26(月) 23:22:51.04ID:2CuyKjNX >>655
あの人は何でもシェルスクリプトでできるって思っちゃってる人だから無理でしょ
POSIXと言いながら、C言語メインとかにはならない
1. シェルスクリプトでやるのがいい (基本)
2. できない? POSIXならC言語とか使ってもOKなんだよ!
POSIXは、シェルスクリプトではなできない事の言い訳として利用してるだけ
だからawkで作ってるのにシェルスクリプトだと言いはる
あの人は何でもシェルスクリプトでできるって思っちゃってる人だから無理でしょ
POSIXと言いながら、C言語メインとかにはならない
1. シェルスクリプトでやるのがいい (基本)
2. できない? POSIXならC言語とか使ってもOKなんだよ!
POSIXは、シェルスクリプトではなできない事の言い訳として利用してるだけ
だからawkで作ってるのにシェルスクリプトだと言いはる
657デフォルトの名無しさん
2020/10/27(火) 07:49:33.18ID:rn8NuyuD C言語使ってって小さなフィルタープログラムをだろ
既存でないフィルターは自分で作るというある意味シェルスクリプトの本道でもあるだろう
既存でないフィルターは自分で作るというある意味シェルスクリプトの本道でもあるだろう
658デフォルトの名無しさん
2020/10/27(火) 08:25:50.66ID:u8IX9f6Z >>657
シェルスクリプトってまさにこの
「C言語で書いた早くて小さいプログラム」
を組み合わせる為の言語だと思ってる。
もちろんシェルスクリプトの制御機構は計算完備なので
シェルとしての機能だけでプログラムを書くこともできるけど,
Unix哲学≠ノ従うならそれはちょっと違うんじゃないかと思う。
シェルスクリプトで完結する人ってUnix哲学をやたら推すし,
Unix哲学自体は今でもある程度参考になるとは思うけど,
ほんとうにUnixらしいやりかたは
「主処理はC言語で書いて組み合わせはシェル」っていうことだと思う。
シェルスクリプトってまさにこの
「C言語で書いた早くて小さいプログラム」
を組み合わせる為の言語だと思ってる。
もちろんシェルスクリプトの制御機構は計算完備なので
シェルとしての機能だけでプログラムを書くこともできるけど,
Unix哲学≠ノ従うならそれはちょっと違うんじゃないかと思う。
シェルスクリプトで完結する人ってUnix哲学をやたら推すし,
Unix哲学自体は今でもある程度参考になるとは思うけど,
ほんとうにUnixらしいやりかたは
「主処理はC言語で書いて組み合わせはシェル」っていうことだと思う。
659デフォルトの名無しさん
2020/10/27(火) 09:36:02.25ID:NxyNpTjA 自分の中でのシェルスクリプトって
新たにプログラムを位置から作るんじゃなくて
既存のコマンドを使って繋ぎ合わせて
間に合わせのプログラムを作るものだと思ってる
自分はプログラミングできるから普通にプログラム書けるけど
コンパイルとかの煩雑な手順を考えると
シェルスクリプトをぱっと書いてすぐ使えるってのはすごい手軽
パイプ処理が肝かなと思ってる
新たにプログラムを位置から作るんじゃなくて
既存のコマンドを使って繋ぎ合わせて
間に合わせのプログラムを作るものだと思ってる
自分はプログラミングできるから普通にプログラム書けるけど
コンパイルとかの煩雑な手順を考えると
シェルスクリプトをぱっと書いてすぐ使えるってのはすごい手軽
パイプ処理が肝かなと思ってる
660デフォルトの名無しさん
2020/10/27(火) 10:23:30.49ID:nSGvpwuJ >>658
シェルスクリプトをシェルスクリプトで完結する必要はない。
例えば、C言語で作った何かや「awkで作ったなにか」を呼び出すのもあり
それは当然の話だし、否定していない
言いたいことは、それは「awkで作ったなにか」であって
シェルスクリプトではないということだけ
みとめよう。それはawkプログラミングだ
シェルスクリプトをシェルスクリプトで完結する必要はない。
例えば、C言語で作った何かや「awkで作ったなにか」を呼び出すのもあり
それは当然の話だし、否定していない
言いたいことは、それは「awkで作ったなにか」であって
シェルスクリプトではないということだけ
みとめよう。それはawkプログラミングだ
661デフォルトの名無しさん
2020/10/27(火) 10:29:52.20ID:nSGvpwuJ シェルスクリプトで外部コマンドを呼び出すのはありだし
全ての環境で動かすならPOSIX準拠にしろと思うが
POSIX準拠にこだわる必要もない
例えば、dockerやgitはPOSIX準拠ではないコマンドだ
POSIX至上主義かなにかしらんが、シェルスクリプトから
使っていいのはPOSIX準拠コマンドだけだというのなら
dockerやgitすら使えないということになる
んなばかな(笑)
環境が限定される(つまりdockerやgitが入っていること)という前提で
シェルスクリプトでPOSIX準拠ではないコマンドは普通に使う
つまり何が言いたいかと言うと、シェルスクリプトで読みやすさのために長いオプションを使えという話だ
長いオプションはPOSIX準拠ではないからショートオプションを使え?アホか
どちらにしろPOSIX準拠でないコマンドを使うのだ
全ての環境で動かすならPOSIX準拠にしろと思うが
POSIX準拠にこだわる必要もない
例えば、dockerやgitはPOSIX準拠ではないコマンドだ
POSIX至上主義かなにかしらんが、シェルスクリプトから
使っていいのはPOSIX準拠コマンドだけだというのなら
dockerやgitすら使えないということになる
んなばかな(笑)
環境が限定される(つまりdockerやgitが入っていること)という前提で
シェルスクリプトでPOSIX準拠ではないコマンドは普通に使う
つまり何が言いたいかと言うと、シェルスクリプトで読みやすさのために長いオプションを使えという話だ
長いオプションはPOSIX準拠ではないからショートオプションを使え?アホか
どちらにしろPOSIX準拠でないコマンドを使うのだ
662デフォルトの名無しさん
2020/10/27(火) 11:22:58.65ID:B6tDM1Ic663デフォルトの名無しさん
2020/10/27(火) 11:36:52.21ID:nSGvpwuJ "既存プログラム"を組み合わせるのはUnixらしいが
新しいコマンドを作って組み合わせて使うユニケージはUnixらしくない
しかもそのコマンドが完全に特殊用途向けのコマンドであり
Unixでいうシェルスクリプトにはまったくもって応用できない
今、ユニケージ開発手法にギークが熱狂するワケ【USP研究所代表&オープンソースOSコミッター対談】
【PR】2020.09.25
https://type.jp/et/feature/14070/
はは、クソ開発手法だ。ギークのだーれも熱狂してねーよ
せめてマニアとかオタクとかいえ、ギークと言ったら海外用語だ
海外に進出してないユニケージが熱狂とか嘘作んじゃねーよ
新しいコマンドを作って組み合わせて使うユニケージはUnixらしくない
しかもそのコマンドが完全に特殊用途向けのコマンドであり
Unixでいうシェルスクリプトにはまったくもって応用できない
今、ユニケージ開発手法にギークが熱狂するワケ【USP研究所代表&オープンソースOSコミッター対談】
【PR】2020.09.25
https://type.jp/et/feature/14070/
はは、クソ開発手法だ。ギークのだーれも熱狂してねーよ
せめてマニアとかオタクとかいえ、ギークと言ったら海外用語だ
海外に進出してないユニケージが熱狂とか嘘作んじゃねーよ
664デフォルトの名無しさん
2020/10/27(火) 12:20:04.79ID:IzIv2i9p Power-Shell は unix らしさの極みか?
漏れはそうは思わんが
漏れはそうは思わんが
665デフォルトの名無しさん
2020/10/27(火) 12:30:26.45ID:eXfPuMud Power-Shell は反Unixだろ
そもそもWindowsにはまともなコマンドがないから
コマンドの連携ということがしづらい
あっても、正常終了時に「処理が完了しました」とかでて連携ができない
あれはコマンドを連携させずに、ただ並べるだけ
そういう世界だからシェルだけ改良しても意味がない
Unixでいうコマンド相当のものが必要
それが.NET framework。しかし.NET frameworkはAPI
APIだから普段CLIから実行するものではないし
コマンドとして使うのは面倒
Power-Shellはシェルスクリプトとしての特徴と
メリットである簡潔さが失われた「普通の言語」に相当する
そもそもWindowsにはまともなコマンドがないから
コマンドの連携ということがしづらい
あっても、正常終了時に「処理が完了しました」とかでて連携ができない
あれはコマンドを連携させずに、ただ並べるだけ
そういう世界だからシェルだけ改良しても意味がない
Unixでいうコマンド相当のものが必要
それが.NET framework。しかし.NET frameworkはAPI
APIだから普段CLIから実行するものではないし
コマンドとして使うのは面倒
Power-Shellはシェルスクリプトとしての特徴と
メリットである簡潔さが失われた「普通の言語」に相当する
666デフォルトの名無しさん
2020/10/27(火) 18:52:31.21ID:B6tDM1Ic >>665
PowerShellを使ったことがないだろ?w
ヘンにハイフンを入れたりしてるしな。
コマンドによってはちゃんとオブジェクトを返すし、パイプで処理することもできる。
.NETを直接実行することもできるし、テキストベースでしかないUnixシェルよりも使いやすいこともある。
「反Unix」というよりは、それを越えたところもあるWindowsらしいシェルと言える。
ただ、いつまでどのようにサポートされるのか、最近はちょっと不安。。。
poshとのかねあいとか。
PowerShellを使ったことがないだろ?w
ヘンにハイフンを入れたりしてるしな。
コマンドによってはちゃんとオブジェクトを返すし、パイプで処理することもできる。
.NETを直接実行することもできるし、テキストベースでしかないUnixシェルよりも使いやすいこともある。
「反Unix」というよりは、それを越えたところもあるWindowsらしいシェルと言える。
ただ、いつまでどのようにサポートされるのか、最近はちょっと不安。。。
poshとのかねあいとか。
667デフォルトの名無しさん
2020/10/27(火) 18:54:44.28ID:a7WAgl/q フィルターは、Ruby で作る
Linux のPowerShell は、Azure しか使われていないだろ?
Linux のPowerShell は、Azure しか使われていないだろ?
668デフォルトの名無しさん
2020/10/27(火) 20:43:43.48ID:gFMGawtc669デフォルトの名無しさん
2020/10/27(火) 22:01:39.01ID:7WqSRFWS スペースがあると誤解しているのと、スペースをハイフンに置き換える習慣があるジジイの命名
670デフォルトの名無しさん
2020/10/27(火) 22:32:46.87ID:B6tDM1Ic671デフォルトの名無しさん
2020/10/28(水) 02:15:01.01ID:TQndZTJN >>670
PowerShellで作ったプログラムをオプソで公開してるがなにか?
PowerShellで作ったプログラムをオプソで公開してるがなにか?
672デフォルトの名無しさん
2020/10/28(水) 06:49:20.54ID:Df2NTJPb オプソってなに?
673デフォルトの名無しさん
2020/10/28(水) 08:15:00.68ID:zcWN9+mU Open source
674デフォルトの名無しさん
2020/10/28(水) 13:27:15.30ID:l3R5yM/w675デフォルトの名無しさん
2020/10/28(水) 17:48:34.37ID:QWPlcBUD これだけマルチコアになった今日び、コマンドの方も対応して欲しい気がする。
ファイル圧縮のコマンドとか、マルチスレッドで処理したら速くできるはず。
あるいはどこまでもマルチプロセス主義でいくというなら... 例えば並列パイプ? というか
今のパイプだとデータフローが一本道だがこれを並列に分散して走らせて最後データを
一本にまとめるような処理の仕組みがあってもいいのではないかと。
ちなみに一本道は「いっぽんみち」で「いっぽんどう」ではないからな、って聞いてないか
ファイル圧縮のコマンドとか、マルチスレッドで処理したら速くできるはず。
あるいはどこまでもマルチプロセス主義でいくというなら... 例えば並列パイプ? というか
今のパイプだとデータフローが一本道だがこれを並列に分散して走らせて最後データを
一本にまとめるような処理の仕組みがあってもいいのではないかと。
ちなみに一本道は「いっぽんみち」で「いっぽんどう」ではないからな、って聞いてないか
676デフォルトの名無しさん
2020/10/28(水) 19:10:42.29ID:Aw3ALjki 例えるならxargs
677デフォルトの名無しさん
2020/10/28(水) 19:52:02.68ID:vhMFXsQD パイプで繋げば自動でマルチになるではないか
678デフォルトの名無しさん
2020/10/28(水) 20:17:48.21ID:FddMFcrq あまりわかってなさそだな>>675は
並列パイプとかも簡単に言ってそう
並列パイプとかも簡単に言ってそう
679デフォルトの名無しさん
2020/10/28(水) 20:18:18.79ID:NAroBJuS 最期に一本にまとめるというのならGNU parallelやろ?
バックグラウンドプロセスを使って自分でまとめてもいいが
バックグラウンドプロセスを使って自分でまとめてもいいが
680デフォルトの名無しさん
2020/10/28(水) 20:22:18.78ID:zcWN9+mU パイプって元々非同期処理(これはPOSIXで規定)だから,
実装によっては普通にマルチスレッドで処理してんじゃないの?
実装によっては普通にマルチスレッドで処理してんじゃないの?
681デフォルトの名無しさん
2020/10/28(水) 20:22:22.24ID:58wSuA1P そもそもUnixにはforkというコマンドがあってだな
682デフォルトの名無しさん
2020/10/28(水) 20:23:15.77ID:XBU5yUok ターミナルを2枚開いてマルチプロセス!
683デフォルトの名無しさん
2020/10/28(水) 20:32:27.18ID:NAroBJuS 多くの言語が並列処理を行うように明示的に書かなければ並列処理されないのに比べて
シェルスクリプトは普通に書いてもかってに並列処理が行われる言語の1つ
シェルスクリプトは普通に書いてもかってに並列処理が行われる言語の1つ
684デフォルトの名無しさん
2020/10/28(水) 21:19:48.83ID:zcWN9+mU685デフォルトの名無しさん
2020/10/28(水) 21:48:39.39ID:K6dD4VVC >>683,684
お前らもプロセスとスレッドの違いがわかってないようだがな
お前らもプロセスとスレッドの違いがわかってないようだがな
686デフォルトの名無しさん
2020/10/28(水) 22:22:18.44ID:1fF6N90I >>685
わかってるが、何を根拠にいちゃもんつけたの?w
わかってるが、何を根拠にいちゃもんつけたの?w
687デフォルトの名無しさん
2020/10/28(水) 22:37:57.46ID:K6dD4VVC お前はどっちなの?
まだ ID:NAroBJuS ならそうわかってはないようでもあるが、ID:zcWN9+mU は明らかにわかってないなw
まだ ID:NAroBJuS ならそうわかってはないようでもあるが、ID:zcWN9+mU は明らかにわかってないなw
688デフォルトの名無しさん
2020/10/28(水) 22:42:56.15ID:1fF6N90I 質問を質問で返すな
まずお前が根拠をいえ
言わないで質問する理由なんかないだろ
まずお前が根拠をいえ
言わないで質問する理由なんかないだろ
689デフォルトの名無しさん
2020/10/28(水) 22:43:30.54ID:l3R5yM/w まあ、>>680の「マルチスレッド」はおかしいな。
言うなら「マルチタスク」とかやろ。
言うなら「マルチタスク」とかやろ。
690デフォルトの名無しさん
2020/10/28(水) 22:45:28.30ID:K6dD4VVC どっちなのかも言えないのか。後者だろなな
691デフォルトの名無しさん
2020/10/28(水) 22:47:04.72ID:1fF6N90I 前者だが?はい、言いましたーw
次はお前の番だが、ここまでやっておいて
お前は答えられないってことはないよな
次はお前の番だが、ここまでやっておいて
お前は答えられないってことはないよな
692デフォルトの名無しさん
2020/10/28(水) 22:54:11.38ID:K6dD4VVC693デフォルトの名無しさん
2020/10/28(水) 22:56:23.42ID:1fF6N90I >>692
誰が同じことを繰り返し言えって言った?
> 「多くの言語が並列処理を行うように明示的に書かなければ並列処理されない」なんてわざわざ書くのはあんまわかってなさそうだなってとこ
の理由を書けといったんだが?
誰が同じことを繰り返し言えって言った?
> 「多くの言語が並列処理を行うように明示的に書かなければ並列処理されない」なんてわざわざ書くのはあんまわかってなさそうだなってとこ
の理由を書けといったんだが?
694デフォルトの名無しさん
2020/10/28(水) 22:57:50.86ID:K6dD4VVC 書いたぞ。読まないのは知らないぞ
695デフォルトの名無しさん
2020/10/28(水) 22:59:25.60ID:1fF6N90I 書いたというのなら、引用できるはずだなw
新しい言葉を追加せずに、理由を引用してみろ
新しい言葉を追加せずに、理由を引用してみろ
696デフォルトの名無しさん
2020/10/28(水) 23:01:45.79ID:K6dD4VVC 読む気なさそうだからなあw
すでに書いた後は知らない
すでに書いた後は知らない
697デフォルトの名無しさん
2020/10/28(水) 23:03:01.34ID:X2c0ql0Z な?引用できなかった。
698デフォルトの名無しさん
2020/10/29(木) 08:36:16.60ID:D7f8M1As 「こいつ分かってない」って言葉ってほんとうに便利よね。
それだけで
・自分が分かっている人間≠セと暗示できる
(でもあくまで暗示だから言質を取られる恐れもないw)
・相手より上の立場に立つ(という錯覚が)できる
わけだからさ。
それだけで
・自分が分かっている人間≠セと暗示できる
(でもあくまで暗示だから言質を取られる恐れもないw)
・相手より上の立場に立つ(という錯覚が)できる
わけだからさ。
699デフォルトの名無しさん
2020/10/29(木) 08:43:02.83ID:D7f8M1As ていうかシェルスクリプトで簡単にできるのは「マルチタスク」であって,
マルチタスクというのは非同期的な処理だから「非同期処理が簡単にできる」
という言説は正しいと言えるのかも知れないが(それでも違和感がある),
普通「マルチスレッド」といったときの同一プロセス内での複数スレッド処理に関しては
そもそもCPUの機能を全部抽象化されてるようなシェルスクリプトでは
外部コマンドを使ったりしないと実現できんのでは。
もしかしたら俺が知らんだけで
POSIXかどっかで「この動作はマルチ*スレッド*で処理されますよ」
というのが規定されている可能性もあるが,
ちょっと考えにくい。
マルチタスクというのは非同期的な処理だから「非同期処理が簡単にできる」
という言説は正しいと言えるのかも知れないが(それでも違和感がある),
普通「マルチスレッド」といったときの同一プロセス内での複数スレッド処理に関しては
そもそもCPUの機能を全部抽象化されてるようなシェルスクリプトでは
外部コマンドを使ったりしないと実現できんのでは。
もしかしたら俺が知らんだけで
POSIXかどっかで「この動作はマルチ*スレッド*で処理されますよ」
というのが規定されている可能性もあるが,
ちょっと考えにくい。
700デフォルトの名無しさん
2020/10/29(木) 10:29:24.34ID:YCEy/zhh シェルの内部コマンドでマルチスレッド化したほうが効率的なら勝手にやりゃいいんじゃねーの?
具体的にどのコマンドを対応させたいの?
もう誰か作ってんじゃないの?
具体的にどのコマンドを対応させたいの?
もう誰か作ってんじゃないの?
701デフォルトの名無しさん
2020/10/29(木) 10:45:18.65ID:XkZMBg2d >同一プロセス内での複数スレッド処理に関しては
>そもそもCPUの機能を全部抽象化されてるようなシェルスクリプトでは
>外部コマンドを使ったりしないと実現できんのでは
何を言いたいのかイミフ
複数のスレッドで作業を分割して同時並行で実行するが、終了は順番に受け取るとかめんどくさいだとかで普通にできるだろう。単にやる必要もないってとこだな
>POSIXかどっかで「この動作はマルチ*スレッド*で処理されますよ」
>というのが規定されている可能性もあるが,
>ちょっと考えにくい。
なんか純粋なUnix系のOSを理解してないっぽい。純粋部分はマルチスレッドはOSで「勝手に」はやらんだろう。CUIレベルだと必要なさげだからな。GUIなOSでは勝手にはあるけど
>そもそもCPUの機能を全部抽象化されてるようなシェルスクリプトでは
>外部コマンドを使ったりしないと実現できんのでは
何を言いたいのかイミフ
複数のスレッドで作業を分割して同時並行で実行するが、終了は順番に受け取るとかめんどくさいだとかで普通にできるだろう。単にやる必要もないってとこだな
>POSIXかどっかで「この動作はマルチ*スレッド*で処理されますよ」
>というのが規定されている可能性もあるが,
>ちょっと考えにくい。
なんか純粋なUnix系のOSを理解してないっぽい。純粋部分はマルチスレッドはOSで「勝手に」はやらんだろう。CUIレベルだと必要なさげだからな。GUIなOSでは勝手にはあるけど
702デフォルトの名無しさん
2020/10/29(木) 10:55:31.90ID:yfEeCvlS シェルスクリプトはHaskellと同じで自動的にマルチスレッド化するプログラミング
言語ですよ!
素晴らしいですよ!
ってこと?
言語ですよ!
素晴らしいですよ!
ってこと?
703デフォルトの名無しさん
2020/10/29(木) 10:57:33.10ID:XkZMBg2d >>700
イミフな部分は シェルの内部コマンド をマルチスレッドでという話か
内部コマンドっても単にコマンドを内包してるだけで、外部コマンドと変わらない(いや、変わらないと困る)もんだろと思ってるから、そういう読みはできなかった。なるほどね
ksh,zsh でも確かマルチスレッドではなかったような
i=0
command | while read j; do
i=$((i+j))
done
って、i がちゃんと変わるようにしてるのに(確かネストしても大丈夫だったような)。実現方法はなんだっけ
イミフな部分は シェルの内部コマンド をマルチスレッドでという話か
内部コマンドっても単にコマンドを内包してるだけで、外部コマンドと変わらない(いや、変わらないと困る)もんだろと思ってるから、そういう読みはできなかった。なるほどね
ksh,zsh でも確かマルチスレッドではなかったような
i=0
command | while read j; do
i=$((i+j))
done
って、i がちゃんと変わるようにしてるのに(確かネストしても大丈夫だったような)。実現方法はなんだっけ
704デフォルトの名無しさん
2020/10/29(木) 10:59:39.85ID:XkZMBg2d705デフォルトの名無しさん
2020/10/29(木) 11:25:48.02ID:yfEeCvlS でも、自動的にマルチスレッド化してC言語の64倍高速化する可能性も、ワンチャンあるって事ですよね?
試してみるバリューあるのでは?
試してみるバリューあるのでは?
706デフォルトの名無しさん
2020/10/29(木) 11:31:36.93ID:XkZMBg2d ないよw
C言語でもOpenMP使えば割と見た目簡単にできそうだが、OpenMPもそれほど流行ってない
プロセス=特に何か意識する必要もない
スレッド=常時何かを意識する必要がある
そう簡単な話ではない
Haskellとかはマルチスレッドでなきゃそもそも実現できない言語なのだからそれと比べても意味はないな。Haskell出したのはそう意味あるわけではないだろけど
C言語でもOpenMP使えば割と見た目簡単にできそうだが、OpenMPもそれほど流行ってない
プロセス=特に何か意識する必要もない
スレッド=常時何かを意識する必要がある
そう簡単な話ではない
Haskellとかはマルチスレッドでなきゃそもそも実現できない言語なのだからそれと比べても意味はないな。Haskell出したのはそう意味あるわけではないだろけど
707デフォルトの名無しさん
2020/10/29(木) 11:38:39.55ID:XkZMBg2d >そもそも実現できない言語なのだから
というわけでもないのね
出し受けがどでかいばかりじゃないからそりゃそうか
というわけでもないのね
出し受けがどでかいばかりじゃないからそりゃそうか
708デフォルトの名無しさん
2020/10/29(木) 11:49:45.20ID:yfEeCvlS シェルスクリプトがマルチ高速化のアビリティを持つのは否定しようがないファクトですよね?
709デフォルトの名無しさん
2020/10/29(木) 11:59:44.96ID:XkZMBg2d 小池とかのギャグに走ってるだけだろ
710デフォルトの名無しさん
2020/10/29(木) 15:03:10.28ID:8VEYobTG711デフォルトの名無しさん
2020/10/29(木) 15:45:57.37ID:i0HZBLVS 自己紹介がお上手
712デフォルトの名無しさん
2020/10/29(木) 22:21:37.37ID:87BKVwTm 並行・並列とプロセス・OSスレッド・軽量スレッドと同期・非同期の切り分けがごっちゃになってそう知らんけど
713デフォルトの名無しさん
2020/10/29(木) 22:49:07.55ID:yfEeCvlS バリューないですか?
714デフォルトの名無しさん
2020/10/29(木) 22:51:15.28ID:Ju4cpcAY 並行と並列はいまだにうまく使い分けられていない印象
正確な定義はどこかにあるんだろうが、人によって使われ方が違う
正確な定義はどこかにあるんだろうが、人によって使われ方が違う
715デフォルトの名無しさん
2020/10/29(木) 22:55:56.32ID:yfEeCvlS コンカレントとパラレルの違いはアジア人にはわかり辛いですからね。
キリスト教的考え方が普及していないからですね。
キリスト教的考え方が普及していないからですね。
716デフォルトの名無しさん
2020/10/29(木) 23:59:18.90ID:N/u/fZ2Q 並行と並列は使ってるCPUで決まる。
プログラムの書き方に違いはない。
プログラムの書き方に違いはない。
717デフォルトの名無しさん
2020/10/30(金) 17:02:49.47ID:ig1/qwB5 $@みたいな擬配列変数に格納されている値 一つ一つに対して
何か処理を行なう時に,別の変数を用意しない(使わない)方法って原理的に可能かな。
普通は
for args in $@; do
なにか処理
done
というスクリプトを組むと思うんだけど,
argsみたいな変数を使わずに済む方法があれば知りたい。
(シェルスクリプトは基本的には変数の無駄遣いを避けなきゃいけないので。
まあそれが「欠陥」かどうかは別として)
何か処理を行なう時に,別の変数を用意しない(使わない)方法って原理的に可能かな。
普通は
for args in $@; do
なにか処理
done
というスクリプトを組むと思うんだけど,
argsみたいな変数を使わずに済む方法があれば知りたい。
(シェルスクリプトは基本的には変数の無駄遣いを避けなきゃいけないので。
まあそれが「欠陥」かどうかは別として)
718デフォルトの名無しさん
2020/10/30(金) 17:39:03.81ID:mooUMZ8S なう
719デフォルトの名無しさん
2020/10/30(金) 18:20:41.07ID:vW0P/VrR PowerShellってKshとかPerlとかUnixのシェルやスクリプト言語を研究してベースにして作ったって、昔QuoraかどこかでMSの社員が答えてた
begin/endブロックとか、昔からUnix使ってればそのまま活かせる知識かなりある
begin/endブロックとか、昔からUnix使ってればそのまま活かせる知識かなりある
720デフォルトの名無しさん
2020/10/30(金) 18:25:55.93ID:sXVsY8+M721デフォルトの名無しさん
2020/10/30(金) 18:26:25.00ID:sXVsY8+M 他にも再起でできる
723デフォルトの名無しさん
2020/10/30(金) 18:30:51.05ID:sXVsY8+M > (シェルスクリプトは基本的には変数の無駄遣いを避けなきゃいけないので。
これはなんで? 変数名がぶつかるとかいう話?
これはなんで? 変数名がぶつかるとかいう話?
724デフォルトの名無しさん
2020/10/30(金) 18:33:22.92ID:sXVsY8+M ちなみにそれダブルクォートがあったほうがいい
for args in "$@"; do
なにか処理
done
もしくは逆に省略
for args; do
なにか処理
done
for args in "$@"; do
なにか処理
done
もしくは逆に省略
for args; do
なにか処理
done
725デフォルトの名無しさん
2020/10/30(金) 18:39:10.50ID:sXVsY8+M ちなみにそれダブルクォートがあったほうがいい
for args in "$@"; do
もしくは逆に省略
for args; do
for args in "$@"; do
もしくは逆に省略
for args; do
726デフォルトの名無しさん
2020/10/30(金) 18:39:31.11ID:sXVsY8+M 書き込みエラった
727717
2020/10/30(金) 19:07:22.75ID:ig1/qwB5 >>723
そういうことです。
Bashとかの独自機能に頼れば
局所変数を使えるみたいだけど
それを踏まえても,
例えばC言語よりは「変数の使い過ぎ」には
注意しなくちゃならない(よね?)
>>725
for文ってin省略したら$@を暗示するのマジか!
知らんかったけどちゃんとPOSIXでも規定されてたわ。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_04_03
そういうことです。
Bashとかの独自機能に頼れば
局所変数を使えるみたいだけど
それを踏まえても,
例えばC言語よりは「変数の使い過ぎ」には
注意しなくちゃならない(よね?)
>>725
for文ってin省略したら$@を暗示するのマジか!
知らんかったけどちゃんとPOSIXでも規定されてたわ。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_04_03
728デフォルトの名無しさん
2020/10/30(金) 19:15:49.74ID:sXVsY8+M > for文ってin省略したら$@を暗示するのマジか!
他にはgetoptsもそうだな。こっちは逆によく省略されるから
逆に指定できたのか!になると思うが
今は解決してるかもしれないが、$@が0個の時、
set -u状態で"$@"を参照するとエラーになるシェルがあったから
for args in "$@" じゃなくて省略してfor argsと書くようになった
他にはgetoptsもそうだな。こっちは逆によく省略されるから
逆に指定できたのか!になると思うが
今は解決してるかもしれないが、$@が0個の時、
set -u状態で"$@"を参照するとエラーになるシェルがあったから
for args in "$@" じゃなくて省略してfor argsと書くようになった
729デフォルトの名無しさん
2020/10/30(金) 19:32:14.84ID:yPjXBzu5 >>719
実際、PerlとBashに慣れてると、かなり書きやすいからな。
実際、PerlとBashに慣れてると、かなり書きやすいからな。
730デフォルトの名無しさん
2020/11/01(日) 17:25:31.39ID:xiHRYmfR 昔Perlやってて関数の$1とかいちいち変数に入れるのダサいよなぁと思っていたけど
シェルスクリプトをPOSIX縛りしてたらローカル変数なくて、そのまま$1とかでいいやって思ってたら
どうせ関数は小さく書くのは当たり前だから別に$1とかで問題ないと思うようになったな
外部からどういう引数で渡ってくるのか分かりづらいものはコメント書いてるけど
シェルスクリプトをPOSIX縛りしてたらローカル変数なくて、そのまま$1とかでいいやって思ってたら
どうせ関数は小さく書くのは当たり前だから別に$1とかで問題ないと思うようになったな
外部からどういう引数で渡ってくるのか分かりづらいものはコメント書いてるけど
731デフォルトの名無しさん
2020/11/01(日) 18:51:46.05ID:CuITjVo7 つきつめるとアセンブリで問題ないになる
732デフォルトの名無しさん
2020/11/01(日) 19:28:12.68ID:xiHRYmfR そうはならないよ。アセンブリは短く書こうとしてもどうしても長くなるから
「どうせ関数は小さく書くのは当たり前」が実現できない
「どうせ関数は小さく書くのは当たり前」が実現できない
733デフォルトの名無しさん
2020/11/01(日) 21:18:05.45ID:HWQKX8bn 名前の話なら、昔は名前が長いだけで容量が取られるから短くしていただけで、いまとなっては短いメリットはあまりない。
734デフォルトの名無しさん
2020/11/02(月) 10:41:13.59ID:n2BNqgKx たいてい編集するときに補完してくれるしね。
735デフォルトの名無しさん
2020/11/02(月) 11:22:36.19ID:n2BNqgKx poshを「POSIXシェルスクリプトがちゃんと動くか」というのを
確かめるのに使ってる人いる?
シェルスクリプトの妥当性をshellcheckみたいに静的じゃなく動的に検証したい。
確かめるのに使ってる人いる?
シェルスクリプトの妥当性をshellcheckみたいに静的じゃなく動的に検証したい。
736デフォルトの名無しさん
2020/11/02(月) 12:43:28.28ID:WhiKrslV737デフォルトの名無しさん
2020/11/02(月) 13:09:30.56ID:FhHZncje >>735
poshはバグが大量にある古いpdkshのフォークで
ろくにメンテナンスされてないので今も大量にバグが有る
https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=posh
poshはバグが大量にある古いpdkshのフォークで
ろくにメンテナンスされてないので今も大量にバグが有る
https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=posh
738デフォルトの名無しさん
2020/11/02(月) 13:11:03.65ID:FhHZncje POSIX準拠してるかを調べたいならdashを使ったほうが何倍もマシ
739デフォルトの名無しさん
2020/11/02(月) 13:26:39.74ID:n2BNqgKx >>738
dashね。thx
dashね。thx
740デフォルトの名無しさん
2020/11/02(月) 13:28:36.85ID:ew0mgVfp741デフォルトの名無しさん
2020/11/02(月) 13:28:58.41ID:lTcfprDV dash dash dash
742デフォルトの名無しさん
2020/11/02(月) 16:38:46.09ID:FhHZncje シェルスクリプトも最後のコマンドの評価結果をそのまま返す
743デフォルトの名無しさん
2020/11/02(月) 16:39:37.65ID:FhHZncje744デフォルトの名無しさん
2020/11/02(月) 16:42:40.40ID:UfGVYnOo いまどきのシェルスクリプトはほとんど/bin/bashでしょ
745デフォルトの名無しさん
2020/11/02(月) 16:56:54.34ID:pNDhR5km シバンに使われるのは/bin/shだろ?
そしてそれがDebian・Ubuntuだとdashになる
なぜ今どきはbashだと思ったのか?
そしてそれがDebian・Ubuntuだとdashになる
なぜ今どきはbashだと思ったのか?
746デフォルトの名無しさん
2020/11/02(月) 17:08:07.37ID:UfGVYnOo 初めはそうだったんだけどな
ディストリによっては/bin/shが/bin/bashなのでそれと気づかずbash拡張を使う奴が出てきて、debianやbsd等の/bin/shが/bin/bashじゃない環境じゃ動かなくなってきて
「bash拡張使ったスクリプトはshebangもちゃんと/bin/bashにしよう」ってなってきた
ディストリによっては/bin/shが/bin/bashなのでそれと気づかずbash拡張を使う奴が出てきて、debianやbsd等の/bin/shが/bin/bashじゃない環境じゃ動かなくなってきて
「bash拡張使ったスクリプトはshebangもちゃんと/bin/bashにしよう」ってなってきた
747デフォルトの名無しさん
2020/11/02(月) 17:14:14.89ID:pNDhR5km その結果bashが入ってないAlpine Linuxで動かないという問題が発生するわけで
さっさとPOSIX準拠に変更したほうがいい。bash依存は甘え。
っていうか俺勉強したくないんだーと言って必要もないのに/bin/bashにして
動かなくて後悔してるやつが増えてきてる。自業自得だが。
さっさとPOSIX準拠に変更したほうがいい。bash依存は甘え。
っていうか俺勉強したくないんだーと言って必要もないのに/bin/bashにして
動かなくて後悔してるやつが増えてきてる。自業自得だが。
748デフォルトの名無しさん
2020/11/02(月) 17:15:01.41ID:pNDhR5km シェルスクリプトはPOSIX準拠にしておけ
bash特有の機能を使いたくなったら別の言語を使うべきだ
bash特有の機能を使いたくなったら別の言語を使うべきだ
749デフォルトの名無しさん
2020/11/02(月) 17:17:28.98ID:ZpVsHyOp macのデフォルトシェルはzsh
750デフォルトの名無しさん
2020/11/02(月) 17:21:10.82ID:pNDhR5km macの/bin/shはbash
751デフォルトの名無しさん
2020/11/02(月) 17:23:00.46ID:ZpVsHyOp macの/bin/shはzsh
752デフォルトの名無しさん
2020/11/02(月) 17:23:45.79ID:pNDhR5km >>751
すぐバレる嘘を付くな
すぐバレる嘘を付くな
753デフォルトの名無しさん
2020/11/02(月) 17:24:32.82ID:pNDhR5km そもそも>>2に書いてある
・デフォルトシェルのシバンは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
・デフォルトシェルのシバンは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
754デフォルトの名無しさん
2020/11/02(月) 17:30:22.78ID:Xv3pPvZM tcsh : 思い出してください
755デフォルトの名無しさん
2020/11/02(月) 17:49:15.11ID:ew0mgVfp756デフォルトの名無しさん
2020/11/02(月) 18:35:32.48ID:pNDhR5km なんでbash使うんですか?bashじゃないとダメなことでもやってるんですか?
757デフォルトの名無しさん
2020/11/02(月) 18:52:50.96ID:j60yzXh/ 自分のためのスクリプトなので書きやすいように書くだけ
758デフォルトの名無しさん
2020/11/02(月) 18:54:08.71ID:pNDhR5km だからbashのどういうところが書きやすいの?
759デフォルトの名無しさん
2020/11/02(月) 18:56:50.41ID:wsJGkNeE >>741
wish and dash
wish and dash
760デフォルトの名無しさん
2020/11/02(月) 19:19:37.82ID:6dMpVrf4 < <( )
761デフォルトの名無しさん
2020/11/02(月) 19:30:22.69ID:pNDhR5km cmd |
762デフォルトの名無しさん
2020/11/02(月) 19:35:41.93ID:aDX4tDqS 代替になり得てないだろう
いつものPOSIXなやつか
いつものPOSIXなやつか
763デフォルトの名無しさん
2020/11/02(月) 19:40:13.91ID:pNDhR5km それがなりえてるんだなぁ
764デフォルトの名無しさん
2020/11/02(月) 19:42:01.99ID:aDX4tDqS お前にとってはな
全てお前にとってはだろうw
全てお前にとってはだろうw
765デフォルトの名無しさん
2020/11/02(月) 19:43:07.75ID:ew0mgVfp766デフォルトの名無しさん
2020/11/02(月) 19:44:07.24ID:pNDhR5km767デフォルトの名無しさん
2020/11/02(月) 19:45:33.32ID:pNDhR5km だいたいbashスクリプトじゃなきゃダメなんだみたいに
言ってるやつのスクリプトはfunctionをなくして
[[ ]] を [ ] に置き換えるだけで8割はそのままPOSIX準拠にできるんだがw
言ってるやつのスクリプトはfunctionをなくして
[[ ]] を [ ] に置き換えるだけで8割はそのままPOSIX準拠にできるんだがw
768デフォルトの名無しさん
2020/11/02(月) 19:47:44.55ID:aDX4tDqS >>765
そもそも前提が違う
シバンに /bin/sh と書いてるならPOSIXで書くべきってだけだな
特定のシェルが好みでその機能を使って、シバンもそれにしてるなら好き好きにでしかないわな
なぜか、
>シバンに使われるのは/bin/shだろ?
とだけになり、シェルの派生は使うなそれなら他の言語をとか言い出すいつもの。自分がPOSIXに拘ってるのだけだろうがただうざいだけw
そもそも前提が違う
シバンに /bin/sh と書いてるならPOSIXで書くべきってだけだな
特定のシェルが好みでその機能を使って、シバンもそれにしてるなら好き好きにでしかないわな
なぜか、
>シバンに使われるのは/bin/shだろ?
とだけになり、シェルの派生は使うなそれなら他の言語をとか言い出すいつもの。自分がPOSIXに拘ってるのだけだろうがただうざいだけw
769デフォルトの名無しさん
2020/11/02(月) 19:48:29.55ID:pNDhR5km /bin/shはどこでも入ってるが、
/bin/bashはAlpine Linuxなど入ってない環境がある
/bin/bashはAlpine Linuxなど入ってない環境がある
770デフォルトの名無しさん
2020/11/02(月) 19:51:03.74ID:aDX4tDqS 好き好きなんだから環境も好きにすんだよ、融通の利かない臨機応変出ないお前にはわからんだろうけど
問題があったら動かないし、シバンを変えるだけでもあるしな
問題があったら動かないし、シバンを変えるだけでもあるしな
771デフォルトの名無しさん
2020/11/02(月) 19:51:53.50ID:pNDhR5km POSIX準拠で書いていれば
シバンを変えるだけで動くんだよね
シバンを変えるだけで動くんだよね
772デフォルトの名無しさん
2020/11/02(月) 19:52:55.74ID:aDX4tDqS いつもの話が通じないモードか
773デフォルトの名無しさん
2020/11/02(月) 19:53:36.45ID:pNDhR5km 反論しろや
POSIX準拠で書いていれば
シバンを変えるだけで動くのは事実だろうが
POSIX準拠で書いていれば
シバンを変えるだけで動くのは事実だろうが
774デフォルトの名無しさん
2020/11/02(月) 19:57:02.06ID:aDX4tDqS イミフだからだぞ
>シバンを変えるだけ
ってなんのこっちゃ
>シバンを変えるだけ
ってなんのこっちゃ
775デフォルトの名無しさん
2020/11/02(月) 19:59:27.33ID:pNDhR5km なんだこいつwww
770 名前:デフォルトの名無しさん[sage] 投稿日:2020/11/02(月) 19:51:03.74 ID:aDX4tDqS [4/6]
好き好きなんだから環境も好きにすんだよ、融通の利かない臨機応変出ないお前にはわからんだろうけど
問題があったら動かないし、シバンを変えるだけでもあるしな
↓
774 名前:デフォルトの名無しさん[sage] 投稿日:2020/11/02(月) 19:57:02.06 ID:aDX4tDqS [6/6]
イミフだからだぞ
>シバンを変えるだけ
ってなんのこっちゃ
770 名前:デフォルトの名無しさん[sage] 投稿日:2020/11/02(月) 19:51:03.74 ID:aDX4tDqS [4/6]
好き好きなんだから環境も好きにすんだよ、融通の利かない臨機応変出ないお前にはわからんだろうけど
問題があったら動かないし、シバンを変えるだけでもあるしな
↓
774 名前:デフォルトの名無しさん[sage] 投稿日:2020/11/02(月) 19:57:02.06 ID:aDX4tDqS [6/6]
イミフだからだぞ
>シバンを変えるだけ
ってなんのこっちゃ
776デフォルトの名無しさん
2020/11/02(月) 20:03:40.47ID:aDX4tDqS bashが無ければインストールする、パスが違っていればシバンを適切に書き換えるだけ
後者なんて、それこそシェルスクリプト(というほどでもない)でのお仕事で簡単なこと
好きで使ってるならそんなの気にしないぐらいの
>>775
なに言ってるの?w なおさらナンノコッチャ
まだ「シバンを変えなくても」だったらわかるが、ますますわからんw
まさか「シバンで /bin/bash とか書いていてもPOSIX準拠してたらどう変えても動く」とか言いたいわけ?まさかなあwww
後者なんて、それこそシェルスクリプト(というほどでもない)でのお仕事で簡単なこと
好きで使ってるならそんなの気にしないぐらいの
>>775
なに言ってるの?w なおさらナンノコッチャ
まだ「シバンを変えなくても」だったらわかるが、ますますわからんw
まさか「シバンで /bin/bash とか書いていてもPOSIX準拠してたらどう変えても動く」とか言いたいわけ?まさかなあwww
777デフォルトの名無しさん
2020/11/02(月) 20:06:59.14ID:pNDhR5km シバンを変えるだけといいながら、
bashをインストールしなければいけないと前言撤回w
誰もがbashをインストールできるわけではない
bashをインストールしなければいけないと前言撤回w
誰もがbashをインストールできるわけではない
778デフォルトの名無しさん
2020/11/02(月) 20:09:07.31ID:aDX4tDqS いつものパターン
自分の何かがマズいと別の口実へとw
自分の何かがマズいと別の口実へとw
779デフォルトの名無しさん
2020/11/02(月) 20:31:01.29ID:UfGVYnOo シェルスクリプト使ってると精神が破壊されでもするのか
780デフォルトの名無しさん
2020/11/02(月) 20:32:40.76ID:aDX4tDqS ん?俺もお前も??w
781デフォルトの名無しさん
2020/11/02(月) 21:59:15.95ID:Qlwbnxz+ echoの挙動すら統一できてないのに何がPOSIXだよ
782デフォルトの名無しさん
2020/11/02(月) 22:39:16.63ID:ew0mgVfp783デフォルトの名無しさん
2020/11/02(月) 22:40:32.90ID:ew0mgVfp >>779
POSIX原理主義者がやろ。
POSIX原理主義者がやろ。
784デフォルトの名無しさん
2020/11/03(火) 00:54:03.57ID:JyRXzZ9S785デフォルトの名無しさん
2020/11/03(火) 01:06:01.23ID:eTFEu/to >>784
そこは主文やないから。w
そこは主文やないから。w
786デフォルトの名無しさん
2020/11/03(火) 01:21:28.30ID:JyRXzZ9S > 756 自分:デフォルトの名無しさん[sage] 投稿日:2020/11/02(月) 18:35:32.48 ID:pNDhR5km [7/17]
> なんでbash使うんですか?bashじゃないとダメなことでもやってるんですか?
注文ですね
> なんでbash使うんですか?bashじゃないとダメなことでもやってるんですか?
注文ですね
787デフォルトの名無しさん
2020/11/03(火) 05:06:25.45ID:ZHMzrFjb >>755
ホントこいつは読めねえなw
ホントこいつは読めねえなw
788デフォルトの名無しさん
2020/11/03(火) 05:07:52.60ID:ZHMzrFjb789デフォルトの名無しさん
2020/11/03(火) 10:58:07.03ID:mwHgWWA5 コマンドラインから実行したら自動的に色が有効になるのって
あれどういう仕組で実現してるんですか?
あれどういう仕組で実現してるんですか?
790デフォルトの名無しさん
2020/11/03(火) 12:44:55.98ID:eTFEu/to isatty()が真なら、エスケープシーケンスで色設定する。
791デフォルトの名無しさん
2020/11/03(火) 18:29:40.60ID:j7Eu4w5F C言語の類推で考えれば,POSIXに従うというのも分かる話だと思うんだがなぁ。
「原理主義」とかはちょっとやりすぎ(Webサービスとかはさすがに……)と思うけど,
例えばMicrosoft製のclとかでしか動かないプログラムは別に悪い訳ではないけど,
C99やC11に従ってGCCでもpccでも動くようなプログラムの方がいいよね,
というそれだけの話。
「原理主義」とかはちょっとやりすぎ(Webサービスとかはさすがに……)と思うけど,
例えばMicrosoft製のclとかでしか動かないプログラムは別に悪い訳ではないけど,
C99やC11に従ってGCCでもpccでも動くようなプログラムの方がいいよね,
というそれだけの話。
792デフォルトの名無しさん
2020/11/03(火) 20:56:04.24ID:Vb+pPlne エスケープシーケンスって仕組みダサいよな
パイプ通したときはどうとか面倒だし混乱するだけ
パイプ通したときはどうとか面倒だし混乱するだけ
793デフォルトの名無しさん
2020/11/03(火) 21:06:50.17ID:xZyzqOA2 そこで新たにエスケープの代わりにHTMLを流すことを提案しますとか
unicodeを拡張してすべての文字に色を付けられるようにします
とか言うの?
unicodeを拡張してすべての文字に色を付けられるようにします
とか言うの?
794デフォルトの名無しさん
2020/11/03(火) 21:15:36.20ID:eTFEu/to795デフォルトの名無しさん
2020/11/03(火) 21:16:35.47ID:eTFEu/to >>793
そこで、PowerShellのオブジェクトパイプだ!!!
そこで、PowerShellのオブジェクトパイプだ!!!
796デフォルトの名無しさん
2020/11/03(火) 21:19:50.78ID:xZyzqOA2 https://qastack.jp/superuser/1259900/how-to-colorize-the-powershell-prompt
カラーエスケープシーケンス
さて、Windowsの10 をサポートANSIエスケープコードのconhostでは、と24ビットカラーは 1703年以降でサポートされています。
ANSIエスケープコードのいずれかを使用するには、リテラルESC文字が必要です。
これは、033進、またはbashで小数点以下27である、あなたは使います"\033"か"\e"。
PowerShellには直接同等のシーケンスはありませんが、代わりに式を埋め込むことができます。"$([char]27)"
カラーエスケープシーケンス
さて、Windowsの10 をサポートANSIエスケープコードのconhostでは、と24ビットカラーは 1703年以降でサポートされています。
ANSIエスケープコードのいずれかを使用するには、リテラルESC文字が必要です。
これは、033進、またはbashで小数点以下27である、あなたは使います"\033"か"\e"。
PowerShellには直接同等のシーケンスはありませんが、代わりに式を埋め込むことができます。"$([char]27)"
797デフォルトの名無しさん
2020/11/03(火) 21:21:56.76ID:xZyzqOA2 C言語にとってのPOSIXは、ほとんどすべてのことができるのに対して
シェルスクリプトにとってのPOSIXは必要最小限のことしかできない
ここ、大きな違いな
シェルスクリプトにとってのPOSIXは必要最小限のことしかできない
ここ、大きな違いな
798デフォルトの名無しさん
2020/11/03(火) 21:33:57.64ID:j7Eu4w5F799デフォルトの名無しさん
2020/11/05(木) 08:37:54.68ID:aaXXoIST 最近使う機会のあったTinyCoreLinuxはashで >>2 のリストからしたらPOSIXみたいだけど
コマンドが無かったりして/proc依存しまくりで何の意味もなかったわありがとう!
コマンドが無かったりして/proc依存しまくりで何の意味もなかったわありがとう!
800デフォルトの名無しさん
2020/11/05(木) 14:20:57.02ID:NJa4xvXv ・TinyCoreLinuxに入っているashはPOSIXシェル
・TinyCoreLinuxにPOSIXコマンドがない・/procに依存している
この二つは何の関係もないんですが……
皮肉を言うのはいいけど,ちゃんと勉強してからにしような!
・TinyCoreLinuxにPOSIXコマンドがない・/procに依存している
この二つは何の関係もないんですが……
皮肉を言うのはいいけど,ちゃんと勉強してからにしような!
801デフォルトの名無しさん
2020/11/05(木) 16:46:58.38ID:qZMsdltc802デフォルトの名無しさん
2020/11/05(木) 17:55:36.75ID:5VWi+ROf803デフォルトの名無しさん
2020/11/05(木) 18:16:46.91ID:NJa4xvXv >>801
それ本気で言ってる?
それ本気で言ってる?
804デフォルトの名無しさん
2020/11/05(木) 18:57:50.01ID:qZMsdltc805デフォルトの名無しさん
2020/11/05(木) 19:06:50.80ID:xxBKaUpW 全部だろ、アホ
806デフォルトの名無しさん
2020/11/05(木) 19:48:26.44ID:qZMsdltc POSIXはなくてもええわ、カス
807デフォルトの名無しさん
2020/11/05(木) 19:56:20.59ID:xxBKaUpW おまえんなかではそうなんだろうなw
808デフォルトの名無しさん
2020/11/05(木) 20:52:05.33ID:qZMsdltc んなもん、あたりまえやw
そして、数少ない原理主義者以外にとってもな!
そして、数少ない原理主義者以外にとってもな!
809デフォルトの名無しさん
2020/11/05(木) 22:54:42.95ID:5bWXoO+B POSIXよりもうちょっと実用的な標準作られないの?
810デフォルトの名無しさん
2020/11/06(金) 10:03:54.52ID:a8jj0K4f ここの住人って本気で
POSIXを越える規格を作って
それを世界が受け入れてくれる!
って思ってそうよねw
POSIXを越える規格を作って
それを世界が受け入れてくれる!
って思ってそうよねw
811デフォルトの名無しさん
2020/11/06(金) 10:15:50.10ID:UqYVvhfA いや、POSIXを発展させようと思ってるだけだが。
POSIXに影響を与えれば、POSIX自体が成長する。
POSIXを超えるのではなく、POSIX自体がPOSIXを超える。
だからそれはPOSIXのままだと言える
POSIXに影響を与えれば、POSIX自体が成長する。
POSIXを超えるのではなく、POSIX自体がPOSIXを超える。
だからそれはPOSIXのままだと言える
812デフォルトの名無しさん
2020/11/06(金) 10:45:16.28ID:vuRZSDYg POSIXを越えられるのは、POSIXだけだ!
熱いな
熱いな
813デフォルトの名無しさん
2020/11/06(金) 10:47:09.27ID:UqYVvhfA 当たり前じゃん。アレだけおもちゃと馬鹿にされた
JavaScriptを超える言語はJavaScriptだけだった
JavaScriptを超える言語はJavaScriptだけだった
814デフォルトの名無しさん
2020/11/06(金) 11:50:47.48ID:pxoM2z0f >>810
いや、そんな規格にはそれほど意味がない、と思うやろ。
目安程度にしかならんというか。
淘汰圧にはならんというか。
WebブラウザやC++コンパイラみたいに、非準拠なら非難轟々、とはなってないからな。
いや、そんな規格にはそれほど意味がない、と思うやろ。
目安程度にしかならんというか。
淘汰圧にはならんというか。
WebブラウザやC++コンパイラみたいに、非準拠なら非難轟々、とはなってないからな。
815デフォルトの名無しさん
2020/11/06(金) 12:01:23.28ID:UqYVvhfA 非準拠なら単に使われないってだけだな
WebブラウザやC++コンパイラが非難轟々なのは
準拠してますって宣言した上で、非準拠なことするからだよ
最初から準拠していませんって言っていれば
同じように使われないってだけ
WebブラウザやC++コンパイラが非難轟々なのは
準拠してますって宣言した上で、非準拠なことするからだよ
最初から準拠していませんって言っていれば
同じように使われないってだけ
816デフォルトの名無しさん
2020/11/06(金) 22:41:33.89ID:a8jj0K4f これ >>815
原理主義者が鬱陶しいのは同意するけど
だからといってPOSIXを無視していれば
損するのは自分よ。
たとえ「世界中の人間に使ってほしい」とか
そういう意図がなくても,POSIXに準じてたほうが
維持管理・保守の面だけでもどれだけの労力を減らせるか。
原理主義者が鬱陶しいのは同意するけど
だからといってPOSIXを無視していれば
損するのは自分よ。
たとえ「世界中の人間に使ってほしい」とか
そういう意図がなくても,POSIXに準じてたほうが
維持管理・保守の面だけでもどれだけの労力を減らせるか。
817デフォルトの名無しさん
2020/11/07(土) 00:32:05.33ID:FicFgdCX 検証不能だけどな。
まあ、ひょっこり出てきたものがかっさらう可能性もあるからなんとも。
まあ、ひょっこり出てきたものがかっさらう可能性もあるからなんとも。
818デフォルトの名無しさん
2020/11/09(月) 13:44:59.81ID:b7PWfh7Z 昔々、TinyCoreLinuxの日本語訳をバイナリでしか公開しなかったライセンス違反のおじさんがいたな
819デフォルトの名無しさん
2020/11/10(火) 07:28:20.01ID:2U042Zc8 POSIX に自信ある人おるっぽいから質問なんだけど!
date コマンドの POSIX 仕様書を見てみると、出力フォーマットに %F とか %z がないんだけど、これって使うとまずい?
%T は載ってるんだけどなぁ
strftime のほうには全部載ってるんだけど
date コマンドの POSIX 仕様書を見てみると、出力フォーマットに %F とか %z がないんだけど、これって使うとまずい?
%T は載ってるんだけどなぁ
strftime のほうには全部載ってるんだけど
820デフォルトの名無しさん
2020/11/10(火) 12:00:26.68ID:9k3Gk+Qe 「POSIXに準拠する」なら,マズい。
「俺はPOSIXなんか知らねえ! 俺の手元ではdateコマンドに%zを使えるから
使うんだ!」っていう考え方なら,全然使っても構わない。
ちなみに私は前者。
「俺はPOSIXなんか知らねえ! 俺の手元ではdateコマンドに%zを使えるから
使うんだ!」っていう考え方なら,全然使っても構わない。
ちなみに私は前者。
821デフォルトの名無しさん
2020/11/10(火) 12:04:37.65ID:9k3Gk+Qe822デフォルトの名無しさん
2020/11/10(火) 12:11:36.00ID:08CevRpc 正直言うと z 使うと保守が面倒臭くなる
手離れ悪い
手離れ悪い
823デフォルトの名無しさん
2020/11/10(火) 13:09:49.18ID:2U042Zc8824デフォルトの名無しさん
2020/11/10(火) 13:24:27.74ID:wuzfZjuS 来年サマータイム導入します(キリっ
825デフォルトの名無しさん
2020/11/10(火) 13:51:26.00ID:9k3Gk+Qe826デフォルトの名無しさん
2020/11/10(火) 14:08:32.86ID:2U042Zc8 >>825
なるほど... ありがとうございました!
なるほど... ありがとうございました!
827デフォルトの名無しさん
2020/11/11(水) 06:40:35.05ID:AeLDZcCA828デフォルトの名無しさん
2020/11/11(水) 08:59:35.27ID:KkaNKXcC >>827
膠っていう考え方ね。
膠っていう考え方ね。
829デフォルトの名無しさん
2020/11/11(水) 16:14:40.51ID:o7ye760s 合成の誤膠って奴かな?
830デフォルトの名無しさん
2020/11/11(水) 17:25:57.68ID:2Y4tzM/7 シェルスクリプトで済むんなら使った方が良い。
831デフォルトの名無しさん
2020/11/11(水) 17:29:00.12ID:uSbtgdeR 結局シェルスクリプトが一番適切だって思うから、みんなシェルスクリプトを使うわけで
そのあとシェルスクリプト使って後悔するなら、シェルスクリプト力(技術力)をつけたほうが良いってことだよ
他の言語に乗り換えるってのは、適切じゃない言語を使うってこと。単に慣れてるだけ。
そのあとシェルスクリプト使って後悔するなら、シェルスクリプト力(技術力)をつけたほうが良いってことだよ
他の言語に乗り換えるってのは、適切じゃない言語を使うってこと。単に慣れてるだけ。
832デフォルトの名無しさん
2020/11/11(水) 17:41:19.52ID:EWytaMfd >>831
アホがおるw
アホがおるw
833デフォルトの名無しさん
2020/11/11(水) 18:13:47.22ID:KDi/CYCF834デフォルトの名無しさん
2020/11/11(水) 18:15:50.79ID:uSbtgdeR ほら、反論なしと(笑)
835デフォルトの名無しさん
2020/11/11(水) 19:29:10.44ID:KFC8J5w+ 真面目に反論する気にもならないアホな論てあるんやで
自覚ないとおわかりになられんでしょうけど
自覚ないとおわかりになられんでしょうけど
836デフォルトの名無しさん
2020/11/11(水) 20:20:09.72ID:1NS/Ttdd シェルスクリプトの欠点の一つとして
シェル変数を気軽に上書きできるという点がある
うっかりシステムに関係する変数を書き換えると
大騒ぎになるかも
シェル変数を気軽に上書きできるという点がある
うっかりシステムに関係する変数を書き換えると
大騒ぎになるかも
837デフォルトの名無しさん
2020/11/11(水) 20:37:56.82ID:auS5YaT3 システムに関係するシェル変数ってなに?
他の言語じゃその変数を書き換えることは無理なの?
他の言語じゃその変数を書き換えることは無理なの?
838デフォルトの名無しさん
2020/11/11(水) 20:46:46.52ID:KFC8J5w+ うっかり=意図せずにだろ
他の言語では環境変数を書き換えるという明確な意思がなければ変わらないだろう
他の言語では環境変数を書き換えるという明確な意思がなければ変わらないだろう
839デフォルトの名無しさん
2020/11/11(水) 21:13:01.49ID:auS5YaT3 え?システムに関係するシェル変数って環境変数のことだったの?
環境変数を書き換えても、他のプロセスには影響ないんだけど?
それでシステムに影響がある環境変数の名前はなに?
環境変数を書き換えても、他のプロセスには影響ないんだけど?
それでシステムに影響がある環境変数の名前はなに?
840デフォルトの名無しさん
2020/11/11(水) 21:13:24.60ID:VcjQlt7C >>836
readonlyというのがあるじゃん
readonlyというのがあるじゃん
841デフォルトの名無しさん
2020/11/11(水) 21:14:32.87ID:KFC8J5w+ 自分が読めないだけだろ
そしてそのしつこさは...w
そしてそのしつこさは...w
842デフォルトの名無しさん
2020/11/11(水) 21:17:25.54ID:KFC8J5w+ >>840
localというのもあるなw
localというのもあるなw
843デフォルトの名無しさん
2020/11/11(水) 21:20:32.92ID:auS5YaT3 シェル変数といったり環境変数といったり
めちゃくちゃだよなw
めちゃくちゃだよなw
844デフォルトの名無しさん
2020/11/11(水) 22:41:53.94ID:s9R9EURF path=...
があるだけで、以降の処理はだいたい残念なことになってまう、みたいなシェルはあったような。
でも、しゃあない。
そういう事故は飲むしかない。
イヤでもあきらめろ。
があるだけで、以降の処理はだいたい残念なことになってまう、みたいなシェルはあったような。
でも、しゃあない。
そういう事故は飲むしかない。
イヤでもあきらめろ。
845デフォルトの名無しさん
2020/11/12(木) 00:04:37.86ID:BEseEgkn シェルスクリプトが環境変数の書き換えに弱いというのはまだ分かるんだが,
それを「シェルスクリプト特有の」欠点みたいに呼ぶのはよく分からん。
・環境変数を「意図せず」書き換えてしまうこと
・環境変数を「悪意を持って」書き換えられること
こういう事態に弱いのは別にシェルスクリプトに限ったことじゃないでしょう。
具体例を出さなきゃ納得できない人もいそうなんで一つだけ挙げますね。
$LD_LIBRARY_PATH。
それを「シェルスクリプト特有の」欠点みたいに呼ぶのはよく分からん。
・環境変数を「意図せず」書き換えてしまうこと
・環境変数を「悪意を持って」書き換えられること
こういう事態に弱いのは別にシェルスクリプトに限ったことじゃないでしょう。
具体例を出さなきゃ納得できない人もいそうなんで一つだけ挙げますね。
$LD_LIBRARY_PATH。
846デフォルトの名無しさん
2020/11/12(木) 01:27:16.52ID:V4Sk/AjY 環境変数を意図せず書き換えてしまうとは、環境変数を触るつもりが全くないのにってことでしょ
シェルスクリプトに限らずって、他にそういうのなんかあったっけ
シェルスクリプトに限らずって、他にそういうのなんかあったっけ
847デフォルトの名無しさん
2020/11/12(木) 04:20:19.45ID:kQyOkhX7 環境変数ってUnixやLinuxに限らず
Windowsにだってめちゃくちゃ使われてるぞ
Windowsにだってめちゃくちゃ使われてるぞ
848デフォルトの名無しさん
2020/11/12(木) 04:34:19.99ID:1ZLHCloS 環境変数PATH、有名なので間違えて書き換えたりしない
LD_LIBRARY_PATH、名前がかぶることはまずない
なぁ、実害あるん?
LD_LIBRARY_PATH、名前がかぶることはまずない
なぁ、実害あるん?
849デフォルトの名無しさん
2020/11/12(木) 05:19:49.92ID:DEOHcohA シェルスクリプトは変数と環境変数のアクセスする違いがないってことだろうに
あくまでもローカル変数と使うつもりだったのにうっかりという
システムでの環境変数って言ってもそんな有名どころのではなくてもオレオレでというのはあるだろうに
視野が広いのか狭いのかなんなのか、ズレテルな
あくまでもローカル変数と使うつもりだったのにうっかりという
システムでの環境変数って言ってもそんな有名どころのではなくてもオレオレでというのはあるだろうに
視野が広いのか狭いのかなんなのか、ズレテルな
850デフォルトの名無しさん
2020/11/12(木) 08:59:00.57ID:NniWGdD3 プログラムのテストでシェルスクリプト使うだろ。
使わないのはテストしないからか
使わないのはテストしないからか
851デフォルトの名無しさん
2020/11/12(木) 10:16:41.65ID:1ZLHCloS852デフォルトの名無しさん
2020/11/12(木) 12:18:32.48ID:1kfP87l6853デフォルトの名無しさん
2020/11/12(木) 12:21:54.36ID:1kfP87l6854デフォルトの名無しさん
2020/11/12(木) 13:43:18.74ID:OA6SFmf/ 環境変数を「意図せず」書き換えてしまうことはあるが
その結果、問題が発生することはないって話だよ
だって環境変数を書き換えたとしても、最悪でも
自分とその子孫のプロセスにか影響がないから
システムを壊したりすることがない
その結果、問題が発生することはないって話だよ
だって環境変数を書き換えたとしても、最悪でも
自分とその子孫のプロセスにか影響がないから
システムを壊したりすることがない
855デフォルトの名無しさん
2020/11/12(木) 13:48:31.03ID:1kfP87l6856デフォルトの名無しさん
2020/11/12(木) 14:09:44.21ID:OA6SFmf/ >>836でかいてあるだろ
> うっかりシステムに関係する変数を書き換えると
> 大騒ぎになるかも
システムに関する変数を書き換えても、自分のプロセスとそれ以下にしか
影響がないから大騒ぎになんかならん
それにシステムに関する変数といっても数えられる程度しかない
> うっかりシステムに関係する変数を書き換えると
> 大騒ぎになるかも
システムに関する変数を書き換えても、自分のプロセスとそれ以下にしか
影響がないから大騒ぎになんかならん
それにシステムに関する変数といっても数えられる程度しかない
857デフォルトの名無しさん
2020/11/12(木) 14:57:57.53ID:kygpD0ad プログラムってシェルから起動するんじゃないの?
858デフォルトの名無しさん
2020/11/12(木) 15:13:27.21ID:f5BAQJxF fork元がshellならそうだね
859デフォルトの名無しさん
2020/11/12(木) 15:30:36.85ID:1kfP87l6 >>856
大物の起動スクリプトとかでやらかすと、騒ぎにはなりうる。
init系とか.*rcとかcronとかでも。
初見ではわけがわからんかったりするしな。
まあ、個人的には、そういうものだと思ってるが。
おかげでラクなところもあるし、しゃあない。
大物の起動スクリプトとかでやらかすと、騒ぎにはなりうる。
init系とか.*rcとかcronとかでも。
初見ではわけがわからんかったりするしな。
まあ、個人的には、そういうものだと思ってるが。
おかげでラクなところもあるし、しゃあない。
860デフォルトの名無しさん
2020/11/12(木) 16:55:55.29ID:s02jb8N+ WindowsだとADと連携させたりして、レジストリのアクセス制御が容易とか、そういう話?
861デフォルトの名無しさん
2020/11/12(木) 17:49:14.13ID:OA6SFmf/ >>859
> 大物の起動スクリプトとかでやらかすと、
だから何をやらかすんだよw
環境変数PATHを書き換えてしまったんだ
って「だけ」の話をしてるんか?
何をやらかしたのかを言わずに、
ずっとやらかししまうって言ってるだけじゃんか
> 大物の起動スクリプトとかでやらかすと、
だから何をやらかすんだよw
環境変数PATHを書き換えてしまったんだ
って「だけ」の話をしてるんか?
何をやらかしたのかを言わずに、
ずっとやらかししまうって言ってるだけじゃんか
862デフォルトの名無しさん
2020/11/13(金) 02:11:25.86ID:Rmv9apnz ↑ こいつの知見の無さが半端ない。なのになぜか偉そう。頭悪そう
863デフォルトの名無しさん
2020/11/13(金) 02:52:22.83ID:F3tZoo3K わからないから質問してるのに
それにたいしてわからんのかと言われても
最初から、わからんと言ってるんだがとしか言えない
それで、何をやらかすんだ?
それにたいしてわからんのかと言われても
最初から、わからんと言ってるんだがとしか言えない
それで、何をやらかすんだ?
864デフォルトの名無しさん
2020/11/13(金) 11:56:10.07ID:4qY0TlDt 具体的なケースはわりとどうでもいいから。
パスでもプロキシでも、環境変数はちょくちょく影響がある。
それが想像つかんのなら、もうからまんでええんちゃう?
パスでもプロキシでも、環境変数はちょくちょく影響がある。
それが想像つかんのなら、もうからまんでええんちゃう?
865デフォルトの名無しさん
2020/11/13(金) 12:58:09.35ID:es502k4w 複数のシェルスクリプトをカスケードで読む場合
変数の管理がめんどくさくなるかな
sourceしたりして他のシェルスクリプトと非同期で
動かすとさらに複雑になる
変数の管理がめんどくさくなるかな
sourceしたりして他のシェルスクリプトと非同期で
動かすとさらに複雑になる
866デフォルトの名無しさん
2020/11/13(金) 13:19:38.00ID:A88QmKc9 >>864
逃げるなよw
具体的なケースが重要
PATH変数とHTTP_PROXY変数だっていいたのだろうが "それだけ" だろう?
しかもシステム設定を変えるわけじゃない。
何度も言うが自分と子プロセスにしか影響がない。
意図せず変更してしまう可能性がどれだけあるのかと
あと環境変数じゃないなら小文字使えや
逃げるなよw
具体的なケースが重要
PATH変数とHTTP_PROXY変数だっていいたのだろうが "それだけ" だろう?
しかもシステム設定を変えるわけじゃない。
何度も言うが自分と子プロセスにしか影響がない。
意図せず変更してしまう可能性がどれだけあるのかと
あと環境変数じゃないなら小文字使えや
867デフォルトの名無しさん
2020/11/13(金) 13:23:59.15ID:A88QmKc9 >>865
また知ってる単語を使ってみましたみたいな文章だなw
カスケードで読むってなんだよ。誰がそんな用語使ってるんだ?
シェルスクリプトが別なら変数は共有されない
非同期で動かすというなら、それぞれ別のサブシェルになるから
これも変数は共有されない
sourceしたりというなら、グローバル変数のことだろうが
それなら、シェルスクリプトはグローバル変数しかないから
大規模に向かないって言えばいいだけのことだろ?
グローバル変数しかなくてもプリフィックス(を名前空間として考える)を
変数名につければいいだけだがな。それはPOSIXにこだわらないなら
localとかtypesetでローカル変数作れるし
また知ってる単語を使ってみましたみたいな文章だなw
カスケードで読むってなんだよ。誰がそんな用語使ってるんだ?
シェルスクリプトが別なら変数は共有されない
非同期で動かすというなら、それぞれ別のサブシェルになるから
これも変数は共有されない
sourceしたりというなら、グローバル変数のことだろうが
それなら、シェルスクリプトはグローバル変数しかないから
大規模に向かないって言えばいいだけのことだろ?
グローバル変数しかなくてもプリフィックス(を名前空間として考える)を
変数名につければいいだけだがな。それはPOSIXにこだわらないなら
localとかtypesetでローカル変数作れるし
868デフォルトの名無しさん
2020/11/13(金) 14:48:01.16ID:4qY0TlDt869デフォルトの名無しさん
2020/11/13(金) 15:20:10.18ID:S1mNTw0c 結局,「自分が思う(無根拠な)あやうさ」
を放言した結果,鉞が四方八方から飛んできて収集付かなくなった感じかね。
元の発言
> シェルスクリプトの欠点の一つとして
> シェル変数を気軽に上書きできるという点がある
> うっかりシステムに関係する変数を書き換えると
> 大騒ぎになるかも
からしてまあシェルスクリプト分かってんのかってツッコみたくなる点が幾つもあるし。
もう散々上で叩いたからこれ以上は責めるのを止すが。
を放言した結果,鉞が四方八方から飛んできて収集付かなくなった感じかね。
元の発言
> シェルスクリプトの欠点の一つとして
> シェル変数を気軽に上書きできるという点がある
> うっかりシステムに関係する変数を書き換えると
> 大騒ぎになるかも
からしてまあシェルスクリプト分かってんのかってツッコみたくなる点が幾つもあるし。
もう散々上で叩いたからこれ以上は責めるのを止すが。
870デフォルトの名無しさん
2020/11/13(金) 18:14:52.09ID:4qY0TlDt それは双方同等。
「自分が思う(無根拠な)大丈夫さ」だから。
ま、一回事故らんと身に染みないことではある。
「自分が思う(無根拠な)大丈夫さ」だから。
ま、一回事故らんと身に染みないことではある。
871デフォルトの名無しさん
2020/11/13(金) 18:21:34.11ID:A88QmKc9872デフォルトの名無しさん
2020/11/13(金) 18:22:01.01ID:A88QmKc9873デフォルトの名無しさん
2020/11/13(金) 18:27:23.64ID:A88QmKc9 自分の体験談を言えばいいだけだと思うんだがねぇ
たまたま自分のアプリで LD_LIBRARY_PATHという変数を使っていたら
これと同じ環境変数を○○アプリが使っていて困りましたとかさぁ
実際の体験談ね。架空の体験談じゃなくてw
たまたま自分のアプリで LD_LIBRARY_PATHという変数を使っていたら
これと同じ環境変数を○○アプリが使っていて困りましたとかさぁ
実際の体験談ね。架空の体験談じゃなくてw
874デフォルトの名無しさん
2020/11/13(金) 19:29:50.68ID:du2laNOa PATHを書き換えて、コマンドサーチパスの優先順位変わって意図しないバージョンのコマンドを実行してしまって、コマンドの互換性に問題あって、大事なファイルを破壊してしまったとか
そういうのはあるんじゃない
そういうのはあるんじゃない
875デフォルトの名無しさん
2020/11/13(金) 19:55:53.16ID:A88QmKc9876デフォルトの名無しさん
2020/11/13(金) 21:49:53.46ID:uCeIaRFr877デフォルトの名無しさん
2020/11/14(土) 00:25:29.47ID:ZrW/GOpe878デフォルトの名無しさん
2020/11/14(土) 00:37:43.34ID:3AniUInE879デフォルトの名無しさん
2020/11/14(土) 12:11:16.48ID:ZrW/GOpe ここまで問いつめて一つも実例が出ない……。
あのね,自分の考えを矯正せざるえない正しい情報は耳障りかも知れないけど,
もう一度聞いてくれ。
「環境変数(⊂シェル変数)を外部から書き換えて,システムに損害を及ぼす」
ことは可能だけど,
シェル引数がプロセス間でどう引き継がれるかというのはPOSIXで定められていて,
要すれば「変数の書き換えの影響が及ぶのはその書き換え後にそのプロセスから
遂行したシェル(スクリプト)のみ」っていう決まりなのよ。
で,「変数を書き換えるとシステムに損害を及ぼす」ようなシェルスクリプトっていうのは
「システムを管理するシェルスクリプト」であって,
そんなシェルスクリプトを「遂行する前に」変数を書き換えられるような状態においては,
もはや「環境変数の書き換え」なんていう攻撃℃闥iを取らなくても,
簡単にシステムをぶっ壊せる。
逆に例えばマトモな許可設定がなされてるサーバーに対して,
クライアントが環境変数を書き換えてサーバーのシステムを壊すなんてことはできない。
あのね,自分の考えを矯正せざるえない正しい情報は耳障りかも知れないけど,
もう一度聞いてくれ。
「環境変数(⊂シェル変数)を外部から書き換えて,システムに損害を及ぼす」
ことは可能だけど,
シェル引数がプロセス間でどう引き継がれるかというのはPOSIXで定められていて,
要すれば「変数の書き換えの影響が及ぶのはその書き換え後にそのプロセスから
遂行したシェル(スクリプト)のみ」っていう決まりなのよ。
で,「変数を書き換えるとシステムに損害を及ぼす」ようなシェルスクリプトっていうのは
「システムを管理するシェルスクリプト」であって,
そんなシェルスクリプトを「遂行する前に」変数を書き換えられるような状態においては,
もはや「環境変数の書き換え」なんていう攻撃℃闥iを取らなくても,
簡単にシステムをぶっ壊せる。
逆に例えばマトモな許可設定がなされてるサーバーに対して,
クライアントが環境変数を書き換えてサーバーのシステムを壊すなんてことはできない。
880デフォルトの名無しさん
2020/11/14(土) 12:14:10.37ID:ZrW/GOpe はぁ〜〜無駄な熱量を使っちまった……
バカは放っておくのが一番なのは理解しているんだが,
初学者がもしもこのバカの発言を間に受けたら
勉強が進んで己の知識を修正するまで
間違った知識で行動する訳で,それは可哀そうなのでね。
バカは放っておくのが一番なのは理解しているんだが,
初学者がもしもこのバカの発言を間に受けたら
勉強が進んで己の知識を修正するまで
間違った知識で行動する訳で,それは可哀そうなのでね。
881デフォルトの名無しさん
2020/11/14(土) 12:19:51.30ID:WE59Iknb シェルスクリプトはセキュリティホール
揺るぎない真実に向き合え
揺るぎない真実に向き合え
882デフォルトの名無しさん
2020/11/14(土) 12:30:38.87ID:kdUuCuZx >>879
攻撃の話はしてないよ
単に環境変数を書き換えることで他のプロセスに影響を与えることはできるけど
そもそもその環境変数なんてわずかしかないんだから
大騒ぎするまでのことはないよねって話してる
それに対して問題がー、問題がーってしつこく言ってるやつが居るから
お前実際にどんな問題が起きたことあるんだ?って聞いてるんだが
その答えは帰ってこないし、帰ってきてもそれだけだよね?程度の話だった
これがここまでの結論
攻撃の話はしてないよ
単に環境変数を書き換えることで他のプロセスに影響を与えることはできるけど
そもそもその環境変数なんてわずかしかないんだから
大騒ぎするまでのことはないよねって話してる
それに対して問題がー、問題がーってしつこく言ってるやつが居るから
お前実際にどんな問題が起きたことあるんだ?って聞いてるんだが
その答えは帰ってこないし、帰ってきてもそれだけだよね?程度の話だった
これがここまでの結論
883デフォルトの名無しさん
2020/11/14(土) 12:35:19.46ID:QzputhfI 日本語がぎこちないので ID:ZrW/GOpe は馬鹿確定
884デフォルトの名無しさん
2020/11/14(土) 13:34:21.21ID:ZrW/GOpe 知識で勝てなくて悔しいのう
885デフォルトの名無しさん
2020/11/14(土) 13:42:24.75ID:5XkrS48F 俺が実際どんな問題があった?って聞いてるんだから
俺の話を横取りするな
俺の話を横取りするな
886デフォルトの名無しさん
2020/11/14(土) 14:45:22.49ID:i/Cc0DGY 自分も具体例を聞きたい
887デフォルトの名無しさん
2020/11/14(土) 14:48:05.38ID:DnZAmAgg ワイもワイも
888デフォルトの名無しさん
2020/11/14(土) 15:46:11.26ID:hNMhXONs セキュリティの問題ではないけど
PWDをシェルスクリプトの中で変数として使うと
システムに勝手に書き変えられて
思ったように動かないかもしれないな
PWDをシェルスクリプトの中で変数として使うと
システムに勝手に書き変えられて
思ったように動かないかもしれないな
889デフォルトの名無しさん
2020/11/14(土) 21:48:21.52ID:9DKCECFD 責任の遂行
890デフォルトの名無しさん
2020/11/14(土) 23:28:38.65ID:ZrW/GOpe891デフォルトの名無しさん
2020/11/14(土) 23:40:33.62ID:1QU8t+0x シェルスクリプト以外でPWDを使うことってあるんだろうか?
そもそもPWDはシェル変数ではあるが環境変数なのか?
他の言語でPWDがあることを前提としていいのだろうか?
またシェルスクリプトとかでは起動時に現在のカレントディレクトリに
設定されると思うので影響があるのは自分自身だけだろうな
そもそもPWDはシェル変数ではあるが環境変数なのか?
他の言語でPWDがあることを前提としていいのだろうか?
またシェルスクリプトとかでは起動時に現在のカレントディレクトリに
設定されると思うので影響があるのは自分自身だけだろうな
892デフォルトの名無しさん
2020/11/15(日) 09:04:33.27ID:bhsguIlX ん? 相対名でファイルをオープンするときとかどうなってると?
893デフォルトの名無しさん
2020/11/15(日) 11:54:09.26ID:ofPGnU/6 >>892
PWDはただのカレントディレクトリを
変数に入れただけだよ
カレントディレクトリのことではない
cdしたときにシェル変数PWDとOLDPWDに
カレントディレクトリを入れるだけのこと
他の言語ではPWDやOLDPWDは参照しない
環境変数でしかないから
PWDはただのカレントディレクトリを
変数に入れただけだよ
カレントディレクトリのことではない
cdしたときにシェル変数PWDとOLDPWDに
カレントディレクトリを入れるだけのこと
他の言語ではPWDやOLDPWDは参照しない
環境変数でしかないから
894デフォルトの名無しさん
2020/11/15(日) 18:03:22.63ID:h835C+/M ていうかシェルでもPWDを参照することは少ないでしょう。
「カレントディレクトリ」を指し示したかったらpwdを使うかな。
ちなみに,当然分かっているとは思うけど,
C言語やPythonでも$PWDは参照できる。
ただまぁ,それをやってるプログラムは,$PWDを参照している
シェルスクリプトと同じくらい数少ないと思うけどね。
「カレントディレクトリ」を指し示したかったらpwdを使うかな。
ちなみに,当然分かっているとは思うけど,
C言語やPythonでも$PWDは参照できる。
ただまぁ,それをやってるプログラムは,$PWDを参照している
シェルスクリプトと同じくらい数少ないと思うけどね。
895デフォルトの名無しさん
2020/11/15(日) 18:36:18.33ID:bhsguIlX なるほど。
カレントディレクトリを知りたいときにPWDを参照したら楽かもねってだけか。
それ以外には影響を及ぼさない。
勝手にPWDに依存するスクリプトやコマンドはあるかもしれんがw
カレントディレクトリを知りたいときにPWDを参照したら楽かもねってだけか。
それ以外には影響を及ぼさない。
勝手にPWDに依存するスクリプトやコマンドはあるかもしれんがw
896デフォルトの名無しさん
2020/11/15(日) 18:41:31.75ID:ofPGnU/6 え?普通$PWDの方を使うでしょ
pwdにメリットなんてあるの?
デメリットならいくつか言える
外部コマンドなので遅い
ほどんどの場合、結局変数に入れて使う
変数に入れる時に標準出力経由でやるから更に遅い
変数展開が使えないから、/foo/bar/baz からbazだけを取るのが面倒で遅い
(まずありえないけど)改行で終わるディレクトリが正しく取れない(工夫すれば取れるけど)
唯一のメリットはPWDの内容と実際のカレントディレクトリが違う場合が
あることだけど、PWDはシェルスクリプト起動時に初期化されるので
意図的に変更しないとそうはならない。どうしてもPWDを
カレントディレクトリに初期化したいなら cd . でも実行すればいい
> C言語やPythonでも$PWDは参照できる。
それはPWDが環境変数としてエクスポートされてる場合でしょ?
unset PWDしてから起動しても参照できるって保証はあるの?
pwdにメリットなんてあるの?
デメリットならいくつか言える
外部コマンドなので遅い
ほどんどの場合、結局変数に入れて使う
変数に入れる時に標準出力経由でやるから更に遅い
変数展開が使えないから、/foo/bar/baz からbazだけを取るのが面倒で遅い
(まずありえないけど)改行で終わるディレクトリが正しく取れない(工夫すれば取れるけど)
唯一のメリットはPWDの内容と実際のカレントディレクトリが違う場合が
あることだけど、PWDはシェルスクリプト起動時に初期化されるので
意図的に変更しないとそうはならない。どうしてもPWDを
カレントディレクトリに初期化したいなら cd . でも実行すればいい
> C言語やPythonでも$PWDは参照できる。
それはPWDが環境変数としてエクスポートされてる場合でしょ?
unset PWDしてから起動しても参照できるって保証はあるの?
897デフォルトの名無しさん
2020/11/15(日) 18:43:40.53ID:ofPGnU/6 pwdはカレントディレクトリを画面に表示するだけのときにしか使わないな
カレントディレクトリを利用する(変数に入れる)場合は$PWDを使う
カレントディレクトリを利用する(変数に入れる)場合は$PWDを使う
898デフォルトの名無しさん
2020/11/15(日) 18:45:36.14ID:QB7zB470 https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
> PWD
> Set by the shell and by the cd utility. (...) Assignments to this variable may be ignored.
> PWD
> Set by the shell and by the cd utility. (...) Assignments to this variable may be ignored.
899デフォルトの名無しさん
2020/11/15(日) 18:47:38.69ID:h7nWKXR3 $ mkdir x
$ ln -s x y
$ cd y
$ pwd
/work/tmp/y
$ echo $PWD
/work/tmp/y
$ pwd -P
/work/tmp/x
$ ln -s x y
$ cd y
$ pwd
/work/tmp/y
$ echo $PWD
/work/tmp/y
$ pwd -P
/work/tmp/x
900デフォルトの名無しさん
2020/11/15(日) 18:50:20.68ID:ofPGnU/6 書いておいてなんだけど、改行で終わるディレクトリなんて作ったことないからやってみたw
cd /tmp
mkdir "abc
"
こんな感じで普通に作れるね。移動して(移動するときも cd "abc
" ってやらないとだめw)
echo "[$PWD]" したらちゃんと改行が入ってる
pwdもコマンド打つだけなら改行が入ってるけど
dir=$(pwd) とかすると末尾の改行が消えてdir変数に入る
回避方法は dir=$(pwd; echo _); dir=${dir%_} とすること
末尾の改行が消えないように _ とかを追加しておいて、変数展開を使って消す
cd /tmp
mkdir "abc
"
こんな感じで普通に作れるね。移動して(移動するときも cd "abc
" ってやらないとだめw)
echo "[$PWD]" したらちゃんと改行が入ってる
pwdもコマンド打つだけなら改行が入ってるけど
dir=$(pwd) とかすると末尾の改行が消えてdir変数に入る
回避方法は dir=$(pwd; echo _); dir=${dir%_} とすること
末尾の改行が消えないように _ とかを追加しておいて、変数展開を使って消す
901デフォルトの名無しさん
2020/11/15(日) 18:53:44.48ID:ofPGnU/6 >>898
> Assignments to this variable **may** be ignored
つまり無視されるかもしれないし、無視されないかもしれないってことね。
事実 PWD にカレントディレクトリと異なる値を入れることはほとんどのシェルで可能
> Assignments to this variable **may** be ignored
つまり無視されるかもしれないし、無視されないかもしれないってことね。
事実 PWD にカレントディレクトリと異なる値を入れることはほとんどのシェルで可能
902デフォルトの名無しさん
2020/11/15(日) 18:56:56.26ID:ofPGnU/6 >>899
何がいいたいのか知らんけど、
pwd -P の結果をPWDを使わずにほしいという話なら
cd -P を実行すればいいよ
dir=$(pwd -P) ・・・ 外部コマンド(遅い)+コマンド置換(遅い)
で二重に遅くなるけど
cd -P; dir=$PWD なら 内部コマンド(速い)+コマンド置換なし(速い)
カレントディレクトリが移動してしまうという副作用があるけど必要なら戻せばいい
何がいいたいのか知らんけど、
pwd -P の結果をPWDを使わずにほしいという話なら
cd -P を実行すればいいよ
dir=$(pwd -P) ・・・ 外部コマンド(遅い)+コマンド置換(遅い)
で二重に遅くなるけど
cd -P; dir=$PWD なら 内部コマンド(速い)+コマンド置換なし(速い)
カレントディレクトリが移動してしまうという副作用があるけど必要なら戻せばいい
903デフォルトの名無しさん
2020/11/15(日) 18:57:41.90ID:ofPGnU/6 訂正
pwd -P の結果をpwdを使わずにほしいという話なら
cd -P を実行すればいいよ
pwd -P の結果をpwdを使わずにほしいという話なら
cd -P を実行すればいいよ
904デフォルトの名無しさん
2020/11/15(日) 19:02:15.10ID:h7nWKXR3 bash$ type pwd
pwd is a shell builtin
pwd is a shell builtin
905デフォルトの名無しさん
2020/11/15(日) 19:03:42.80ID:ofPGnU/6 お、pwdはビルトインコマンドだったかw
じゃあそこは訂正
コマンド置換になるから遅い だけだな
これで数千倍ぐらい遅くなる
じゃあそこは訂正
コマンド置換になるから遅い だけだな
これで数千倍ぐらい遅くなる
906デフォルトの名無しさん
2020/11/15(日) 19:16:41.84ID:h7nWKXR3 $ dash
$ readonly PWD
$ cd x
dash: 3: cd: PWD: is read only
$ echo $PWD
$ /home/hoge
$ pwd
$ /home/hoge/x
$ readonly PWD
$ cd x
dash: 3: cd: PWD: is read only
$ echo $PWD
$ /home/hoge
$ pwd
$ /home/hoge/x
907デフォルトの名無しさん
2020/11/15(日) 19:20:48.28ID:ofPGnU/6908デフォルトの名無しさん
2020/11/15(日) 19:23:24.34ID:h7nWKXR3 お遊びに付きあってあげているだけさ。気にするなよw
909デフォルトの名無しさん
2020/11/16(月) 02:15:26.25ID:4uoBNdLM910デフォルトの名無しさん
2020/11/16(月) 09:46:48.16ID:VPqCGhU1911デフォルトの名無しさん
2020/11/16(月) 10:42:21.57ID:ZICsfNV8 > readonly PWDされても問題ないし。
readonly するのは誰?
いや、自分でやっておいて
誰かにreadonly されたー!って叫ぶのかなと(笑)
readonly するのは誰?
いや、自分でやっておいて
誰かにreadonly されたー!って叫ぶのかなと(笑)
912デフォルトの名無しさん
2020/11/16(月) 12:53:31.23ID:sF1WJXNT 改行コードってディレクトリ名とかファイル名の禁止文字じゃないのかω
勉強になったわωω
勉強になったわωω
913デフォルトの名無しさん
2020/11/16(月) 13:39:21.12ID:IuVgP+7M findとかxargsとか
改行コードが禁止文字じゃないから
1行1ファイル名にできなくて
仕方なくNULL文字区切りができたんだよな
1行1ファイル名ならそんな機能いらなかったのに
NULL文字区切りって改行対策だけの機能だから
改行コードが禁止文字じゃないから
1行1ファイル名にできなくて
仕方なくNULL文字区切りができたんだよな
1行1ファイル名ならそんな機能いらなかったのに
NULL文字区切りって改行対策だけの機能だから
914デフォルトの名無しさん
2020/11/16(月) 14:00:41.03ID:Ks5/uhC8915デフォルトの名無しさん
2020/11/16(月) 15:33:23.40ID:VPqCGhU1916デフォルトの名無しさん
2020/11/16(月) 15:35:18.75ID:VPqCGhU1917デフォルトの名無しさん
2020/11/16(月) 16:02:01.39ID:UFAKJ9cA918デフォルトの名無しさん
2020/11/16(月) 16:20:12.32ID:T0PHjpz3 >>916
-execはファイル一個ごとですよね、と一瞬思ったけど、
それが気になる場合は {} + ですか。
しかし {} + って昔からあった?
ネットで見つけた4.3BSDのマニュアルには {} + の記述はないっぽい。
http://www.retro11.de/ouxr/43bsd/usr/man/cat1/find.0.html
-execはファイル一個ごとですよね、と一瞬思ったけど、
それが気になる場合は {} + ですか。
しかし {} + って昔からあった?
ネットで見つけた4.3BSDのマニュアルには {} + の記述はないっぽい。
http://www.retro11.de/ouxr/43bsd/usr/man/cat1/find.0.html
919デフォルトの名無しさん
2020/11/16(月) 16:53:12.65ID:VPqCGhU1920デフォルトの名無しさん
2020/11/16(月) 17:48:34.34ID:EzTwR9A1 PWD を環境変数にするという発想は無かったな。
しちゃいかんとまでは思わないが意義があるとも思わない。
しちゃいかんとまでは思わないが意義があるとも思わない。
921デフォルトの名無しさん
2020/11/16(月) 20:06:37.21ID:Ks5/uhC8922デフォルトの名無しさん
2020/11/16(月) 20:09:53.39ID:Ks5/uhC8923デフォルトの名無しさん
2020/11/16(月) 21:47:14.87ID:was5dDeL924デフォルトの名無しさん
2020/11/16(月) 21:47:38.57ID:VPqCGhU1 readコマンドと同じようなことを,変数を新たに生成することなく実現する方法ないかな。
当然,入力結果は変数に格納せずに,そのまま標準出力に返す。
(←べつにこの仕様じゃなきゃいけない訳じゃないけど,変数なしだとこれくらいしかないかな?)
例えば引数を付けないcatだと近い挙動を実現できるけど,
入力を終了する時に<Enter>じゃなくて<C-D>を入力しないといけないので,
利用者側の操作が違ってきちゃう。
↑このあたり,sttyとかで設定できないかな〜と思いつつも,
stty eof ^Jとかしても無理なんで詰まっている。
当然,入力結果は変数に格納せずに,そのまま標準出力に返す。
(←べつにこの仕様じゃなきゃいけない訳じゃないけど,変数なしだとこれくらいしかないかな?)
例えば引数を付けないcatだと近い挙動を実現できるけど,
入力を終了する時に<Enter>じゃなくて<C-D>を入力しないといけないので,
利用者側の操作が違ってきちゃう。
↑このあたり,sttyとかで設定できないかな〜と思いつつも,
stty eof ^Jとかしても無理なんで詰まっている。
925デフォルトの名無しさん
2020/11/16(月) 21:56:03.84ID:was5dDeL 変数を新たに生成しないなら、決め打ちのグローバル変数を使ったら?
それも嫌ならPS1とかPS2を使うとかw
どうせシェルスクリプトの中では使わないだろうし
それも嫌ならPS1とかPS2を使うとかw
どうせシェルスクリプトの中では使わないだろうし
926デフォルトの名無しさん
2020/11/16(月) 22:19:15.08ID:was5dDeL お、思いついたw
read workとやってwork変数を使う
だけどそうすると上書きされちゃうから
set -- "$work"として$1にバックアップしておく
そいでecho "$work"してから$1を$workに戻す
ただしwork変数はread前に定義されてない可能性があるから
そこは変数が定義されてるかどうかで処理を分ける(めんどくさいから任せたw)
これで一時的には変数を使うけど使うけど最終的に副作用はない
read workとやってwork変数を使う
だけどそうすると上書きされちゃうから
set -- "$work"として$1にバックアップしておく
そいでecho "$work"してから$1を$workに戻す
ただしwork変数はread前に定義されてない可能性があるから
そこは変数が定義されてるかどうかで処理を分ける(めんどくさいから任せたw)
これで一時的には変数を使うけど使うけど最終的に副作用はない
927デフォルトの名無しさん
2020/11/16(月) 22:20:25.71ID:was5dDeL この方法を使えばreadの結果を$1とかに入れることもできそうw
928デフォルトの名無しさん
2020/11/16(月) 23:22:53.16ID:9mrX0/C/929デフォルトの名無しさん
2020/11/16(月) 23:44:35.69ID:VPqCGhU1930デフォルトの名無しさん
2020/11/17(火) 09:06:13.86ID:iIrFjUs6 Macは昔は:がフォルダの区切り文字だったんだよな
ファイルのリソース情報が本体ファイルと別になってて2個1だった
ファイルのリソース情報が本体ファイルと別になってて2個1だった
931デフォルトの名無しさん
2020/11/17(火) 10:59:29.50ID:BpUAWx5v >>921
macOSのファイルシステムはユニコードで規定されているのでそういうチェックも
あるというか。
ま、ある意味文字列の中身を厳密に規定しないできた流れのFSと、
ユニコードの普及を推進していた(る)会社が作ったFSの違いかな?
macOSのファイルシステムはユニコードで規定されているのでそういうチェックも
あるというか。
ま、ある意味文字列の中身を厳密に規定しないできた流れのFSと、
ユニコードの普及を推進していた(る)会社が作ったFSの違いかな?
932デフォルトの名無しさん
2020/11/17(火) 16:59:32.69ID:RPD3bx3d ちなみにWindows 10ではクソみたいな方法で,*一見すると*コロンや不等号を
ファイルに名付けられるような仕様になっている。
https://youtu.be/vE8jL9Fz9h0
誰得なのこの機能?
ファイルに名付けられるような仕様になっている。
https://youtu.be/vE8jL9Fz9h0
誰得なのこの機能?
933デフォルトの名無しさん
2020/11/17(火) 17:09:47.51ID:nHdTOcnh >>932
誰得もなにも動画のとおりだろ
NTFSではPOSIX対応が必要だったため、本来はコロンとかを
ファイル名に入れられるんだがWindowsでは互換性のために禁止されてる
しかしWSLの登場でコロンや不等号のファイル名に対応する必要が出てきた
誰得ってのはこのWSLユーザーに決まってる
NTFSではこれらの文字を使おうと思えば使えるのだが、それだと相互運用で問題が出る
だからWSLでコロン等をファイル名に使ったら、Unicodeの特殊な文字に名前を変更して記録している
そしてこの仕様はもともとCygwinで考え出されたものだ
WindowsでLinux的に使おうとすれば、どうしてもそういう文字に対応する必要があるので
Cygwinで考え出された仕組みをWSLでそのまま取り入れてるだけ
誰得もなにも動画のとおりだろ
NTFSではPOSIX対応が必要だったため、本来はコロンとかを
ファイル名に入れられるんだがWindowsでは互換性のために禁止されてる
しかしWSLの登場でコロンや不等号のファイル名に対応する必要が出てきた
誰得ってのはこのWSLユーザーに決まってる
NTFSではこれらの文字を使おうと思えば使えるのだが、それだと相互運用で問題が出る
だからWSLでコロン等をファイル名に使ったら、Unicodeの特殊な文字に名前を変更して記録している
そしてこの仕様はもともとCygwinで考え出されたものだ
WindowsでLinux的に使おうとすれば、どうしてもそういう文字に対応する必要があるので
Cygwinで考え出された仕組みをWSLでそのまま取り入れてるだけ
934デフォルトの名無しさん
2020/11/17(火) 17:55:26.97ID:WUYxAqUP935デフォルトの名無しさん
2020/11/17(火) 18:03:09.09ID:nHdTOcnh 普通にcygwinで:というファイル名を作ったら
Windowsからはどう見えるんだ?って調べればわかることだな
もう何年も前の話だよ
俺にとってはWSLでも同じでワロタ状態
Windowsからはどう見えるんだ?って調べればわかることだな
もう何年も前の話だよ
俺にとってはWSLでも同じでワロタ状態
936デフォルトの名無しさん
2020/11/17(火) 18:05:47.61ID:nHdTOcnh あとwslpathコマンドも、昔からCygwinにcygpathというコマンドがあるのを知っていれば
同じような仕組みにしたのねって思うはず
MS独自の仕組みじゃなくて既存の仕組みを流用する当たり
今のMSがオープン的な考えになってることがよく分かる
同じような仕組みにしたのねって思うはず
MS独自の仕組みじゃなくて既存の仕組みを流用する当たり
今のMSがオープン的な考えになってることがよく分かる
937デフォルトの名無しさん
2020/11/17(火) 18:34:05.16ID:J3+TnR7G 全角文字使えは解決するのにな
938デフォルトの名無しさん
2020/11/17(火) 18:44:18.62ID:8pwQehN5 全角と半角を同一視したらダメだろ
だから通常使われてない文字にわざわざしてるんだが
だから通常使われてない文字にわざわざしてるんだが
939デフォルトの名無しさん
2020/11/17(火) 19:02:58.91ID:J3+TnR7G ファイル履歴「せやな…」
940デフォルトの名無しさん
2020/11/17(火) 20:36:01.00ID:RPD3bx3d wslpathがcygpathと同じ仕組みなのってなんで分かったん?
いや,つっかかる訳じゃなくて,
wslpathってソース公開されてないからさ。
いや,つっかかる訳じゃなくて,
wslpathってソース公開されてないからさ。
941デフォルトの名無しさん
2020/11/17(火) 20:46:02.57ID:/MJ+K6rY a.txt
a x Nov 17 2020 aaa
b x Nov 18 2020 bbb
c z Nov 19 2020 ccc
cat a.txt | awk -v hy="-" '{if("$2"=="x"){"date -d "$3hy$4hy$5" ¥"+%Y-%M-%D¥" | getline var ; print $1","var","$6}}'
これ実行するとvarの内容がたまに前の行の値のままになったりするんだけど
|が悪いの?
結局 while IFS=' ' read 〜に変えたらやりたいことはできたけと何故上手くいかなかったのか分からなくて
a x Nov 17 2020 aaa
b x Nov 18 2020 bbb
c z Nov 19 2020 ccc
cat a.txt | awk -v hy="-" '{if("$2"=="x"){"date -d "$3hy$4hy$5" ¥"+%Y-%M-%D¥" | getline var ; print $1","var","$6}}'
これ実行するとvarの内容がたまに前の行の値のままになったりするんだけど
|が悪いの?
結局 while IFS=' ' read 〜に変えたらやりたいことはできたけと何故上手くいかなかったのか分からなくて
942デフォルトの名無しさん
2020/11/17(火) 21:02:17.75ID:8pwQehN5 >>940
コロンとかのファイル名の話な(これはwslpathやcygpathとは関係ない)
cygwin「cygwin環境でHOME以下に作ったファイルはC:\cygwin64\home以下に作るで」
cygwin「 cygwin環境で : とか * という名前のファイル作れるで」
10年前の俺「え?なんで?エクスプローラーから見たら文字化けしとるやんけwww なんだこりゃ」
数分後 → 「ふーん」
WSL「/mnt/c/Users以下に作ったファイルはC:\Users以下に作るで」
WSL「WSL環境で : とか * という名前のファイル作れるで」
俺「エクスプローラーから見たら文字化けしとるやんけwww 既視感ぱねぇwww」
数分後 → 「同じじゃねーかwww」
wslpathは別にcygpath使ってればコマンド名とかオプションとか真似してるってわかるだろ?
WSL(Linux)にパスを変換するときのオプションが何故か-uな所とか
(cygwinでは-uの長いオプション名は--unix)
コロンとかのファイル名の話な(これはwslpathやcygpathとは関係ない)
cygwin「cygwin環境でHOME以下に作ったファイルはC:\cygwin64\home以下に作るで」
cygwin「 cygwin環境で : とか * という名前のファイル作れるで」
10年前の俺「え?なんで?エクスプローラーから見たら文字化けしとるやんけwww なんだこりゃ」
数分後 → 「ふーん」
WSL「/mnt/c/Users以下に作ったファイルはC:\Users以下に作るで」
WSL「WSL環境で : とか * という名前のファイル作れるで」
俺「エクスプローラーから見たら文字化けしとるやんけwww 既視感ぱねぇwww」
数分後 → 「同じじゃねーかwww」
wslpathは別にcygpath使ってればコマンド名とかオプションとか真似してるってわかるだろ?
WSL(Linux)にパスを変換するときのオプションが何故か-uな所とか
(cygwinでは-uの長いオプション名は--unix)
943デフォルトの名無しさん
2020/11/17(火) 21:04:26.43ID:8pwQehN5 まあもしかしたらcygwinよりも前にSFU(の前身)とかがやってたのかもしれんけどさ
944デフォルトの名無しさん
2020/11/17(火) 21:32:09.28ID:yKNV/xx9 >>940
「仕組み」は、具体的な実装のことではなく、全体的なやりかたのことやろ。
「仕組み」は、具体的な実装のことではなく、全体的なやりかたのことやろ。
945デフォルトの名無しさん
2020/11/17(火) 22:11:55.77ID:8pwQehN5 > 俺「エクスプローラーから見たら文字化けしとるやんけwww 既視感ぱねぇwww」
> 数分後 → 「同じじゃねーかwww」
この同じじゃねーかwwwっていうのは : などのWindowsでは使えない文字のマッピング先の文字コードの話ね
そういや文字コードが同じであることは確かめたけど、実際にcygwinで作ったファイルをWSLで見たことなかったわ
んで、今やってみたけど、当然なんだけど、cygwinで作った : というファイルはWSLでちゃんと : になってたw
cygwin(たぶんmsysも同じ)との相互運用も考えてこうしたんだろうな
> 数分後 → 「同じじゃねーかwww」
この同じじゃねーかwwwっていうのは : などのWindowsでは使えない文字のマッピング先の文字コードの話ね
そういや文字コードが同じであることは確かめたけど、実際にcygwinで作ったファイルをWSLで見たことなかったわ
んで、今やってみたけど、当然なんだけど、cygwinで作った : というファイルはWSLでちゃんと : になってたw
cygwin(たぶんmsysも同じ)との相互運用も考えてこうしたんだろうな
946デフォルトの名無しさん
2020/11/18(水) 14:43:02.92ID:oGkGNlvA947946
2020/11/18(水) 14:47:49.14ID:oGkGNlvA948946
2020/11/18(水) 14:58:29.15ID:oGkGNlvA >>941
Ruby で、CSV なら、
require 'csv'
CSV.foreach( "a.csv", col_sep: " " ) do |row| # 1行ずつ処理する
p row[ 1 ]
end
出力
"x"
"x"
"z"
Ruby で、CSV なら、
require 'csv'
CSV.foreach( "a.csv", col_sep: " " ) do |row| # 1行ずつ処理する
p row[ 1 ]
end
出力
"x"
"x"
"z"
949デフォルトの名無しさん
2020/11/18(水) 15:28:33.58ID:XsHXPiSN951デフォルトの名無しさん
2020/11/18(水) 15:59:00.88ID:XsHXPiSN >>950
出力される行数10行くらいに増やした場合は?(もちろん全て日付変えて)
出力される行数10行くらいに増やした場合は?(もちろん全て日付変えて)
952946
2020/11/18(水) 16:43:39.93ID:oGkGNlvA 正しく出力される。
実際には、c, d, f などは出力されていないけど
a,2020-11-17,aaa
b,2020-11-18,bbb
c
d
e,2020-11-21,eee
f
g,2020-11-23,ggg
h,2020-11-24,hhh
i
j,2020-11-26,jjj
k,2020-11-27,kkk
l,2020-11-28,lll
m
n
o,2020-12-01,ooo
p,2020-12-02,ppp
q,2020-12-03,qqq
r
s,2020-12-05,sss
t,2020-12-06,ttt
u
実際には、c, d, f などは出力されていないけど
a,2020-11-17,aaa
b,2020-11-18,bbb
c
d
e,2020-11-21,eee
f
g,2020-11-23,ggg
h,2020-11-24,hhh
i
j,2020-11-26,jjj
k,2020-11-27,kkk
l,2020-11-28,lll
m
n
o,2020-12-01,ooo
p,2020-12-02,ppp
q,2020-12-03,qqq
r
s,2020-12-05,sss
t,2020-12-06,ttt
u
953デフォルトの名無しさん
2020/11/18(水) 17:46:13.72ID:XsHXPiSN954デフォルトの名無しさん
2020/11/18(水) 22:39:32.53ID:c4VI5UKm フィールド数が想定がところがあるとエラーで getline が呼ばれなくて
var がそのままになったりするのかも?
var がそのままになったりするのかも?
955デフォルトの名無しさん
2020/11/18(水) 22:40:20.82ID:c4VI5UKm 想定が -> 想定外な
956デフォルトの名無しさん
2020/11/18(水) 23:00:38.15ID:XsHXPiSN957デフォルトの名無しさん
2020/11/18(水) 23:22:35.65ID:2l0B+GoX AWKのgetlineってめっちゃ便利よね。
これ使い始めたらもうシェルスクリプトじゃなくてAWKスクリプトになるけどw
これ使い始めたらもうシェルスクリプトじゃなくてAWKスクリプトになるけどw
958デフォルトの名無しさん
2020/11/18(水) 23:25:59.76ID:XsHXPiSN959デフォルトの名無しさん
2020/11/19(木) 02:55:11.75ID:kL0AGIHT まず再現するデータをよこせ
960デフォルトの名無しさん
2020/11/19(木) 07:48:43.53ID:jemYGepS 元ネタの人じゃないけど以下のデータでおかしくなった。
a.txt
a x Nov 17 2020 aaa
b x Nov 18 2020 bbb
c x Nov 18 2020 ccc
d x Nov 19 2020 ddd
d x
e x Nov 19 2020 eee
f x Nov 20 2020 fff
d の行以降の日付が今日の日付になった。Ubuntu 16.04.7。
なんかデータをちょっといじると再現しなくなるような感もある。
a.txt
a x Nov 17 2020 aaa
b x Nov 18 2020 bbb
c x Nov 18 2020 ccc
d x Nov 19 2020 ddd
d x
e x Nov 19 2020 eee
f x Nov 20 2020 fff
d の行以降の日付が今日の日付になった。Ubuntu 16.04.7。
なんかデータをちょっといじると再現しなくなるような感もある。
961946
2020/11/19(木) 10:41:14.25ID:uVXRNBYq >>960
d x
という変な行も、データに入れるのか?
Windows 10, WSL2, Ubuntu 18.04 では、下のように出力された
a,2020-11-17,aaa
b,2020-11-18,bbb
c,2020-11-18,ccc
d,2020-11-19,ddd
d,2020-11-19,
e,2020-11-19,eee
f,2020-11-20,fff
d x
という変な行も、データに入れるのか?
Windows 10, WSL2, Ubuntu 18.04 では、下のように出力された
a,2020-11-17,aaa
b,2020-11-18,bbb
c,2020-11-18,ccc
d,2020-11-19,ddd
d,2020-11-19,
e,2020-11-19,eee
f,2020-11-20,fff
962デフォルトの名無しさん
2020/11/19(木) 21:37:07.41ID:ACSoydf1 >>961
そう。わざと壊れたデータで遊んでみているw
確実に再現できるバグは、ある意味治すのは易しい。
再現方法がよくわからんバグは...どうしたら再現するかを考えるのも一興かとw
あしまった、データが違ったかも。こうかな。
a x Nov 17 2020 aaa
b x Nov 18 2020 bbb
c x Nov 18 2020 ccc
d x Nov 20 2020 ddd
d x
e x Nov 20 2020 eee
f x Nov 20 2020 fff
そう。わざと壊れたデータで遊んでみているw
確実に再現できるバグは、ある意味治すのは易しい。
再現方法がよくわからんバグは...どうしたら再現するかを考えるのも一興かとw
あしまった、データが違ったかも。こうかな。
a x Nov 17 2020 aaa
b x Nov 18 2020 bbb
c x Nov 18 2020 ccc
d x Nov 20 2020 ddd
d x
e x Nov 20 2020 eee
f x Nov 20 2020 fff
963デフォルトの名無しさん
2020/11/19(木) 21:49:05.89ID:pLwLwTYy ちなみにdateコマンドは日付が空だと今日の日付を入れるようなので
Nov 20になる前に試すのがおすすめw
Nov 20になる前に試すのがおすすめw
964946
2020/11/20(金) 02:15:19.68ID:pwTm9Uxw このデータでやった。
b が今日の日付になる
a x Nov 03 2020 aaa
b x
c x Nov 05 2020 ccc
d x Nov 06 2020 ddd
出力
a,2020-11-03,aaa
b,2020-11-20,
c,2020-11-05,ccc
d,2020-11-06,ddd
b が今日の日付になる
a x Nov 03 2020 aaa
b x
c x Nov 05 2020 ccc
d x Nov 06 2020 ddd
出力
a,2020-11-03,aaa
b,2020-11-20,
c,2020-11-05,ccc
d,2020-11-06,ddd
965デフォルトの名無しさん
2020/11/20(金) 14:19:37.94ID:EGUOn9wt966デフォルトの名無しさん
2020/11/23(月) 08:04:11.39ID:bkMAXdue ループ処理をバックグラウンドで流すと500個ぐらいプロセスができて
まったく動かない。いい方法ないかな。
まったく動かない。いい方法ないかな。
967デフォルトの名無しさん
2020/11/23(月) 08:50:42.89ID:eEk7O1Jq968デフォルトの名無しさん
2020/11/23(月) 10:20:31.35ID:QFnswc7I >>966
シェルの問題なんだろうか…?
シェルの問題なんだろうか…?
969デフォルトの名無しさん
2020/11/23(月) 11:57:26.98ID:fPgs5Hol 10万行のループ処理にかかる時間は、while は5秒、for は9分。
それらを、awk, perl に書き直せば、0.1秒
forの時間のほとんどは、プロセスの起動・終了処理。
そもそも、bash はループ処理に向いていないので、dash を使う。
それでも、シェルスクリプトはループ処理に向いていない
awk, perl, Ruby などは、1プロセス内で処理するから、
シェルスクリプトよりも断然速い
それらを、awk, perl に書き直せば、0.1秒
forの時間のほとんどは、プロセスの起動・終了処理。
そもそも、bash はループ処理に向いていないので、dash を使う。
それでも、シェルスクリプトはループ処理に向いていない
awk, perl, Ruby などは、1プロセス内で処理するから、
シェルスクリプトよりも断然速い
970デフォルトの名無しさん
2020/11/23(月) 12:55:10.05ID:eEk7O1Jq 古いCorei7だけどbashで0.5秒で終わるぞ?
$ time -p bash -c 'i=0; while [ $i -lt 100000 ]; do i=$((i+1)); done'
real 0.53
user 0.51
sys 0.00
dashなら0.15秒だな
$ time -p dash -c 'i=0; while [ $i -lt 100000 ]; do i=$((i+1)); done'
real 0.15
user 0.14
sys 0.01
$ time -p bash -c 'i=0; while [ $i -lt 100000 ]; do i=$((i+1)); done'
real 0.53
user 0.51
sys 0.00
dashなら0.15秒だな
$ time -p dash -c 'i=0; while [ $i -lt 100000 ]; do i=$((i+1)); done'
real 0.15
user 0.14
sys 0.01
971デフォルトの名無しさん
2020/11/23(月) 12:58:14.53ID:eEk7O1Jq > forの時間のほとんどは、プロセスの起動・終了処理。
forでプロセス起動なんてしないけど?
forでプロセス起動なんてしないけど?
972デフォルトの名無しさん
2020/11/23(月) 13:16:27.49ID:LSu3Ppxv973デフォルトの名無しさん
2020/11/23(月) 13:22:54.01ID:LSu3Ppxv974969
2020/11/23(月) 13:37:45.01ID:fPgs5Hol >>970
漏れは、6年前のパソコン工房の初心者向けノートPC、
Windows 10 Home, 64 bit, 20H2(2020 秋)
WSL2, Ubuntu 18.04
CPU は、i3-3120M。2 core, 4 thread のエコモード。
8GB メモリで、
bash
real 1.53
user 1.53
sys 0.00
dash
real 0.42
user 0.42
sys 0.00
漏れは、6年前のパソコン工房の初心者向けノートPC、
Windows 10 Home, 64 bit, 20H2(2020 秋)
WSL2, Ubuntu 18.04
CPU は、i3-3120M。2 core, 4 thread のエコモード。
8GB メモリで、
bash
real 1.53
user 1.53
sys 0.00
dash
real 0.42
user 0.42
sys 0.00
975968
2020/11/23(月) 14:12:23.68ID:QFnswc7I >>970
$ time -p bash -c 'i=0; while [ $i -lt 100000 ]; do i=$((i+1)); done'
real 0.30
user 0.30
sys 0.00
$ time -p dash -c 'i=0; while [ $i -lt 100000 ]; do i=$((i+1)); done'
real 0.11
user 0.11
sys 0.00
OS: Gentoo via WSL2 on Windows 10 (build 20262.1010)
CPU: AMD Ryzen 7 3700X
RAM: 16 GiB, 2666 MHz
$ time -p bash -c 'i=0; while [ $i -lt 100000 ]; do i=$((i+1)); done'
real 0.30
user 0.30
sys 0.00
$ time -p dash -c 'i=0; while [ $i -lt 100000 ]; do i=$((i+1)); done'
real 0.11
user 0.11
sys 0.00
OS: Gentoo via WSL2 on Windows 10 (build 20262.1010)
CPU: AMD Ryzen 7 3700X
RAM: 16 GiB, 2666 MHz
976968
2020/11/23(月) 14:12:52.26ID:QFnswc7I 多分ね,遅いのはシェルのせいじゃない。
組み方がおかしい。
組み方がおかしい。
977デフォルトの名無しさん
2020/11/23(月) 16:34:44.84ID:iaIJT3SX テキストファイルの中にカレントディレクトリを基準にしたファイルリストがあります。
このテキストファイルのファイルリストのファイルを~/backap/以下にディレクトリ構造を
維持したままコピーする方法を教えてください。
ファイルリストに含まれるパスは全てファイルです。ディレクトリで終わるパスは含まれません。
./file/jidori.jpg
./nikki/2020/11/01.txt
↑こんな感じのがたくさんあります
このテキストファイルのファイルリストのファイルを~/backap/以下にディレクトリ構造を
維持したままコピーする方法を教えてください。
ファイルリストに含まれるパスは全てファイルです。ディレクトリで終わるパスは含まれません。
./file/jidori.jpg
./nikki/2020/11/01.txt
↑こんな感じのがたくさんあります
978デフォルトの名無しさん
2020/11/23(月) 17:18:30.33ID:nsFhHMUZ $ rsync -a ―files-from=./file_list.txt . ~/backap
979デフォルトの名無しさん
2020/11/23(月) 18:16:32.54ID:hekS2Nxq $ cp -pr ./* ~/backup
ではいかんのか?
ではいかんのか?
980デフォルトの名無しさん
2020/11/23(月) 20:09:16.39ID:QFnswc7I ちなみにbackapじゃなくてbackupな
981デフォルトの名無しさん
2020/11/23(月) 20:59:12.22ID:bsUMpvvq >>979
あほ?
あほ?
982デフォルトの名無しさん
2020/11/24(火) 07:52:34.13ID:4nyZROoo rsync -avをよく使う
983977
2020/11/24(火) 18:17:20.50ID:xCsiFrs4 大変助かりました!ありがとうございます!!
984デフォルトの名無しさん
2020/11/24(火) 20:21:52.33ID:mbTiTj6s 次スレそろそろ……
985デフォルトの名無しさん
2020/11/24(火) 21:38:15.89ID:mbTiTj6s 言い出しっぺなんで建てました。
https://mevius.5ch.net/test/read.cgi/tech/1606221440
https://mevius.5ch.net/test/read.cgi/tech/1606221440
986デフォルトの名無しさん
2020/11/24(火) 23:19:57.68ID:EBaS3Lgi しっぺ
デコピン
馬場チョップ
デコピン
馬場チョップ
987デフォルトの名無しさん
2020/11/25(水) 00:18:39.96ID:jf5n46hh しっぷ
デブちょん
バカちょんぷ
デブちょん
バカちょんぷ
988デフォルトの名無しさん
2020/12/10(木) 10:37:09.61ID:/AM+Meb9 (´・ω・`)
989デフォルトの名無しさん
2020/12/10(木) 14:19:01.84ID:/AM+Meb9 (´・ω・`)
990デフォルトの名無しさん
2020/12/11(金) 08:55:47.30ID:8Z169BTH うめ!!!
991デフォルトの名無しさん
2020/12/11(金) 08:55:56.82ID:8Z169BTH うめっ11
992デフォルトの名無しさん
2020/12/11(金) 08:56:03.69ID:8Z169BTH うめあ
993デフォルトの名無しさん
2020/12/11(金) 08:56:11.79ID:8Z169BTH うめい
994デフォルトの名無しさん
2020/12/11(金) 08:56:19.82ID:8Z169BTH うめうえ
995デフォルトの名無しさん
2020/12/11(金) 08:56:26.45ID:8Z169BTH うめえ
996デフォルトの名無しさん
2020/12/11(金) 08:56:36.33ID:8Z169BTH うめめt
997デフォルトの名無しさん
2020/12/11(金) 08:56:45.14ID:8Z169BTH ume
998デフォルトの名無しさん
2020/12/11(金) 08:56:52.52ID:8Z169BTH umeru
999デフォルトの名無しさん
2020/12/11(金) 08:57:00.61ID:8Z169BTH uue
1000デフォルトの名無しさん
2020/12/11(金) 08:57:08.73ID:8Z169BTH ume
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 111日 17時間 39分 13秒
新しいスレッドを立ててください。
life time: 111日 17時間 39分 13秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 「怒りに震えて涙が出た」 同性婚認めず「合憲」判断に原告が反発 「差別的な判決だ」 ★2 [ぐれ★]
- 今後50年間、毎年100万人ずつ人口が減る…「少子化対策」の失敗で日本が迎える「死ぬまで搾取」というヤバい未来 ★6 [ぐれ★]
- 財政膨張、自民党内に異論 麻生副総裁「やりすぎじゃないか」 [蚤の市★]
- 中国外務省「正式な発言撤回なければ受け入れず」 高市首相は台湾有事「存立危機事態」言及せずも「言及しないことと撤回は別問題」★6 [ぐれ★]
- 「インバウンド政策上、中国は重要」、訪日自粛で金子国交相「早く通常の状況に戻っていただきたい」★3 [ぐれ★]
- 今後50年間、毎年100万人ずつ人口が減る…「少子化対策」の失敗で日本が迎える「死ぬまで搾取」というヤバい未来 ★7 [ぐれ★]
- 【動画】上海バンダイナムコフェス、ワンピース歌ってる途中に中国政府「日本人の公演全面禁止」発令された瞬間強制終了 怖すぎ★5 [579392623]
- お前らって定期的にうんちすることを心がけてるよな
- 【悲報】国分太一さん「全てを失ったんだ!答え合わせさせてくれ!」日テレ「ダメです(即答」 [531674905]
- 中国にはポケモンやらせてあげない
- 【📦】Amazonブラックフライデー、お熱がぶり返した6日目(土曜日)突入!!!
- 【嫌儲超朗報!】Xトレンド1位『高市氏、宣伝費に8000万円超』 [718678614]
