シェルスクリプト総合 その35
レス数が1000を超えています。これ以上書き込みはできません。
シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
前スレ: シェルスクリプト総合 その34
https://mevius.5ch.net/test/read.cgi/tech/1597990675/ ・特記なき場合、POSIX準拠シェルが既定です(古きBourneシェルはほぼ絶滅しました)
POSIX準拠シェルは(d)ash, bash, zsh, (m)ksh, yash, posh, (p)boshです
参考 https://unix.stackexchange.com/questions/145522/
特定のシェルの専用機能に依存する場合は明示しましょう(特にPOSIX準拠シェルではないfish, (t)csh等)
・デフォルトシェルのシバンはBourneシェル時代からの伝統で#!/bin/shを使用します。ただしその実体はOSによって様々です
Debian系 … dash CentOS系 … bash Alpine … ash(busybox) Android … mksh
FreeBSD … ash Solaris,OpenBSD … ksh
macOS … bash(Single UNIX Specification準拠のために一部動作が異なる)
・ログインシェルは/bin/shでない場合があります。例 macOS … zsh
・シェルスクリプトは可搬性を持たせるために可能な限りPOSIXに準拠しましょう
仕様 http://pubs.opengroup.org/onlinepubs/9699919799/
参考 https://en.wikipedia.org/wiki/POSIX
・bash依存はなるべく避けましょう。自覚なきbashism。シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?
#!/bin/shを使うならシェル依存は厳禁です。bash依存するなら#!/bin/bashです
・BourneシェルはPOSIX標準化前に主にUNIXで使われていたシェルで多くの亜種が存在します
Bourneシェル≒Version 7 UNIXのshに一番近いのはOpenSolaris由来のHeirloom Bourne Shell、次点でSchily Bourne Shellのoboshです
Heirloom Bourne Shell: sh http://heirloom.sourceforge.net/sh.html
Schily Bourne Shell: obosh http://schilytools.sourceforge.net/bosh.html
歴史的資料 https://www.in-ulm.de/~mascheck/
・csh/tcshでのシェルスクリプトは*まったく推奨しません*
参考 http://www.speech-lab.org/~hiroki/csh-whynot.euc
・Linux/UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。Manページや各種リンクを見ましょう
aproposやman -kでそれらしい単語による簡単な検索もできます
・ワイルドカード・パターンは正規表現ではありません。正規表現の話題はスレ違い(正規表現スレへ)
・シェル芸はシェルスクリプトとは異なります
・シェルスクリプトのことをシェルってゆうな しかし>>3の関連スレが,1スレ消費した後にまだリンク張り替えなくて良いあたり,
全然書き込まれていないんだな。
人気がないのかあるいは,安定していて一斉に文句が書き込まれるような問題も無いのか……。 fishとかxosh?だとかPOSIXじゃないから
うんいいね。でおしまい
あんなのでスクリプト書くやつはいない 別にfishが使い続けられてそれが便利ならそのスクリプトがどういう文法だろうがどうでもよくないか? >>8
シェルはインタラクティブだけじゃなくてシェルスクリプトとしても使われてる
例えば/bin以下でこんなのがシェルスクリプトで実装されてる
/bin/bzdiff: POSIX shell script, ASCII text executable
/bin/bzexe: POSIX shell script, ASCII text executable
/bin/bzgrep: POSIX shell script, ASCII text executable
/bin/bzmore: POSIX shell script, ASCII text executable
/bin/egrep: POSIX shell script, ASCII text executable
/bin/fgrep: POSIX shell script, ASCII text executable
/bin/gunzip: POSIX shell script, ASCII text executable
/bin/gzexe: POSIX shell script, ASCII text executable
/bin/which: POSIX shell script, ASCII text executable
/bin/zcat: POSIX shell script, ASCII text executable
/bin/zdiff: POSIX shell script, ASCII text executable
/bin/zgrep: POSIX shell script, ASCII text executable
/bin/zless: POSIX shell script, ASCII text executable
/bin/zmore: POSIX shell script, ASCII text executable
なのでPOSIXシェルがシステムから取り除かれることはない
そしてfishはシステムにとって使えず必須ではないのでインストールされない
という状況がこれからも続く
悪くはないが代替として使えない だから、別にfishでスクリプトを書いてもいいけど
統一された企画も何もないんだから、
少なくともこのスレで話す話題じゃねーよなって言う話
それこそ、Pythonも、
逐次的に入力を解釈して利用者に入力を促進する状態がある
と言う点ではシェルの一緒だけど、
じゃあここで話すの話題かっていう。 最新のfishは使うけど音声入力は使いません!
wwww fishのスクリプトがどういう文法だろうが
使わないのでどうでもいいという話
>>5
> fishはどうなの?
どうでもいい。興味ない。 シカトすればすぐに終わるだろうに、なぜか自ら話を伸ばすw いつから統一された規格とやらが要件になったの?
いいけどそれなら総合の看板下ろしてPOSIX専用掲げてよ紛らわしい shに似ても似つかないスクリプトはスレ違いなのはたしか。
POSIXはある程度どうでもよいとして。
ただスレ違いを前提として、別のシェルをすこしくらい話題にするのはいいのでは。
そんなに活発なスレでもないし。 昔話だが、まだいろんなUNIXワークステーションが使われていた頃、あるOS用に
書いたスクリプトが別のOSで微妙に動かなかったりして、面倒だった。
そうするとやっぱPOSIXかあと思ったりした。
今なんかどこでもたいていbashが入ってるしな。てゆうかたいがいLinuxだし。
そしてCPUがたいがいインテルに... まARMのクロスコンパイルはするけど。 あれ、ディレクトリ構造というのもPOSIXで規定されてるんだっけ?
違うOSで動かすときはそういうのも問題になったな。
そうやってGNUのconfigureなんかも複雑化していったという。 手元に有用なfishスクリプトがあってそれを使いたいならfishをインストールすればいいだけじゃね?
なぜデフォルトインストールされたシェルだけの縛りゲーしてるの パーミッションだけの話なら、$HOMEのどこかにいれとけ。
/usr/bin以下でないとダメなわけでもないやろ。 >>27
だからインストールできない
linux-vdso.so.1 (0x00007fffeddc6000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f211d340000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f211d110000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f211cef0000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f211cce0000)
libpcre2-32.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-32.so.0 (0x00007f211ca60000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f211c6d0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f211c2c0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f211da00000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f211bf20000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f211bd00000) >>19
「POSIXにこだわらないシェルスクリプト総合スレ」を立てたほうが健全かもな
しばらくスレ見てればわかるけど要は俺がマウント取れない話題はするなってことなんだよね
全くもってくだらない 感想は同意。マウント取るためのネタとしてするなとも言っているのもありそうだな テンプレに、明示してたらほかのシェルでも可、とあるんだからここでええやろ。
POSIXバカは無視で。 awkやsedの話でもなんかすぐ「そんな複雑なことやるな!」って否定しだすしな。
awk,sedは独立したプログラム言語とはいえシェルスクリプトの一部と言えるんだから,
fishと同じでここで扱っても良い話題。 そんな事するなとは言ってないな
シェルスクリプトではないというだけの話だ
独立したプログラム言語でシェルスクリプトではない >>28
ライブラリもホームに置けば。一工夫いると思うけど。 >>33
たしかにそうではあるが、ふつうのsedくらいまではこのスレの射程やろ。
「総合」だし。
だが、awkは外れてると思う。w POSIX信者ウゼー
FishでもAWKでもシェルスクリプト一と言えるだろうが。
そりゃ突き詰めて見れば,「PowerShellを扱わないんであればFishシェルも扱わない」
「Pythonを扱わないんであればAWKも扱わない」という理屈は分からなくもないけど,
どうしてそう強情に0か1かでしか物事を捉えられんのかね……。 awkがシェルスクリプトじゃないというのはPOSIXとは関係ない
awkを呼び出すコードは当然シェルスクリプトだが
awkはシェルではないので、awkの文法に関することは
シェルスクリプトではないというだけのことだ。
そしてfishはシェルなのだから、当然シェルスクリプトだ
ただしPOSIXではないシェルスクリプトであるが 例えばシェルスクリプトで$_ってどういう意味ですか?
って聞かれても困るだろ?このコードで
cat test.txt | ruby -e 'while gets; print $_; end' >>39
「cat」ってなぜ猫なんですか?
とか聞かれても困るけどな。w そういうことだな。それはawkの文法だよ。
だからawkスレで聞いてねで終わる >>38
じゃあPowerShellやcmdの話題も扱っていい筈よね。
ここUnix板じゃねーし,
仮にUnixシェル専用だという暗黙の了解があるにしても
PowerShellはLinuxの上で動くし。
……とまあ,際限なくチャチャを入れることができる
ガバガバ理論なんで,別にAWK程度なら
このスレで扱っても構わないでしょう。
柔軟に生きよう。 >>43
専用スレがあるのだからそっちに行ったほうがいい ご覧の通り何を言っても無駄
無駄に突っかかってくるやつ相手にしてもSAN値下がるだけなので
「POSIXにこだわらないシェルスクリプト総合スレ」を立てたほうが建設的だよ
POSIXに強くこだわりたいときにこのスレ使えばいい POSIXシェルスクリプト専用だろ?
何が総合だ。看板に偽りあり! >>43
Awkを入れたらPerlも入るぞ?
Perlが入ったらPythonも入るぞ?
Pythonが入ったらRubyも入るぞ?
と際限がなくなりそうだけどなあ。 >>50
POSIXそのものなのか?準拠は?拡張は?と、それはそれでややこしい。w
こまけえことは気にすんな!でええがな。
POSIXバカは無視で。 >>47
これ人が集まらないようわざと分かりにくいタイトルにしてるだろ
どんだけ陰険なん >>51
すぐそうやって極論に持って行く。
「AWK程度なら」の意味分かってんの? >>54
極論じゃないやろ。
むしろおまえこそ自分の言葉の意味がわかってんのかと。 awkの話もシェルスクリプトといことでいいですよね?
awkで作られた3Dシューティングゲーム「awkaster」が凄い
https://www.softantenna.com/wp/software/awkaster/
このコードを説明してください 別にawk程度ならこのスレで扱っても構わないでしょう?w >>57
>このコードを説明してください
いくら払うの?
まずはそこからだ >>53
確かにこれはひどい悪意を感じるので
立て直したほうがよい >>39
PowerShell でもそうだけど、$_ は、前段のパイプから渡ってくるもの。
1行ずつ渡ってくるのを、そのまま表示している
1-liner では、よく使う だいたい,「分かりやすいタイトル」にしたところで人が集まるような話題じゃねーしなw
Fishだけ知っててBash知らない,みたいな人間なんて超希少だろうし,
大半の人間はFishの前にBashを知っていて,
シェルスクリプトとして書く場合はBashを使う。
だから「Fishでこんな処理を書きたいんだけど」という疑問の前に
Bashを使うんだわ,残念ながら。
まあBashを使うことが良いこと≠ゥ,というのはまた別の話な。
勘違いしてつっかかってくる奴がいそうなんで,念の為言っておくが。 PowerShellやコマンドプロンプトはシェルスクリプトがなかった
Windowsの世界で使わざるを得ないものだから、それでスクリプト書くことはあるけど
fishとか書かないよね
書けるやつはbashかPOSIX準拠で書くし
書けないやつはPythonとかの言語を使う
bash書くのだるいからfishでとかやるやつがいない
fishとかプロンプトからの入力に使うだけでしょ
使ってる人もデフォルトの補完便利だねぐらいにしか思ってない fishのスクリプトの具体的なことは未だに全く書かれていない、どう書いたらいいとかさえも
最初に言い出したやつさえ使ってないだろうw いつまで引っ張ってるんだか AWS のCodeDeploy には、sudo yum install ruby
と書いてあるから、Ruby製
CloudFormation では、Ruby製のChef, Cookpad製のItamae, Kumogata2 を使える
バックエンドの環境構築運用では、
複雑なものは、シェルスクリプトよりも、Rubyで書く >>68
もうこれに尽きるな。
Fishシェルのことを扱う別のスレを建てるんじゃなくて,
POSIXシェルのシェルとしての機能(for文, set命令とか)のみを
扱う専門スレを建てればいい。
「総合」とある以上,ここでは前者を含んだ話題を扱うべきだ。 dateコマンドで「今日の10時」などではなく「次に来る10時」を求める方法をご存知の方教えてください! date?おいやめろ。またPOSIXの話になるじゃねーか! 文字列での表示は出来るけど、
プログラミング的な時間オブジェクトの比較とかは、出来ないかも
Ruby などのプログラミング言語なら、時間オブジェクトで比較できる
date --iso-8601=hours --date='15:00 today'
2020-12-01T15+09:00
date --iso-8601=hours --date='15:00 next day'
2020-12-02T15+09:00 現在・今日・明日の文字列で、文字列として比較できるかも知れない
date --iso-8601=seconds
2020-12-01T12:44:54+09:00
date --iso-8601=seconds --date='15:00 today'
2020-12-01T15:00:00+09:00
date --iso-8601=seconds --date='15:00 next day'
2020-12-02T15:00:00+09:00 >>74
今日が現在よりも前なら、明日
それ以外は、今日 bash 限定で。
zsh では、[ $today \< $now ] が動かないとか、どこかのサイトに書いてあったので
#!/bin/bash
# 現在・今日・明日の文字列
now=`date --iso-8601=seconds`
today=`date --iso-8601=seconds --date='14:00 today'`
tomorrow=`date --iso-8601=seconds --date='14:00 tomorrow'`
# echo $now # 2020-12-01T14:41:29+09:00
# echo $today # 2020-12-01T14:00:00+09:00
# echo $tomorrow # 2020-12-02T14:00:00+09:00
# 今日が現在よりも前なら、明日。
# それ以外は、今日
if [ $today \< $now ]; then
echo '明日'
echo $tomorrow # 2020-12-02T14:00:00+09:00
else
echo '今日'
echo $today
fi >>71
YYYY MM DD HH フォーマットを返すようにしてdateを呼び出す
if [ HH < 10 ]; then
echo YYYY MM DD 10 00 00
else
echo YYYY MM DD+1 10 00 00
fi
あとよろ
DDが月末だったら問題あるから気をつけな >>77
10時を過ぎても11時までなら今日の10時が返されるんじゃ? 思ったんだがシェルスクリプトって日付の計算ができないんだな
そういうライブラリってないのか? シェルスクリプトで数字の計算は普通にできるやろ?
rubyとかpythonとか便利ライブラリ盛りだくさんな温室で
育ってきたやつは知らんだろうけど
C言語だって日付の計算はできないんだぞ
ライブラリを作るか使うかしてやっと実現できること
ライブラリを誰かが用意してくれなきゃプログラミングができないとか
技術力もほんと落ちたもんだわw >>71
tz=JST-9; [ $(date +%H) -ge 10 ] && tz=JST-23;echo $(TZ=$tz date +%D) 10:00 >>83
tz=JST-9; [ $(date +%H) -ge 10 ] && tz=JST-33;echo $(TZ=$tz date +%D) 10:00
だな。ぼーっとしてた >>84
これでいいわな。核心部分は%Hと10の比較だけ。 >>82
> シェルスクリプトで数字の計算は普通にできるやろ?
外部コマンド呼ばないとできないよね。あ$(())とかのこと? でも伝統的には...
> ライブラリを誰かが用意してくれなきゃプログラミングができないとか
日付の処理とかいろいろ落とし穴が多いから。
今はプログラムも複雑になったし... 料理に例えると、大昔は火を起こすところから
できないと駄目だったろうが今はそんなこと要求されないw GNUやBSDのdateの拡張部分、つうてもある値(文字列な日付も含む)を日付に変換っていう部分を使えば普通に日付の計算は(簡単に)できるだろう
日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通。落とし穴を避けるためにも(他の言語でも)
年月日で計算する必要のあるのは、落とし穴なんて関係ない単純な場合なだけだろう。何年何ヶ月 とか ある程度適当でいい場合とか >>86
> 外部コマンド呼ばないとできないよね。あ$(())とかのこと? でも伝統的には...
伝統?いつまでも古代のBourne shellなんか使ってるなよ
今は令和の時代だぞ?1988年(ksh88)はもう30年以上前だ。
そんな昔のシェルをお前は今も使ってるのか?
いい加減POSIX準拠シェルに乗り換えろ >>71です
みなさんありがとうございます助かりました! >>87
> 日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通。
date +%s はPOSIX準拠ではない 別にPOSIXに従ってなくても,元の質問が解決すればそれでいいと思うんだが。
ちなみにPOSIXに準拠した場合でもUNIX時刻は算出できる。 しかもThe Open Groupが直々にコードを書いてくれてるっていうw POSIXバカはスルーで!
興味がある人のみ反応すれば。 POSIXバカと呼び名通りにすぐにバカっぷりを体現してくれる呼び名に偽りはないなw >>76
を改良した。
2020-12-02T14:00:00 のような文字列で比較している
#!/bin/bash
time='14:00' # 求める時間
# 現在・今日・明日の文字列。年月日-時分秒。2020-12-02T14:00:00
now=`date +%Y-%m-%dT%H:%M:%S`
today=`date +%Y-%m-%dT%H:%M:%S --date="$time today"`
tomorrow=`date +%Y-%m-%dT%H:%M:%S --date="$time tomorrow"`
# 今日が現在よりも前なら、明日。
# それ以外は、今日
if [ $today \< $now ]; then
echo '明日'
echo $tomorrow #
else
echo '今日'
echo $today
fi now=$(date +%Y%m%d %H%M%S)
date=${now# *
20201202 181521
4294967296 >>96
なんでそこしか見てないの?
UNIX時刻の定義に書いてある。
は〜,これだからクレクレは困るんだよなぁ……
ちっとは他のページも調べればどうだ。 >>105
POSIXバカはスルーするんじゃなかったんか?
それともスルーできないくらい有用な書き込みだったかw >>106
POSIXバカである行為と人物は異なる。 epoch time、unix timeどちらでも調べたがやっぱりないな >>110
POSIXに手抜きするなって言っておけ
2020/12/03が2020/01/01から何日目であるかの計算式も書けとw >>100
を改良した。
date +%Y-%m-%dT%H:%M:%S を、3回使うので、変数に代入してから使う
#!/bin/bash
time='12:00' # 求める時間
# 現在・今日・明日の文字列。年月日-時分秒。2020-12-02T14:00:00
com='date +%Y-%m-%dT%H:%M:%S'
now=`$com`
today=`$com --date="$time today"`
tomorrow=`$com --date="$time tomorrow"`
# 今日が現在よりも前なら、明日。
# それ以外は、今日
if [ $today \< $now ]; then
echo '明日'
echo $tomorrow
else
echo '今日'
echo $today
fi >>113
dateの呼び出しなら理屈上1回でやれるだろ?
現在の日時から、今日の10時、明日の10時を計算するだけやで? POSIXといえば、>>113はデフォのdateがGNUのdateな環境用だね。
いろいろ機能拡張されているみたいで。 あいろいろと言ってもこの場合は--dateオプションだけど >>112
dateコマンドで取得できるだろ。もちろんC関数でもな >>117
現在日時の場合はね
俺が言ってるのは任意の日付を扱えないという話 >>114
現在の取得と明日を求めるのをお任せで2回は必要じゃね
明日を計算するのをうだうだ書くなら別だが >>118
なるほど
あれは見てわかるようにCでのことだからな、Open Groupに言っても鼻で笑われるだけかとw >>119
現在の日時から今日の10時は計算できるし
明日の10時も計算できる
今日の10時に86400秒足せば、明日の10時だ >>121
w
86400秒足したのを何月何日にするのにどうするつもりなの?
簡単に言えば、月末の次の日って話だぞ > 86400秒足したのを何月何日にするのにどうするつもりなの?
え?POSIXにその計算式があるんじゃなかったの?w >>123
それ、マジで言ってるの?マジなら何もわかってないってことになるぞw >>125
>>123のレスに中身があるとでも?w
そういうレスするのはいつものやつかwなるほど通りでバカなこと言うわけだ 中身がないレスをお前が先にしたわけで、
それに対するレスにも中身が無いのは当然じゃん
早くPOSIXにその計算式はないって言いなよw あとはっきり言っておくな
POSIXにあるのは年月日時分秒からの変換ではなく
年日時分秒からの変換。月がない。 >>127
イミフ
>>119の通りだと今でも思うよ
それに対してなんか不思議なこと言ってるから、>>122とちゃんとした疑問なんだけどなあ
それが>>123なのか...マジで...
ないも何もそんな計算があるなんて誰が言ったんだか?どれのこと?w >>128
むちゃくちゃww
はっきり言っておくとかwwマジキチかよと思わせるぞ もう話の流れを忘れたのか?
↓無理やろ
> 日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通。 >>131
お前は根本的に何もわかってないんだな
だからそんな勝手な話の流れと思ってるのか。そこに書かれてることも全くわかってないんだな
そこに計算なんて書いてないだろうに。お前が全く話の流れをわかってないのが明らかだ
>>119なんて言ってたくせにw またごまかしなんだろうが、無理すぎw >>132
>計算なんて書いてない
なんか全く不可解なことを言い出してる>>123の計算ね > 日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通
が真なら
86400秒足せばOKだろw >>134
何を言っているのか...キチガイなのかとこわ
お前にはなんか知らんがOKなんだろうが、お前が注文つけた先では全くOKじゃないだろう、年月日を出したいらしいからな
残念だったな だからPOSIXじゃ明日の10時の年月日が出せないと言ってるんだが >>136
>>119って始めたくせによく言うよw
何とか誤魔化そうとしてるみたいだけど、お前は本当にゲスいなw >>132,137
>>119は俺じゃねえかw
>>114の間違い だからできるだろ
日付の計算はシリアルな値でやるんだからw もう全くわかってませんという自己紹介はいらんぞw
ちなみに、今日(今)の明日(というかどこまでかはわからんが、何時間/何日前後) の年月日はPOSIXでもトリッキーにできそうなのは上にあるだろに >>113
変数に代入するのはformat指定だけにして
$(date “$format”)とか$(date +”$format”)にしたほうが
何をやってるかわかりやすくていい気がする
あと>>84とかと同じで0時またぎの微妙なタイミングで明後日になる可能性がある
それを把握した上で使う分には問題ないだろうけど >>141
> あと>>84とかと同じで0時またぎの微妙なタイミングで明後日になる可能性がある
なるほど。日付の取得は1回にしてあとは計算したほうが良さそうだな。 >>121
いや,date(1)の呼び出しは一回で済むでしょう。
POSIXに拘ろうが拘らまいが,「ある瞬間の24時間後」
を知りたければUNIX時刻と普通の時刻を変換すればいい。
ちなみに「UNIX時刻はPOSIXのdateコマンドでは出せない/変換できない!」
って思ってる人も居そうだが,普通にできる。 Dateとして一回Calendarとして一回、二回は必要だろう
元のはCalendarとして二回使ってる感じかな
何言っているかわからんだろうけど >>143
> を知りたければUNIX時刻と普通の時刻を変換すればいい。
どうやって? >>143
> ちなみに「UNIX時刻はPOSIXのdateコマンドでは出せない/変換できない!」
できるのは、dateコマンドからUNIX時間への変換だけですよね? >>144
POSIXにはCalender(笑)の機能なんてないですもんねw
自分が使える言語に固執してないで、dateコマンド用語で話をするように 論より証拠というやつで、実際にスクリプトを書いてみたらいいんだ
で書けたらそれを貼る、書けなかったらごめんなさいする >>147
POSIXもそうだが、概念としてのDate(Time)とCalendarは当然のようにあるってことだよ
dateコマンドは機能は限定されているがその2つの概念を内包してる。他の言語ではクラスとして明確にわかりやすいように(?)存在するってだけだな
POSIXは「システムクロックを」に固執/それ対象なのが痛くてあまり使えなさそうなだけで 普通の暮らしで使ってる日付なのに
普通の暮らしで接してるからこんな話題でもあまりよく考えてないから計算でできると思い込んで言っちゃうんだろうな。今までそういうのも書いたこともなく
そんなのが機会があって自分で書いたら落とし穴に落ちたのを書きそう
さすがに今時はそう見事に簡単に落とし穴に落ちたのを書かないとは思うが、書きそうでもある >>149
概念としてのカレンダーって何?
お前カレンダー持ってないの?
あれがカレンダー ふつうJavaのプログラミングの経験ぐらいないか? ないのかw
なんか話がこじれてるが、dateコマンドの呼び出しを1回で済ませると言った人、
そーす(スクリプト)ぷりーず。 >>152
すでに指摘済み
> 自分が使える言語に固執してないで、dateコマンド用語で話をするように
この文章は、Java”だけ"の常識を、このスレで語るなと言ってる Java”だけ"だと思ってるんだからなあ。知識が無さすぎなのが顕著だな
こいついつものやつか?
自分の知らないこと話すなマウント取れないからってことだろうとしか思えないw >>113
time='12:00' # 求める時間
# 現在・今日・明日の文字列。年月日-時分秒。2020-12-02T14:00:00
com='date +%Y-%m-%dT%H:%M:%S'
now=`$com`
today=`$com --date="$time today"`
tomorrow=`$com --date="$time tomorrow"`
これは、日をまたいだ場合に、バグる。
例えば、nowが4日で、todayが5日で、tomorrowが6日とか
複数回コマンドを呼ぶと、その間も時間が進むから、バグる。
1回だけコマンドを呼ぶ方が安全
ただし、処理している間も時間が進むから、
9:59:59 秒に、処理を開始して、10:00:00 と解答を得たとしても、
処理が終わった時には、その時刻を過ぎているかも知れない
それと、夏時間・うるう秒などにも、注意 echo $(( $(TZ=GMT0 date \
+"((%Y-1600)*365+(%Y-1600)/4-(%Y-1600)/100+(%Y-1600)/400+1%j-1000-135140)\
*86400+(1%H-100)*3600+(1%M-100)*60+(1%S-100)") ))
↑これで現在のUnix時刻が求まる。
これに「明日まで」の秒数を足して
https://github.com/ShellShoccar-jpn/misc-tools/blob/master/utconv
↑これで元の時刻表記に変換し直せばいい。 それって date +%s じゃ駄目なんだっけ。
time=12:00:00 として、
now=$(date +%s) で現在の時刻をUNIX時刻で求めたら
$(date -d @$now +%Y-%m-%dT$time) が今日の time の日付、よって
$(date +%s -d $(date -d @$now +%Y-%m-%dT$time)) がそのUNIX時刻。
これに86400秒を足して明日の時刻にするとして
$(($(date +%s -d $(date -d @$now +%Y-%m-%dT$time)) + 86400)) が明日の time の
UNIX時刻。
でこれらを更にdateに渡してそれぞれの時刻列を得る。dateメチャクチャ呼びまくりw >>154
Javaだけでも、Javaと○○だけ でもどっちでもいいよw
どちらにしろ特定の言語専用の用語で
dateコマンドと関係ないんだから
常識だろ
>>156
dateを2回呼ばないです。代わりにawkを呼ぶので遅いです。じゃ
あまり意味ないな。コードもクソ長いし。 >>157
> それって date +%s じゃ駄目なんだっけ。
+%sはPOSIX準拠じゃない >>84
このTZずらし戦法って1時間以下のずらしでも使えるのかな?
とりあえずインドとの時差は3時間30分だから30分単位とかはできる? なぜかチョンは日本と同じにしてる
日本のほうが早いなんて許せないらしい
誇り高い民族だよね。あっぱれ! >>158
概念としての話だってのに、概念がわかりませんだからなあ
POSIXのそこらのC関数も当てはまる話だってのに、概念がわからないんだからなあ
概念の例としてわかりやすい形になってるのが、オブジェクトな言語でのフレームワークでって話なんだが、理解する気もなく「言うな」なんだからなあ
お前は入ってこなくていいよ、もう理解する気もなく文句言うだけなんだから Javaや特定言語専用の概念を
このスレでするなって話だろ >>160
$ TZ=GMT-9 date;TZ=GMT-8:59 date
Fri Dec 4 18:39:52 GMT 2020
Fri Dec 4 18:38:52 GMT 2020
使えそうではあるね。Linux/BSD共に
だがしかし、Linuxでは最大は24時間(24時間59分?)のよう。実際の時差(日本では9時間が入るからそれがプラマイ。使えねぇ。まあLinuxならdateはGNU dateに決まってる(?)だろうから無理してPOSIXに拘ることもないか
ちなみに、BSDは168(何やこの中途半端なと思ったら7日1週間だった) でもまあどちらにしろdateを2回呼んでるからタイミング次第ではバグになるよね > まあLinuxならdateはGNU dateに決まってる(?)だろうから
Alpine LinuxだとBusyBox >>165
>POSIXのそこらのC関数も当てはまる話だってのに、〜
>概念の例としてわかりやすい形になってるのが、〜
って言ってるのに。読めなさすぎだろう。方々で似たような実装なのは、特定言語特有の話ではなくコンピュータサイエンスwとしてのだからだろうにな
シェルスクリプトしか知りません興味ありませんすぎだろう >>168
そんなのあるのね。ちょいググったところではGNUの機能削除版?
でも、-d があるらしいから絶対的に(?)必要な機能はあるんじゃないのかな? >>170,169
機能削除してるくせにオレオレもなのか...?? GNUソースベースというより新規なのかな?
BusyBox環境を試す気は全くないので何とくなくこんなんなんだろうという仮定で、
SEC2DATE="$(date --help 2>&1 | awk '
/-f fmt/{ print "date -j -f %s "; m=1; exit 0; } # BSD
/-D FMT/{ print "date -D %s -d "; m=1; exit 0; } # BusyBox case1
/-D FMT/{ print "date -d 1970.01.01-00:00:"; m=1; exit 0; } # BusyBox case2
END{ if(!m) print "date -d @"; }')" # default to GNU
な感じで吸収してみた(判断材料とかはお好きに。OSの種類で決め打ちとかな)
case1 なら BSDに合わせろw いや、どれもどこかに合わせろw
いや、その役割はPOSIXか。必要最低限のこれらだけを入れてくれればCalendar(しつこいw)として「使える」のに(システムタイムにこだわるならBSDのが素直かなw)
secs=$(date +%s)
[ $($SEC2DATE$secs +%H) -ge 10 ] && secs=$((secs + 86400))
$SEC2DATE$secs +'%Y-%m-%d 10:00:00'
実際はこれだけをしたいだけなのにな。どれかに統一されてたらもっと素直な表記で書けるのに
date回数に煩いんだったら
read secs hh < <(date +'%s %H')
[ $hh -ge 10 ] && secs=$((secs + 86400))
$SEC2DATE$secs +'%Y-%m-%d 10:00:00'
とかにでもとかとか。ある意味もっと素直かなw > case1 なら BSDに合わせろw いや、どれもどこかに合わせろw
まあ、それだな。
macOSもあるのでLinuxだけに準拠すればいいという時代じゃない
あとawkとかやめてくれまじで >>172
> awkとかやめてくれまじで
別に同じようなことできる他のを使えばいいだろう。そっちが素直に書けると思うなら、そういうように読み替えて
失礼ながら、マジでは以後も無視します。別に拘ってるわけでもないしね(使うことに/使わないことにどっちも) > 別に同じようなことできる他の
ってなに?まさかPerlとは言わないよね?w >>174
は??w
使うなと言ってるあなたのお好きなのにだよ。なんで俺に聞くw >>158
dateを二回呼ばない理由って,
もしかして動作速度のせいって思ってる? >>171
同じクソ長いコードなら,
POSIX準拠のクソ長いコードの方がいくらかマシだなw >>177
両方だろ。タイミング次第ではバグる。遅い。
> POSIX準拠のクソ長いコードの方がいくらかマシだなw
POSIX準拠のクソ長いコードってこのスレででてたっけ? >>182
あいつを模写ってるのだろうが、馬鹿みたいだからやめなさいw
あいつと同じ馬鹿みたいな無理筋なマウント取りたいだけに見えるからw >>184
お前はあいつなのか?
俺は>>180のレスに反してはないぞ、よくわからん追いきれてない部分があるけどな
だからやめなさいと言ってるだろw 反対しないならレスしないでよ
POSIX準拠のクソ長いコードがでるのをまってるの えーっw
そういうこというとなおさらあいつみたいな自己中自分だけの世界で生きてるやつに...w
まあ、なんらかの恥ずかしさからそう言っちゃったと受け取っておくよw
大人しく俺も待つよww 自分もPOSIX準拠の長いコード、とやらを見てみたい 「POSIX準拠のクソ長いコード」って
>>158
この人が言ってた「コードもクソ長いし」を念頭に置いてるんじゃ 自分はポジックス信者ではないけど,
「BSDの場合はこうする,GNUの場合はこうする」っていうふうに
ダラダラ場合分けして長くなったコードより,
「POSIXに準拠する」ことを目的として長大になったコードの方が
どちらかというと良いと思うな。
GNU環境用とBSD環境用にコードを分けるのが一番賢いやりかただと思っているが。 ダラダラ場合分けして長くなったコードってどこにあるの?
一つの変数に場合によって一つの値を設定してるのが一箇所あるだけのコードのこと? > 「POSIXに準拠する」ことを目的として長大になったコードの方
これもどれのことかわからん まさかPOSIX準拠のクソ長いコードって>>156のコードのことなのか?
あれはシェルスクリプトの部分はごく僅かでほぼ9割がawkスクリプト
しかもオプション解析とか無駄なことをやってるからクソ長くなってるだけ
いやアルゴリズムもなんかムダに長い気がするな
あれみていってるなら、POSIX準拠とはクソ長いは全く関係ない >>193
それは違う。(別に>>156を積極的に養護するつもりもないがw)
POSIXののdateには秒->日付、日付->秒、どちらの機能もないから自作するしかない。
awkを呼ぶにしてもPOSIXのだと時刻系関数がないから自作。
POSIXerはつらいということw POSIXerじゃなくてもLinuxとBSD(macOS)などに
対応しようと思ったら辛いけどな dateコマンド使うにしてもcoreutilsダウンロードして使うだけだから何も辛くない
自分はPOSIX云々より便利に使えるほうがいいから
cronパーサーみたいの使って`next_time ‘0 0 10 * * Fri’`みたいなコマンド作る まあ「辛くない」って言える内は幸せよ……
経験を積んでくると,POSIXに準拠しようがしていまいが,
複数のシステムで期待どおりの動作をさせることが
どれだけ大変かが身に沁みて分かってくるから。 >>193
まさかもなにもそうじゃない?
知らないのかもしれないけど,POSIXって単にシェルの
挙動だけを決めてるんじゃなくて,
AWKとかC言語とか他のプログラミング言語の仕様も決めてるのよ。
ちなみにAWKのPOSIX仕様は↓ここで読める。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html
だから>>156のコードは「POSIX準拠のクソ長いコード」と言ってしまって良い。 いやこのスレ、シェルスクリプトのスレだから
C言語で書いてもPOSIX準拠だね
だけどこのスレでC言語で答えるのは間違いでしょ >>197
>複数のシステムで期待どおりの動作をさせることが
>どれだけ大変かが身に沁みて分かってくるから。
がんばってw >>199
>だけどこのスレでC言語で答えるのは間違いでしょ
ということはcoreutilsを別途入れるのは反則? w >>201
お前はコマンドを「作る」と「使う」の違いもわからんのか? なんかグダグダやってるけどシェルスクリプトで
UNIXタイムの変換ってぐぐったら普通にでてくるやん ググってみた?
何の単語でググったか書いてみてくれる? ほらな、自分で出せないもんを人に調べさせようとする
新興宗教といっしょ
そんなもんはない 検索して見つけたページを出せなんて言ってないよ
ただあんたが検索した「単語」だけを書けばいい
見つからなくても実際に検索してなくてもOKだよ ちなみになんでこんな事を聞いてるかというと
検索して見つけられないなんてことが
有るんだろうか?って疑問になったから お前も見つけられてないじゃん
何が普通に出てくるだ嘘吐き ちなみに俺が検索した単語は「シェルスクリプト UNIXタイム」
もう一度聞くけど、お前は何の単語で調べた? >>202
草生やしたコメントにマジレスするなら、あえて「わからん」と言うね。
極論すればシェルスクリプトのお題は常にC言語で解くことが可能で、
そのコードをコンパイルしたコマンドを使うことは可能。coreutilsもその一種だろ。
だったら明確な指針でも書いてくださいw >>203
ただの後出しジャンケン乙w
例えばUNIXタイム以外でどうにかするとかいうなら今からコメントする価値はあるが。 チューリング完全かどうかでいいんじゃないの?
チューリング完全なもので実装=他言語で実装
ここはシェルスクリプトのスレなので対象外 >>214
後出しジャンケンはそのとおりだけど
ジャンケンで俺が勝ったということでいいの?w >>211
お〜い,なんの単語で調べたか答えてくれよ〜 >>215
なるほど。
そうするとPOSIX sedは計算完備ではないので
このスレで詳しく議論できるな。
よかったよかった >>219
それPOSIX sedで動きますか? 試してみましたか? ちなみに*GNU* sedの--posixオプション付けて動かして
「動いているように見える」からPOSIX sedに準拠してる!っていうのは
当然だめだからね。分かってると思うけど。 >>220
自分で試せよ
GNU sedでも--posixつければGNU拡張は全部無効になるんだから つーか試してみて動いちゃったから
焦って後出しで--posixの話加えただろw 倉庫番のやつ、99ステージあるけどどうやってるんだろうと思ったら
普通にソースコードに初期配置が文字列で書かれてるんだなw >>229
鸚鵡返ししかできないのですか?
(どうも図星らしい) だから試せばPOSIX sedで動くのがわかるだろ >>232
POSIX準拠にすればどこでも動く
むしろPOSIX準拠にしないなら
別の言語でいいだろ しかし、ポジ準拠を謳いつつ、バグでもあったらどうすんだ?
処理系の問題だと言い張って、相手にしないつもりなの?
どこでも動くとか無責任なことは言うまい。
必要なのは動作確認。 > しかし、ポジ準拠を謳いつつ、バグでもあったらどうすんだ?
動作確認すればいいだけ >>236
POSIX sedで動作確認しましたか? >>216
あー言い方がよくなかった。
すでに解決した問題のごく一部を後からかいつまんで、何か自分が有益な情報を
与えたかのようなふりをすること、だ。こういうのを何と言ったっけな。
コバンザメとか、そういうのにも近い。 > すでに解決した問題
いいえ、POSIX準拠のシェルスクリプトでの
UNIXタイムの変換の話は出ていませんでした。 有益な情報を与えたというか、単にググりましょうと言っただけですね。
下手の考え休むに似たり。ググればすぐ見つかるのに無駄な時間を過ごしてるなと言う話です。 >>243
まとめるとね
POSIXのdateには+%sがないし、今日の日付は取得できるけど任意の日付は取得できない
+%jを使った計算は出てるけど月日形式じゃなくて、その年の初めからの日数(例 12月08日の場合は343日)からの
変換だから、一般的な年月日形式からの変換はできない。またUNIXタイムから年月日への変換は全くでてない。
という話の流れぐらいわかってください >>244
> またUNIXタイムから年月日への変換は全くでてない。
残念、 それも出てます。
>>156 >>246
それはawkスクリプトかつクソコードということで決着はついたはずだが?
193デフォルトの名無しさん2020/12/05(土) 01:36:28.83ID:Tpji0Itw
まさかPOSIX準拠のクソ長いコードって>>156のコードのことなのか?
あれはシェルスクリプトの部分はごく僅かでほぼ9割がawkスクリプト
しかもオプション解析とか無駄なことをやってるからクソ長くなってるだけ
いやアルゴリズムもなんかムダに長い気がするな
あれみていってるなら、POSIX準拠とはクソ長いは全く関係ない
215デフォルトの名無しさん2020/12/06(日) 02:23:24.16ID:rU5Tjp1X>>218
チューリング完全かどうかでいいんじゃないの?
チューリング完全なもので実装=他言語で実装
ここはシェルスクリプトのスレなので対象外 なるほど,ではAWKやsedを使わずに,
「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」
を示してください。 「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」
を検索してください。 検索キーワードを自分で書くとか
わかっててわざとやってるんだろうか?w ポジがどうのはよくわからんがsuperじゃないedもダメなの?今man引いたらだとgnu-ed(ed)が出てきてポジ云々書いてない
シェルスクリプト用途のgrep/sedの7割くらいは違和感なく置き換えられると思うが >>252
POSIX準拠だと移植性が上がるのでベター
コマンド呼び出しは遅いのでシェルスクリプトで実装したほうが圧倒的に速い
この2つの話が混ざってる >>250
検索したところ
>>156
で言及されているコードが見付かりました。 ていうか「AWKやsedを使っていないPOSIX準拠のシェルスクリプトでのUNIXタイムの変換」
は普通に気になるわ。
はたしてそれがシェルショッカー作のPOSIX AWK製 通常時間・UNIX時間相互変換スクリプト
より早いのかどうかも含めてね。
あ,なんかこういう書き方をすると発狂する奴が出てきそうなんで念の為言っておくが,
別に俺はPOSIX最高!なんていう主義じゃないよ。
ただ単に,「POSIXに従った通常時間・UNIX時間相互変換シェルスクリプト」として
>>156 を挙げたら,
「それはAWKで書かれてるからシェルスクリプトじゃない(←まあ理解はできる),
俺は >>203 から始まる一連のスレで言及されている
203デフォルトの名無しさん2020/12/06(日) 00:28:21.63ID:rU5Tjp1X>>214
なんかグダグダやってるけどシェルスクリプトで
UNIXタイムの変換ってぐぐったら普通にでてくるやん
204デフォルトの名無しさん2020/12/06(日) 00:35:27.33ID:I5tPmPco
POSIX準拠じゃないからダメです
205デフォルトの名無しさん2020/12/06(日) 00:40:12.93ID:rU5Tjp1X
いやPOSIX準拠であるって
「ググッたら普通に出てきて」「AWKやsedで実装されてなくて」「POSIXに準拠した」
「UNIX時間を変換するシェルスクリプト」が知りたいのよ。
>>248 でも言及があるな。
それともこれは嘘? まあこんだけグダグダやってもそのコードが挙げられない,ってことは,
多分最初に言及してたのは >>156 のコードで,
それを脊髄反射で否定してしまったから出そうにも出せなくなってしまってる,ってとこだろう。
↑これに反論したけりゃ実物のコードを出せ。そしたらそれで済む話だ。
俺は気にしないが,君が体裁を気にするような人物なら,コードを出してくれたら
「すいませんでした」と言ってもいいぞ。 date コマンド1回で、POSIXで、awkやsedなしで、早い処理で ....
意味不明になってきてるけども。
まあそうやって遊びたい人は自分でやれば。ってそういう奴に限って自分ではできない >>257
いやいやそれを俺に言うのは違うでしょ。
俺は >>156 でいいじゃん,と言っている。
ところが >>203 やら >>250 で,
「AWKやsedを使わない」
「POSIX準拠の」
という条件が出てきている訳だ。
それは純粋に知りたいでしょ。
俺の知っているPOSIXに準拠しつつ
UNIX時間変換を行えるのはAWKでのやりかた。 あれ,全然出てこないな。
くっだらねえ反論はあれだけ反射的なのにw 単純な時間計算の質問をネタにマウンティング合戦を1週間も続けられるってすごいよね
シェルスクリプトにこだわる人はさすが生産的!! >>258
ググったらすぐ出てきたよ?
キーワードはこのスレに書いてある そうにかして言い返そうと頑張ったんだろうなとは思う(笑) なぜ、現物を持って来れないのか。
理由は自ずと分かるよね? >>260
そのあだ名いいなw
>>262 なんて典型的。 >>249
> なるほど,ではAWKやsedを使わずに,
> 「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」
> を示してください。
「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」でGoogleで検索して
上位5つの検索結果=「現物」を持ってきてください
人によって順位は違うらしいからね
なぜ現物を持ってこれないのか?
検索で簡単に見つかるという現実を受け入れられないからなのかな? 検索結果を貼り付けるだけでいいんだけどな
なんでそんな簡単なことができないんだろう? 天才的w計算式で確証持てないとかかなあ
もしくは本当にググればすぐ出てるだろうかw まあ計算式みても確証は持てないわな
Rich’s sh (POSIX shell) tricks
http://www.etalabs.net/sh_tricks.html
これ有名な記事なんだけど、ここに書いてあるUNIXタイムへの
天才的な計算式はバグってる
https://lobste.rs/s/uk5esr/rich_s_sh_posix_shell_tricks
ここで指摘されてる
何がいいたいかって言うと、この手のやつは計算式でもアルゴリズムでも
ぱっと見で確証持てないなんて当たり前だよってこと
うるう年の計算でさえ人類は何度もバグを入れてきた ん?今気づいたが>>156のやつって、Rich’s sh (POSIX shell) tricksに
書いてあるバグありバージョンじゃんw
echoに書き換えてるから気づかなかったが計算式が一緒
awkスクリプトのやつも正しいかどうかわからんよねと
言おうとして、見返して気づいた 比較してみたw 上から、
・>>156版(バグ)
・Rich’s sh (POSIX shell) tricks版(バグ)
・訂正版
echo $(( $(TZ=GMT0 date +"((%Y-1600)*365+(%Y-1600)/4-(%Y-1600)/100+(%Y-1600)/400+1%j-1000-135140)*86400+(1%H-100)*3600+(1%M-100)*60+(1%S-100)") ))
echo $(( `TZ=GMT0 date +"((%Y-1600)*365+(%Y-1600)/4-(%Y-1600)/100+(%Y-1600)/400+1%j-1000-135140)*86400+(1%H-100)*3600+(1%M-100)*60+(1%S-100)"` ))
echo $(( `TZ=GMT0 date +"((%Y-1600)*365+(%Y-1601)/4-(%Y-1601)/100+(%Y-1601)/400+1%j-1000-135140)*86400+(1%H-100)*3600+(1%M-100)*60+(1%S-100)"` ))
3箇所、1601を1600に書き間違えてるんだな
検証大事 >>274
誰にレスしてるのか知らないが、多分レスする相手を間違ってる ということで、検索ぐらいしましょうねw
じゃあ寝る このようにPOSIXに拘泥するとバグります。
と言うよりPOSIXバカは一般人よりバグを出す率が高い。
証拠はググったら出てくるw POSIX関係ない。単に>>156がバカなだけ
検証もせずバグありコードと冗長なawkスクリプト持ってきてるw バグコードでした・・・事実
冗長なawkコードでした・・・事実 自分がコードを出せないからといって他人を僻むのはやめましょうw
結局、POSIXの範囲でUnixタイム→通常時間への変換はAWK使う方法くらいしかない。
ほんまポジバカは口先だけで何も生産しようとしないな。
別に擁護する訳じゃないが、ちゃんとコードを出すだけ >>156 とかのほうがまだマシ
バグがあったとしても指摘して修正できる。
一方、コードを出さなければいつまでたっても自分の間違いをつっつかれることはない。 >>282
なんてキーワードで検索した?
なんで検索結果の上位5位という「現物」を
ここに貼り付けられないの?
再掲
> 「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」でGoogleで検索して
> 上位5つの検索結果=「現物」を持ってきてください
> 人によって順位は違うらしいからね
>
> なぜ現物を持ってこれないのか?
> 検索で簡単に見つかるという現実を受け入れられないからなのかな? 簡単に見つかるなら貼ればいいじゃん
貼れないのは無いから ポバカ vs アンチポ
というよりは、検索の押し付けあい?w 検索結果の上位5位がないってどういう状態?
見つけたものじゃなくて、検索結果だよ。
Google検索が壊れてるの? どんだけ検索結果にこだわってんだよwww
そんなのどうでもいいから
お前が見つけたサイトやら記事やらを晒せって言ってんだよ。
頭おかしいなりに付き合ってたら
ポジキチからなにかPOSIX準拠でAWKに依存しないコードが得られるかも
と思ってここまでレスを返してあげてきたがもういいわ。
>>156 のutconvで十分。
AWKスクリプトがどうとかは関係ない。
あとPOSIXにこだわるのをやめるのも一つの手だぞ。
date -dとか%sとかなんてほぼどんなシステムでも使えるんだから。 > ポジキチからなにかPOSIX準拠でAWKに依存しないコードが得られるかも
だから検索したら得られるって何度も言ってる
検索キーワードも(誰かがw)書いた
得られるのは確定、お前に検索ぐらいしろよと言ってるだけ > date -dとか%sとかなんてほぼどんなシステムでも使えるんだから。
有名である程度のシェアを持ってるmacOSで使えない だから検索したら得られないって何度も言ってる
得られないのは確定、お前に結果ぐらい貼れよと言ってるだけ
無いから貼れないんだろうがな > だから検索したら得られないって何度も言ってる
それが事実かどうか判断するために
検索結果をここに貼れと言ってる
無関係の記事や、見つからなかったという結果でいいんだよ。
単に検索結果だけ貼ればいい。それぐらいできるでしょ? > だから検索したら得られるって何度も言ってる
それが事実かどうか判断するために
検索結果をここに貼れと言ってる
見つかった記事や、見つかったという結果でいいんだよ。
単に検索結果だけ貼ればいい。それぐらいできるでしょ? むしろなんでシェルショッカーの記事を見つけだせたのかわからん
こっちの方が検索しても見つからないぞ
(あ、シェルショッカー本人かw) 検索したらPOSIXはオワコンって書いてあった。
検索すればすぐ出てくる。
出てこないというならその結果を貼れ。 >>295
検索して見つからなかったというのなら
その見つからなかった結果を貼れと言ってます
あるなら貼るだと、なければ貼れないけど、
あってもなくても貼れなら
検索結果が貼れないなんてことはないのです >>297
なんてキーワードで検索したんですか?
ちなみに見つかる検索キーワードは
上の方で「」つきでしっかり書かれています。 しょうゆは発ガン物質。
検索すればすぐ出てくる。
検索して見つからなかったというのなら
その見つからなかった結果を貼れ ちなみにこちらは「見つかっても見つからなくてもいいから」
「検索結果」を貼れと言ってます。
検索したという事実を見たいだけです。
無関係な例えは潰しておきますw 見つかった結果を貼れ
見つからないから貼れないで詭弁でごねてるだけ >>302
代わりにお前でもいいよw
見つからなくていい。ググって出てきたものを貼るだけ
再掲
> 「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」でGoogleで検索して
> 上位5つの検索結果=「現物」を持ってきてください
> 人によって順位は違うらしいからね
>
> なぜ現物を持ってこれないのか?
> 検索で簡単に見つかるという現実を受け入れられないからなのかな? 見つかったなら貼ればいいだけ
見つからない、貼れない、
だからすり替えでごまかしてるだけw
誰にも効いてないがw 検索キーワードがあれば十分でしょ?w
そこで見つかると言ってる 見つかった証拠出せ。
貼るだけ。
これができないのはなぜでしょう?
答え:嘘んこだからw 嘘か本当か自分で調べればわかること
本当に調べたのであれば検索結果を貼ることが出来るはず
見つかった証拠を貼れと言ってるのではない
検索した結果を貼れと言ってるだけで内容についてはどうでもいい
これができないのはなぜでしょう?
答え:検索すらできない人だからw 【置換前文字列1】を【置換後文字列1】に、【置換前文字列2】を【置換後文字列2】に、、、
ってときに
sedを一行で書くのではなく、何行かに分けてかくのが普通ですか?
(単に複業数を一行に見せるやり方という意味ではなく、置換前後の対応的な書き方があるのかなと) findコマンドについて、
対象となるファイルが一つも見付からなかった場合でも(grepとかと違って)
終了ステータスは0のままであることって保証されてるっけ?
ここ↓の終了ステータスの節をみても微妙に分からない。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html >>308
sed -e '<置換命令>;<置換命令>;<置換命令>'
ってやるのと
sed -e '<置換命令>' -e '<置換命令>' -e '<置換命令>'
ってやるのとの違いってこと?
$ <<. sed -e 's/a/b/g' -e 's/b/c/g'
a-b-c
.
→c-c-c
$ <<. sed -e 's/a/b/g;s/b/c/g'
a-b-c
.
→c-c-c
↑こういう「普通の」操作なら別にどっちでも結果が変わらないから
自分が好きな方で書けばいいんじゃないかな。 >>308
見やすいように書けばいいよ
長ければ複数行じゃないと見づらいだろ?
sedって引数で正規表現置換命令を単体で書くような感じだけど
実際は複数の命令を書くところなんだよね
こういう引数で置換!じゃなくて
行を読み取ってその行に対して、あれをやってこれをやってそれをやって・・・と複数の命令を書く
それがわかってない人が意外と多い気がする っていうか前スレがまだ埋まってないやん
検索結果がなんだのくだらない話で埋めてくれてもええんやで 最近findの-exec被演算子による実行を
for _var_ in *; do ...; done
を置き換える形で好んで使っている。
まあfor文の何が悪いって訳じゃないけど
強いて挙げるならfindを使う方法は余計な変数を用意しなくていい。
for文にしかできないことっていうのもそうそうないし。 適材適所
forはファイル数が多数になった場合には引数が多すぎでエラーになる可能性があるから
ファイルを繰り返し処理するのはおすすめできない
ただし-execはシェル関数が呼べなかったりシェルスクリプトの処理との連携が
できないというデメリットが有る
外部コマンドを呼び出すだけなら-execでいいが
そうとは限らない場合はfind + while + read ループの方がいいだろう
ファイルの数が少ない場合は外部コマンドを呼び出さない分
for(というか * )の方が速い
それで検索してみたか? forは余計な変数がいるけど
whileを使えば余計な変数は不要
どうするかって?
set -- *
while [ $# -gt 0 ]; do ...; shift; done
余計な変数がいるからforを使わないというのは正しいが
余計な変数がいるからfindを使うは正しくない >>315
> ファイル数が多数になった場合
これ\+じゃなくて\;を使えば別にファイル数が多数になっても
適宜処理できるんじゃない?
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html
↑これの-execの
If the primary expression is punctuated by a <semicolon>...らへん。 >>309
これについて
手元のGNU findで試してみたけど 該当するfile/dirが1件も見付からない場合でも
エラーにならないというかexit statusは0だった。
もっとも これが正しい挙動なのかは不明。 POSIXに仕様が書いてあるのに
あの程度も読めないやつがいるんだな >>320
そうなんです,あの程度も読めない奴なんです。
教えていただけますか? これ以外に何の解釈が有るんだ?
EXIT STATUS
The following exit values shall be returned:
0 All path operands were traversed successfully.
>0 An error occurred.
終了ステータス 次の終了値が返されます。
0 すべてのパスオペランドが正常にトラバースされました。
> 0 エラーが発生しました。 >>322
対象となるファイルが一つも見付からなかった場合、
終了ステータスは0? >>323
悪い仕様の書き方の見本みたいなところあるけど
ファイルが見つかったかどうかはEXIT STATUSには無関係
ファイルが見つかっても見つからなくても
なんらかのエラーで走査できないパスが1つでもあればEXIT STATUSは1以上
全てのパスが走査きればファイルが見つかっても見つからなくてもEXIT STATUSは0 一般的にはプログラムが正常終了すれば0
異常終了すれば1
ファイルが一つも見つからなくても
プログラムが正常に終了したので0になる >>323
0 すべてのパスオペランドが正常にトラバースされました。
と書いてある sedについて質問。
入力に¥x80以上の文字が含まれていた場合、正規表現「.」はマッチしないんだっけ?
試しに「[¥x00-¥xff]」とするとエラーになるし。。。
任意のバイナリは扱えない? >>332
そもそもsedって正規表現のところで\の後に数字を置いて
なにか文字を表わす,みたいなことできなかったと思う。
唯一,s/<ここ>//の←<ここ>の部分で\nが使えるだけ。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html >>334
ほかにも'\\', '\a', '\b', '\f', '\r', '\t', '\v'は使えるようだが、それだけか。
うぬぬ。。。
では、次のようなバイナリがあったとき、数値部分を抽出するにはどうすればいいかな?
<任意のバイナリ><数値テキスト> >>336,337
ありがとう。
一瞬だけgrepでなんとかならんかな?と思ったけど、いやムリやろと自己完結してた。。。
ちなみに試した感じ、grep -o(--only-matching)で充分そうだけど、-a(--text)は何のため? >>332
\x00以外ならできる
$ cat a.txt
漢字
$ hexdump -C a.txt
00000000 e6 bc a2 e5 ad 97 0a |.......|
$ A=$(printf '\xe6')
$ printf "$A" | hexdump -C
00000000 e6 |.|
$ sed "s/$A/ /" a.txt | hexdump -C
00000000 20 bc a2 e5 ad 97 0a | ......| $ LANG=C sed "s/./ /" a.txt | hexdump -C
00000000 20 bc a2 e5 ad 97 0a | ......| >>338
なんでドキュメントみないのかな
grep はファイルがバイナリだとわかると、 その先の出力を抑制します。 >>339
あー、なるほど。
エスケープとかじゃなくて、直にその文字コードの文字を入力したらいいのか。
ってムリ。w
入力ができるできないで言えばできるけど、後から文字が読めなくなるし。
とにかく、sedだってバイナリを扱えないことはない、ということはわかりました。
ありがとう。 >>341
いや、実際にバイナリに見えるであろうデータを流して問題がなかったから。
-aなしだとgrepの判定次第になるから、保険でつけといたほうがいいか。 >>342
> 入力ができるできないで言えばできるけど、後から文字が読めなくなるし。
$ A=$(printf '\xe6')
読めるだろ?
後からって読むならスクリプトファイルにしてるはずだし
なにか問題が? >>344
えー。
sed --expression "/[$(printf '\x80')-$(printf '\xff')]/"
とかかなりやばくね?w
今回はgrepでいいです。。。 x80=$(printf '\x80')
xFF=$(printf '\xff')
sed --expression "/[$x80-$xFF]/"
でいいだろ
なんでこう頭が固いのか >>346
それくらいならもとのコードのがマシ。
そういう変数にして事故ることもあるので。 >>348
元のコードがやばいって言ったのはお前なんだが
じゃあ何がやばいんだ?
なんで変数にしただけで事故るんだ?
いきあたりばったりで理由づけするのやめろよ >>349
オレのもとのコードはたんに読みにくくてヤバいが、そっちのコードは、一度しか使わない変数で、さらにその名前と値がダブってるところがもっとヤバい。
いきあたりばったりなどではない、確固たるオレの感覚。
わからんのなら、見解の相違ということで。
おしまい。 ダブルのがいやならこうすれば?少しは頭を使おう
for i in 80 ff; do eval "x$i=$(printf "\x$i")"; done sed --expression "/[$(printf '\x80')-$(printf '\xff')]/"
これが「ヤバい」理由を教えてくれたら改善≠ナきるかも知れない。
(正直私にはとくに「ヤバい」コードには見えないのだが……) ていうか読み直したら「感覚」で批判してるのな……
じゃあもういいや。
なんか理論的な欠点があるのかと思って,
私にはそうは見えなかったから勉強の為に訊こうとしたけど
そういう感じではなかったみたい。 他にもこうするとかな。マジ頭が固すぎ
LANG=C sed --expression "s/$(printf '[\x80-\xff]')//"
LANG=C sed --expression "$(printf 's/[\x80-\xff]//')" 「確固たるオレの感覚」が技術力不足によるものだから
自分が未熟であることに気が付かないとどうしようもないだろうな
staticおじさんと一緒 (まだ)POSIX準拠じゃないけど、誰かに言われるのも嫌なので一応w
LANG=C sed --expression $'s/[\x80-\xff])//' あるコマンドがシバン使って実行されてたかどうかを知る方法ってある?
例えばscript.shってのがあったとして
$ script.sh ./file で起動されたのか、それとも
[file]
#!/usr/bin/env script.sh
$ ./file で起動されたのか区別したい >>359
どこで判定するの?
script.shになにかを記述して判定するってことでいいか?
fileじゃなくてscript.shで判定するのは厳しいと思うよ。
というのもシバンは,たとえばLinuxでは
#!xxxx yyyy zzzz
というのを
$ xxxx "yyyy zzzz"
というようなコマンドラインに変換≠オて実行する訳だから,
xxxxにとってはシバンなのかコマンドラインなのか
判断付かないと思う(間違ってたらすまん) ちょっと話外れるけど
みんな「シバン」派?
俺の周囲はみんな「シェバン」て言ってる
どっちが主流なんだろ
「エヌテーテー」と「エヌティーティー」みたいな
世代間の差がある様な気がしてる
まぁどっちも意味通じるしどちらも間違ってはいないんだろうけど
微妙に気になる ちなみに「エヌテーテー」と「エヌティーティー」の差は
昔は他社とは電話でコミュニケーション取ってたから
「ティー」だと「イー」と間違われる事が多くて
意図的に「T」を「テー」と発音する様になったんだと先輩に聞いた
だからインターネット以前から働いてる人に多いらしい >>362
たぶん後付
じいちゃんばあちゃん世代は
ティッシュじゃなくてテッシュと言ってる
ディズニーランドはデズニーランド
テーテーは小さいイが発音できないのをごまかしたんだろ >>363
確かにうちの爺ちゃんもそんな感じだな
でも50代前半の上司も「テー」って言ってるし
流石にその位の歳の人は普通に言いそうなもんだが >>361
シェにはならんやら
尿瓶(シビン)のシとは発音が違ってsheやshipのシ
sheをシェーとかshipをシェップと言わないのと同じ
「シィバン」ならまあ理解できる 一番笑ったのは
tea party を
テー・パーチー
と呼んだこと >>366
「shell bang」だと思うと「シェル」「バン」、略して「シェバン」。
全然おかしくないやろ。 >>368
じゃ一番有力なsharp-bangが語源と考えると「シャバン」
次に有力なhash-bangを日本語読みで考えると「シュバン」だね
語源がどうあれ語呂合わせで既存の単語に当てたんだからその単語の発音を使うのが普通じゃね?
それともshebangの発音を日本語にすると「シェバン」と書く派?
https://www.merriam-webster.com/dictionary/shebang キヤノン「…」
キユーピー「…」
シヤチハタ「…」 >>371
それは戦前の読み方が関係しているんであって,
今話題に上がっているtをテー読みするという話とはまた別では? >>373
うっちゅうーけいーじ!ギャ、バーン!! 恐らくだけど>>368が近いと思う
みんなbshを「ビーシェ」て言ってる
でもbashは「バッシュ」だから一貫性は無いな りぽびたんでー
八村塁選手ですらそう言ってるし間違いない fish
フォルダにいくつかの連番名サブフォルダがあり、その中に連番テキストが入っています。
サブフォルダ00: 000.txt 001.txt
サブフォルダ01: 000.txt
ここにあるテキストをサブフォルダ名とテキスト名を明記してまとめたテキストを作りたいです。
all.txt
00-000.txt
りんご
00-001.txt
ごりら
01-000.txt
らっぱ
一応書いてみたのですがあまりうまくいきませんでした
for x in (seq -w 10)
for y in (seq -w 100) ;printf "%s $x-$y.txt";cat "$x/$y.txt" ; end
end > all.txt
連番が001からではなく000から始めたいのと
no such file or directory が出たときにそのループを終わらせたいです。
よろしくお願いします。 >>382
find . -type f \( -exec sh -c 'echo "$1" | sed -e "s/\.\/sub\([[:digit:]]\{1,\}\)\/\(.*\)/\1-\2/"; cat "$1"' sh \{\} \; \) > all.txt >>384
前提条件
/tmp/382-test$ tree
.
├── sub00
│ ├── 000.txt # → りんご
│ └── 001.txt # → ごりら
└── sub01
└── 000.txt # → らっぱ >>383
それぞれのテキストファイルの中身ってことです。すいません。
>>384
ありがとうございます。
そのfish文があまり理解できないのでよかったら教えてください。
特に正規表現部分が複雑でうまく想像できません。
サブフォルダ内には.txtではないファイルもありますが、それはall.txtに入れたくありません。
>>385
/tmp/382-test$がよくわかりません。
また
├── sub00
│ ├── 000.txt # → りんご
│ └── 001.txt # → ごりら
├── sub01
│ └──000.txt # → らっぱ
ファイル構造はこうなっています。
サブフォルダ直下の.txt以外はall.txtに入れたくありません。 後出しヤローに付き合ってたらエンドレスなので終了でいいと思う >>386
うんだからそのフォルダ構造でいいんだって。
5chは行頭空白を勝手に縮めるから階層がおかしく見えるだけ。
*.txtしかいれない設定。
find . -type f -name '*.txt' \
\( -exec sh -c 'echo "$1" | sed -e "s/\.\/sub\([[:digit:]]\{1,\}\)\/\(.*\)/\1-\2/"; cat "$1"' sh \{\} \; \) > all.txt とりあえずやってみろ。というかFish shellじゃなくてBourne系のShell(例えばBash)を使ってくれ。 それを使えって課題なんでしょ
他の使っちゃダメだよ >>388
ありがとうございます。
うまくいきました。
色分けされてて見た目がかっこいいのでとりあえずfishに変えてみたんですが、
ネットにあまり情報がなくて知識がないと使いこなせなそうなので考え直します。 >>394
ただ、今回の回答はほとんどfishに関係ないけどな。w echo a #b は a と出力されるけど
echo a#b は a#b と出力されるのは
POSIXで決まってますか? >>359
>>360
一般には不可能だと思うけど、Linuxの場合かつshebangで #!/path/to/script.sh のようにenvを使っていない場合は一応可能かもしれない。
script.shの中で cat /proc/$$/comm とすると、前者はscript.shになっていて、後者は./fileになっている。
これはtopに出るコマンド名に相当する。
ただし、パスではなく単なるファイル名なので不完全。 >>359
>>360
script.shがCプログラムなら、その中でgetauxval(AT_EXECFN)の結果を見れば分かる
これは、exec系のシステムコールが最初に実行したファイル名をもとに設定されるから、スクリプトならスクリプトのファイル名になる
一方、script.shがbashスクリプトなら、↑の内容が変数$_に入っている
いずれもenvを使った場合は原理的に不可能(そもそもshebangでenvを使うのはあまりよろしくない)
これはenvがscript.shをもう一度execするから、↑の内容がscript.shで上書きされるため >>359
>>360
訂正: bashの$_は別物なので、bash上から実行した時のみ利用可能
一般には、script.shで
read -r -d '' execfn < <(dd if=/proc/$$/mem bs=1 skip=$(($(grep -Po '[^\d ]+ (\d+ ){47}\K\d+(?=( \d+)*$)' /proc/$$/stat))) 2>/dev/null)
とするとAT_EXECFNが$execfnに入る 自分の技術力不足をSQLのせいにしている典型的な例だなw
私は昔、2000行に及ぶ一つのselect文を書いたことがある。
副問い合わせの嵐でおぞましい姿をしていた。
あれはSQLの匠に見せればマシになるのだろうか。
もしあの時、既にシェルスクリプトでやる発想があったらよかったが……。
副問い合わせがいくら連なっても素直に書けるからな。
SQLで副問い合わせを多段に利用する場合、インデントが欠かせないと思う。
例えばselect文なら、from句(データ入口)が途中にあるせいでインデント無しではselect文の範囲を区別しづらい。
一方シェルスクリプトの場合、データの出入口は先頭・末尾なので、
インデント無しに無理なく書き足していける。 >>401
え?なに怖い
この人には何が見えてるんだろう? 長いSQLを誇る=汚いテーブル設計がされてるレベルの低い現場で働いていた証 https://twitter.com/shellshoccarjpn/status/1338173393993023488
> 己の未熟さを棚に上げ、シェルスクリプトを批判し、使いこなしを放棄し、
> 高級言語やミドルウェア、その他を乱用する。
> そのせいで複雑化して開発効率が落ちれば、また別の、
> 新たなそれらを導入する。愚かな。過度な依存の先に待っているのは破綻だ。
己の未熟さを棚に上げ、SQLを批判し、使いこなしを放棄し、
やってもないのにシェルスクリプトなら素直に書けるとウソを付く
https://twitter.com/5chan_nel (5ch newer account) いつものPOSIXといいながら
シェルスクリプトのことしか言わず
シェルスクリプトと言いながらawkスクリプトを書く
頭のおかしい人 >>409
POSIX原理主義とかいうマイナーな宗教(笑)関連者
上の方ででていたawkスクリプトによるUNIXタイム計算を書いた人
https://github.com/ShellShoccar-jpn/misc-tools/blob/master/utconv
シェルスクリプトでウェブアプリを作れるとかいう
ユニケージにも関係していると見られる
POSIX、POSIXうるさいが、自分たちの独自理論を使ったビジネスに
利用しているだけ。POSIXの威を借る狐状態
このビジネス(ユニケージ)の犠牲になったのが東急ハンズで
ユニケージは負債扱い。脱ケージ活動という言葉まで言われている
東急ハンズがシステム更新で炎上した事件は
このユニケージが影響してるのではないかと言われている 別にPOSIX主義者を用語するつもりはないけど,
Twitterでの話題をこっちまで引っ張ってきてネチネチ呟いているのも大概だと思うぞ。 >>408
同意。プログラムの本質に関係ない
人間関係のもつれはよそでやって欲しい そのプログラミングの本質がだめなんだよなw
POSIXは移植性を上げるための最低限の規則であって
それだけじゃ足りないし、開発効率を上げるためのものじゃない
POSIX準拠は問題ないが、POSIX準拠のコマンドだけを使うのは馬鹿げている
具体的には各種ライブラリを使っていいし使うべき
そのライブラリがPOSIX準拠(のC言語等)で作られているならなおさら
RubyやPythonだって結局はPOSIX準拠のものを使って作られてるんだろ? Ruby 以外でシステムを作ったら、まず保守できない
シェルスクリプトで、複雑なアプリを作っても、保守できない。
難しすぎるから >>407
awk だって posix だろ?何が問題なんだ? >>415
保守性では、Rubyは底辺やろ。w
互換性を信用できないからな。 >>416
awkがPOSIXかどうかなんて話はしてないよ
awkはシェルスクリプトじゃないって話でしょ
awkはpythonと同じように、シェルスクリプトから
実行するコマンドであってシェルスクリプトそのものではない >>417
ソースコードの隠蔽なら、Goとかを使ってバイナリにすれば
まずバレなんじゃね?と思ったが
ウイルス対策ソフトからすれば、バイナリを解析して怪しい挙動を
しないか解析するのに比べれば、シェルスクリプトは解析が簡単だなー
って思っていたのが、シェルスクリプトでも(バイナリと同じように)大変になった!
という意味の高度化なのかな
つまりバイナリに追いついたレベル キテレツ「コロ助はゲイなの?」
コロ助「バイナリ!」 やっぱり頭悪すぎだなw
データの話なんか全くしてねーのにな
リッチー大佐の中の人 @col_richie ・ 3時間
この記事からの学びは、UNIX哲学にある「単純なテキストファイルにデータを格納せよ」の正しさだろう。
それを意図的に破れば、厄介なマルウェアが作れるし、システム開発における難解な仕様設計はマルウェアも同然。
巧妙化するシェルスクリプトの隠蔽手口について解説 - https://go.shr.lc/3ncGDTD ユニケージで作られたプロジェクトがオープンソースになってからいえ
完全にベンダーロックインになって交換不可能になっとるやないけ(笑) いまはオープンソースがどうたらの話はしてないでしょ。
つーか何回も言うけど非技術的な話は他所でやってくれ。
「これもぎじゅつのひとちゅだ!」みたいな下らねー反論はするなよ 両方とも気持ち悪いけどそんな目くじらたてるようなことではないな
シェルスクリプトは抑制的に使わないと負債化しやすいっていう一般常識を
イデオロギー的に認められない人がネッツの隅っこでグチグチ言ってるだけ まあそうだけど,その隅っこに噛み付いて,
Twitterと無関係な5ちゃんねるまでわざわざ書き込むのは異常だと思うわ。 POSIX中心主義に対する反論は,
私にはまっとうなものに見えるから,
それをTwitterで本人に対して言って議論すればいい。
それで仮に本人が自説を引っ込めなくても,Twitter上で議論が完結する。
「POSIX中心主義が正当かそうじゃないか」みたいな話はしてないんよ。
Twitterでの言説に対する鬱憤をここで晴らすな,っていう話をしてる。 ユニケージの話ならいいでしょ?
ギークが熱狂するしている開発手法らしいし(笑)
今、ユニケージ開発手法にギークが熱狂するワケ【USP研究所代表&オープンソースOSコミッター対談】
https://type.jp/et/feature/14070/
> 今では選りすぐった50個ほどのコマンドで大半の基幹システムを開発できるようになりました。
この50個のコマンドって?使い物になるの?
交換可能であることが重要だけど、他の誰か実装してるの? ユニケージ、USP研究所、POSIX中心主義、シェルショッカー
だいたいこの4つで世界が完結してるよね 出力が見にくいので1つ1つの出力の行ごとに改行を入れたいです
今のところ
echo
で行だけを毎コマンドごとに挿入したり
sed "s/^/\n/g" hoge.txt
などをしています
もっと良い方法はないでしょうか? >>437
すげえ発想。
でも実際,質問者のやりたいことはこれかも知れない。
別に「行を挿入する」ことが重要なんじゃなくて
「行を見易くする」ことが目的なんだかね。 >>440
君数学の日本語論文読んだことないでしょ。
全部とは言わないがほとんど「,」だぞ? 数学の前に小学生レベルの日本語読解力を身につけろよww 確かに日本の出版物では横組みのときは読点を「,」にするルールがあったりなかったり。
さらに句点を「.」にするルールがあったりなかったり。
科学・技術系で多いような気がしたりしなかったり。 >>441
それは古いルールで現実に即してないから変更になる
もう使うのはやめよう
公文書の読点「,」から「、」に 半世紀以上前の通知変更へ
https://news.yahoo.co.jp/articles/88039fa6aabfa1f719af747607119694998f9eaa
> 文化審議会の国語課題小委員会は30日、半世紀以上前の通知に従い、
> 公文書では読点に「,」(コンマ)を使うとのルールを見直し、
> 一般に広く使われている「、」(テン)を用いるよう求める中間報告案をまとめた。
> ただ、現在は多くの省庁がテンを使っており、文化庁は要領改定を検討してきた。 そんなどうでもいいことよりも
質問の文章を理解してネタレスかどうかくらい区別できるようになってよ >>445
あの…、政府がどうとかじゃなくて
数学界の話なんですが… 数学界でもその指標に従ってるだけのこと
テンを使うところは数式じゃなくて日本語だろうが >>437
ありがとうございます
できました
>>436
これも調べてみます >>445
それを読むと読点はもともと「。」だったみたいだね。
そして >>443 も指摘していた通り
科学・技術界隈では句点を「.」にすることが多いんだよ。
つまり >>445 は >>441 の反論になっていないということ Androidでシェルをやってます
コメントアウト
<< comment_out
コメントアウトしてます
comment_out
をすると
can't create temporary file /data/local/shuv2gty.tm
p: Permission denied
と表示されてしまいます
このエラーを非表示にする、またはパーミッションを得るにはどうしたらいいですか?
他のアプリが使えなくなるのでスマホ自体のroot化はできません パーミッションをゲットしようとすんな!w
そうか、そんな発想もあんのか。新鮮。 >>452
TMPDIRが/data/local/tmpなら書き込めると思うけど
Androidのスレで聞いたほうがいいんじゃないかな 漏れは、Windows 10, WSL, Ubuntu 18.04 で、
VSCode の拡張機能、Remote WSL も使う
Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた
apt のRuby, Nodejs は、バージョンが古いから入れていない
which ruby
~/.anyenv/envs/rbenv/shims/ruby
which node
~/.anyenv/envs/nodenv/shims/node
こういうテスト環境に、#!/usr/bin/env ruby
を使う。
本番環境では、使わない方が良い >>451
> 科学・技術界隈では句点を「.」にすることが多いんだよ。
変なルールは時代の合わせて変えていくべきだねって話なのわかってないの? これも面白い話だね
https://crd.ndl.go.jp/reference/modules/d3ndlcrdentry/index.php?page=ref_view&id=1000155681
質問 技術文書で読点が「,」(カンマ)で句点が「.」(ピリオド)になっているものが多い。使われている根拠は何か。
回答 昭和25年(1950年)9月発行の文部省編『文部省刊行物表記の基準』付録「横書きの場合の書き方」では、
横書きでの句点は「。」を用い、読点は「,」を用いるという記述があり、現物を利用者に見ていただいた。
吹田所蔵の資料を取り寄せたが、根拠となるものを見つけることはできなかった。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ただ、資料によっては技術文書は欧字や数字、数式が含まれていることが多いので「,」(カンマ)「.」(ピリオド)を推奨するという記述があるものもあった。
インターネットのホームページで論文の原稿執筆に「,」(カンマ)「.」(ピリオド)を
用いるとしているものもあったが、根拠は見つけられなかった。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
根拠はない。全角半角という違いが有る、今の時代からすれば悪習だろう そんなに細かいところをネチネチ気にしてる癖に
スレの趣旨と違うことを話していることには気が付かない滑稽さたるや >>440
わかったか?
440 名前:デフォルトの名無しさん[] 投稿日:2020/12/16(水) 19:57:20.32 ID:HoimPx00
>>439
s/,/、/ >>433
> 東急ハンズ以外に採用実績あるのか?
怪しい健康食品販売みたいな感じで
知り合いの紹介とかで、洗脳される人が広がってそうw >>459
文章にだってTPOはある
>>440のように訂正したからといって論文読んだことないと判断するのは軽率 >>430
> 10万円以下で買ってきたごく普通のパソコンを10台並べ100GbpsのInfiniBandで
パソコンが10万以下でもInfiniBandのボードは10万では到底買えないし、スイッチは200万くらいする。
あまり誠実な記事とは言えないんじゃないかな。 >>440は最初の一個だけ変えて何をしたいのだろう と、思うが、対象に一つしかないからな
同じように思ったが >>439には一個も見当たらないのだが、老眼なのかなあ てか、読点くらい人の好みじゃね?
そんなつっかかって何がしたいんだ? よく分からんが突っ掛かったのは>>441じゃないのか どうでもいいやり取りに執着してまともに質問に答えるやつが一人もいないという状況 じゃなくてTPOで選べな。いつも同じやり方でやるとかうざいだけだから。 じゃあTPOを弁えて「,」を使うのは旧時代的!
なんていうくっだらねえ主張展開するなよw まさかTPOのTを「時勢を捉える」の「時間」だと思ってらっしゃる御仁がいるとは timeは多義語だしな。
時は来た
は
The time has come
悪癖を脱する時勢<とき>なのだ! 問題は時間じゃなくて場所だろ
5ちゃんねるで一般的じゃない「,」を使うなと
言ってるんだよ。ダサすぎ。
国会で5ちゃんねる用語を使うようなもんだ TPOの観点で言うと、ほとんどの人がどっちでもいいと思っている事を目ざとく取り上げしつこく指摘し続けるのを、こういう場では古来から自治厨って言うんですよ >>481
自治は違うだろ
そのスレのルールに従わせるのが自治だ
ルール化されてない話は自治とは関係ない >>483
ルール化されてない話すらしてるから自治じゃなくて自治"厨"なのよ どうでもいいけどそれこそ「日本語の句読点は、と。しか認めない!」ってほうが
よほど旧時代的≠セと思うよ。
あと「日本語の自治厨」とはよくいったもので,
仮に「,」を使うことが "TPOを弁えてない" としても
それをネチネチ指摘することもまた同様ってことね。 認める認めないじゃなくて
日本語を書く時(手書き)につかうのは「、」と「。」だという話
そして「,」と「.」は英文で使うものなので半角にするべき
正しく使い分けよう いつまでスレチな話題を続けるんだ?
「TPOを弁え」ろよw そ
も
そ
も
横
書
き
の
日
本
語
は
邪
道 >>490
( ゚∀゚)
( ∩ミ ほーら
| ω |
し ⌒J bashのreadコマンドの-uってどうやって使えばいいの?
echo "test" >&2 | read -u 2 line ってやっても取れないんだけど そもそも
$ echo "test" | read line
でも取れないよそれ 取れてるけど?
echo "test" | { read line; echo "[$line]"; }
[test] やっぱり取れますねぇ
shopt -s lastpipe
echo "test" | read line
echo "[$line]"
[test] >>495
お,ほんと?
>>492
じゃあこれ↑お願いします。 >>496
だから取れないんだろ?
俺は>>492に対してレスはしてなくて
お前の間違った回答にレスしてるだけ >>497
ああそうなの。わざわざどうも
元の解答にも答えてあげてね。 >>492
| をそもそも勘違いしてるようだけど、stdoutをstdinに繋げるだけだぞ
stderrはそんなことしても対象外だし、stderrを読もうとするのがアレだが、
それでもreadプロセスでのstderr(tty)から読もうとして読めてるだろう。-u 使えてるじゃん?w -u 2 はそうかも知れないけど -u 3 は読めないじゃん?
-u ってどうやって使うの?
echo "test" >&3 | { read -u 3 line; echo "[$line]"; } は動かなかった わかってるなら説明してください
ただ煽りたいだけのやつは不要です なんでいきなり 3 やねん。どういう発想からなんだかだぞ
3 に適切に(自分で)割り当てれば、>>501で動くぞ 回答してるだけで自分が偉いと勘違いしてるアホが多いからねw その動くコードを書いてくださいね。と言っただけなのになw 書いてやるけど、その前になんで 3 にしたのか言ってみ > echo "test" >&3
誰が3をオープンしてんだよ
これで分らんなら基礎からやり直せ >>512
www
まあ、素直でよろしいw
mkfifo /tmp/hoge
exec 3<> /tmp/hoge
echo "test" >&3 | { read -u 3 line; echo "[$line]"; }
とか(後処理とか自分で書け) >>514
それパイプの意味ないですね
mkfifo /tmp/hoge
exec 3<> /tmp/hoge
echo "test" >&3
{ read -u 3 line; echo "[$line]"; }
ファイルを経由してる時点で論外だし
趣旨わかってますか? 何言い出してるんだか。FIFOもわかってないようだな
やっぱ真性バカか 繰り返すが、
| をそもそも勘違いしてるようだけど、stdoutをstdinに繋げるだけだぞ
パイプの意味wが重要ならstdoutの出力するのが筋。そもそもそれを避けてるのにパイプの意味wもなんもないだろう
どうしてもパイプの意味wがなんだったら、stdoutとstderrを入れ替えて最後にstdoutとstderrを入れ替えるとかあったなあ
クソ小生意気wなだけの真性バカには詳しくは教えない、上述のはググればあるだろうと親切にw教えておしまい >>511
それで3のfdが新たに作られてと思ってそうだなw ちょっと煽るだけで答えが出てくるんだから宿題捗るわ〜 自称透視能力者
煽るだけで答えをもらえると思ってるやつと変わらない性格なんだろな
いやそのままそう思ってるようなので全く同じ性格か みんな参加しないの?
POSIX原理主義/POSIX中心主義プログラミング Advent Calendar 2020
https://adventar.org/calendars/5758
POSIX原理主義 Advent Calendar 2016
https://adventar.org/calendars/1787
4年前は参加者いたのに >>525
参加してきました。
よろしくお願いします。 POSIX原理主義も企画倒れネタだったなぁと(苦笑) ワロタw 微妙にディスってるだろwww
> 「2017年、POSIX原理主義は世界に進出する」
> リッチー大佐氏はそう仰いました。
>
> 同年、POSIX原理主義ならびに
> POSIX中心主義プログラミングについての
> 査読付き論文が公開されました。
>
> それ以降、
> 便りがほぼ皆無に近い状態となってしまっているように
> 感じられます。
> それどころか、世界進出も実感が湧かなく感じられます。
>
> POSIX原理主義ないしPOSIX中心主義プログラミングは
> 成熟をしきってしまったのでしょうか?
> それとも、まだ、成長をする余地があるのですか?
> そして、その存在は忘れ去られていませんか? まあPOSIX中心主義を擁護する訳じゃないけど、
POSIXに従えるときは従っといた方がいいね。 POSIX中心主義とかいう考え方が実用的じゃないんだよね
POSIXの問題じゃなくて、どこぞの素人が考えた「中心主義」が実用的じゃないという話
あれ、結局ライブラリを使わずに全部自分で実装しろってやつだから
生産性が悪すぎる C言語が使ってOKなら、RubyやPythonもPOSIXに準拠して作られてるんだから
POSIX中心主義的には使ってOKになるはずなんだがなぁw
実装が複数ないといけないっていうのならPythonは無理でも
RubyはJRubyとかあるし、Javaも使ってOKなはず つまり言いたいことは、思想がそもそも矛盾してるよね 完全に標準規格のCを使った実用アプリなんか存在せんやろ。w
UNIXでもLinuxでもWindowsでも、どこかで非標準関数を使わざるを得ないことになりがち。 仮にRubyやPythonがPOSIXに準拠してようが、
RubyもPythonもPOSIXに含まれないので使ってはダメです >>535
C言語のレベルでPOSIXだけでは作れないものが
あるなら、それはPOSIX中心主義の敗北なんだよな
POSIX準拠ではどうあっても動かないので
POSIX中心主義のかかげる「20年後も動く」は
「現時点ですでに動かない」ということになる >>536
その理屈だとPOSIX準拠のC言語で作った「オレオレコマンド」は
POSIXに含まれてないので使ってはだめということになる(笑)
もちろんユニケージ用に作られた専用コマンドもPOSIXに含まれてないし
シェルショッカーが作ったオレオレコマンドもPOSIXに含まれていない 舐めてるのは「POSIX中心主義」だよw
POSIXの名を語った偽物 >>537
なんかおかしい。
POSIXは、システムやツールがどのように作成されているかは規定してないやろ。
最悪、魔法でもいいのではないか?w なんかPOSIX中心主義も変だとは思うけど
それ以上にその反対勢力が気持ち悪い。 POSIXってネットワーク系は何も規定してないじゃん
規定のあるところは従おうねってだけの話なのに「POSIX中心主義」とか大げさなんだよw >>544
「POSIX準拠+交換可能性担保+W3C勧告準拠」が「POSIX中心主義」らしいw
> 交換可能性担保
> 上記の指針では実現の難しい機能、あるいは全く不可能な機能を実現しなければならない場合は、
> POSIX規格にない依存ソフトウェアを使用せざるを得ない。
> しかし、無制限に認めてしまえば保守や移植のコストは増大してしまう。
> そこで、使用する場合には次の性質を満たすことという例外条件が2番目の指針である。
> 今利用している依存ソフトウェア(A)と同等機能を有する別の実装(B)が存在し,
> 何らかの事情によりAが使えなくなったときでも,Bに交換することで
> Aを利用していたソフトウェアを継続して使える性質
この交換可能性担保が特に破綻してる
Rubyの実装としてJRubyがあるのだから、交換可能性担保を満たしている
ユニケージのライブラリと同等機能を有する別の実装は存在しないのだから、交換可能性担保を満たしていない
(Open usp Tukubaiは利用度の高いものだけ) >>541
「POSIX」は、システムやツールがどのように作成されているかは規定してないのに
「POSIX中心主義」は交換可能性担していなければいけないとか別の規定を加えてる curlとwgetのどちらでも動くようにしろ、そのために共通で持ってる機能だけを使えと書いてあるが、
wgetではPUTやDELETEなどに対応しておらず、機能が低い方に引きずられる
また必要もないのに両対応にするのは過剰設計でしかなくYAGNIの原則にも反している
シェルスクリプトの中でgitを使ってるとして、gitと同等の機能を有する別の実装とは何なのか?
その別の実装はgitリポジトリにアクセスできるのか?
そういう話 POSIX中心主義によるとgitはPOSIX準拠ではないので使ってはだめだが
例外条件が有るので、Mercurialのgitプラグインをつかって
gitでもhgでも交換可能で動くようにすればOK
gitを使うスクリプトは両方のコマンドで共通で使える機能だけを使い
hgでも動くようにしするのがPOSIX中心主義
最大公約数的な機能しか実現できずMercurialなんて使わないのに
両対応のためにコードが複雑化し開発工数が
上がるのがPOSIX中心主義である
現実的じゃない理由 なんというか,「反POSIX中心主義」もそれもそれで
頭の固い連中だなと思うなど。 >>550
それは「POSIX中心主義」という技術の話ですか?
それとも単に人の話をしてるだけですか?
私は技術の話をしています。 聞かれてもいないのに自分の主張ばかり書き込むのが流行ってますね なにか問題なの?
総合スレの内容として適切だと思うけど? ま、こないだはポジバカがうるさかったからな。
カウンターみたいなもんやろ。
しゃあない。 >>555
だから「POSIX準拠」と「POSIX中心主義」は全くの別物なんだって クソの役にも立たない言い訳はいいからシェルスクリプトの話題出せや
あくしろよクズ {x}<"$x" _=${x=<(echo moo)} <&0$(cat <&"$x" >&2) >>557
「POSIX中心主義」はシェルスクリプトの話題なんだが? >>562
「POSIX中心主義の話題」が「シェルスクリプトの話題」
なのであれば当然>>542も「シェルスクリプトの話題」ですね。 「反対勢力が気持ち悪い」は勢力の話なのでシェルスクリプトの話ではありません。
「POSIX中心主義」と反対の技術の話はシェルスクリプトの話ですがね。 しつけえ
POSIX中心主義とやらとの対話にもなってないのになんでこんなにしつこいのか だからPOSIX中心主義の問題点の話をしましょうよw 誰も興味ないのは明らかだろう
ポジキチさえも食いついてないみたいだしな
お前というのには興味はちょっとあるみたいだが、お前はそれを拒否してるしw sedでスラッシュを含む文字列を置換する際に別のセパレーターを使うと思うけど、どの文字を使ったほうがいいとかおすすめってある? 逆斜線を前置すれば別にどんな文字を使ってもいいんだけどね、実は。
まあ印象としては/と|が多く使われてている印象。
Gentoo Linuxを使ってるんだけど,パッケージのコンパイルの時に
流れていくスクリプトを見ていると
sed -e 's/.../.../'かsed -e 's|...|...|'が多い「気がする」。 「|」を使ったものの、正規表現で選択を追加したくなって、区切り文字を変えることもある。
「!」に変えたら(「|」に似てるからw)、先読み否定アサーションを追加したくなって、さらに変えるはめに。
「%」に変えた(「/」に似てるからw)ものの、そのままcrontab(たしか)に書いた結果、エラーになることもある。
結局、「/」のままがもっともマシな気がしてきている今日このごろ。。。 @マークとかも見た覚えがある。
繰り返すけど結局逆斜線でエスケープすればいいだけなので何使っても……って感じ。 斜めつまようじ症候群というやつだな。
うわ、あの本がもう手元になかったw 最近ほとんど使ってないしな。
英語のWikipediaを見ると{}とか##とか!!とかの例が書いてある。 つまようじ大好き症候群だろ
誰だよ変な訳にしたの、とほほか ああそうだっけか。まあ leaning toothpick syndrome だから間違いではないが
やはり公式日本語本が聖典といえるw
どこ行っちゃんただろう、俺のラクダ本。
最近はスクリプトを書く場合はだいたいpython、たまにshって感じだからなあ... 普通に斜線シンドロームとか斜線病で良くね
syndromeは症候群て訳されるけど症候群は違う感じする ダブルミーニングな気がするが傾きと偏愛の2つの意味がある
https://eow.alc.co.jp/search?q=leaning
> 〔垂直な位置からの〕傾き、傾斜◆【動】lean
> 〔〜を好む〕傾向
https://ejje.weblio.jp/content/leaning
> 傾向,性癖; 好み,偏愛 〔to,toward〕.
だが公式につまようじ大好き症候群って書いてるんだから
こっちでいいやろ。斜めつまようじとか意味わからんし。 「leaning」を訳出してるだけなのに、意味わからんとか意味わからん。 >>586
「star」には「星」という意味と「人気者」という意味がある
「star]を訳出してるだけ、スターウオーズは「人気者戦争」だ
と言われても、訳がおかしい、意味わからんとしか言いようがないのと一緒 >>587
じゃあ「リーニングツースピックシンドローム」って言えよ。w >>584
m/ftp:\/\/[^\/]*\/pub\//
をぱっとみ \ を含めて leaning toothpick が多すぎ=単に見た目な感じだけでじゃね
そんな厳密な病気的な意味でなく、なんらかの変わったように見える(もしくは少々異常に見える)状態行動を言うときもあるだろう
「病」と言う場合もあるがどちらかというと揶揄したり真っ向から否定する場合じゃね 難読化を促進してるのは主に \ のせいだし、
/ と \ しかとりあえずその言葉の対象(原因?)でしかないので、斜めつまようじシンドローム の方が合ってるような気がするな。日本語の語感としては変だと思うけどw >>584
>斜線シンドローム
ってレス内にあったのか。俺はそれに+1 (これはネタ)
傾楊子病とかすると古来からの病気っぽくなるw >>592
じゃあ、オレは-1。
原文の小ネタのじゃれた気持ちが出ていない。 その点インテル入ってるってすげーよな
intel insideと逆サイドで韻踏み >>590
そういうときのために
m(ftp%3A//[^/]*/pub/)
って書けるように
処理系のほうが工夫してるんだったら
書かない方が悪い #!/bin/sh
aiuo() {
curl --silent "https://example" | jq -r ".aaa.bbb" 2> /dev/null
}
hoge=""
hoge=${aiuo}
echo "hoge = ${hoge}"
ターミナルでaiuoの中を一行でやるとjqの結果が表示されるけど、
shファイルを作ってやるとjqの結果が表示されずにhoge =しか表示されないのはどこが間違えてますか? awkがシェルスクリプトじゃないのは事実なんだよな
POSIX原理主義はシェルスクリプト以外も使っていいと言いつつ
結局「シェルスクリプトでやる」と主張してるだろっていうツッコミはあるが
シェルスクリプト以外も使っていいからこそ
awkという「シェルスクリプトではない言語」を使っているんだろ?w
だから最初に言った言葉である「awkはシェルスクリプトではない」という事実は変わってない
awkメインのコー ドは「シェルスクリプト」ではなく「awkスクリプト」と呼ぶべきで
POSIX原理主義は「(原則として)シェルスクリプトで実装する」と主張するんじゃなくて
「awkを使って実装する」と主張するべきだってことなんだよ
ちなみにな、POSIX原理主義はシェルスクリプト以外も使っていいのであれば
RubyやJavaなども使っていいということになる
こちらも「シェルスクリプト以外も使っていいが原則としてシェルスクリプトでやる」という主張と矛盾している 少し訂正
× awkメインのコー ドは「シェルスクリプト」ではなく「awkスクリプト」と呼ぶべきで
○ 埋め込みawkメインのコー ドは「シェルスクリプト」ではなく「awkスクリプト」と呼ぶべきで
Pythonのコー ドをワンライナーでシェルスクリプトに埋め込むのと同じ
ワンライナー程度ならまだシェルスクリプトがメインと言えるだろうが
何十行も全体の半分以上も埋め込むなやw >>601
hoge=$(aiuo)かhoge=`aiuo`にすれば? >>602, 603, 606
どうもありがとうございました
()、{}、`の使い分け画像よく分ってないです ( hoge; hage ) コマンドのグループ化(サブシェル内でコマンド実行)
{ hoge; hage; } コマンドのグループ化(サブシェルなしでコマンド実行)
ret=$( hoge; hage ) 標準出力の結果を変数に入れる(サブシェル内でコマンド実行)
ret=`hoge; hage` 上記と同等。POSIXに準拠してない古いシェル用の書き方。ネストできないので30年前から非推奨。
ret=${ hoge; hage; } こんなものはない >>608
`<command>`ってネストできないんだっけ。
ネストしにくいだけで可能ではあるんじゃなかったか。 もうどうでもいいよw
``は30年前から非推奨
四則演算にexprを使うのも30年前から非推奨
$(...) と $((...)) を使うのが30年前から続くPOSIX準拠のトレンド
これを普及させることが今年の目標なw >>612
バックスラッシュかな。バックスラッシュでできるよう
`level1\`level2\\\`level3\\\\\\\`level4\\\\\\\`\\\`\\\`level3\\\`\``
のような
なんか笑うw \ はどういう増加率やねんと思った(level4は一つずつ増やしての手動)ら、2^(level-1)-1
だった
まあ、そんなにネストするやつは居ないだろうで実質level3ぐらいが実用的な範囲か
(もしくはそんなにネストすんなという暗黙的戒めか?w)
でも、遊びでlevel6とかするとやっぱり笑うw
>>614
うん。でも、見方変えるとなんかでかいからペアがわかりやすく...もねえかw さすがにPOSIXを厳守してるので``つかいます。expr使います。
とか言ってるエセPOSIX信者は消えたかね?
あと`#`とかいうハックするやつは○ね
サブシェル起動で遅くなるだろが いつものやつとしか思えないw
自分が間違ったのを異常に誤魔化すような(いつものw)異常なレスだなと見えるぞ >>619
brian に聞いたら used だって言ってた aaa="testtt" #フォルダ名
date_dir=$(mkdir -p $aaa/`date '+%Y%m%d'`) #testttフォルダの中に20210104の作りたい
wget https://example.com/example.txt -P $date_dir
これをやるとフォルダは作られるけどtxtの保存先がカレントディレクトリになるのはどうしてですか? >>625
“$date_dir”の中身を確認してみ
原因を知ることも大事だけど
それを調べる方法を知ることのほうがもっと大事 >>626
echo $date_dir だとなんにも表示されないです
間違えてますねきっと mkdir -p $aaa/`date '+%Y%m%d'`の標準出力見てごらん mkdir が、戻り値を返すか?
An exit status of zero indicates success,
and a nonzero value indicates failure.
echo $?
だろ Ruby では、あるディレクトリ直下のディレクトリだけをソートして、
", "(カンマと空白)でつなげて、1行の文字列にしたものは、
ruby -e 'puts Dir.glob( "*" ).select{ |file| File.directory? file }.sort.join( ", " )'
出力
app, bin, config, db
これをシェルスクリプトでは、どう作るの?
これらを使うの?
ls -d */
find . -maxdepth 1 -type d スレのテンプレにRubyの話を控える(というかほぼ無くす)よう追記しない? >>636
またマウントとれない話題はやめろってか
ダサいなぁ
答えられないならスルーすればいいだけだろ >>637
えぇ……スレチを指摘するのってダサいんだ。
知らんかったなあw 半分シェルスクリプトの質問なんだからスレチでもなくない?
ワイはだるいから答えませんが... >>635
ruby -e 'puts Dir.glob( "*" ).select{ |file| File.directory? file }.sort.join( ", " )'
find * -maxdepth 0 -type d -printf "%f, " | sed 's/, $/\n/'
27文字差 シェルスクリプトが苦手な人が
難しくなったら他言語で書き直したほうがいいってよく言ってるけど
同じ処理を他言語で書き直すとたいていシェルスクリプトより長くなるんだよなw 場合によるだろう
いつもの隙あればマウント取りたがりかw1行目から明らかに
>>633は誰かが遊んだのかと思ったら自らなのか。キチってるなw >>643
誤 >>633は
正 >>634は
すまん、>>633 w
だけじゃなんななので
あの find はそれでいいの??ダメだったら長くなりそうな気がしないでもない ルビキチもポジキチも元気いいなここは
仕事ないのか? ルビキチはしばらく見ないなw
ルビキチに悪影響されての ID:2z9IJIZ8 の流れがちょっとアレだったな >>635
find * -type d -prune | paste -sd, | sed 's/,/, /g' >>642
いろいろと恥ずかしいレスだなw
難しくなったらww
長くなるんだよwww >>640
findをわざわざ使わなくても、ls -1でイケるやろ。
どうせsedで加工するなら。 >>635
\ls -md */ | sed 's:/::g' >>650
コンソールの幅?に依存してまうな。
-w 0も必要。 つーか俺は誰かと違ってPOSIXじゃないからだめなんて言ってないんだけどな
POSIXシェルではどうやればいいかって話をしてるだけで、ウェブアプリとか
シェルスクリプトには向かない作業にRubyやPythonなどの他の言語を使うのは当たり前
もちろんawkも使って構わないが、ただしそれはawk言語であってシェルスクリプトではないとは言うけどなw
何十年も動かしたいプログラムに、何十年も変化しない言語を使うのはまだ理解できるが
そもそも何十年も動かしたいという顧客の要求がなく、むしろ新しい機能の追加や修正を
行い続けるようなものに開発しづらいシェルスクリプトを使うのは馬鹿げてる っていうか,
「PythonやRubyはPOSIX Cで作られてるからPOSIX!」
っていう理論,いや1億歩譲ってそれを認めたとして,
このスレのタイトルを1億回読み直してほしいw
つまり結局,このスレで「POSIXが〜」と限定した場合に言及すべき範囲は
POSIXが(唯一)定めているShell Command Languageおよび(Shell) Utilitiyなんだよな。 > 「PythonやRubyはPOSIX Cで作られてるからPOSIX!」
そんな主張してないぞ
POSIX原理主義がPOSIXシェルスクリプトをメインに開発する!
→でも○○無理じゃん
→シェルスクリプトで書くのは必須じゃない。交換可能可能性があれば使ってもOK!
→(交換可能可能性とか後付作っただろ・・・)
その理屈だと、C言語は交換可能性があるからOKだとして、
C言語で誰かがが作った(例えばユニケージの)独自コマンドは交換可能性がないからNGですよね?
そしてPythonやRubyもJythonやJRubyといった交換可能性があるからPOSIXじゃなくてもOKですね
こういう話ね >>652
COLUMNS=32767 ls ...
でも良さげ? それで標準ライブラリは極力使わないって話にどうしてなるのか
意味不明なのは変わらないな どんな環境でも動くものを作れるここの先輩方は
LinuxだけでなくMacも込で動くように作られますか? LinuxでもMacでも動かしたくなるようなもので
普通に作れるようなものであれば作ってるよ
普通に作れないものっていうのは
例えば、systemdを使うものとかファイアウォール設定を変えるとか
Linuxの環境じゃないと意味がないようなもののことね >>661
ポジキチではないけど,
MacはUNIX v7に準拠してるし,
Linuxは正式に準拠してはいないけどほぼPOSIXに従ってるから,
POSIXの範囲でシェルスクリプトを書いておけば
MacでもLinuxでも動く。
まあそれに「意味があるのか」というのは別の話。
(Goプログラマが「Goで書けどこでも動く!」とか言ってるのと
似たようなもん) ここに書き込む人は大概Linux前提でGNUのツールが前提になってるから
MacにもGNUのツールをどんどん入れれば大丈夫と言う考え方はある
逆に言えばGNU原理主義なのかもしれんがw どれだけ意味があるかって、複数のOS使ってるなら意味有るでしょ? >>664
それはそうなんだけど、Macの場合、結局、フリーソフト使って実現なんだよね
ああ、GNUがフリーソフトだろっていう話じゃなくて
macOSが公式に対応してるわけじゃないって意味ね。
macOSが公式に対応してないからOSのアップデートで動かなかったりする >>666
アポーがグズなことなんか知らん。
だいたいひとまわりくらい古いやろ。 >>664
macosってコードベース的には90%くらいfreebsdのはずだが、gnuは徹底排除抹殺思想のfreebsdとしてどんな気持ちなんだろ…
もちろんライセンス的にクリアしてるんだろうが
まあmacは持ってないんだが(シェル含め)スクリプト写経用に人からコピーさせてもらった、まんじゃろ、とか言ってた頃?
blobじゃないファイルのコメントにfreebsd記載率9割 というかbsd使いは規格とか気にしてない人が多そう(尖った人という偏見)
そもそもコミュニティが小さいので気にするまでもないってのもある
規格を異様に気にするのは、環境が千差万別なlinuxユーザでしょ >macosってコードベース的には90%くらいfreebsdのはず
>まあmacは持ってないんだが
他も無知ゆえの妄想ばかりだな
mac持ってなくても調べればわかるのを調べもしないでのでタチが悪い無知 usrとかbinとかgrep(と-v)してみりゃそうだって分かるだろ、バイナリ部分は公開してない以上分からんとしか言えん 「コードベース」とか範囲が広すぎだろう。バイナリ部分ってなんやねん
単にコマンド(大体はPOSIXにあるコマンド)って話なのか? >>672
えっ。
わからんの?
マジで言ってんの?
さすが信者。w お前の独特の言語言葉なんて知らんわ
usr bin にあるバイナリを調べろと言ってるのか。ちょっとは自分で調べてあんなこと言ってるのかと思ったら、全くなのな
てことは単にコマンドのことを言ってるだけか。コードベースwとか独特の言葉を使うなよ
それなりにオープンソースで公開されてるんだから少しは調べようとしろよ、語るwなら
妄想で語るだけのに さすが信者 とか言われたくないわw 勝手に
les, bus - ATM LAN Emulation service demons
というのが入っているけど、何これ なんか面白いテクニックが某所で紹介されてるな
#!/usr/bin/echo This script is supposed to be sourced like this: .
まあ、macだと/bin/echoだったりするわけだが a="A" b="B" みたいな文字列を渡したら
a変数にA、b変数のBみたいに代入する方法ないかな?
ただし脆弱性が怖いんで、 a="$(cmd)" みたいなものは
そのままa変数に$(cmd)という文字列が入る
そしてスペースとかダブルクォート入れたかったら
a='A " A' とか a="A \" A" とかできるようにしたい >>677
まあ「面白い」というだけで
#!/bin/sh
echo 'This...'
とすればいいだけだがなw ちなみに発言は↓ここ
https://github.com/koalaman/shellcheck/issues/2110
当人の発言によれば,
#!/bin/echoという「シバン」にすることに特に意味はないようなので
「単独で実行されたとき」を判定できればシバンじゃなくてもいい。
それはps(1)コマンドを使った「普通の」方法で達成可能。
まあ「普通」が嫌なんだろうなw >>680
それだとsourceしたときにechoされちゃうやろ。 >>681
psを使った方法は名前を変えられるとだめってレスきとるでw
シンボリックリンクとかな
ちなみにさっき名前にバージョン番号がついたバイナリを落とした所w 「ファイル名を変える」より「/usr/bin/echoがない」ことの方が致命的だと思うんだけどな。
まあ当人がそう思わないんなら(もしかして認識さえしてない?),俺はもう何も言わない。 /usr/bin/echoがないならエラーで落ちるだろ
実行しようとした時に、実行させないのが
目的なんだから、目的は達成できてる >>683
いや,正直「奇抜(そして実装依存)」というだけで,
実用できると思っている理由が分からない。 >>687
そもそも「実用」するようなもんじゃない。
しょせんヘマ避けなので、実装依存なんか問題にならないことは>>686も言ったとおり。
きみ、アホなの? 実用できない癖に実用性は求めるのか…
じゃあファイル名に依存しててもいいじゃん…… 実用っていうのは、echoするって意味だろ
ぱっとみてechoできなければ意味ないじゃんって
勘違いしたんだろうけど、echoするのが目的じゃないんだから実用性はある
なんのためにあるのか少しは考えたら? エコースクリプトという新ジャンルを思い付いたけど大してする事なかった ヘマ避けならそもそも実行権限つけなきゃいいだけじゃね…… シェルスクリプトをググらず書けるようになったやっぱ言語は覚えた方がいいのか
perlとか正規表現の指定しか知らんしまだsedやawkの方が出番あるわ まあ書けないよりは書けたほうがいいのは確かだが、
シェルスクリプトの場合、すでにある便利なコマンドを組み合わせるには
最速の方法なので、その言語を覚えていたとしても使えるようになったほうが良いと思うよ
シェルスクリプトの変わりにプログラム言語を使うと
コードが冗長になって、やりたい作業をささっとこなせない
コマンドの再発明をすることになる >>693
sedはともかく、awkは忘れて、Perlに乗り換えたほうがいいんでは。
つーか、ワイはawkを使えん!w Perlは互換性がなー、と言いたいところだけど
その互換性って主にライブラリの話
awkにはライブラリがない。
じゃあライブラリ無しで比べてみよう
ライブラリがないawkと
ライブラリを使わないPerl
どちらが機能が上で互換性があるだろうか?
おそらくPerlの方が機能が上で互換性も有るだろうな
Perlがawkに劣るのは標準で入ってない環境に当たる可能性が少し高いってことぐらい ifはfi
caseはesac
など、何で最後の単語が逆になってるんでしょうか? parlはawkやsed風に書けるけどあくまで似せてるだけで細部では違うから戸惑ったぞ
awkとperlでは添字がずれるし
sedの/foo/!や/foo/,/bar/はperlじゃできないからな awkはテキスト処理に特化した言語だろ
そもそも土俵が違う >>696
もう答えが出とるやん。w
ワイもそのとおりやと思う。
違うとするなら、昔のサーバーよりも、最近のコンテナのほうがPerlを外したくなるやろな、てところ。
意外とsedの価値が上がってる気が。 ちなみに、互換性ならむしろPerlのほうが?
環境に依存しないワンライナーを書くならsedよりperlの方がいい - Qiita
https://qiita.com/takc923/items/8654d69008e921c9c9fb >>697
When keywords are used, generally the reversed character sequence of the introducing keyword is used for terminating the enclosure
っていうだけ、terminating the enclosure のために reversed character sequence でいいんじゃねっていう発想なだけだろう どの道具を使うべきかは解決すべき問題が与えられた時点で決まる
どれが優れているかなんて一般論で言うのは無意味だろ doブロックの終了はなんでodじゃないんだろう。
odコマンドとぶつかるから? >>699
そのawkをBEGINだけ使って、Perlのような使い方をするコードを
シェルスクリプトだって言い張ってる
awk言語プログラマだっているんですよ! 長いマルチバイトの文字列をきりのよい文字でカットすることはできますが
動画を落としていますがファイル名はタイトルから取っています
しかし昨今タイトルが長い動画があるため規定以上はcutコマンドでカットしていました
問題がありながらもそれなりに使えていたのですが
先日から落とせてない動画があり調べると
文字の途中でcutされてバイナリ文字になっているためか
samba経由で見れていないのが原因でした
(ls + grepでgrepがうまく動作していない問題もありました)
cutコマンドを調べると-bではなく-cを使えば将来的にいいようなのですが
現状-bと-cの動作は同じでした
このような場合にどのように対応するべきでしょうか 続き
【現状の実装】
cut -b 1-220 -n
【変更してみた実装】
cut -c 1-220 -n
【途中に加えている編集】
sed -e "y/!’@#$%&−+=_;/\!'@#$%&-+=_;/
※この編集のために以下の文字列の「!」が「!」になっています
これ以外に英数字などのASCII文字を変換をしていますが影響しないため割愛します
【元の文字列】
XXXXXXXXXX_たとえばラストダンジョン前の村の少年が序盤の街で暮らすような物語 第3話『たとえば「なんでもします!」と言われりゃ悪い気はしないけどそこはダメって言わなきゃいけないようなジレンマ』
【cutの結果】
XXXXXXXXXX_たとえばラストダンジョン前の村の少年が序盤の街で暮らすような物語 第3話『たとえば「なんでもします!」と言われりゃ悪い気はしないけどそこはダメって言わ?
※最後は「?」になっていますがls上の表示であり実際は違うようです
なお最終的には上記の文字列に拡張子を付与しています cut -b 1-220 | iconv -f utf-8 -t utf-8 -c バイト数ではなく、見た目の長さ(全角(?)が2文字分)で切るでいいんだったら
colrm 221
かな ext4は255バイトでNTFSはUTF-16で255文字だっけ?
ext4は日本語だと85文字ぐらいしかないんだよな
IVSをフルに使われたら32文字にまで減るというw
それに対してWindowsは255文字 ロケールに対応していれば文字数で切ることは出来るかもしれないけど
それだと最大に長さにするのは難しそう
かと言ってCロケールとかにすると文字の区切りがわからない
文字として扱いたいけどバイト数で長さを切るって難しいな
なんでext4ってバイト数制限なんだろ? やるとしたらUTF8ロケールにして
N文字・・・何バイトか調べる
N-1文字・・・何バイトか調べる
って繰り返して、最大のバイト数に入るまで
1文字ずつループで削るしかないのかな? さりげなく間違いを入れて正しい答えを書いてもらう、そんなのには釣られんから ファイル1から時定数のマルチバイト文字数をファイル2へ出力するプログラムを書いてみたよ
https://www.stdput.com/dat/pg/cutstr.zip
手抜きでutf-8限定だけどね >>719
C言語で独自実装してるからやり直し
--------
引数のファイルから指定した文字数をファイルへ出力します
コンパイルを行う為にg++が必要です
g++をインストールした後にcomp.shを実行して下さい
# apt install -y g++;
$ cd /(cutstrのディレクトリ)/;
$ sh ./comp.sh;
--------
実行ファイル
pg_cutstr.out
引数
-i 対象とするファイル
-n (出力する数)
-i 結果を出力するファイル
--------
実行例
./pg_cutstr.out -i /tmp/input.txt -n 8 -o /tmp/output.txt
-------- bashの機能をざっと見ていたらこんなの見つけたんだけど
http://manpages.ubuntu.com/manpages/bionic/ja/man1/bash.1.html
/dev/fd/fd
fd が有効な整数ならばファイル・ディスクリプター fd が複製されます。
/dev/stdin
ファイル・ディスクリプター 0 が複製されます。
/dev/stdout
ファイル・ディスクリプター 1 が複製されます。
/dev/stderr
ファイル・ディスクリプター 2 が複製されます。
/dev/tcp/host/port
host が有効なホスト名またはインターネットアドレスで port が整数のポート番号
ならば、 bash は対応するソケットに対して TCP 接続のオープンを試みます。
/dev/udp/host/port
host が有効なホスト名またはインターネットアドレスで port が整数のポート番号
ならば、 bash は対応するソケットに対して UDP 接続のオープンを試みます。
インターネットアドレスで接続できるんだーは、これみてなんとか使い方わかったんだけど
https://suztomo.hatenadiary.org/entry/20080430/1209574954
/dev/fd/fd これってどうやって使えばいいの? 2> /dev/fd/1
2> /dev/stdout
2>&1
等価だろう。大体は 2>&1 だろうけど、2>&1 じゃなく上の方がとかは
out=/dev/null # or /dev/1(/dev/fd/stdout) or /path/to/file, etc
2> $out
とかしたいとかかな。0/1/2以外は exec で自分で(FIFOとか)割り当てたのとか /dev/fd/100 とかできるんじゃないかと思って もしかして/dev/fd/fdを使って新しいファイルディスクリプタを作れないのか? $ a=$(printf '\0\n')
-bash: 警告: command substitution: ignored null byte in input
っていうエラーが出るんだけどさ、これだとでない
printf '\0\n' | read a
なんでreadだとこのエラーはださないんだろう?
誰か理由わかる? >726
それは「警告:コマンド置換:入力のヌルバイトを無視しました」を取り除きます
という内容なので全くの無関係です なぜこんな簡単な質問が理解できないのか、疑問に思います。
質問は明らかにこれです。
> なんでreadだとこのエラーはださないんだろう? readはコマンド置換じゃないから。
なんでこんな単純なことが理解出来ないのか、理解に苦しむ すごいな。本当に質問を理解できてなかったよ。
なぜコマンド置換ではない場合は、エラーを出さないことにしたのか?
という質問だろ >なぜコマンド置換ではない場合は、エラーを出さないことにしたのか?
昔は出ていたんですか? ふう・・・昔はどうだったかなんて>>726を読めばわかるだろ
話にならない だったら質問がおかしいだけでは?
ほんと話にならないw 言ったな?なら質問のどこがおかしいか指摘できないなら
お前が間違ってることになる。はいどこがおかしいか言ってみて まあまたいつものやつだろうな。他人の話を聞かないで
自分の思い込みで発言して、指摘されたら逆切れ ソース読んでも意図はわからんだろうな
元々あったが無効に(#if 0)になってたのが有効に(#if 1)なったていうだけっぽい、ソース上だけでは なぜこんな簡単な文章を最後まで読まずに無関係だと決めつけるのか、疑問に思います。 >>738
やっぱ意図はわからんか
>>739
意図はわからんだろうなと言ってる人がいますが、
それで意図の話とどう関係するんですか? > なんでreadだとこのエラーはださないんだろう?
>なぜコマンド置換ではない場合は、エラーを出さないことにしたのか?
ある意味認識が逆。でなくて、単に、
コマンド置換とこだけ(そもそもコード上でもあった)メッセージを出すようなった
というのだろう
そういう認識を持っていた(本当に持っていたかは知らんけどw)ら、お前に対して言っているのも間違いではない
単なるちょっとした行き違いとしろよ。お前の質問文がズレてるのもあるしそれなのにお前から挑発してるしw、何で
コマンド置換とこだけ(そもそもコード上でもあった)メッセージを出すようなった
のかはちょっと調べた範囲ではわからなさそうだからな=そのせいでバグとされて対応に追われてるのがわんさかあるのに、何でbash 4.4(?)からそうなったのか言及されてるのはなさげ パイプは、エラーメッセージを出したらダメ。
後ろにつながらない
出ていても、標準出力には出せない。
結果を、後ろに標準出力で渡すから
標準エラーか、エラーログに出さないといけない >>742
> コマンド置換とこだけ(そもそもコード上でもあった)メッセージを出すようなった
どっちでもいいわw
なんでコマンド置換「だけ」だしたのか?その意図がわかる?
言っとくけど質問は「だけ」だからな
「だした」理由なんかわかってる
なぜコマンド置換のとこ「だけ」なのか >>743
標準出力にエラーを出すなんて発想は最初からなかった
標準エラー出力に出すに決まってるよ >>745
お前は人の文の意図さえ全く読めないのか
てか、また自分の非/ミスは全く認めないその文からは...
そんな「知ってた」はずなら、質問は的確だっただろうに、そのごまかしからもやはり...
だったら、終了だな。すでに>>742って書いてるからな
お前がやはりいつものやつだったらいつもの通り読めないんだろうけどw >>748
> なんでreadだとこのエラーはださないんだろう?
> 誰か理由わかる?
この「質問」に最初に答えたレスはどれですか? どっちか判断つかなかったのは>>735があるからなw
いつものやつ本人だったら本当によくいうよだよ、ガイキチ
じゃないんだったら、自分の>>735をよく噛みしめるんだな、>>745がまさしくお前のいう>>735だろうにww > すでに>>742って書いてるからな
>>725の質問の後、>>726-741の間で質問を理解してないと言われて
ようやく気づいて>>742で答えたってことですよね? 散々指摘されてようやく
>>742で、readでこのエラーはださなかった意図は
(俺には)わかりません。だからなぁ
>>742より
> コマンド置換とこだけ(そもそもコード上でもあった)メッセージを出すようなった
> のかはちょっと調べた範囲ではわからなさそうだからな >>749
>コマンド置換とこだけ(そもそもコード上でもあった)メッセージを出すようなった
>そういう認識を持っていた(本当に持っていたかは知らんけどw)ら
>>726もそれに当たるだろうし、以下の>>729なども返しとしてはそんなに間違っていないなw
てか、そのズレてる質問、間違った質問をまだ繰り返すのだな??w
>>751,752
やはり、いつものお前か?ああ、やっぱりお前か。ガイキチ確定かよ(?)w > >>726もそれに当たるだろうし、以下の>>729なども返しとしてはそんなに間違っていないなw
大間違いじゃん。
>>726の答え
質問 AとBが候補として考えられるのに、Bだけやった「意図」は?
答え Bだけやりました
>>729の答え
質問 AとBが候補として考えられるのに、Bだけやった「意図」は?
答え AはBじゃないから
「意図」を全く答えてない
0点だろw 散々指摘も何も、俺は>>738からだからな。単に>736のレスに興味持ってそれに対してからの
お前の疑問は別に否定してないのになあwどっちの言い分もまあわかるっていう感じなw
なんかまた妄想のストーリー描いているようだけど、トンチンカンなレススンア >>754
すでに書いたろ。やはり読めないようだけど
お前の欲しいレスだけくれなんてお前の都合なんて、レスを書くやつに強制しても無駄だぞ?お前自体してないんだからww > すでに書いたろ。
それはさんざん質問を理解してないと言われた後な >>754で書いたけど
>>726も>>729も的外れだってことは否定しないよな?
そういうことだよ。否定しないくせに否定するなとw >>755って書いてるのに未だにw
また明らかに自分のミスを誤魔化すためだけのレスだな。しょうもない だから「質問を理解してない」って話題はここなわけ
728 自分:デフォルトの名無しさん[sage] 投稿日:2021/02/01(月) 03:00:33.65 ID:45FIRZtx [2/2]
なぜこんな簡単な質問が理解できないのか、疑問に思います。
質問は明らかにこれです。
> なんでreadだとこのエラーはださないんだろう?
729 名前:デフォルトの名無しさん[sage] 投稿日:2021/02/01(月) 03:25:24.42 ID:srTHfdLe [1/4]
readはコマンド置換じゃないから。
なんでこんな単純なことが理解出来ないのか、理解に苦しむ
お前が出てきたのは後からじゃん。
後から来て質問と無関係の話をしてるやつを擁護してくるなと その本人が本当にはどう思っていたかは知らんが>>753に書いた通り。そんなお前の都合の良い方だけに与しない
別に間違っているとは思えなく読める。読めない/誤魔化したいだけのお前にはわからんだろうが
また、>>750って書いてるのに、まだ続けるのか。さすがだな...w
また誤魔化すだけの話題変えるしなwwガイキチの粘着質は尽きないな なんつーか、質問がはっきりしてるのにその質問を無視して
アホを擁護するとか、まあいつもの流れだよなぁw 質問に答えるだけでいいんやで?
それ以外の話はお前とは関係ないやろ?
質問に答えてあとは黙ってればいいだろ?
本当にお前がしたいのは、質問と関係ない話をして
日頃の鬱憤でも晴らしたいんか? どっちの言い分もまあわかるっていう感じなだからな。また質問がズレてるとおも言ってるしな(それが元凶だろうという意味だぞw)
全然人のを読めないのな
どういうオチなのか知らんがよく>>750なんて書けたなあっていうだけのオチだなw >>763
よくいうよwww
まあ素晴らしいオチとしておくよ。別に笑いを誘ったわけじゃないんだろうけどww 書いてるだろうに...わからんのか。かやはりお前は読めないやつだな...つくづく呆れるw 書いてる言ったからには、その書いてるレスを引用する必要がある
そうすればお前の主張する「書いてる」が間違いだとわかるだろう お前は偉そうなくせに教えてくれくんだなあ...つくづくそう思う
そんなヤツはどう扱われる/見られるなんて普通知っているもんだが、さすがだなw
誤魔化そうとすればするほどドツボなのも、さすがすぎてすげえよw それがお前がどうしてもレスしたかった事なんだよな?w >>730にこう書いてあるねぇ
>なぜコマンド置換ではない場合は、エラーを出さないことにしたのか?
コマンド置換じゃないから。>>729で書いた時点で話が終わってるはずなんだが。
ごめんなさい言えばいいだけなのに、20近いレスで
言い訳ばかり書いてるような頭じゃ理解できないんだろうな >>773
なんでコマンド置換じゃないときはエラーを出さないようにしたの? コマンド置換だしたからだろ?
どちらもnullがあったらかってに除去するという処理をしていたのに
なぜかコマンド置換の場合だけエラーを出すようにした
それはなぜか?その理由が>>729に書いてあると言ったよね? >>776
readはコマンド置換じゃないから。
って書いてあるじゃないか。 ignored null byte処理が実装されたのは、
コマンド置換: 2.05-alpha (この時点ですでにメッセージを出力する文もあることはある)
read: 4.3 (メッセージを出力する文はまだない)
コマンド置換でメッセージ出力するようにしたのは 4.4-betaからで、readでメッセージを出力するのは時期尚早なんだろうw
readとコマンド置換が同じじゃなくてはというようなことを言い張ってるが、bashの中の人は別に同じとは思ってないんだろう
他に構文解析かな??のとこでも同じように ignored null byte を出力する文はあることはあるしな(言い張ってるゼロイチ論ではこっちもじゃないのか?)
>まあまたいつものやつだろうな。他人の話を聞かないで
>自分の思い込みで発言して、指摘されたら逆切れ
どの口いやどの頭でこんなことほざいたんだか。いやあの頭だからか >>778
コマンド置換ではないreadは出さない「理由」はなんですか?
が質問ですよ?
readで出さない理由はわからないけど
readはコマンド置換じゃないから出しませんでした。
だと「理由はわからない」が答えになります。OK? >>779
あなたは時期が来たらreadでエラーを出すべきだと思いますか?
逆にそう思わないですか?
出すべき or 出すべきでない、その理由は何でしょうか?
知りたいのは「理由」です。
いま出てないから出てないんだーとかいう
現状は最初からわかってます。 こっちはechoを使ってるのに、こっちではprintfを使ってる理由はなんですか?というレビューに対して
printfはechoじゃないから、じゃ全く答えになってないんだよな
そんな答えばっかり返してるやつはアスペだと思う
レビューでインデントはスペース4にしなさいと言っても
こっちのスクリプトは4にしなさいと言われなかったからとか言いそうw 読めなさすぎだろう、自分の頭で物事を考えなさすぎだろう
問題の本質は、
何で コマンド置換のとこのソースコード中に昔から元々あったメッセージ出力を出すようになったのか
でしかない。readとか関係ない。ソース見れば大体その雰囲気がわかるだろう
質問するなら、
どうして4.4からコマンド置換のとこでメッセージ出すようになったか
だろう。readに主題置いて聞かれたら、readはコマンド置換じゃないから という返答は特におかしくもないだろう
レビューとか下手な例え話してんじゃないよ >>783
本質って、最初のレス読めばわかるだろう?
>>725
> $ a=$(printf '\0\n')
> -bash: 警告: command substitution: ignored null byte in input
> っていうエラーが出るんだけどさ、これだとでない
> printf '\0\n' | read a
>
> なんでreadだとこのエラーはださないんだろう?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 誰か理由わかる?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
問題の本質は「なんでreadだとこのエラーはださないんだろう?誰か理由わかる?」
以外にありえないよ。勝手に文章に入れ替えるの"だけ"は明らかに間違いだからね > だろう。readに主題置いて聞かれたら、
readは主語ではありません。この文章は日本語でよくある主語の省略です。
主語を入れるなら
「なんで(開発者は)readだとこのエラーはださないんだろう?」
となり、主語は開発者です。 お前の言ってるのはトンチンカンな質問の本質(??)wだろう
問題の本質の意味が違う、てか読めねえの?普通に読めそうだと思うんだがな
トンチンカンな質問の発端がメッセージが出ることなんだろ?その疑問の発露となる問題の本質だよ、故に
何で コマンド置換のとこのソースコード中に昔から元々あったメッセージ出力を出すようになったのか
だよ
繰り返しreadではと言っておいて何を言っているのか。本当にお前は懲りないな 文章は
「read "では"」です。
「read "が"」ではありません。
この文章を見て、readを主語だと思うのは日本語不自由な証拠です。
「コマンド置換(主語)がエラーを出している」
「read(主語)はエラーを出さない」
と勘違いしちゃったんでしょうね。
「開発者はなぜコマンド置換ではエラーを出すようにし、readでは出さなかったのか?」
という文章だと読めなかったんですか?
やっぱりアスペなんだろうな どうして4.4からコマンド置換のとこでメッセージ出すようになったか
開発者の気分だろうwもしくはそこの部分で開発者に何らかの注文があったんだろ
コマンド置換の部分だけの修正(ソースコードからは気分としか読めないけどw)なのでコマンド置換だけの話、readは関係ない
readに主題置いて聞かれたら、readはコマンド置換じゃないから という返答は特におかしくもない
それだけの話だな
色々読めないくせに、なんか言ってる
正直何言ってるのとしか思えない。マジでそれで自分は日本語が不自由ではないと思っているなら、日本語が不自由すぎだろう。そりゃ色々読めないだろうな >>788
やっぱりなw お前が>>787に反論しなかったのが答えだわ
readは主語じゃない 質問文 「なんで(開発者は)readだとこのエラーはださないんだろう?」
>>788のの解釈
質問分の意味は「どうして4.4からコマンド置換のとこでメッセージ出すようになったか」だな!
これだからもうw アホな日本語講釈に事細かに反論するのも馬鹿らしいだけなのに
>>728
質問は明らかにこれです。
> なんでreadだとこのエラーはださないんだろう?
こう書いたのはどこぞの誰なんだかな。馬鹿馬鹿しい
以下ずっと。
1.コマンド置換とreadは同じであるはず/あるべきと思った
2.それが間違いだったのに自ら先に返答レスを馬鹿にした
この2つの間違いを決して認められないだけで、下手くそな小手先な誤魔化しを延々と繰り返すんだろうな
ますます馬鹿を晒してるだけなのに > こう書いたのはどこぞの誰なんだかな。馬鹿馬鹿しい
↓これ
> 725 自分:デフォルトの名無しさん[sage] 投稿日:2021/02/01(月) 01:32:52.47 ID:/mOfS3Su
> $ a=$(printf '\0\n')
> -bash: 警告: command substitution: ignored null byte in input
> っていうエラーが出るんだけどさ、これだとでない
> printf '\0\n' | read a
>
> なんでreadだとこのエラーはださないんだろう?
> 誰か理由わかる? お前は馬鹿すぎて話にならんぞ
だったら、
readに主題置いて聞かれたら、readはコマンド置換じゃないから という返答は特におかしくもない
でしかないだろう
お前の小手先ごまかしがキチガイすぎて頭痛くなってくるぞ >>794
誰が言ったのか書いたのに、無視すんの?
都合が悪いレスは無視だもんねw なに言ってるの?マジキチすぎ
>誰が言ったのか書いたのに、無視すんの?
揶揄とかわからんのかw それに対しての>>794がわからんのか。レスする前にちゃんと読み返したほうがいいよ って言うくせにwww
どうして4.4からコマンド置換のとこでメッセージ出すようになったか
開発者の気分だろうwもしくはそこの部分で開発者に何らかの注文があったんだろ
コマンド置換の部分だけの修正(ソースコードからは気分としか読めないけどw)なのでコマンド置換だけの話、readは関係ない
readに主題置いて聞かれたら、readはコマンド置換じゃないから という返答は特におかしくもない
1.コマンド置換とreadは同じであるはず/あるべきと思った
2.それが間違いだったのに自ら先に返答レスを馬鹿にした
この2つの間違いを決して認められないだけ
でしかないな 「どうして4.4からコマンド置換のとこでメッセージ出すようになったか」
それはどれが言ったの?w
質問は明らかにこれです。
> なんでreadだとこのエラーはださないんだろう? レスする前にちゃんと読み返したほうがいいよ
www
阿呆らしい...いやアホだけど だから質問は「なんでreadだとこのエラーはださないんだろう?」だろ
これに対して反論なかったんだが?
誰が4.4とかいい出したのか。お前か?
いつから出したとか誰も気にしてないんだが
はい、この質問に答えられる? レスする前にちゃんと読み返したほうがいいよ
としか言いようがない
1.コマンド置換とreadは同じであるはず/あるべきと思った
2.それが間違いだったのに自ら先に返答レスを馬鹿にした
この2つの間違いを決して認められないだけ
だけでよくそんだけ小手先の誤魔化しを続けられるな。マジキチすぎだろう > 1.コマンド置換とreadは同じであるはず/あるべきと思った
思ったとか、それはお前の感想でしかない
> 2.それが間違いだったのに自ら先に返答レスを馬鹿にした
「それ」とはお前の感想である ほらね。俺が言い返しても、
こいつは言い返してこない。
言い返せないというのが正しいがw すぐにそういう馬鹿なこと言うし
アホな小手先の誤魔化し文になんで正面からいつまでも付き合わなきゃならんねん
アホな小手先の誤魔化し文という自覚がないのか?マジキチすぎすぎだろう それにコマンド置換とreadが全く違う動作をすると思ってそうだよなw
違うところがあるのは知ってるからそれは聞いてない
同じ動作をするところがあるのを、はたしてこいつは知ってるんだろうか?w
ま、また関係ない話をしてごまかすだろうな 後付けて決めつけが始まりましたwww
ソース読んでるし、他のシェルで試してもいるし
イマイチ何のことかだが、こいつだと言い出しそうなのは大体推測できる
こんなこと言い出したのもついさっきわかったとかだろうな。違うか?w だいたいさぁ command substitution: ignored null byte in input を出すなら、
read: ignored null byte in input も出すべきだって思うだろ
これに関する動作は同じなんだから
多分それも知らなかったんだろうけどな レスする前にちゃんと読み返したほうがいいよ
www
いい加減怒るヤツ出るだろうし、誤魔化しに付き合うのももういいってので
どうして4.4からコマンド置換のとこでメッセージ出すようになったか
開発者の気分だろうwもしくはそこの部分で開発者に何らかの注文があったんだろ
コマンド置換の部分だけの修正(ソースコードからは気分としか読めないけどw)なのでコマンド置換だけの話、readは関係ない
readに主題置いて聞かれたら、readはコマンド置換じゃないから という返答は特におかしくもない
1.コマンド置換とreadは同じであるはず/あるべきと思った
2.それが間違いだったのに自ら先に返答レスを馬鹿にした
この2つの間違いを決して認められないだけ
というだけのお話でしたとさw > どうして4.4からコマンド置換のとこでメッセージ出すようになったか
誰もそんな事気にしてない > 1.コマンド置換とreadは同じであるはず/あるべきと思った
同じところがありますね。 もうネタバレしてやると
コマンド置換とreadは、どちらも ignored null byte in input は同じなんですよ
どちらも入力のnullバイトを無視してる >>779ですでに書かれてることを何を一人悦に入っているのだか
すでに書かれてることを、何自分は知ってるお前(ら)は知らないと言えるんだか
>コマンド置換とreadは、どちらも ignored null byte in input は同じなんですよ
ちょっと違うんだなあ。さてどう違うでしょう?ww 違いはありません。どちらも同じように ignored null byte in input します。
英語わかる? 入力のNULLバイトを無視するって書いてあるんだよw ふふ〜んwww
「ちょっと違う」ことは知らないということね 1. コマンド置換とreadはどちらも入力のNULLバイトを無視する
2. 質問は「なんでreadだとこのエラーはださないんだろう?」
これだけなのにreadが主語だ!とか理由わからないことを言って
ずーっと自分の勘違いをごまかしてる >>815
「入力のNULLバイトを無視する」は同じですといいました。
それ以外の点では違うところがあると>>805ですでにいいました。
> 違うところがあるのは知ってるからそれは聞いてない
お前のターン(笑) はい出ました、また話題を変えての堂々巡り巡り
レスする前にちゃんと読み返したほうがいいよ
www
一人でやってなさい。じゃね 逃げてないよぉ
他の人に怒られるのが嫌なだけだぞw本当にお前は自分がどれほどだと思ってるねん 質問者おいてけぼりだと思ってるやつがいるらしい
そんなやついないだろう 反論できなくなって単発IDを出し始めたぞw
>>823とか>>825とか $find . -type f -name '*.mp4' -exec sh -c "echo /Applications/Safari.app " \;
/Applications/Safari.app
/Applications/Safari.app
$find . -type f -name '*.mp4' -exec sh -c "echo $dirname /Applications/Safari.app " \;
/Applications/Safari.app
/Applications/Safari.app
$dirname /Applications/Safari.app
/Applications
どうして2番目の例ではdirnameが作用していないように見えるのですか? $dirname /Applications/Safari.app
だと、dirnameという変数を展開しようとしてるだけだろ
dirnameというコマンドを実行するのではなく
コマンドプロンプトのとちょっと見分けづらいのでちゃんとスペースを置くべきだな さっぱりわからんなw
動作確認の途中なんだろう。findしても同じ結果出すだけだしな
そのうち {} とか入れたりするんだろうが、
実行したいなら $() だろう
-exec sh -c "
は
-exec sh -c '
でないとマズそうマズいだろうな
な感じかなあ ${〜} だろ
echo ${dirname}/Applications/Safari.app パラメータ展開よりbasename/dirnameコマンドのほうが分かりやすいね
~$ DIR='/ChonChon/Chon.bak'
~$ basename $DIR
Chon.bak
~$ echo ${DIR##*/}
Chon.bak
~$ basename $DIR
Chon.bak
~$ echo ${DIR#*/}
ChonChon/Chon.bak
~$ echo ${DIR##*/}
Chon.bak
~$ echo ${DIR%/*}
/ChonChon
~$ echo ${DIR%%/*}
~$ dirname $DIR
/ChonChon ありがとうございます
変数になっていることに気づいていませんでした
find -exec sh -cで複数コマンドを扱うのは諦めforを使って解決しました
>>833 スペースをどう置くとどう見分けやすくなりますか?
>>834 質問に関係ある部分だけ抜き出したので意味不明なものになっています >>837
わかりやすさ vs 実行速度の話だね
さくっとコマンド入力する時はbasenameでいいけど
シェルスクリプトであればパラメーター展開のほうがいい >>838
$ find . -type f -name '*.mp4' -exec sh -c "echo $dirname /Applications/Safari.app " ¥;
$ dirname /Applications/Safari.app # sudo apt install xclip
CLIPB=$(xclip -o)
echo $( basename $CLIPB ) Ruby なら、glob を使う
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/*.csv"
Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.each { |full_path| puts full_path }
出力
C:/Users/Owner/Documents/a.csv
C:/Users/Owner/Documents/b.csv シェルスクリプトも、Windows 10, WSL2, Ubuntu 18.04, VSCode でやってる
Ruby は、Linux用・Windows用の両方を入れてる >>845
久しぶりだけどなw
なんて言われてるかは上の方であるな
トンチンカンなレスしてるとこからもトンチンカンな承認欲求なんだろう Alpine?busyboxってコマンド追加した場合の競合どうなってるんですかね?
たとえばdateがGNU版と挙動が違うのでcoreutils追加したんですけど
元々/bin/dateだったのが追加後も/bin/dateのままなのに呼び出されるのはしっかりcoreutilsのに変わってます
macではdateとgdateで使い分けられたのでモヤモヤします 汎用ではなくカスタマイズした環境前提だからそんなの気にしない
置き換わっても置き換わるのを知って作るそういう独自の環境を自ら望んで作る >>849
ディストリの方針次第。Debianとかだってvim-tinyを入れるか
通常のvimを入れるかで呼び出されるvimが変わる
どちらを使うかの切り替え機能も持っている
パッケージで入れる分には、入れても動作するように作られてる
パッケージで入れて壊れたらそれはディストリのバグ
Debianなんかはbusyboxを入れてもデフォルトで置き換えたりしない
alpineはbusyboxの方がデフォルトなんだから、それで動くように作られてる
それをcoreutilsに変更しても動くように作られてるだろう
macの場合、gdateを入れるのはサードパーティのHomebrew
Apple社と一切関係ないフリーソフトで、Appleは動作保証もしてないのだから
Homebrewはデフォルトで置き換えたりしない。壊れる可能性があるから
dateを置き換えられないだけで使い分ける方が便利なわけではない
そもそもbusyboxはcoreutilsのコマンドと比較して一部の機能が
実装されてないだけで、実装されてる機能に関しては互換性があるように作られてる
しかしMacのdateはBSD版なのでgdateと互換性がない 超高速なシェルって登場しないもんかね?
JITエンジン搭載して最適化とかガシガシやるようなやつ >>853
それはスクリプト言語の高速化、とはちがうのけ? >>854
お前の言うスクリプト言語の高速化が何のことかわからんって >>855
各自適当に当てはまると思うのを挙げてもらえばいいと思ったんだがw
じゃあ例えばPythonの各種実装でいいけども。
そしてJITだけが高速化の技術ではないけども。 超高速なシェルって〜という質問に対して
スクリプト言語の高速化とは違うのけと言われてもね
飴がほしいに対して
キャンディーとは違うのけと言うようなもんだよ
お前は何がいいたいのか 思慮が浅いからわからんのだろう
思慮が浅いからトンチンカンな疑問が湧くのだろう >>857
じゃあ最初から「ちがうのけ」に対して「ノー」と言えよw
どうしてもシェルじゃないといけないのかの確認だったのだが。
もうどうでもいい。 各自適当に当てはまるといっておきながら何を言ってるんだ?
(俺の定義に当てはまるものは)ノーだ
これでお前は何のことかわかるのか? いやお前がなんだが
いつものやつもそういうレスを前にいくつかしてたからなおだな じゃあ、そういうように見えるから気をつけたほうがいいな
なぜかいきなり喧嘩腰になる>>857とか、全然意図を読めずにまだマウント取るのがメインのような>>860とかな
本当に違うんだったら、すまんかった。本当に違うなら 超高速なシェルって言ってもどこを高速化したいのか分からんね
他のスクリプト言語と違ってプロセス起動を平気でやる性質があるから
JIT実装したところで、ねえ…… >>865
>本当に違うんだったら、すまんかった。本当に違うなら
くっワロタ >>866
だよな
だから誰も必要としてないから誰も作ろうともしない、
シェルスクリプトの長い歴史から見ても
変わった人(いい意味で)がやろうと出ても企画倒れかな デーモン起動とかにも使われるシェルスクリプトは、速さよりもちょっとでも軽いほうがええやろ。
JITなんかにメモリを使う余裕はないな。 デーモンとかに使うのは素の/bin/shで、言う通り軽い方なのが採用されてるだろう
JIT云々はそういうのではないのだろう。今あるbashとかzshとかそういう方向の シェルスクリプトの高速化って結局、exprに対する$()みたいな、外部コマンドの組み込みコマンド化が原則になると思うけど、
それで行き着く先ってPerlでしかないよね
まあRob Pikeの言う通り計測しろって話ではあるので、ボトルネックが実際fork/waitじゃなければまったくの的外れだけど >>871
JavaScriptの言語仕様を見ればわかるけど
JavaScript自体ではファイルの読み書きはできないんだよ
つまりI/Oを伴う機能は言語仕様としては本質的に不要と言える
外部コマンドなんて殆どがI/Oなので、それらを組み込む必要はない
Perlは多数組み込んでるので良くない
JavaScriptと同じように、I/Oを必要としないものは
シェル組み込みとして、メモリ計算処理を高速化すればいい
例えばメモリだけでできる単純な値比較や計算だけでもシェルは遅い >>874
違うけど、お前はいつもの「ポジキチと争ってるやつ」ってことは確定かなw 争ってるがどこまでを指しているのかわからんが、反論してるのは複数居るだろう
確定しても意味なさげw >>873
ブラウザというホスト環境にのせるために考えられた言語だからI/Oがないだけ
ホスト環境がI/OやEvent Loopを補完しないと動かないし役に立たない
そういう種類の言語の仕様にI/Oがないからといって
一般的なプログラミング言語仕様にI/Oが本質的に不要なわけない
I/O無しではどんなプログラムも役に立たないから JavaScriptは元々はブラウザ上で動くが発端だからな
勝手にどこぞからロードしてユーザの意思に関係なく勝手に動くプログラムだからな
ローカルファイルにアクセスなんて自由にできたらどうなるか火を見るより明らか
ていうのがあって、何言ってんだかなという>>874じゃないのかな。知らんけどw >>880
だから、#includeだったりリンカオプションだったり、めんどくさい準備が必要なんだけどな。 C言語を持ち出すのはアセンブリに無いと言っているようなもんだな
どういう意味かわかるかな? >>885
わからん。w
自分でもわかってないやろ? アセンブリ言語に無いのは当たり前なのはわかるね?
でもアセンブリでもファイルI/Oはできるよね?
C言語はアセンブリに近しい言語だというのはわかる?
だったら「言語仕様」としては無いのは普通と言える
アセンブリでファイルI/Oはアセンブリで記述したライブラリ(サブルーチン)を用いるのと同じように
てか「言語仕様」としては無いが、原典である K&R C でもすでにファイルI/Oに関しては記述があるし、
それに則っての標準としてのライブラリが「必ず」あるだろうから、言語仕様としてないあれはライブラリというのは無理筋だな
プログラミング言語だからとどれも一緒の扱いにするのが間違いでもあるな >>887
>それに則っての標準としてのライブラリが「必ず」あるだろうから
ああ、無いのもあるか。有名なOSで
まあ、そういう独特なのも独特のファイルI/Oは必ずあるってことでw >>885
例えば8086のOUT命令はアセンブリにないことになってるの? >>887
ただの決めつけを根拠にしているから、理屈があやしいな。w
まあ、おまえはまず「フリースタンディング環境」について調べろ。
IOはあるのが当然、ではない。 >>889
OUT命令ってなんなのか知ってるのかっていう
対象はチップのポートだぞ
>>890
そのフリースタンディングでもフリースタンディングではI/Oは無いとは言ってないだろ
C言語の元といえば K&R C Program Language であり、それに標準ライブラリはあると書いてある
ないとこは標準ライブラリがない環境でCを持ってきてるある意味派生であるはずの標準ライブラリが無いだけだな 初版とかどうなのかと思い探したらあった。いいないんたーねっつは
CHAPTER 7: INPUT AND OUTPUT
Input and output facilities are not part of the C language, so we have
de-emphasized them in our presentation thus far. Nonetheless, real pro-
grams do interact with their environment in much more complicated ways
than those we have shown before. In this chapter we will describe “the
standard I/O library,” a set of functions designed to provide a standard I/O
system for C programs. The functions are intended to present a convenient
programming interface, yet reflect only operations that can be provided on
most modern operating systems. The routines are efficient enough that
users should seldom feel the need to circumvent them “for efficiency”
regardless of how critical the application. Finally, the routines are meant to
be “portable,” in the sense that they will exist in compatible form on any
system where C exists, and that programs which confine their system
interactions to facilities provided by the standard library can be moved from
one system to another essentially without change.
We will not try to describe the entire I/O library here; we are more
interested in showing the essentials of writing C programs that interact with
their operating system environment. K&R The C Program Language が Cの原典ではないというなら話にならないからもう知らないw
フリースタンディング環境とやらののうちのどこぞの環境でファイルI/Oがないなんて、>>888と似たようなもんだろうとしか思えない >>891
>I/Oは無い
ファイルI/Oは無い
ね。一応訂正させていただきます なぜC言語の話が出るのか?
なぜアセンブリの話が出るのか?
と飛躍がありすぎて、なんの話なのか、まったくわからん。w
>>893
K&Rなんか、今となっては怪しい歴史書やろ。w
記紀とか聖書とかから現実を語ることはできまい。 かと思ったら、以下も何言ってんだかだよ
冗談で逃げただけか??
マジならお前がそう思うならそうなんだろな、お前の頭の中ではなんとかかんとかw
見損なったのぞお前w シェルスクリプトスレはいつ見ても
キチ vs キチのマウンティング合戦
サル山でもこうはならない シェルスクリプトではライブラリに相当するものは外部コマンド そうよ
だからそれをブラックボックスとして扱うんだ 逆に全然枯れてないし俺環上等で本業のジョブ管理に役立つツールの話はもっとするべきだと思う
gnu parallelとかcoprocとか gnu parallel使うぐらいなら自力実装したほうが楽だと思うわ
coprocは知ってるけど使う理由が見当たらない シス管やデータサイエンティストとかのparallelヘビーユーザーではないんで効率は気にしてないけど、まあ変な文字の扱いが良くなったxargsとして便利だと思う
配るスクリプトならより普及してるxargsに置き換えた方が良いと思うけど
Perl実装だしいっそ同梱もありだと思うが バイオ系のやつが使ってるけどddで割って割り当てると朝には落ち出るとか
情報出身じゃないのでなんか変な事してる可能性はあるが ローカルな並列処理はmakeでいいわ
途中で止めても簡単に再開できる >>905
ちゃんとスケジュールするの割と大変じゃね?
フォアグラウンドでジョブ走らせたから別端末からアタッチ、5秒毎にpsしてコアの稼働率グラフ作ったが、シヌソイドみたいに振動してる
局所性とのTradeオフがあるから単に分ければいい訳じゃない
一度アフィニティー設定したら終わりじゃなくて、スループット監視しながら、少なくともPID制御程度のロジックは書かなきゃならんだろ >>908
欲張ってパイプ繋げて失敗するのあるある
だからと言ってteeでディスクに中間結果流すとボトルネックになるし
でもバッファリングを乗っ取ってコマンド実行するstdbufを最近知って捗った
二段以上繋ぐと前後のバッファリングモードの影響をモロに受けてた、特にいつも両脇挟まれるteeが…
コマンドがputc連打してるのか、printfにちゃんと改行付けてるのか、と調べるよりオプション全部試した方が早いね make色々活用してる人居るよな
試してみる、ありがとう >>902
coproc cmdだけで対話的に様子見たり追加で入力送って修整したりできるのが便利じゃないかな
スクリプト向けじゃなくてインタラクティブ向け シェルスクリプトってPOSIX準拠っていうか/bin/shを使うと
/bin/shの実体がいろんなシェルの場合があるから互換性問題に悩まされるな
bashだけしかなければ互換性問題に悩まされることはないが
交換可能性がある(つまりbashと同等の別の実装)があると
互換性問題に悩まされて、いろんなシェルに対応しようとすると
保守や移植のコストが増大してしまうな いわゆるbashismはUbuntuが/bin/shをbashからdashに変えてシステムの数あるスクリプトが動かないがあるのに気づいたのが発端でしかない
dashに変えたのはただ軽いからという理由でしかないし、dashに対応もしくはシバンを適切にという対応が終わってしまってる
いろんなシェルに対応しようとするというニーズはきわめて限られてるか、ただの空想だろな POSIX準拠すれば可搬性があるって言うけどあれ嘘なんだよね
そもそもシェルが完全にPOSIXに準拠してるわけじゃなくて互換性がないから
/bin/shを使ったとしても強制的にbashを使わされる環境ある
もちろん互換性がまったくないとは言わないよ
でもPythonのバージョンが違っていて動かなくなったって話と同じぐらい
別のシェルで動かなくなったって話がでる bashはアプリと思ってわざわざインストールするものと
思えばいいんじゃ
高機能でメモリ食う
たまたまshとかぶってる >>915
可搬性はある
だが、Write once, run anywhere ってことは絶対ではない
もしかしたら問題が起こることもあるが、そんな場合でも修正はそうでないより少なくて済む
くらいなかな POSIX準拠はOKだけど、POSIXコマンド縛りはアホなんだよな
例えば普通にgawkを使えばいい
gawkが提供する機能はPOSIXのawkの機能を超えていて一部互換性はないけど
gawkのソースコード自体はPOSIX準拠なんだから
どのOSでもインストールすれば使うことが出来る。
POSIXコマンド縛りは言い換えれば、インストールしない縛りでしかなくて
便利なものをインストールしないなら、開発コストが上がりますよという話
いろんな環境に移植されてる便利なコマンド(bashとかgawkとかgsedとか)を
インストールしてOKという前提に立てば、それらを使ったほうが
移植性を犠牲にすること無く開発コストは下げられる あとPOSIXコマンド縛り(インストールなし縛り)にすれば20年後でも動くぜ
ただし開発コストが上がるから、弊社が作った独自コマンドをインストールしろよな!
っていうのは矛盾しまくりw
そんな独自コマンドをインストールするなら
各OSに広く移植されてるコマンドをインストールしたほうがいい
例えばrubyとかpythonとかな そう無闇に否定するのも無闇にPOSIX準拠を押し付けるのと変わりないな むやみに否定してるんじゃなくて
理由を言いながら否定してるから問題ないでしょ? https://dictionary.goo.ne.jp/word/%E7%84%A1%E9%97%87/
1 結果や是非を考えないで、いちずに物事をすること。また、そのさま。「―な約束はしない方がよい」
2 物事の状態が度を超えて甚だしいさま。ひどい。「―に金がかかる」
どちらにも当てはまらない 結果や是非を考えないで、いちずに物事をすること
に当たるだろうwわかりやすくいうと非しか考えてないだな 是非があるのに非しか言ってないという自覚がないんじゃ話にならない
その読めなさは もう一回述べるか?
POSIXコマンド縛りをしないほうが
高い移植性に加えて開発コストの削減を実現できるのだから
POSIXコマンド縛りはアホ >>926
是非を考えるっていうのは、
是と非の両方を言うって意味じゃないぞw
是と非の両方を「考える」という意味だ
考えた結果、POSIXコマンド縛りはアホというのが結論だ POSIX準拠には利点もあるし欠点もある
適時もしくは各々の好みで好きにしろってだけだな POSIX準拠じゃなくてPOSIXコマンド縛りなw
POSIX準拠だとgawkのソースコードもPOSIXに準拠してるだろ
じゃあお前がPOSIXコマンド縛りの是非を考えて
是となる部分を言えばいいじゃん
何も言ってないのはお前の方だぞ >>829
わかった?
わからんだろうけど。今だに是非を自分の都合の良い視点でしか理解できないみたいだからなあ
言いたいこと言ったのでおしまいおしまい
>>831
やっぱりわからんかったか。てかいつもの話題変えるのか
POSIX準拠の利点とそう変わらないだろうに。わからんのね いいから早くPOSIXコマンド縛りの
是の部分を言えよw 918 名前:デフォルトの名無しさん[sage] 投稿日:2021/02/22(月) 00:29:31.87 ID:Vv8+u1qd [1/9]
POSIX準拠はOKだけど、POSIXコマンド縛りはアホなんだよな
例えば普通にgawkを使えばいい >POSIX準拠の利点とそう変わらない
これがわからないんだったら語る資格はない
俺はあんたのママではないぞ
もう全て語ってるからあとはあんた次第、頑張れ 「POSIXコマンド縛りの是の部分を言え」
という言葉の意味がわかりませんか? POSIXにはPOSIX socketやPOSIX スレッドなど多くのAPIを含んでいるが
POSIXコマンドはPOSIX全体のごく一部しか利用しておらず
POSIXコマンド縛り=POSIXの一部しか使えない制限 という意味でもある
POSIX(C言語中心のOSとのインターフェース)は必要だから作っれたけだが
POSIXの一部しか使えないPOSIXは、必要なものが使えないということを意味する 訂正
POSIX(C言語中心のOSとのインターフェース)は必要だから作られたわけだが
POSIXの一部しか使えないPOSIXコマンドは、必要なものが使えないということを意味する POSIX準拠にはPOSIXで規定されたコマンドおよびコマンドのオプションだけを利用することを規定してるのもあるな > 規定してるのもあるな
なんの話してるんだよw
そんなものないって言ったら
あるって言って証拠出してくれるんだよな? gawkやRubyなんかを使うくらいならPerlを使うべき。
異論の余地はない。 簡単なシェルスクリプトならググらず書けるようになった新参者だけど、
オプションの法則に統一性ないのが一番解せないわ
ショートオプションはハイフンの後が一文字っていうけどfindの-typeからして守ってないしさ
wgetにも-nvがあるけど既に形骸化してんの? >>942
適切なツールを使いましょうってだけ
コマンドを組み合わせて使うなら
シェルスクリプトが一番適切
他のどの言語もコマンドを組み合わせて使うのには適していない
>>943
一部のコマンドに変なオプションがあるだけだよ
開発者がよく知らずに実装してしまっただけ メモリが安価になったという意味で時代は変わったんだから
組込含めてdashを選ぶ必要性はないでしょ
POSIX準拠なんてかつては大衆芸能だったが今では伝統芸能で
保存対象になるつつある歌舞伎みたいなもんだよ >>945
文句はディストリ屋に言ってくれ
Debian/Ubuntuはdashを選んでるし
Alpineはbusyboxを選んでるんだ
嫌でもdashやbusyboxを使わないといけないんだだよ >>943
ロングオプションなんかぐにゅの後出しみたいなもんやし、互換性のほうが重要やし、しゃあない。
統一性を期待するもんでも、守る守らないを議論するもんでもない。
コマンドラインの世界は、ただ混沌を受け入れるのみ。。。 ロングオプションっていうかハイフン2個で始まるオプションに関しては統一されてる
変なオプションがあるのはハイフン1個で始まるやつ
もし今からオプションを規格化するとしたら、俺なら
-で始まるのは一文字のオプションだけ。オプションの引数はなし
--で始まるのはロングオプションで、オプションの引数はあって無くてもよいが
ある場合は --long=value みたいに必ずハイフンでつなげること
--long value形式は無しってルールにするだろうな
そうしないとオプションの解析は面倒くさすぎる 2020年代にもなってオプション解析を自前でやらなきゃいけないという時代錯誤感よ >>951
俺ルールじゃなくて、既存のルールのサブセットだけどな
まあ知らない人にとっては特殊なルールに見えるんだろうね >>946
シェバンに/bin/bash、 debian/control に Depends: bash って書くがよい 何か作業しようとするときにログインがbashかそうでないかは重要 >>952
それが「俺ルール」なんだっつーの。
アホなの?w >>952
すでにデファクトスタンダードになってるだろう、>>951のがあるんだから「俺なら」ってのはいらないって話じゃないの
シェルスクリプト用には>>915を用いたのがになるだろうし
「俺なら」がGNUとBSDの違い(があるなら)を勘案してのかと思ったら、解析は面倒くさすぎるって言ってるから違うっぽいかな >>951はC言語のインターフェースじゃんw
ロングオプションにも対応してないし シェルで標準的に使われてるのってgetoptかgetoptsじゃないの?
どっちも微妙だけど getoptはPOSIX準拠じゃないうえにMacで挙動が違うしな 現行ディレクトリ直下にあるファイルを日付順に処理したい。
dateの-dオプションと'%s'書式を使ったやりかた
(-dオプションにlsの出力の日付欄を渡して,%s書式でsortに回しやすい形式に変換する)
は思い付くのだが,できればもうちょっと汎用性のあるやりかたでやりたい。
それこそAlpine Linuxでもできるようなやりかた,せめてSUS準拠くらいで。 Alpine LinuxだのSUS準拠だの言ってるくせに... >>962
lsで日付順ってできたっけ。
しかもaccessとかmodifyとか色々あるけど。 最近はマニュアル読まないで人に聞く豆腐が増えたよな Alpine LinuxだのSUS準拠だの言ってるくせにこのザマとは Unix Version 1 からあるな
逆順は System III にはあるな
興味があって探してみたらあるもんだな 逆順は Unix Version 4 からだな
本当に探せばあるもんだなぁ だれも**なぜか**具体的なこと教えていないので私が。
> -c
> Use time of last modification of the file status information (see XBD <sys/stat.h>) instead of last modification of the file itself for sorting ( -t) or writing (-l).
というわけでPOSIXに従うならls -ct1とかで一覧表示して,
xargs(1)で処理するのはどうかな。
まあ改行を含むファイル名には対処できないが。 Q: 現行ディレクトリ直下にあるファイルを日付順に処理したい。
A: lsでソート出力すればいいじゃん
人にものを教えてもらった時は「ありがとうございました」だろ 利奈みんとbotっていい加減停止してほしい
過去の質の悪い情報を、何度も繰り返しツイートすんな Q: 現行ディレクトリ直下にあるファイルを日付順に処理したい。
A: ls -ct1 知らなかったくせにプライドだけはいっちょ前だな
謙虚さが無いやつは成長しない >>970
こんな殺伐としたスレでもちゃんと立ててくれる人がいる、おつおつ >>982
謙虚さがないから人の言っていることがわからないのか
単に馬鹿だから色々わからなく人との接し方もわからないのか
どうも後者っぽいな。リアル社会でも人と接するのが難しいレベルな >>985
いや、俺が教えろっつったら教えろよ
学生時代てめえみたいな陰キャを脅してノート写して貰ってた感じで俺は質問したんだぞ
あ? >>987
イチビリにかまうな。
かまうのなら、おもしろく。 #!/bin/bash
# >>162
# 日本で生まれたけど国籍は日本ではない外国人が使う「通名」作成スクリプト
JUNG=1
while [ $JUNG -lt 21 ]
do
echo "$JUNG回目"
(( JUNG ++ ))
NAME=$( shuf -e 村 崎 本 田 山 玉 子 -n 1 )
if [ "$NAME" = "玉" ]
then tput setaf 3 && echo "金$NAME"; tput sgr0
else echo "金$NAME"
fi
sleep 3
done bash
変数sに文字列を代入したいのですが、文字列が長いので複数行に分けて書く方法を教えてください
s="a"
\ "b"
\ "c"
↑
これはエラーになりますがこんな感じで複数行に分けて、sにはabcと1行分として代入されているようにしたいです bash なら...最後の2行がちょっと残念感あるけど
s=$(cat <<EOF
a
b
c
EOF
) 3行じゃなくて1行っていみなら最終行以外の末尾にバックスラッシュで
s=$(cat <<EOF
a\
b\
c
EOF
) >>993
その場合でも単に \ の位置が間違い。1文を行変える場合は \ は行頭じゃなく行末 s="a\
> b\
> c"
echo $s
abc $ l\
> s
ってしても、単に ls っていう
シンプルの極み、いつでもどこでも改行したければどうぞって感じ a="aaa"
b="bbb"
c="ccc"
s="$a$b$c" このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 96日 4時間 48分 17秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。