シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ: シェルスクリプト総合 その27(https://mevius.5ch.net/test/read.cgi/unix/1525337663/)
シェルスクリプト総合 その28
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2018/07/24(火) 11:01:16.36ID:r0TJj2hB2018/07/24(火) 11:01:46.51ID:r0TJj2hB
お約束
・特記なき場合、Bourne ShellもしくはPOSIX準拠のsh可換シェルが既定です
つまりシバンは#! /bin/shです。
他のシェル(bash, zsh, ksh, (d)ash, yash, posh, fish, (t)csh)などの専用機能に依存する場合は明示しましょう。
OS X, GNU/Linuxユーザーは/bin/shの実体がbashなので*特に*注意(自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?)。
ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX sh互換のdashですのであまり気にしないでも大丈夫です。
FreeBSDユーザーは/bin/shの実体がashなので注意。
Solaris, OpenBSDユーザーは/bin/shの実体がkshなので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIXに準拠しましょう
有用なリンクはhttps://en.wikipedia.org/wiki/POSIXにまとめられています。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh、次点でDebianなどに搭載されているDash shell
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
・特記なき場合、Bourne ShellもしくはPOSIX準拠のsh可換シェルが既定です
つまりシバンは#! /bin/shです。
他のシェル(bash, zsh, ksh, (d)ash, yash, posh, fish, (t)csh)などの専用機能に依存する場合は明示しましょう。
OS X, GNU/Linuxユーザーは/bin/shの実体がbashなので*特に*注意(自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?)。
ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX sh互換のdashですのであまり気にしないでも大丈夫です。
FreeBSDユーザーは/bin/shの実体がashなので注意。
Solaris, OpenBSDユーザーは/bin/shの実体がkshなので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIXに準拠しましょう
有用なリンクはhttps://en.wikipedia.org/wiki/POSIXにまとめられています。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh、次点でDebianなどに搭載されているDash shell
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
2018/07/24(火) 11:02:04.48ID:r0TJj2hB
初心者へのアドバイス
・適した道具を判断するのも頭の重要な使い方。
シェルスクリプトよりもPerlまたはPythonの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらman(1)を引きましょう。
・思い通りに動かないときは、まずはsh(1)の-xオプションでトレースしましょう。
回答者への注意事項
・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに、「そういうのはPerl, Python使え」と回答するのはやめましょう。
安易にPerlやPythonに逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。
・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。
・適した道具を判断するのも頭の重要な使い方。
シェルスクリプトよりもPerlまたはPythonの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらman(1)を引きましょう。
・思い通りに動かないときは、まずはsh(1)の-xオプションでトレースしましょう。
回答者への注意事項
・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに、「そういうのはPerl, Python使え」と回答するのはやめましょう。
安易にPerlやPythonに逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。
・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。
2018/07/24(火) 11:05:09.89ID:r0TJj2hB
補足(今スレ限り)
いままではUNIX板でスレ立てをしていましたが、IDやワッチョイが無いことを理由とした自演・荒しが目立ってきておりスレがまともに機能しなくなりかけているので、今回よりプログラム板に移動することになりました。
いままではUNIX板でスレ立てをしていましたが、IDやワッチョイが無いことを理由とした自演・荒しが目立ってきておりスレがまともに機能しなくなりかけているので、今回よりプログラム板に移動することになりました。
2018/07/24(火) 14:22:58.96ID:r0TJj2hB
とりあえず保守っぽい書き込み
2018/07/24(火) 15:29:38.59ID:4yafhCFC
おつ
2018/07/24(火) 15:31:12.93ID:ux1Ayazo
り返せ
2018/07/24(火) 16:40:14.98ID:PsBikv9p
ません
2018/07/24(火) 16:45:11.85ID:dOWUO1eS
m9
2018/07/24(火) 20:36:43.40ID:0V9luMBh
>>1
スレ立て乙!111
スレ立て乙!111
2018/07/24(火) 21:04:07.46ID:ux1Ayazo
112
2018/07/24(火) 22:37:58.80ID:ukUjoRN2
>1 乙
支援
支援
2018/07/25(水) 01:58:18.49ID:41CwtA3+
乙なんよ
2018/07/25(水) 02:54:55.73ID:7zvfAEGp
テンプレの↓
> 自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?
ちょっと痛いかな
> 自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?
ちょっと痛いかな
2018/07/25(水) 03:03:02.74ID:JJXqrWB8
bashのあれやこれは、shでどうかけばいいかってのがあるといいな
特に配列。配列は引数として処理するんだよっていうのが体系的にまとまるといいな
特に配列。配列は引数として処理するんだよっていうのが体系的にまとまるといいな
2018/07/25(水) 08:44:11.14ID:go981At1
本来の引数配列以外で配列が必要になったら、基本的にはawkその他の言語使うなあ。
まあ自分用だと気の迷いで引数配列転用したり、evalで頑張ったりすることもあるけど、
仕事で他の人に引き継ぐこと考えると保守性で問題になるので
仕事ではやらないようにしてる。
まあ自分用だと気の迷いで引数配列転用したり、evalで頑張ったりすることもあるけど、
仕事で他の人に引き継ぐこと考えると保守性で問題になるので
仕事ではやらないようにしてる。
2018/07/25(水) 15:17:48.54ID:JJXqrWB8
>>16
配列が必要になるっていうのは、シェルスクリプトの
プログラミングの仕方が間違えてるってことだよ
例えて言うならば、関数型言語をオブジェクト指向言語的に
使って、オブジェクト使いたい。インスタンス作りたい
メソッド作りたい、継承、カプセル化欲しい!って言うようなもん
シェルスクリプトは引数または標準入力で渡されたものを
順次処理していくという書き方をするもんなんだろう。
一時的に変数にためておくなんてことはしないので
配列は使わないですむ
配列が必要になるっていうのは、シェルスクリプトの
プログラミングの仕方が間違えてるってことだよ
例えて言うならば、関数型言語をオブジェクト指向言語的に
使って、オブジェクト使いたい。インスタンス作りたい
メソッド作りたい、継承、カプセル化欲しい!って言うようなもん
シェルスクリプトは引数または標準入力で渡されたものを
順次処理していくという書き方をするもんなんだろう。
一時的に変数にためておくなんてことはしないので
配列は使わないですむ
2018/07/25(水) 15:24:58.23ID:eezz2RvW
evalだけは怖いから使わない
それでしか解決できない問題をまだ扱った事がないからだが
それでしか解決できない問題をまだ扱った事がないからだが
2018/07/25(水) 15:32:42.01ID:JJXqrWB8
evalは信頼できない文字をevalするのが問題なのであって
コードの中で作り出した文字をevalするなら問題もないんだよ
信頼できない文字であっても、使える文字種を限定すればいいし
コードの中で作り出した文字をevalするなら問題もないんだよ
信頼できない文字であっても、使える文字種を限定すればいいし
2018/07/25(水) 17:47:06.73ID:7zvfAEGp
あるリモートファイルの最新のバージョンをダウンロードする方法ってありますか。
具体的にはhttp://ftp.jaist.ac.jp/pub/GNU/gnuzilla/←ここの最新バージョンのディレクトリを知りたいです。
具体的にはhttp://ftp.jaist.ac.jp/pub/GNU/gnuzilla/←ここの最新バージョンのディレクトリを知りたいです。
2018/07/25(水) 17:59:04.34ID:DddK84yb
ある
2018/07/25(水) 21:12:21.99ID:l3Vcc9bz
2018/07/25(水) 21:32:58.42ID:tKZkTFhc
極端な例を挙げるなら、行列演算をシェルスクリプトで書く馬鹿はいないみたいな話よ。
配列に限った話ではなく、ほとんど全ての高級言語にあるのにシェルにはない言語機能がいろいろある。
例えば構造体に類する機能とか、参照とか。
言語には向き不向きがあって、シェルでは向いてない用途に無理矢理使うのは井の中の蛙。
配列に限った話ではなく、ほとんど全ての高級言語にあるのにシェルにはない言語機能がいろいろある。
例えば構造体に類する機能とか、参照とか。
言語には向き不向きがあって、シェルでは向いてない用途に無理矢理使うのは井の中の蛙。
2018/07/25(水) 22:46:32.67ID:c/fHfsdl
>>21
wget -qO - 'http://ftp.jaist.ac.jp/pub/GNU/gnuzilla/?C=M;O=D' | grep -m1 -Po '\[DIR\].+?href="\K[0-9.]+'
wget -qO - 'http://ftp.jaist.ac.jp/pub/GNU/gnuzilla/?C=M;O=D' | grep -m1 -Po '\[DIR\].+?href="\K[0-9.]+'
2018/07/27(金) 11:44:05.25ID:+pgu0NCD
2018/07/27(金) 15:01:43.20ID:GvW3yrkV
できるだけ可搬なUNIX時間<->ISO 8601形式時間の変換器ってどんなのがありますかね
PerlやRubyでいけるのは知っていますが,もうちょっとPOSIXに従ってるやり方が知りたいです
PerlやRubyでいけるのは知っていますが,もうちょっとPOSIXに従ってるやり方が知りたいです
2018/07/27(金) 15:34:58.00ID:2MP7doyF
>>28
GNU date 限定の技だと思うのであまり嬉しくないかもしれないけど、以下のコマンドでいけるそうだ。
date --date "@1501201492" +"%Y%m%dT%H%M%SZ"
ちなみに出典は以下の記事です。
dateコマンドを使ってUnixTimeをISO8601形式へ変換する - Qiita
https://qiita.com/EDAPIYO/items/1bf163604006fd667988
GNU date 限定の技だと思うのであまり嬉しくないかもしれないけど、以下のコマンドでいけるそうだ。
date --date "@1501201492" +"%Y%m%dT%H%M%SZ"
ちなみに出典は以下の記事です。
dateコマンドを使ってUnixTimeをISO8601形式へ変換する - Qiita
https://qiita.com/EDAPIYO/items/1bf163604006fd667988
2018/07/27(金) 15:42:57.75ID:2MP7doyF
>>28
小出しでスマン。こういうオプションもあるみたいなんだけど、man に記載されてないね……
$ date --date "@1501201492" --iso-8601=seconds
2017-07-28T09:24:52+0900
小出しでスマン。こういうオプションもあるみたいなんだけど、man に記載されてないね……
$ date --date "@1501201492" --iso-8601=seconds
2017-07-28T09:24:52+0900
2018/07/27(金) 16:35:57.77ID:GvW3yrkV
>>29
ありがとうございます。
そうっすね……。dateコマンドでできるのは知っていますが,
これ,ものっすごく可搬性悪いんですよ。下手するとPerlでやったほうがマシなくらい。
なぜかというと,各種OSによってdateコマンドのUNIX時間<->ISO 8601形式時間変換のオプションが違うんです。
*BSDはdate -jだしGNU/Linuxでは書いてもらったdate --dateとかdate -dとか。
ある種のOSではdate -rもあるっぽいです……。
ありがとうございます。
そうっすね……。dateコマンドでできるのは知っていますが,
これ,ものっすごく可搬性悪いんですよ。下手するとPerlでやったほうがマシなくらい。
なぜかというと,各種OSによってdateコマンドのUNIX時間<->ISO 8601形式時間変換のオプションが違うんです。
*BSDはdate -jだしGNU/Linuxでは書いてもらったdate --dateとかdate -dとか。
ある種のOSではdate -rもあるっぽいです……。
2018/07/27(金) 20:53:36.25ID:5PTGcdNX
33デフォルトの名無しさん
2018/07/31(火) 09:25:51.28ID:nOeIYYJj2018/07/31(火) 09:56:38.03ID:2+1mdxB2
自力で作るならコマンド見分けたほうが楽だなw
どちらも同じオプションだけど意味が違うものを使って見分ける
どちらも同じオプションだけど意味が違うものを使って見分ける
2018/07/31(火) 11:29:27.77ID:3VAn/oI8
>>31
自分で言ってる様に Perl で書いちゃえば良いような…
自分で言ってる様に Perl で書いちゃえば良いような…
2018/07/31(火) 19:49:30.25ID:M5dn2TAr
自分で足し算すると、サマータイム・うるう秒は、大丈夫なのか?
2018/07/31(火) 20:11:42.59ID:qTamNnJo
bashです。
aa.shからbb.shを呼び出した時、リダイレクトでログを残したいんだけどうまく行かない。
なにか間違っているでしょうか?
(aa.sh)
#!/bin/bash
b_shell="./bb.sh"
cmd="${b_shell} > ./bb.log"
${cmd}
(bb.sh)
#!/bin/bash
echo "hoge"
aa.shからbb.shを呼び出した時、リダイレクトでログを残したいんだけどうまく行かない。
なにか間違っているでしょうか?
(aa.sh)
#!/bin/bash
b_shell="./bb.sh"
cmd="${b_shell} > ./bb.log"
${cmd}
(bb.sh)
#!/bin/bash
echo "hoge"
2018/07/31(火) 20:15:49.79ID:6LkeIiyI
何か間違ってるんだろ
2018/07/31(火) 20:18:57.37ID:qTamNnJo
どこを変更したら動くの?
2018/07/31(火) 21:14:19.18ID:1f/UcTRP
想定通りの動きをしてない行
2018/07/31(火) 21:14:23.24ID:MEUSBOQW
eval ${cmd}
2018/07/31(火) 21:16:43.59ID:MEUSBOQW
bb.sh で
echo "$*"
してみりゃ、理解できるだろう
echo "$*"
してみりゃ、理解できるだろう
2018/07/31(火) 21:24:56.48ID:qTamNnJo
>>41
サンクス!できたw
サンクス!できたw
2018/07/31(火) 21:27:46.12ID:MZe54JNj
>>43
cmdに代入しなきゃダメなの?
cmdに代入しなきゃダメなの?
2018/07/31(火) 22:50:34.87ID:nOeIYYJj
>>36
確かそういうのを考慮してないんじゃないの?
確かそういうのを考慮してないんじゃないの?
2018/07/31(火) 22:58:00.65ID:RprViRTw
>>45
うるう秒はUNIX Epochからの秒数には入ってないので無視して良い。
サマータイムやタイムゾーンの考慮は必要だしとても大変。
日本のタイムゾーン固定ならサマータイムも今のところ無視できるし簡単だけど、perlでも使ってライブラリに任せた方がいいと思う。
うるう秒はUNIX Epochからの秒数には入ってないので無視して良い。
サマータイムやタイムゾーンの考慮は必要だしとても大変。
日本のタイムゾーン固定ならサマータイムも今のところ無視できるし簡単だけど、perlでも使ってライブラリに任せた方がいいと思う。
2018/07/31(火) 23:52:51.22ID:nOeIYYJj
どうでもいいが俺のID末尾がjってなんだこれ
2018/08/01(水) 08:18:10.49ID:4ZTIK2TR
>>47
この板のIDは8桁だから9桁目(いわゆる末尾)はないよ
この板のIDは8桁だから9桁目(いわゆる末尾)はないよ
49デフォルトの名無しさん
2018/08/01(水) 11:52:30.09ID:cj6lI2dq 昨日発見した事なんだけど、シェルというよりは test コマンドの問題だけど、test -f で対象のファイルを指定しない時って0になるのな。
これはbash用に書かれたこんな記述の時の動作によって気づいた。
if [ ! -f $file ]; then
echo ファイルなし
exit 1
fi
これで file に何も代入されてないとか空文字列の時にファイルなしにならない。
なんだこの動作は?
testコマンドの仕様?たまたま俺の使ってたLinuxのtestコマンドのバグ?
まあbashなら[[ ]] 使っとけばエラーになるからそっち使っておけば良いんだけどね。
これはbash用に書かれたこんな記述の時の動作によって気づいた。
if [ ! -f $file ]; then
echo ファイルなし
exit 1
fi
これで file に何も代入されてないとか空文字列の時にファイルなしにならない。
なんだこの動作は?
testコマンドの仕様?たまたま俺の使ってたLinuxのtestコマンドのバグ?
まあbashなら[[ ]] 使っとけばエラーになるからそっち使っておけば良いんだけどね。
2018/08/01(水) 12:14:18.97ID:sWzzPqiz
testの仕様。
"" で囲まなかったのが悪い。
"" で囲まなかったのが悪い。
2018/08/01(水) 12:31:44.03ID:GtWBM62w
find [xxx] -type f | xargs grep [yyy]
をよく使うので
search xxx yyy みたいな alias にしたいんですけど
引数を途中に挟むのってどうすればいいんでしょうか
をよく使うので
search xxx yyy みたいな alias にしたいんですけど
引数を途中に挟むのってどうすればいいんでしょうか
52デフォルトの名無しさん
2018/08/01(水) 12:34:38.30ID:cj6lI2dq53デフォルトの名無しさん
2018/08/01(水) 12:43:22.75ID:cj6lI2dq >>51
bash の場合は function で定義するしかないようだよ。ググって探してみな。
bash の場合は function で定義するしかないようだよ。ググって探してみな。
2018/08/01(水) 14:48:58.76ID:GtWBM62w
2018/08/01(水) 14:58:33.41ID:RF/jFH0Y
2018/08/01(水) 15:09:30.95ID:Al4aQLEL
>>51は grep -r [yyy] [xxx] もしくは rgrep [yyy] [xxx] でいいんじゃねーの?
俺はagの方をよく使うが
俺はagの方をよく使うが
2018/08/01(水) 15:16:54.25ID:Al4aQLEL
>>49
そもそも if [ ! -f $file ]; then だと $fileにスペース等が入っている時に
対応できないので "$file" と書くのは必須
更に言うなら set -u すればいい。$file が空のときはエラーになる
そもそも if [ ! -f $file ]; then だと $fileにスペース等が入っている時に
対応できないので "$file" と書くのは必須
更に言うなら set -u すればいい。$file が空のときはエラーになる
2018/08/01(水) 15:25:42.75ID:RF/jFH0Y
0 arguments:
Exit false (1).
1 argument:
Exit true (0) if $1 is not null; otherwise, exit false.
って、だけなんだけどな。2 arguments から本格的に判定に入るってとこかな。演算子が有効なものなのかも含めて
Exit false (1).
1 argument:
Exit true (0) if $1 is not null; otherwise, exit false.
って、だけなんだけどな。2 arguments から本格的に判定に入るってとこかな。演算子が有効なものなのかも含めて
2018/08/01(水) 15:35:17.39ID:RF/jFH0Y
ああ、1 argumentの場合は空文字列でないかどうかっていうテストになるのか。そう思えば不思議でも何でもないな。使わないけどw
歴史的にそんなのがあっても不思議ではないな、実際どうなのか知らんけど
歴史的にそんなのがあっても不思議ではないな、実際どうなのか知らんけど
60デフォルトの名無しさん
2018/08/01(水) 23:58:14.58ID:GZaAdjmn # set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
これは、~/.bashrc だけど、
変数中に空白があっても良いように、たいてい変数は" " で囲む。
一方、固定値は囲まない
こういうように、シェルスクリプトには様々な引掛けあるから、危険!
Ruby などのプログラミング言語を勧める
マンガの「Linux シス管系女子3」に書いてあるけど、
「rm -f $file」と変数を" " で囲わなかったので、
「; rm -rf shared」というファイルがあったため、
rm -f ; rm -rf shared
と文がつながって、共有フォルダのファイルがすべて消えてしまったとかw
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
これは、~/.bashrc だけど、
変数中に空白があっても良いように、たいてい変数は" " で囲む。
一方、固定値は囲まない
こういうように、シェルスクリプトには様々な引掛けあるから、危険!
Ruby などのプログラミング言語を勧める
マンガの「Linux シス管系女子3」に書いてあるけど、
「rm -f $file」と変数を" " で囲わなかったので、
「; rm -rf shared」というファイルがあったため、
rm -f ; rm -rf shared
と文がつながって、共有フォルダのファイルがすべて消えてしまったとかw
2018/08/02(木) 00:06:27.75ID:LJtboBWc
6260
2018/08/02(木) 00:07:43.15ID:yvP4ulwr だから、ディレクトリパス・ユーザー名とか、
システムで使うものに、半角空白を入れたら、ダメ
シェルスクリプトを書いている奴が、変数を" " で囲んでいないと、バグるから
パスに半角空白を入れないようにって、
Mac ユーザーにも、よく言われる
Windows には、半角空白が入ったフォルダ名があるから、危険
システムで使うものに、半角空白を入れたら、ダメ
シェルスクリプトを書いている奴が、変数を" " で囲んでいないと、バグるから
パスに半角空白を入れないようにって、
Mac ユーザーにも、よく言われる
Windows には、半角空白が入ったフォルダ名があるから、危険
6360
2018/08/02(木) 00:12:09.87ID:yvP4ulwr >60 は、
日経Linux で連載している、Piro の有名なマンガ、
「Linux シス管系女子3」に書いてある
このマンガを知らなかったら、もぐりw
日経Linux で連載している、Piro の有名なマンガ、
「Linux シス管系女子3」に書いてある
このマンガを知らなかったら、もぐりw
2018/08/02(木) 00:35:21.87ID:4n+0BAwB
2018/08/02(木) 00:47:05.64ID:aFy8Ou9l
実際に試してみればええんじゃないの
$ mkdir shared
$ touch '; rm -rf'
$ ls
'; rm -rf shared' shared/
$ for file in *;do rm -f $file; done
$ ls
'; rm -rf shared'
$ mkdir shared
$ ls
'; rm -rf shared' shared/
$ for file in *;do rm -f "$file"; done
rm: cannot remove 'shared': Is a directory
$ ls
shared/
$ mkdir shared
$ touch '; rm -rf'
$ ls
'; rm -rf shared' shared/
$ for file in *;do rm -f $file; done
$ ls
'; rm -rf shared'
$ mkdir shared
$ ls
'; rm -rf shared' shared/
$ for file in *;do rm -f "$file"; done
rm: cannot remove 'shared': Is a directory
$ ls
shared/
2018/08/02(木) 00:51:46.28ID:dc2nLErP
6760
2018/08/02(木) 01:12:36.09ID:yvP4ulwr 日経Linux は、Ruby の作者・Matz と、マンガの「シス管系女子」の連載が有名
「シス管系女子」も、もう3冊目。
たいてい本屋の目立つ所に置いてある
システム管理者の必須本
「シス管系女子」も、もう3冊目。
たいてい本屋の目立つ所に置いてある
システム管理者の必須本
2018/08/02(木) 01:20:26.73ID:AdBDijUE
坂本文さんの 「たのしいUNIX」なら知ってる
2018/08/02(木) 01:47:58.08ID:dc2nLErP
>>67
それ以上システム管理者とやらを貶めるなよw
それ以上システム管理者とやらを貶めるなよw
2018/08/02(木) 03:58:43.02ID:tOum0Ceh
>>60
> 変数中に空白があっても良いように、たいてい変数は" " で囲む。
> 一方、固定値は囲まない
固定値だから囲まないんじゃなくて、
固定値かつ、空白が含まれてないから囲ってないだけ
固定値でも、空白が含まれていれば囲む
> 変数中に空白があっても良いように、たいてい変数は" " で囲む。
> 一方、固定値は囲まない
固定値だから囲まないんじゃなくて、
固定値かつ、空白が含まれてないから囲ってないだけ
固定値でも、空白が含まれていれば囲む
2018/08/02(木) 04:04:23.88ID:tOum0Ceh
>>62
> Windows には、半角空白が入ったフォルダ名があるから、危険
危険なんじゃなくて、半角空白が入ったフォルダがあるから
きちんと対応せざるを得なくなってバグが減る
下手に半角空白がないシステムばかり使っていたら
半角空白に対応するのを忘れてしまう。そっちのほうが危険。
そんなことよりもshellcheckでチェックするほうが常識
これを知らないやつはモーグリ
> Windows には、半角空白が入ったフォルダ名があるから、危険
危険なんじゃなくて、半角空白が入ったフォルダがあるから
きちんと対応せざるを得なくなってバグが減る
下手に半角空白がないシステムばかり使っていたら
半角空白に対応するのを忘れてしまう。そっちのほうが危険。
そんなことよりもshellcheckでチェックするほうが常識
これを知らないやつはモーグリ
2018/08/02(木) 04:16:33.42ID:tOum0Ceh
>>60
> こういうように、シェルスクリプトには様々な引掛けあるから、危険!
> Ruby などのプログラミング言語を勧める
Rubyは外部コマンドを呼び出すのがすごく面倒くさい言語だが
参考 https://qiita.com/zakuroishikuro/items/3ab4476ff53f50a163be
> _人人人人人人_
> > めんどい <
>  ̄Y^Y^Y^Y^Y ̄
``を使えば、最小2文字の追加で呼び出すことができる
(正確にはputsしないと標準出力は表示されないからスペース入れて7文字)
Rubyでも結局同じ問題が起きる
# ruby −e Vdir=Wa bW; `ls −al #{dir}`V
ls: cannot access VaV: No such file or directory
ls: cannot access VbV: No such file or directory
(全角なのは書き込みエラーが出たから。もう面倒だから一律変換する)
回避策はいちいち言わなくていい、そんなのあるの知ってる。
Rubyでも様々な引掛けがあるという話。
> こういうように、シェルスクリプトには様々な引掛けあるから、危険!
> Ruby などのプログラミング言語を勧める
Rubyは外部コマンドを呼び出すのがすごく面倒くさい言語だが
参考 https://qiita.com/zakuroishikuro/items/3ab4476ff53f50a163be
> _人人人人人人_
> > めんどい <
>  ̄Y^Y^Y^Y^Y ̄
``を使えば、最小2文字の追加で呼び出すことができる
(正確にはputsしないと標準出力は表示されないからスペース入れて7文字)
Rubyでも結局同じ問題が起きる
# ruby −e Vdir=Wa bW; `ls −al #{dir}`V
ls: cannot access VaV: No such file or directory
ls: cannot access VbV: No such file or directory
(全角なのは書き込みエラーが出たから。もう面倒だから一律変換する)
回避策はいちいち言わなくていい、そんなのあるの知ってる。
Rubyでも様々な引掛けがあるという話。
2018/08/02(木) 05:32:18.98ID:5bB71pa/
Ruby使うくらいならPython使うわ。
でもここはシェルスクリプトのスレなんですよ。
しかも「ダブルクォートで囲む」という至極単純な対策でバグを回避できるんだから
他の言語を使う必要もないな。
ところでファイル名にダブルクォートが入っている場合があるので
ダブルクォートで囲む前にsed -e 's/"/\\&/g' とやる必要がある。
でもここはシェルスクリプトのスレなんですよ。
しかも「ダブルクォートで囲む」という至極単純な対策でバグを回避できるんだから
他の言語を使う必要もないな。
ところでファイル名にダブルクォートが入っている場合があるので
ダブルクォートで囲む前にsed -e 's/"/\\&/g' とやる必要がある。
2018/08/02(木) 06:11:19.56ID:tOum0Ceh
>>73
> ところでファイル名にダブルクォートが入っている場合があるので
なんのことでしょう?
ファイル名にダブルクォートが入っていても
なんの問題もないですよね?
[test.sh]
#!/bin/sh
n="a'\"b"
file "$n"
$ echo test > a\'\"b
$ ./test.sh
a'"b: ASCII text
> ところでファイル名にダブルクォートが入っている場合があるので
なんのことでしょう?
ファイル名にダブルクォートが入っていても
なんの問題もないですよね?
[test.sh]
#!/bin/sh
n="a'\"b"
file "$n"
$ echo test > a\'\"b
$ ./test.sh
a'"b: ASCII text
2018/08/02(木) 11:35:22.97ID:N9CdGDK2
bashでは0(真)か0以外(偽)となりますが、
Cスタイルのforループの条件判定のところにi==0( i>=0とするところを間違えてやってしまいました)
とやったら一回もループに入らなかったのですが、
Cスタイルのforループの中では0は偽なのでしょうか?
forループは下のループです。(chinachu-mirakurun-sleep scriptでスキップした番組の時に録画動作に入らない
ように改造したものです)
for ((i = ((${#IsSkipArray[@]} -1)) ; i>=0 ; i--)); do
if [ "${IsSkipArray[i]}" = "false" ]; then
(( RecTime = ${RecTimeMsec[i]} / 1000 ))
elif [ "${IsSkipArray[i]}" = "true" ]; then
:
fi
done
Cスタイルのforループの条件判定のところにi==0( i>=0とするところを間違えてやってしまいました)
とやったら一回もループに入らなかったのですが、
Cスタイルのforループの中では0は偽なのでしょうか?
forループは下のループです。(chinachu-mirakurun-sleep scriptでスキップした番組の時に録画動作に入らない
ように改造したものです)
for ((i = ((${#IsSkipArray[@]} -1)) ; i>=0 ; i--)); do
if [ "${IsSkipArray[i]}" = "false" ]; then
(( RecTime = ${RecTimeMsec[i]} / 1000 ))
elif [ "${IsSkipArray[i]}" = "true" ]; then
:
fi
done
2018/08/02(木) 11:45:13.93ID:N9CdGDK2
ちょっと訂正します。
間違えたコードはi==0ではなく、条件式にi=0としていました。
だから毎回判定するごとにiに0が代入されてループに入れなかったんですが、
お聞きしたかったのは0が偽だからループに入れなかったのか?ということでした。
条件式に代入式を持ってくる時点で素人丸出しなんですが、どうかご容赦ください。
間違えたコードはi==0ではなく、条件式にi=0としていました。
だから毎回判定するごとにiに0が代入されてループに入れなかったんですが、
お聞きしたかったのは0が偽だからループに入れなかったのか?ということでした。
条件式に代入式を持ってくる時点で素人丸出しなんですが、どうかご容赦ください。
2018/08/02(木) 12:23:00.77ID:N9CdGDK2
ttps://mywiki.wooledge.org/ArithmeticExpression
ここのサイトを見たらfor (( ; ; ))もArithemetic Expression(算術式)で、
However, when evaluating an arithmetic expression, C language rules (0 is false, anything else is true) apply.
と書いてありました。Cの原則が適用されるようですね。自己解決したっぽいです。
どうもお騒がせしました。
ここのサイトを見たらfor (( ; ; ))もArithemetic Expression(算術式)で、
However, when evaluating an arithmetic expression, C language rules (0 is false, anything else is true) apply.
と書いてありました。Cの原則が適用されるようですね。自己解決したっぽいです。
どうもお騒がせしました。
2018/08/03(金) 14:17:14.85ID:htH9kPBS
2018/08/03(金) 14:39:56.40ID:nG7YYTv9
そんなんsakuraだってあるぞ
2018/08/03(金) 14:58:08.23ID:htH9kPBS
>ファイル名に、ダブルクォートが入っている
ファイル名に、! が入っていたら、どうなる?
テレビ番組の録画で「何々!」「何々!!」みたいな番組名が、ファイル名になる場合
ファイル名に、! が入っていたら、どうなる?
テレビ番組の録画で「何々!」「何々!!」みたいな番組名が、ファイル名になる場合
2018/08/03(金) 15:01:48.95ID:TC+4ZTQW
>>80
感嘆符が特殊文字になるのってインタラクティブなときだけじゃね?
感嘆符が特殊文字になるのってインタラクティブなときだけじゃね?
2018/08/03(金) 17:12:49.75ID:5qGFGeHO
>>80
こういうのって何言いたいのかわからんな。「問題」でも出してるのか??
こういうのって何言いたいのかわからんな。「問題」でも出してるのか??
2018/08/03(金) 17:30:20.61ID:TDL18VXl
>>80
それこそ、自分で何とかしろって感じだな
それこそ、自分で何とかしろって感じだな
2018/08/03(金) 18:47:15.20ID:TC+4ZTQW
いやだから,感嘆符が特殊文字になるのはインタラクティブなときのみじゃないの?
2018/08/03(金) 18:49:00.35ID:BX8VumvQ
bashあんまり使わんからなあ
86デフォルトの名無しさん
2018/08/03(金) 20:02:10.32ID:X+nM2ZWl ! を特別扱いするシェルを使っているかどうかの問題ではないかな。
OSやファイルシステムが特別扱いしているってこともあり得なくもないが。
UNIX系OSだと / しか特別扱いしてないよね。
OSやファイルシステムが特別扱いしているってこともあり得なくもないが。
UNIX系OSだと / しか特別扱いしてないよね。
8780
2018/08/03(金) 20:31:20.88ID:htH9kPBS Linux 板で、テレビ番組名に、!!! みたいなものが入っていて、
それがファイル名になる場合に、バグるって言ってたから
! は、エスケープも出来ないとか
それがファイル名になる場合に、バグるって言ってたから
! は、エスケープも出来ないとか
2018/08/03(金) 20:50:55.07ID:TDL18VXl
他の環境ではNGの可能性があるということを考えると
怪しい文字は極力ファイル名に使わないようにしてる。
ある意味思考停止だけどw
CD-R焼く時、使える文字がフォーマットによりまちまちで、
ものすごい複雑だったことを思い出したわ。
ロミオとジョリエットwとか、ロックリッジとかあったなぁ。
怪しい文字は極力ファイル名に使わないようにしてる。
ある意味思考停止だけどw
CD-R焼く時、使える文字がフォーマットによりまちまちで、
ものすごい複雑だったことを思い出したわ。
ロミオとジョリエットwとか、ロックリッジとかあったなぁ。
2018/08/03(金) 20:52:13.47ID:u/asMYJG
余計な手間を省くのは正攻法だしいんじゃね
2018/08/03(金) 21:25:09.26ID:5qGFGeHO
>>87
だから、なにを言っているのかわからんてww
だから、なにを言っているのかわからんてww
2018/08/03(金) 21:36:10.72ID:8YejLfKY
2018/08/03(金) 21:38:01.51ID:5qGFGeHO
>>86
特殊文字って場合によりでしかないよな。特殊文字だから必ずバグる(?)なんてないし
シェルというか引数として受けたコマンドがって感じかなあ。bash自体がスクリプト中の引数を含めたコマンド文字列に特殊文字があっても何もしない/しないようにできるし
ID:htH9kPBSが言っているのは、ID:TC+4ZTQW が言っているコマンドラインでのヒストリ(参照)処理に引っかかる場合で、シェル「スクリプト」の問題ではないだろう
特殊文字って場合によりでしかないよな。特殊文字だから必ずバグる(?)なんてないし
シェルというか引数として受けたコマンドがって感じかなあ。bash自体がスクリプト中の引数を含めたコマンド文字列に特殊文字があっても何もしない/しないようにできるし
ID:htH9kPBSが言っているのは、ID:TC+4ZTQW が言っているコマンドラインでのヒストリ(参照)処理に引っかかる場合で、シェル「スクリプト」の問題ではないだろう
2018/08/03(金) 22:13:10.45ID:5qGFGeHO
スクリプトとして關係ないが、超シンプルにしての
$ ls '!'
ls: !: No such file or directory
まあ、そうだな
$ ls !
ls: !: No such file or directory
ほう
$ ls "!"
-bash: !: event not found
なんでやねんっ!ってとこではあるな
コマンドラインでも ! を打たなきゃファイル名がんなの入っていてもだし、! を含めたファイル名なんぞを打たなきゃでも ' でくくればいいんじゃね
$ ls '!'
ls: !: No such file or directory
まあ、そうだな
$ ls !
ls: !: No such file or directory
ほう
$ ls "!"
-bash: !: event not found
なんでやねんっ!ってとこではあるな
コマンドラインでも ! を打たなきゃファイル名がんなの入っていてもだし、! を含めたファイル名なんぞを打たなきゃでも ' でくくればいいんじゃね
2018/08/03(金) 22:47:23.99ID:TC+4ZTQW
だからすごく単純な話で
$ cat ./hstex.sh
#! /usr/bin/env bash
case $- in
(*H*)
echo enabled
;;
(*)
echo disabled
;;
esac
$ ./hstex.sh
disabled
こういうことでしょ?
つまりシェルスクリプトになってるときbashはヒストリ展開を既定で行わないから
エスケープを考える必要はないの。
$ cat ./hstex.sh
#! /usr/bin/env bash
case $- in
(*H*)
echo enabled
;;
(*)
echo disabled
;;
esac
$ ./hstex.sh
disabled
こういうことでしょ?
つまりシェルスクリプトになってるときbashはヒストリ展開を既定で行わないから
エスケープを考える必要はないの。
2018/08/03(金) 22:52:05.62ID:8YejLfKY
はぁ、シェル「スクリプト」かどうかの問題じゃないんだってば
>>93はevent not foundってでなかったんで
考えるのメンドーなんでぐぐって
https://qiita.com/Qutjl/items/6e0056853c94011d245b のネタパクるけどさ
$ ruby -e "puts 'Hello, World!'"
-bash: !': event not found
はい、たしかにそうなりますね。
テキストエディタで「puts 'Hello, World!'」という内容のcode.txtファイルを作成する
$ cat code.txt
puts 'Hello, World!'
$ a=$(cat code.txt)
$ echo "$a"
puts 'Hello, World!'
変数 a に先程の文字列を入れました
$ ruby -e "$a"
Hello, World!
はい、エラーになりません。
これはシェルスクリプトが特殊なんじゃねーよ。
C言語で、ソースコードに"\n"と書いてある文字列をprintfした時と
\nという文字列が入っている変数をprintfした時の挙動と一緒だろうが
プログラミングの基礎やで。ソースコードをパースするときの処理かどうかの違い
>>93はevent not foundってでなかったんで
考えるのメンドーなんでぐぐって
https://qiita.com/Qutjl/items/6e0056853c94011d245b のネタパクるけどさ
$ ruby -e "puts 'Hello, World!'"
-bash: !': event not found
はい、たしかにそうなりますね。
テキストエディタで「puts 'Hello, World!'」という内容のcode.txtファイルを作成する
$ cat code.txt
puts 'Hello, World!'
$ a=$(cat code.txt)
$ echo "$a"
puts 'Hello, World!'
変数 a に先程の文字列を入れました
$ ruby -e "$a"
Hello, World!
はい、エラーになりません。
これはシェルスクリプトが特殊なんじゃねーよ。
C言語で、ソースコードに"\n"と書いてある文字列をprintfした時と
\nという文字列が入っている変数をprintfした時の挙動と一緒だろうが
プログラミングの基礎やで。ソースコードをパースするときの処理かどうかの違い
2018/08/03(金) 23:09:12.00ID:5qGFGeHO
2018/08/03(金) 23:09:28.23ID:TC+4ZTQW
えぇ……
もしかして俺が間違ってるのかと不安になるほど自信満々な書き方だなw
もしかして俺が間違ってるのかと不安になるほど自信満々な書き方だなw
2018/08/03(金) 23:11:06.77ID:5qGFGeHO
2018/08/03(金) 23:14:28.27ID:5qGFGeHO
>>97
まあ...気にすんな。「ナニ」か違う(?)と思ったのだろう。よくわからんけど
まあ...気にすんな。「ナニ」か違う(?)と思ったのだろう。よくわからんけど
100デフォルトの名無しさん
2018/08/03(金) 23:28:02.17ID:h174pTLw 若者はヒストリー置換を知らないんだなあと感じいる俺はオッサン。
ヒストリー置換は対話的な入力にしか影響しないから、
スクリプトにするときは気にしなくていいよ。
ヒストリー置換は対話的な入力にしか影響しないから、
スクリプトにするときは気にしなくていいよ。
101デフォルトの名無しさん
2018/08/04(土) 02:05:18.25ID:j+kw9Zam102デフォルトの名無しさん
2018/08/04(土) 03:08:34.02ID:ddNokTrS イミフ
103デフォルトの名無しさん
2018/08/04(土) 03:15:50.13ID:ddNokTrS 初見イミフ、よく読んでもやっぱりイミフw
なんか問題点を勘違いしているでしょ
>>94のcaseからesacをコピペってみて実行してみ。たぶんそういう文脈での「シェルスクリプトになってるときは〜」だと思うぞ=間違ってはないと思うぞ
何を問題にしてんの?「インタラクティブシェル上でも変数を""で囲えば同じなのに」って
なんか問題点を勘違いしているでしょ
>>94のcaseからesacをコピペってみて実行してみ。たぶんそういう文脈での「シェルスクリプトになってるときは〜」だと思うぞ=間違ってはないと思うぞ
何を問題にしてんの?「インタラクティブシェル上でも変数を""で囲えば同じなのに」って
104デフォルトの名無しさん
2018/08/04(土) 03:24:02.15ID:XmDLxyoB なんでこんなに丁寧に教えてやらんと理解できんのか
>>62の話だろ
> だから、ディレクトリパス・ユーザー名とか、
> システムで使うものに、半角空白を入れたら、ダメ
>
> シェルスクリプトを書いている奴が、変数を" " で囲んでいないと、バグるから
ヒストリー展開はスクリプトだと既定で無効だが、
それ以前にファイル名にスペース入ってたりするから、
変数はダブルクォートでくくるのは当たり前なんだよ。
shellcheckすればデフォルトで指摘される項目
変数はダブルクォートでくくればいいって言ってんのに
今度は「ファイル名にダブルクォートが入っていたら?」
「ビックリマークが入っていたら?」とか言い出してんだろ
そ・れ・も「変数をダブルクォートでくくればいい」で終わりつってんだろ
ダブルクォートでくくればヒストリー展開が有効であっても
ファイル名に!が含まれてようが関係ない
>>62の話だろ
> だから、ディレクトリパス・ユーザー名とか、
> システムで使うものに、半角空白を入れたら、ダメ
>
> シェルスクリプトを書いている奴が、変数を" " で囲んでいないと、バグるから
ヒストリー展開はスクリプトだと既定で無効だが、
それ以前にファイル名にスペース入ってたりするから、
変数はダブルクォートでくくるのは当たり前なんだよ。
shellcheckすればデフォルトで指摘される項目
変数はダブルクォートでくくればいいって言ってんのに
今度は「ファイル名にダブルクォートが入っていたら?」
「ビックリマークが入っていたら?」とか言い出してんだろ
そ・れ・も「変数をダブルクォートでくくればいい」で終わりつってんだろ
ダブルクォートでくくればヒストリー展開が有効であっても
ファイル名に!が含まれてようが関係ない
105デフォルトの名無しさん
2018/08/04(土) 03:25:51.10ID:XmDLxyoB106デフォルトの名無しさん
2018/08/04(土) 03:26:21.86ID:ddNokTrS 違うよ。>>80の話だけだぞ?
107デフォルトの名無しさん
2018/08/04(土) 03:28:41.06ID:ddNokTrS ! と " は別の問題
話の流れをよめ...ってw だめだこりゃ
話の流れをよめ...ってw だめだこりゃ
108デフォルトの名無しさん
2018/08/04(土) 03:57:51.51ID:ZE1/UEds109デフォルトの名無しさん
2018/08/04(土) 04:07:16.79ID:ddNokTrS110デフォルトの名無しさん
2018/08/04(土) 07:02:26.79ID:fp3S0oAr ヒストリ置換知らないのはゆとり
111デフォルトの名無しさん
2018/08/04(土) 08:42:45.49ID:Zm4mz9Pa 俺はゆとり世代より下だがずっと指摘してたぞ(>>81)
そういう決め付けやめろ
そういう決め付けやめろ
112デフォルトの名無しさん
2018/08/04(土) 15:19:02.62ID:EGr8asH9 やはりIPも入れたほうがいいかね
113デフォルトの名無しさん
2018/08/04(土) 15:19:27.32ID:EGr8asH9 IPじゃねーやワッチョイ
114デフォルトの名無しさん
2018/08/06(月) 08:36:00.23ID:/d0+B2Ty ファイルやディレクトリを引数に取り、その許可属性を返すコマンドってありますか。
少なくともPOSIX Utilityにはないと分かっています。
期待する動作はそのコマンドの名前をownとして
$ own /some/file
-rwxrwxr-x
というような具合です。
少なくともPOSIX Utilityにはないと分かっています。
期待する動作はそのコマンドの名前をownとして
$ own /some/file
-rwxrwxr-x
というような具合です。
115デフォルトの名無しさん
2018/08/06(月) 09:07:09.56ID:BzDkzOUM lsすりゃ済むのにunix的なセンスでそんなコマンドは作らないよ
116デフォルトの名無しさん
2018/08/06(月) 09:23:02.61ID:Q3wSzLhg ls
それで満足できないなら作れ、さすがにそれくらいできるだろ
それで満足できないなら作れ、さすがにそれくらいできるだろ
117デフォルトの名無しさん
2018/08/06(月) 09:25:30.08ID:RuHjlTsU >>114
stat -c '%A' /some/file
stat -c '%A' /some/file
118デフォルトの名無しさん
2018/08/06(月) 09:26:53.13ID:4JbBAPy3119デフォルトの名無しさん
2018/08/06(月) 09:29:30.92ID:4JbBAPy3 うはっw NGワードで引っ掛かってあれこれ変えてる内に回答が二つ書かれてたw
120デフォルトの名無しさん
2018/08/06(月) 09:43:00.91ID:9v8Yooys >>117でわかるのに、unix的なセンスとか、ワロえる。
センスないのはむしろ。ぷぷぷw
センスないのはむしろ。ぷぷぷw
121デフォルトの名無しさん
2018/08/06(月) 10:15:49.41ID:BzDkzOUM なんか嘲笑してるつもり?
122デフォルトの名無しさん
2018/08/06(月) 11:45:03.11ID:jTWGCXc0123デフォルトの名無しさん
2018/08/06(月) 15:01:42.52ID:/d0+B2Ty stat -c '%A'
↑すばらしいです。ありがとうございました。
↑すばらしいです。ありがとうございました。
124デフォルトの名無しさん
2018/08/06(月) 20:56:55.63ID:Z/jXU7Rj125デフォルトの名無しさん
2018/08/10(金) 03:53:11.11ID:5eVCbRBd OpenWrtでこんなの見つけた。何処がオリジナルだろう?
物自体はバイナリだけどシェルスクリプトと親和性が高い(?)
JSONのパースと生成の方法のアイデアとして
https://wiki.openwrt.org/doc/devel/packages/jshn
Library for parsing and generating JSON from shell scripts
こんなふうに出力される
$ jshn -r '{"a":1, "b":2, "c": [1,2,3], "d": {"A":1}}'
json_init;
json_add_int 'a' 1;
json_add_int 'b' 2;
json_add_array 'c';
json_add_int '0' 1;
json_add_int '1' 2;
json_add_int '2' 3;
json_close_array;
json_add_object 'd';
json_add_int 'A' 1;
json_close_object;
物自体はバイナリだけどシェルスクリプトと親和性が高い(?)
JSONのパースと生成の方法のアイデアとして
https://wiki.openwrt.org/doc/devel/packages/jshn
Library for parsing and generating JSON from shell scripts
こんなふうに出力される
$ jshn -r '{"a":1, "b":2, "c": [1,2,3], "d": {"A":1}}'
json_init;
json_add_int 'a' 1;
json_add_int 'b' 2;
json_add_array 'c';
json_add_int '0' 1;
json_add_int '1' 2;
json_add_int '2' 3;
json_close_array;
json_add_object 'd';
json_add_int 'A' 1;
json_close_object;
126デフォルトの名無しさん
2018/08/10(金) 08:46:11.76ID:bLDrGgRY >>125
jq(1)が定番では?
jq(1)が定番では?
127デフォルトの名無しさん
2018/08/10(金) 11:19:27.53ID:zsXdw2zN128デフォルトの名無しさん
2018/08/10(金) 11:44:23.91ID:r84RRSaO129デフォルトの名無しさん
2018/08/10(金) 12:48:42.64ID:vqUG5YbC おかしな人の言い分だな、確かにw
130デフォルトの名無しさん
2018/08/10(金) 12:52:37.04ID:EBuB6o8O パイプで繋いで使えるようにってことかな
131デフォルトの名無しさん
2018/08/10(金) 13:42:12.09ID:ndPpyRQZ おかしな人がケチつけてたのって何年も前じゃん
132デフォルトの名無しさん
2018/08/10(金) 14:53:48.86ID:19uTC1v8 ああ、某原理主義者のことか
133デフォルトの名無しさん
2018/08/10(金) 14:57:29.03ID:xNR7R3k1 ポジックス
134デフォルトの名無しさん
2018/08/10(金) 15:54:52.38ID:ndPpyRQZ でもあの人の言うことなんて聞いてらんないよね。こっちは宗教で食ってるわけじゃないんだからさ。
作って見せたツールだって痒いところに手が届かない部分は
「そんなのはそもそもこうこうであるべきで必要ない」みたいな感じでほっぽってるし
作ってマウント取って射精後スッキリになったら全くメンテなんてしないし。「各人個別で改修・メンテしろ」ってことなんだろうけど、
こんなの個人の便利ツール止まりで世界中の不特定多数の共有便利ツール・知識にはなり得ないよ。
作って見せたツールだって痒いところに手が届かない部分は
「そんなのはそもそもこうこうであるべきで必要ない」みたいな感じでほっぽってるし
作ってマウント取って射精後スッキリになったら全くメンテなんてしないし。「各人個別で改修・メンテしろ」ってことなんだろうけど、
こんなの個人の便利ツール止まりで世界中の不特定多数の共有便利ツール・知識にはなり得ないよ。
135デフォルトの名無しさん
2018/08/10(金) 15:59:32.13ID:xNR7R3k1 何やってる人か知らんが、それはそれでいんじゃないの?
頼まれずに作ったツールの公開なんてオナニーそのものやろ
頼まれずに作ったツールの公開なんてオナニーそのものやろ
136デフォルトの名無しさん
2018/08/10(金) 17:01:03.73ID:r84RRSaO 誰かが例の記事のはてブで言ってたけど,ああいう人も必要だとは思う。
というか正直俺はプログラマじゃない(つまりコーディングで飯食ってるわけじゃない)ので,
ああいう考え方にはすごく興味があるし,実際研究室の管理シェルスクリプトをPOSIX準拠で書き直したりもしてる。
しかし繰り返すがプログラマにとっては邪魔な存在なんだろうなとは感じる。
というか言い方がキツすぎる。
というか正直俺はプログラマじゃない(つまりコーディングで飯食ってるわけじゃない)ので,
ああいう考え方にはすごく興味があるし,実際研究室の管理シェルスクリプトをPOSIX準拠で書き直したりもしてる。
しかし繰り返すがプログラマにとっては邪魔な存在なんだろうなとは感じる。
というか言い方がキツすぎる。
137デフォルトの名無しさん
2018/08/10(金) 17:59:17.69ID:q2LOavXt だが、それがいい。
138デフォルトの名無しさん
2018/08/12(日) 14:51:04.97ID:EQS0DV6K #!/bin/bash
for i in {0..5}; do
n=`date +%Y-%m-%d_%H '-d ${i} hour ago'`
echo $n
done
ループで時間を1時間ずつ過去にして表示したいんだけど実行すると
date: ` ${i} hour ago' は無効な日付です
て表示されます。
助け船おねがいします
for i in {0..5}; do
n=`date +%Y-%m-%d_%H '-d ${i} hour ago'`
echo $n
done
ループで時間を1時間ずつ過去にして表示したいんだけど実行すると
date: ` ${i} hour ago' は無効な日付です
て表示されます。
助け船おねがいします
139デフォルトの名無しさん
2018/08/12(日) 15:45:28.66ID:CtXb4bgk >>138
シングルクオートだと変数が、展開されない気がすダブルクォートにしてみて
シングルクオートだと変数が、展開されない気がすダブルクォートにしてみて
140デフォルトの名無しさん
2018/08/12(日) 17:45:18.75ID:EQS0DV6K141デフォルトの名無しさん
2018/08/13(月) 00:38:00.83ID:z6+TJcGX "-d ${i} hour ago" の部分が -d "${i} hour ago" ではないのに何故大丈夫なのかと思ったが、
短いオプションだからパラメータと繋がってても大丈夫ってことだったんだな。
短いオプションだからパラメータと繋がってても大丈夫ってことだったんだな。
142デフォルトの名無しさん
2018/08/14(火) 19:59:14.84ID:0dSYKDxo 上のやり取りをみてふと思いたって実験してみると
GNU dateではフォーマットにCSIとかに代表されるANSI制御綴りを指定できるけど
BSD dateでは無理だな。
POSIXではこの二つのどちらが正しい実装なのかはよく分からんが
個人的な意見としてはBSD dateのほうが堅牢で,GNU dateのほうが柔軟だとは思う。まあ当然すぎる事実だけどw
GNU dateではフォーマットにCSIとかに代表されるANSI制御綴りを指定できるけど
BSD dateでは無理だな。
POSIXではこの二つのどちらが正しい実装なのかはよく分からんが
個人的な意見としてはBSD dateのほうが堅牢で,GNU dateのほうが柔軟だとは思う。まあ当然すぎる事実だけどw
143デフォルトの名無しさん
2018/08/15(水) 02:35:15.09ID:sxh1cciH BSD date の仕様が分からないけど、標準出力が端末とは限らないし
指定そのまま出すほうが正しいんじゃないかな
指定そのまま出すほうが正しいんじゃないかな
144デフォルトの名無しさん
2018/08/15(水) 13:56:33.60ID:/R99sNfj 標準出力がなんのかんけーがあんのー?
145デフォルトの名無しさん
2018/08/15(水) 16:29:17.30ID:fSWxnCwv かんけーし
146デフォルトの名無しさん
2018/08/17(金) 03:06:26.97ID:DWhhxT1h 単純な文字列置換ってどうしたら良いですかね?
sedつかうとメタ文字の置換で困るんです
sedつかうとメタ文字の置換で困るんです
147デフォルトの名無しさん
2018/08/17(金) 03:42:44.91ID:l9m154d6 その辺りが楽なperlでいいんじゃない?
シェルスクリプトから使っちゃいけないというわけじゃないし
シェルスクリプトから使っちゃいけないというわけじゃないし
148デフォルトの名無しさん
2018/08/17(金) 04:16:11.31ID:DWhhxT1h149デフォルトの名無しさん
2018/08/17(金) 04:55:42.82ID:xP9ZimWn awk
150デフォルトの名無しさん
2018/08/17(金) 04:56:29.20ID:DWhhxT1h awkに正規表現じゃない文字列置換命令ってありましたっけ?
151デフォルトの名無しさん
2018/08/17(金) 06:24:27.95ID:/a+SCakG Ruby が簡単
152デフォルトの名無しさん
2018/08/17(金) 06:38:46.91ID:eWaVkn5S >>151
perlが無いならrubyも無いでしょ
perlが無いならrubyも無いでしょ
153デフォルトの名無しさん
2018/08/17(金) 07:03:28.31ID:DWhhxT1h はい、rubyもないし、pythonもなし、nodeもないです
154デフォルトの名無しさん
2018/08/17(金) 08:18:50.56ID:/a+SCakG Ruby をインストールすれば?
漏れは、WSL で、Rubyを入れているけど
漏れは、WSL で、Rubyを入れているけど
155デフォルトの名無しさん
2018/08/17(金) 08:24:08.77ID:RTbKyx/W156デフォルトの名無しさん
2018/08/17(金) 08:34:23.82ID:vhwq6spf viは?
157デフォルトの名無しさん
2018/08/17(金) 08:36:24.83ID:RTbKyx/W 手動で置換は嫌です
158デフォルトの名無しさん
2018/08/17(金) 08:40:03.28ID:vhwq6spf viはスクリプト組めるでしょ
159デフォルトの名無しさん
2018/08/17(金) 08:44:27.28ID:TmUZ5Zjz パターン文字列をsedで置換しちゃうとか(GNU sed の場合)
$ pattern='foo[1]'
$ sed "s/$(sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g' <<< "${pattern}")/foo[2]/g" <<< 'foo[1]'
foo[2]
$ pattern='foo[1]'
$ sed "s/$(sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g' <<< "${pattern}")/foo[2]/g" <<< 'foo[1]'
foo[2]
160デフォルトの名無しさん
2018/08/17(金) 08:49:02.25ID:vhwq6spf 脳みそが解読を拒否してる
161デフォルトの名無しさん
2018/08/17(金) 08:53:02.98ID:xP9ZimWn162デフォルトの名無しさん
2018/08/17(金) 08:56:35.86ID:RTbKyx/W >>158
スクリプトの実行はできましたが、 %s/〜/〜/g
だと〜に/が入っていた時に困ります。
〜には何が入るかわかりません。
あとviは標準入力から読み込めませんでした
できれば標準入力から読み込みんで標準出力に出力したいです。
ちなみにviのバージョンです
# vi -H
These features are available:
Pattern searches with / and ?
Last command repeat with .
Line marking with 'x
Named buffers with "x
Some colon mode commands with :
Settable options with ":set"
Signal catching- ^C
Job suspend and resume with ^Z
Adapt to window re-sizes
BusyBox v1.28.3 () multi-call binary.
Usage: vi [OPTIONS] [FILE]...
Edit FILE
-c CMD Initial command to run ($EXINIT also available)
-R Read-only
-H List available features
スクリプトの実行はできましたが、 %s/〜/〜/g
だと〜に/が入っていた時に困ります。
〜には何が入るかわかりません。
あとviは標準入力から読み込めませんでした
できれば標準入力から読み込みんで標準出力に出力したいです。
ちなみにviのバージョンです
# vi -H
These features are available:
Pattern searches with / and ?
Last command repeat with .
Line marking with 'x
Named buffers with "x
Some colon mode commands with :
Settable options with ":set"
Signal catching- ^C
Job suspend and resume with ^Z
Adapt to window re-sizes
BusyBox v1.28.3 () multi-call binary.
Usage: vi [OPTIONS] [FILE]...
Edit FILE
-c CMD Initial command to run ($EXINIT also available)
-R Read-only
-H List available features
163デフォルトの名無しさん
2018/08/17(金) 09:00:22.48ID:RTbKyx/W >>159
GNU sedじゃないからだめなんでしょうね
# pattern='foo[1]'
# sed "s/$(sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g' <<< "${pattern}")/foo[2]/g" <<< 'foo[1]'
-ash: syntax error: unexpected redirection
ちなみにsedの--versionと--helpです。
# sed --version
This is not GNU sed version 4.0
# sed --help
BusyBox v1.28.3 () multi-call binary.
Usage: sed [-i[SFX]] [-nrE] [-f FILE]... [-e CMD]... [FILE]...
or: sed [-i[SFX]] [-nrE] CMD [FILE]...
-e CMD Add CMD to sed commands to be executed
-f FILE Add FILE contents to sed commands to be executed
-i[SFX] Edit files in-place (otherwise sends to stdout)
Optionally back files up, appending SFX
-n Suppress automatic printing of pattern space
-r,-E Use extended regex syntax
If no -e or -f, the first non-option argument is the sed command string.
Remaining arguments are input files (stdin if none).
GNU sedじゃないからだめなんでしょうね
# pattern='foo[1]'
# sed "s/$(sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g' <<< "${pattern}")/foo[2]/g" <<< 'foo[1]'
-ash: syntax error: unexpected redirection
ちなみにsedの--versionと--helpです。
# sed --version
This is not GNU sed version 4.0
# sed --help
BusyBox v1.28.3 () multi-call binary.
Usage: sed [-i[SFX]] [-nrE] [-f FILE]... [-e CMD]... [FILE]...
or: sed [-i[SFX]] [-nrE] CMD [FILE]...
-e CMD Add CMD to sed commands to be executed
-f FILE Add FILE contents to sed commands to be executed
-i[SFX] Edit files in-place (otherwise sends to stdout)
Optionally back files up, appending SFX
-n Suppress automatic printing of pattern space
-r,-E Use extended regex syntax
If no -e or -f, the first non-option argument is the sed command string.
Remaining arguments are input files (stdin if none).
164デフォルトの名無しさん
2018/08/17(金) 09:16:35.01ID:RTbKyx/W165デフォルトの名無しさん
2018/08/17(金) 09:16:49.96ID:TmUZ5Zjz >>163
ああ、bash じゃなくて ash だから here string("<<<") が使えないのね…
# echo 'foo[1]' | sed "s/$(echo "${pattern}" | sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g')/foo[2]/g"
こんな感じかな。
ああ、bash じゃなくて ash だから here string("<<<") が使えないのね…
# echo 'foo[1]' | sed "s/$(echo "${pattern}" | sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g')/foo[2]/g"
こんな感じかな。
166デフォルトの名無しさん
2018/08/17(金) 09:33:56.45ID:xP9ZimWn167デフォルトの名無しさん
2018/08/17(金) 09:48:06.80ID:RTbKyx/W >>166
なんかプラスが入った時おかしいっすね
GNU sed
$ pattern='+'
$ echo "$pattern" | sed "s/$(echo "${pattern}" | sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g')/foo[2]/g"
foo[2]
$ pattern='a+'
$ echo "$pattern" | sed "s/$(echo "${pattern}" | sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g')/foo[2]/g"
foo[2]+
busybox sed
# pattern='+'
# echo "$pattern" | sed "s/$(echo "${pattern}" | sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g')/foo[2]/g"
sed: bad regex '\+': Repetition not preceded by valid expression
なんかプラスが入った時おかしいっすね
GNU sed
$ pattern='+'
$ echo "$pattern" | sed "s/$(echo "${pattern}" | sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g')/foo[2]/g"
foo[2]
$ pattern='a+'
$ echo "$pattern" | sed "s/$(echo "${pattern}" | sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g')/foo[2]/g"
foo[2]+
busybox sed
# pattern='+'
# echo "$pattern" | sed "s/$(echo "${pattern}" | sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g')/foo[2]/g"
sed: bad regex '\+': Repetition not preceded by valid expression
168デフォルトの名無しさん
2018/08/17(金) 09:57:27.72ID:TmUZ5Zjz169デフォルトの名無しさん
2018/08/17(金) 09:58:49.05ID:TmUZ5Zjz あ、ごめん勘違いしてた。ちょっと考えてみる
170デフォルトの名無しさん
2018/08/17(金) 10:03:14.53ID:RTbKyx/W そう。何が問題なのかよくわからないw
171デフォルトの名無しさん
2018/08/17(金) 10:13:01.82ID:TmUZ5Zjz あれ?でもさ、
pattern='+'
$ echo "$pattern" | sed "s/$(echo "${pattern}" | sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g')/foo[2]/g"
foo[2]
入力が '+' でパターン文字列も '+' だから foo[2] に置換されるのは正しいんじゃないかな?
でもまぁ、GNU sed で -r オプション付けると `+` 記号がメタキャラクタになるから、付けない場合は
`+` を考慮する必要はなかったのね…
$ echo "$pattern" | sed "s/$(echo "${pattern}" | sed -r 's/([-*^.$/\]|\[|\])/\\\1/g')/foo[2]/g"
こっちの方が良いみたい。
pattern='+'
$ echo "$pattern" | sed "s/$(echo "${pattern}" | sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g')/foo[2]/g"
foo[2]
入力が '+' でパターン文字列も '+' だから foo[2] に置換されるのは正しいんじゃないかな?
でもまぁ、GNU sed で -r オプション付けると `+` 記号がメタキャラクタになるから、付けない場合は
`+` を考慮する必要はなかったのね…
$ echo "$pattern" | sed "s/$(echo "${pattern}" | sed -r 's/([-*^.$/\]|\[|\])/\\\1/g')/foo[2]/g"
こっちの方が良いみたい。
172デフォルトの名無しさん
2018/08/17(金) 10:13:20.76ID:5I+JCiH1173デフォルトの名無しさん
2018/08/17(金) 10:18:32.56ID:RTbKyx/W174デフォルトの名無しさん
2018/08/17(金) 10:20:29.64ID:RTbKyx/W だから要するに + はエスケープしたらダメってことなのか?
単純な文字列置換って正規表現置換よりも簡単な処理なのに
どれも面倒くさいなぁw
単純な文字列置換って正規表現置換よりも簡単な処理なのに
どれも面倒くさいなぁw
175デフォルトの名無しさん
2018/08/17(金) 10:33:33.58ID:hKcJGgnp ashの日本語manページはないのかなと思って検索した時に出てきた画面。
https://i.imgur.com/xzEhcAc.png
https://i.imgur.com/xzEhcAc.png
176デフォルトの名無しさん
2018/08/17(金) 10:37:43.83ID:RTbKyx/W177デフォルトの名無しさん
2018/08/17(金) 10:41:51.16ID:hKcJGgnp >>176
カラフルな検索結果だがこれと言って役に立たないという共通点があるな・・・
カラフルな検索結果だがこれと言って役に立たないという共通点があるな・・・
178デフォルトの名無しさん
2018/08/17(金) 10:51:57.16ID:RTbKyx/W179デフォルトの名無しさん
2018/08/17(金) 11:32:47.25ID:TmUZ5Zjz grep にある -F オプションと同等のオプションが sed にも
欲しいところではあるなぁ。生まれは同じなのに sed には無い
のは何故…(実はあったりして)
欲しいところではあるなぁ。生まれは同じなのに sed には無い
のは何故…(実はあったりして)
180デフォルトの名無しさん
2018/08/17(金) 18:50:11.51ID:D/YAmHXf fsedみたいなのを作ってる人ならしってる
181デフォルトの名無しさん
2018/08/18(土) 17:22:09.36ID:rQWtSS3z Googleのシェルスクリプトに関するコーディング規約で
「そう〔訳注: 連続したパイプ節が二つ以下〕でない場合は一行につき一つのパイプ節を含むようにする。その際,二番目以降のパイプ節は,2文字分の欧文空白による字下げを行なう。」
とあるんだが[1],ここの例示が
command1 \
| command2 \
| command3 \
| command4
となっている。
普通(といってもパイプをこのように多用しかつ改行しまくっている例はほとんど見たことがないのだが)https://github.com/ShellShoccar-jpn/kotoriotoko/blob/master/BIN/twtl.sh#L297
↑こことかでは
command1 |
command2 |
command3 |
command4
という書き方になっている。
俺はこっちの書式のほうが見慣れているので,自分のシェルスクリプトもこういう書き方でやっているのだが,みなさんはどういう書き方がいいとかあるだろうか。あるいはGoogleとは別のところが発表してるシェルスクリプトのコーディング規約とかないだろうか。
「そう〔訳注: 連続したパイプ節が二つ以下〕でない場合は一行につき一つのパイプ節を含むようにする。その際,二番目以降のパイプ節は,2文字分の欧文空白による字下げを行なう。」
とあるんだが[1],ここの例示が
command1 \
| command2 \
| command3 \
| command4
となっている。
普通(といってもパイプをこのように多用しかつ改行しまくっている例はほとんど見たことがないのだが)https://github.com/ShellShoccar-jpn/kotoriotoko/blob/master/BIN/twtl.sh#L297
↑こことかでは
command1 |
command2 |
command3 |
command4
という書き方になっている。
俺はこっちの書式のほうが見慣れているので,自分のシェルスクリプトもこういう書き方でやっているのだが,みなさんはどういう書き方がいいとかあるだろうか。あるいはGoogleとは別のところが発表してるシェルスクリプトのコーディング規約とかないだろうか。
182デフォルトの名無しさん
2018/08/18(土) 17:22:24.47ID:rQWtSS3z 一応俺の意見: 後者の利点としては,バックスラッシュが不要なこととコマンドが行頭に来て流れを掴みやすいということがある。
加えて簡易的なデバッグするときに,前者は
command1 \
| command2 \
| cat
# | command3 \
# | command4
などとするのに対して 後者は
command1 |
command2 |
cat
# command3 |
# command4
このように「新しい行を挿入してcatを入力」という単純な動作ができるので,例えばVimやEmacsなどマクロが作れるエディタなどでのデバッグ用の編集に有用というのもある。
実際俺はシェルスクリプトに関してはIDEを使わずVimで開発していて,この類のマクロを作成して便利に使っている。
長文すまん
[1]: http://google.github.io/styleguide/shell.xml#Pipelines
加えて簡易的なデバッグするときに,前者は
command1 \
| command2 \
| cat
# | command3 \
# | command4
などとするのに対して 後者は
command1 |
command2 |
cat
# command3 |
# command4
このように「新しい行を挿入してcatを入力」という単純な動作ができるので,例えばVimやEmacsなどマクロが作れるエディタなどでのデバッグ用の編集に有用というのもある。
実際俺はシェルスクリプトに関してはIDEを使わずVimで開発していて,この類のマクロを作成して便利に使っている。
長文すまん
[1]: http://google.github.io/styleguide/shell.xml#Pipelines
183デフォルトの名無しさん
2018/08/18(土) 18:05:23.17ID:5BnyFmRJ 簡易的なデバッグするときに前者は
command1 \
| command2 \
# | command3 \
# | command4
などとするのに対して 後者は
command1 |
command2 |
# command3 |
# command4
のように行頭に#をいれるだけではSyntax errorになるから前者の方がデバッグなど編集に有用とも言える
個人的には大差ないと思う
command1 \
| command2 \
# | command3 \
# | command4
などとするのに対して 後者は
command1 |
command2 |
# command3 |
# command4
のように行頭に#をいれるだけではSyntax errorになるから前者の方がデバッグなど編集に有用とも言える
個人的には大差ないと思う
184デフォルトの名無しさん
2018/08/18(土) 18:29:20.16ID:LW/iu6SG 末尾にバックスラッシュを入れることで次行を見なくても明確にコマンドが続くことがわかるから前者を支持する
185デフォルトの名無しさん
2018/08/18(土) 18:38:12.95ID:Bu4pj5O8 一長一短やな
使い分けか
使い分けか
186デフォルトの名無しさん
2018/08/18(土) 19:19:56.79ID:rQWtSS3z187デフォルトの名無しさん
2018/08/18(土) 19:21:44.26ID:rQWtSS3z ていうか少なくとも二人くらいは
後者の方式に賛同してるのか。
Googleもそっちを推奨してるし,俺も手癖を直すべきなのかな。
後者の方式に賛同してるのか。
Googleもそっちを推奨してるし,俺も手癖を直すべきなのかな。
188デフォルトの名無しさん
2018/08/18(土) 20:18:01.73ID:pAmB63kN189デフォルトの名無しさん
2018/08/18(土) 21:09:33.95ID:bNUWoVQ1 パイプ記号が重要だから頭にもってきたいかなあ
190デフォルトの名無しさん
2018/08/19(日) 00:41:34.89ID:6q4oK8R8 scsh 使え https://scsh.net/about/what.html
191デフォルトの名無しさん
2018/08/19(日) 01:23:37.19ID:A4xH6fb7 バックスラッシュで行継続(改行)って多くの言語で採用されているから
多くの人はパイプ先頭、バックスラッシュ行末じゃないかな?
多くの人はパイプ先頭、バックスラッシュ行末じゃないかな?
192デフォルトの名無しさん
2018/08/19(日) 02:52:07.69ID:YqoTvka6 俺は1行か2行くらいなら後者だな。
何行もずらずら並べるなら中括弧で囲んでパイプ記号を先頭に持ってくるかも。
行末にバックスラッシュを置いて行継続はあまり美しくないと思うのでなるべく書きたくない。
>>191
構文的に行末で文(言語によっては式)が完結できていれば行末を文の終わりとみなし
そうでなければ次の行に継続、というのもshそのものをはじめpython, JavaScriptなど多くの言語で採用されているよ。
(pythonはshと同じく行末バックスラッシュで継続もできるが)
更にRubyは行の終わりで完結できるように見えても次の行の先頭を見てどうするか決めていたりする。
何行もずらずら並べるなら中括弧で囲んでパイプ記号を先頭に持ってくるかも。
行末にバックスラッシュを置いて行継続はあまり美しくないと思うのでなるべく書きたくない。
>>191
構文的に行末で文(言語によっては式)が完結できていれば行末を文の終わりとみなし
そうでなければ次の行に継続、というのもshそのものをはじめpython, JavaScriptなど多くの言語で採用されているよ。
(pythonはshと同じく行末バックスラッシュで継続もできるが)
更にRubyは行の終わりで完結できるように見えても次の行の先頭を見てどうするか決めていたりする。
193デフォルトの名無しさん
2018/08/19(日) 04:00:58.03ID:O9LemqF2194デフォルトの名無しさん
2018/08/19(日) 16:16:41.68ID:L67BZdE+ shに限らず末尾に演算子を置く
195デフォルトの名無しさん
2018/08/19(日) 19:55:46.26ID:O9LemqF2 シェルスクリプトの話題からちょっと外れるんだけど
$ somecmd --help
としたときの手引きって標準エラー出力に出力すべき?
GNU Coreutilsでは基本的に標準出力なんだけど……。
$ somecmd --help
としたときの手引きって標準エラー出力に出力すべき?
GNU Coreutilsでは基本的に標準出力なんだけど……。
196デフォルトの名無しさん
2018/08/19(日) 20:37:51.45ID:6q4oK8R8 stderr だとページャにつなげたい時に
$ somecmd --help 2>&1 | $PAGER
とかするのが面倒。でも zsh とかだとエイリアスで
どうにかできるんだっけ?
$ somecmd --help 2>&1 | $PAGER
とかするのが面倒。でも zsh とかだとエイリアスで
どうにかできるんだっけ?
197デフォルトの名無しさん
2018/08/19(日) 22:24:00.37ID:teBDlI3J helpはエラーではないから標準出力でいいのでは
198デフォルトの名無しさん
2018/08/19(日) 23:44:45.76ID:O9LemqF2199デフォルトの名無しさん
2018/08/20(月) 00:18:14.36ID:anhi4Zz/ >>198
dクス、"|&" が使えるのは bash と zsh だけかな
dクス、"|&" が使えるのは bash と zsh だけかな
200デフォルトの名無しさん
2018/08/20(月) 00:25:54.45ID:V9a8ZDkH >>199
csh(系)も使える
csh(系)も使える
201デフォルトの名無しさん
2018/08/20(月) 01:00:54.38ID:Za3ebEAA202デフォルトの名無しさん
2018/08/20(月) 03:03:17.26ID:miyFFq/v csh由来のものをbashismというのはどうかと……
203デフォルトの名無しさん
2018/08/20(月) 03:04:00.88ID:O40ujeeV つくづく宗教戦争じみてるなこの文化は
204デフォルトの名無しさん
2018/08/20(月) 03:32:09.94ID:OmELABLW まあ>>201はそんな大層な意味で言ってるわけではないだろ。単にbashしか使ってない使い込んでるってだけの意味だろう。無知でしたという
205デフォルトの名無しさん
2018/08/20(月) 03:46:49.27ID:GIvuOFoC --helpで思い出したけど、あれって書き方ってあるの?
usageの書き方とかオプションの書き方とか
引数は大文字にするの?とか [ファイル]... とかの[] とか ... の使い方とか
あるようで、バラバラな気もしている
usageの書き方とかオプションの書き方とか
引数は大文字にするの?とか [ファイル]... とかの[] とか ... の使い方とか
あるようで、バラバラな気もしている
206デフォルトの名無しさん
2018/08/20(月) 04:15:12.27ID:Za3ebEAA >>205
とりあえず 天下のPOSIX様はこうおっしゃってる
utility_name[-a][-b][-c option_argument]
[-d|-e][-f[option_argument]][operand...]
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_01
ので 俺はそれに従ってる。だいたいのmanページやGNUユーティリティの--help出力もこれに準ずる形だと思うよ
とりあえず 天下のPOSIX様はこうおっしゃってる
utility_name[-a][-b][-c option_argument]
[-d|-e][-f[option_argument]][operand...]
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_01
ので 俺はそれに従ってる。だいたいのmanページやGNUユーティリティの--help出力もこれに準ずる形だと思うよ
207デフォルトの名無しさん
2018/08/21(火) 20:17:11.95ID:ExpCY3/V208デフォルトの名無しさん
2018/08/23(木) 05:30:33.48ID:L+hDtmKU シェルスクリプトの言語にJavaScriptってアリだと思う?
#! /usr/local/bin/js24
みたいなシェバンでさ。
#! /usr/local/bin/js24
みたいなシェバンでさ。
209デフォルトの名無しさん
2018/08/23(木) 05:39:54.64ID:ncZgpeak シェルスクリプトっていうのは
シェルとして実用に堪えるものじゃないとダメ
名前の通り
コマンドを呼び出すのに、いちいちsystem関数を
使うとかいうのは、シェルとして使えない
ls だけでlsコマンドを実行できるようにしたら
シェルスクリプトと認めてもいいが
シェルとして実用に堪えるものじゃないとダメ
名前の通り
コマンドを呼び出すのに、いちいちsystem関数を
使うとかいうのは、シェルとして使えない
ls だけでlsコマンドを実行できるようにしたら
シェルスクリプトと認めてもいいが
210デフォルトの名無しさん
2018/08/23(木) 07:32:38.64ID:d2Ifs7B7 >>208
ナシだと思う
ナシだと思う
211デフォルトの名無しさん
2018/08/23(木) 07:38:44.84ID:1n1CeI2l シェルスクリプトというより、他のインタプリタ言語と同じようにコマンド(内容)記述用としてあっていいって話だろう
212デフォルトの名無しさん
2018/08/23(木) 08:56:23.64ID:AY9SoYfw 普通にやるだろ。
#!/usr/bin/awk -f
とかだってたまにはやるぞ。
「#」がコメント扱いになる言語なら
気にせずどんどんやればいい。
そもそもshebangはUNIX上で「スクリプト言語」を呼び出す時の記法であって
現代UNIXではシェルは一切関与しないカーネルの機能だから
「シェルスクリプト」なんかじゃない。
(つまり実はスレ違い)
なお昔のSystem-V系UNIXにはカーネルにこの機能がなくexec(2)が失敗するので、
その場合にはシェルが代行してスクリプトのインタープリターをよびだしていた。
そういうUNIXはほぼ滅びたけどシェル側にはまだこの代行機能が残っていたりする。
シェルは関与しないのにshell-bangなんて変な名前だけど、
この言い方自体比較的新しくて、実装されてからだいぶ長い間名前がなかったんだよ。
普通はカーネルが処理しててシェルは関係ないってことを
知らない奴がつけた名前じゃないかと前から疑問に思ってる。
#!/usr/bin/awk -f
とかだってたまにはやるぞ。
「#」がコメント扱いになる言語なら
気にせずどんどんやればいい。
そもそもshebangはUNIX上で「スクリプト言語」を呼び出す時の記法であって
現代UNIXではシェルは一切関与しないカーネルの機能だから
「シェルスクリプト」なんかじゃない。
(つまり実はスレ違い)
なお昔のSystem-V系UNIXにはカーネルにこの機能がなくexec(2)が失敗するので、
その場合にはシェルが代行してスクリプトのインタープリターをよびだしていた。
そういうUNIXはほぼ滅びたけどシェル側にはまだこの代行機能が残っていたりする。
シェルは関与しないのにshell-bangなんて変な名前だけど、
この言い方自体比較的新しくて、実装されてからだいぶ長い間名前がなかったんだよ。
普通はカーネルが処理しててシェルは関係ないってことを
知らない奴がつけた名前じゃないかと前から疑問に思ってる。
213デフォルトの名無しさん
2018/08/23(木) 09:39:55.05ID:ncZgpeak214デフォルトの名無しさん
2018/08/23(木) 09:45:44.18ID:ncZgpeak > シェルは関与しないのにshell-bangなんて変な名前だけど、
shebang を shell-bangの略だと主張する人は少数派だよ
shebang を shell-bangの略だと主張する人は少数派だよ
215デフォルトの名無しさん
2018/08/23(木) 12:56:18.33ID:/qY100we216デフォルトの名無しさん
2018/08/23(木) 12:59:05.57ID:XdhcXIaw スクリプトスクリプトはもにょる
217デフォルトの名無しさん
2018/08/23(木) 13:18:49.52ID:cYcyOMDR スクリプト
スクリプトスクリプト
スクリプトスクリプトスクリプト
スクリプトスクリプトスクリプトスクリプト 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
スクリプトスクリプト
スクリプトスクリプトスクリプト
スクリプトスクリプトスクリプトスクリプト 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
218デフォルトの名無しさん
2018/08/23(木) 14:49:29.73ID:AY9SoYfw219デフォルトの名無しさん
2018/08/23(木) 14:59:38.25ID:AY9SoYfw >>214
shebang の e って何から来てるの?
俺は shell から来てるんだと思ってた。
なお shabang という書き方も少数派だが使われてはいるみたい。
実際 sharp-bang なわけで、こっちなら分かる。
shabang ならシバンじゃなくて、シャバンだよな。
シャバ〜ン。
shebang の e って何から来てるの?
俺は shell から来てるんだと思ってた。
なお shabang という書き方も少数派だが使われてはいるみたい。
実際 sharp-bang なわけで、こっちなら分かる。
shabang ならシバンじゃなくて、シャバンだよな。
シャバ〜ン。
220デフォルトの名無しさん
2018/08/23(木) 15:01:24.58ID:2Dv2zxdP 男なんだろ?
221デフォルトの名無しさん
2018/08/23(木) 15:09:53.60ID:Jv3FRRxD 違うよ〜☆
222デフォルトの名無しさん
2018/08/23(木) 15:11:13.70ID:e+w5jH4y 若さ、若さってなんだ
223デフォルトの名無しさん
2018/08/23(木) 15:13:13.81ID:eJiCstIz なんというか、ヒーローの名前のようだ。
224デフォルトの名無しさん
2018/08/23(木) 15:42:31.50ID:bMgbpjF3 それはギャバン
225デフォルトの名無しさん
2018/08/23(木) 16:36:01.71ID:YQoAQycd さぁ、盛り上がって参りました
226デフォルトの名無しさん
2018/08/23(木) 16:45:35.96ID:ssILkLQJ 宇宙刑事シャバン
227デフォルトの名無しさん
2018/08/23(木) 16:48:23.72ID:e+w5jH4y ギャバン
シャバン
シャリバン
シャバン
シャリバン
228デフォルトの名無しさん
2018/08/23(木) 17:03:22.02ID:ncZgpeak 癒着!
229デフォルトの名無しさん
2018/08/23(木) 18:14:50.72ID:AY9SoYfw なんつーかオッサンばっかだな。
まあ俺もそういう反応を期待してたわけだがw
まあ俺もそういう反応を期待してたわけだがw
230デフォルトの名無しさん
2018/08/23(木) 18:43:16.20ID:1n1CeI2l >>219
#! -> sharp-bang -> shabang -> 単語ならshellだしすでにあるとても似たshebangでいいんじゃね、shebangの意味自体が似合ってるし
とか。shebangというれっきとした単語の由来は別にある
#! -> sharp-bang -> shabang -> 単語ならshellだしすでにあるとても似たshebangでいいんじゃね、shebangの意味自体が似合ってるし
とか。shebangというれっきとした単語の由来は別にある
231デフォルトの名無しさん
2018/08/24(金) 01:02:04.55ID:TjDOkMEc 元ネタ分かんねーと思ったらおっさんどころかジジイじゃねーか
232デフォルトの名無しさん
2018/08/24(金) 07:46:54.31ID:mVdVBkdF マジで検索しても元ネタわからんw
平均年齢どのくらいだこのスレは
平均年齢どのくらいだこのスレは
233デフォルトの名無しさん
2018/08/24(金) 08:04:01.22ID:lit/+L8O 機動刑事シバン
234219
2018/08/24(金) 08:55:32.25ID:57yPHNQD235デフォルトの名無しさん
2018/08/24(金) 09:13:07.93ID:LbFHGrVQ236219
2018/08/24(金) 09:35:23.98ID:57yPHNQD237デフォルトの名無しさん
2018/08/24(金) 10:43:03.55ID:wXpFbMeR238デフォルトの名無しさん
2018/08/24(金) 10:59:15.82ID:4te4jIm4 蒸着の元ネタってギャバンだったのか…
DeadSpaceのアーマー更新シーンを蒸着言うやついたけど元ネタあったんだな
DeadSpaceのアーマー更新シーンを蒸着言うやついたけど元ネタあったんだな
239デフォルトの名無しさん
2018/08/24(金) 15:39:45.35ID:mVdVBkdF240デフォルトの名無しさん
2018/08/24(金) 16:02:03.60ID:wXpFbMeR >>239
ようこそ。おっさんの世界へ
ようこそ。おっさんの世界へ
241デフォルトの名無しさん
2018/08/24(金) 19:44:16.61ID:Gfkbj1yB バッチファイルやパワーシェルもシェルスクリプトですか?
何言語っていうんでしょうか?
何言語っていうんでしょうか?
242デフォルトの名無しさん
2018/08/24(金) 19:45:54.13ID:wXpFbMeR >>241
どうでもいいことを気にするな
どうでもいいことを気にするな
243デフォルトの名無しさん
2018/08/24(金) 19:54:12.80ID:Gfkbj1yB 静かに
244デフォルトの名無しさん
2018/08/24(金) 20:30:04.55ID:ap1IsA9z 確かに
だと思ったら
静かに
でなんか笑った
だと思ったら
静かに
でなんか笑った
245デフォルトの名無しさん
2018/08/24(金) 22:34:41.93ID:UXXFLepR246デフォルトの名無しさん
2018/08/25(土) 06:14:56.78ID:TgLfCzAb バッチファイルをシェルスクリプトに入れない理由はないと思うけど?
247デフォルトの名無しさん
2018/08/25(土) 12:12:23.81ID:r5O9PJUC スクリプトに入れるのはありだけどシェルスクリプトって言う奴は少ないと思う
248デフォルトの名無しさん
2018/08/25(土) 12:16:23.36ID:zrQnMjpj ちゃんとした定義は知らんが、
シェルスクリプト=.sh
バッチファイル=.bat
と大抵は認識してそうな印象
シェルスクリプト=.sh
バッチファイル=.bat
と大抵は認識してそうな印象
249デフォルトの名無しさん
2018/08/25(土) 13:58:20.34ID:R/mHQH6/ Wikipedia に書いてあることでだいたいいいのではいか?
スクリプト言語
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E8%A8%80%E8%AA%9E
スクリプト言語
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E8%A8%80%E8%AA%9E
250デフォルトの名無しさん
2018/08/25(土) 14:43:10.95ID:0Hfq0tYW シェル スクリプトと言えばだから違うくね。バッチファイルをシェルスクリプト(ファイル)と実際に呼んでるヤツを見たことはないな
command.com自体が原始的でシェルのように打ち込んでってってのも見ない。あれはやっぱりバッチファイルを作るためのでしかないってうすうすわかっているからじゃねとか
command.com自体が原始的でシェルのように打ち込んでってってのも見ない。あれはやっぱりバッチファイルを作るためのでしかないってうすうすわかっているからじゃねとか
251デフォルトの名無しさん
2018/08/25(土) 14:47:50.16ID:TgLfCzAb >>250
最初から結果ありきで書くなよ。単にお前がバッチファイルをシェルスクリプトに入れないためのこじつけを
お前が考えてるだけじゃねーか
wikipediaにも書いてあるし
> スクリプト言語の一種は、ジョブ制御の自動化から生み出されたもので、システムプログラムの起動と制御を行う。
> そういう意味ではシェルの祖先としてIBMの Job Control Language(JCL、ジョブ制御言語)があるとも言える。
> この種の言語の処理系(インタプリタ)の多くは、UNIXのシェルやMS-DOSのCOMMAND.COMといった
> コマンドラインインタプリタと呼ばれるものである。
最初から結果ありきで書くなよ。単にお前がバッチファイルをシェルスクリプトに入れないためのこじつけを
お前が考えてるだけじゃねーか
wikipediaにも書いてあるし
> スクリプト言語の一種は、ジョブ制御の自動化から生み出されたもので、システムプログラムの起動と制御を行う。
> そういう意味ではシェルの祖先としてIBMの Job Control Language(JCL、ジョブ制御言語)があるとも言える。
> この種の言語の処理系(インタプリタ)の多くは、UNIXのシェルやMS-DOSのCOMMAND.COMといった
> コマンドラインインタプリタと呼ばれるものである。
252デフォルトの名無しさん
2018/08/25(土) 14:48:52.43ID:TgLfCzAb https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88
> シェルスクリプト用インタプリタの多くはコマンドラインインタフェースも兼ねており、各種Unixシェル、
> Windows PowerShell、MS-DOSのCOMMAND.COMなどがある。
> シェルスクリプト用インタプリタの多くはコマンドラインインタフェースも兼ねており、各種Unixシェル、
> Windows PowerShell、MS-DOSのCOMMAND.COMなどがある。
253デフォルトの名無しさん
2018/08/25(土) 14:51:47.98ID:0Hfq0tYW >>251
「実際」にだよ。お前の周りでバッチファイルをシェルスクリプトと呼んでいるヤツいるの?
呼んでもいないのになぜそんなとこに拘る。バッチファイルはバッチファイル、Unix系のはシェルスクリプトはシェルスクリプトでええやん
逆にシェルスクリプトで書かれたはファイルをバッチファイルとなぜ呼ばないまでこだわれよ、だったらw
「実際」にだよ。お前の周りでバッチファイルをシェルスクリプトと呼んでいるヤツいるの?
呼んでもいないのになぜそんなとこに拘る。バッチファイルはバッチファイル、Unix系のはシェルスクリプトはシェルスクリプトでええやん
逆にシェルスクリプトで書かれたはファイルをバッチファイルとなぜ呼ばないまでこだわれよ、だったらw
254デフォルトの名無しさん
2018/08/25(土) 14:58:00.88ID:TgLfCzAb >>253
はい、いますー。論破w
はい、いますー。論破w
255デフォルトの名無しさん
2018/08/25(土) 15:01:01.94ID:0Hfq0tYW いるんだww
256デフォルトの名無しさん
2018/08/25(土) 15:31:37.30ID:4b56uGjx いるのか…
257デフォルトの名無しさん
2018/08/25(土) 16:39:23.62ID:CiVrtAH/258デフォルトの名無しさん
2018/08/25(土) 17:13:00.55ID:aJ7Wjpaw バッチファイル=バッチスクリプトであってる?
バッチファイル=シェルスクリプトはまちがえ?
バッチファイル=シェルスクリプトはまちがえ?
259デフォルトの名無しさん
2018/08/25(土) 17:34:24.45ID:TgLfCzAb >>258
シェルスクリプトというカテゴリがあって、
その中で、特別に言語を指定する場合は、
bashスクリプトやバッチファイルなどという具体的な呼び方をしている
バッチファイル = シェルスクリプト ではなく
バッチファイルはシェルスクリプトに含まれる
シェルスクリプトというカテゴリがあって、
その中で、特別に言語を指定する場合は、
bashスクリプトやバッチファイルなどという具体的な呼び方をしている
バッチファイル = シェルスクリプト ではなく
バッチファイルはシェルスクリプトに含まれる
260デフォルトの名無しさん
2018/08/25(土) 17:57:18.64ID:0Hfq0tYW >>258
バッチファイルを作るための制御文なんぞを特に命名はしてないんじゃないの。バッチファイルというのがあってそれを作る/それで使える制御文は的な存在。誰も名前を言えないように
バッチファイルのバッチとは バッチ処理 という古典的コンピュータ用語。MS-DOS/Microsoft上でバッチ処理を書いたファイル/バッチ処理のファイルということで、バッチファイルと名前付けしたにすぎない
シェルスクリプトファイル、シェルスクリプトで書かれたコマンドも、広義ではバッチ処理のファイルなのでバッチファイルと呼べるが、そんな呼び方をする人はいない
そもそもシェルやシェルスクリプトだって、Unixでそう呼んだからにすぎないんだけど、どうして一緒くたにしたがるのかわけわからん
てかさ、バッチファイルのアレもシェルスクリプトだって言いたがりは、このスレでバッチファイルのことが出てきたらどうすんの?当たり前のように受け止めるの?てか、そんなトンチンカンが現れたことがないんだから、わかるようなもんだと思うけど
バッチファイルを作るための制御文なんぞを特に命名はしてないんじゃないの。バッチファイルというのがあってそれを作る/それで使える制御文は的な存在。誰も名前を言えないように
バッチファイルのバッチとは バッチ処理 という古典的コンピュータ用語。MS-DOS/Microsoft上でバッチ処理を書いたファイル/バッチ処理のファイルということで、バッチファイルと名前付けしたにすぎない
シェルスクリプトファイル、シェルスクリプトで書かれたコマンドも、広義ではバッチ処理のファイルなのでバッチファイルと呼べるが、そんな呼び方をする人はいない
そもそもシェルやシェルスクリプトだって、Unixでそう呼んだからにすぎないんだけど、どうして一緒くたにしたがるのかわけわからん
てかさ、バッチファイルのアレもシェルスクリプトだって言いたがりは、このスレでバッチファイルのことが出てきたらどうすんの?当たり前のように受け止めるの?てか、そんなトンチンカンが現れたことがないんだから、わかるようなもんだと思うけど
261デフォルトの名無しさん
2018/08/25(土) 18:06:28.42ID:0Hfq0tYW >>260
>バッチファイルと呼べるが、そんな呼び方をする人はいない
サーバーなんぞの1日深夜1回とか1週間に1回のごちゃごちゃ処理するのを呼んだりしているかもしれない。そういう狭義のある意味全くもってなバッチ処理を記述したファイルという意味で
>バッチファイルと呼べるが、そんな呼び方をする人はいない
サーバーなんぞの1日深夜1回とか1週間に1回のごちゃごちゃ処理するのを呼んだりしているかもしれない。そういう狭義のある意味全くもってなバッチ処理を記述したファイルという意味で
262デフォルトの名無しさん
2018/08/25(土) 18:11:40.65ID:TgLfCzAb > てかさ、バッチファイルのアレもシェルスクリプトだって言いたがりは、このスレで
> バッチファイルのことが出てきたらどうすんの?当たり前のように受け止めるの?
なにか問題でも?
>>2に
> ・特記なき場合、Bourne ShellもしくはPOSIX準拠のsh可換シェルが既定です
> csh/tcshでのシェルスクリプトは*まったく推奨しません*。
などと書いてあるから、バッチファイルと明記して書けば問題ないでしょ?
> バッチファイルのことが出てきたらどうすんの?当たり前のように受け止めるの?
なにか問題でも?
>>2に
> ・特記なき場合、Bourne ShellもしくはPOSIX準拠のsh可換シェルが既定です
> csh/tcshでのシェルスクリプトは*まったく推奨しません*。
などと書いてあるから、バッチファイルと明記して書けば問題ないでしょ?
263デフォルトの名無しさん
2018/08/25(土) 18:18:00.15ID:0Hfq0tYW なにそれw
無茶苦茶やな。書かなくても誰もがわかっていたからそんなのが出てない書く必要もないという事実を無視して自説のためにでしかないやん
無茶苦茶やな。書かなくても誰もがわかっていたからそんなのが出てない書く必要もないという事実を無視して自説のためにでしかないやん
264デフォルトの名無しさん
2018/08/25(土) 18:22:59.07ID:TgLfCzAb なにいってんだか。
バッチファイルという名前が有名だから、普段はそっちの名前で読んでるだけで
cmd.exeはシェルだし、シェル上で動く言語という定義なんだから、
シェルスクリプトに当てはまるという至極まっとうなことを言ってるだけ
バッチファイルという名前が有名だから、普段はそっちの名前で読んでるだけで
cmd.exeはシェルだし、シェル上で動く言語という定義なんだから、
シェルスクリプトに当てはまるという至極まっとうなことを言ってるだけ
265デフォルトの名無しさん
2018/08/25(土) 18:29:18.68ID:0Hfq0tYW >シェルスクリプトに当てはまるという
だから?で?それが何かの役に立つというか意味があるのか?ってことだよ。別に当てはまろうが当てはまらないだろうが意味ないだろう??
バッチファイルといえばアレで、シェルスクリプトといえばコレでいいことやん。それでなにも問題もなくうまくもいってるってのが、このスレででもっていう
バッチファイルをここで話題にしたがってるの??ww
だから?で?それが何かの役に立つというか意味があるのか?ってことだよ。別に当てはまろうが当てはまらないだろうが意味ないだろう??
バッチファイルといえばアレで、シェルスクリプトといえばコレでいいことやん。それでなにも問題もなくうまくもいってるってのが、このスレででもっていう
バッチファイルをここで話題にしたがってるの??ww
266デフォルトの名無しさん
2018/08/25(土) 18:29:21.83ID:zrQnMjpj もうスクリプトでいいんじゃないかな(鼻ホジ
267デフォルトの名無しさん
2018/08/25(土) 18:31:36.33ID:0Hfq0tYW すでに出てたけど、>>247だわな
268デフォルトの名無しさん
2018/08/25(土) 18:33:12.36ID:zrQnMjpj cmd=シェルってのがピンとこないんだよな
大体シェル=シェルスクリプトみたいな使い方してるからなんだけどさ
大体シェル=シェルスクリプトみたいな使い方してるからなんだけどさ
269デフォルトの名無しさん
2018/08/25(土) 18:34:28.54ID:TgLfCzAb >>265
意味がないならシェルスクリプトでいいだろw
意味がないならシェルスクリプトでいいだろw
270デフォルトの名無しさん
2018/08/25(土) 18:37:31.47ID:0Hfq0tYW 薄いな。なんでそんなに拘る。意味がないのはあんた個人に対してだよ
バッチファイルがシェルスクリプでもなければならない意味を言いなさい
バッチファイルがシェルスクリプでもなければならない意味を言いなさい
271デフォルトの名無しさん
2018/08/25(土) 18:42:40.13ID:0r5h6/lL コマンドラインインタープリタを自動化したもんを
シェルスクリプトとというの
頭悪いバカのみんな分かった?
当然、バッチファイルもシェルスクリプト
わかった?
シェルスクリプトとというの
頭悪いバカのみんな分かった?
当然、バッチファイルもシェルスクリプト
わかった?
272デフォルトの名無しさん
2018/08/25(土) 18:43:26.08ID:0Hfq0tYW >>268
Unixでsh(系=シェル)を使うと、貧弱なにもできないって感じからcmd=シェルとはピンとこないこともあるな
シェルを起動してとは言わんし。てか大体の記事とかでも、いや、Microsoftでさえシェルとは呼んではく、Command Promptだからね
Unixでsh(系=シェル)を使うと、貧弱なにもできないって感じからcmd=シェルとはピンとこないこともあるな
シェルを起動してとは言わんし。てか大体の記事とかでも、いや、Microsoftでさえシェルとは呼んではく、Command Promptだからね
273デフォルトの名無しさん
2018/08/25(土) 18:49:15.78ID:TgLfCzAb >>270
普通にcmd.exeがシェルだし、そのシェルの言語で動くんだから
シェルスクリプトですってだけだが?
なんでシェルスクリプトじゃだめなの?
> cmd=シェルとはピンとこないこともある
お前が本質をわかってないからだろうねw
普通にcmd.exeがシェルだし、そのシェルの言語で動くんだから
シェルスクリプトですってだけだが?
なんでシェルスクリプトじゃだめなの?
> cmd=シェルとはピンとこないこともある
お前が本質をわかってないからだろうねw
274デフォルトの名無しさん
2018/08/25(土) 18:50:24.91ID:TgLfCzAb > 貧弱なにもできないって感じから
何もできないからなんだっていうんだろうか?
リダイレクトできるよ? パイプ使えるよ?
まさにシェルスクリプトの特徴だよね
何もできないからなんだっていうんだろうか?
リダイレクトできるよ? パイプ使えるよ?
まさにシェルスクリプトの特徴だよね
275デフォルトの名無しさん
2018/08/25(土) 18:53:58.18ID:0Hfq0tYW >>273
さっぱりだな。だからそれの意味を教えなさい。そんなにづっと続けるのだから意味があるんでしょ?あなた個人に
それがさっぱりわからんのだよ。「はいはい、バッチファイルもシェルスクリプトだね、誰もそう呼ばないけど」で満足なの?
本質wwあなた個人の意味も言えないのに本質wwwって思ってしまうよ
さっぱりだな。だからそれの意味を教えなさい。そんなにづっと続けるのだから意味があるんでしょ?あなた個人に
それがさっぱりわからんのだよ。「はいはい、バッチファイルもシェルスクリプトだね、誰もそう呼ばないけど」で満足なの?
本質wwあなた個人の意味も言えないのに本質wwwって思ってしまうよ
276デフォルトの名無しさん
2018/08/25(土) 18:56:00.29ID:0r5h6/lL プリンタに内容がPDLのファイルをリダイレクトすれば
いまでも普通にコマンドプロンプトで印刷もできるからな
コマンドプロンプトでコマンドからなんでもできる
いまでも普通にコマンドプロンプトで印刷もできるからな
コマンドプロンプトでコマンドからなんでもできる
277デフォルトの名無しさん
2018/08/25(土) 18:58:24.61ID:0Hfq0tYW >>274
>Unixでsh(系=シェル)を使うと
って、言ってるのだけど。ああ...なんだ..MS好きか?単に
shとcmdの違い/使い勝手が天地なのは使えば明らかだと思うけど。shと同等にcmdを使ってるの?もしかしてsh使ってないとかはないよな?w
>Unixでsh(系=シェル)を使うと
って、言ってるのだけど。ああ...なんだ..MS好きか?単に
shとcmdの違い/使い勝手が天地なのは使えば明らかだと思うけど。shと同等にcmdを使ってるの?もしかしてsh使ってないとかはないよな?w
278デフォルトの名無しさん
2018/08/25(土) 19:01:50.62ID:TgLfCzAb >>277
だからなんで高機能なものがシェルスクリプトの定義だ
なんて思ってるのさ?
低機能なシェルスクリプトってだけだろ
つーか、なにができないとシェルスクリプトとは認められないって言ってるんだよ
お前の定義言ってみな。矛盾しないような。
だからなんで高機能なものがシェルスクリプトの定義だ
なんて思ってるのさ?
低機能なシェルスクリプトってだけだろ
つーか、なにができないとシェルスクリプトとは認められないって言ってるんだよ
お前の定義言ってみな。矛盾しないような。
279デフォルトの名無しさん
2018/08/25(土) 19:10:24.45ID:0Hfq0tYW >>278
一般的に、シェルスクリプトと言えばUnixが元のあれやこれや
一般的に、バッチファイルと言えばMS-DOS/Windows/Microsoftのあれやこれや
一般的に、バッチファイルと言えばわかるものをシュエルスクリプトとわざわざ言い換えはしない
シェルはもともとUnixでの言い出したことだし、sh(シェル)/cmd(コマンドプロンプト)でそれぞれ、シェルスクリプト/バッチファイルと呼んでいた
コマンドをインタラクティブで処理するやつをどうであれシェルと呼ぶ見方もあるだろうが、それは一般的ではないな。cmdはやっぱりCommand Promptなとことからも
ってとこ。別にバッチファイルはバッチファイルで何も問題がなく、わざわざシェルスクリプトと言い換える意味がわからん、混同という弊害もあるし
一般的に、シェルスクリプトと言えばUnixが元のあれやこれや
一般的に、バッチファイルと言えばMS-DOS/Windows/Microsoftのあれやこれや
一般的に、バッチファイルと言えばわかるものをシュエルスクリプトとわざわざ言い換えはしない
シェルはもともとUnixでの言い出したことだし、sh(シェル)/cmd(コマンドプロンプト)でそれぞれ、シェルスクリプト/バッチファイルと呼んでいた
コマンドをインタラクティブで処理するやつをどうであれシェルと呼ぶ見方もあるだろうが、それは一般的ではないな。cmdはやっぱりCommand Promptなとことからも
ってとこ。別にバッチファイルはバッチファイルで何も問題がなく、わざわざシェルスクリプトと言い換える意味がわからん、混同という弊害もあるし
280デフォルトの名無しさん
2018/08/25(土) 19:12:53.54ID:0r5h6/lL まさにシェルがなにかついて記述されている
https://en.wikipedia.org/wiki/Shell_script
Typical operations performed by shell scripts include file manipulation, program execution, and printing text.
A script which sets up the environment, runs the program, and does any necessary cleanup, logging, etc. is called a wrapper.
The term is also used more generally to mean the automated mode of running an operating system shell;
in specific operating systems they are called other things such as
batch files (MSDos−Win95 stream, OS/2),
command procedures (VMS),
and shell scripts (Windows NT stream and third−party derivatives like 4NT?article is at cmd.exe),
and mainframe operating systems
are associated with a number of terms.
バカの世界では違うらしい
https://en.wikipedia.org/wiki/Shell_script
Typical operations performed by shell scripts include file manipulation, program execution, and printing text.
A script which sets up the environment, runs the program, and does any necessary cleanup, logging, etc. is called a wrapper.
The term is also used more generally to mean the automated mode of running an operating system shell;
in specific operating systems they are called other things such as
batch files (MSDos−Win95 stream, OS/2),
command procedures (VMS),
and shell scripts (Windows NT stream and third−party derivatives like 4NT?article is at cmd.exe),
and mainframe operating systems
are associated with a number of terms.
バカの世界では違うらしい
281デフォルトの名無しさん
2018/08/25(土) 19:15:52.35ID:0Hfq0tYW >>280
よく読んでみ。なんかこれ幸いな単語で喜んでいるだろう?
よく読んでみ。なんかこれ幸いな単語で喜んでいるだろう?
282デフォルトの名無しさん
2018/08/25(土) 19:31:09.91ID:TgLfCzAb >>279
一般的にって、全部お前がそうしたいってだけじゃねーかw
一般的にって、全部お前がそうしたいってだけじゃねーかw
283デフォルトの名無しさん
2018/08/25(土) 19:32:11.87ID:TgLfCzAb >>281
お前のために翻訳してやったぜ
> シェルスクリプトは、あるコンピュータプログラムによって実行されるように設計されたUnixシェル、
> コマンドラインインタプリタ。[1]シェルスクリプトのさまざまな方言は、スクリプト言語と見なされます。
> シェルスクリプトによって実行される一般的な操作には、ファイルの操作、プログラムの実行、
> およびテキストの印刷が含まれます。環境を設定し、プログラムを実行し、必要なクリーンアップやロギングなどをラッパーと呼びます。
>
> この用語は、より一般的には、オペレーティングシステムシェルを実行する自動モードを意味するためにも使用されます。
> 特定のオペレーティングシステムでは、バッチファイル(MSDos-Win95ストリーム、OS / 2)、
> コマンドプロシージャ(VMS)、シェルスクリプト(WindowsNTストリーム、4NTのようなサードパーティ製の派生品)などがあります
お前のために翻訳してやったぜ
> シェルスクリプトは、あるコンピュータプログラムによって実行されるように設計されたUnixシェル、
> コマンドラインインタプリタ。[1]シェルスクリプトのさまざまな方言は、スクリプト言語と見なされます。
> シェルスクリプトによって実行される一般的な操作には、ファイルの操作、プログラムの実行、
> およびテキストの印刷が含まれます。環境を設定し、プログラムを実行し、必要なクリーンアップやロギングなどをラッパーと呼びます。
>
> この用語は、より一般的には、オペレーティングシステムシェルを実行する自動モードを意味するためにも使用されます。
> 特定のオペレーティングシステムでは、バッチファイル(MSDos-Win95ストリーム、OS / 2)、
> コマンドプロシージャ(VMS)、シェルスクリプト(WindowsNTストリーム、4NTのようなサードパーティ製の派生品)などがあります
284デフォルトの名無しさん
2018/08/25(土) 19:36:03.43ID:0Hfq0tYW285デフォルトの名無しさん
2018/08/25(土) 19:40:24.03ID:TgLfCzAb286デフォルトの名無しさん
2018/08/25(土) 19:44:09.41ID:0Hfq0tYW なんだろ。こんだけ世間擦れして、なんかどこぞの辞書的なとかが絶対ってこだわり続けるのは...あれかな??w
>>285
そういう無茶苦茶言えるのは、やっぱりアレだろなと思わざるを得ない
誰もそんなの望んではいないだろうと思われるけど。Unix板にあろうが「シェルスクリプト」でググって飛び込んできても不思議ではないな、あんたの言い分では
てかそのあんたの言っているその時点で暗にあんたもシェルスクリプトとバッチファイルは違うと認めてるようなもんなんだが、わからんだろうな
>>285
そういう無茶苦茶言えるのは、やっぱりアレだろなと思わざるを得ない
誰もそんなの望んではいないだろうと思われるけど。Unix板にあろうが「シェルスクリプト」でググって飛び込んできても不思議ではないな、あんたの言い分では
てかそのあんたの言っているその時点で暗にあんたもシェルスクリプトとバッチファイルは違うと認めてるようなもんなんだが、わからんだろうな
287デフォルトの名無しさん
2018/08/25(土) 19:51:38.10ID:9FNycoly288デフォルトの名無しさん
2018/08/25(土) 19:55:20.14ID:0Hfq0tYW 拗らせるぐらいなら参加しなきゃいいのにw
すげえな今までを全く無視して個人的にそうするという自己中ぶりは
すげえな今までを全く無視して個人的にそうするという自己中ぶりは
289デフォルトの名無しさん
2018/08/25(土) 19:56:27.99ID:A3V5N+C6 自覚ないみたいだな
俺はシェルスクリプトの正しい定義を言ってるだけ
俺はシェルスクリプトの正しい定義を言ってるだけ
290デフォルトの名無しさん
2018/08/25(土) 19:57:14.99ID:0Hfq0tYW 誰やねんw
291デフォルトの名無しさん
2018/08/25(土) 20:04:48.84ID:0Hfq0tYW 広義ではバッチファイルをシェルスクリプトと呼べるかもしれないが、一般的にバッチファイルをシェルスクリプトとは呼ばないし、そう思っているのは少なく明らかに分けて考えて言う方が多い
「一般的に」というのは「広義では」という場合にも使われるのを知っておこう
ただ、それだけのことなんだけどねえw
「一般的に」というのは「広義では」という場合にも使われるのを知っておこう
ただ、それだけのことなんだけどねえw
292デフォルトの名無しさん
2018/08/25(土) 20:09:01.30ID:kfh++Yrt293デフォルトの名無しさん
2018/08/25(土) 20:10:14.67ID:A3V5N+C6 これは言い方を逆転させただけ
一般的にバッチファイルをシェルスクリプトとは呼ばないし、そう思っているのは少なく明らかに分けて考えて言う方が多いが、
広義ではバッチファイルをシェルスクリプトと呼べる
一般的にバッチファイルをシェルスクリプトとは呼ばないし、そう思っているのは少なく明らかに分けて考えて言う方が多いが、
広義ではバッチファイルをシェルスクリプトと呼べる
294デフォルトの名無しさん
2018/08/25(土) 20:10:31.78ID:9woB+JG6 UNIX、Windows、それぞれの文化の中での言い方なのに
何ムキになってるんだい?
UNIXの文化の中で、シェルスクリプトといえばsh系のスクリプトのことを通常は意味するだろう?
わざわざ、Windowsバッチファイルを「シェルスクリプト」と呼ぶことは、
英語圏の外国人が日本に来て、何故英語が通じないと言ってるようなもので、
UNIX文化圏の人から見たら、「何言ってんだこいつ」ということになる。
このスレがプログラム板に来たからといって、シェルスクリプト自体がUNIX文化であることには疑いなく、
正しいか正しくないかということとはまた別の問題なんだよ。
何ムキになってるんだい?
UNIXの文化の中で、シェルスクリプトといえばsh系のスクリプトのことを通常は意味するだろう?
わざわざ、Windowsバッチファイルを「シェルスクリプト」と呼ぶことは、
英語圏の外国人が日本に来て、何故英語が通じないと言ってるようなもので、
UNIX文化圏の人から見たら、「何言ってんだこいつ」ということになる。
このスレがプログラム板に来たからといって、シェルスクリプト自体がUNIX文化であることには疑いなく、
正しいか正しくないかということとはまた別の問題なんだよ。
295デフォルトの名無しさん
2018/08/25(土) 20:11:13.69ID:A3V5N+C6 >>292
sh互換専用のスレ立てたのでどうぞ
【POSIX】 sh系互換 シェルスクリプトスレ
https://mevius.5ch.net/test/read.cgi/tech/1535195112/
sh互換専用のスレ立てたのでどうぞ
【POSIX】 sh系互換 シェルスクリプトスレ
https://mevius.5ch.net/test/read.cgi/tech/1535195112/
296デフォルトの名無しさん
2018/08/25(土) 20:13:03.56ID:kfh++Yrt297デフォルトの名無しさん
2018/08/25(土) 20:13:19.96ID:0Hfq0tYW 拗らせすぎ。なぜそこまで...必死と言わざるを得ないw
298デフォルトの名無しさん
2018/08/25(土) 20:15:34.15ID:9woB+JG6 別スレ立てるなんて、もう嫌がらせでしか無くない?
しかも2つも。
しかも2つも。
299デフォルトの名無しさん
2018/08/25(土) 20:20:01.41ID:kfh++Yrt300デフォルトの名無しさん
2018/08/25(土) 20:22:56.85ID:0r5h6/lL まったくもって酷いことするヤツラがいるもんだ。。。
オレにはこんなことできない。。。
オレにはこんなことできない。。。
301デフォルトの名無しさん
2018/08/25(土) 20:27:59.09ID:0r5h6/lL シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/
シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/tech/1532397676/ ← このスレ
シェルスクリプト総合 その29
https://mevius.5ch.net/test/read.cgi/tech/1535194140/
【POSIX】 sh系互換 シェルスクリプトスレ
https://mevius.5ch.net/test/read.cgi/tech/1535195112/
乱立しすぎてなにがなんだか
分からない
https://mevius.5ch.net/test/read.cgi/unix/1533154936/
シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/tech/1532397676/ ← このスレ
シェルスクリプト総合 その29
https://mevius.5ch.net/test/read.cgi/tech/1535194140/
【POSIX】 sh系互換 シェルスクリプトスレ
https://mevius.5ch.net/test/read.cgi/tech/1535195112/
乱立しすぎてなにがなんだか
分からない
302デフォルトの名無しさん
2018/08/25(土) 20:34:30.34ID:9woB+JG6 件の輩、ドザの工作員と考えないと説明がつかないw
ご本人に住み分けを含めて説明してもらわないと
ご本人に住み分けを含めて説明してもらわないと
303デフォルトの名無しさん
2018/08/25(土) 20:48:45.32ID:2/0/KxdV 荒れてて草
304デフォルトの名無しさん
2018/08/25(土) 20:50:34.20ID:tfF8aOe1 >>295
二度と来るな屑
二度と来るな屑
305デフォルトの名無しさん
2018/08/25(土) 23:23:09.52ID:zrQnMjpj まぁこういうことがあるからワッチョイ導入しようってなったんだし
ここにきた選択は間違ってはいなかったな
ここにきた選択は間違ってはいなかったな
306デフォルトの名無しさん
2018/08/25(土) 23:44:11.66ID:9woB+JG6 ID:TgLfCzAb 抽出レス数:14
ID:9FNycoly 抽出レス数:1 → シェルスクリプト総合 その29
ID:A3V5N+C6 抽出レス数:3 → 【POSIX】 sh系互換 シェルスクリプトスレ
IDの流れ(ダブりなし)からすると、同一人物のようだね。
アラシは一人だったってことだ。
これは推測にすぎないが、UNIX板の件のスレも同一人物の可能性が高いと思う。
後は件のスレをスルーして沈めておくのが懸命かな。
ID:9FNycoly 抽出レス数:1 → シェルスクリプト総合 その29
ID:A3V5N+C6 抽出レス数:3 → 【POSIX】 sh系互換 シェルスクリプトスレ
IDの流れ(ダブりなし)からすると、同一人物のようだね。
アラシは一人だったってことだ。
これは推測にすぎないが、UNIX板の件のスレも同一人物の可能性が高いと思う。
後は件のスレをスルーして沈めておくのが懸命かな。
307デフォルトの名無しさん
2018/08/26(日) 00:23:54.30ID:+yQLo3Ss >>980
次スレはワッチョイありで頼む
次スレはワッチョイありで頼む
308デフォルトの名無しさん
2018/08/26(日) 11:24:38.43ID:ylpyaNXE >>251
JCLなつかしー
DD文でFORTRANのWRITE/READ文の装置番号と実際のファイルを対応させる記述すんだよね
だからOPEN/CLOSEなんて使わなかった
パソコンなら簡単なのにメインフレームは一々領域確保やらにゃならんから面倒だなと常々感じてた
JCLなつかしー
DD文でFORTRANのWRITE/READ文の装置番号と実際のファイルを対応させる記述すんだよね
だからOPEN/CLOSEなんて使わなかった
パソコンなら簡単なのにメインフレームは一々領域確保やらにゃならんから面倒だなと常々感じてた
309デフォルトの名無しさん
2018/08/26(日) 15:08:48.37ID:r/93pdu8 つまりバッチ=シェルだけどシェルっていう人はすくないってことね
310デフォルトの名無しさん
2018/08/26(日) 15:11:58.53ID:I24HoXLR 鬼才現る
311デフォルトの名無しさん
2018/08/26(日) 15:24:35.78ID:rDVjwTPV >>309
また荒らそうとしてるのね
また荒らそうとしてるのね
312デフォルトの名無しさん
2018/08/26(日) 20:22:58.07ID:r/93pdu8 じゃあパワーシェルはシェルスクリプト?
それともWindowsはシェルとはいわないってこと?
それともWindowsはシェルとはいわないってこと?
313デフォルトの名無しさん
2018/08/26(日) 20:32:19.44ID:2bPBOKp2 もうお腹いっぱいです
314デフォルトの名無しさん
2018/08/26(日) 20:35:06.42ID:qkCCtxHG いっぱいすぎてゲロ吐きそう
315デフォルトの名無しさん
2018/08/26(日) 22:12:44.18ID:93jd27LU316デフォルトの名無しさん
2018/08/26(日) 23:10:38.66ID:ylpyaNXE 昔は仕事でバッチを沢山作ってきたけど
退職して、数十年、コマンドや、シェル一切忘れてしまった
再びシェルスクリプトやsed.awk,viリファレンス買い込んで復習中
昔はスクリプトといえば、Bshとawkしか知らなかったから、何やるにもawkスクリプトを何十行も書いてた
まあ、新規インストールの必要ないから客先の環境そのままでも動かせるから良かったんだけどね
大型のスーパーコンピュータで数十行のawkスクリプト動かすってのも何かシュールだったな
退職して、数十年、コマンドや、シェル一切忘れてしまった
再びシェルスクリプトやsed.awk,viリファレンス買い込んで復習中
昔はスクリプトといえば、Bshとawkしか知らなかったから、何やるにもawkスクリプトを何十行も書いてた
まあ、新規インストールの必要ないから客先の環境そのままでも動かせるから良かったんだけどね
大型のスーパーコンピュータで数十行のawkスクリプト動かすってのも何かシュールだったな
317デフォルトの名無しさん
2018/08/26(日) 23:11:48.52ID:SztCjcZc awkが入ってない環境とかある?
318デフォルトの名無しさん
2018/08/26(日) 23:12:11.25ID:SztCjcZc windows以外で
319デフォルトの名無しさん
2018/08/26(日) 23:23:16.02ID:XxVIxjiS http://pubs.opengroup.org/onlinepubs/009695399/utilities/tput.html
ここを見るとtput colsおよびtput linesは標準で使えないと読めるのですが
POSIXに準拠した形で端末の幅などを取得するにはどうすればいいんでしょうか
ここを見るとtput colsおよびtput linesは標準で使えないと読めるのですが
POSIXに準拠した形で端末の幅などを取得するにはどうすればいいんでしょうか
320デフォルトの名無しさん
2018/08/27(月) 00:43:08.11ID:6cDpYi8T POISXコマンドであるtput使ってればいいんじゃないの
tputの仕様上は、端末(というかTerminalアプリというか端末エミュレータ)までは知らんってことじゃないの
tputの仕様/機能を満たすために後は勝手にやってくれってことじゃないの。で、当然勝手にやってる、というか、それも標準的な方法でやってるだろう(だいたいはtermcap/terminfoとかベースで)
tputの仕様上は、端末(というかTerminalアプリというか端末エミュレータ)までは知らんってことじゃないの
tputの仕様/機能を満たすために後は勝手にやってくれってことじゃないの。で、当然勝手にやってる、というか、それも標準的な方法でやってるだろう(だいたいはtermcap/terminfoとかベースで)
321デフォルトの名無しさん
2018/08/27(月) 00:48:50.05ID:QAQ5xX6o でもOpenWrtにはtputないしなー
322デフォルトの名無しさん
2018/08/27(月) 01:06:14.94ID:KUEVzuS1 POSIX 準拠かどうか分からんけど、
$ stty size
じゃだめなん?
$ stty size
じゃだめなん?
323デフォルトの名無しさん
2018/08/27(月) 01:12:42.77ID:QAQ5xX6o sttyもOpenWrtではないなー
324デフォルトの名無しさん
2018/08/27(月) 01:13:44.58ID:x5JZtbKK325デフォルトの名無しさん
2018/08/27(月) 01:14:39.85ID:x5JZtbKK ID:QAQ5xX6o ただの知識自慢?OpenWrtって
326デフォルトの名無しさん
2018/08/27(月) 03:20:49.11ID:y2YT/eYl >>320
いえ すいません言葉が悪かったです。
POSIX標準としてのtputコマンドはあるのです。
http://pubs.opengroup.org/onlinepubs/009695399/utilities/tput.html
しかし そのオプションとして“cols”や“lines”が記載されていないのです。
いえ すいません言葉が悪かったです。
POSIX標準としてのtputコマンドはあるのです。
http://pubs.opengroup.org/onlinepubs/009695399/utilities/tput.html
しかし そのオプションとして“cols”や“lines”が記載されていないのです。
327デフォルトの名無しさん
2018/08/27(月) 03:58:36.09ID:6cDpYi8T 直接、端末に問い合わせる
https://unix.stackexchange.com/questions/16578/resizable-serial-console-window
いちおう、POSIXコマンドオプション内ではあるな。まあ、端末種によって判断しのだけど、2つぐらいに集約されてんのかな?
C関数ではPOSIXのがあるので、ちっちゃいコマンドをCで書く
http://austingroupbugs.net/view.php?id=1053
らしい。時代を先取りして(?)気にせず >>322 を使う
https://unix.stackexchange.com/questions/16578/resizable-serial-console-window
いちおう、POSIXコマンドオプション内ではあるな。まあ、端末種によって判断しのだけど、2つぐらいに集約されてんのかな?
C関数ではPOSIXのがあるので、ちっちゃいコマンドをCで書く
http://austingroupbugs.net/view.php?id=1053
らしい。時代を先取りして(?)気にせず >>322 を使う
328デフォルトの名無しさん
2018/08/27(月) 04:54:02.59ID:6cDpYi8T というか、
COLUMNS LINES でええやん
http://pubs.opengroup.org/onlinepubs/009604599/basedefs/xbd_chap08.html
んなの設定してないっていうしょぼい環境だったら、しょぼいので設定してくださいって、ユーザに固定値でも設定させれば済むんじゃないの
COLUMNS LINES でええやん
http://pubs.opengroup.org/onlinepubs/009604599/basedefs/xbd_chap08.html
んなの設定してないっていうしょぼい環境だったら、しょぼいので設定してくださいって、ユーザに固定値でも設定させれば済むんじゃないの
329デフォルトの名無しさん
2018/08/27(月) 05:14:12.97ID:y2YT/eYl http://austingroupbugs.net/main_page.php
↑このサイト初めて知ったわ。
ここで次期のPOSIX標準がだいたい把握できるんだな。
ところでxargsに-0オプションが付くかどうかってどうやって調べればいいですかね
↑このサイト初めて知ったわ。
ここで次期のPOSIX標準がだいたい把握できるんだな。
ところでxargsに-0オプションが付くかどうかってどうやって調べればいいですかね
330デフォルトの名無しさん
2018/08/27(月) 06:47:11.21ID:QAQ5xX6o331デフォルトの名無しさん
2018/08/27(月) 07:11:24.04ID:i3Gxv5eF332デフォルトの名無しさん
2018/08/27(月) 07:46:41.74ID:y2YT/eYl >>330
いやそうじゃなくてPOSIX標準に取り込まれるかどうかってことです
findの-print0オプションはこの間採用されたものの
対応するコマンドでナル文字区切りのデータを受け取れて,さらにそれを区切りとして解釈できるものが
awkくらいしかない状況なので
多くの拡張実装(BSDやGNU)で取り入れられているxargsコマンドの-0オプションが
POSIX標準にならないかな というのが知りたいのです。
そしてその情報をどう入手すればいいのか今迄分からなかったんですよ。
いやそうじゃなくてPOSIX標準に取り込まれるかどうかってことです
findの-print0オプションはこの間採用されたものの
対応するコマンドでナル文字区切りのデータを受け取れて,さらにそれを区切りとして解釈できるものが
awkくらいしかない状況なので
多くの拡張実装(BSDやGNU)で取り入れられているxargsコマンドの-0オプションが
POSIX標準にならないかな というのが知りたいのです。
そしてその情報をどう入手すればいいのか今迄分からなかったんですよ。
333デフォルトの名無しさん
2018/08/27(月) 08:12:50.85ID:gOoey+yt 次期POSIXや将来のPOSIXで入れる入れない機能みたいな議論を知りたいってことでしょうか
334デフォルトの名無しさん
2018/08/27(月) 09:26:49.88ID:y2YT/eYl >>333
その通りです 言葉が足らずもうしわけない
その通りです 言葉が足らずもうしわけない
335デフォルトの名無しさん
2018/08/27(月) 13:54:28.91ID:i3Gxv5eF336デフォルトの名無しさん
2018/08/27(月) 13:58:31.29ID:6cDpYi8T 他にもあるけど、managerはあくまでも拒否って感じ。確か2015あたりのもあるけど、同じ応えばかりw
337デフォルトの名無しさん
2018/08/27(月) 14:31:36.35ID:i3Gxv5eF 毎回 -exec {} + を書いてるよね。
でも close はされてないし、うーん この
でも close はされてないし、うーん この
338デフォルトの名無しさん
2018/08/27(月) 14:48:30.12ID:6cDpYi8T 0000251がファイル名に改行を認めるべきか認めないべきかっていうのがありの
んなのとっとと認めないでcloseすれば話が先にすすむのになって感じかなあ。議論が長いのでよくは読んではいない
んなのとっとと認めないでcloseすれば話が先にすすむのになって感じかなあ。議論が長いのでよくは読んではいない
339デフォルトの名無しさん
2018/08/27(月) 15:34:44.12ID:gOoey+yt 現代のスピード感じゃないよね(´・ω・`)
340デフォルトの名無しさん
2018/08/27(月) 20:40:23.57ID:y2YT/eYl まあ互換性の最後の砦だから 新しい機能を付け足すのに慎重になりすぎることはないのかも
341デフォルトの名無しさん
2018/08/27(月) 22:17:16.58ID:6cDpYi8T >>339
dwheelerさんが問題解決を拗らせてると見えなくもないw
ファイル名に改行を認めないで、改行をNULLの代わりにxargsが対応すれば済むような。readはマズいのかなと思うがNULLと改行が同時に必要ってあるのかな??
dwheelerさんが問題解決を拗らせてると見えなくもないw
ファイル名に改行を認めないで、改行をNULLの代わりにxargsが対応すれば済むような。readはマズいのかなと思うがNULLと改行が同時に必要ってあるのかな??
342デフォルトの名無しさん
2018/08/27(月) 22:20:04.31ID:6cDpYi8T >>341
NULL=ヌル文字'¥0'のことね。いちおう(なぞ)
NULL=ヌル文字'¥0'のことね。いちおう(なぞ)
343デフォルトの名無しさん
2018/08/27(月) 22:31:27.06ID:r0TuCFDo >>341
マルチバイト文字列の2バイト目以降に改行コードが入る可能性は?
マルチバイト文字列の2バイト目以降に改行コードが入る可能性は?
344デフォルトの名無しさん
2018/08/27(月) 22:36:28.15ID:6cDpYi8T >>343
議論でEBICDICでとかあったが、そんなのももういらないUnicodeでいいやんここ(5ch)もいい加減Shift-JISを捨ててUnicodeにしやがれっ
あるの?知らん。あったら他でも問題あったりするんじゃないのかなあ。dwheelerさんもそんな感じで重箱の隅的なwなのになぜか-0や-print0はええやん的な
議論でEBICDICでとかあったが、そんなのももういらないUnicodeでいいやんここ(5ch)もいい加減Shift-JISを捨ててUnicodeにしやがれっ
あるの?知らん。あったら他でも問題あったりするんじゃないのかなあ。dwheelerさんもそんな感じで重箱の隅的なwなのになぜか-0や-print0はええやん的な
345デフォルトの名無しさん
2018/08/27(月) 22:39:24.93ID:i3Gxv5eF346デフォルトの名無しさん
2018/08/27(月) 22:59:48.13ID:zX+eejgv COLUMNS LINES でいいわけがない
xtermみたいなターミナルエミュレータでも普通にリサイズされるからな
しらん間にサイズが変更されるttyなんかいくらでもある
ttyのサイズについて、常に正しい値を取得したい場合は
常にttyのサイズが変更されたシグナル(SIGWINCH)を受け取るようにして
毎回、COLUMNS LINESの環境変数を更新し続けるとか工夫しないと難しい
↓こんな感じのやりかた
trap 'COLUMNS=$(tput cols) LINES=$(tput lines)' WINCH
あとはioctrlでTIOCGWINSZをじかにとるぐらいしか思い付かない
xtermみたいなターミナルエミュレータでも普通にリサイズされるからな
しらん間にサイズが変更されるttyなんかいくらでもある
ttyのサイズについて、常に正しい値を取得したい場合は
常にttyのサイズが変更されたシグナル(SIGWINCH)を受け取るようにして
毎回、COLUMNS LINESの環境変数を更新し続けるとか工夫しないと難しい
↓こんな感じのやりかた
trap 'COLUMNS=$(tput cols) LINES=$(tput lines)' WINCH
あとはioctrlでTIOCGWINSZをじかにとるぐらいしか思い付かない
347デフォルトの名無しさん
2018/08/27(月) 23:13:57.46ID:6cDpYi8T >>346
俺の環境では、COLUMNS LINES が自動で変わるけどな。サーバーにssh接続して、クライアントでウィンドウサイズ変えても、ちゃんとサーバー側shellでのCOLUMNS LINESは
ので、それが当たり前かと思ってたよw xtermでもやりゃできるんじゃないのってか、そんな古いのは対応しないのかな
俺の環境では、COLUMNS LINES が自動で変わるけどな。サーバーにssh接続して、クライアントでウィンドウサイズ変えても、ちゃんとサーバー側shellでのCOLUMNS LINESは
ので、それが当たり前かと思ってたよw xtermでもやりゃできるんじゃないのってか、そんな古いのは対応しないのかな
348デフォルトの名無しさん
2018/08/27(月) 23:16:22.70ID:6cDpYi8T xtermでもちゃんとCOLUMNS LINESがリアルタイムに変わるやんけっ!
349デフォルトの名無しさん
2018/08/27(月) 23:18:21.35ID:zX+eejgv いやsshでの接続なら普通に対応してるからな
350デフォルトの名無しさん
2018/08/27(月) 23:21:50.19ID:6cDpYi8T なるほど!逆にローカルでは何もしないのか。なるほど。なんでやねんっ!xtermのせいか
351デフォルトの名無しさん
2018/08/27(月) 23:23:01.18ID:zX+eejgv xtermが対応してるとか
そういう問題じゃないからな
ttyはただのダム端末だからな
xtermみたいにサイズを変更できるターミナルがあって
それに対応できるかどうかという問題になる
そういう問題じゃないからな
ttyはただのダム端末だからな
xtermみたいにサイズを変更できるターミナルがあって
それに対応できるかどうかという問題になる
352デフォルトの名無しさん
2018/08/27(月) 23:25:15.75ID:6cDpYi8T TTYの幅とかの概念あるの?行はまず無いでしょ。TTYの話じゃないよ
Terminalアプリでローカルでもちゃんとしているのはあるけど?
Terminalアプリでローカルでもちゃんとしているのはあるけど?
353デフォルトの名無しさん
2018/08/27(月) 23:29:04.05ID:zX+eejgv ただな幅の情報が取得できないと
cursorライブラリなんか使えない
ウィンドウサイズが端末の幅とか関係なく
好き放題サイズを設定できるとしても
使いようがない
cursorライブラリなんか使えない
ウィンドウサイズが端末の幅とか関係なく
好き放題サイズを設定できるとしても
使いようがない
354デフォルトの名無しさん
2018/08/27(月) 23:31:24.22ID:zX+eejgv ターミナルはエコーされた文字を
標準出力や標準エラー出力に出力するだけだからな
標準出力や標準エラー出力に出力するだけだからな
355デフォルトの名無しさん
2018/08/27(月) 23:33:24.56ID:6cDpYi8T いやいや...いやいや...
xterm前提とか、今何使ってるの??
xterm前提とか、今何使ってるの??
356デフォルトの名無しさん
2018/08/27(月) 23:34:19.94ID:zX+eejgv オレはxtermを例にあげただけで
xtermだけじゃない
puttyでもTeratermでもなんでもいい
xtermだけじゃない
puttyでもTeratermでもなんでもいい
357デフォルトの名無しさん
2018/08/27(月) 23:35:13.23ID:zX+eejgv 昔のwindowsに附属してた
telnetでもいい
telnetでもいい
358デフォルトの名無しさん
2018/08/27(月) 23:36:58.83ID:6cDpYi8T あー...
ちょっとLinuxのでも使ってみ。今時は違うから。まあ、そゆのも対象にしたら使えないかもね
ちょっとLinuxのでも使ってみ。今時は違うから。まあ、そゆのも対象にしたら使えないかもね
359デフォルトの名無しさん
2018/08/27(月) 23:38:30.97ID:6cDpYi8T telnetって...
まあ、そんな古いのを対象にしたらそかもね。なにかPOSIXの貧弱さに通じるものがあるなw
まあ、そんな古いのを対象にしたらそかもね。なにかPOSIXの貧弱さに通じるものがあるなw
360デフォルトの名無しさん
2018/08/27(月) 23:39:06.12ID:zX+eejgv むしろ物理コンソールで計算機さわることのほうが希だからな
まずサーバーだったらxなんか立ちあげることなんかありえないから
xを使うようターミナルエミュレータを使う機会なんかまずない
まずサーバーだったらxなんか立ちあげることなんかありえないから
xを使うようターミナルエミュレータを使う機会なんかまずない
361デフォルトの名無しさん
2018/08/27(月) 23:40:16.59ID:zX+eejgv 趣味や遊びで使う分にはいいかもしれないどな
仕事で使う場合そんな使い方はまずしない
仕事で使う場合そんな使い方はまずしない
362デフォルトの名無しさん
2018/08/27(月) 23:40:52.92ID:6cDpYi8T だったら、今時はssh接続一択じゃないんじゃないかなあ。それで万事解決のようなww
puttyでもTeratermでもssh接続ならちゃんとしているのでしょ?
puttyでもTeratermでもssh接続ならちゃんとしているのでしょ?
363デフォルトの名無しさん
2018/08/27(月) 23:42:31.94ID:6cDpYi8T 仕事ならなおさらssh接続一択のような。まあ、仕事では未だにtelnetでしかとかいうとこがあるかもしれないが、そうじゃないのは趣味や遊びと決めつけるあたり、ホントに仕事でやってんの?と疑問
364デフォルトの名無しさん
2018/08/27(月) 23:43:41.66ID:zX+eejgv わかったか
オマエがニートだと思ったから
それようの書き方してる
わかってしまうのが怖い
オマエがニートだと思ったから
それようの書き方してる
わかってしまうのが怖い
365デフォルトの名無しさん
2018/08/27(月) 23:44:35.56ID:6cDpYi8T 意味わからん。自信たっぷりだね。それだけはわかるw
366デフォルトの名無しさん
2018/08/27(月) 23:48:48.71ID:zX+eejgv telnet(オレはターミナルの例としてあげただけだ)はないにしても
xサーバーたちあげることはまずない
そんなもん使ってみればいいとか勧めてるいってる時点でな
残念なことに大体察しはつく
xサーバーたちあげることはまずない
そんなもん使ってみればいいとか勧めてるいってる時点でな
残念なことに大体察しはつく
367デフォルトの名無しさん
2018/08/27(月) 23:50:47.78ID:6cDpYi8T Xサーバー??何を言っているのか。Windows前提絶対でモノ言っているでしょ?Windowsつかわなきゃ仕事じゃないと言っているわけ??
Windowsでウィンドウシステムが起動してそれを使ってるのと同じだよ。Windows以外でも
Windowsでウィンドウシステムが起動してそれを使ってるのと同じだよ。Windows以外でも
368デフォルトの名無しさん
2018/08/27(月) 23:54:58.42ID:6cDpYi8T てか、なんでこのスレでWindows前提絶対やねんっ。別にいいけど、他の作業環境を知らない認めないのはナイな
369デフォルトの名無しさん
2018/08/27(月) 23:59:33.83ID:zX+eejgv なにをいってるのか って?
オマエがいってることが意味がわからんわ
Xサーバーたちあげないで
どうやってそのUNIXライクな計算機のwindowを表示するワケ
なにも分かってない頭悪いのが使ったつもりになってるのが分かったわ
コレはもう確定
オマエがいってることが意味がわからんわ
Xサーバーたちあげないで
どうやってそのUNIXライクな計算機のwindowを表示するワケ
なにも分かってない頭悪いのが使ったつもりになってるのが分かったわ
コレはもう確定
370デフォルトの名無しさん
2018/08/28(火) 00:04:36.83ID:Hq0PMDIz Linuxデスクトップでは普通に起動するでしょ?別に起動するって意識しなくて。Windowsでウィンドウシステムが起動しているのと同じだよ
このスレなんだから、Linuxメインで使っているのいてもおかしくもなんもないだろうにってことだけど?
Linuxを勧めるから仕事じゃないってw 俺のはLinuxでもWindowsでもないけど仕事でもよく/それなりに使われているんだけどなあ
このスレなんだから、Linuxメインで使っているのいてもおかしくもなんもないだろうにってことだけど?
Linuxを勧めるから仕事じゃないってw 俺のはLinuxでもWindowsでもないけど仕事でもよく/それなりに使われているんだけどなあ
371デフォルトの名無しさん
2018/08/28(火) 00:09:02.63ID:hby/BPp+ Linuxデスクトップとな。。。
ちなみにX端末ってなにかわかる?
ちなみにX端末ってなにかわかる?
372デフォルトの名無しさん
2018/08/28(火) 00:10:09.47ID:Hq0PMDIz どういう意味での?X端末は何もしないでXサーバが処理をするとかいう??
373デフォルトの名無しさん
2018/08/28(火) 00:12:57.46ID:Hq0PMDIz なんか老害?自分の古い知識でそれ前提絶対的なwもっと視野を広げた方がいいような。コンピュータ好きなら
374デフォルトの名無しさん
2018/08/28(火) 00:13:46.49ID:hby/BPp+ まあた始まった
クソニートなの
もうバレてんのに
クソニートなの
もうバレてんのに
375デフォルトの名無しさん
2018/08/28(火) 00:15:11.79ID:Hq0PMDIz376デフォルトの名無しさん
2018/08/28(火) 00:24:53.71ID:SLlsMMxP さて、便秘薬でも飲むとするか
377デフォルトの名無しさん
2018/08/28(火) 00:31:12.44ID:ZccLN8yq え? テレタイプ(TeleTYpe)がどうしたって?
378デフォルトの名無しさん
2018/08/28(火) 06:15:37.18ID:xeMH1v/N 半角くん、こっちにいたのか。
よかったら「cursorライブラリ」のことを教えてくれないか?
curses なら知ってるんだが、俺は無知なんだ。
よかったら「cursorライブラリ」のことを教えてくれないか?
curses なら知ってるんだが、俺は無知なんだ。
379デフォルトの名無しさん
2018/08/28(火) 06:39:27.97ID:gikJ8/5D >>378
やめてさしあげろw
やめてさしあげろw
380デフォルトの名無しさん
2018/08/28(火) 09:10:20.79ID:yK6EJuSE ウィンドウサイズ変えてもCOLUMNS LINESに正しい値が入ってるのは
親プロセスである対話的シェルがSIGWINCHハンドラで設定してくれてるからでしょ。
太古の昔の商用UNIXの/bin/shは設定してくれなかった気がする。
現代でも親プロセスがシェルじゃない場合には、
正しく設定されてない可能性がある。
まあシェルスクリプトならCOLUMNS LINES がもし設定されていれば
それを使えばいいとは思うけどね。
親プロセスである対話的シェルがSIGWINCHハンドラで設定してくれてるからでしょ。
太古の昔の商用UNIXの/bin/shは設定してくれなかった気がする。
現代でも親プロセスがシェルじゃない場合には、
正しく設定されてない可能性がある。
まあシェルスクリプトならCOLUMNS LINES がもし設定されていれば
それを使えばいいとは思うけどね。
381デフォルトの名無しさん
2018/08/28(火) 10:39:39.47ID:gikJ8/5D ていうかCOLUMNS環境変数とかは設定されるべきとの勧告があるのか。
382デフォルトの名無しさん
2018/08/28(火) 18:07:03.95ID:+71nChns シェルスクリプトで引数を取り扱ういい方法はないでしょうか?
getoptとかgetoptsがあるのは知っています。
ですが、例えば cp みたいに、cp -a a b とかけるが
cp a -a b や cp a b -a というふうにオプションの順番を入れ替えても動くとか
gitみたいにサブコマンドが使えて、
git --no-pager log --stat のように--no-pagerはgitのオプション、
--statはlogのオプションみたいにする方法がよくわかりません
頑張ればできると思いますが、複雑になりそうです。
なにかいい方法はないでしょうか?
なお他言語を使うとか言うのは禁止です。
getoptとかgetoptsがあるのは知っています。
ですが、例えば cp みたいに、cp -a a b とかけるが
cp a -a b や cp a b -a というふうにオプションの順番を入れ替えても動くとか
gitみたいにサブコマンドが使えて、
git --no-pager log --stat のように--no-pagerはgitのオプション、
--statはlogのオプションみたいにする方法がよくわかりません
頑張ればできると思いますが、複雑になりそうです。
なにかいい方法はないでしょうか?
なお他言語を使うとか言うのは禁止です。
383デフォルトの名無しさん
2018/08/28(火) 18:11:08.70ID:+71nChns 忘れてましたが、 ls ーal でも ls ーla みたいな書き方にも対応したいし、
git --exec-path=path でも git --exec-path path でも良かったりとか
git --exec-path でもOKとか、みんなどうやって引数解析してるんでしょうか?
git --exec-path=path でも git --exec-path path でも良かったりとか
git --exec-path でもOKとか、みんなどうやって引数解析してるんでしょうか?
384デフォルトの名無しさん
2018/08/28(火) 19:06:24.55ID:C1AWmFJx みんなは頑張ってやっている。
頑張らないでやる方法は他の言語とライブラリを使う。
頑張らないでやる方法は他の言語とライブラリを使う。
385デフォルトの名無しさん
2018/08/28(火) 21:17:43.19ID:gikJ8/5D あなたとしてはgetopt(1)はシェルスクリプトとは別の言語ではないのかな?
思いきり外部コマンドなんだけど……。
思いきり外部コマンドなんだけど……。
386デフォルトの名無しさん
2018/08/28(火) 21:23:37.21ID:+71nChns POSIXできまっていて、どの環境にも入ってるものならOKです。
387デフォルトの名無しさん
2018/08/28(火) 21:30:00.13ID:Hq0PMDIz Cで書かれたものを例に出している時点で変だけどな。それで他言語を使うとか言うのは禁止とか
まあ、シェルスクリプトでも頑張ってる人はググればすぐ出てくるな
まあ、シェルスクリプトでも頑張ってる人はググればすぐ出てくるな
388デフォルトの名無しさん
2018/08/28(火) 21:41:08.24ID:gikJ8/5D389デフォルトの名無しさん
2018/08/28(火) 21:42:55.17ID:gikJ8/5D オプション解析とはまったく関係ないんだが
確かこのスレかその前あたりでaliasの可能性について論じてた人がいたよね
あれどうなったのかな。個人的にすごく興味がある。
確かこのスレかその前あたりでaliasの可能性について論じてた人がいたよね
あれどうなったのかな。個人的にすごく興味がある。
390デフォルトの名無しさん
2018/08/28(火) 21:44:16.50ID:tpGA+DOm >なお他言語を使うとか言うのは禁止です。
ずいぶん偉そうだね
ずいぶん偉そうだね
391デフォルトの名無しさん
2018/08/28(火) 21:45:59.04ID:ZccLN8yq 原理主義者クサイ
392デフォルトの名無しさん
2018/08/28(火) 21:54:24.12ID:Hq0PMDIz ロングオプションはgetopt_longでかなり幸せになっているよう。POSIXには(まだ)入っていない
gitは、まあ、大変。読む気は無くなるw
https://github.com/git/git/blob/master/git.c
CではCでも
gitは、まあ、大変。読む気は無くなるw
https://github.com/git/git/blob/master/git.c
CではCでも
393デフォルトの名無しさん
2018/08/28(火) 22:09:30.12ID:+71nChns394デフォルトの名無しさん
2018/08/28(火) 22:13:41.39ID:Hq0PMDIz どういうネタやねんwまあ、頑張りや
395デフォルトの名無しさん
2018/08/28(火) 22:19:33.48ID:gikJ8/5D >>393
もうちょっと勉強したら?
俺 学部生だぜ? ガキに知識で負けてくやしいよね?
OpenGroupっていうのはさ POSIXを制定している企業なんだわ。
つまりそこがPOSIX標準を定めてるってこと。
だからgetopt(3)はPOSIXに準拠したオプション解析器ってことだ。
どう? 理解した? これでも分からなきゃ相当 馬鹿 だなお前は。
もうちょっと勉強したら?
俺 学部生だぜ? ガキに知識で負けてくやしいよね?
OpenGroupっていうのはさ POSIXを制定している企業なんだわ。
つまりそこがPOSIX標準を定めてるってこと。
だからgetopt(3)はPOSIXに準拠したオプション解析器ってことだ。
どう? 理解した? これでも分からなきゃ相当 馬鹿 だなお前は。
396デフォルトの名無しさん
2018/08/28(火) 22:21:11.28ID:Hq0PMDIz そうムキにならんくていいだろう。>>393なんて人はいない、ネタネタ
397デフォルトの名無しさん
2018/08/28(火) 22:36:33.43ID:+71nChns398デフォルトの名無しさん
2018/08/28(火) 22:41:19.86ID:+71nChns >>387
> Cで書かれたものを例に出している時点で変だけどな。
それな。C言語の話もしてないのに、
なんでそれ持ってきたのかもわからん
なんか根本的なところで勘違いしてる気がする。
まあ所詮学生だしな
> Cで書かれたものを例に出している時点で変だけどな。
それな。C言語の話もしてないのに、
なんでそれ持ってきたのかもわからん
なんか根本的なところで勘違いしてる気がする。
まあ所詮学生だしな
399デフォルトの名無しさん
2018/08/28(火) 22:47:19.25ID:Hq0PMDIz400デフォルトの名無しさん
2018/08/28(火) 22:49:42.88ID:+71nChns >>399
え?なに?つーことはお前もずれてるじゃん
gitのようなオプション(つまりgitは例)を
シェルスクリプトで解析するって話なのに
なんでgitはC言語でかかれていますーなんて話になるの?
意味がわからんが、説明できる?
(学生さんは図星だったようでだまっちゃったみたいだけどさw)
え?なに?つーことはお前もずれてるじゃん
gitのようなオプション(つまりgitは例)を
シェルスクリプトで解析するって話なのに
なんでgitはC言語でかかれていますーなんて話になるの?
意味がわからんが、説明できる?
(学生さんは図星だったようでだまっちゃったみたいだけどさw)
401デフォルトの名無しさん
2018/08/28(火) 22:53:12.08ID:Hq0PMDIz Cで書かれてるのを例に出してるんだから、Cでまずはだろう。そこすっとばして、どうやってんのシェルでって意味通じないよ
てか、ちょっと素が出てきてるねえって感じ。ご苦労さん。なにしたいねん
てか、ちょっと素が出てきてるねえって感じ。ご苦労さん。なにしたいねん
402デフォルトの名無しさん
2018/08/28(火) 22:54:52.38ID:+71nChns403デフォルトの名無しさん
2018/08/28(火) 22:57:40.65ID:+71nChns もしかして、オプションの例として、gitのこういうオプションを
シェルスクリプト取り扱いたいですって言ったから、
C言語の話をしてると思ったの?
シェルスクリプト取り扱いたいですって言ったから、
C言語の話をしてると思ったの?
404デフォルトの名無しさん
2018/08/28(火) 23:00:52.68ID:Hq0PMDIz マジなのか?うそだろーw
>gitみたいにサブコマンドが使えて、
>git --no-pager log --stat のように--no-pagerはgitのオプション、
>--statはlogのオプションみたいにする方法がよくわかりません
gitのをしたいんでしょ?する方法がよくわかりませんって、Cでやってるとこを言っているんでしょ?
ロングオプションにしたってそう。Cでやってることをどうやってるって聞いてんだから、Cの話だろうに
あえてあんたよりにすると、「シェルで実現するにはどうしたらいいですか、または、可能ですか?」だな
>gitみたいにサブコマンドが使えて、
>git --no-pager log --stat のように--no-pagerはgitのオプション、
>--statはlogのオプションみたいにする方法がよくわかりません
gitのをしたいんでしょ?する方法がよくわかりませんって、Cでやってるとこを言っているんでしょ?
ロングオプションにしたってそう。Cでやってることをどうやってるって聞いてんだから、Cの話だろうに
あえてあんたよりにすると、「シェルで実現するにはどうしたらいいですか、または、可能ですか?」だな
405デフォルトの名無しさん
2018/08/28(火) 23:02:58.05ID:+71nChns > gitのをしたいんでしょ?する方法がよくわかりませんって、Cでやってるとこを言っているんでしょ?
だからgitがCでやっているようなことを
シェリスクリプトでやりたいんですが?
> Cでやってることをどうやってるって聞いてんだから、Cの話だろうに
Cでやってることを(シェルスクリプトで)どうやるって聞いてんだから、シェルスクリプトの話だろうに
あと>>2を読もう
> ・シェルスクリプトのことをシェルってゆうな
はぁ、レベルの低いやつに目をつけあられたな
日本語もろくに理解できてない
だからgitがCでやっているようなことを
シェリスクリプトでやりたいんですが?
> Cでやってることをどうやってるって聞いてんだから、Cの話だろうに
Cでやってることを(シェルスクリプトで)どうやるって聞いてんだから、シェルスクリプトの話だろうに
あと>>2を読もう
> ・シェルスクリプトのことをシェルってゆうな
はぁ、レベルの低いやつに目をつけあられたな
日本語もろくに理解できてない
406デフォルトの名無しさん
2018/08/28(火) 23:03:17.46ID:Hq0PMDIz407デフォルトの名無しさん
2018/08/28(火) 23:04:02.06ID:Hq0PMDIz 会話にならない。俺が悪いのか??w
408デフォルトの名無しさん
2018/08/28(火) 23:06:22.48ID:+71nChns > 頑張ればできると思いますが、複雑になりそうです。
と書いてるのに、
複雑になるのが嫌だということも読めていないようだ
Cのコードがシンプルならまだしも、複雑なものを見せて
シェルスクリプトでもCのまねして書け。複雑に書け
とか、全然答えになってないですわ
と書いてるのに、
複雑になるのが嫌だということも読めていないようだ
Cのコードがシンプルならまだしも、複雑なものを見せて
シェルスクリプトでもCのまねして書け。複雑に書け
とか、全然答えになってないですわ
409デフォルトの名無しさん
2018/08/28(火) 23:06:39.91ID:Hq0PMDIz410デフォルトの名無しさん
2018/08/28(火) 23:06:43.85ID:+71nChns >>407
はい
はい
411デフォルトの名無しさん
2018/08/28(火) 23:07:59.71ID:Hq0PMDIz412デフォルトの名無しさん
2018/08/28(火) 23:10:58.04ID:+71nChns ん?まさかと思うが、git "みたいな" オプションを使いたいって話を
例だとわからずに、本当にgitのオプションをそのまま扱うとか
勘違いしてないか?
一行目に
> シェルスクリプトで引数を取り扱ういい方法はないでしょうか?
と書いてあるから、間違うわけ無いと思うが?
> gitみたいにサブコマンドが使えて、
と書いてるのに「みたい」って文字を見逃して、
まんまgitのオプションを扱う方法だと思いこんで、
gitのオプション扱うなら、C言語のソースみればいいだろとか?
うわー、そう理解してしまうのは本気でやばい。ダメな方に意味でやばい
例だとわからずに、本当にgitのオプションをそのまま扱うとか
勘違いしてないか?
一行目に
> シェルスクリプトで引数を取り扱ういい方法はないでしょうか?
と書いてあるから、間違うわけ無いと思うが?
> gitみたいにサブコマンドが使えて、
と書いてるのに「みたい」って文字を見逃して、
まんまgitのオプションを扱う方法だと思いこんで、
gitのオプション扱うなら、C言語のソースみればいいだろとか?
うわー、そう理解してしまうのは本気でやばい。ダメな方に意味でやばい
413デフォルトの名無しさん
2018/08/28(火) 23:12:22.86ID:Hq0PMDIz モノホンだったら怖過ぎですよ
414デフォルトの名無しさん
2018/08/28(火) 23:14:57.35ID:+71nChns 仕切り直すわ。なんでこの文章で理解できないのかわからないが、
ちゃんと補足する。
シェルスクリプトで引数を取り扱ういい方法はないでしょうか?
getoptとかgetoptsがあるのは知っています。
くり返しいいます。
getoptとかgetoptsがあるのは知っています。
ですが、例えば cp みたいに、cp -a a b とかけるが
cp a -a b や cp a b -a というふうにオプションの順番を入れ替えても動くとか
(もちろんcpは例です。cpみたいなと言ってるわけで、cpのオプションを
扱いたいなんて言っていません)
gitみたいにサブコマンドが使えて、
git --no-pager log --stat のように--no-pagerはgitのオプション、
--statはlogのオプションみたいにする方法がよくわかりません
(もちろんgitは例です。gitみたいなと言ってるわけで、gitのオプションを
扱いたいなんて言っていません)
頑張ればできると思いますが、複雑になりそうです。
(gitのC言語のソースのような複雑なコードは書きたくないです)
なにかいい方法はないでしょうか?
なお他言語を使うとか言うのは禁止です。
ちゃんと補足する。
シェルスクリプトで引数を取り扱ういい方法はないでしょうか?
getoptとかgetoptsがあるのは知っています。
くり返しいいます。
getoptとかgetoptsがあるのは知っています。
ですが、例えば cp みたいに、cp -a a b とかけるが
cp a -a b や cp a b -a というふうにオプションの順番を入れ替えても動くとか
(もちろんcpは例です。cpみたいなと言ってるわけで、cpのオプションを
扱いたいなんて言っていません)
gitみたいにサブコマンドが使えて、
git --no-pager log --stat のように--no-pagerはgitのオプション、
--statはlogのオプションみたいにする方法がよくわかりません
(もちろんgitは例です。gitみたいなと言ってるわけで、gitのオプションを
扱いたいなんて言っていません)
頑張ればできると思いますが、複雑になりそうです。
(gitのC言語のソースのような複雑なコードは書きたくないです)
なにかいい方法はないでしょうか?
なお他言語を使うとか言うのは禁止です。
415デフォルトの名無しさん
2018/08/28(火) 23:17:00.32ID:gikJ8/5D416デフォルトの名無しさん
2018/08/28(火) 23:17:57.87ID:+71nChns >>415
gitは忘れてください
gitは忘れてください
417デフォルトの名無しさん
2018/08/28(火) 23:18:19.53ID:+71nChns gitの話はしていません。オプションの話をしています。
418デフォルトの名無しさん
2018/08/28(火) 23:19:04.23ID:gikJ8/5D だいたいgitがどうやってオプション解析してるかも知らずに
よくもまあぬけぬけと「getoptは使わない方針で」と言えたもんだな
いままでそんなゴミみたいな思考回路で生きてきて恥かしくないのかね
よくもまあぬけぬけと「getoptは使わない方針で」と言えたもんだな
いままでそんなゴミみたいな思考回路で生きてきて恥かしくないのかね
419デフォルトの名無しさん
2018/08/28(火) 23:19:26.80ID:Hq0PMDIz420デフォルトの名無しさん
2018/08/28(火) 23:20:08.62ID:gikJ8/5D421デフォルトの名無しさん
2018/08/28(火) 23:20:31.97ID:Hq0PMDIz >>418
直球だなああ。若いなww(しつれい)
直球だなああ。若いなww(しつれい)
422デフォルトの名無しさん
2018/08/28(火) 23:20:43.63ID:+71nChns423デフォルトの名無しさん
2018/08/28(火) 23:21:17.44ID:+71nChns424デフォルトの名無しさん
2018/08/28(火) 23:21:55.96ID:gikJ8/5D あーあ。
オプション解析なんてみんながやってることで
そしてそのノウハウもかなり溜ってるんだから
質問の仕方さえ間違えなければすぐさま希望する答えが手に入ったのにね
もったいない
お前のような人間はこれからずっと人生負け組だよww
オプション解析なんてみんながやってることで
そしてそのノウハウもかなり溜ってるんだから
質問の仕方さえ間違えなければすぐさま希望する答えが手に入ったのにね
もったいない
お前のような人間はこれからずっと人生負け組だよww
425デフォルトの名無しさん
2018/08/28(火) 23:22:44.60ID:gikJ8/5D >>423
お前に足りないのは脳味噌と他人に対する配慮だよボケ
お前に足りないのは脳味噌と他人に対する配慮だよボケ
426デフォルトの名無しさん
2018/08/28(火) 23:23:09.32ID:+71nChns >>424
お前何がしたいの?
お前何がしたいの?
427デフォルトの名無しさん
2018/08/28(火) 23:23:35.87ID:+71nChns428デフォルトの名無しさん
2018/08/29(水) 05:00:00.96ID:byfOgvI+ 他板でもそうですが回答側がアレですねw
夏休みで低年齢層が増えていたからでしょうか。
夏休みで低年齢層が増えていたからでしょうか。
429デフォルトの名無しさん
2018/08/29(水) 08:40:49.02ID:JKfxUNfw IDやワッチョイのつけられる板に越してきた理由が、
こういう感じの無意味な応酬が目に余ったからだしな。
知性はあっても子供だよね。
IDがあってホント良かったよ。
こういう感じの無意味な応酬が目に余ったからだしな。
知性はあっても子供だよね。
IDがあってホント良かったよ。
430デフォルトの名無しさん
2018/08/29(水) 08:56:49.98ID:ND6xKvzt >>414 お願いします。
431デフォルトの名無しさん
2018/08/29(水) 10:36:23.57ID:jDyQ3/+0 >>430
ない
ない
432デフォルトの名無しさん
2018/08/29(水) 14:43:49.86ID:dthpACHL433デフォルトの名無しさん
2018/08/29(水) 14:46:35.77ID:jUkhBS20 誰か414を3行にまとめてくれ
434デフォルトの名無しさん
2018/08/29(水) 14:51:01.95ID:ND6xKvzt シェルスクリプトで引数を取り扱ういい方法はないでしょうか?
getoptとかgetoptsがあるのは知っています。
頑張ればできると思いますが、複雑になりそうです。
getoptとかgetoptsがあるのは知っています。
頑張ればできると思いますが、複雑になりそうです。
435デフォルトの名無しさん
2018/08/29(水) 15:14:53.45ID:AXEWk4o3 getoptとかgetoptsで頑張るのがいいと思います
436デフォルトの名無しさん
2018/08/29(水) 15:29:00.41ID:jUkhBS20 getoptとかgetoptsで頑張るのがいいと思います
437デフォルトの名無しさん
2018/08/29(水) 16:01:13.07ID:Nn5B1KsW getoptとかgetoptsで頑張るのがいいと思います
438デフォルトの名無しさん
2018/08/29(水) 16:14:32.69ID:U+j3n810 getoptとかgetoptsで頑張るのがいいと思います
439デフォルトの名無しさん
2018/08/29(水) 17:01:53.59ID:rEBrQhP5 人生、時には諦める事も必要
440デフォルトの名無しさん
2018/08/29(水) 17:22:27.53ID:zGukP1bd 良いプログラマーとは、楽をする為に労力を惜しまないそうです
今回はその労力をここでの問答に費やす訳ですから
粘り強く頑張って頂ければ良いのかなと思いました
今回はその労力をここでの問答に費やす訳ですから
粘り強く頑張って頂ければ良いのかなと思いました
441デフォルトの名無しさん
2018/08/29(水) 20:56:07.12ID:zRPnCBM0 なにもしないのが一番楽
やっぱりアホしかいないわ
やっぱりアホしかいないわ
442デフォルトの名無しさん
2018/08/29(水) 21:02:14.84ID:zfnELSlX と、アホが申してます
443デフォルトの名無しさん
2018/08/29(水) 21:41:17.05ID:ySrrhl3u ム版に引っ越してきたばかりにム版の厄介者にいつかれちまったな
444デフォルトの名無しさん
2018/08/29(水) 21:45:29.75ID:PHlZ4Qkz ゆうめいじんなのか。なるほど
445デフォルトの名無しさん
2018/08/29(水) 21:46:04.98ID:jUkhBS20 まぁIDすらなかった頃に比べれば顔真っ赤が判別できるのは助かるわ
446デフォルトの名無しさん
2018/08/29(水) 23:58:23.02ID:U+j3n810 要求の多いお兄ちゃんは、結局何もしないの?
447デフォルトの名無しさん
2018/08/30(木) 09:43:05.13ID:Le3eFjin しかし引数解析ってそんなに頑張らなくても自作できるよなあ。面倒なだけで。
448デフォルトの名無しさん
2018/08/30(木) 09:45:01.72ID:rxoSSaq5 だから面倒なのがいやなんだろ?それぐらいわかれよ
449デフォルトの名無しさん
2018/08/30(木) 09:49:03.76ID:5UlR9u+e 引数解析そのものを諦めて別の手段にするとか
450デフォルトの名無しさん
2018/08/30(木) 10:11:57.74ID:lJFNKW+A 引数解析って
prog -abcde
とかもできるの?
prog -a -b -c -d
とかしかできないの?
prog -abcde
とかもできるの?
prog -a -b -c -d
とかしかできないの?
451デフォルトの名無しさん
2018/08/30(木) 10:26:46.95ID:DLN02TyK 好きに作ればよくね
452デフォルトの名無しさん
2018/08/30(木) 10:57:16.78ID:8BsM3ej5 >>450
普通にできるてかしてくれる。てかそれぐらいちょっと調べればわかること
普通にできるてかしてくれる。てかそれぐらいちょっと調べればわかること
453デフォルトの名無しさん
2018/08/30(木) 11:05:59.54ID:rxoSSaq5 ちょっと調べたけど
https://qiita.com/b4b4r07/items/dcd6be0bb9c9185475bb
ロングオプションが使えないgetoptsか
--longと書いたら-oと誤爆するgetopsしか
見つからなかった
「普通にできる」とはどういうこと?
https://qiita.com/b4b4r07/items/dcd6be0bb9c9185475bb
ロングオプションが使えないgetoptsか
--longと書いたら-oと誤爆するgetopsしか
見つからなかった
「普通にできる」とはどういうこと?
454デフォルトの名無しさん
2018/08/30(木) 11:12:04.78ID:rxoSSaq5 > --longと書いたら-oと誤爆するgetopsしか
--は先に除外すればできるか。リンク先のコードではダメだけど
あとgetopt。これはbashだから、caseの二段構成にするしかないんかな
これを「普通にできる」とは思わんけど
--は先に除外すればできるか。リンク先のコードではダメだけど
あとgetopt。これはbashだから、caseの二段構成にするしかないんかな
これを「普通にできる」とは思わんけど
455デフォルトの名無しさん
2018/08/30(木) 11:13:00.09ID:8BsM3ej5 getoptはGNUとBSDでは別物。GNUのはロングオプションに対応してる。誤爆って?
getoptsはKorn/POSIX シェル組み込みコマンド(らしい)。ロングオプションは使えないが>>450を「普通」にやってくれる
ロングオプションと羅列を混同してるのか??
getoptsはKorn/POSIX シェル組み込みコマンド(らしい)。ロングオプションは使えないが>>450を「普通」にやってくれる
ロングオプションと羅列を混同してるのか??
456デフォルトの名無しさん
2018/08/30(木) 11:17:10.20ID:rxoSSaq5 やっぱりデメリットあるのか。
ロングオプションが使えないのはだめだね
できるけど、べつのことができない
ロングオプションが使えないのはだめだね
できるけど、べつのことができない
457デフォルトの名無しさん
2018/08/30(木) 11:17:50.50ID:8BsM3ej5 なにを言いたいのだか
458デフォルトの名無しさん
2018/08/30(木) 11:22:47.19ID:KGeBif2I やはりそういうことか
459デフォルトの名無しさん
2018/08/30(木) 11:24:37.49ID:rxoSSaq5 例えて言うなら、ケーキ食べられる?って聞いて
普通に食べられる(だけどパンは食べられないけどね)
みたいだなーってことだよ
確かにケーキ食べられる?が質問だし、食べられるのだろけど
それ以前のできて当然のものができないっていうのは
がっかりするしか無いなぁってこと
普通に食べられる(だけどパンは食べられないけどね)
みたいだなーってことだよ
確かにケーキ食べられる?が質問だし、食べられるのだろけど
それ以前のできて当然のものができないっていうのは
がっかりするしか無いなぁってこと
460デフォルトの名無しさん
2018/08/30(木) 11:25:04.80ID:KGeBif2I うん
うん?
うん?
461デフォルトの名無しさん
2018/08/30(木) 11:26:42.89ID:8BsM3ej5 トンチキが横入りして勝手に俺の思ってたのと違うっていうのか。知らんがな
462デフォルトの名無しさん
2018/08/30(木) 11:28:00.65ID:rxoSSaq5 こういうふうに、話の流れから当然だろ?と思うことも
いちいち全部言わないと、話ができないってのは
アスペなんだろうなって思う
いちいち全部言わないと、話ができないってのは
アスペなんだろうなって思う
463デフォルトの名無しさん
2018/08/30(木) 11:30:29.24ID:8BsM3ej5 それはあんたの勝手な話の流れの解釈だな
俺は、>>450は今までとは違う初心者のぶっ込みでしかないと思うけど。ある意味新たな
てか、本題はもう終わってるだろう?あんたの勘違いでwそれを認めたくなくダラダラなだけだな
俺は、>>450は今までとは違う初心者のぶっ込みでしかないと思うけど。ある意味新たな
てか、本題はもう終わってるだろう?あんたの勘違いでwそれを認めたくなくダラダラなだけだな
464デフォルトの名無しさん
2018/08/30(木) 11:38:24.71ID:rxoSSaq5 >>463
なんか自分が初心者の質問を解決してあげたみたいに思ってるかもしれないけど、
getoptでそれができるよ(ただしロングオプションは使えないよ)って
教えてあげたのは俺だからね
あんたは普通にできるといっただけで、どうやってできるとは言ってない。
getoptという名前を出すと、すぐにロングオプションが使えないことも
わかってしまうからね。制限付きであることを隠したいから、名前を出さずに
普通にできるという言葉でごまかしたんでしょう?
なんか自分が初心者の質問を解決してあげたみたいに思ってるかもしれないけど、
getoptでそれができるよ(ただしロングオプションは使えないよ)って
教えてあげたのは俺だからね
あんたは普通にできるといっただけで、どうやってできるとは言ってない。
getoptという名前を出すと、すぐにロングオプションが使えないことも
わかってしまうからね。制限付きであることを隠したいから、名前を出さずに
普通にできるという言葉でごまかしたんでしょう?
465デフォルトの名無しさん
2018/08/30(木) 11:52:42.25ID:TV9jsMCb >>464
なんでそんなイライラしてるの?
なんでそんなイライラしてるの?
466デフォルトの名無しさん
2018/08/30(木) 12:05:15.24ID:rxoSSaq5 >>463がイライラしてるのが移ったんだろうさw
467デフォルトの名無しさん
2018/08/30(木) 12:05:25.60ID:8BsM3ej5 >>464
解決してあげたww。次の文とかからもそこが大事なのねwなるほど
俺は別にお前のように俺が俺がというのはないなあ。単なる雑談の一種でしかないな
なので、お前のその言っていること全体がイミフメイ。妄想するのは勝手だが、妄想をダダ漏れさせてぶつけられても困ります。あとは勝手にやっとくれ
解決してあげたww。次の文とかからもそこが大事なのねwなるほど
俺は別にお前のように俺が俺がというのはないなあ。単なる雑談の一種でしかないな
なので、お前のその言っていること全体がイミフメイ。妄想するのは勝手だが、妄想をダダ漏れさせてぶつけられても困ります。あとは勝手にやっとくれ
468デフォルトの名無しさん
2018/08/30(木) 12:07:53.14ID:rxoSSaq5 ほらね。イライラしてるw
469デフォルトの名無しさん
2018/08/30(木) 12:10:55.47ID:rxoSSaq5 雑談したいなら雑談スレに行けばいいのにね
470デフォルトの名無しさん
2018/08/30(木) 12:37:21.81ID:KGeBif2I まぁ暇なんだろ
ここでやるなには同意だが
ここでやるなには同意だが
471デフォルトの名無しさん
2018/08/30(木) 12:55:18.44ID:8BsM3ej5 暇なのは否定しないが、雑談の「一種」と言っているのだけどな
すんなっていってるそれも雑談じゃないの?
すんなっていってるそれも雑談じゃないの?
472デフォルトの名無しさん
2018/08/30(木) 18:15:49.30ID:43MmhEYe473デフォルトの名無しさん
2018/08/30(木) 19:45:19.96ID:rxoSSaq5 >>472
そんなんだからアスペって言われるんだよ
そんなんだからアスペって言われるんだよ
474デフォルトの名無しさん
2018/08/31(金) 04:38:19.15ID:6Alav1/S ひらめいた!
prog -abcde
を引数解析するには
prog -a -b -c -d -e
に変換すればいいんじゃね?
【お題】
prog --foo -abcde --bar param
を
prog --foo -a -b -c -d -e --bar param
と実行したように見せかけるにはどうしたら良いか?
prog -abcde
を引数解析するには
prog -a -b -c -d -e
に変換すればいいんじゃね?
【お題】
prog --foo -abcde --bar param
を
prog --foo -a -b -c -d -e --bar param
と実行したように見せかけるにはどうしたら良いか?
475デフォルトの名無しさん
2018/08/31(金) 05:07:23.65ID:QWemr4wG >>474
getopt(1)を一度でも使えばそんなお題を出さずにすむのに
getopt(1)を一度でも使えばそんなお題を出さずにすむのに
476デフォルトの名無しさん
2018/08/31(金) 05:17:02.08ID:91l/t0hy 上のちょっと変わった人だろう
477デフォルトの名無しさん
2018/08/31(金) 07:41:02.63ID:6Alav1/S getoptはロングオプション使えないじゃん
478デフォルトの名無しさん
2018/08/31(金) 07:58:25.86ID:ii43Mx6H バッチはシェルではないけどMSDOSはシェルなん?
479デフォルトの名無しさん
2018/08/31(金) 08:33:46.47ID:NkcoCIHS おまえら車輪の再発明が好きだな(´・∀・`)
480デフォルトの名無しさん
2018/08/31(金) 08:44:41.63ID:csqJsH/K >>478
MS-DOSはWindows以前に使われていたCLIベースのOSの名前
MS-DOSではcommand.comというシェルが使われいていた
バッチファイルはcommand.com用のシェルスクリプト
バッチファイルはバッチ処理を行うために使われていたシェルスクリプト
Windows 9x系でもcommand.comは存在しDOSプロンプトとも呼ばれる。
16bitアプリケーションでありMS-DOS互換環境を提供する役割もあった
Windows NT系ではMS-DOSが完全に廃止され、DOSプロンプトから
名前を変えてコマンドプロンプト(cmd.exe)が標準のCLIシェルとなった。
(32bit版では互換性のためにcommand.comも残っているが
NT系はMS-DOSが存在しないため、実行環境はWindows 95と大きく異なる)
まとめると
MS-DOS、Windows 9x(95, 98など)、Windows NT(XP、7、10など)がOSの名前
command.com、cmd.exeがシェルの名前
拡張子 .bat .cmd のファイルが、バッチファイル
バッチファイルで行う処理がバッチ(処理)
シェルでバッチ処理を行うためのスクリプトがシェルスクリプト
MS-DOSはWindows以前に使われていたCLIベースのOSの名前
MS-DOSではcommand.comというシェルが使われいていた
バッチファイルはcommand.com用のシェルスクリプト
バッチファイルはバッチ処理を行うために使われていたシェルスクリプト
Windows 9x系でもcommand.comは存在しDOSプロンプトとも呼ばれる。
16bitアプリケーションでありMS-DOS互換環境を提供する役割もあった
Windows NT系ではMS-DOSが完全に廃止され、DOSプロンプトから
名前を変えてコマンドプロンプト(cmd.exe)が標準のCLIシェルとなった。
(32bit版では互換性のためにcommand.comも残っているが
NT系はMS-DOSが存在しないため、実行環境はWindows 95と大きく異なる)
まとめると
MS-DOS、Windows 9x(95, 98など)、Windows NT(XP、7、10など)がOSの名前
command.com、cmd.exeがシェルの名前
拡張子 .bat .cmd のファイルが、バッチファイル
バッチファイルで行う処理がバッチ(処理)
シェルでバッチ処理を行うためのスクリプトがシェルスクリプト
481デフォルトの名無しさん
2018/08/31(金) 12:15:59.98ID:4WvfdMT+ めっちゃ早口で言ってそう
482デフォルトの名無しさん
2018/08/31(金) 12:54:57.94ID:hD6bHOXY 録音してゆっくり再生してようやっと何言ってるかわかる、ぐらいかな
483デフォルトの名無しさん
2018/08/31(金) 13:05:55.30ID:DXKxWv2O >>481-482
本当に自覚してないようだから教えてあげるけど
そういうくだらない雑談をよそでやんなさいって言ってんの。
それともそのレスになにか価値があるというのなら
どうぞいってください。話を聞くよ?
本当に自覚してないようだから教えてあげるけど
そういうくだらない雑談をよそでやんなさいって言ってんの。
それともそのレスになにか価値があるというのなら
どうぞいってください。話を聞くよ?
484デフォルトの名無しさん
2018/08/31(金) 13:17:47.02ID:ANKbwE4L 子供だなあ
485デフォルトの名無しさん
2018/08/31(金) 13:42:20.88ID:hD6bHOXY このスレは君が価値を感じる書き込みをしなければならないスレではない。
486デフォルトの名無しさん
2018/08/31(金) 13:43:18.09ID:hD6bHOXY キリッ
487デフォルトの名無しさん
2018/08/31(金) 13:44:06.35ID:sUUndK8T ここって5chだよな?
488デフォルトの名無しさん
2018/08/31(金) 13:44:30.70ID:H6r51FSy うん
489デフォルトの名無しさん
2018/08/31(金) 14:03:56.61ID:DXKxWv2O せっかくプログラム板に移動したのに、荒らしは消えないのねw
490デフォルトの名無しさん
2018/08/31(金) 14:48:59.64ID:LaBPL+3F どういうぎゃぐなのかと思わせられるほどの無自覚ぶり。他人に自覚とか言ってるのに
491デフォルトの名無しさん
2018/08/31(金) 15:00:22.51ID:/mKi/Wls )ソ)
ッλ ノ(.,ノ)
(゙- ..::.::. . (
(ソ. .彡⌒ミ. )ソ)
).::'; (´・ω・`) ス (
ソ .::;';'(つ ⊂)::;';'`〜、.
( :;';' |__∧_| ::;';' ヽ)
`'~`'''`'`'`~'~~`~~'`'`''''"`'`'`''`''''"`'``'~`''`'~`'''`'`'`~
さ あ 禿 げ 上 が っ て ま い り ま し た
ッλ ノ(.,ノ)
(゙- ..::.::. . (
(ソ. .彡⌒ミ. )ソ)
).::'; (´・ω・`) ス (
ソ .::;';'(つ ⊂)::;';'`〜、.
( :;';' |__∧_| ::;';' ヽ)
`'~`'''`'`'`~'~~`~~'`'`''''"`'`'`''`''''"`'``'~`''`'~`'''`'`'`~
さ あ 禿 げ 上 が っ て ま い り ま し た
492デフォルトの名無しさん
2018/08/31(金) 15:07:49.61ID:H6r51FSy 頭に刺さってる髪の数だけ書き込みを許してやる
493デフォルトの名無しさん
2018/08/31(金) 15:20:54.53ID:vplIlyda ファイルの更新について教えてください
フラッシュメモリ(SDカード)にファイルを保存しています
ご存知のようにフラッシュメモリには書き換え回数があり
使いすぎると壊れるのですが
シェルでリダイレクトして追記していく形にした場合
追記分のブロック数分が更新されると考えていいのでしょうか
もしくは100バイト追記してもファイルの大きさが100MBあったら
ファイルシステム上再配置されて
フラッシュメモリ上は100MB相当(のブロック)の更新がかかりますか?
またviなどのエディタで更新した場合はどうなのでしょうか?
やはり100MB分の更新になりますか?
フラッシュメモリ(SDカード)にファイルを保存しています
ご存知のようにフラッシュメモリには書き換え回数があり
使いすぎると壊れるのですが
シェルでリダイレクトして追記していく形にした場合
追記分のブロック数分が更新されると考えていいのでしょうか
もしくは100バイト追記してもファイルの大きさが100MBあったら
ファイルシステム上再配置されて
フラッシュメモリ上は100MB相当(のブロック)の更新がかかりますか?
またviなどのエディタで更新した場合はどうなのでしょうか?
やはり100MB分の更新になりますか?
494デフォルトの名無しさん
2018/08/31(金) 16:11:16.42ID:j8UTgVSe >>493
OSやドライバに依存する。
でもだいたいはライトキャッシュがあって実際の書き込みは中々されないと思うよ。
ましてや書き込み回数が多くなると劣化するメデイアと初めからわかっているものに対してバンバン書くようなことは普通のドライバならしないと思う。
OSやドライバに依存する。
でもだいたいはライトキャッシュがあって実際の書き込みは中々されないと思うよ。
ましてや書き込み回数が多くなると劣化するメデイアと初めからわかっているものに対してバンバン書くようなことは普通のドライバならしないと思う。
495デフォルトの名無しさん
2018/08/31(金) 19:32:51.61ID:OUCwI4mz この動きって仕様ですか?
No1と同じような動きを$@を一旦別の変数に入れて
実行したいのですがなにか方法はありますか?
./test.sh "a 1" "b 2"
# No1
for i in "$@"; do
echo $i
done
# a 1
# b 2
# No2
args="$@"
for i in "$args"; do
echo $i
done
# a 1 b 2
# No3
args="$@"
for i in $args; do
echo $i
done
# a
# 1
# b
# 2
No1と同じような動きを$@を一旦別の変数に入れて
実行したいのですがなにか方法はありますか?
./test.sh "a 1" "b 2"
# No1
for i in "$@"; do
echo $i
done
# a 1
# b 2
# No2
args="$@"
for i in "$args"; do
echo $i
done
# a 1 b 2
# No3
args="$@"
for i in $args; do
echo $i
done
# a
# 1
# b
# 2
496デフォルトの名無しさん
2018/08/31(金) 19:46:53.74ID:QWemr4wG >>495
仕様だと思う。
$@の時点ではシェルが解釈した引数ごとに分かれているのに対して
"$@"←のようにしてしまうとそれがひとまとまりに見做されてしまい
結局args="a 1 b 2"と代入していることになる。
仕様だと思う。
$@の時点ではシェルが解釈した引数ごとに分かれているのに対して
"$@"←のようにしてしまうとそれがひとまとまりに見做されてしまい
結局args="a 1 b 2"と代入していることになる。
497デフォルトの名無しさん
2018/08/31(金) 19:51:37.92ID:QWemr4wG 解決方法はevalやらを使って
#! /bin/sh
n=1
for i in "$@"; do
eval "arg$n=\"$i\""
n=$((n + 1))
done
こうやるといいんでは。
arg3とかで「3番目の引数」を参照できるようになってる筈
#! /bin/sh
n=1
for i in "$@"; do
eval "arg$n=\"$i\""
n=$((n + 1))
done
こうやるといいんでは。
arg3とかで「3番目の引数」を参照できるようになってる筈
498デフォルトの名無しさん
2018/08/31(金) 19:53:52.69ID:QWemr4wG ていうか質問の内容から察するに二種類の別の引数を処理したいんだよね?
すなおにPythonとか使ったほうがいいとは思うが……
俺が示したやり方だと引数の位置が絶対参照だし 引数を処理する度に変数が衝突するし
もちろん俺の方法が下手というのもあるが まあシェルスクリプトで引数処理は鬼門であることは間違いない
すなおにPythonとか使ったほうがいいとは思うが……
俺が示したやり方だと引数の位置が絶対参照だし 引数を処理する度に変数が衝突するし
もちろん俺の方法が下手というのもあるが まあシェルスクリプトで引数処理は鬼門であることは間違いない
499デフォルトの名無しさん
2018/08/31(金) 19:59:38.59ID:OUCwI4mz どう解釈すれば、この挙動を理解できますかね?
./test.sh "a 1" "b 2"
for i in "A $@ Z"; do
echo $i
done
# A a 1
# b 2 Z
for i in "A Z"; do
echo $i
done
# A Z
./test.sh "a 1" "b 2"
for i in "A $@ Z"; do
echo $i
done
# A a 1
# b 2 Z
for i in "A Z"; do
echo $i
done
# A Z
500デフォルトの名無しさん
2018/08/31(金) 20:04:13.23ID:4o8e5lPA >>493
シェルの追記はかからない。
vi/vim はかかる。
>> 495
仕様。配列にぶっこむ。
HOGE=("$@")
for ent in "${HOGE[@]}"; do
echo $ent
done
シェルの追記はかからない。
vi/vim はかかる。
>> 495
仕様。配列にぶっこむ。
HOGE=("$@")
for ent in "${HOGE[@]}"; do
echo $ent
done
501デフォルトの名無しさん
2018/08/31(金) 20:20:45.59ID:4o8e5lPA >>499
"A $@ Z" → A\_a\_1_b\_2\_Z
"A Z" → A\_Z
アンダースコアはスペースと思ってくれ。
ダブルクォートはスペースをエスケープしてる。
man に載ってたと思って読んでたが見つからんかった。
"A $@ Z" → A\_a\_1_b\_2\_Z
"A Z" → A\_Z
アンダースコアはスペースと思ってくれ。
ダブルクォートはスペースをエスケープしてる。
man に載ってたと思って読んでたが見つからんかった。
502デフォルトの名無しさん
2018/08/31(金) 20:47:48.56ID:6cxiNGZa man の特殊パラメータの項に書いてあるのはこういうことか?
"A $@ Z" → "A ""$@"" Z"
確かに動作は同じだ。
試したコードはこんな感じ
for i in "$@"; do
echo $i
done
for i in "A $@ Z"; do
echo $i
done
for i in "A ""$@"" Z"; do
echo $i
done
"A $@ Z" → "A ""$@"" Z"
確かに動作は同じだ。
試したコードはこんな感じ
for i in "$@"; do
echo $i
done
for i in "A $@ Z"; do
echo $i
done
for i in "A ""$@"" Z"; do
echo $i
done
503デフォルトの名無しさん
2018/08/31(金) 20:52:30.52ID:OUCwI4mz よくわからんね。 $@がダブルクォートの中に入ってたら
"$1" "$2" ・・・ "$n" に展開されるってことかな?
でもそれだと
# A a 1
こうなる理由がよくわからなんのだよな
"A $@ Z" は
"A $1" "$2" "$3" ・・・ "$n Z" に
展開されているとしか思えない
"$1" "$2" ・・・ "$n" に展開されるってことかな?
でもそれだと
# A a 1
こうなる理由がよくわからなんのだよな
"A $@ Z" は
"A $1" "$2" "$3" ・・・ "$n Z" に
展開されているとしか思えない
504デフォルトの名無しさん
2018/08/31(金) 21:53:31.46ID:KmkRvZ7D505デフォルトの名無しさん
2018/08/31(金) 23:13:07.36ID:QWemr4wG506デフォルトの名無しさん
2018/08/31(金) 23:15:52.07ID:QWemr4wG507デフォルトの名無しさん
2018/08/31(金) 23:29:17.32ID:OUCwI4mz イイかダメかで言えば、arg1、arg2、arg3、・・・では
ループできないのでこれだけではだめですね。
シェルスクリプトにもライブラリが欲しい所ですね
ループできないのでこれだけではだめですね。
シェルスクリプトにもライブラリが欲しい所ですね
508デフォルトの名無しさん
2018/08/31(金) 23:44:36.90ID:4ZfpOo1s そんなもんいらない
そんなん使うぐらいなら別のスクリプトを
シェルから使う
ホントな頭悪いことばっかりいってるわ
そんなん使うぐらいなら別のスクリプトを
シェルから使う
ホントな頭悪いことばっかりいってるわ
509デフォルトの名無しさん
2018/09/01(土) 00:01:57.02ID:Z9gelboG510デフォルトの名無しさん
2018/09/01(土) 04:09:47.42ID:IN1XIdeB 最初は使い捨てだからとシェルスクリプトを書くが
なんだかんだ使い続けて、利便性向上の為にアップデートを続け
最後には複数ファイルに及ぶ意外に大規模な代物に
今更マトモな言語で作り直すのも面倒臭い
やるなら最初からマトモな言語で作っておけば良かったと
なんだかんだ使い続けて、利便性向上の為にアップデートを続け
最後には複数ファイルに及ぶ意外に大規模な代物に
今更マトモな言語で作り直すのも面倒臭い
やるなら最初からマトモな言語で作っておけば良かったと
511デフォルトの名無しさん
2018/09/01(土) 05:19:02.92ID:Z9gelboG >>510
その通り
一部のよほど頭の良い人(USP研究所とかそのあたり)じゃないと
まともに扱えない単純だけど難しい言語
ほとんどの人間はPythonやらを使ったほうがいい
Pythonはエラー処理やセキュリティ関連も既定で充実してるから
バカでもプログラムが書けるようになってる
その通り
一部のよほど頭の良い人(USP研究所とかそのあたり)じゃないと
まともに扱えない単純だけど難しい言語
ほとんどの人間はPythonやらを使ったほうがいい
Pythonはエラー処理やセキュリティ関連も既定で充実してるから
バカでもプログラムが書けるようになってる
512デフォルトの名無しさん
2018/09/01(土) 06:18:36.99ID:j0QmLW2E シェルスクリプトを他のスクリプトへコンバートするツールとか無いのかな?
513デフォルトの名無しさん
2018/09/01(土) 07:21:55.56ID:mPcVbgud514デフォルトの名無しさん
2018/09/01(土) 07:58:52.51ID:dtHP3qHu515デフォルトの名無しさん
2018/09/01(土) 08:09:40.25ID:mPcVbgud 例えば、rbenvとか、それなりの規模だけど
シェルスクリプトで作るのが適している
シェルスクリプトで作るのが適している
516デフォルトの名無しさん
2018/09/01(土) 08:10:56.58ID:kUpkBQ3x >>493-494
>追記分のブロック数分が更新されると考えていいのでしょうか
たぶん、追記分だけ
ページサイズが4KB で、20KB のファイルがある時、
追記すると、最初の5ページに変化はない。
6ページ目が追加されるだけ
ただし、ファイルの中ほどを更新した場合は、どうなるかわからない。
3ページ目だけを更新した場合、1, 2, 4, 5ページに変化はないけど、
3ページ目のサイズが大きい場合、6ページ目を確保して、それを間に入れるから、
1, 2, (3, 6,) 4, 5 のようなページの並びになるのかな?
まあ、ファイルシステムの説明を読まないと、わからない
>追記分のブロック数分が更新されると考えていいのでしょうか
たぶん、追記分だけ
ページサイズが4KB で、20KB のファイルがある時、
追記すると、最初の5ページに変化はない。
6ページ目が追加されるだけ
ただし、ファイルの中ほどを更新した場合は、どうなるかわからない。
3ページ目だけを更新した場合、1, 2, 4, 5ページに変化はないけど、
3ページ目のサイズが大きい場合、6ページ目を確保して、それを間に入れるから、
1, 2, (3, 6,) 4, 5 のようなページの並びになるのかな?
まあ、ファイルシステムの説明を読まないと、わからない
517デフォルトの名無しさん
2018/09/01(土) 08:19:23.69ID:kUpkBQ3x vagrant, chef は、Ruby で書かれているだろ
大きい手順書を、シェルスクリプトで書くのは、途方もない!
大きい手順書を、シェルスクリプトで書くのは、途方もない!
518デフォルトの名無しさん
2018/09/01(土) 08:31:44.88ID:Z9gelboG ・テスト環境……なし
・ドキュメント生成……なし
・バージョン管理……なし
・パッケージシステム……なし
まあそりゃ大規模開発には向かないわな。
やってもいいのは上記の諸々を自作できるような賢い人間。
(俺を含めた)普通の人間は「連番画像をDLする」とか「写真フォルダを整理する」
ときに一度限りのシェルスクリプトを書く程度に留めて
開発はPythonやRubyやJava(個人的に後者二つはあまり好きじゃないが)を利用するのが一番いい。
もちろん自身にとってもだが,他人にとっても不具合が少ないし事故が起こりにくいというのは大きな利点でしょうね。
・ドキュメント生成……なし
・バージョン管理……なし
・パッケージシステム……なし
まあそりゃ大規模開発には向かないわな。
やってもいいのは上記の諸々を自作できるような賢い人間。
(俺を含めた)普通の人間は「連番画像をDLする」とか「写真フォルダを整理する」
ときに一度限りのシェルスクリプトを書く程度に留めて
開発はPythonやRubyやJava(個人的に後者二つはあまり好きじゃないが)を利用するのが一番いい。
もちろん自身にとってもだが,他人にとっても不具合が少ないし事故が起こりにくいというのは大きな利点でしょうね。
519デフォルトの名無しさん
2018/09/01(土) 08:38:18.84ID:mPcVbgud520デフォルトの名無しさん
2018/09/01(土) 08:45:05.20ID:mPcVbgud >>518
それ理屈にあってないだろ
"作れない" ならともかく、現在ないから大規模開発に向かないという理屈なら、
あれば大規模開発に向いているって言うことになるぞw
例えば、今はsystemdに役目を移してしまったが、
Linuxの起動の仕組みはシェルスクリプトだった。
ちなみにgitも結構シェルスクリプトが含まれているよ
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh
それにテストもドキュメントもバージョン管理もあるね。
(って今気づいたがバージョン管理ってなんだ?)
それ理屈にあってないだろ
"作れない" ならともかく、現在ないから大規模開発に向かないという理屈なら、
あれば大規模開発に向いているって言うことになるぞw
例えば、今はsystemdに役目を移してしまったが、
Linuxの起動の仕組みはシェルスクリプトだった。
ちなみにgitも結構シェルスクリプトが含まれているよ
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh
それにテストもドキュメントもバージョン管理もあるね。
(って今気づいたがバージョン管理ってなんだ?)
521デフォルトの名無しさん
2018/09/01(土) 08:48:34.52ID:mPcVbgud なんか、JavaScriptと同じ空気を感じるな。
いろんな仕組みがないから、簡易的な用途にしか使えないと
最初は思われていたが、それらの仕組みが揃った今では
サイト全体をJavaScriptで作るのもありえないことではなくなった。
いろんな仕組みがないから、簡易的な用途にしか使えないと
最初は思われていたが、それらの仕組みが揃った今では
サイト全体をJavaScriptで作るのもありえないことではなくなった。
522デフォルトの名無しさん
2018/09/01(土) 08:50:14.95ID:dtHP3qHu523デフォルトの名無しさん
2018/09/01(土) 08:53:58.50ID:mPcVbgud >>522
だから規模で判断するのは間違いという結論になると言ってるんだが?
だから規模で判断するのは間違いという結論になると言ってるんだが?
524デフォルトの名無しさん
2018/09/01(土) 08:56:54.80ID:J8s4Euww >>513
具体的にはどういう場合?
具体的にはどういう場合?
525デフォルトの名無しさん
2018/09/01(土) 09:00:31.35ID:mPcVbgud >>524
だからrbenvっていってるじゃん。
だからrbenvっていってるじゃん。
526デフォルトの名無しさん
2018/09/01(土) 09:01:03.88ID:J8s4Euww >>525
具体的に
具体的に
527デフォルトの名無しさん
2018/09/01(土) 09:03:56.67ID:dtHP3qHu >>523>>525
それは例外であって反例ではない
それは例外であって反例ではない
528デフォルトの名無しさん
2018/09/01(土) 09:07:50.87ID:kUpkBQ3x 仮想化は、典型的な手順書だろ。
パッケージをダウンロードして、インストールして、環境変数PATH を通して
シェルスクリプトで作るのは面倒。
Ruby でOK
パッケージをダウンロードして、インストールして、環境変数PATH を通して
シェルスクリプトで作るのは面倒。
Ruby でOK
529デフォルトの名無しさん
2018/09/01(土) 09:16:02.22ID:Z9gelboG まあRubyじゃなくてもRubyのように
ドキュメント生成やパッケージ管理ができればいいんだよね
PythonがいいよPythonが。
ドキュメント生成やパッケージ管理ができればいいんだよね
PythonがいいよPythonが。
530デフォルトの名無しさん
2018/09/01(土) 09:23:11.21ID:mPcVbgud531デフォルトの名無しさん
2018/09/01(土) 09:24:47.95ID:HRxiLrgz pwshが便利すぎてな
532デフォルトの名無しさん
2018/09/01(土) 09:25:44.74ID:mPcVbgud >>528
> 仮想化は、典型的な手順書だろ。
たまたま手順書がシェルスクリプトで書かれていたからって、
手順書だからというのはシェルスクリプトで書く理由にはならないんだよ。
あんたはrubyが入ってない、入れたくないという環境でも
動かしたいという理由とごっちゃにしてるだけ
> 仮想化は、典型的な手順書だろ。
たまたま手順書がシェルスクリプトで書かれていたからって、
手順書だからというのはシェルスクリプトで書く理由にはならないんだよ。
あんたはrubyが入ってない、入れたくないという環境でも
動かしたいという理由とごっちゃにしてるだけ
533デフォルトの名無しさん
2018/09/01(土) 09:37:39.89ID:dtHP3qHu >>530
分かった、好きにしてくれ
分かった、好きにしてくれ
534デフォルトの名無しさん
2018/09/01(土) 09:45:09.27ID:mPcVbgud 理解したならいい。
好きにするのは普通にしている。
ここでやってるのは、お前に理解させることだからな。
反論がなくなればそこで終了だ
好きにするのは普通にしている。
ここでやってるのは、お前に理解させることだからな。
反論がなくなればそこで終了だ
535デフォルトの名無しさん
2018/09/01(土) 10:52:03.88ID:f+i9u0Am >>531
Unix に新しいシェルが!? と思ったら PowerShell だったのね
Unix に新しいシェルが!? と思ったら PowerShell だったのね
536デフォルトの名無しさん
2018/09/01(土) 11:17:42.65ID:qlVPfHnQ 結局どういう場合にシェルが適しているのか一言も言ってない件
537デフォルトの名無しさん
2018/09/01(土) 11:35:25.52ID:mPcVbgud >>526
1. シェル環境そのものをカスタマイズするためのもの(例 rbenv)
通常のプロセスはサブプロセスとして起動するので、カレントシェルのカスタマイズはできない
2. 特定の言語のライブラリやランタイムに依存したくないもの(例 Docker)
あらかじめ入っているものだけで起動できるので、環境を整える必要がなくなる
コンテナやIoTといった小さな制限されたイメージでも使える
逆にさ、他の言語の方こそ「適している理由」が少ないと思うな。
例えばRubyで作ったものはPythonで作ることだってできるだろ?
1. シェル環境そのものをカスタマイズするためのもの(例 rbenv)
通常のプロセスはサブプロセスとして起動するので、カレントシェルのカスタマイズはできない
2. 特定の言語のライブラリやランタイムに依存したくないもの(例 Docker)
あらかじめ入っているものだけで起動できるので、環境を整える必要がなくなる
コンテナやIoTといった小さな制限されたイメージでも使える
逆にさ、他の言語の方こそ「適している理由」が少ないと思うな。
例えばRubyで作ったものはPythonで作ることだってできるだろ?
538デフォルトの名無しさん
2018/09/01(土) 11:42:20.50ID:mPcVbgud 3. CLIコマンドとCLIコマンドのグルー言語
リダイレクトやパイプを使った処理はシェルスクリプトが得意
他の言語でもネイティブに記述するのが面倒だからか
内部的にシェルを経由してたりするしな
リダイレクトやパイプを使った処理はシェルスクリプトが得意
他の言語でもネイティブに記述するのが面倒だからか
内部的にシェルを経由してたりするしな
539デフォルトの名無しさん
2018/09/01(土) 11:48:25.44ID:qlVPfHnQ540デフォルトの名無しさん
2018/09/01(土) 11:55:22.51ID:mPcVbgud >>539
はぁ、だから
> 逆にさ、他の言語の方こそ「適している理由」が少ないと思うな。
> 例えばRubyで作ったものはPythonで作ることだってできるだろ?
こう書いたのに。
たとえ対象となるものが少なくとも、
適している理由があるだろ?
他の言語は、その適してる理由すらないのにって話だよ
2がC#ですら可能? じゃあ俺が使ってるルータ(OpenWrt)で動かしてみなよ
はぁ、だから
> 逆にさ、他の言語の方こそ「適している理由」が少ないと思うな。
> 例えばRubyで作ったものはPythonで作ることだってできるだろ?
こう書いたのに。
たとえ対象となるものが少なくとも、
適している理由があるだろ?
他の言語は、その適してる理由すらないのにって話だよ
2がC#ですら可能? じゃあ俺が使ってるルータ(OpenWrt)で動かしてみなよ
541デフォルトの名無しさん
2018/09/01(土) 11:57:50.49ID:mPcVbgud 参考までに言っておくと、俺が扱ってるルータは
比較的スペックが高いものだが、Flashのサイズは16MBしかなく
ファームウェアを除いたら空き容量は10MB程度だからな
比較的スペックが高いものだが、Flashのサイズは16MBしかなく
ファームウェアを除いたら空き容量は10MB程度だからな
542デフォルトの名無しさん
2018/09/01(土) 12:11:14.41ID:HRxiLrgz 自分が今使ってる環境を前提にして
同じように考えろと周りにも要求する人ってたまにいるけどその議論に意味あるのか?
同じように考えろと周りにも要求する人ってたまにいるけどその議論に意味あるのか?
543デフォルトの名無しさん
2018/09/01(土) 12:23:32.27ID:mPcVbgud544デフォルトの名無しさん
2018/09/01(土) 12:35:03.95ID:HRxiLrgz >>543
だからって極貧環境を前提にするのも間違い
極貧環境でリッチなスクリプトが動かないのはわかった
その環境ではshは素晴らしいものだ
スクリプト言語の完全敗北だよ
そりゃ動かせないのに勝負になるわけない
この結論に議論の余地はないだろう
じゃあ議論が終わったので次に行こう
業務規約でツールインストール禁止のWindows 7環境でshのメリットはあるか?
だからって極貧環境を前提にするのも間違い
極貧環境でリッチなスクリプトが動かないのはわかった
その環境ではshは素晴らしいものだ
スクリプト言語の完全敗北だよ
そりゃ動かせないのに勝負になるわけない
この結論に議論の余地はないだろう
じゃあ議論が終わったので次に行こう
業務規約でツールインストール禁止のWindows 7環境でshのメリットはあるか?
545デフォルトの名無しさん
2018/09/01(土) 12:36:44.49ID:mPcVbgud546デフォルトの名無しさん
2018/09/01(土) 12:38:38.54ID:dtHP3qHu547デフォルトの名無しさん
2018/09/01(土) 12:43:20.26ID:mPcVbgud >>544
> 業務規約でツールインストール禁止のWindows 7環境でshのメリットはあるか?
WindowsとLinuxの両方で使うなら、
両方のOSでそのまま動くツールがほしいね
まずツールインストール禁止なんだから
任意のバイナリ、RubyやPythonをインストールすることは禁止だ。
(バイナリOKならbusyboxでもダウンロードすればいいということになる)
だからバッチファイル or PowerShell or JavaScript(JScript) と
シェルスクリプト の二段構えにするしか無いだろう。
二重にコードを開発するのが嫌なら、簡易インタプリタ言語でも作って、
WindowsではJavaScrptで、Linuxならシェルスクリプトで
パースしてコマンドに変換して実行とかかな
ってことで、シェルスクリプトでもそういう用途のために
ライブラリとか充実してるといいよねという話に戻すw
> 業務規約でツールインストール禁止のWindows 7環境でshのメリットはあるか?
WindowsとLinuxの両方で使うなら、
両方のOSでそのまま動くツールがほしいね
まずツールインストール禁止なんだから
任意のバイナリ、RubyやPythonをインストールすることは禁止だ。
(バイナリOKならbusyboxでもダウンロードすればいいということになる)
だからバッチファイル or PowerShell or JavaScript(JScript) と
シェルスクリプト の二段構えにするしか無いだろう。
二重にコードを開発するのが嫌なら、簡易インタプリタ言語でも作って、
WindowsではJavaScrptで、Linuxならシェルスクリプトで
パースしてコマンドに変換して実行とかかな
ってことで、シェルスクリプトでもそういう用途のために
ライブラリとか充実してるといいよねという話に戻すw
548デフォルトの名無しさん
2018/09/01(土) 12:46:29.79ID:mPcVbgud 皮肉が伝わっていなそうだから言っておくが、>545は
「どちらもなにかを前提としてる」だろってこと
そして2つの違いはその前提が
「多くの環境に対応する」前提 なのか
「特定の環境を切り捨てる」前提なのかってこと
「どちらもなにかを前提としてる」だろってこと
そして2つの違いはその前提が
「多くの環境に対応する」前提 なのか
「特定の環境を切り捨てる」前提なのかってこと
549デフォルトの名無しさん
2018/09/01(土) 13:52:25.73ID:Z9gelboG 結局シェルスクリプトは大規模開発に向いてるの?
550デフォルトの名無しさん
2018/09/01(土) 13:52:43.19ID:7zKoqoPj 最近知ったけど&&や||使えばifによる判定不要なんだね
ls aaa && echo exists
ls aaa || echo not exists
でもプログラムやってきてた自分としては
if使っちゃうかなあ・・・
ls aaa && echo exists
ls aaa || echo not exists
でもプログラムやってきてた自分としては
if使っちゃうかなあ・・・
551デフォルトの名無しさん
2018/09/01(土) 14:21:11.49ID:mPcVbgud > でもプログラムやってきてた自分としては
???
俺もプログラムやってきたが、こういう書き方を知った(意識した)のはperlが最初だな
http://perldoc.jp/func/die
> chdir '/usr/spool/news' or die "Can't cd to spool: $!\n"
(or は優先順位が違うだけで || と同じ)
以降Rubyや
https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html#or
> demo || die
> demo or die
JavaScriptでも使うようになった
https://stackoverflow.com/questions/51206667/or-in-ternary-operator-using
> (a === 0 || b === 0) && console.log('aloha amigo')
(Perlよりも前にやっていた)C言語でもできたんだが、当時は使ってなかったな。
https://qiita.com/gyu-don/items/a0aed0f94b8b35c43290
> a || error(); // if(!a){ error(); } のような挙動
> a || (a = 1); // if(!a){ a = 1; } のような挙動(代入が式である言語で有効)
こういう書き方ができないのはVBぐらいじゃないか?
VBは短絡評価じゃないから、先に|| や && の右側が評価されてしまったはず
えーと、いつから自分がプログラムやってきたと錯覚していた?
???
俺もプログラムやってきたが、こういう書き方を知った(意識した)のはperlが最初だな
http://perldoc.jp/func/die
> chdir '/usr/spool/news' or die "Can't cd to spool: $!\n"
(or は優先順位が違うだけで || と同じ)
以降Rubyや
https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html#or
> demo || die
> demo or die
JavaScriptでも使うようになった
https://stackoverflow.com/questions/51206667/or-in-ternary-operator-using
> (a === 0 || b === 0) && console.log('aloha amigo')
(Perlよりも前にやっていた)C言語でもできたんだが、当時は使ってなかったな。
https://qiita.com/gyu-don/items/a0aed0f94b8b35c43290
> a || error(); // if(!a){ error(); } のような挙動
> a || (a = 1); // if(!a){ a = 1; } のような挙動(代入が式である言語で有効)
こういう書き方ができないのはVBぐらいじゃないか?
VBは短絡評価じゃないから、先に|| や && の右側が評価されてしまったはず
えーと、いつから自分がプログラムやってきたと錯覚していた?
552デフォルトの名無しさん
2018/09/01(土) 14:44:03.83ID:2NCbxz5b 独り舞台の全レス
553デフォルトの名無しさん
2018/09/01(土) 14:46:14.88ID:mPcVbgud あ、はい
(下らないレスは無視してるけどなw)
(下らないレスは無視してるけどなw)
554デフォルトの名無しさん
2018/09/01(土) 15:07:44.71ID:7KL6nh8i 一日中張り付いてるやべー奴
555デフォルトの名無しさん
2018/09/01(土) 16:10:37.86ID:W/mc6eBq556デフォルトの名無しさん
2018/09/01(土) 17:14:12.00ID:mPcVbgud557デフォルトの名無しさん
2018/09/01(土) 17:30:46.73ID:qlVPfHnQ558デフォルトの名無しさん
2018/09/01(土) 17:43:01.15ID:vZp6TokW 何行以上なら大規模なのか、1人で開発したら大規模と言えるのか。
シェルスクリプト環境自体がシェルスクリプトを用いた大規模分散開発の成果と言えるのかもしれない。
という夢を見た
シェルスクリプト環境自体がシェルスクリプトを用いた大規模分散開発の成果と言えるのかもしれない。
という夢を見た
559デフォルトの名無しさん
2018/09/01(土) 17:46:41.85ID:mPcVbgud >>557
ありがとう。やっぱりうちのOpenWrtでは動きそうもないね。
ありがとう。やっぱりうちのOpenWrtでは動きそうもないね。
560デフォルトの名無しさん
2018/09/01(土) 17:47:16.28ID:qlVPfHnQ >>559
なぜ?
なぜ?
561デフォルトの名無しさん
2018/09/01(土) 17:59:21.16ID:mPcVbgud >>560
最初に思ったのが、glibcではないから。
たしかuClibcだっけ?と思ったが、musl libcに変わっていた。
glibc互換らしいから動くかもしれない。
次に思ったのがCPU。うちのルータは MIPS
ここを見るとARMはあるがMIPSはないのでアウト。動かない
https://www.microsoft.com/net/download/dotnet-core/2.2
おまけでARMのコアバイナリサイズ。圧縮状態で30MB近くある
展開したら60MB?。空き容量は10MBしかないので到底入らない。
ちなみにOpenVPNとか入れるんで10MB全部使えるわけじゃない
USBメモリを使うという裏技があるから不可能ではないが。
あとは使用メモリも気になるな。高スペックルータなので、
128MB"も"搭載されているが、どれくらいメモリ食うんだろうね
最初に思ったのが、glibcではないから。
たしかuClibcだっけ?と思ったが、musl libcに変わっていた。
glibc互換らしいから動くかもしれない。
次に思ったのがCPU。うちのルータは MIPS
ここを見るとARMはあるがMIPSはないのでアウト。動かない
https://www.microsoft.com/net/download/dotnet-core/2.2
おまけでARMのコアバイナリサイズ。圧縮状態で30MB近くある
展開したら60MB?。空き容量は10MBしかないので到底入らない。
ちなみにOpenVPNとか入れるんで10MB全部使えるわけじゃない
USBメモリを使うという裏技があるから不可能ではないが。
あとは使用メモリも気になるな。高スペックルータなので、
128MB"も"搭載されているが、どれくらいメモリ食うんだろうね
562デフォルトの名無しさん
2018/09/01(土) 18:00:20.51ID:mPcVbgud 訂正
× おまけでARMのコアバイナリサイズ。圧縮状態で30MB近くある
○ おまけでARM版の.NET Coreランタイムのバイナリサイズ。圧縮状態で30MB近くある
× おまけでARMのコアバイナリサイズ。圧縮状態で30MB近くある
○ おまけでARM版の.NET Coreランタイムのバイナリサイズ。圧縮状態で30MB近くある
563デフォルトの名無しさん
2018/09/01(土) 18:02:43.20ID:7GOU6dDm ちょっと理解に苦しむんだが、ルーターで大規模開発するわけ?
564デフォルトの名無しさん
2018/09/01(土) 18:02:59.63ID:/wwW4VSs ちっちゃいコマンドを一杯つくって
そのコマンドを一杯組み合わせてどんどんコマンド作るのには最適
標準入出力でひたすら組み合わせて使えるのがベストだ
一つのシェルスクリプトでたくさんの機能の処理を書こうというのが
そもそもの間違い
単体のシェルスクリプトで完結して使える簡単な機能を作る
わかりましたか
そのコマンドを一杯組み合わせてどんどんコマンド作るのには最適
標準入出力でひたすら組み合わせて使えるのがベストだ
一つのシェルスクリプトでたくさんの機能の処理を書こうというのが
そもそもの間違い
単体のシェルスクリプトで完結して使える簡単な機能を作る
わかりましたか
565デフォルトの名無しさん
2018/09/01(土) 18:08:41.62ID:mPcVbgud566デフォルトの名無しさん
2018/09/01(土) 18:10:57.55ID:7GOU6dDm >>561
じゃあmonoで良いやん
じゃあmonoで良いやん
567デフォルトの名無しさん
2018/09/01(土) 18:14:25.88ID:eduRMzlf シェルしか書けないジジイが必死だな
568デフォルトの名無しさん
2018/09/01(土) 18:19:40.37ID:mPcVbgud >>564
いやわからんw
「簡単な機能」とはどういう機能なのか
理論的には、たくさんのコマンドを組み合わせるだけという
シェルスクリプトに適した単純な機能であっても、その量が多くなれば大規模になるだろう?
「機能の種類や複雑さ」と「機能の量」は別々の概念だ
俺にとっては大規模といったら10万行超えるぐらいのものなんだが、
その前提でいいのであれば1000行程度は小規模だろう。だがその
1000行でもライブラリあったほうが楽になるだろうと用意に予測できる
例えばgit subtreeが865行だな
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh
いやわからんw
「簡単な機能」とはどういう機能なのか
理論的には、たくさんのコマンドを組み合わせるだけという
シェルスクリプトに適した単純な機能であっても、その量が多くなれば大規模になるだろう?
「機能の種類や複雑さ」と「機能の量」は別々の概念だ
俺にとっては大規模といったら10万行超えるぐらいのものなんだが、
その前提でいいのであれば1000行程度は小規模だろう。だがその
1000行でもライブラリあったほうが楽になるだろうと用意に予測できる
例えばgit subtreeが865行だな
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh
569デフォルトの名無しさん
2018/09/01(土) 18:23:56.55ID:+0pKcVMh 理論とか言い出しちゃった
570デフォルトの名無しさん
2018/09/01(土) 18:38:06.88ID:+0pKcVMh 誰が提唱した理論だろう?
謎理論?
謎理論?
571デフォルトの名無しさん
2018/09/01(土) 18:42:01.49ID:mPcVbgud シェルスクリプトが大規模に向いてないという理由を
誰も答えてくれないので俺が書いてやる
まず前提としてどんな言語であっても、言語だけでは大規模開発を
するのは無理RubyでもC#でもJavaであってもだ。
少し前まではJavaScriptも大規模開発に向かないと
言われていたはずだ。それが解決したのは何故か?
大規模開発をするのに必要なのは言語じゃない。フレームワークとライブラリだ。
どんな言語でも大規模開発するためにフレームワークとライブラリを使うだろう?
逆にこれらを使わないで大規模開発なんて到底無理だろ?
JavaScriptが大規模開発できるようになったのも、
フレームワークとライブラリが補完されたからだよ。
シェルスクリプトも昔のJavaScriptと同じ状況。
といっても俺はシェルスクリプトで大規模開発をすることには興味がなく、
せいぜい数千行程度の中規模ぐらいまでしかやることはないだろう。
何故かと言うと単にシェルスクリプトに適した内容で
10万行を超えるようなものが思いつかないからだ
だがそれはシェルスクリプトで大規模開発ができないということにはならない。
実際USPとかいうので、無印良品や東急ハンズのシステムが作られている(いた?)だろ
http://www.atmarkit.co.jp/news/200909/07/lltv03.html
https://www.hands-lab.com/tech/entry/62.html
(適してないとは思うが)足りない部分を補えば大規模開発だってできることは証明済みだよ
まとめると、現在のシェルスクリプトが大規模開発に向いてないのは
フレームワークやライブラリが不足しているから。
俺がシェルスクリプトで大規模開発をやらないのは、
シェルスクリプトが適した内容で大規模なものを思いつかないから。
それはそれとして中規模を小規模にするためのフレームワークやライブラリは欲しい。
誰も答えてくれないので俺が書いてやる
まず前提としてどんな言語であっても、言語だけでは大規模開発を
するのは無理RubyでもC#でもJavaであってもだ。
少し前まではJavaScriptも大規模開発に向かないと
言われていたはずだ。それが解決したのは何故か?
大規模開発をするのに必要なのは言語じゃない。フレームワークとライブラリだ。
どんな言語でも大規模開発するためにフレームワークとライブラリを使うだろう?
逆にこれらを使わないで大規模開発なんて到底無理だろ?
JavaScriptが大規模開発できるようになったのも、
フレームワークとライブラリが補完されたからだよ。
シェルスクリプトも昔のJavaScriptと同じ状況。
といっても俺はシェルスクリプトで大規模開発をすることには興味がなく、
せいぜい数千行程度の中規模ぐらいまでしかやることはないだろう。
何故かと言うと単にシェルスクリプトに適した内容で
10万行を超えるようなものが思いつかないからだ
だがそれはシェルスクリプトで大規模開発ができないということにはならない。
実際USPとかいうので、無印良品や東急ハンズのシステムが作られている(いた?)だろ
http://www.atmarkit.co.jp/news/200909/07/lltv03.html
https://www.hands-lab.com/tech/entry/62.html
(適してないとは思うが)足りない部分を補えば大規模開発だってできることは証明済みだよ
まとめると、現在のシェルスクリプトが大規模開発に向いてないのは
フレームワークやライブラリが不足しているから。
俺がシェルスクリプトで大規模開発をやらないのは、
シェルスクリプトが適した内容で大規模なものを思いつかないから。
それはそれとして中規模を小規模にするためのフレームワークやライブラリは欲しい。
572デフォルトの名無しさん
2018/09/01(土) 18:46:31.18ID:IN1XIdeB 休日は議論が捗りますね
573デフォルトの名無しさん
2018/09/01(土) 18:46:41.92ID:/wwW4VSs コマンドラインインタープリタを自動化したもんを
シェルスクリプトとというの
頭悪いバカのみんな分かった?
頭悪いバカは用途がわかってない、、、
シェルスクリプトとというの
頭悪いバカのみんな分かった?
頭悪いバカは用途がわかってない、、、
574デフォルトの名無しさん
2018/09/01(土) 18:49:33.52ID:/wwW4VSs たとえばなこのスレにいるような
コマンド叩ける程度の知能しかないオペレーターみたいなヤツが
シェルスクリプトだったらいっぱい自動でコマンド叩けると
必死に主張してるワケ
コマンド叩ける程度の知能しかないオペレーターみたいなヤツが
シェルスクリプトだったらいっぱい自動でコマンド叩けると
必死に主張してるワケ
575デフォルトの名無しさん
2018/09/01(土) 18:55:47.33ID:mPcVbgud お、今気づいたが、git subtreeってそのオプションの多さに比べて、
コードが少し少ないんじゃないか?と思ったら、
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh#L11-L33
OPTS_SPECを定義して、git rev-parse --parseopt つかって
何やらオプションを正規化してるんだな
gitにこんな機能があったとは
とは言え、劇的にコードが減ってるわけじゃないから
これなら http://docopt.org/ の方が優れてるな
コードが少し少ないんじゃないか?と思ったら、
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh#L11-L33
OPTS_SPECを定義して、git rev-parse --parseopt つかって
何やらオプションを正規化してるんだな
gitにこんな機能があったとは
とは言え、劇的にコードが減ってるわけじゃないから
これなら http://docopt.org/ の方が優れてるな
576デフォルトの名無しさん
2018/09/01(土) 18:59:35.38ID:mPcVbgud577デフォルトの名無しさん
2018/09/01(土) 19:05:44.41ID:/wwW4VSs シェルスクリプトでじかに文字列の処理なんかしないからな
sedやawkを使っても
頭が致命的に悪いとコレもシェルスクリプトで書いてやりたいとなるわけか
なるほどな
sedやawkを使っても
頭が致命的に悪いとコレもシェルスクリプトで書いてやりたいとなるわけか
なるほどな
578デフォルトの名無しさん
2018/09/01(土) 19:08:19.43ID:jmAsDv6y なんの話してたんだっけ?
579デフォルトの名無しさん
2018/09/01(土) 19:09:38.27ID:mPcVbgud サマータイムスレにもいた半角使いのキチガイ野郎かな?
みんな、こいつの味方するの?w
みんな、こいつの味方するの?w
580デフォルトの名無しさん
2018/09/01(土) 19:10:41.10ID:mPcVbgud581デフォルトの名無しさん
2018/09/01(土) 19:17:26.68ID:HKyHRnHf >>568
その理論について詳しく教えてくれw
その理論について詳しく教えてくれw
582デフォルトの名無しさん
2018/09/01(土) 19:20:00.37ID:mPcVbgud583デフォルトの名無しさん
2018/09/01(土) 19:22:31.10ID:4jvmXnIZ ム版来たせいで、ム版名物の半角君も長文君も呼び寄せちゃったか…
584デフォルトの名無しさん
2018/09/01(土) 19:25:33.74ID:HKyHRnHf585デフォルトの名無しさん
2018/09/01(土) 19:27:13.01ID:mPcVbgud >>583
その「長文君」がム板に来る流れを作った張本人という可能性は考えないのかい?w
その「長文君」がム板に来る流れを作った張本人という可能性は考えないのかい?w
586デフォルトの名無しさん
2018/09/01(土) 19:54:56.43ID:HKyHRnHf587デフォルトの名無しさん
2018/09/01(土) 19:55:19.76ID:4jvmXnIZ 嫌われ者の長文君ち〜ッス
588デフォルトの名無しさん
2018/09/01(土) 21:04:14.49ID:2NCbxz5b >>583,587
その二人ともなぜか 俺だけ 優秀と思っている不思議さwだから嫌われ者同士でも互いに嫌ってるのかww
その二人ともなぜか 俺だけ 優秀と思っている不思議さwだから嫌われ者同士でも互いに嫌ってるのかww
589デフォルトの名無しさん
2018/09/01(土) 22:34:21.93ID:/wwW4VSs オレが優秀なワケじゃない
オマエが健常者じゃないだけだからな
まずそこを自覚しないといけない
そこを勘違いしたらダメなワケ
オツムに軽度の障害があるとみなせるぐらい知能に問題がある
オマエが健常者じゃないだけだからな
まずそこを自覚しないといけない
そこを勘違いしたらダメなワケ
オツムに軽度の障害があるとみなせるぐらい知能に問題がある
590デフォルトの名無しさん
2018/09/01(土) 22:59:24.12ID:2NCbxz5b 別にそういう個別特定なのはいいのねん
お前には俺(のレス)がそう見えるというのはお前の価値観からそう見えるのはしょうがない
だがしかし、お前の場合はレス個別に対してじゃないのもあるからな。不特定多数のも。自称健常者は敵が多いからなのか??w
お前には俺(のレス)がそう見えるというのはお前の価値観からそう見えるのはしょうがない
だがしかし、お前の場合はレス個別に対してじゃないのもあるからな。不特定多数のも。自称健常者は敵が多いからなのか??w
591デフォルトの名無しさん
2018/09/01(土) 23:12:57.65ID:2NCbxz5b wwww いや、笑った。すげえなww
低学歴 知恵遅れ 健常者じゃない と、どこのスレでもどのレスでもそういう言葉があるな。すごいなww
ちょっと頭のおかしな人が道中をぶつくさ他人に悪態ついてるのと似てると思うけどなあ。「健常者」なんて普通使わないと思うけど、もしかしたらマジ病気のひと?ww
普通に会話、普通のレスできないの?あったとしたらすまん、あまりにもあういうのばかりで見逃したかもw
低学歴 知恵遅れ 健常者じゃない と、どこのスレでもどのレスでもそういう言葉があるな。すごいなww
ちょっと頭のおかしな人が道中をぶつくさ他人に悪態ついてるのと似てると思うけどなあ。「健常者」なんて普通使わないと思うけど、もしかしたらマジ病気のひと?ww
普通に会話、普通のレスできないの?あったとしたらすまん、あまりにもあういうのばかりで見逃したかもw
592デフォルトの名無しさん
2018/09/01(土) 23:17:02.98ID:/wwW4VSs オレと会話したいの?
残念なことにな、知恵遅れとまともな人間のあいだでは
会話が成立しない
プロトコルが違う
オレと会話したいなら
まず相応のプロトコルを身につけてからだ
残念なことにな、知恵遅れとまともな人間のあいだでは
会話が成立しない
プロトコルが違う
オレと会話したいなら
まず相応のプロトコルを身につけてからだ
593デフォルトの名無しさん
2018/09/01(土) 23:17:24.80ID:mPcVbgud 他スレで長文書いてたw まあ話は進んでないみたいだが
https://medaka.5ch.net/test/read.cgi/php/1474523013/854
https://mevius.5ch.net/test/read.cgi/hp/1533007852/229
今更だがsedって意外と便利に使えるのな。正規表現による範囲指定とか
s///使った単なる置換ぐらいにしか使ってなかった。
書いていたコードが短くなりそうで嬉しいw
https://medaka.5ch.net/test/read.cgi/php/1474523013/854
https://mevius.5ch.net/test/read.cgi/hp/1533007852/229
今更だがsedって意外と便利に使えるのな。正規表現による範囲指定とか
s///使った単なる置換ぐらいにしか使ってなかった。
書いていたコードが短くなりそうで嬉しいw
594デフォルトの名無しさん
2018/09/01(土) 23:18:54.31ID:J8s4Euww 長文はキチガイ
595デフォルトの名無しさん
2018/09/01(土) 23:41:04.17ID:Z9gelboG yesコマンドってPOSIXユーティリティじゃないのか……。
596デフォルトの名無しさん
2018/09/01(土) 23:46:09.11ID:2NCbxz5b >>592
会話のためじゃなかった、なんの為に数々のレスしているの?君は
まあ、自己顕示欲承認欲求からだけだろうなというのは、数々のレスからは垣間見えるけど、そういうことなのね、そういうことでいいのねw
会話のためじゃなかった、なんの為に数々のレスしているの?君は
まあ、自己顕示欲承認欲求からだけだろうなというのは、数々のレスからは垣間見えるけど、そういうことなのね、そういうことでいいのねw
597デフォルトの名無しさん
2018/09/02(日) 00:04:43.96ID:Tb3tt8fk この板をまともな板にするために
この板でレスしてる
オマエみたいな頭悪い低学歴知恵遅れが幅きかせて
いま、この板は正常に機能してない
低学歴知恵遅れは低学歴知恵遅れの自覚がない
しかも自己評価だけは高い
その分タチがワルイ
まともな人間が近寄らない
そしてその自覚すらない
その自覚がないから更生もしない
つまり更生することもないから排除しかない
つまりオレは
素晴らしく情報価値が高いレスを提供すると同時に
この板から低学歴知恵遅れのクソニート、底辺ITドカタを排除する作業を実施している
わかった?
まともな板にするためにな
ひたすらオレはレスをしている
わかった?
この板でレスしてる
オマエみたいな頭悪い低学歴知恵遅れが幅きかせて
いま、この板は正常に機能してない
低学歴知恵遅れは低学歴知恵遅れの自覚がない
しかも自己評価だけは高い
その分タチがワルイ
まともな人間が近寄らない
そしてその自覚すらない
その自覚がないから更生もしない
つまり更生することもないから排除しかない
つまりオレは
素晴らしく情報価値が高いレスを提供すると同時に
この板から低学歴知恵遅れのクソニート、底辺ITドカタを排除する作業を実施している
わかった?
まともな板にするためにな
ひたすらオレはレスをしている
わかった?
598デフォルトの名無しさん
2018/09/02(日) 00:12:57.53ID:elP7igYW やっぱり移動先はLinux板にしといたほうが
良かったんじゃねーの?w
良かったんじゃねーの?w
599デフォルトの名無しさん
2018/09/02(日) 00:14:17.23ID:fQwovzZh >>597
>この板をまともな板にするために
wwwww マジでっ!?
その言っているのは、いろいろ自分にも当てはまるだろうと思うんだけどな
自己顕示欲承認欲求と見なされるのは嫌らしいというのだけはわかったよw
>この板をまともな板にするために
wwwww マジでっ!?
その言っているのは、いろいろ自分にも当てはまるだろうと思うんだけどな
自己顕示欲承認欲求と見なされるのは嫌らしいというのだけはわかったよw
600デフォルトの名無しさん
2018/09/02(日) 00:15:05.38ID:Tb3tt8fk 当然、オマエも排除の対象だ
601デフォルトの名無しさん
2018/09/02(日) 00:16:13.74ID:fQwovzZh 「排除」www すげええええっwwww
いや、怖い...w
いや、怖い...w
602デフォルトの名無しさん
2018/09/02(日) 00:16:18.96ID:CFWyulsd >>595
これは yes って返せばいいのか!?
これは yes って返せばいいのか!?
603デフォルトの名無しさん
2018/09/02(日) 00:17:25.68ID:Oiltae2A 俺の目の黒いうちはまともにはさせんから安心しろ
604デフォルトの名無しさん
2018/09/02(日) 00:17:46.37ID:8TU9g+nX お前も駆逐してやる
605デフォルトの名無しさん
2018/09/02(日) 00:24:56.83ID:elP7igYW >>602
yじゃね?
yじゃね?
606デフォルトの名無しさん
2018/09/02(日) 00:27:05.66ID:elP7igYW どうでもいいけど、
yesコマンドって
1. なんに使うんだ?
2. なるほど(使いみちを聞いて)
3. いつ使うんだ?(使ったことがない) ← みんなこの状態だよな?w
yesコマンドって
1. なんに使うんだ?
2. なるほど(使いみちを聞いて)
3. いつ使うんだ?(使ったことがない) ← みんなこの状態だよな?w
607デフォルトの名無しさん
2018/09/02(日) 00:28:33.57ID:fQwovzZh >>606
まったくもって、まんまだなw
まったくもって、まんまだなw
608デフォルトの名無しさん
2018/09/02(日) 00:40:01.27ID:elP7igYW だいたい、-yオプションとか、-fオプションとか、-qオプションがあるからねぇ
おっとまたオプションの話だw
オプションついでにいうとtarとかpsってなんでハイフンなしで
tar czvf とか ps aux とか書くんだろう?
ちょっと調べたら昔の仕様?らしいけど
今はtar -czvf とか ps -aux とかできるみたいだけどさ。
まあ今はハイフンなしオプションのことを考慮する必要は無いだろうけど
それに対応したライブラリ(getoptsみたいなの)ってあるんだろうか?
おっとまたオプションの話だw
オプションついでにいうとtarとかpsってなんでハイフンなしで
tar czvf とか ps aux とか書くんだろう?
ちょっと調べたら昔の仕様?らしいけど
今はtar -czvf とか ps -aux とかできるみたいだけどさ。
まあ今はハイフンなしオプションのことを考慮する必要は無いだろうけど
それに対応したライブラリ(getoptsみたいなの)ってあるんだろうか?
609デフォルトの名無しさん
2018/09/02(日) 02:09:13.86ID:4Jf6YH6e >>608
ないのでは? tar の場合はハイフンなしの Old style のオプション指定されていたら
まずはハイフン付きに置き換えてから解釈しているらしい。
https://qiita.com/junjis0203/items/6bb48184b508045e69da
ないのでは? tar の場合はハイフンなしの Old style のオプション指定されていたら
まずはハイフン付きに置き換えてから解釈しているらしい。
https://qiita.com/junjis0203/items/6bb48184b508045e69da
610デフォルトの名無しさん
2018/09/02(日) 06:17:08.93ID:667Fbrpy611デフォルトの名無しさん
2018/09/02(日) 09:16:59.93ID:elP7igYW >>609
なるほど。
初期(いつ?)の頃ってコマンドの開発どうだったんだろうね
ハイフンなしのオプションはしばしば用いられていたのか?
どんなコマンドも最初の実装ってのは存在するわけで、
それが今とどう同じなのか違うのか少し気になってきた
なるほど。
初期(いつ?)の頃ってコマンドの開発どうだったんだろうね
ハイフンなしのオプションはしばしば用いられていたのか?
どんなコマンドも最初の実装ってのは存在するわけで、
それが今とどう同じなのか違うのか少し気になってきた
612デフォルトの名無しさん
2018/09/03(月) 09:07:41.26ID:Phd/3F0T 俺、数百行クラスになったら静的言語にするから、
シェルスクリプトどころかrubyもpythonも使わない。
数百行にもなると書き捨てって規模じゃないし、
静的型検査なしで書くのは面倒くさい。
あとJavaScriptには現代的言語の持つ抽象化機能があらかたあるから、
連想配列も構造体相当品もないシェルスクリプトと同列に並べるのはJavaScriptに失礼。
シェルスクリプトどころかrubyもpythonも使わない。
数百行にもなると書き捨てって規模じゃないし、
静的型検査なしで書くのは面倒くさい。
あとJavaScriptには現代的言語の持つ抽象化機能があらかたあるから、
連想配列も構造体相当品もないシェルスクリプトと同列に並べるのはJavaScriptに失礼。
613デフォルトの名無しさん
2018/09/03(月) 09:13:23.99ID:Wp4QdYvu シェルスクリプトでcのソースを書くのはちょっと面白い。
614デフォルトの名無しさん
2018/09/03(月) 09:52:05.06ID:WkDP4f9E615デフォルトの名無しさん
2018/09/03(月) 10:26:05.35ID:cQ/Qcp18 >>612
大変やね。たまには数十クラス程度のものを作っても良いんやで
大変やね。たまには数十クラス程度のものを作っても良いんやで
616デフォルトの名無しさん
2018/09/03(月) 11:13:52.71ID:Phd/3F0T >>615
そういう小規模なプログラムばかり書いてたらもっと動的言語を
使ってたかもしれないなあ。
就職して最初のプロジェクトがいきなり100万行オーバーのCプログラムの
大規模改造とかで、それ以後も数十万行クラスのプログラムばかり
触ってきて、ちょっと規模が大きくなると処理系の検査に頼る
習慣がついてしまった。
そういう小規模なプログラムばかり書いてたらもっと動的言語を
使ってたかもしれないなあ。
就職して最初のプロジェクトがいきなり100万行オーバーのCプログラムの
大規模改造とかで、それ以後も数十万行クラスのプログラムばかり
触ってきて、ちょっと規模が大きくなると処理系の検査に頼る
習慣がついてしまった。
617デフォルトの名無しさん
2018/09/03(月) 11:21:30.86ID:IWP2OX+N >>616
うん、仕事でしかプログラミングしてないんだろうな
ってのはすぐにわかったよ。
1から作ったことがあれば、いきなり数百クラスに
なることなんて無いからね
保守的な開発しかしたこと無くて、
小さなシステムの組み合わせで大きなものを作るという発想がない
古臭いものメンテナンスしかしたことないんだろうなと
うん、仕事でしかプログラミングしてないんだろうな
ってのはすぐにわかったよ。
1から作ったことがあれば、いきなり数百クラスに
なることなんて無いからね
保守的な開発しかしたこと無くて、
小さなシステムの組み合わせで大きなものを作るという発想がない
古臭いものメンテナンスしかしたことないんだろうなと
618デフォルトの名無しさん
2018/09/03(月) 13:56:12.52ID:Phd/3F0T >>617
あれだけの情報で趣味プログラム書いてないってわかるなんてスゴイ⤴⤴
その推理フツーに間違ってるがw
そもそも小さなプログラムだって普通に書いてるし、だからこそシェルスクリプトスレに来てるわけで、
大きなプログラムしか書いてないとするとその時点で矛盾するじゃん。
自己矛盾した推理を前提に話を進めるとか、同僚にいたら困りそうなタイプだなあ。
あれだけの情報で趣味プログラム書いてないってわかるなんてスゴイ⤴⤴
その推理フツーに間違ってるがw
そもそも小さなプログラムだって普通に書いてるし、だからこそシェルスクリプトスレに来てるわけで、
大きなプログラムしか書いてないとするとその時点で矛盾するじゃん。
自己矛盾した推理を前提に話を進めるとか、同僚にいたら困りそうなタイプだなあ。
619デフォルトの名無しさん
2018/09/03(月) 14:47:29.83ID:IWP2OX+N >>618
いや、そもそもお前の発言が矛盾してるんだって。
↓これお前の発言な
> 俺、数百行クラスになったら静的言語にするから、
> シェルスクリプトどころかrubyもpythonも使わない。
数百行クラスになったら静的言語ってことは
数百行クラスになる前はどうしてるんだって話だよ
いや、そもそもお前の発言が矛盾してるんだって。
↓これお前の発言な
> 俺、数百行クラスになったら静的言語にするから、
> シェルスクリプトどころかrubyもpythonも使わない。
数百行クラスになったら静的言語ってことは
数百行クラスになる前はどうしてるんだって話だよ
620デフォルトの名無しさん
2018/09/03(月) 19:06:52.08ID:HxI+JP9z >>619
> 数百行クラスになったら静的言語ってことは
> 数百行クラスになる前はどうしてるんだって話だよ
え、そこに矛盾はまったくないんだけど、マジでホントに分からないの?
明日の19時くらいまで待ってあげるから自分で考えてみた方がいいぜ。
降参すればもっと早く答を教えてあげるけど、こんな当たり前の話、ホントに分からないとするとそれはそれでまずい気がする。
> 数百行クラスになったら静的言語ってことは
> 数百行クラスになる前はどうしてるんだって話だよ
え、そこに矛盾はまったくないんだけど、マジでホントに分からないの?
明日の19時くらいまで待ってあげるから自分で考えてみた方がいいぜ。
降参すればもっと早く答を教えてあげるけど、こんな当たり前の話、ホントに分からないとするとそれはそれでまずい気がする。
621デフォルトの名無しさん
2018/09/03(月) 19:27:06.50ID:HpF+lD7Q おまいら、自分の書き込みが変に解釈された事の方を問題視しろよ。
相手が客だった場合、どんなに釈明しようが上司はお前が悪いとしか言わんぞ。
相手が客だった場合、どんなに釈明しようが上司はお前が悪いとしか言わんぞ。
622デフォルトの名無しさん
2018/09/03(月) 19:33:15.32ID:HxI+JP9z623デフォルトの名無しさん
2018/09/03(月) 20:06:42.29ID:IWP2OX+N 上の方でもプログラマを自称しながら、アマチュアっぽいやつがいたからなぁw
まあ、明日なにか言おうとしてるみたいだから、何も言えなくなるように
大規模アプリを作るときの鉄則を言っておくよ。
まず大規模アプリを作るときに重要なのは細かくモジュールに分けましょうということ
モジュールという言葉の意味は文脈で微妙に異なるけど、きっちり定義したいわけじゃなく
小さなプログラム、小さなファイル、小さなクラス、小さな関数等に分けましょうという話
これをやっておかないと、例えばC言語のHello Worldであっても、
printfの複雑な実装を、一つのファイルに全部書かないといけなくなくなって
数百行なんてあっという間に超えてしまう
>>612は数百行程度で静的言語にするとか言ってるが、
俺に言わせれば、大規模アプリであっても"1モジュール(最小単位の関数)"で
数百行なんてめったになることなんてないだろうと。
まあ、どうせ >>612はプロジェクト全体で数百行と言ったつもりなんだろうが、
お前は単体テストできるようにしてないのかと。それぞれ独立して考えられるように設計しろよ。
小さなモジュールを組み合わせて作るんだから、プロジェクト全体の行数で考えるのは意味ないんだよ。
Hello Worldでもプロジェクト全体という話ならprintfの実装も含めなきゃいけない。
でもブラックボックスとして扱ってるんだろ? それと同じで自分で作る場合もブラックボックス化させればいいんだよ
つまり小さなモジュールに分けて作れば、静的言語でなくとも大規模アプリは十分作れるわけだ。
もちろんシェルスクリプトであってもね
もし「シェルスクリプトは上から下へ流れるように作るのが普通なんだ。
関数なんて作ってはいけない、複数のファイルに分けたりしてはいけない、複数のスクリプトに分けるのも禁止
だから大きなものは作れないんだ!それが世界の常識なんだ!!」という理屈であれば、
それは頭が固いお前の思い込みが、大きな物を作れない根本原因だろ。ってこと
結局プログラマを自称しているようだが、小さく分けるという設計ができない
アマチュアレベルの人間なんだろうって話だ
まあ、明日なにか言おうとしてるみたいだから、何も言えなくなるように
大規模アプリを作るときの鉄則を言っておくよ。
まず大規模アプリを作るときに重要なのは細かくモジュールに分けましょうということ
モジュールという言葉の意味は文脈で微妙に異なるけど、きっちり定義したいわけじゃなく
小さなプログラム、小さなファイル、小さなクラス、小さな関数等に分けましょうという話
これをやっておかないと、例えばC言語のHello Worldであっても、
printfの複雑な実装を、一つのファイルに全部書かないといけなくなくなって
数百行なんてあっという間に超えてしまう
>>612は数百行程度で静的言語にするとか言ってるが、
俺に言わせれば、大規模アプリであっても"1モジュール(最小単位の関数)"で
数百行なんてめったになることなんてないだろうと。
まあ、どうせ >>612はプロジェクト全体で数百行と言ったつもりなんだろうが、
お前は単体テストできるようにしてないのかと。それぞれ独立して考えられるように設計しろよ。
小さなモジュールを組み合わせて作るんだから、プロジェクト全体の行数で考えるのは意味ないんだよ。
Hello Worldでもプロジェクト全体という話ならprintfの実装も含めなきゃいけない。
でもブラックボックスとして扱ってるんだろ? それと同じで自分で作る場合もブラックボックス化させればいいんだよ
つまり小さなモジュールに分けて作れば、静的言語でなくとも大規模アプリは十分作れるわけだ。
もちろんシェルスクリプトであってもね
もし「シェルスクリプトは上から下へ流れるように作るのが普通なんだ。
関数なんて作ってはいけない、複数のファイルに分けたりしてはいけない、複数のスクリプトに分けるのも禁止
だから大きなものは作れないんだ!それが世界の常識なんだ!!」という理屈であれば、
それは頭が固いお前の思い込みが、大きな物を作れない根本原因だろ。ってこと
結局プログラマを自称しているようだが、小さく分けるという設計ができない
アマチュアレベルの人間なんだろうって話だ
624デフォルトの名無しさん
2018/09/03(月) 20:11:02.86ID:lS5Tq6xt 渾身の長文わろたw
625デフォルトの名無しさん
2018/09/03(月) 20:13:45.46ID:IWP2OX+N まあいつものことだなw
626612
2018/09/03(月) 20:30:39.38ID:HxI+JP9z627デフォルトの名無しさん
2018/09/03(月) 20:40:49.84ID:IWP2OX+N >>626
いや、別にお前にレスしてないしw
大規模アプリを作るときの鉄則を言っただけだし
明日の19時過ぎたら、なんか答え書くんだろ?
それを書いてくれればいいよ。
俺の文章読んで恥ずかしくないならね
まあ一つ言うとしたら、技術力の差ってやっぱりあるよな
他の人が動的言語できているという事実があるというのに
俺はできないんだ!ってよく恥ずかしげもなく言えるよなーと
いや、別にお前にレスしてないしw
大規模アプリを作るときの鉄則を言っただけだし
明日の19時過ぎたら、なんか答え書くんだろ?
それを書いてくれればいいよ。
俺の文章読んで恥ずかしくないならね
まあ一つ言うとしたら、技術力の差ってやっぱりあるよな
他の人が動的言語できているという事実があるというのに
俺はできないんだ!ってよく恥ずかしげもなく言えるよなーと
628デフォルトの名無しさん
2018/09/03(月) 20:43:08.65ID:lS5Tq6xt 大規模アプリを作るときの鉄則www
なんやろ?www
なんやろ?www
629デフォルトの名無しさん
2018/09/03(月) 20:43:49.57ID:IWP2OX+N そうだ、ヒントをやろうw
俺、(1関数で)数百行クラスになったら設計が悪い思って作り直すから、
数百行クラスになることはない
俺、(1関数で)数百行クラスになったら設計が悪い思って作り直すから、
数百行クラスになることはない
630デフォルトの名無しさん
2018/09/03(月) 20:45:19.54ID:RephN+2M なんか一つ一つが長文でここ最近ずっとだらっと最下部までスクロールして閉じるを繰り返してるわ
631612
2018/09/03(月) 21:00:52.21ID:HxI+JP9z これはアレですね。
(a)と答えると自分の間違いを認めることになって耐えられないし、
(b)と答えると明日の19時以降に赤っ恥を書くことになるしで、
(a)とも(b)とも答えられないってヤツですねw
分かりやすい。
自分の間違いを認めると死んぢゃう病に罹患中って奴だw
(a)と答えると自分の間違いを認めることになって耐えられないし、
(b)と答えると明日の19時以降に赤っ恥を書くことになるしで、
(a)とも(b)とも答えられないってヤツですねw
分かりやすい。
自分の間違いを認めると死んぢゃう病に罹患中って奴だw
632デフォルトの名無しさん
2018/09/03(月) 21:09:15.31ID:E2St7m4+ 個々の簡単な完結した機能の簡単なシェルにしといたほうが
単体試験仕様書の設計も簡単
結合試験仕様書の設計も簡単
総合試験仕様書の設計も簡単
知恵遅れが作ると試験による検証すらできないシステムができあがる
単体試験仕様書の設計も簡単
結合試験仕様書の設計も簡単
総合試験仕様書の設計も簡単
知恵遅れが作ると試験による検証すらできないシステムができあがる
633デフォルトの名無しさん
2018/09/03(月) 21:12:48.08ID:IWP2OX+N634デフォルトの名無しさん
2018/09/03(月) 21:13:14.86ID:IWP2OX+N635デフォルトの名無しさん
2018/09/03(月) 21:14:05.20ID:ttVcJTrG TypeScript・Haxe の違い
大規模開発なら圧倒的に、Haxe
大規模開発なら圧倒的に、Haxe
636デフォルトの名無しさん
2018/09/03(月) 21:17:55.11ID:lS5Tq6xt637デフォルトの名無しさん
2018/09/03(月) 21:27:46.12ID:zLYH5Np3 すげーなこのスレ。
とうとうrubyガイジも呼び寄せたぞ。
オールスターじゃん
とうとうrubyガイジも呼び寄せたぞ。
オールスターじゃん
638デフォルトの名無しさん
2018/09/03(月) 21:28:01.12ID:IWP2OX+N 作業していて気づいたんだが >>537-538 の
どういう場合にシェルスクリプトが適しているかの話
少し毛色が違うが、コールバックの仕組みを取り入れるなら
必然的にシェルスクリプトで書かなければいけなくなるな
つまり
1. 簡単なことをやるためにシェルスクリプトを使う
2. だけど中身で一部複雑な処理があるので、そこだけ別コマンドを使う
3. その別コマンドから、シェルスクリプトに定義したコールバック関数を呼び出す
というようなことをやろうと思ったが、2の「別コマンド」がシェルスクリプト以外(正確には別プロセス)だと
シェルスクリプトに定義したコールバック関数を呼び出せない
つまりPerlで書くならば以下のような感じで、正規表現置換をsedコマンドで
実行してしまったら、(スクリプトの内部関数である)foo関数を呼び出すことができない
sub foo { uc($_[0]) }
$text = 'abcdefg';
$text =~ s/([a-c])/foo($1)/eg;
print $text;
どういう場合にシェルスクリプトが適しているかの話
少し毛色が違うが、コールバックの仕組みを取り入れるなら
必然的にシェルスクリプトで書かなければいけなくなるな
つまり
1. 簡単なことをやるためにシェルスクリプトを使う
2. だけど中身で一部複雑な処理があるので、そこだけ別コマンドを使う
3. その別コマンドから、シェルスクリプトに定義したコールバック関数を呼び出す
というようなことをやろうと思ったが、2の「別コマンド」がシェルスクリプト以外(正確には別プロセス)だと
シェルスクリプトに定義したコールバック関数を呼び出せない
つまりPerlで書くならば以下のような感じで、正規表現置換をsedコマンドで
実行してしまったら、(スクリプトの内部関数である)foo関数を呼び出すことができない
sub foo { uc($_[0]) }
$text = 'abcdefg';
$text =~ s/([a-c])/foo($1)/eg;
print $text;
639デフォルトの名無しさん
2018/09/03(月) 21:28:41.85ID:RephN+2M さすがの総合スレ
640デフォルトの名無しさん
2018/09/03(月) 21:33:19.27ID:IWP2OX+N どうでもいいが(俺にとってはどうでも良くないが)
sedとawkとgrepとexprで使える正規表現のパターンが違うのって地味に嫌だなw
もし1から仕様を決められるなら、全部統一されるんだろうな。
HTML5みたいに一度足並み揃えた仕様にリセットされてほしい
sedとawkとgrepとexprで使える正規表現のパターンが違うのって地味に嫌だなw
もし1から仕様を決められるなら、全部統一されるんだろうな。
HTML5みたいに一度足並み揃えた仕様にリセットされてほしい
641デフォルトの名無しさん
2018/09/03(月) 21:51:24.51ID:IWP2OX+N sedの非互換性も辛い・・・というかGNUが便利すぎなんだろうな
642デフォルトの名無しさん
2018/09/03(月) 22:05:03.93ID:5Vmu1cpr643デフォルトの名無しさん
2018/09/03(月) 23:01:37.14ID:E2St7m4+ もうコタエは書いたからな
次の患者さんどうぞ
次の患者さんどうぞ
644デフォルトの名無しさん
2018/09/03(月) 23:24:25.75ID:O250GQ8L 誰がどう見ても患者はお前だろ。精神の
645デフォルトの名無しさん
2018/09/03(月) 23:39:11.39ID:YrDXnGw5 >>643も精神のという意味だろう。この読めなさはw
646デフォルトの名無しさん
2018/09/03(月) 23:57:12.64ID:E2St7m4+ キミラは重篤な患者さんだからな
しょうがない
しょうがない
647デフォルトの名無しさん
2018/09/03(月) 23:59:36.46ID:IWP2OX+N sedで「command i expects \ followed by text」というエラーが出たが
なんか-iの話ばっかり見つかって、期待する答えがなかなか見つからないwww
GNUだと
echo text | sed 'i===' って書くだけで簡単に
===
text
と表示されるんだが、
BSDだと上記エラーがでて、しばらくどうすりゃいいの?状態だったw
持ってた sed & awk ポケットリファレンス 眺めても書いてあることがさっぱりでさ
正しく(POSIX)ではこう書かないといけないんだな。改行がいるとかw
echo text | sed 'i\
===
'
これを1行で書くために、改行を変数に入れるべくこんな変なことをしないといけなかったりw
LF=$(printf '\012_')
LF=${LF%_}
sedって置換機能以外の、本来stream editorとしてバリバリ使いこなそうと思ったら難しいな
ホールドスペース使いこなせる気がしない。何ができるのかも想像できないしw
なんか-iの話ばっかり見つかって、期待する答えがなかなか見つからないwww
GNUだと
echo text | sed 'i===' って書くだけで簡単に
===
text
と表示されるんだが、
BSDだと上記エラーがでて、しばらくどうすりゃいいの?状態だったw
持ってた sed & awk ポケットリファレンス 眺めても書いてあることがさっぱりでさ
正しく(POSIX)ではこう書かないといけないんだな。改行がいるとかw
echo text | sed 'i\
===
'
これを1行で書くために、改行を変数に入れるべくこんな変なことをしないといけなかったりw
LF=$(printf '\012_')
LF=${LF%_}
sedって置換機能以外の、本来stream editorとしてバリバリ使いこなそうと思ったら難しいな
ホールドスペース使いこなせる気がしない。何ができるのかも想像できないしw
648デフォルトの名無しさん
2018/09/04(火) 00:05:33.37ID:gZnu4stV ココは隔離病棟の集中治療室
649デフォルトの名無しさん
2018/09/04(火) 01:03:24.22ID:zS1fHlcp 自覚はあるんだな
650デフォルトの名無しさん
2018/09/04(火) 06:08:51.64ID:fH4o5qCk ホールドスペースをバリバリ使ってた。使いこなしてたかはともかく…
20 年以上も前のことだから、もうできない。
20 年以上も前のことだから、もうできない。
651デフォルトの名無しさん
2018/09/04(火) 08:53:12.61ID:jvRjWg/I ホールドスペースやブランチを使いたくなったらsedやめて他の言語使えって、Macで女子高生が話してた。
652デフォルトの名無しさん
2018/09/04(火) 08:53:37.92ID:ROt4XEkp sedがなんで分かりづらいかの理由がわかった
b(とt)の解説が悪いんだよ。
たいてい、b・・・無条件ジャンプのように書いてあるから
これだけでどうやってフロー制御すりゃいいんだよ?ってなる
正確にはこれ、条件分岐なんだな。ニュアンス的にはこんな感じ
/条件/b :label
bの前はアドレスってことだが、正規表現でもアドレス指定できるから
これを条件とすれば、条件分岐となる。
だけどアドレス(条件)はすべてのコマンドで使えるものだからなのか
そのコマンドの説明のところで省いてしまうから、解説だけを読んでも
ジャンプはあるが条件付きジャンプがねーじゃねーかってなるわけだ
条件文があるならあとは簡単だ。普通の手続き型のコードだわ
b(とt)の解説が悪いんだよ。
たいてい、b・・・無条件ジャンプのように書いてあるから
これだけでどうやってフロー制御すりゃいいんだよ?ってなる
正確にはこれ、条件分岐なんだな。ニュアンス的にはこんな感じ
/条件/b :label
bの前はアドレスってことだが、正規表現でもアドレス指定できるから
これを条件とすれば、条件分岐となる。
だけどアドレス(条件)はすべてのコマンドで使えるものだからなのか
そのコマンドの説明のところで省いてしまうから、解説だけを読んでも
ジャンプはあるが条件付きジャンプがねーじゃねーかってなるわけだ
条件文があるならあとは簡単だ。普通の手続き型のコードだわ
653デフォルトの名無しさん
2018/09/04(火) 09:49:28.21ID:+CEwKGA5 "Commands which accept address ranges" って書いてあるやん…
654デフォルトの名無しさん
2018/09/04(火) 10:20:13.70ID:ROt4XEkp655デフォルトの名無しさん
2018/09/04(火) 11:30:26.75ID:+CEwKGA5 >>654
数行上に書いてあるで
数行上に書いてあるで
656デフォルトの名無しさん
2018/09/04(火) 12:17:38.09ID:ROt4XEkp >>655
何度も同じことを言わせないでくれ
何度も同じことを言わせないでくれ
657デフォルトの名無しさん
2018/09/04(火) 13:15:59.22ID:+CEwKGA5 実際には3行上だった
658デフォルトの名無しさん
2018/09/04(火) 18:17:39.81ID:i2l0SoWn >>652
そこは、素人お断りですw よく読みましょう。
This is just a brief synopsis of sed commands to serve as a reminder to those who already know sed
そこは、素人お断りですw よく読みましょう。
This is just a brief synopsis of sed commands to serve as a reminder to those who already know sed
659612
2018/09/04(火) 19:19:21.04ID:GKTPwsNb 19時過ぎたから答を書く。
言っておくがチョー当たり前のつまらん話だよ。
・短いプログラムは、シェルスクリプトやruby/pythonなど動的型付き言語で書くことが多い
・拡張していくうちに、これ以上長くなったら静的型付き言語で書いた方が楽そうだと思ったら、まるまる静的型付き言語で書き直す。あまり長くなると書き直しも面倒になるから、早めに手を打つ。
・長くなりそうだと初めから分かっている場合は、もちろん最初から静的型付き言語で書く
ってだけだよ。
静的型付き言語使いにはわりとよくある開発形態のはずだが、なんで>>612が矛盾してるなんて結論に至るのか。
言っておくがチョー当たり前のつまらん話だよ。
・短いプログラムは、シェルスクリプトやruby/pythonなど動的型付き言語で書くことが多い
・拡張していくうちに、これ以上長くなったら静的型付き言語で書いた方が楽そうだと思ったら、まるまる静的型付き言語で書き直す。あまり長くなると書き直しも面倒になるから、早めに手を打つ。
・長くなりそうだと初めから分かっている場合は、もちろん最初から静的型付き言語で書く
ってだけだよ。
静的型付き言語使いにはわりとよくある開発形態のはずだが、なんで>>612が矛盾してるなんて結論に至るのか。
660デフォルトの名無しさん
2018/09/04(火) 19:33:33.93ID:FEVdkErP とりあえずここまでレス飛ばしてきたんでまとめを頼む
661612
2018/09/04(火) 19:43:12.33ID:GKTPwsNb662デフォルトの名無しさん
2018/09/04(火) 19:43:56.78ID:FEVdkErP 把握
663612
2018/09/04(火) 19:53:45.96ID:GKTPwsNb あ、>>612の「数百行クラス」ってのを
「(オブジェクト指向言語の)1つのクラスのコードサイズが数百行」と誤解されたようではあるな。
これは俺の表現も誤解を招くものではあった。
単に「1プログラムのコードサイズが数百行くらい」って意味で書いてたんだけどね。
まさかシェルスクリプトスレでオブジェクト指向のクラスのことだと解釈されるとは思わなかった。
「(オブジェクト指向言語の)1つのクラスのコードサイズが数百行」と誤解されたようではあるな。
これは俺の表現も誤解を招くものではあった。
単に「1プログラムのコードサイズが数百行くらい」って意味で書いてたんだけどね。
まさかシェルスクリプトスレでオブジェクト指向のクラスのことだと解釈されるとは思わなかった。
664デフォルトの名無しさん
2018/09/04(火) 21:01:45.22ID:wTvbP50/665612
2018/09/04(火) 21:24:00.90ID:GKTPwsNb >>664
500行を越えるぐらいからかな。
常にその原則を守ってるわけでもなくて、不特定ユーザーに配布するスクリプトではBourne shellで3000行ぐらいのをメンテしてたりもする。
これは規模的に結構辛い。orz
言語は最近はCrystalを試してる。
まだ書き慣れたって段階には達してないけど。
500行を越えるぐらいからかな。
常にその原則を守ってるわけでもなくて、不特定ユーザーに配布するスクリプトではBourne shellで3000行ぐらいのをメンテしてたりもする。
これは規模的に結構辛い。orz
言語は最近はCrystalを試してる。
まだ書き慣れたって段階には達してないけど。
666デフォルトの名無しさん
2018/09/04(火) 21:57:53.47ID:wTvbP50/ >>665
俺は数百行って聞くと2、300をイメージするから、どのぐらいか気になった
crystalとは・・・俺は1.0も出てないものは使えんなあ
うちは処理結果が揮発で良いなら基本bash/pythonを使ってる
俺は数百行って聞くと2、300をイメージするから、どのぐらいか気になった
crystalとは・・・俺は1.0も出てないものは使えんなあ
うちは処理結果が揮発で良いなら基本bash/pythonを使ってる
667デフォルトの名無しさん
2018/09/04(火) 22:13:29.28ID:ROt4XEkp >>659
やっぱり矛盾してるじゃんw
1. 俺、数百行クラスになったら静的言語にするから、シェルスクリプトどころかrubyもpythonも使わない。
2. 短いプログラムは、シェルスクリプトやruby/pythonなど動的型付き言語で書くことが多い
3. 拡張していくうちに、これ以上長くなったら静的型付き言語で書いた方が楽そうだと思ったら、まるまる静的型付き言語で書き直す。
では、長くならない場合は?
シェルスクリプトやrubyもpythonを使うんだろw
やっぱり矛盾してるじゃんw
1. 俺、数百行クラスになったら静的言語にするから、シェルスクリプトどころかrubyもpythonも使わない。
2. 短いプログラムは、シェルスクリプトやruby/pythonなど動的型付き言語で書くことが多い
3. 拡張していくうちに、これ以上長くなったら静的型付き言語で書いた方が楽そうだと思ったら、まるまる静的型付き言語で書き直す。
では、長くならない場合は?
シェルスクリプトやrubyもpythonを使うんだろw
668デフォルトの名無しさん
2018/09/04(火) 22:15:09.44ID:ROt4XEkp >>665
> 常にその原則を守ってるわけでもなくて、不特定ユーザーに配布するスクリプトではBourne shellで3000行ぐらいのをメンテしてたりもする。
小さく分けようぜw
ファイルを分けたり、関数にすりゃ、
たった3000行なんて十分メンテ可能だろ
> 常にその原則を守ってるわけでもなくて、不特定ユーザーに配布するスクリプトではBourne shellで3000行ぐらいのをメンテしてたりもする。
小さく分けようぜw
ファイルを分けたり、関数にすりゃ、
たった3000行なんて十分メンテ可能だろ
669デフォルトの名無しさん
2018/09/04(火) 22:15:31.25ID:dB7ca3M3 やはりワッチョイいるな
670デフォルトの名無しさん
2018/09/04(火) 22:18:59.76ID:ROt4XEkp >>663
> まさかシェルスクリプトスレでオブジェクト指向のクラスのことだと解釈されるとは思わなかった。
自分でrubyやpythonも使わないって言ったんだろw
自分でオブジェクト指向の言語だしといて何いってんだよ
結局最初に予測したとおり、大きな(それほど大きくもないがw)
プログラムを作るときの、小さなモジュールで作るってことを知らないだけじゃん
> まさかシェルスクリプトスレでオブジェクト指向のクラスのことだと解釈されるとは思わなかった。
自分でrubyやpythonも使わないって言ったんだろw
自分でオブジェクト指向の言語だしといて何いってんだよ
結局最初に予測したとおり、大きな(それほど大きくもないがw)
プログラムを作るときの、小さなモジュールで作るってことを知らないだけじゃん
671612
2018/09/04(火) 22:45:12.74ID:GKTPwsNb >>667
> では、長くならない場合は?
> シェルスクリプトやrubyもpythonを使うんだろw
勿論そうだよ。
> やっぱり矛盾してるじゃんw
> 1. 俺、静的言語にするから、シェルスクリプトどころかrubyもpythonも使わない。
「シェルスクリプトどころかrubyもpythonも使わない」ってのが「数百行クラスになったら」に限定された記述だってことに気づかないあたりが君の鈍いところ。
初見で気づかないのはまあ元の文が多義的に解釈できるから仕方ないとしても、
この期に及んで気づいてないのは致命的かな。
> では、長くならない場合は?
> シェルスクリプトやrubyもpythonを使うんだろw
勿論そうだよ。
> やっぱり矛盾してるじゃんw
> 1. 俺、静的言語にするから、シェルスクリプトどころかrubyもpythonも使わない。
「シェルスクリプトどころかrubyもpythonも使わない」ってのが「数百行クラスになったら」に限定された記述だってことに気づかないあたりが君の鈍いところ。
初見で気づかないのはまあ元の文が多義的に解釈できるから仕方ないとしても、
この期に及んで気づいてないのは致命的かな。
672612
2018/09/04(火) 22:52:14.96ID:GKTPwsNb673デフォルトの名無しさん
2018/09/04(火) 23:01:52.48ID:ROt4XEkp >>672
(全てのプログラムは)長くなるからシェルスクリプトどころかrubyもpythonも使わない
って言っただろ?
長くならないプログラムがあって
「その場合はシェルスクリプトやrubyもpythonを使ってる」というのなら、
明らかな矛盾。使わないと言っておきながら使ってると言ってる。
>>671
負担が大きいから何だって言うんだ?
負担の大小ではなく、管理可能かどうかだろ
現実見てみろ。動的言語でも全体で何万行もあるシステムは作れている
お前が作れないのは単にお前の能力不足でしかない
その事に気づいたようで、動的言語では作れないんだというニュアンスから
負担が大きいに言い換えたようだが、バレバレだw
最初(>>623)に言っておいたとおり、プロジェクト全体の行数を考えるのは意味がない
> 小さなモジュールを組み合わせて作るんだから、プロジェクト全体の行数で考えるのは意味ないんだよ。
小さいモジュールのあつまりで作ればいいだけの話
小さいモジュールの集まりで作るから、
> 小さなプログラム、小さなファイル、小さなクラス、小さな関数等
は長くならない
(全てのプログラムは)長くなるからシェルスクリプトどころかrubyもpythonも使わない
って言っただろ?
長くならないプログラムがあって
「その場合はシェルスクリプトやrubyもpythonを使ってる」というのなら、
明らかな矛盾。使わないと言っておきながら使ってると言ってる。
>>671
負担が大きいから何だって言うんだ?
負担の大小ではなく、管理可能かどうかだろ
現実見てみろ。動的言語でも全体で何万行もあるシステムは作れている
お前が作れないのは単にお前の能力不足でしかない
その事に気づいたようで、動的言語では作れないんだというニュアンスから
負担が大きいに言い換えたようだが、バレバレだw
最初(>>623)に言っておいたとおり、プロジェクト全体の行数を考えるのは意味がない
> 小さなモジュールを組み合わせて作るんだから、プロジェクト全体の行数で考えるのは意味ないんだよ。
小さいモジュールのあつまりで作ればいいだけの話
小さいモジュールの集まりで作るから、
> 小さなプログラム、小さなファイル、小さなクラス、小さな関数等
は長くならない
674デフォルトの名無しさん
2018/09/04(火) 23:05:52.86ID:ROt4XEkp シェルスクリプトの話に戻すならば、
頭が固い人のたわごとは無視して、
複数のファイルで作れば良いってことなんだよ
もちろん、100行のコードと、
100行の10個のファイルだと後者のほうが
複雑だが(そりゃコード量が増えてるからな)
100行の10個のファイルの動的言語と
100行の10個のファイルの静的言語の
複雑度は変わらない
頭が固い人のたわごとは無視して、
複数のファイルで作れば良いってことなんだよ
もちろん、100行のコードと、
100行の10個のファイルだと後者のほうが
複雑だが(そりゃコード量が増えてるからな)
100行の10個のファイルの動的言語と
100行の10個のファイルの静的言語の
複雑度は変わらない
675デフォルトの名無しさん
2018/09/04(火) 23:06:43.34ID:ROt4XEkp 行とかいたら、コメント含めたりするかw
一応実行行(ステップ数)と言い換えておく
一応実行行(ステップ数)と言い換えておく
676デフォルトの名無しさん
2018/09/04(火) 23:14:44.94ID:RaX7EawA この話オチあるんか?
677デフォルトの名無しさん
2018/09/04(火) 23:17:47.09ID:ROt4XEkp678デフォルトの名無しさん
2018/09/04(火) 23:20:18.74ID:ROt4XEkp C言語に連想配列はなくても、誰かが作ったライブラリはある
そう考えると>>571の結論に戻る
> まとめると、現在のシェルスクリプトが大規模開発に向いてないのは
> フレームワークやライブラリが不足しているから。
> 俺がシェルスクリプトで大規模開発をやらないのは、
> シェルスクリプトが適した内容で大規模なものを思いつかないから。
> それはそれとして中規模を小規模にするためのフレームワークやライブラリは欲しい。
そう考えると>>571の結論に戻る
> まとめると、現在のシェルスクリプトが大規模開発に向いてないのは
> フレームワークやライブラリが不足しているから。
> 俺がシェルスクリプトで大規模開発をやらないのは、
> シェルスクリプトが適した内容で大規模なものを思いつかないから。
> それはそれとして中規模を小規模にするためのフレームワークやライブラリは欲しい。
>>678
>誰かが作ったライブラリはある
それは具体的にどこにあるのですか?
それを見つけたとして、それを自分のプログラムに適用できるかどうか判断できるのですか?
単に(論理的に)存在すること、だけを言及しても意味がないと思いますけれども
>誰かが作ったライブラリはある
それは具体的にどこにあるのですか?
それを見つけたとして、それを自分のプログラムに適用できるかどうか判断できるのですか?
単に(論理的に)存在すること、だけを言及しても意味がないと思いますけれども
680デフォルトの名無しさん
2018/09/04(火) 23:26:38.84ID:ROt4XEkp C言語用連想配列の話?
681デフォルトの名無しさん
2018/09/04(火) 23:27:47.89ID:ROt4XEkp http://d.hatena.ne.jp/fd0/20080419/p1
glibc
言わずと知れた GNU の標準 C ライブラリ。search.h というヘッダがあり、
その中にハッシュテーブルを管理できる API が提供されている。
glibcなら誰でも知ってるだろう
glibc
言わずと知れた GNU の標準 C ライブラリ。search.h というヘッダがあり、
その中にハッシュテーブルを管理できる API が提供されている。
glibcなら誰でも知ってるだろう
682612
2018/09/04(火) 23:29:35.30ID:GKTPwsNb >>673
どうも君は健忘症みたいだから>>612から引用してあげるね。
> 俺、数百行クラスになったら静的言語にするから、シェルスクリプトどころかrubyもpythonも使わない。
「数百行クラスになったら」って書いてますね...
相手の発言を確認せずに「全てのプログラムは」とか言っちゃうの、仕事でやったら信用失うから今後は気をつけた方がいいと思うよ。
> 静的型検査なしで書くのは面倒くさい。
はい、「動的言語では作れないんだというニュアンス」なんて全くないですね。
動的言語だと「面倒くさい」って書いてるだけでした。
仕事でもこんな調子でコミュニケーションしてるのかなあ。
> 小さいモジュールの集まりで作るから、
せっかく「まったく同じようにモジュール化しても、静的型付き言語に比べて動的型付き言語は人間にかかる負担が大きい」って書いてあげたのに読めてないんだね。
モジュール粒度が同じでも、動的型付き言語と静的型付き言語では、人間の負担するコストに違いがあるんですよ。
どうも君は健忘症みたいだから>>612から引用してあげるね。
> 俺、数百行クラスになったら静的言語にするから、シェルスクリプトどころかrubyもpythonも使わない。
「数百行クラスになったら」って書いてますね...
相手の発言を確認せずに「全てのプログラムは」とか言っちゃうの、仕事でやったら信用失うから今後は気をつけた方がいいと思うよ。
> 静的型検査なしで書くのは面倒くさい。
はい、「動的言語では作れないんだというニュアンス」なんて全くないですね。
動的言語だと「面倒くさい」って書いてるだけでした。
仕事でもこんな調子でコミュニケーションしてるのかなあ。
> 小さいモジュールの集まりで作るから、
せっかく「まったく同じようにモジュール化しても、静的型付き言語に比べて動的型付き言語は人間にかかる負担が大きい」って書いてあげたのに読めてないんだね。
モジュール粒度が同じでも、動的型付き言語と静的型付き言語では、人間の負担するコストに違いがあるんですよ。
683612
2018/09/04(火) 23:32:47.66ID:GKTPwsNb search.h のハッシュ関数は別にglibc依存じゃなくてPOSIXだよ。
日頃POSIX POSIX言ってるけど、シェルスクリプトの範囲しか知らない人かな。
日頃POSIX POSIX言ってるけど、シェルスクリプトの範囲しか知らない人かな。
684デフォルトの名無しさん
2018/09/04(火) 23:33:18.38ID:ROt4XEkp >>682
> 「数百行クラスになったら」って書いてますね...
だから矛盾してるんだよ。
「条件付きの結論」っていうのは、その結論(シェルスクリプトやRubyやPythonを使わない)が
正しいのはあくまで条件を満たされている場合であって
条件を満たさなければ、シェルスクリプトやRubyやPythonを使うということになる
> 「数百行クラスになったら」って書いてますね...
だから矛盾してるんだよ。
「条件付きの結論」っていうのは、その結論(シェルスクリプトやRubyやPythonを使わない)が
正しいのはあくまで条件を満たされている場合であって
条件を満たさなければ、シェルスクリプトやRubyやPythonを使うということになる
685デフォルトの名無しさん
2018/09/04(火) 23:34:16.08ID:ROt4XEkp >>683
> search.h のハッシュ関数は別にglibc依存じゃなくてPOSIXだよ。
いつ俺がPOSIXじゃないって言ったんだ?
「glibcで提供している」と書いてあるブログを持ってきただけだろ
> search.h のハッシュ関数は別にglibc依存じゃなくてPOSIXだよ。
いつ俺がPOSIXじゃないって言ったんだ?
「glibcで提供している」と書いてあるブログを持ってきただけだろ
686デフォルトの名無しさん
2018/09/04(火) 23:34:31.63ID:ROt4XEkp ほんとどうでもいいところにばっかり突っ込むよなw
687デフォルトの名無しさん
2018/09/04(火) 23:36:12.99ID:idomDZwg お前がな
688デフォルトの名無しさん
2018/09/04(火) 23:36:56.71ID:ROt4XEkp >>682
> せっかく「まったく同じようにモジュール化しても、静的型付き言語に比べて動的型付き言語は人間にかかる負担が大きい」って書いてあげたのに読めてないんだね。
> モジュール粒度が同じでも、動的型付き言語と静的型付き言語では、人間の負担するコストに違いがあるんですよ。
だから、負担が大きいが、別に作れるだろって話
お前は極端なんだよ。規模が大きくなったときのことで悩んで、負担が大きいから使わないと
規模を大きくしなければ済む話なのに、それに気づいていない
まあ行数が同じなら、負担なんて大して変わらんがね。
動的型付き言語で大変なら、静的型付き言語でも大変
> せっかく「まったく同じようにモジュール化しても、静的型付き言語に比べて動的型付き言語は人間にかかる負担が大きい」って書いてあげたのに読めてないんだね。
> モジュール粒度が同じでも、動的型付き言語と静的型付き言語では、人間の負担するコストに違いがあるんですよ。
だから、負担が大きいが、別に作れるだろって話
お前は極端なんだよ。規模が大きくなったときのことで悩んで、負担が大きいから使わないと
規模を大きくしなければ済む話なのに、それに気づいていない
まあ行数が同じなら、負担なんて大して変わらんがね。
動的型付き言語で大変なら、静的型付き言語でも大変
690デフォルトの名無しさん
2018/09/04(火) 23:40:26.52ID:ROt4XEkp お前がな
691デフォルトの名無しさん
2018/09/04(火) 23:41:11.31ID:gZnu4stV 隔離病棟はものすごいことになってる
692デフォルトの名無しさん
2018/09/04(火) 23:41:41.00ID:ROt4XEkp693デフォルトの名無しさん
2018/09/04(火) 23:42:22.29ID:+CEwKGA5 元の板に戻ったほうが良いんじゃないかな
694デフォルトの名無しさん
2018/09/04(火) 23:42:47.42ID:Gq1Hay5m キチガイに触んなすな
695612
2018/09/04(火) 23:43:57.27ID:GKTPwsNb いや、IDがないともっと悲惨だよ、これ。
次スレはワッチョイもつけた方がいい気がする。
次スレはワッチョイもつけた方がいい気がする。
696デフォルトの名無しさん
2018/09/04(火) 23:44:19.45ID:ROt4XEkp698デフォルトの名無しさん
2018/09/04(火) 23:46:10.08ID:gZnu4stV 懸命に手を尽くしたましたが
手の施しようがありません
手の施しようがありません
699デフォルトの名無しさん
2018/09/04(火) 23:47:02.77ID:ROt4XEkp >>695
ワッチョイついてるスレでの俺の活躍を見よ(笑)
Git 16©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1502726047/458-
ワッチョイついてるスレでの俺の活躍を見よ(笑)
Git 16©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1502726047/458-
700612
2018/09/04(火) 23:47:07.77ID:GKTPwsNb やっぱり前スレの荒らしおよび、UNIX 板で後から意図的に重複スレ立てた人物だったんだね。
まあそうだろうとは思ってはいたが。
まあそうだろうとは思ってはいたが。
701デフォルトの名無しさん
2018/09/04(火) 23:48:37.75ID:ROt4XEkp >>700
ひどいな。ネタに決まってるじゃないか
ひどいな。ネタに決まってるじゃないか
702デフォルトの名無しさん
2018/09/04(火) 23:50:01.24ID:gZnu4stV なるほどサマータイムスレであばれた低学歴知恵遅れの一部で
マジキチだったヤツか
マジキチだったヤツか
703デフォルトの名無しさん
2018/09/04(火) 23:50:48.48ID:zILy+Zrq 迷惑なスレの乱立は
ID:ROt4XEkp の仕業だったんだな
ID:ROt4XEkp の仕業だったんだな
704デフォルトの名無しさん
2018/09/04(火) 23:50:57.04ID:ROt4XEkp それは半角使うやつだろ
はっ!お前半角使ってるじゃん!
はっ!お前半角使ってるじゃん!
705612
2018/09/04(火) 23:51:43.34ID:GKTPwsNb 福岡県かあ。関東かと思ってたが違ったんだな。
707デフォルトの名無しさん
2018/09/04(火) 23:55:45.20ID:ROt4XEkp >>705
実はもう一つプロバイダ持ってるw
そっちはホスト名調べても県名がでない
予備回線で昔(10年以上前)は大手プロバイダでも時々回線異常発生してたんで
持ってたんだけど、最近は使わないからやめようかと思ってるけどね
もう2ちゃんねるでスレ立てるするときにしか使ってないしw
実はもう一つプロバイダ持ってるw
そっちはホスト名調べても県名がでない
予備回線で昔(10年以上前)は大手プロバイダでも時々回線異常発生してたんで
持ってたんだけど、最近は使わないからやめようかと思ってるけどね
もう2ちゃんねるでスレ立てるするときにしか使ってないしw
708デフォルトの名無しさん
2018/09/04(火) 23:56:24.91ID:ROt4XEkp んで、元の板に戻るのかどうか?
俺はどっちでもいいよ
俺はどっちでもいいよ
709デフォルトの名無しさん
2018/09/04(火) 23:58:49.53ID:ROt4XEkp ワッチョイ板でも書いたけど日付変わったらIPアドレス変更するよ!
攻撃しないでね!(まあやっても無駄だけど)
攻撃しないでね!(まあやっても無駄だけど)
710デフォルトの名無しさん
2018/09/04(火) 23:59:32.47ID:ROt4XEkp (まあIPアドレス変わっても書き込み内容が独特なのでストーキングしていればすぐに分かる)
711612
2018/09/05(水) 00:01:43.69ID:D7naH2YM これだけ荒らしておいて、まだUNIX板に戻る選択肢があると思ってるとは...
絶対に戻らないっことが、今回の
件でさらに強固になっただけだね。
そして ID:+CEwKGA5 はもう一つのプロバイダーを使った自演だったというわけだ。
絶対に戻らないっことが、今回の
件でさらに強固になっただけだね。
そして ID:+CEwKGA5 はもう一つのプロバイダーを使った自演だったというわけだ。
712デフォルトの名無しさん
2018/09/05(水) 00:05:18.62ID:NuDqxS96 疑心暗鬼(笑)
713デフォルトの名無しさん
2018/09/05(水) 00:33:48.24ID:uppndDPA まず馬鹿ガイキチには叶わないっていう如実なサンプルってことで、以後ID:ROt4XEkp とわかったら途中でも終了スルーでいいだろう
714デフォルトの名無しさん
2018/09/05(水) 03:10:59.07ID:mw/V56zA 元に戻るってのはID無くすってことだぞ
全く解決になってない
解決ってのはワッチョイなりIPなり表示させることだ
全く解決になってない
解決ってのはワッチョイなりIPなり表示させることだ
715デフォルトの名無しさん
2018/09/05(水) 09:56:32.93ID:NuDqxS96 a="abc" から最初の一文字を削除するのは
echo "${a#?}" でいけますが、
この削除した文字を取得する方法ってないですよね?
echo "${a#?}" でいけますが、
この削除した文字を取得する方法ってないですよね?
716デフォルトの名無しさん
2018/09/05(水) 10:20:06.92ID:04P6tucf717デフォルトの名無しさん
2018/09/05(水) 10:33:50.47ID:NuDqxS96 bashはまあそれでいけますよね・・・
試しに文字列の長さを測って
(ループで空になるまで1文字ずつ消していけばわかる)
文字列の長さ-1個の??????・・・という文字列を作って
${a%????・・・} で文字列の後ろを削って1文字残す
というやり方でevalも駆使して取り出したけど、
このやり方で1文字ずつループさせたら
1KB程度の文字列で1秒かかってしまったw
これならたぶんsedで1文字ずつ改行させて処理したほうが速いだろうな
試しに文字列の長さを測って
(ループで空になるまで1文字ずつ消していけばわかる)
文字列の長さ-1個の??????・・・という文字列を作って
${a%????・・・} で文字列の後ろを削って1文字残す
というやり方でevalも駆使して取り出したけど、
このやり方で1文字ずつループさせたら
1KB程度の文字列で1秒かかってしまったw
これならたぶんsedで1文字ずつ改行させて処理したほうが速いだろうな
718デフォルトの名無しさん
2018/09/05(水) 10:34:25.02ID:NuDqxS96 >>716
ついでに聞きたいんだけど、手元にkshしかない状況ってどんな状況?
ついでに聞きたいんだけど、手元にkshしかない状況ってどんな状況?
719デフォルトの名無しさん
2018/09/05(水) 10:36:03.21ID:04P6tucf >>718
仕事中
仕事中
720デフォルトの名無しさん
2018/09/05(水) 10:36:40.11ID:jCw2sC+8 ${a%${a#?}}
でいいのかな。dashでもとれてそう
でいいのかな。dashでもとれてそう
721デフォルトの名無しさん
2018/09/05(水) 10:40:24.63ID:04P6tucf お、kshでも取れたわ
なるほど
なるほど
722デフォルトの名無しさん
2018/09/05(水) 10:48:45.20ID:NuDqxS96723デフォルトの名無しさん
2018/09/05(水) 10:51:17.41ID:04P6tucf >>722
あぁ、AIXだよ
あぁ、AIXだよ
724デフォルトの名無しさん
2018/09/05(水) 10:51:44.08ID:NuDqxS96 >>720
それでもいけるように見えるんだけど
aの中にa*bとか入れてみたら動かない
動くパターン
a="abc"
echo "${a%${a#?}}"
=> a
動かないパターン
a="a*b"
echo "${a%${a#?}}"
=> a*
それでもいけるように見えるんだけど
aの中にa*bとか入れてみたら動かない
動くパターン
a="abc"
echo "${a%${a#?}}"
=> a
動かないパターン
a="a*b"
echo "${a%${a#?}}"
=> a*
725デフォルトの名無しさん
2018/09/05(水) 10:52:39.04ID:NuDqxS96 >>723
なるほど。そっち系はよくわからないな。
なるほど。そっち系はよくわからないな。
726デフォルトの名無しさん
2018/09/05(水) 11:14:09.22ID:jCw2sC+8 特殊文字かあ。 ' で括ってで問題なさげ
${a%'*b'}
なので、こうかな
eval 'b=${a%'"'${a#?}'}"
${a%'*b'}
なので、こうかな
eval 'b=${a%'"'${a#?}'}"
727デフォルトの名無しさん
2018/09/05(水) 11:18:19.46ID:jCw2sC+8 ああ、今度は ' が邪魔か。sedで
728デフォルトの名無しさん
2018/09/05(水) 11:22:08.23ID:04P6tucf 変数展開にこだわると特殊文字がきついな
eval容認するならもうcutでいい気が
eval容認するならもうcutでいい気が
729デフォルトの名無しさん
2018/09/05(水) 11:26:44.33ID:jCw2sC+8 なるほど
730デフォルトの名無しさん
2018/09/05(水) 11:33:48.80ID:jCw2sC+8 あら。" で括ってでいいみたい?また、入れ子にちゃんとなってるの?{ } でちゃんとなってるのか
echo "${a%"${a#?}"}"
dashでも大丈夫みたいな
echo "${a%"${a#?}"}"
dashでも大丈夫みたいな
731デフォルトの名無しさん
2018/09/05(水) 11:37:46.43ID:04P6tucf シングルクォートで駄目でもダブルクォートはいけるのか…
732デフォルトの名無しさん
2018/09/05(水) 12:19:13.88ID:NuDqxS96 あ、本当だ。パフォーマンス出るかな?
あとでやってみよう
あとでやってみよう
733デフォルトの名無しさん
2018/09/05(水) 12:30:25.22ID:NuDqxS96 >>728
WSLも使ってるんだよね。cygwinもそうだったけど
外部プロセス起動っていうかforkになるのかしらないけど、
かなり遅くて、これぐらいに差になっちゃう
time sh -c 'for i in $(seq 100); do echo > /dev/null; done'
real 0m0.030s
user 0m0.000s
sys 0m0.031s
time sh -c 'for i in $(seq 100); do /bin/echo > /dev/null; done'
real 0m1.213s
user 0m0.000s
sys 0m0.750s
WSLも使ってるんだよね。cygwinもそうだったけど
外部プロセス起動っていうかforkになるのかしらないけど、
かなり遅くて、これぐらいに差になっちゃう
time sh -c 'for i in $(seq 100); do echo > /dev/null; done'
real 0m0.030s
user 0m0.000s
sys 0m0.031s
time sh -c 'for i in $(seq 100); do /bin/echo > /dev/null; done'
real 0m1.213s
user 0m0.000s
sys 0m0.750s
734デフォルトの名無しさん
2018/09/05(水) 12:32:33.02ID:NuDqxS96 evalはさほど変わらない
time sh -c 'for i in $(seq 100); do eval "echo" > /dev/null; done'
real 0m0.031s
user 0m0.000s
sys 0m0.016s
time sh -c 'for i in $(seq 100); do eval "echo" > /dev/null; done'
real 0m0.031s
user 0m0.000s
sys 0m0.016s
735デフォルトの名無しさん
2018/09/05(水) 13:00:13.96ID:NuDqxS96736デフォルトの名無しさん
2018/09/06(木) 20:18:06.55ID:DUG5skog macOSのbrewでインストールしたdashで
echo '!' って実行したら \! ってなぜか
エスケープされて表示されるんだけど誰か心当たりある?
printf '%s' '!' でも \! と表示される
echo '!' って実行したら \! ってなぜか
エスケープされて表示されるんだけど誰か心当たりある?
printf '%s' '!' でも \! と表示される
737デフォルトの名無しさん
2018/09/06(木) 20:33:38.49ID:DUG5skog もう一つ
case '!' in
[\!]) echo OK ;;
*) echo NG ;;
esac
これを実行すると、kshだけNGって表示されるんだけどkshのバグ?
mkshだとOKなのに
case '!' in
[\!]) echo OK ;;
*) echo NG ;;
esac
これを実行すると、kshだけNGって表示されるんだけどkshのバグ?
mkshだとOKなのに
738デフォルトの名無しさん
2018/09/06(木) 22:05:19.31ID:DUG5skog >>736はここじゃ知ってる人少なそうなんでこっちに移動しますね。
OS XをUnixとして使ってる人の為のスレ 18 [無断転載禁止]©2ch.net
https://egg.5ch.net/test/read.cgi/mac/1462475819/
OS XをUnixとして使ってる人の為のスレ 18 [無断転載禁止]©2ch.net
https://egg.5ch.net/test/read.cgi/mac/1462475819/
739デフォルトの名無しさん
2018/09/07(金) 03:14:55.87ID:SvYUtRYX >>737
ブラケット内だけの特殊文字 ! (および ^) でのエスケープ対応が必須ならバグだし、言及してないとかだったら動作不定なだけだな
ブラケット内の ! と ^ でのエスケープが効く効かないの動作が違うのはcaseの場合だけじゃないよ
ブラケット内だけの特殊文字 ! (および ^) でのエスケープ対応が必須ならバグだし、言及してないとかだったら動作不定なだけだな
ブラケット内の ! と ^ でのエスケープが効く効かないの動作が違うのはcaseの場合だけじゃないよ
740デフォルトの名無しさん
2018/09/07(金) 08:32:30.20ID:dfq99u5c >>739
いろいろ挙動を調べたけど
1. ブラケット内で!のエスケープは必須ではないし、必要ない。
2. 多くの実装ではどんな文字でもエスケープできるため \! は ! と認識されるが、kshはそうではない
3. ブラケットの先頭に!をつけた、 [!・・・] は否定表現
4. 否定表現自体にはどの実装も対応している
5. 例えば[A]だとAにマッチだが、[!]だと否定表現として扱われる
6. kshでは[!]を否定表現として扱われるのを防ぐ方法がない
7. 普通は[]を使うときは2文字以上になるはずなので殆どの場合問題ない
(ただし何かの処理で動的にパターンを生成している場合はありえる)
ってことなのかな?
ちなみにこれ、POSIXブラケット表現っていう名前なのかな?
いろいろ挙動を調べたけど
1. ブラケット内で!のエスケープは必須ではないし、必要ない。
2. 多くの実装ではどんな文字でもエスケープできるため \! は ! と認識されるが、kshはそうではない
3. ブラケットの先頭に!をつけた、 [!・・・] は否定表現
4. 否定表現自体にはどの実装も対応している
5. 例えば[A]だとAにマッチだが、[!]だと否定表現として扱われる
6. kshでは[!]を否定表現として扱われるのを防ぐ方法がない
7. 普通は[]を使うときは2文字以上になるはずなので殆どの場合問題ない
(ただし何かの処理で動的にパターンを生成している場合はありえる)
ってことなのかな?
ちなみにこれ、POSIXブラケット表現っていう名前なのかな?
741デフォルトの名無しさん
2018/09/07(金) 08:42:27.12ID:SvYUtRYX 動的の場合もksh以外でもエスケープしなきゃならないんだから同じじゃね
[!] は文法上エラーのようなもんだから、そもそもブラケットで括らないとかなんかもう一文字入れて ! を2文字目にするとか
[!] は文法上エラーのようなもんだから、そもそもブラケットで括らないとかなんかもう一文字入れて ! を2文字目にするとか
742デフォルトの名無しさん
2018/09/07(金) 08:53:35.87ID:dfq99u5c あー、動的っていうのは、
> そもそもブラケットで括らないとかなんかもう一文字入れて ! を2文字目にするとか
ということをしたいんだけど、
ここが設定ファイルに書かれている文字とかで
ユーザーが1文字を指定してしまった場合
とかいうことです。
まあ1文字なら[!]じゃなくて!にするようにすればいいんですが。
> 動的の場合もksh以外でもエスケープしなきゃならないんだから同じじゃね
ksh以外だとエスケープして [\!] と書けばOKですが、
kshだとエスケープして [\!] と書いてもNGという問題です。
> そもそもブラケットで括らないとかなんかもう一文字入れて ! を2文字目にするとか
ということをしたいんだけど、
ここが設定ファイルに書かれている文字とかで
ユーザーが1文字を指定してしまった場合
とかいうことです。
まあ1文字なら[!]じゃなくて!にするようにすればいいんですが。
> 動的の場合もksh以外でもエスケープしなきゃならないんだから同じじゃね
ksh以外だとエスケープして [\!] と書けばOKですが、
kshだとエスケープして [\!] と書いてもNGという問題です。
743デフォルトの名無しさん
2018/09/07(金) 09:02:06.16ID:SvYUtRYX POSIXブラケット表現は違うんじゃないかなあ
ブラケットだけを何というのか知らんけど、パターンマッチング、ワイルドカード、グロブ定義のひとつかな。グロブがどうやららしいがそんな言葉使ったことないw
ブラケットだけを何というのか知らんけど、パターンマッチング、ワイルドカード、グロブ定義のひとつかな。グロブがどうやららしいがそんな言葉使ったことないw
744デフォルトの名無しさん
2018/09/07(金) 09:04:59.23ID:SvYUtRYX >>742
細かく拘ってるけど、なに言いたいのかちょっとわからないねえ。本題と関係ないってことでいいね?
細かく拘ってるけど、なに言いたいのかちょっとわからないねえ。本題と関係ないってことでいいね?
745デフォルトの名無しさん
2018/09/07(金) 09:18:53.90ID:dfq99u5c Bracket Expression
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03_05
ワイルドカードっていうのは仕様ではなく何にでも使える文字という意味でしか無く
globはファイル名に展開するもののことだと思いますよ
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03_05
ワイルドカードっていうのは仕様ではなく何にでも使える文字という意味でしか無く
globはファイル名に展開するもののことだと思いますよ
746デフォルトの名無しさん
2018/09/07(金) 09:27:59.54ID:SvYUtRYX じゃ、パターンマッチングでいいよ。めんどくさいw
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_13
2.13.1 Patterns Matching a Single Character
では、エスケープ対応しろと読めるような気がしないでもない。が、! 関連ではエスケープだけじゃなく動作が違うな、dash/bash/kshでは(bashだけが違うというのもある)
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_13
2.13.1 Patterns Matching a Single Character
では、エスケープ対応しろと読めるような気がしないでもない。が、! 関連ではエスケープだけじゃなく動作が違うな、dash/bash/kshでは(bashだけが違うというのもある)
747デフォルトの名無しさん
2018/09/07(金) 09:40:21.51ID:dfq99u5c あー、やっぱりバグな気がしてきました。
一旦変数に入れるとkshでもOKになりました
ちなみにksh以外とはbash、zsh、dash、yash、posh、mkshのことです。
# 挙動を合わせるためposix互換モードにしています
# もしかしてkshにも似たようなのありますかね?
# kshでPOSIXLY_CORRECT、set -o posixは使えませんでした。
[ -n "$BASH_VERSION" ] && set -o posix
[ -n "$ZSH_VERSION" ] && emulate -R sh
expression='[\!]'
case '!' in
$expression) echo OK ;; # ksh、ksh以外でOKになる
*) echo NG ;;
esac
case '!' in
[\!]) echo OK ;; # ksh以外でOKになる
*) echo NG ;; # kshだけNGとなる
esac
一旦変数に入れるとkshでもOKになりました
ちなみにksh以外とはbash、zsh、dash、yash、posh、mkshのことです。
# 挙動を合わせるためposix互換モードにしています
# もしかしてkshにも似たようなのありますかね?
# kshでPOSIXLY_CORRECT、set -o posixは使えませんでした。
[ -n "$BASH_VERSION" ] && set -o posix
[ -n "$ZSH_VERSION" ] && emulate -R sh
expression='[\!]'
case '!' in
$expression) echo OK ;; # ksh、ksh以外でOKになる
*) echo NG ;;
esac
case '!' in
[\!]) echo OK ;; # ksh以外でOKになる
*) echo NG ;; # kshだけNGとなる
esac
748デフォルトの名無しさん
2018/09/07(金) 09:44:26.93ID:SvYUtRYX なんか「バグ」にこだわっているようだけど、バグだったらバグレポートでもする気なの??
bashの [a!] の場合の方が大きな問題のような気がしないでもないが、それもエスケープすればすむのでkshさえなのかな??
bashの [a!] の場合の方が大きな問題のような気がしないでもないが、それもエスケープすればすむのでkshさえなのかな??
749デフォルトの名無しさん
2018/09/07(金) 09:52:52.93ID:dfq99u5c >>748
> bashの [a!] の場合の方が大きな問題のような気がしないでもないが、
どういうことでしょうか?
試してみましたが、どの環境でも想定通り動いているようですが。
↓検証コード
[ -n "${BASH_VERSION:-}" ] && set -o posix
[ -n "${ZSH_VERSION:-}" ] && emulate -R sh
expression='[a!]'
case '!' in
$expression) echo OK ;; # すべてでOKになる
*) echo NG ;;
esac
case '!' in
[a!]) echo OK ;; # すべてでOKになる
*) echo NG ;;
esac
!は最初に持ってきたときだけメタ文字扱い(エスケープが必要)で
途中にあってもエスケープは必要ないみたいですね。
(むしろエスケープしないほうが良いみたい。後述?)
> bashの [a!] の場合の方が大きな問題のような気がしないでもないが、
どういうことでしょうか?
試してみましたが、どの環境でも想定通り動いているようですが。
↓検証コード
[ -n "${BASH_VERSION:-}" ] && set -o posix
[ -n "${ZSH_VERSION:-}" ] && emulate -R sh
expression='[a!]'
case '!' in
$expression) echo OK ;; # すべてでOKになる
*) echo NG ;;
esac
case '!' in
[a!]) echo OK ;; # すべてでOKになる
*) echo NG ;;
esac
!は最初に持ってきたときだけメタ文字扱い(エスケープが必要)で
途中にあってもエスケープは必要ないみたいですね。
(むしろエスケープしないほうが良いみたい。後述?)
750デフォルトの名無しさん
2018/09/07(金) 09:57:25.65ID:SvYUtRYX ああ、すまん勘違いしてた。コマンドライン上での ! でのヒストリからの展開だった
751デフォルトの名無しさん
2018/09/07(金) 10:04:32.56ID:dfq99u5c !が最初以外にある場合に、\! とエスケープするとどうなるか?ですが挙動がバラけました。
[ -n "${BASH_VERSION:-}" ] && set -o posix
[ -n "${ZSH_VERSION:-}" ] && emulate -R sh
expression='[a\!]'
case '\' in
$expression) echo OK ;;
*) echo NG ;;
esac
case '\' in
[a\!]) echo OK ;;
*) echo NG ;;
esac
# 変数に入れると a \ ! のいずれかだと判断されている
#(\はエスケープ文字列として認識されていない)
ksh OK NG
zsh OK NG
yash OK NG
posh OK NG
mksh OK NG
# 変数に入れると a ! のいずれかだと判断されている
#(\はエスケープ文字列として認識されている)
bash NG NG
dash NG NG
変数に入れない場合は、どちらも\はエスケープ文字列として認識されている
[ -n "${BASH_VERSION:-}" ] && set -o posix
[ -n "${ZSH_VERSION:-}" ] && emulate -R sh
expression='[a\!]'
case '\' in
$expression) echo OK ;;
*) echo NG ;;
esac
case '\' in
[a\!]) echo OK ;;
*) echo NG ;;
esac
# 変数に入れると a \ ! のいずれかだと判断されている
#(\はエスケープ文字列として認識されていない)
ksh OK NG
zsh OK NG
yash OK NG
posh OK NG
mksh OK NG
# 変数に入れると a ! のいずれかだと判断されている
#(\はエスケープ文字列として認識されている)
bash NG NG
dash NG NG
変数に入れない場合は、どちらも\はエスケープ文字列として認識されている
752デフォルトの名無しさん
2018/09/07(金) 10:11:14.19ID:dfq99u5c まとめると、どのシェルでも同じように動かすには
1. 可能ならば!は[]の最初に書かない
2. 1を満たしている場合には、!はエスケープする必要はない(しても良い)
3. !が[]の最初に書く場合は変数に入れてマッチングさせる
4. 3の場合には、!はエスケープする
というところでしょうか?
1. 可能ならば!は[]の最初に書かない
2. 1を満たしている場合には、!はエスケープする必要はない(しても良い)
3. !が[]の最初に書く場合は変数に入れてマッチングさせる
4. 3の場合には、!はエスケープする
というところでしょうか?
753デフォルトの名無しさん
2018/09/07(金) 10:11:47.58ID:SvYUtRYX んー、発表会なの??どうすんのかどう書くのかじゃないのか??
754デフォルトの名無しさん
2018/09/07(金) 10:13:19.48ID:SvYUtRYX ! を文字としてなら、ブラッケットで括らない、他の文字があるなら2文字目以降にする
だけじゃないのかなあ
だけじゃないのかなあ
755デフォルトの名無しさん
2018/09/07(金) 17:31:04.46ID:+cI6iexZ >>736はへえと思ったけど他は正直どうでもいい
シェルによって違いはあるものだし同じシェルでもバージョンによっても違うかもしれないし
シェルによって違いはあるものだし同じシェルでもバージョンによっても違うかもしれないし
756デフォルトの名無しさん
2018/09/08(土) 12:02:12.04ID:t/+GvP7Y 文字列の末尾がLFのものを別の変数に入れる場合、
b=$a ってするしかないかな?
b=$(foo "$a") ってやったら消えるよね
関数で処理した結果を変数に代入したいんだけど、文字列末尾のLFは消したくないし、
LFはない場合も複数個の場合もあるので無条件にLFつけたりもできない
b=$a ってするしかないかな?
b=$(foo "$a") ってやったら消えるよね
関数で処理した結果を変数に代入したいんだけど、文字列末尾のLFは消したくないし、
LFはない場合も複数個の場合もあるので無条件にLFつけたりもできない
757デフォルトの名無しさん
2018/09/08(土) 12:14:51.45ID:S5S855ao IFS
758デフォルトの名無しさん
2018/09/08(土) 12:29:20.28ID:S5S855ao IFS変更しなくてもb=$(foo "$a")ってやったら消えてないじゃん。"$a"ならば
759デフォルトの名無しさん
2018/09/08(土) 12:57:29.41ID:t/+GvP7Y 消えますよ
[test.sh]
IFS=""
LF=$(printf '\012_') LF=${LF%_}
a="test$LF$LF$LF"
foo() { printf '%s' "$1"; }
printf '%s' "$a" # 1つめのテストの末尾のLFは消えていない
b="$(foo "$a")"
printf '%s' "$b" # 2つめのテストの末尾のLFは消えてる
[実行]
test.sh | hexdump -C
00000000 74 65 73 74 0a 0a 0a 74 65 73 74 |test...test|
[test.sh]
IFS=""
LF=$(printf '\012_') LF=${LF%_}
a="test$LF$LF$LF"
foo() { printf '%s' "$1"; }
printf '%s' "$a" # 1つめのテストの末尾のLFは消えていない
b="$(foo "$a")"
printf '%s' "$b" # 2つめのテストの末尾のLFは消えてる
[実行]
test.sh | hexdump -C
00000000 74 65 73 74 0a 0a 0a 74 65 73 74 |test...test|
760デフォルトの名無しさん
2018/09/08(土) 13:25:21.83ID:wZDaW80s foo() { printf '%s ' "$1"; } とすると挙動が変わるんだね
761デフォルトの名無しさん
2018/09/08(土) 13:28:37.24ID:t/+GvP7Y 違う。$(・・・)をすると挙動が変わる(末尾のLFに全削除の効果)
foo "$a" だけなら末尾のLFは消えない
foo "$a" だけなら末尾のLFは消えない
762デフォルトの名無しさん
2018/09/08(土) 13:38:57.95ID:wZDaW80s Command substitution の仕様ってことね。
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_03
> removing sequences of one or more <newline> characters at the end of the substitution.
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_03
> removing sequences of one or more <newline> characters at the end of the substitution.
763デフォルトの名無しさん
2018/09/08(土) 13:54:13.20ID:t/+GvP7Y そういやファイル名やディレクトリ名に改行を含めるべきかどうか
POSIXで議論してるみたいな話が上の方で書いてあったけど
名前の末尾に改行が含まれてる場合に消えるから
dirnameやbasenameで取得できないってことになるな。
もういい加減仕様で含めるのやめればいいのに
POSIXで議論してるみたいな話が上の方で書いてあったけど
名前の末尾に改行が含まれてる場合に消えるから
dirnameやbasenameで取得できないってことになるな。
もういい加減仕様で含めるのやめればいいのに
764デフォルトの名無しさん
2018/09/08(土) 16:24:05.28ID:xje6Dohs 実際名前に改行含めるような仕事したくないけどな
765デフォルトの名無しさん
2018/09/08(土) 16:39:55.00ID:S5S855ao >>763
あんたって決して自分のミスは認めないのね。うやむやにするいつもの人でしょ
あんたって決して自分のミスは認めないのね。うやむやにするいつもの人でしょ
766デフォルトの名無しさん
2018/09/08(土) 16:53:13.12ID:SescvIaG >>765
一人で何の話してるの?
一人で何の話してるの?
767デフォルトの名無しさん
2018/09/08(土) 16:55:08.56ID:SescvIaG > IFS変更しなくてもb=$(foo "$a")ってやったら消えてないじゃん。"$a"ならば
消えますよ?だからまず自分のミスを認めましょうってことですよ。
消えますよ?だからまず自分のミスを認めましょうってことですよ。
768デフォルトの名無しさん
2018/09/08(土) 16:58:21.15ID:SescvIaG 自分のミスはちゃんと認めましょう。
認めるまで言い続けますよ
認めるまで言い続けますよ
769デフォルトの名無しさん
2018/09/08(土) 16:59:06.30ID:SescvIaG770デフォルトの名無しさん
2018/09/08(土) 22:31:06.03ID:B+r7WAvB なんか病人多いなここ最近
771デフォルトの名無しさん
2018/09/09(日) 00:05:42.19ID:MseSAwkB うん
772デフォルトの名無しさん
2018/09/09(日) 01:30:00.09ID:40h5Vf3t alias wgeti='wget -ci <(cat <<_'
エイリアスでwgetをちょっと弄ったんですがこれの関数版作れないですかね
これで複数行のURLをDLできるけど最後に_と)入れる必要あるので
エイリアスでwgetをちょっと弄ったんですがこれの関数版作れないですかね
これで複数行のURLをDLできるけど最後に_と)入れる必要あるので
773デフォルトの名無しさん
2018/09/09(日) 11:41:02.87ID:ZnXA8VyU bashの拡張機能で便利なのってなんだろうか?
変数展開は便利だと思うんだが、
配列とかハッシュとか必要なんだろうかね?
配列は標準入力から受け取ってループで回せば良いわけで
それが必要になった時点で使い方を間違ってるという気がしてる
他にbashで便利なものってあるかな?
pipefailぐらい?
変数展開は便利だと思うんだが、
配列とかハッシュとか必要なんだろうかね?
配列は標準入力から受け取ってループで回せば良いわけで
それが必要になった時点で使い方を間違ってるという気がしてる
他にbashで便利なものってあるかな?
pipefailぐらい?
774デフォルトの名無しさん
2018/09/09(日) 11:55:57.22ID:ZnXA8VyU >>772
こういう事してるってこと?
alias wgeti='wget -ci <(cat <<_'
wgeti
http://example.com/a
http://example.com/b
http://example.com/c
_
)
それやるぐらいならこうするな。bash依存しなくてすむし
wgeti() { wget -ci -; }
wgeti<<URLs
http://example.com/a
http://example.com/b
http://example.com/c
URLs
こういう事してるってこと?
alias wgeti='wget -ci <(cat <<_'
wgeti
http://example.com/a
http://example.com/b
http://example.com/c
_
)
それやるぐらいならこうするな。bash依存しなくてすむし
wgeti() { wget -ci -; }
wgeti<<URLs
http://example.com/a
http://example.com/b
http://example.com/c
URLs
775デフォルトの名無しさん
2018/09/09(日) 12:01:20.84ID:ZnXA8VyU もしくは引数で渡す場合はこう
wgeti() {
for i in "$@"; do
echo "$i"
done | wget -ci -
}
wgeti \
'http://example.com/a' \
'http://example.com/b' \
'http://example.com/c'
短く書くなら
wgeti() {
printf '%s\n' "$@" | wget -ci -
}
wgeti() {
for i in "$@"; do
echo "$i"
done | wget -ci -
}
wgeti \
'http://example.com/a' \
'http://example.com/b' \
'http://example.com/c'
短く書くなら
wgeti() {
printf '%s\n' "$@" | wget -ci -
}
776デフォルトの名無しさん
2018/09/10(月) 00:47:57.63ID:hUyLWeb6 それってこれでいいのでは?
wgeti () {
wget -c $@
}
wgeti () {
wget -c $@
}
777デフォルトの名無しさん
2018/09/10(月) 00:48:53.10ID:hUyLWeb6 ああ、でも、引数にするなら何もしなくていいのかw
そのまんま wget の後に URL 入れるだけだ。
そのまんま wget の後に URL 入れるだけだ。
778デフォルトの名無しさん
2018/09/10(月) 02:03:17.65ID:P2aNZV+z 標準入力からURLのリストを渡したいから
<(cat <<_って書いてあるんだと思った。
wget、普通に引数から複数のURL渡せるね
<(cat <<_って書いてあるんだと思った。
wget、普通に引数から複数のURL渡せるね
779デフォルトの名無しさん
2018/09/10(月) 02:36:11.00ID:MLFQqRH+ コマンド引数の文字数制限に引っかかる可能性を
考慮すると wget -ci <(cat <<_ の方が無難なのだろう
(xargs でもいいけど)
考慮すると wget -ci <(cat <<_ の方が無難なのだろう
(xargs でもいいけど)
780デフォルトの名無しさん
2018/09/10(月) 21:09:13.29ID:P2aNZV+z local or typeset を使用しても本物のローカル変数ではないというのは面白い性質だよな
(本物のっていうのは一般的な言語相当のローカル変数という意味)
i=A
foo() {
local i=B
echo "foo1 $i" # => foo1 B
bar
echo "foo2 $i" # => foo2 C
}
bar() {
echo "bar $i" # => bar B
i=C
}
foo
echo "$i" # => A
「この関数の中だけで使う変数です。」ではなくて
「localの場所で変数を保存します。関数が抜けたら保存した値を戻します。」
という意味なんだよね。
POSIXにはないlocalやtypesetを使っても本物のローカル変数にはなれないが、
引数だけは本物のローカル変数になっているというのも面白い
(何も書かなくても関数に入った時点で、自動的にlocalが実行されると考えることもできる)
引数への代入は $1=123 とか 1=123 みたいにはできないけど、
set -- "123" "456" "789" みたいにすると再設定できる。
$1だけ設定したくても、すべての引数を設定する必要があるけど。
グローバル変数は時に分かりづらいバグを生むことがあるけど
これをうまく使えば、使用する変数をなくせたり減らせたりするかもしれないな
(本物のっていうのは一般的な言語相当のローカル変数という意味)
i=A
foo() {
local i=B
echo "foo1 $i" # => foo1 B
bar
echo "foo2 $i" # => foo2 C
}
bar() {
echo "bar $i" # => bar B
i=C
}
foo
echo "$i" # => A
「この関数の中だけで使う変数です。」ではなくて
「localの場所で変数を保存します。関数が抜けたら保存した値を戻します。」
という意味なんだよね。
POSIXにはないlocalやtypesetを使っても本物のローカル変数にはなれないが、
引数だけは本物のローカル変数になっているというのも面白い
(何も書かなくても関数に入った時点で、自動的にlocalが実行されると考えることもできる)
引数への代入は $1=123 とか 1=123 みたいにはできないけど、
set -- "123" "456" "789" みたいにすると再設定できる。
$1だけ設定したくても、すべての引数を設定する必要があるけど。
グローバル変数は時に分かりづらいバグを生むことがあるけど
これをうまく使えば、使用する変数をなくせたり減らせたりするかもしれないな
781デフォルトの名無しさん
2018/09/10(月) 23:57:57.78ID:3w8KnLJN ダイナミックスコープはperlとかpowershellとかmathematicaとかにもあるけど、これもグ口ーバル変数並にバグの温床な気がする
782デフォルトの名無しさん
2018/09/11(火) 01:49:50.99ID:oHtbKRPF あぁ、これがダイナミックスコープのことなのか
Perl?って思ったけど、(Perlの)localを使った場合の話なのね。
通常はmyを使ってたから。
Perl?って思ったけど、(Perlの)localを使った場合の話なのね。
通常はmyを使ってたから。
783デフォルトの名無しさん
2018/09/13(木) 14:07:12.80ID:q7iUBK5M ふと思ったんだけどシバンってあるじゃんシバン
あれってさ、#がコメントじゃない言語だったらどうするの?
Cインタプリタだったら
//!/usr/local/bin/c
とか書くの?
あれってさ、#がコメントじゃない言語だったらどうするの?
Cインタプリタだったら
//!/usr/local/bin/c
とか書くの?
784デフォルトの名無しさん
2018/09/13(木) 15:47:52.06ID:CY4XgXEU >>783
あれはカーネルが解釈してるからだめ。
あれはカーネルが解釈してるからだめ。
785デフォルトの名無しさん
2018/09/13(木) 16:45:07.13ID:1sKEH3Wo786デフォルトの名無しさん
2018/09/13(木) 17:23:01.88ID:CY4XgXEU >>785
別問題じゃね?どんな挙動?
別問題じゃね?どんな挙動?
787デフォルトの名無しさん
2018/09/13(木) 21:25:29.73ID:fcPV9kIu >>783
面白いネタを振ってくれてありがとう。いろいろ調べて勉強になったよ。
ちなみに質問の答えは「できないとは限らない」ということになるかなあ。
ネタを振ってくれたことには感謝するけど、自分で調べるほうが楽しいよ。
面白いネタを振ってくれてありがとう。いろいろ調べて勉強になったよ。
ちなみに質問の答えは「できないとは限らない」ということになるかなあ。
ネタを振ってくれたことには感謝するけど、自分で調べるほうが楽しいよ。
788デフォルトの名無しさん
2018/09/13(木) 21:47:40.27ID:mocTFwRb 今日の荒らしは ID:fcPV9kIu か。NG推奨
789デフォルトの名無しさん
2018/09/13(木) 22:02:34.22ID:QPFUtiyL 落ち着け
790デフォルトの名無しさん
2018/09/14(金) 04:16:04.32ID:q3l06dS7791デフォルトの名無しさん
2018/09/14(金) 05:06:28.57ID:hVbFTBye 素朴な疑問
・ shebangは シェバン? シバン?
・ "#!"の後にスペース入れずに "#!/bin/sh" ? スペース入れて "#! /bin/sh" ?
自分はともに前者、特にスペースについては入れるべきではないというの最初に覚えたんだけど、
結構後者も目にすることがあるので、実際のところ、どうなの?
・ shebangは シェバン? シバン?
・ "#!"の後にスペース入れずに "#!/bin/sh" ? スペース入れて "#! /bin/sh" ?
自分はともに前者、特にスペースについては入れるべきではないというの最初に覚えたんだけど、
結構後者も目にすることがあるので、実際のところ、どうなの?
792デフォルトの名無しさん
2018/09/14(金) 09:25:36.66ID:lqNqtREE >>790
https://linuxjm.osdn.jp/html/LDP_man-pages/man2/execve.2.html
うぉ、Linuxまじ最低だな
インタープリタースクリプトの optional-arg 引き数の解釈方法は実装により異なる。
Linux では、インタープリター名 interpreter に続く文字列全体がインタープリターに
1個の引き数として渡される。 しかし、動作が異なるシステムもある。 あるシステム
では、 optional-arg のうち最初のホワイトスペースまでが 引き数として渡される。
また、別のシステムでは インタープリタースクリプトは複数の引き数を持つことができ、
optional-arg 内のホワイトスペースが引き数の区切りとなる。
https://linuxjm.osdn.jp/html/LDP_man-pages/man2/execve.2.html
うぉ、Linuxまじ最低だな
インタープリタースクリプトの optional-arg 引き数の解釈方法は実装により異なる。
Linux では、インタープリター名 interpreter に続く文字列全体がインタープリターに
1個の引き数として渡される。 しかし、動作が異なるシステムもある。 あるシステム
では、 optional-arg のうち最初のホワイトスペースまでが 引き数として渡される。
また、別のシステムでは インタープリタースクリプトは複数の引き数を持つことができ、
optional-arg 内のホワイトスペースが引き数の区切りとなる。
793デフォルトの名無しさん
2018/09/14(金) 09:40:37.87ID:CXa+ZLzo794デフォルトの名無しさん
2018/09/14(金) 09:48:01.90ID:CXa+ZLzo >>791
#! の後のスペースは、どのOSでも有無に関わらず動いたと思う。
ただしshebang行に32バイト制限のあるOS があったので、
それに引っかかるギリギリならスペース無しにする必要アリ。
読みは知らない。
#! の後のスペースは、どのOSでも有無に関わらず動いたと思う。
ただしshebang行に32バイト制限のあるOS があったので、
それに引っかかるギリギリならスペース無しにする必要アリ。
読みは知らない。
795デフォルトの名無しさん
2018/09/14(金) 10:54:54.26ID:6xTUz+7n >>793
自分でビルドしたawkを使う場合は?
自分でビルドしたawkを使う場合は?
796デフォルトの名無しさん
2018/09/14(金) 12:12:08.80ID:CXa+ZLzo >>795
システム付属じゃ駄目で、自分でビルドした特有の事情があるなら、絶対パス指定で呼べばいいのでは?
システム付属じゃ駄目で、自分でビルドした特有の事情があるなら、絶対パス指定で呼べばいいのでは?
797デフォルトの名無しさん
2018/09/14(金) 16:14:10.39ID:6xTUz+7n >>796
それだと実行権限の意味がなくなるじゃん
実行権限をつけるのは、いちいち実行プログラムのパスを指定しなくていいからでしょ?
拡張子もなくせばなんの言語で作られているかも意識しないですむし。
手でコマンドを打ったときと同じように、環境変数の$PATHからどれを使うかが決まる。
そもそもなんで最初からそういう仕組みにして置かなかったんだろう?
そうすりゃシバンなんて #!awk だけですんだのにね
それだと実行権限の意味がなくなるじゃん
実行権限をつけるのは、いちいち実行プログラムのパスを指定しなくていいからでしょ?
拡張子もなくせばなんの言語で作られているかも意識しないですむし。
手でコマンドを打ったときと同じように、環境変数の$PATHからどれを使うかが決まる。
そもそもなんで最初からそういう仕組みにして置かなかったんだろう?
そうすりゃシバンなんて #!awk だけですんだのにね
798デフォルトの名無しさん
2018/09/14(金) 16:33:58.92ID:gmWhNmZA 実行権限は絶対パスでも相対パスでも必要なので関係ない
799デフォルトの名無しさん
2018/09/14(金) 16:35:21.26ID:KKMncdOE スクリプトのパスとインタプリタのパスを混同している
800デフォルトの名無しさん
2018/09/14(金) 16:36:11.79ID:6xTUz+7n801デフォルトの名無しさん
2018/09/14(金) 16:46:56.10ID:gmWhNmZA シバンの話は分かってるけど?
実行するスクリプトが使用するインタプリタに実行権限付いてなかったら
当たり前だけど絶対パスで指定したって実行できないよ?
実行するスクリプトが使用するインタプリタに実行権限付いてなかったら
当たり前だけど絶対パスで指定したって実行できないよ?
802デフォルトの名無しさん
2018/09/14(金) 16:49:01.41ID:CXa+ZLzo803デフォルトの名無しさん
2018/09/14(金) 16:53:40.07ID:UfVRD/gP >>794
> shebang行に32バイト制限のあるOSがあった
なるほど、そんな理由もあったんだね。
逆にスペースorタブを入れなければならない、なんていう例(4.1BSD)もあったみたいだ。
これについては修正されたようだけど、今でもこれを守っている人もいるらしい。
同じ#で始まっていても、コメントとは違うと思うから、
やはりスペースを入れることにはなんとなく躊躇しちゃうわ。
> shebang行に32バイト制限のあるOSがあった
なるほど、そんな理由もあったんだね。
逆にスペースorタブを入れなければならない、なんていう例(4.1BSD)もあったみたいだ。
これについては修正されたようだけど、今でもこれを守っている人もいるらしい。
同じ#で始まっていても、コメントとは違うと思うから、
やはりスペースを入れることにはなんとなく躊躇しちゃうわ。
804デフォルトの名無しさん
2018/09/14(金) 18:40:33.82ID:q3l06dS7 俺は半分脳死状態で
#! /bin/sh -
↑半角スペース ↑ハイフンマイナス
にしてるわ。
上でも書いてくれた人がいるけど,#!の後に空白が必要な環境があったり
先頭行から継続してパースしてしまい
(ほとんどありえないことだけど)
#! /bin/sh
-c
みたいなファイルに対し
/bin/sh -cというオプション付きshインタプリンタを起動してしまうOSもあるみたい
(オライリーのシェルスクリプト本に記述あり)
#! /bin/sh -
↑半角スペース ↑ハイフンマイナス
にしてるわ。
上でも書いてくれた人がいるけど,#!の後に空白が必要な環境があったり
先頭行から継続してパースしてしまい
(ほとんどありえないことだけど)
#! /bin/sh
-c
みたいなファイルに対し
/bin/sh -cというオプション付きshインタプリンタを起動してしまうOSもあるみたい
(オライリーのシェルスクリプト本に記述あり)
805デフォルトの名無しさん
2018/09/14(金) 18:50:01.26ID:hBiQ1eS5 - で閉じるのはオレもやってるけど、
シバンの後のスペースは入れない
#!/bin/sh -
シバンの後のスペースは入れない
#!/bin/sh -
806デフォルトの名無しさん
2018/09/14(金) 19:07:11.14ID:6xTUz+7n >>802
わかってる
#!/home/me/bin/awk -f
って書いたら、必ず /home/me/bin/awk が使われてしまう
例えばdebian 9のawkは4.1.4だがdebian 7は4.0.4だった
debianのawkのパスは /usr/bin/awk だが。debian 9で自分でawkの
最新版をビルドして /usr/local/bin/awk に入れたとしよう
awkスクリプトのシバンが #!/usr/bin/env awk と書いてあれば
$PATHを見て適切な /usr/local/bin/awk を選んでくれるが、
envを使ってないと、/usr/bin/awk 決め打ちになってしまう
大量にある(かもしれない)awkスクリプトのシバンを全部書き換えるなんてナンセンスだし
せっかく実行権限が付いてるのに、awk スクリプトファイル名 と書くのもナンセンスだろ
実行プログラムが何の言語で書かれているかなんて、利用者には知ったことじゃないんだから
fooコマンドはfooコマンドとして実行してほしいし、 使用するインタプリタは $PATH を見て欲しい
わかってる
#!/home/me/bin/awk -f
って書いたら、必ず /home/me/bin/awk が使われてしまう
例えばdebian 9のawkは4.1.4だがdebian 7は4.0.4だった
debianのawkのパスは /usr/bin/awk だが。debian 9で自分でawkの
最新版をビルドして /usr/local/bin/awk に入れたとしよう
awkスクリプトのシバンが #!/usr/bin/env awk と書いてあれば
$PATHを見て適切な /usr/local/bin/awk を選んでくれるが、
envを使ってないと、/usr/bin/awk 決め打ちになってしまう
大量にある(かもしれない)awkスクリプトのシバンを全部書き換えるなんてナンセンスだし
せっかく実行権限が付いてるのに、awk スクリプトファイル名 と書くのもナンセンスだろ
実行プログラムが何の言語で書かれているかなんて、利用者には知ったことじゃないんだから
fooコマンドはfooコマンドとして実行してほしいし、 使用するインタプリタは $PATH を見て欲しい
807デフォルトの名無しさん
2018/09/14(金) 19:21:44.66ID:za5qG/O1 なんかいろいろ誤解しとるw
808デフォルトの名無しさん
2018/09/14(金) 19:27:29.88ID:EsLYvq4M >>806
何をしたいとかは別として、実装としてできないんだよ。
カーネルのシステムコールexecveはPATHを見ない。
PATHを見てるのはユーザランドのライブラリ関数のexecvpとか。
大改造が必要になる。
何をしたいとかは別として、実装としてできないんだよ。
カーネルのシステムコールexecveはPATHを見ない。
PATHを見てるのはユーザランドのライブラリ関数のexecvpとか。
大改造が必要になる。
809デフォルトの名無しさん
2018/09/14(金) 19:38:49.59ID:6xTUz+7n810デフォルトの名無しさん
2018/09/14(金) 20:18:23.13ID:EsLYvq4M カーネルが特定の決め打ちしたバイナリを呼ぶようなことはないよ。
せいぜいinitだけ。
せいぜいinitだけ。
811デフォルトの名無しさん
2018/09/14(金) 20:29:56.82ID:6xTUz+7n812デフォルトの名無しさん
2018/09/14(金) 20:33:39.49ID:EsLYvq4M それほど言うなら試しにlinuxのパッチ書いて投げてみたら?
813デフォルトの名無しさん
2018/09/14(金) 20:33:54.17ID:6xTUz+7n 補足すると>>809読めばわかると思うけど、読み取ったシバンの文字列を置き換えるだけ。
だからカーネルが特定の決め打ちしたバイナリを呼ばないというのが事実であっても
読み取ったシバンの文字列を置き換える話と無関係の話ということ
だからカーネルが特定の決め打ちしたバイナリを呼ばないというのが事実であっても
読み取ったシバンの文字列を置き換える話と無関係の話ということ
814デフォルトの名無しさん
2018/09/14(金) 20:35:05.30ID:6xTUz+7n815デフォルトの名無しさん
2018/09/14(金) 20:36:01.42ID:EsLYvq4M 可能か不可能かで言えば、もちろん可能だよ。なんだって可能。
でも、カーネルとユーザランドは明確に分けろって怒られるだろうね。
でも、カーネルとユーザランドは明確に分けろって怒られるだろうね。
816デフォルトの名無しさん
2018/09/14(金) 20:39:33.43ID:6xTUz+7n817デフォルトの名無しさん
2018/09/14(金) 20:39:41.70ID:1jWDqP4V >>809
カーネルいじればそれは可能だな。
カーネル書ける人なら目茶目茶難しいってほどじゃないから、
カーネル書ける人雇えばいいぞ!
ただしそれを標準カーネルの機能として入れてもらえるように
議論するのは、カーネルに機能追加するよりだいぶ大変かも。
#! じゃない別のmagic文字列にした方が提案通りやすいかもな。
頑張れw
カーネルいじればそれは可能だな。
カーネル書ける人なら目茶目茶難しいってほどじゃないから、
カーネル書ける人雇えばいいぞ!
ただしそれを標準カーネルの機能として入れてもらえるように
議論するのは、カーネルに機能追加するよりだいぶ大変かも。
#! じゃない別のmagic文字列にした方が提案通りやすいかもな。
頑張れw
818デフォルトの名無しさん
2018/09/14(金) 20:42:06.79ID:6xTUz+7n819デフォルトの名無しさん
2018/09/14(金) 20:43:14.61ID:6xTUz+7n つーか、いい加減にしないといつもの荒らしモードに入るぞ?w
議論に負けそうになると、話をすり替えて、
俺を呼ばわりするのはいつもの手だよなw
もうそろそろ荒らし認定することだと思ってるんだが?w
議論に負けそうになると、話をすり替えて、
俺を呼ばわりするのはいつもの手だよなw
もうそろそろ荒らし認定することだと思ってるんだが?w
820デフォルトの名無しさん
2018/09/14(金) 20:43:32.04ID:6xTUz+7n 訂正
俺を荒らし呼ばわりするのはいつもの手だよなw
俺を荒らし呼ばわりするのはいつもの手だよなw
821デフォルトの名無しさん
2018/09/14(金) 20:46:17.92ID:6xTUz+7n 反論しないならさっさとNGIDに入れて
俺に反論できない状態を作ってくれよ?
見れなくなったら俺に反論できないんだから
それこそ俺の望んだ結果だw
はい、結論。>>809の方法で技術的には実現可能です。
反論がある人は、関係者を説得して調整をするのが難しいって
別の話にすり替えないで技術的な話でお願いしますねー
俺に反論できない状態を作ってくれよ?
見れなくなったら俺に反論できないんだから
それこそ俺の望んだ結果だw
はい、結論。>>809の方法で技術的には実現可能です。
反論がある人は、関係者を説得して調整をするのが難しいって
別の話にすり替えないで技術的な話でお願いしますねー
822デフォルトの名無しさん
2018/09/14(金) 20:46:23.72ID:1jWDqP4V823デフォルトの名無しさん
2018/09/14(金) 20:48:41.19ID:6xTUz+7n824デフォルトの名無しさん
2018/09/14(金) 20:48:54.07ID:1jWDqP4V だって勝手に勘違いして勝手な仮定して勝手に腹立ててるんだもん。
せっかく賛成してた俺まで敵視しだす有り様だし。
自業自得ってことよ。
せっかく賛成してた俺まで敵視しだす有り様だし。
自業自得ってことよ。
825デフォルトの名無しさん
2018/09/14(金) 20:51:13.71ID:jAge75Zy 長文ってだけでとりあえずスクロールする
826デフォルトの名無しさん
2018/09/14(金) 20:54:16.23ID:6xTUz+7n >>824
5ちゃんねるなんだからこの程度のもんよ
こっちが真面目に話をしていても、とりあえず何か言い返せば
それが反論したことになるみたいな、みたいなクソみたいなレスしてくる
いい案だと思うなら一言「それはいい考えだ」ぐらい書けと
自分が間違っていたら、素直に間違いを認めるやつばかりなら、
それもこんなにどうでもいいことを、毎回書かなくてすむんだよ
5ちゃんねるなんだからこの程度のもんよ
こっちが真面目に話をしていても、とりあえず何か言い返せば
それが反論したことになるみたいな、みたいなクソみたいなレスしてくる
いい案だと思うなら一言「それはいい考えだ」ぐらい書けと
自分が間違っていたら、素直に間違いを認めるやつばかりなら、
それもこんなにどうでもいいことを、毎回書かなくてすむんだよ
827デフォルトの名無しさん
2018/09/14(金) 20:58:13.19ID:EsLYvq4M >>816
ファイルシステムの構成に何らかの仮定を置いた時点でユーザランドと分離できていない。
ファイルシステムの構成に何らかの仮定を置いた時点でユーザランドと分離できていない。
828デフォルトの名無しさん
2018/09/14(金) 20:59:16.05ID:EsLYvq4M ちなみに俺はIDずっと変えてないよ。
829デフォルトの名無しさん
2018/09/14(金) 20:59:57.05ID:6xTUz+7n830デフォルトの名無しさん
2018/09/14(金) 21:08:41.85ID:EsLYvq4M >>829
仮定せずにどうやって/usr/bin/env付ければいいってわかるの?
仮定せずにどうやって/usr/bin/env付ければいいってわかるの?
831デフォルトの名無しさん
2018/09/14(金) 21:12:09.04ID:6xTUz+7n >>830
単なる文字列の置換に過ぎない
カーネルはシバンがファイルパスなんて思ってない。
カーネルがシバンを読み取るというのなら、少なくとも
読み取ったものがシバンであるということはわかってる
あとはそこににある文字列が、ファイルパスだろうが
ランダム文字列だろうが関係ない
単に#!の後に固定の文字列を埋めるだけ
あとは後続のプログラムに渡せば、
そいつが勝手になにかしてくれるんだろ?
それはカーネルの知ったことじゃない
単なる文字列の置換に過ぎない
カーネルはシバンがファイルパスなんて思ってない。
カーネルがシバンを読み取るというのなら、少なくとも
読み取ったものがシバンであるということはわかってる
あとはそこににある文字列が、ファイルパスだろうが
ランダム文字列だろうが関係ない
単に#!の後に固定の文字列を埋めるだけ
あとは後続のプログラムに渡せば、
そいつが勝手になにかしてくれるんだろ?
それはカーネルの知ったことじゃない
832デフォルトの名無しさん
2018/09/14(金) 21:30:49.25ID:gmWhNmZA この話と実行権限が関係ないのは理解できたのか?
833デフォルトの名無しさん
2018/09/14(金) 21:44:08.73ID:6xTUz+7n >>832
お前1人で意味不明の話をしてるんだってw
(awkスクリプトで書いた)fooコマンドが実行できるのは
fooコマンドに実行権限がついているからだし、そのfooコマンドの
シバンで指定されたプログラムも実行権限がついていなければいけない
当たり前の話だが、上記の理由により awkであっても /usr/bin/envを
使っておいたほうが良いって結論を言ったんだが、
それに対して前は何の話をしてるのだ?
お前1人で意味不明の話をしてるんだってw
(awkスクリプトで書いた)fooコマンドが実行できるのは
fooコマンドに実行権限がついているからだし、そのfooコマンドの
シバンで指定されたプログラムも実行権限がついていなければいけない
当たり前の話だが、上記の理由により awkであっても /usr/bin/envを
使っておいたほうが良いって結論を言ったんだが、
それに対して前は何の話をしてるのだ?
834デフォルトの名無しさん
2018/09/14(金) 21:46:58.87ID:6xTUz+7n どうもこの話を理解できないのが、おかしいと思うんだが、
もしかしてawkスクリプトに実行権限をつけるという発想がないのか?
いつもawk -f スクリプトファイル名 で実行してるとか?
いや、まさかな。
シバンはスクリプトファイル名だけで実行するためにあるんだし
そのために実行権限つけるだろう。
でもなぁ、ここまで以上に理解能力がないのは、
まかさが的中しているとしか思えない。
シバンをつける意味もわかってなかったりしてw
もしかしてawkスクリプトに実行権限をつけるという発想がないのか?
いつもawk -f スクリプトファイル名 で実行してるとか?
いや、まさかな。
シバンはスクリプトファイル名だけで実行するためにあるんだし
そのために実行権限つけるだろう。
でもなぁ、ここまで以上に理解能力がないのは、
まかさが的中しているとしか思えない。
シバンをつける意味もわかってなかったりしてw
835デフォルトの名無しさん
2018/09/14(金) 21:49:19.68ID:jAge75Zy ここまでの話全く読んでないけどawk実行させる時は-f使うわ
836デフォルトの名無しさん
2018/09/14(金) 22:00:24.41ID:6xTUz+7n >>835
ということは、シェルスクリプトを実行させるときはsh使って
perlスクリプトを実行させる時はperlを使ってるのかな?
かつてsystemdが普及するまではみんなが使っていた
serviceコマンドやbyobuはシェルスクリプトだし
apt-fileやshasumはPerlスクリプトだし
ufwはPythonスクリプトだよ
実装がなんのスクリプト言語で作られているかなんて気にしなくていいじゃないかw
ということは、シェルスクリプトを実行させるときはsh使って
perlスクリプトを実行させる時はperlを使ってるのかな?
かつてsystemdが普及するまではみんなが使っていた
serviceコマンドやbyobuはシェルスクリプトだし
apt-fileやshasumはPerlスクリプトだし
ufwはPythonスクリプトだよ
実装がなんのスクリプト言語で作られているかなんて気にしなくていいじゃないかw
837デフォルトの名無しさん
2018/09/14(金) 22:02:01.56ID:jAge75Zy shは実行権限つける
perlは場合による
意味はない
perlは場合による
意味はない
838デフォルトの名無しさん
2018/09/14(金) 23:01:40.99ID:gmWhNmZA839デフォルトの名無しさん
2018/09/14(金) 23:05:15.75ID:fXySkelb $ls aho.sh
rw-r--r-- aho
$. ./aho.sh
aho
$
rw-r--r-- aho
$. ./aho.sh
aho
$
840デフォルトの名無しさん
2018/09/14(金) 23:06:41.90ID:fXySkelb $cat ./aho.sh
echo aho
$
echo aho
$
841デフォルトの名無しさん
2018/09/14(金) 23:15:17.42ID:1jWDqP4V >>838
確かにあの書き込みは全体的に意味不明だったね。
確かにあの書き込みは全体的に意味不明だったね。
842デフォルトの名無しさん
2018/09/15(土) 01:10:17.43ID:pm09nqHo >>838
> と、書いてたからパス指定と実行権限の意味は無関係だと指摘してるだけなんだが
> 機能的文盲とかいうやつなのか?
実行権限がついているとパスの指定を省略できるんだよ
ご存知じゃないかもしれないが(皮肉)パスの指定を省略した時に
$PATHに設定された複数のパスから、パスを補完してくれる機能がある
つまり$PATHからパスを補完してほしいなら実行権限をつけないとだめ
(awk)スクリプトを$PATHの中から補完してほしいなら実行権限をつける。
そうするとパスを省略して実行できる。
スクリプト自体は$PATHから補完してくれる、だけどそのスクリプトに
シバンが/usr/bin/awkとなっていると、スクリプトを実行するインタプリタは
/usr/bin/awk固定となってしまう。
/usr/bin/env awk -f と書くことで、インタプリタ自体も$PATHから検索してくれる
パス指定を"省略すること" と 実行権限の意味、いい加減理解しましたかね?
> と、書いてたからパス指定と実行権限の意味は無関係だと指摘してるだけなんだが
> 機能的文盲とかいうやつなのか?
実行権限がついているとパスの指定を省略できるんだよ
ご存知じゃないかもしれないが(皮肉)パスの指定を省略した時に
$PATHに設定された複数のパスから、パスを補完してくれる機能がある
つまり$PATHからパスを補完してほしいなら実行権限をつけないとだめ
(awk)スクリプトを$PATHの中から補完してほしいなら実行権限をつける。
そうするとパスを省略して実行できる。
スクリプト自体は$PATHから補完してくれる、だけどそのスクリプトに
シバンが/usr/bin/awkとなっていると、スクリプトを実行するインタプリタは
/usr/bin/awk固定となってしまう。
/usr/bin/env awk -f と書くことで、インタプリタ自体も$PATHから検索してくれる
パス指定を"省略すること" と 実行権限の意味、いい加減理解しましたかね?
843デフォルトの名無しさん
2018/09/15(土) 01:13:44.97ID:pm09nqHo ほんと、理解能力がないのか、
それとも、単に技術レベルが数ランク下なのか知らんが
馬鹿を相手にしてると疲れる。煽りたくもなるわw
それとも、単に技術レベルが数ランク下なのか知らんが
馬鹿を相手にしてると疲れる。煽りたくもなるわw
844デフォルトの名無しさん
2018/09/15(土) 01:20:22.61ID:pm09nqHo845デフォルトの名無しさん
2018/09/15(土) 01:22:03.62ID:pm09nqHo 実行権限は単に実行可能にするだけじゃない
パスを省略して$PATHの中からパスを補完してくれる機能があるのだ
パスを省略して$PATHの中からパスを補完してくれる機能があるのだ
846デフォルトの名無しさん
2018/09/15(土) 01:32:29.75ID:pm09nqHo まあ、細かいことを説明するなら、"スクリプトファイル" の実行パスを
検索してくれるのはシェルで、シェルが$PATHの中から
実行ファイルを見つけることができるようにするために実行権限をつける
でも今は "スクリプトファイル" の実行パスの検索の話ではなく
シバンから起動する "インタプリタ" の話
シバン自体には$PATHの中から検索してくれる機能はなくて
単にシバンに書かれたパスのプログラムを実行するだけ
そこで出てくるマジックが /usr/bin/env awk -f
シバンは$PATHを検索しないが、/usr/bin/envが$PATHを検索して
適切なプログラム(ここではawk)に引き継いでくれる
などと丁寧に説明してやったら、今度は長文だーとか言って
荒らし呼ばわりするんだろう?
検索してくれるのはシェルで、シェルが$PATHの中から
実行ファイルを見つけることができるようにするために実行権限をつける
でも今は "スクリプトファイル" の実行パスの検索の話ではなく
シバンから起動する "インタプリタ" の話
シバン自体には$PATHの中から検索してくれる機能はなくて
単にシバンに書かれたパスのプログラムを実行するだけ
そこで出てくるマジックが /usr/bin/env awk -f
シバンは$PATHを検索しないが、/usr/bin/envが$PATHを検索して
適切なプログラム(ここではawk)に引き継いでくれる
などと丁寧に説明してやったら、今度は長文だーとか言って
荒らし呼ばわりするんだろう?
847デフォルトの名無しさん
2018/09/15(土) 02:03:07.61ID:pm09nqHo 話は変わるけどさ、
シェルスクリプト(シバンは #!/bin/sh 実体はdash)に
A=
A=123 echo "$A-1"
echo "$A-2"
って書いて実行したら以下のように表示されるんだよ。
-1
-2
この動きはA=123が評価される前にechoの変数展開が行われて-1になって
実行したらAの内容が元に戻るから-2と表示されるということで理解できる
でも以下のように書いたら
A=
A=123 eval 'echo "$A-1"'
echo "$A-2"
次のように表示されるんだよ
123-1
123-2
これはどういうわけだろう?
さらにbashとzshで実行した場合は以下のように表示されたw
123-1
-2
この動作ならまだ理解できる。
でもkshやposhやyashなんかはdashと同じ
どっちが正しい動きなんだろう?
シェルスクリプト(シバンは #!/bin/sh 実体はdash)に
A=
A=123 echo "$A-1"
echo "$A-2"
って書いて実行したら以下のように表示されるんだよ。
-1
-2
この動きはA=123が評価される前にechoの変数展開が行われて-1になって
実行したらAの内容が元に戻るから-2と表示されるということで理解できる
でも以下のように書いたら
A=
A=123 eval 'echo "$A-1"'
echo "$A-2"
次のように表示されるんだよ
123-1
123-2
これはどういうわけだろう?
さらにbashとzshで実行した場合は以下のように表示されたw
123-1
-2
この動作ならまだ理解できる。
でもkshやposhやyashなんかはdashと同じ
どっちが正しい動きなんだろう?
848デフォルトの名無しさん
2018/09/15(土) 04:27:15.99ID:2etSWec6 またかww
849デフォルトの名無しさん
2018/09/15(土) 05:43:59.56ID:krdUo6un >>847
単にシェルごとに仕様が違ってるだけで全て正常動作だろうし正しいと言えば正しいのでは?
てか、あらゆるシェルはこのような時はこのような動きにならなければいけないみたいな決まりがあるわけでもないんだから正しいか間違いかで考えること自体がおかしい。
単にシェルごとに仕様が違ってるだけで全て正常動作だろうし正しいと言えば正しいのでは?
てか、あらゆるシェルはこのような時はこのような動きにならなければいけないみたいな決まりがあるわけでもないんだから正しいか間違いかで考えること自体がおかしい。
850デフォルトの名無しさん
2018/09/15(土) 06:12:06.93ID:pm09nqHo >>849
> 単にシェルごとに仕様が違ってるだけで全て正常動作だろうし正しいと言えば正しいのでは?
POSIXの仕様と照らし合わせてって意味だよ
POSIXの仕様と照らし合わせて正しいのか間違ってるのか
そもそもPOSIXにこういったときの仕様は定義されていないのか
> あらゆるシェルはこのような時はこのような動きにならなければいけないみたいな決まりがあるわけでもないんだから
決まりはあって、それがPOSIXの仕様のことだよ
> 単にシェルごとに仕様が違ってるだけで全て正常動作だろうし正しいと言えば正しいのでは?
POSIXの仕様と照らし合わせてって意味だよ
POSIXの仕様と照らし合わせて正しいのか間違ってるのか
そもそもPOSIXにこういったときの仕様は定義されていないのか
> あらゆるシェルはこのような時はこのような動きにならなければいけないみたいな決まりがあるわけでもないんだから
決まりはあって、それがPOSIXの仕様のことだよ
851デフォルトの名無しさん
2018/09/15(土) 06:13:27.92ID:pm09nqHo852デフォルトの名無しさん
2018/09/15(土) 09:25:08.76ID:bwURAev4 よほどリアルでぼっちなんだな。そらそうだなという人格と見えるし
853デフォルトの名無しさん
2018/09/15(土) 11:18:23.22ID:OUVvcRON >>843
> それとも、単に技術レベルが数ランク下なのか知らんが
https://cdn-ak.f.st-hatena.com/images/fotolife/k/kemurikikakuku/20170201/20170201184641.jpg
> それとも、単に技術レベルが数ランク下なのか知らんが
https://cdn-ak.f.st-hatena.com/images/fotolife/k/kemurikikakuku/20170201/20170201184641.jpg
854デフォルトの名無しさん
2018/09/15(土) 15:58:58.37ID:8KftQgLD 俺自身にもそういう傾向があるが
訊かれてもないことをずらずら書いて自己満足に浸るのはよくないと思う。
現実の人間関係でもそういう人はハブられがちだし。
訊かれてもないことをずらずら書いて自己満足に浸るのはよくないと思う。
現実の人間関係でもそういう人はハブられがちだし。
855デフォルトの名無しさん
2018/09/15(土) 16:00:37.10ID:KIanXBkQ 聞いたことを答えないで
聞かれてないことを答えるのは
それはそいつが何も知らないときだ
オマエはなにもわかってない
聞かれてないことを答えるのは
それはそいつが何も知らないときだ
オマエはなにもわかってない
856デフォルトの名無しさん
2018/09/15(土) 16:04:38.00ID:pm09nqHo857デフォルトの名無しさん
2018/09/15(土) 16:05:17.15ID:pm09nqHo >>847の質問よろしくおねがいします。
858デフォルトの名無しさん
2018/09/15(土) 16:16:01.63ID:iaCHT03n 文書なげぇんだよなぁ
859デフォルトの名無しさん
2018/09/15(土) 16:16:38.70ID:pm09nqHo 前に情報小出しにするなって言われたからねw
860デフォルトの名無しさん
2018/09/15(土) 16:32:31.20ID:Svn0IWNp 質問のときだけはへり下るのな
身を正してのつもりかもだが、質問のときだけですぐに豹変するからお前の場合はもうただただ気持ち悪いだけ
身を正してのつもりかもだが、質問のときだけですぐに豹変するからお前の場合はもうただただ気持ち悪いだけ
861デフォルトの名無しさん
2018/09/15(土) 16:35:43.79ID:pm09nqHo 何だ?質問も高圧的にすれば満足するんか?
ただ文句言いたいだけだろ。
そんな無駄な会話してないで
本題にもどれや
ただ文句言いたいだけだろ。
そんな無駄な会話してないで
本題にもどれや
862デフォルトの名無しさん
2018/09/15(土) 16:38:13.80ID:Svn0IWNp どうしてそっちになるのだか。やっぱりそっちが素で付け焼き刃のへりくだりか
社会的にはは豹変しない方になんだけどなあ
社会的にはは豹変しない方になんだけどなあ
863デフォルトの名無しさん
2018/09/15(土) 16:45:50.83ID:pm09nqHo やっぱり意地でもスレと無関係の話をしたいようだ。
お前がいなくなればスレは平和になるのになぁw
お前がいなくなればスレは平和になるのになぁw
864デフォルトの名無しさん
2018/09/15(土) 16:50:58.66ID:Svn0IWNp なにその俺は違う的なレスは
さすがいままでのレスで自己中ぶりを発揮しまくっただけあるやつだなあ。ただただ気持ち悪いのもそれは自己中ぶりからなんだかが、わからないだろうな、わかってたらそんな自己中にはならんだろうし
さすがいままでのレスで自己中ぶりを発揮しまくっただけあるやつだなあ。ただただ気持ち悪いのもそれは自己中ぶりからなんだかが、わからないだろうな、わかってたらそんな自己中にはならんだろうし
865デフォルトの名無しさん
2018/09/15(土) 16:55:24.75ID:SSTURz0o なるほど、コマンドライン上にある変数(シェルが予め展開する変数)はそのままなのか
fork & exec されるプロセス空間の環境変数にのみ作用するのだからそうなるわな
$ PATH=hoge ls "${PATH}"
$ PATH=hoge /bin/ls "${PATH}"
fork & exec されるプロセス空間の環境変数にのみ作用するのだからそうなるわな
$ PATH=hoge ls "${PATH}"
$ PATH=hoge /bin/ls "${PATH}"
866デフォルトの名無しさん
2018/09/15(土) 17:01:07.67ID:Svn0IWNp >>865
それと、(一時的)環境変数をいつするのかと、環境変数をいつ展開するのかが被ってるてとこかなあ
A=123 /bin/echo "$A"
A=123 bash/dash/ksh/etc... -c 'echo "$A"'
それと、(一時的)環境変数をいつするのかと、環境変数をいつ展開するのかが被ってるてとこかなあ
A=123 /bin/echo "$A"
A=123 bash/dash/ksh/etc... -c 'echo "$A"'
867デフォルトの名無しさん
2018/09/15(土) 17:19:32.41ID:8KftQgLD >>866
そのコマンドラインは,「直前に指定した変数が影響しない」のが正しい挙動だよな
なぜならシェルはそれらを一緒くたに処理するから,変数の変化を参照できない
↑この理解って正しい?
bashコマンドラインで
$ VAR=val echo $VAR
# なにも返らず
$ VAR=val; echo $VAR
val
こういう挙動から推測したんだけども。
そのコマンドラインは,「直前に指定した変数が影響しない」のが正しい挙動だよな
なぜならシェルはそれらを一緒くたに処理するから,変数の変化を参照できない
↑この理解って正しい?
bashコマンドラインで
$ VAR=val echo $VAR
# なにも返らず
$ VAR=val; echo $VAR
val
こういう挙動から推測したんだけども。
869デフォルトの名無しさん
2018/09/15(土) 17:42:37.90ID:pm09nqHo >>865
forkされる場合ってのはわかりやすいんだけどね
> A=
> A=123 echo "$A-1"
> echo "$A-2"
>
> 次のように表示されるんだよ
> 123-1
> 123-2
実行するのがシェルビルトインコマンドであっても実行後は元に戻る
ん?頭にA=123をつけた時、本当にシェルビルトインの
echoが呼ばれてるのか?と思ってecho --versionとしてみたが、
やっぱりシェルビルトインの方だった。
(/bin/echo --versionだとバージョン情報が表示される)
他のシェルで試してみたがすべて同じ挙動
ということで
> A=123 echo "$A-1"
と書いたら変数の内容は実行後に元に戻る。
というのが基本の動きでいいのだろう
まあよく知られた機能だよね。
forkされる場合ってのはわかりやすいんだけどね
> A=
> A=123 echo "$A-1"
> echo "$A-2"
>
> 次のように表示されるんだよ
> 123-1
> 123-2
実行するのがシェルビルトインコマンドであっても実行後は元に戻る
ん?頭にA=123をつけた時、本当にシェルビルトインの
echoが呼ばれてるのか?と思ってecho --versionとしてみたが、
やっぱりシェルビルトインの方だった。
(/bin/echo --versionだとバージョン情報が表示される)
他のシェルで試してみたがすべて同じ挙動
ということで
> A=123 echo "$A-1"
と書いたら変数の内容は実行後に元に戻る。
というのが基本の動きでいいのだろう
まあよく知られた機能だよね。
870デフォルトの名無しさん
2018/09/15(土) 17:43:08.57ID:pm09nqHo ちなみにコマンドライン(シェル)じゃなくて
スクリプトを書いて実行して確かめてる
スクリプトを書いて実行して確かめてる
871デフォルトの名無しさん
2018/09/15(土) 17:56:26.73ID:pm09nqHo 知ってると思うんだけど、念の為
var=value command
この構文は、変数varにvalueを入れるだけじゃなくて
export varした状態になる。だからcommandが
外部コマンドであっても値は引き継がれている
(今回の話とは直接関係はない)
var=value command
この構文は、変数varにvalueを入れるだけじゃなくて
export varした状態になる。だからcommandが
外部コマンドであっても値は引き継がれている
(今回の話とは直接関係はない)
872デフォルトの名無しさん
2018/09/15(土) 18:00:22.45ID:pm09nqHo 話を簡単にすると
A=
A=123 eval :
echo $A
dashだと123と表示される。
bashだと何も表示されない。
A=
A=123 eval :
echo $A
dashだと123と表示される。
bashだと何も表示されない。
873デフォルトの名無しさん
2018/09/15(土) 18:15:21.72ID:SSTURz0o >>872
ふむ、bash で set -o posix してから実行すると 123 って表示されるね
ふむ、bash で set -o posix してから実行すると 123 って表示されるね
874デフォルトの名無しさん
2018/09/15(土) 18:22:17.36ID:pm09nqHo875デフォルトの名無しさん
2018/09/15(土) 18:34:31.19ID:8KftQgLD876デフォルトの名無しさん
2018/09/15(土) 18:43:07.13ID:pm09nqHo >>875
それは単に「VAR=var echo $VAR」が1行だから
先に$VARが展開されるだけだと思うよ
変数を一時的に変更したいけど、別変数にバックアップして元に戻すの面倒だな
その他にも方法あるけどアレ(省略)だし、
よし、var=value command構文を使おう!
うお、先に$VARが展開されちまった
ぴこーん!だったらeval使えば先に展開されることないんじゃね?
よし動い・・・あれぁ、変数を一時的に変更したかったのに
実行終わっても変数が元に戻らないよぉ
よし5ちゃんねるだ。という流れw
それは単に「VAR=var echo $VAR」が1行だから
先に$VARが展開されるだけだと思うよ
変数を一時的に変更したいけど、別変数にバックアップして元に戻すの面倒だな
その他にも方法あるけどアレ(省略)だし、
よし、var=value command構文を使おう!
うお、先に$VARが展開されちまった
ぴこーん!だったらeval使えば先に展開されることないんじゃね?
よし動い・・・あれぁ、変数を一時的に変更したかったのに
実行終わっても変数が元に戻らないよぉ
よし5ちゃんねるだ。という流れw
877デフォルトの名無しさん
2018/09/15(土) 18:52:32.83ID:8KftQgLD >>876
もうとっくに分かってると思うが 俺が思い付いたのは
$ VAR=val-b4
$ (VAR=val-tmp; echo $VAR)
→ val-tmp
$ echo $VAR
→ val-b4
くらいだな
もうとっくに分かってると思うが 俺が思い付いたのは
$ VAR=val-b4
$ (VAR=val-tmp; echo $VAR)
→ val-tmp
$ echo $VAR
→ val-b4
くらいだな
878デフォルトの名無しさん
2018/09/15(土) 19:22:09.86ID:imSsWev+ https://i.imgur.com/VhwX2Fq.jpg
このスクショのようにmediainfoというコマンドのAudioの項目のFormatを取り出す方法教えてほしいです
。
以前はそのAudioのFormatという文字列はFormat profileだったので、
mediainfo "$FILE" | grep -E '^Format profile' | sed -E 's/.*: (.*)/\1/'
こうやってその行を抽出していたんですが、mediainfoがバージョンアップしてFormatという文字列に変わってしまいました。
Generalの項目にもFormatがあるので、これだと調べられません。
どうやるんでしょうか?
このスクショのようにmediainfoというコマンドのAudioの項目のFormatを取り出す方法教えてほしいです
。
以前はそのAudioのFormatという文字列はFormat profileだったので、
mediainfo "$FILE" | grep -E '^Format profile' | sed -E 's/.*: (.*)/\1/'
こうやってその行を抽出していたんですが、mediainfoがバージョンアップしてFormatという文字列に変わってしまいました。
Generalの項目にもFormatがあるので、これだと調べられません。
どうやるんでしょうか?
879デフォルトの名無しさん
2018/09/15(土) 19:37:37.26ID:SSTURz0o GNU sed の -r オプション使ってるけど、こんな感じで
$ mediainfo "$FILE" | sed -nr '/^Audio/,$s/^Format +: (.+)/\1/p'
$ mediainfo "$FILE" | sed -nr '/^Audio/,$s/^Format +: (.+)/\1/p'
880デフォルトの名無しさん
2018/09/15(土) 19:38:31.49ID:pm09nqHo >>878
mediainfo "$FILE" | sed -n -E '/Audio/,/\s*$/{s/Format\s*:\s//p}'
mediainfo "$FILE" | sed -n -E '/Audio/,/\s*$/{s/Format\s*:\s//p}'
881デフォルトの名無しさん
2018/09/15(土) 19:41:31.43ID:SSTURz0o ヘルプメッセージ読んだらこれでいいかも
$ mediainfo --Inform="Audio;%Format%" "$FILE"
$ mediainfo --Inform="Audio;%Format%" "$FILE"
882デフォルトの名無しさん
2018/09/15(土) 19:41:51.97ID:pm09nqHo Audioにformatが複数あっても対応できないかなー?ってやってたら遅れたw
883デフォルトの名無しさん
2018/09/15(土) 19:42:08.44ID:8KftQgLD >>878
mediainfo "$FILE" | sed -n -e '/^Audio/,$p' | grep '^Format' | cut -f '2-' -d ':' -s
これでどうだろう?
ところで綺麗な端末だね。
mediainfo "$FILE" | sed -n -e '/^Audio/,$p' | grep '^Format' | cut -f '2-' -d ':' -s
これでどうだろう?
ところで綺麗な端末だね。
884デフォルトの名無しさん
2018/09/15(土) 19:42:36.17ID:8KftQgLD ちょっと確かめてたらめっちゃ回答ついてたw
885デフォルトの名無しさん
2018/09/15(土) 19:43:35.86ID:8KftQgLD ちなみに俺のコマンドラインはPOSIXに準拠してるので可搬性は高いと思うよ(ドヤ顔)
886デフォルトの名無しさん
2018/09/15(土) 19:50:28.32ID:pm09nqHo887デフォルトの名無しさん
2018/09/15(土) 19:57:27.53ID:SSTURz0o >>886
>> GNU sed の -r オプション使ってるけど、こんな感じで
>-r じゃなくて -E を使えば良いのでは?
>POSIX準拠?かどうか知らないけど-Eは使えるはず
癖で指が -r を押してしまう…以後気をつけます
>> GNU sed の -r オプション使ってるけど、こんな感じで
>-r じゃなくて -E を使えば良いのでは?
>POSIX準拠?かどうか知らないけど-Eは使えるはず
癖で指が -r を押してしまう…以後気をつけます
888デフォルトの名無しさん
2018/09/15(土) 19:59:15.83ID:pm09nqHo Macだと\sは使えないのかな?
とりあえず>>879を参考にしつつ修正してみた。
General、Audio、の次になにか来ても対応できるようにしてみた。
これなら-Eいらんかったわ。macOSで動くのを確認済み
sed -n '/^Audio/,/^$/ s/^Format *: *// p'
とりあえず>>879を参考にしつつ修正してみた。
General、Audio、の次になにか来ても対応できるようにしてみた。
これなら-Eいらんかったわ。macOSで動くのを確認済み
sed -n '/^Audio/,/^$/ s/^Format *: *// p'
889デフォルトの名無しさん
2018/09/15(土) 20:01:46.68ID:pm09nqHo -Eが良いよ(ドヤァ)
POSIX準拠というより可搬性重視なので、
-Eが使えるなら-Eつけてれば良いんじゃね?ぐらいに思ってるw
POSIX準拠というより可搬性重視なので、
-Eが使えるなら-Eつけてれば良いんじゃね?ぐらいに思ってるw
890デフォルトの名無しさん
2018/09/15(土) 20:06:03.93ID:pm09nqHo >>883
> grep '^Format' | cut -f '2-' -d ':' -s
grepしてcutするって流れは、俺もよくやるんだけど、
awk一つにまとめられる(と後からよく気づくw)
> grep '^Format' | cut -f '2-' -d ':' -s
grepしてcutするって流れは、俺もよくやるんだけど、
awk一つにまとめられる(と後からよく気づくw)
891デフォルトの名無しさん
2018/09/15(土) 20:13:17.74ID:8KftQgLD >>890
でもなんかその操作をawk一つにまとめるって
emacsのorgモードに近い印象を受けるというか
ちょっとUnix哲学っぽくねえなと思う。
もちろんUnix哲学に従う必要性は皆無なんだけど,あくまで個人的な意見として。
でもなんかその操作をawk一つにまとめるって
emacsのorgモードに近い印象を受けるというか
ちょっとUnix哲学っぽくねえなと思う。
もちろんUnix哲学に従う必要性は皆無なんだけど,あくまで個人的な意見として。
892デフォルトの名無しさん
2018/09/15(土) 20:16:21.20ID:pm09nqHo >>891
それ言ったらsedは今回、範囲選択+行選択+置換 の3つを同時にやってるんやで?w
それ言ったらsedは今回、範囲選択+行選択+置換 の3つを同時にやってるんやで?w
893デフォルトの名無しさん
2018/09/15(土) 20:20:10.43ID:8KftQgLD894デフォルトの名無しさん
2018/09/15(土) 20:41:53.02ID:pm09nqHo sedもawkも複数行のスクリプトを実行できるわけで
一つのコマンドで複雑な異なる機能を提供してるから
Unix哲学から反してるのかもね
だから例のアレはUnix哲学がどうとか言ってる割に
結局awkでプログラム書くんかいって突っ込みたくなるんだな
一つのコマンドで複雑な異なる機能を提供してるから
Unix哲学から反してるのかもね
だから例のアレはUnix哲学がどうとか言ってる割に
結局awkでプログラム書くんかいって突っ込みたくなるんだな
895デフォルトの名無しさん
2018/09/15(土) 20:45:00.31ID:8rxpHkWL まだとどまる事のない誤解を披瀝し続けとってわろたw
896デフォルトの名無しさん
2018/09/15(土) 21:28:41.91ID:imSsWev+ みなさんどうもありがとうございます!
>>881
おお!こんなオプションがあったんですか!って思って試してみたんですが、
上のスクショのLC-AAC-Sample.aac、HE-AAC-Sample.aacで試すと、どちらもAACと表示され、
このファイルはLC-AACかHE-AACなのか判別して次の処理に進む事が出来なかったので、このオプションではダメでした。
INFO=$(mediainfo "$FILE" | sedほげほげ"
case "$INFO" in
"AAC LC" )
ほげほげ1
"AAC LC SBR")
ほげほげ2
*)
ほげほげ3
って感じで次の処理に進むんですが、
>>879、880、888だとほげほげ1か2に進めて、>>883だとほげほげ3になってしまいました。
>>881
おお!こんなオプションがあったんですか!って思って試してみたんですが、
上のスクショのLC-AAC-Sample.aac、HE-AAC-Sample.aacで試すと、どちらもAACと表示され、
このファイルはLC-AACかHE-AACなのか判別して次の処理に進む事が出来なかったので、このオプションではダメでした。
INFO=$(mediainfo "$FILE" | sedほげほげ"
case "$INFO" in
"AAC LC" )
ほげほげ1
"AAC LC SBR")
ほげほげ2
*)
ほげほげ3
って感じで次の処理に進むんですが、
>>879、880、888だとほげほげ1か2に進めて、>>883だとほげほげ3になってしまいました。
897デフォルトの名無しさん
2018/09/15(土) 21:30:45.05ID:imSsWev+ >>883
端末はMacのiTerm、シェルはfish、プロンプトは適当にいじったやつです。
端末はMacのiTerm、シェルはfish、プロンプトは適当にいじったやつです。
898デフォルトの名無しさん
2018/09/15(土) 21:43:49.56ID:pm09nqHo >>896
> このファイルはLC-AACかHE-AACなのか判別して次の処理に進む事が出来なかったので、このオプションではダメでした。
ちゃんと調べた? %Format%以外で出るのあるんじゃないの?
> このファイルはLC-AACかHE-AACなのか判別して次の処理に進む事が出来なかったので、このオプションではダメでした。
ちゃんと調べた? %Format%以外で出るのあるんじゃないの?
899デフォルトの名無しさん
2018/09/15(土) 21:59:26.07ID:imSsWev+ >>898
Audio;%Format/Info%
だと上のスクショの
Advanced Audio Codec Low Complexityなになに
が取り出せるようでした。
これだとLC AACならAdvanced Audio Codec Low Complexity
HE-AACならAdvanced Audio Codec Low Complexity with Spectral Band Replication
が取り出せるので判別出来そうです。
Audio;%Format/Info%
だと上のスクショの
Advanced Audio Codec Low Complexityなになに
が取り出せるようでした。
これだとLC AACならAdvanced Audio Codec Low Complexity
HE-AACならAdvanced Audio Codec Low Complexity with Spectral Band Replication
が取り出せるので判別出来そうです。
900デフォルトの名無しさん
2018/09/15(土) 22:08:36.45ID:8KftQgLD901デフォルトの名無しさん
2018/09/15(土) 22:18:17.17ID:8KftQgLD >>899
ところで
http://www.mpeg-audio.org/members/files/DASH_Files/Audio_Only_Stereo_Dash.zip
↑こっからDLできるサンプルファイルで試したところ
AAC-LC/Technology-en-69s-2-lc-64000bps_seg.mp4
と
HE-AAC/Technology-en-69s-2-heaac-64000bps_seg.mp4
は
mediainfoの出力結果で
Audio;FormatではどちらもAAC表示で区別できず
Audio;Format profileでやっと区別できるんだけど,俺の勘違いかな。
ところで
http://www.mpeg-audio.org/members/files/DASH_Files/Audio_Only_Stereo_Dash.zip
↑こっからDLできるサンプルファイルで試したところ
AAC-LC/Technology-en-69s-2-lc-64000bps_seg.mp4
と
HE-AAC/Technology-en-69s-2-heaac-64000bps_seg.mp4
は
mediainfoの出力結果で
Audio;FormatではどちらもAAC表示で区別できず
Audio;Format profileでやっと区別できるんだけど,俺の勘違いかな。
902デフォルトの名無しさん
2018/09/15(土) 22:25:58.84ID:8KftQgLD 何度も投稿してすまん。
これでいいんじゃないかな。
確かめた環境はMediaInfo 0.7.91 on Debian 9.5。
case "$(mediainfo --Inform='Audio;%Format_Profile%' "$FILE")" in
HE*) echo 'HE';;
LC*) echo 'LC';;
esac
これでいいんじゃないかな。
確かめた環境はMediaInfo 0.7.91 on Debian 9.5。
case "$(mediainfo --Inform='Audio;%Format_Profile%' "$FILE")" in
HE*) echo 'HE';;
LC*) echo 'LC';;
esac
903デフォルトの名無しさん
2018/09/15(土) 22:45:32.78ID:pm09nqHo >>896のコード見て思うのは
Unix哲学(を完全に受け入れたわけじゃないが)
9. 全てのプログラムはフィルタとして振る舞うようにせよ。
すべてのプログラムはフィルタとして振る舞うようにしたとして
そのプログラムを使う側もフィルタとして利用するようにすべきだと思うわけよ
つまりね、こういうふうに書くべきじゃないのか?ってこと
mediainfo --Inform='Audio;%Format_Profile%\n' "$FILE" | while IFS= read -r line; do
case $line in
HE*) echo 'HE';;
LC*) echo 'LC';;
esac
done
本当は$FILEの所も"$@"にして複数ファイル対応できるようにしたい。
だけどメディアファイルっていうのはオーディオを複数入れることができるはずだから、
この場合どうなるのか?という疑問がある。その場合はうまくいかないかもしれない。
まあ適切なサンプルファイルを思いつかんし面倒だから試しては見てないが
Unix哲学(を完全に受け入れたわけじゃないが)
9. 全てのプログラムはフィルタとして振る舞うようにせよ。
すべてのプログラムはフィルタとして振る舞うようにしたとして
そのプログラムを使う側もフィルタとして利用するようにすべきだと思うわけよ
つまりね、こういうふうに書くべきじゃないのか?ってこと
mediainfo --Inform='Audio;%Format_Profile%\n' "$FILE" | while IFS= read -r line; do
case $line in
HE*) echo 'HE';;
LC*) echo 'LC';;
esac
done
本当は$FILEの所も"$@"にして複数ファイル対応できるようにしたい。
だけどメディアファイルっていうのはオーディオを複数入れることができるはずだから、
この場合どうなるのか?という疑問がある。その場合はうまくいかないかもしれない。
まあ適切なサンプルファイルを思いつかんし面倒だから試しては見てないが
904デフォルトの名無しさん
2018/09/15(土) 23:39:36.74ID:imSsWev+ みなさんどうもありがとうございます
>>896の時点のコードは以下です
https://pastebin.com/qdNT6iBm
拡張子がaacのファイルがあるディレクトリでこのスクリプトを動かしたらaacファイル全て(ひとつづつ)処理させてます。
>>900-903
明日確認してみます
$ mediainfo --version
MediaInfo Command line,
MediaInfoLib - v18.08.1
以前のバージョンではFormat profile欄があったのでそこで判別してたんですが、いつのまにか(昨日気がつきました)最近のバージョンではFormat profile欄がなくなっているんです。>>878のスクショです
>>896の時点のコードは以下です
https://pastebin.com/qdNT6iBm
拡張子がaacのファイルがあるディレクトリでこのスクリプトを動かしたらaacファイル全て(ひとつづつ)処理させてます。
>>900-903
明日確認してみます
$ mediainfo --version
MediaInfo Command line,
MediaInfoLib - v18.08.1
以前のバージョンではFormat profile欄があったのでそこで判別してたんですが、いつのまにか(昨日気がつきました)最近のバージョンではFormat profile欄がなくなっているんです。>>878のスクショです
905デフォルトの名無しさん
2018/09/15(土) 23:59:46.80ID:8KftQgLD >>904
なるほどね。Debainのaptで入れたやつは古いのか。
$ mediainfo --version
MediaInfo Command line,
MediaInfoLib - v18.08.1
$ mediainfo --Output='Audio;%Format_AdditionalFeatures%' ./Audio_Only_Stereo_Dash/HE-AAC/Technology-en-69s-2-heaac-32000bps_seg.mp4
LC SBR
$ mediainfo --Output='Audio;%Format_AdditionalFeatures%' ./Audio_Only_Stereo_Dash/AAC-LC/Technology-en-69s-2-lc-64000bps_seg.mp4
LC
これは結構見分けやすいんじゃないか?
なるほどね。Debainのaptで入れたやつは古いのか。
$ mediainfo --version
MediaInfo Command line,
MediaInfoLib - v18.08.1
$ mediainfo --Output='Audio;%Format_AdditionalFeatures%' ./Audio_Only_Stereo_Dash/HE-AAC/Technology-en-69s-2-heaac-32000bps_seg.mp4
LC SBR
$ mediainfo --Output='Audio;%Format_AdditionalFeatures%' ./Audio_Only_Stereo_Dash/AAC-LC/Technology-en-69s-2-lc-64000bps_seg.mp4
LC
これは結構見分けやすいんじゃないか?
906デフォルトの名無しさん
2018/09/16(日) 00:12:32.41ID:ynEgKPZ+ >>904
ちょっと訊きたいんだけど,MPEG4のLCとHEの違いってSBRが適用されてるかいなかの差?
もしそうならまさにそのオプションがあって
mediainfo --Output='Audio;%Format_Settings_SBR%'
↑これは,SBRが含まれていれば“Yes (Explicit)”,含まれていなけば空文字を返す。
ちょっと訊きたいんだけど,MPEG4のLCとHEの違いってSBRが適用されてるかいなかの差?
もしそうならまさにそのオプションがあって
mediainfo --Output='Audio;%Format_Settings_SBR%'
↑これは,SBRが含まれていれば“Yes (Explicit)”,含まれていなけば空文字を返す。
907デフォルトの名無しさん
2018/09/16(日) 00:17:30.07ID:6L484PJq >>904
> >>896の時点のコードは以下です
> https://pastebin.com/qdNT6iBm
つまらん。特に指摘する点はない。
細かい趣味程度のことぐらいだな。
ファイルは引数で渡したほうがいいんじゃね?とか
俺ならset -eu -o pipefailをつけるとか
(一行で書く場合を除いて)コマンドの後ろの ;; は嫌いだとか
> >>896の時点のコードは以下です
> https://pastebin.com/qdNT6iBm
つまらん。特に指摘する点はない。
細かい趣味程度のことぐらいだな。
ファイルは引数で渡したほうがいいんじゃね?とか
俺ならset -eu -o pipefailをつけるとか
(一行で書く場合を除いて)コマンドの後ろの ;; は嫌いだとか
908デフォルトの名無しさん
2018/09/16(日) 01:08:58.79ID:dyBKzwHe 大先生かよw
909デフォルトの名無しさん
2018/09/16(日) 01:22:39.05ID:6L484PJq ちーす
910デフォルトの名無しさん
2018/09/16(日) 13:43:22.79ID:dTju3huw ネタフリ、これ前に紹介したことあったっけ?
modernish: a shell moderniser library
https://github.com/modernish/modernishhttps://github.com/modernish/modernish#modernish-a-shell-moderniser-library
良さそうなことを書いてあるが、大きすぎて、それでいて何ができるのかよくわからない
ようするに誰か日本語で簡潔に解説してくれとw
modernish: a shell moderniser library
https://github.com/modernish/modernishhttps://github.com/modernish/modernish#modernish-a-shell-moderniser-library
良さそうなことを書いてあるが、大きすぎて、それでいて何ができるのかよくわからない
ようするに誰か日本語で簡潔に解説してくれとw
911デフォルトの名無しさん
2018/09/16(日) 21:03:29.36ID:ynEgKPZ+ 変な人が二人いるせいで質問者が帰っちゃったじゃん。せっかく良い案を思いついたのに。
912デフォルトの名無しさん
2018/09/16(日) 23:14:50.58ID:dTju3huw いや、気にせず書けよw
また見るかもしれないじゃん
また見るかもしれないじゃん
913デフォルトの名無しさん
2018/09/16(日) 23:27:44.88ID:ynEgKPZ+ もう書いてるよw
914デフォルトの名無しさん
2018/09/17(月) 09:30:58.79ID:yJ/mJYoq 二人いるんじゃなくて、同一人物なんじゃ?
例の人、プロバイダー2つ契約してて自演に使ってるんだし。
例の人、プロバイダー2つ契約してて自演に使ってるんだし。
915デフォルトの名無しさん
2018/09/19(水) 03:32:21.41ID:6Ke1Nn09 引用符を除去するいい方法ってないかな。
個人的には変数の仕様("abc"はabcとみなされる)とかを利用してエレガントに解決できるんじゃないかと思ってるんだけど うまくいかん。
いまのところsed -e 's/"\([^"]+\)"/\1'で問題はないけれど「\"」の形のエスケープに対応したりするのが面倒になってくるんだよね この形だと。
個人的には変数の仕様("abc"はabcとみなされる)とかを利用してエレガントに解決できるんじゃないかと思ってるんだけど うまくいかん。
いまのところsed -e 's/"\([^"]+\)"/\1'で問題はないけれど「\"」の形のエスケープに対応したりするのが面倒になってくるんだよね この形だと。
916デフォルトの名無しさん
2018/09/19(水) 04:43:37.82ID:ScWhkKn/ a='"aa\"a"'
eval echo "$a" とか eval "b=$a"
じゃだめ?
おまけ、最近のbashには以下のような変数展開が
増えているけど今回は関係なさそう
${parameter@A}
${parameter@E}
${parameter@P}
${parameter@Q}
eval echo "$a" とか eval "b=$a"
じゃだめ?
おまけ、最近のbashには以下のような変数展開が
増えているけど今回は関係なさそう
${parameter@A}
${parameter@E}
${parameter@P}
${parameter@Q}
917デフォルトの名無しさん
2018/09/19(水) 07:25:21.58ID:6Ke1Nn09918デフォルトの名無しさん
2018/09/19(水) 07:59:33.05ID:ScWhkKn/ >>917
さあね。「引用符を除去するいい方法」の正確な意味がよくわからないので
もしかして単に前後の引用符を除去するだけだった?
ならこれだけで行けるけど
a='"aa\"a"'
a=${a#\"}
a=${a%\"}
エレガントに解決っていうから、なんかもっと複雑な話かと思った
さあね。「引用符を除去するいい方法」の正確な意味がよくわからないので
もしかして単に前後の引用符を除去するだけだった?
ならこれだけで行けるけど
a='"aa\"a"'
a=${a#\"}
a=${a%\"}
エレガントに解決っていうから、なんかもっと複雑な話かと思った
919デフォルトの名無しさん
2018/09/19(水) 08:36:50.27ID:6Ke1Nn09 >>918
いや 別に文句を言ったつもりはない
先に挙げてもらった方法で解決してるし あれはすごくエレガントだと思う。
エレガントっていうのは数学畑の言葉のつもりで使った。
つまりまわりくどいやりかたではなく本質をつらぬいた方法。
今回は,
「シェルに対してトークンの区切りを示すための引用符をシェルに読み込ませることによって除去する」
という非常に直感的で素晴しい方法を学べた。
俺のやりかたはわざわざsedを使ってる点で,シェルが解釈するという本質から外れてしまっている。
いや 別に文句を言ったつもりはない
先に挙げてもらった方法で解決してるし あれはすごくエレガントだと思う。
エレガントっていうのは数学畑の言葉のつもりで使った。
つまりまわりくどいやりかたではなく本質をつらぬいた方法。
今回は,
「シェルに対してトークンの区切りを示すための引用符をシェルに読み込ませることによって除去する」
という非常に直感的で素晴しい方法を学べた。
俺のやりかたはわざわざsedを使ってる点で,シェルが解釈するという本質から外れてしまっている。
920デフォルトの名無しさん
2018/09/19(水) 08:38:35.76ID:6Ke1Nn09 ちなみにやりたかったことは単純に
VAR="value with space"
↑こういうことが書かれたファイルから
value with space
という語句を取り出すというもの。
$ cat /etc/os-release | grep '^PRETTY_NAME' | cut -f 2 -d '=' | eval echo "$(cat)"
↑こういう感じ。
VAR="value with space"
↑こういうことが書かれたファイルから
value with space
という語句を取り出すというもの。
$ cat /etc/os-release | grep '^PRETTY_NAME' | cut -f 2 -d '=' | eval echo "$(cat)"
↑こういう感じ。
921デフォルトの名無しさん
2018/09/19(水) 09:31:58.31ID:qXmDWFW/ $ cat /etc/os-release | grep '^PRETTY_NAME' | cut -d'"' -f2
というのはどうだろう
というのはどうだろう
922デフォルトの名無しさん
2018/09/19(水) 09:41:44.85ID:ScWhkKn/ >>919
単に文字列の途中にどういう意味かわからなかっただけだよ。
>「\"」の形のエスケープに対応したりするのが面倒
とか書いてあったから、何がしたいんだろうと
前後の""を取るだけなら>>918のやり方が最短で最速
>>920
> VAR="value with space"
> ↑こういうことが書かれたファイルから
> value with space
> という語句を取り出すというもの。
それだとまた話が変わってくるな
(. /etc/os-release; echo $PRETTY_NAME)
()でくくってるのは、単に変数のスコープをサブシェルに閉じ込めてるだけ
カレントシェルにばらまいていいなら()はいらない
シェル互換の文法としてみなせるファイルならこれでいけるよ
コードが入っていたら実行されるから、安全なファイルと断定できるものにしか使えないけど
単に文字列の途中にどういう意味かわからなかっただけだよ。
>「\"」の形のエスケープに対応したりするのが面倒
とか書いてあったから、何がしたいんだろうと
前後の""を取るだけなら>>918のやり方が最短で最速
>>920
> VAR="value with space"
> ↑こういうことが書かれたファイルから
> value with space
> という語句を取り出すというもの。
それだとまた話が変わってくるな
(. /etc/os-release; echo $PRETTY_NAME)
()でくくってるのは、単に変数のスコープをサブシェルに閉じ込めてるだけ
カレントシェルにばらまいていいなら()はいらない
シェル互換の文法としてみなせるファイルならこれでいけるよ
コードが入っていたら実行されるから、安全なファイルと断定できるものにしか使えないけど
923デフォルトの名無しさん
2018/09/19(水) 22:30:20.23ID:/Yn8C735 "a" → a
こういう変換は、CSV でも苦労してる。
" が偶数個なら良いけど、奇数個なら形式エラーにするとか
CSV は、様々なバグが考えられるから、TSV が良い
"a""b" → a""b
ただし、" " 内で、" を使う場合、"" と連続させる。
この場合も、奇数個なら形式エラーにするとか、ややこしい
こういう変換は、CSV でも苦労してる。
" が偶数個なら良いけど、奇数個なら形式エラーにするとか
CSV は、様々なバグが考えられるから、TSV が良い
"a""b" → a""b
ただし、" " 内で、" を使う場合、"" と連続させる。
この場合も、奇数個なら形式エラーにするとか、ややこしい
924デフォルトの名無しさん
2018/09/19(水) 22:42:07.01ID:ScWhkKn/ >>923
別々の言語で3回ぐらいCSVのパーサーを書いたことありますよ
ダブルクォートがない場合、あって改行が入ってる場合など
Excelの仕様に完全対応したCSVライブラリがその言語になかったので
Perlの変態正規表現レベルにまでなれば可能かもしれないですが、
そういうネスト構造のあるものは単純な正規表現では解決不可能な問題です。
別々の言語で3回ぐらいCSVのパーサーを書いたことありますよ
ダブルクォートがない場合、あって改行が入ってる場合など
Excelの仕様に完全対応したCSVライブラリがその言語になかったので
Perlの変態正規表現レベルにまでなれば可能かもしれないですが、
そういうネスト構造のあるものは単純な正規表現では解決不可能な問題です。
925デフォルトの名無しさん
2018/09/19(水) 22:46:07.55ID:xLP4ypV2 タブ区切りでも
当然ダブルクォートがいる
頭悪いこといってるわ。。。
当然ダブルクォートがいる
頭悪いこといってるわ。。。
926デフォルトの名無しさん
2018/09/20(木) 09:41:46.66ID:cMPVhU9i ダブルクォートを特別扱いするかどうは仕様によるのでは?
927デフォルトの名無しさん
2018/09/20(木) 10:46:25.87ID:jnBpqPJK CSVの仕様といったらRFC4180やろ
928デフォルトの名無しさん
2018/09/20(木) 12:24:25.01ID:rEtRtbV+ >>927
それって区切り文字がタブの場合も書かれてるの?
それって区切り文字がタブの場合も書かれてるの?
929デフォルトの名無しさん
2018/09/20(木) 12:57:43.85ID:ILleL3Gt それくらい読めよw
RFCにはないけど、MIMEタイプ定義してる
https://www.iana.org/assignments/media-types/text/tab-separated-values
によると、
Note that fields that contain tabs are not allowable in this encoding.
となっているし、たぶんEOLも含んじゃだめそうなので、ダブルクオートいらねえよ。
RFCにはないけど、MIMEタイプ定義してる
https://www.iana.org/assignments/media-types/text/tab-separated-values
によると、
Note that fields that contain tabs are not allowable in this encoding.
となっているし、たぶんEOLも含んじゃだめそうなので、ダブルクオートいらねえよ。
930デフォルトの名無しさん
2018/09/20(木) 20:07:29.45ID:v1EqyHAs まあいくらRFCで規定してもディファクトスタンダードのExcel読めるフォーマットでないと意味ないしな w
931デフォルトの名無しさん
2018/09/20(木) 20:41:14.92ID:jnBpqPJK >>930
RFC4180とExcelのCSVはほとんど同じ
違いはデータの中に改行が含まれてる場合
Excelデータの中の改行はLF。(一行の最後はCRLF)
RFC4180はデータの中の改行はCRLF(一行の最後は同じくCRLF)
これだけしか違いはないよ
RFC4180とExcelのCSVはほとんど同じ
違いはデータの中に改行が含まれてる場合
Excelデータの中の改行はLF。(一行の最後はCRLF)
RFC4180はデータの中の改行はCRLF(一行の最後は同じくCRLF)
これだけしか違いはないよ
932デフォルトの名無しさん
2018/09/20(木) 20:45:03.75ID:jnBpqPJK CSVもTSVデータとしてキーボードから入力可能な文字を
区切り記号としているわけで、なんで
RS (0x1e Record Separator) とか
US (0x1f Unit Separator) とかいう
便利な文字を使わなかったのか?って思うな
区切り記号としているわけで、なんで
RS (0x1e Record Separator) とか
US (0x1f Unit Separator) とかいう
便利な文字を使わなかったのか?って思うな
933デフォルトの名無しさん
2018/09/20(木) 21:32:37.16ID:zLqp8E23 頭悪いこといってるわ
そんなコードなキーボードからどうやって入力すんの
viならできるが
こんなアホが、vi使えるとは考えらればいしな
そんなコードなキーボードからどうやって入力すんの
viならできるが
こんなアホが、vi使えるとは考えらればいしな
934デフォルトの名無しさん
2018/09/20(木) 21:37:28.28ID:IHzBiPD0 いつまでトリップはずしてんねんお前
935デフォルトの名無しさん
2018/09/20(木) 21:38:06.55ID:MjJalB6Y >>931
ほとんど同じとか言うプログラマーは信用できない
ほとんど同じとか言うプログラマーは信用できない
936デフォルトの名無しさん
2018/09/20(木) 21:38:41.53ID:t6JihYkI そもそもCSVは数値の表のためのデータ形式だからね
937デフォルトの名無しさん
2018/09/20(木) 21:39:06.57ID:Rg0LfXUv ほとんど病気
938デフォルトの名無しさん
2018/09/20(木) 21:42:44.26ID:zLqp8E23 カンマのキーとタブのキーと改行のキーは
どのキーボードについてる
低学歴知恵遅れにはコレが分からない
どのキーボードについてる
低学歴知恵遅れにはコレが分からない
939デフォルトの名無しさん
2018/09/20(木) 21:51:32.09ID:jnBpqPJK >>933
CSVエディタを使えばいいだけでは?
CSVエディタを使えばいいだけでは?
940デフォルトの名無しさん
2018/09/20(木) 21:51:35.97ID:5pjY9bpj CSVネタで久しぶりにアノヒトが嬉々として現れたなってことかな?w
941デフォルトの名無しさん
2018/09/20(木) 21:53:59.48ID:jnBpqPJK つーかCSVファイルをテキストエディタなんかで閲覧、編集する人なんていないでしょう?
可能か不可能かで言えば、可能だけどバイナリエディタでテキスト編集するような感じで
効率が悪いから、みんなエクセルつかってCSVファイルの読み書きするんだけど
可能か不可能かで言えば、可能だけどバイナリエディタでテキスト編集するような感じで
効率が悪いから、みんなエクセルつかってCSVファイルの読み書きするんだけど
942デフォルトの名無しさん
2018/09/20(木) 22:13:21.07ID:8Bepevhe 国によっては、カンマとピリオドの意味が逆転してるのあるけど
そんな国でも割り切って、セパレータはカンマにしてるんだろか
小数点がカンマ、どーしてそうなったか興味あるが
そんな国でも割り切って、セパレータはカンマにしてるんだろか
小数点がカンマ、どーしてそうなったか興味あるが
943デフォルトの名無しさん
2018/09/20(木) 22:16:57.13ID:zLqp8E23 引用符でくくられてたらどんな記号でも問題起きないからな
textを普通のエディタで開いてなんのコードが混入してるか分からないほうが
普通の感覚でイヤだから
低学歴知恵遅れなら細かいことは気にしないかもしれない
textを普通のエディタで開いてなんのコードが混入してるか分からないほうが
普通の感覚でイヤだから
低学歴知恵遅れなら細かいことは気にしないかもしれない
944デフォルトの名無しさん
2018/09/20(木) 22:18:05.52ID:MjJalB6Y >>941
編集はExcelだけど差分が容易に取れるからバージョン管理の為にcsvしてる
編集はExcelだけど差分が容易に取れるからバージョン管理の為にcsvしてる
945デフォルトの名無しさん
2018/09/20(木) 22:24:15.47ID:zLqp8E23 たとえばhttpもsmtpもコンテンツ以外は
crlfを除いて普通にぜんぶ0x20以上0x7e以下のテキストでやりとりしてるからな
低学歴知恵遅れなら、自分はそんなの意識しないUA使ってるからなんでもいいというワケ
crlfを除いて普通にぜんぶ0x20以上0x7e以下のテキストでやりとりしてるからな
低学歴知恵遅れなら、自分はそんなの意識しないUA使ってるからなんでもいいというワケ
946デフォルトの名無しさん
2018/09/20(木) 22:28:11.99ID:zLqp8E23 低学歴知恵遅れは
まずcsvがデータ交換用のフォーマットであることが分かってない
まずcsvがデータ交換用のフォーマットであることが分かってない
947デフォルトの名無しさん
2018/09/20(木) 22:33:55.28ID:8pZm26YJ >>925
半角また間違えたんか。何度目だよ
半角また間違えたんか。何度目だよ
948デフォルトの名無しさん
2018/09/20(木) 22:39:27.57ID:zLqp8E23 デファクトスタンダードのエクセルで
タブ区切りで保存すると
ふつうにこうやって保存されるからな
aho<HT>"boo""foo"<HT>baka
aho<HT>"boo""foo"<HT>baka
タブ区切りで保存すると
ふつうにこうやって保存されるからな
aho<HT>"boo""foo"<HT>baka
aho<HT>"boo""foo"<HT>baka
949デフォルトの名無しさん
2018/09/20(木) 23:21:58.71ID:fVTsYrUH >>948
そうだね そうだね
そうだね そうだね
950デフォルトの名無しさん
2018/09/21(金) 00:46:25.95ID:m8DL5ZJ4 >>931
TSV にして、データ中に、タブ・改行を使わないのが良さそう
>Excelデータの中の改行はLF。(一行の最後はCRLF)
Linux・Windows 間で、テキスト転送しても、改行コードが変わるから、ヤバイ
TSV にして、データ中に、タブ・改行を使わないのが良さそう
>Excelデータの中の改行はLF。(一行の最後はCRLF)
Linux・Windows 間で、テキスト転送しても、改行コードが変わるから、ヤバイ
951デフォルトの名無しさん
2018/09/21(金) 01:24:23.69ID:i9i22CNp Excelで直接開くと勝手にフォーマット変換されるのが気に入らないからテキストエディタで開いてからExcelにコピーとかやってるわ
952デフォルトの名無しさん
2018/09/21(金) 02:43:02.52ID:v8LFlyn0953デフォルトの名無しさん
2018/09/21(金) 02:43:36.28ID:v8LFlyn0954デフォルトの名無しさん
2018/09/21(金) 04:04:34.44ID:m7KC0L1Z >>951
拡張子を txt にしてから開いてウィザード動かすか、または 0 で始まる数字だけの文字列は ="0123" のようにして最初から作っておくとうまく行く。
拡張子を txt にしてから開いてウィザード動かすか、または 0 で始まる数字だけの文字列は ="0123" のようにして最初から作っておくとうまく行く。
955デフォルトの名無しさん
2018/09/21(金) 04:48:00.63ID:dtC8HZuo ちょっと荒れたのであまり話題にはしたくないものの
Unicodeの区切り文字を使うのはいい手段だと思う。
ただし思い切り独自規格なので既存の製品には対応できないけどね。もちろん
Unicodeの区切り文字を使うのはいい手段だと思う。
ただし思い切り独自規格なので既存の製品には対応できないけどね。もちろん
956デフォルトの名無しさん
2018/09/21(金) 05:30:02.46ID:v8LFlyn0 RS、USってのはUnicodeじゃなくてASCIIの制御文字だよ
957デフォルトの名無しさん
2018/09/21(金) 05:37:53.78ID:v8LFlyn0 もちろんUnicodeでも使えるけどね
958デフォルトの名無しさん
2018/09/21(金) 06:06:23.57ID:v8LFlyn0 一般人はCSVファイルをExcelで編集する
となると別にテキスト形式ベースじゃなくても良いわけだ
だとすると誰がCSVファイルを望んでいるのだろうか?
おそらくプログラマなんだろうね。
考えてみればテーブル型データに限っていれば
CSVはJSONよりも効率よくデータを記述できる
JSONだったらこんな感じだしね
[
{"field1": 1, "field2": 2, "field3": 3},
{"field1": 1, "field2": 2, "field3": 3},
]
これがCSVだとここまでコンパクトに纏められる
field1,field2,field3
1,2,3
1,2,3
一般人のことを考えないくていいという前提のものと、もっと良い形式が考えてみよう
それもシェルスクリプトで扱うのが容易な形式
一行ずつ読み取るのだから、一データの終わりはLFであるべきだろう
そしてデータの中には改行は含まず、カンマや制御コードはprintfコマンドで
簡単に解釈ができるよう8進数にエスケープを行う。どうかね?
エスケープの処理を除けば既存のツールでも扱えるだろう
ただ問題があるとすれば、printfで変数に代入する時forkを行う必要があるということだな
これだと時間がかかってしまう。かといって1文字ずつパースするのも時間がかかる
一行ずつ処理するのが可能で、1カラムずつ処理するのも可能で処理に時間がかからない方法はないだろうか
となると別にテキスト形式ベースじゃなくても良いわけだ
だとすると誰がCSVファイルを望んでいるのだろうか?
おそらくプログラマなんだろうね。
考えてみればテーブル型データに限っていれば
CSVはJSONよりも効率よくデータを記述できる
JSONだったらこんな感じだしね
[
{"field1": 1, "field2": 2, "field3": 3},
{"field1": 1, "field2": 2, "field3": 3},
]
これがCSVだとここまでコンパクトに纏められる
field1,field2,field3
1,2,3
1,2,3
一般人のことを考えないくていいという前提のものと、もっと良い形式が考えてみよう
それもシェルスクリプトで扱うのが容易な形式
一行ずつ読み取るのだから、一データの終わりはLFであるべきだろう
そしてデータの中には改行は含まず、カンマや制御コードはprintfコマンドで
簡単に解釈ができるよう8進数にエスケープを行う。どうかね?
エスケープの処理を除けば既存のツールでも扱えるだろう
ただ問題があるとすれば、printfで変数に代入する時forkを行う必要があるということだな
これだと時間がかかってしまう。かといって1文字ずつパースするのも時間がかかる
一行ずつ処理するのが可能で、1カラムずつ処理するのも可能で処理に時間がかからない方法はないだろうか
959950
2018/09/21(金) 07:09:48.97ID:m8DL5ZJ4 >>931
>Excelデータの中の改行はLF。(一行の最後はCRLF)
もし、このCSV を、Linux で扱う場合には、やばくない?
行区切りをCRLF に設定すれば、データ中に、LF があっても問題ないのかな?
>Excelデータの中の改行はLF。(一行の最後はCRLF)
もし、このCSV を、Linux で扱う場合には、やばくない?
行区切りをCRLF に設定すれば、データ中に、LF があっても問題ないのかな?
960デフォルトの名無しさん
2018/09/21(金) 08:12:42.97ID:LR4lwFnG961デフォルトの名無しさん
2018/09/21(金) 09:34:09.19ID:7bTZc31z >>958
fork?どういう処理を想定してるのか?
fork?どういう処理を想定してるのか?
962デフォルトの名無しさん
2018/09/21(金) 09:47:27.07ID:NXw3/PDJ みんなで輪になって踊る処理やろ
963デフォルトの名無しさん
2018/09/21(金) 09:56:30.62ID:7bTZc31z 【審議中】
∧,,∧ ∧,,∧
∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U ( ´・) (・` ) と ノ
u-u (l ) ( ノu-u
`u-u'. `u-u'
∧,,∧ ∧,,∧
∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U ( ´・) (・` ) と ノ
u-u (l ) ( ノu-u
`u-u'. `u-u'
964デフォルトの名無しさん
2018/09/21(金) 10:10:07.17ID:v8LFlyn0965デフォルトの名無しさん
2018/09/21(金) 10:49:46.73ID:v8LFlyn0 なんか次から次へと変なテクニックが編み出されていくw
966デフォルトの名無しさん
2018/09/21(金) 12:41:08.14ID:FeY49FdE 構内放送「直ちに中庭に集合してください」
従業員 (また誰かforkコマンド実行したな…)
従業員 (また誰かforkコマンド実行したな…)
967デフォルトの名無しさん
2018/09/21(金) 12:48:09.10ID:v8LFlyn0 >>960
> 別にLinuxでも行区切りがCRLFで行内の改行がLFのアプリは作れるでしょ
よく考えたら、シェルスクリプトでもそれなりに使いやすいかもしれない。
readで1行(LFがくるまで)読んで、読み込んだ最後がCRだったら行区切りあつかい
そうでなければ同一行としてあつかえば良いわけだし
> 別にLinuxでも行区切りがCRLFで行内の改行がLFのアプリは作れるでしょ
よく考えたら、シェルスクリプトでもそれなりに使いやすいかもしれない。
readで1行(LFがくるまで)読んで、読み込んだ最後がCRだったら行区切りあつかい
そうでなければ同一行としてあつかえば良いわけだし
968デフォルトの名無しさん
2018/09/21(金) 12:50:18.79ID:isbUNhMl 8進数エスケープってbashの機能で文字に直せなかったっけ?
969デフォルトの名無しさん
2018/09/21(金) 12:53:33.36ID:v8LFlyn0 printf以外でってこと?
970デフォルトの名無しさん
2018/09/21(金) 12:56:03.96ID:dtC8HZuo たとえばエスケープをするのは
US,RS,エスケープ文字自体
↑これでどうだろうか各種エスケープは
\#,\%,\\
これ。
ちなみにあたり前だが 端末の画面に「分かりやすく」表示するときは
\#→水平タブ,\%→改行(LF)
に置換するのがいいだろう。
US,RS,エスケープ文字自体
↑これでどうだろうか各種エスケープは
\#,\%,\\
これ。
ちなみにあたり前だが 端末の画面に「分かりやすく」表示するときは
\#→水平タブ,\%→改行(LF)
に置換するのがいいだろう。
971デフォルトの名無しさん
2018/09/21(金) 12:57:07.23ID:dtC8HZuo972デフォルトの名無しさん
2018/09/21(金) 13:28:31.46ID:v8LFlyn0 >>971
あー、dashで使えないから頭から抜け落ちてたわw
あー、dashで使えないから頭から抜け落ちてたわw
973デフォルトの名無しさん
2018/09/21(金) 18:20:35.40ID:dtC8HZuo974デフォルトの名無しさん
2018/09/21(金) 20:25:16.42ID:FeY49FdE 思いつきだけど、エスケープ文字自体を表すときは別の文字をエスケープして表現するほうが何かと都合がよくないか?
975デフォルトの名無しさん
2018/09/21(金) 21:30:40.16ID:dtC8HZuo976デフォルトの名無しさん
2018/09/21(金) 23:27:59.03ID:/eJt2TVD 例えば\rsを検索したいときに、\が\\でなければ\rsを検索するだけでよいけど、\が\\のときは見つけたあとに\の数をたどってそれが本当に\rsなのか調べないといけない、とか、
とある場所までシークしたときに、その場所の文字が何なのか、\を繰り返し数えないといけない、とか、
\?はすぐエラーとわかるとか。
とある場所までシークしたときに、その場所の文字が何なのか、\を繰り返し数えないといけない、とか、
\?はすぐエラーとわかるとか。
977デフォルトの名無しさん
2018/09/22(土) 00:50:25.74ID:9bcvhAfJ978デフォルトの名無しさん
2018/09/22(土) 01:10:24.01ID:Whfp6XnZ979デフォルトの名無しさん
2018/09/22(土) 03:37:20.07ID:LHC7cNdc >>978
よくわからん。そのルールだと
\rsを表すときは、\%rs
\usを表す時は、\%us
\%を表す時は、\%%
%を表す時は、%
ってことか?
%を検索した時、それが本当の%であるかは
一文字前が\であるかどうかを調べないといけなくて、
\rsを検索したい時は、\%rsで検索しないといけないってことか?
よくわからん。そのルールだと
\rsを表すときは、\%rs
\usを表す時は、\%us
\%を表す時は、\%%
%を表す時は、%
ってことか?
%を検索した時、それが本当の%であるかは
一文字前が\であるかどうかを調べないといけなくて、
\rsを検索したい時は、\%rsで検索しないといけないってことか?
980デフォルトの名無しさん
2018/09/22(土) 04:10:01.34ID:wyOkhzEz >>979
あってるよ。
\が\\の場合は、
\を検索するときは\\を見つけるだけじゃ不十分だけど、
\が\%の場合は、
%を検索するときは一文字前が\でない%を見つけるだけで十分だし、
\を検索するときも\%を見つけるだけで十分なんだ。
同様に、
\が\\の場合は、
\rsを検索するときは\\rsを見つけるだけじゃ不十分だけど、
\が\%の場合は、
\rsを検索するときは\%rsを見つけるだけで十分になる。
あってるよ。
\が\\の場合は、
\を検索するときは\\を見つけるだけじゃ不十分だけど、
\が\%の場合は、
%を検索するときは一文字前が\でない%を見つけるだけで十分だし、
\を検索するときも\%を見つけるだけで十分なんだ。
同様に、
\が\\の場合は、
\rsを検索するときは\\rsを見つけるだけじゃ不十分だけど、
\が\%の場合は、
\rsを検索するときは\%rsを見つけるだけで十分になる。
981デフォルトの名無しさん
2018/09/22(土) 06:13:58.91ID:dKJ+Zat7 どうせRS,USとかの非文字を使うんなら
エスケープ文字もESCでいいんじゃないだろうか。
エスケープ文字もESCでいいんじゃないだろうか。
982デフォルトの名無しさん
2018/09/22(土) 06:46:52.90ID:LHC7cNdc bashでさ、typesetで関数の中身を出力できるじゃん?
それをevalで評価したら同じ関数が出来上がるじゃん?
これってどれくらい信用できるんだろう?
作成した関数のコードそのままの形で出力されるなら
evalで評価して同じものができるだろうけど、
ぱっとみtypesetで出力するされたものをみると、
改行の位置とか変わって整形された状態になって
関数にはfunctionが頭に追加されてる。
元のコードをどれくらい書き換えるんだろうか?
これ以外になにか変わる事知ってたりする人いない?
それをevalで評価したら同じ関数が出来上がるじゃん?
これってどれくらい信用できるんだろう?
作成した関数のコードそのままの形で出力されるなら
evalで評価して同じものができるだろうけど、
ぱっとみtypesetで出力するされたものをみると、
改行の位置とか変わって整形された状態になって
関数にはfunctionが頭に追加されてる。
元のコードをどれくらい書き換えるんだろうか?
これ以外になにか変わる事知ってたりする人いない?
983デフォルトの名無しさん
2018/09/22(土) 11:47:57.86ID:rfhCLeCr 次スレたてるわ
984デフォルトの名無しさん
2018/09/22(土) 11:56:38.68ID:rfhCLeCr985デフォルトの名無しさん
2018/09/22(土) 12:03:50.02ID:rfhCLeCr 今まで人気ないスレだったから全く不要だったわけだが、今後は次スレ立てる安価指定しといたほうがいいか
次回の勢い次第でテンプレ編集で
次回の勢い次第でテンプレ編集で
986デフォルトの名無しさん
2018/09/22(土) 21:25:51.74ID:SEEeyc/q 埋めろって言っても反発されて埋まらん気もするし自分でやるわ
987デフォルトの名無しさん
2018/09/22(土) 21:26:12.71ID:SEEeyc/q 埋め
988デフォルトの名無しさん
2018/09/22(土) 21:26:36.85ID:SEEeyc/q 埋め
989デフォルトの名無しさん
2018/09/22(土) 21:26:59.15ID:SEEeyc/q 埋め
990デフォルトの名無しさん
2018/09/22(土) 21:27:22.40ID:SEEeyc/q 埋め
991デフォルトの名無しさん
2018/09/22(土) 21:27:46.75ID:SEEeyc/q 埋め
992デフォルトの名無しさん
2018/09/22(土) 21:27:56.78ID:wyOkhzEz 埋めない!
993デフォルトの名無しさん
2018/09/22(土) 21:27:56.90ID:PGp2AKzL 荒らすなよハゲ
994デフォルトの名無しさん
2018/09/22(土) 21:28:09.05ID:SEEeyc/q 埋め
995デフォルトの名無しさん
2018/09/22(土) 21:28:36.50ID:PGp2AKzL ID:SEEeyc/q ← アラシ
996デフォルトの名無しさん
2018/09/22(土) 21:28:55.88ID:SEEeyc/q 埋めも理解できない阿呆がいるのか…
997デフォルトの名無しさん
2018/09/22(土) 21:30:18.74ID:SEEeyc/q このスレも埋まらんうちにすでにCSV荒らしと半角荒らしが次スレ移動してるからな
前スレ使え言っても子供が言うこと聞くわけないから自分でやることにしただけよ
前スレ使え言っても子供が言うこと聞くわけないから自分でやることにしただけよ
998デフォルトの名無しさん
2018/09/22(土) 21:31:28.53ID:wyOkhzEz 梅屋敷!
999デフォルトの名無しさん
2018/09/22(土) 21:31:44.51ID:SEEeyc/q 埋め
1000デフォルトの名無しさん
2018/09/22(土) 21:32:32.82ID:SEEeyc/q 終わり。質問はなし
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 60日 10時間 31分 16秒
新しいスレッドを立ててください。
life time: 60日 10時間 31分 16秒
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を超えています。これ以上書き込みはできません。
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 【野球】野球の未来に危機感「マイナースポーツになる」 宮本慎也氏が開催…学童大会 [尺アジ★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- マヨネーズにわさび、山椒、卵の黄身、ラー油、オリーブオイルを入れてよく混ぜてください
- カメラのキタムラとかいう穴場
- 千晴とVIPの深夜の遊戯
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 巨大地震 [957955821]
- ひろゆき「愛があるから人は苦しまなきゃいけないんだね」
