X



シェルスクリプト総合 その35
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2020/11/24(火) 21:37:20.06ID:mbTiTj6s
シェルスクリプトに関する総合スレッドです。

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

前スレ: シェルスクリプト総合 その34
https://mevius.5ch.net/test/read.cgi/tech/1597990675/
0002デフォルトの名無しさん
垢版 |
2020/11/24(火) 21:37:36.71ID:mbTiTj6s
・特記なき場合、POSIX準拠シェルが既定です(古きBourneシェルはほぼ絶滅しました)
 POSIX準拠シェルは(d)ash, bash, zsh, (m)ksh, yash, posh, (p)boshです
 参考 https://unix.stackexchange.com/questions/145522/
 特定のシェルの専用機能に依存する場合は明示しましょう(特にPOSIX準拠シェルではないfish, (t)csh等)
・デフォルトシェルのシバンはBourneシェル時代からの伝統で#!/bin/shを使用します。ただしその実体はOSによって様々です
  Debian系 … dash   CentOS系 … bash   Alpine … ash(busybox)  Android … mksh
  FreeBSD … ash   Solaris,OpenBSD … ksh
  macOS … bash(Single UNIX Specification準拠のために一部動作が異なる)
・ログインシェルは/bin/shでない場合があります。例 macOS … zsh
・シェルスクリプトは可搬性を持たせるために可能な限りPOSIXに準拠しましょう
 仕様 http://pubs.opengroup.org/onlinepubs/9699919799/
 参考 https://en.wikipedia.org/wiki/POSIX
・bash依存はなるべく避けましょう。自覚なきbashism。シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?
 #!/bin/shを使うならシェル依存は厳禁です。bash依存するなら#!/bin/bashです
・BourneシェルはPOSIX標準化前に主にUNIXで使われていたシェルで多くの亜種が存在します
 Bourneシェル≒Version 7 UNIXのshに一番近いのはOpenSolaris由来のHeirloom Bourne Shell、次点でSchily Bourne Shellのoboshです
  Heirloom Bourne Shell: sh http://heirloom.sourceforge.net/sh.html
  Schily Bourne Shell: obosh http://schilytools.sourceforge.net/bosh.html
 歴史的資料 https://www.in-ulm.de/~mascheck/
・csh/tcshでのシェルスクリプトは*まったく推奨しません*
  参考 http://www.speech-lab.org/~hiroki/csh-whynot.euc
・Linux/UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。Manページや各種リンクを見ましょう
 aproposやman -kでそれらしい単語による簡単な検索もできます
・ワイルドカード・パターンは正規表現ではありません。正規表現の話題はスレ違い(正規表現スレへ)
・シェル芸はシェルスクリプトとは異なります
・シェルスクリプトのことをシェルってゆうな
0003デフォルトの名無しさん
垢版 |
2020/11/24(火) 21:37:51.87ID:mbTiTj6s
関連スレ

【Bash】Windows Subsystem for Linux【WSL】8
https://mao.5ch.net/test/read.cgi/linux/1590742701/

Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/

シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/

zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/

【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
0004デフォルトの名無しさん
垢版 |
2020/11/24(火) 21:40:10.48ID:mbTiTj6s
しかし>>3の関連スレが,1スレ消費した後にまだリンク張り替えなくて良いあたり,
全然書き込まれていないんだな。
人気がないのかあるいは,安定していて一斉に文句が書き込まれるような問題も無いのか……。
0006デフォルトの名無しさん
垢版 |
2020/11/25(水) 00:17:50.27ID:jf5n46hh
fishとかxosh?だとかPOSIXじゃないから
うんいいね。でおしまい
あんなのでスクリプト書くやつはいない
0008デフォルトの名無しさん
垢版 |
2020/11/25(水) 06:48:03.19ID:BAAT1DM9
別にfishが使い続けられてそれが便利ならそのスクリプトがどういう文法だろうがどうでもよくないか?
0011デフォルトの名無しさん
垢版 |
2020/11/25(水) 17:20:14.98ID:7xSU5LuF
>>8
シェルはインタラクティブだけじゃなくてシェルスクリプトとしても使われてる
例えば/bin以下でこんなのがシェルスクリプトで実装されてる

/bin/bzdiff: POSIX shell script, ASCII text executable
/bin/bzexe: POSIX shell script, ASCII text executable
/bin/bzgrep: POSIX shell script, ASCII text executable
/bin/bzmore: POSIX shell script, ASCII text executable
/bin/egrep: POSIX shell script, ASCII text executable
/bin/fgrep: POSIX shell script, ASCII text executable
/bin/gunzip: POSIX shell script, ASCII text executable
/bin/gzexe: POSIX shell script, ASCII text executable
/bin/which: POSIX shell script, ASCII text executable
/bin/zcat: POSIX shell script, ASCII text executable
/bin/zdiff: POSIX shell script, ASCII text executable
/bin/zgrep: POSIX shell script, ASCII text executable
/bin/zless: POSIX shell script, ASCII text executable
/bin/zmore: POSIX shell script, ASCII text executable

なのでPOSIXシェルがシステムから取り除かれることはない
そしてfishはシステムにとって使えず必須ではないのでインストールされない
という状況がこれからも続く

悪くはないが代替として使えない
0013デフォルトの名無しさん
垢版 |
2020/11/25(水) 20:38:12.08ID:uhQhH5gv
だから、別にfishでスクリプトを書いてもいいけど
統一された企画も何もないんだから、
少なくともこのスレで話す話題じゃねーよなって言う話

それこそ、Pythonも、
逐次的に入力を解釈して利用者に入力を促進する状態がある
と言う点ではシェルの一緒だけど、
じゃあここで話すの話題かっていう。
0017デフォルトの名無しさん
垢版 |
2020/11/25(水) 22:04:20.77ID:Hppr2Ato
fishのスクリプトがどういう文法だろうが
使わないのでどうでもいいという話

>>5
> fishはどうなの?
どうでもいい。興味ない。
0019デフォルトの名無しさん
垢版 |
2020/11/25(水) 23:07:49.06ID:zD7zhP2P
いつから統一された規格とやらが要件になったの?
いいけどそれなら総合の看板下ろしてPOSIX専用掲げてよ紛らわしい
0020デフォルトの名無しさん
垢版 |
2020/11/26(木) 00:09:07.40ID:JCzWlVbS
shに似ても似つかないスクリプトはスレ違いなのはたしか。
POSIXはある程度どうでもよいとして。

ただスレ違いを前提として、別のシェルをすこしくらい話題にするのはいいのでは。
そんなに活発なスレでもないし。
0022デフォルトの名無しさん
垢版 |
2020/11/26(木) 01:12:59.63ID:T00uXQW1
昔話だが、まだいろんなUNIXワークステーションが使われていた頃、あるOS用に
書いたスクリプトが別のOSで微妙に動かなかったりして、面倒だった。
そうするとやっぱPOSIXかあと思ったりした。

今なんかどこでもたいていbashが入ってるしな。てゆうかたいがいLinuxだし。
そしてCPUがたいがいインテルに... まARMのクロスコンパイルはするけど。
0023デフォルトの名無しさん
垢版 |
2020/11/26(木) 01:14:37.64ID:T00uXQW1
あれ、ディレクトリ構造というのもPOSIXで規定されてるんだっけ?
違うOSで動かすときはそういうのも問題になったな。
そうやってGNUのconfigureなんかも複雑化していったという。
0025デフォルトの名無しさん
垢版 |
2020/11/26(木) 08:58:40.11ID:Czgib+VC
手元に有用なfishスクリプトがあってそれを使いたいならfishをインストールすればいいだけじゃね?
なぜデフォルトインストールされたシェルだけの縛りゲーしてるの
0027デフォルトの名無しさん
垢版 |
2020/11/26(木) 12:05:54.70ID:JCzWlVbS
パーミッションだけの話なら、$HOMEのどこかにいれとけ。
/usr/bin以下でないとダメなわけでもないやろ。
0028デフォルトの名無しさん
垢版 |
2020/11/26(木) 13:13:04.55ID:BChkjCh/
>>27
だからインストールできない
linux-vdso.so.1 (0x00007fffeddc6000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f211d340000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f211d110000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f211cef0000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f211cce0000)
libpcre2-32.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-32.so.0 (0x00007f211ca60000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f211c6d0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f211c2c0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f211da00000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f211bf20000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f211bd00000)
0029デフォルトの名無しさん
垢版 |
2020/11/26(木) 14:24:24.05ID:dGdApgXM
>>19
「POSIXにこだわらないシェルスクリプト総合スレ」を立てたほうが健全かもな

しばらくスレ見てればわかるけど要は俺がマウント取れない話題はするなってことなんだよね

全くもってくだらない
0030デフォルトの名無しさん
垢版 |
2020/11/26(木) 14:30:52.27ID:SyhWTBHJ
感想は同意。マウント取るためのネタとしてするなとも言っているのもありそうだな
0031デフォルトの名無しさん
垢版 |
2020/11/26(木) 15:57:47.46ID:JCzWlVbS
テンプレに、明示してたらほかのシェルでも可、とあるんだからここでええやろ。
POSIXバカは無視で。
0032デフォルトの名無しさん
垢版 |
2020/11/27(金) 15:29:21.75ID:3pf/tsln
awkやsedの話でもなんかすぐ「そんな複雑なことやるな!」って否定しだすしな。
awk,sedは独立したプログラム言語とはいえシェルスクリプトの一部と言えるんだから,
fishと同じでここで扱っても良い話題。
0033デフォルトの名無しさん
垢版 |
2020/11/27(金) 15:55:39.83ID:w5Az7J0d
そんな事するなとは言ってないな
シェルスクリプトではないというだけの話だ
独立したプログラム言語でシェルスクリプトではない
0036デフォルトの名無しさん
垢版 |
2020/11/27(金) 18:51:24.04ID:OZT1ua32
>>33
たしかにそうではあるが、ふつうのsedくらいまではこのスレの射程やろ。
「総合」だし。

だが、awkは外れてると思う。w
0037デフォルトの名無しさん
垢版 |
2020/11/27(金) 19:51:16.84ID:3pf/tsln
POSIX信者ウゼー
FishでもAWKでもシェルスクリプト一と言えるだろうが。
そりゃ突き詰めて見れば,「PowerShellを扱わないんであればFishシェルも扱わない」
「Pythonを扱わないんであればAWKも扱わない」という理屈は分からなくもないけど,
どうしてそう強情に0か1かでしか物事を捉えられんのかね……。
0038デフォルトの名無しさん
垢版 |
2020/11/27(金) 21:43:43.30ID:w5Az7J0d
awkがシェルスクリプトじゃないというのはPOSIXとは関係ない

awkを呼び出すコードは当然シェルスクリプトだが
awkはシェルではないので、awkの文法に関することは
シェルスクリプトではないというだけのことだ。

そしてfishはシェルなのだから、当然シェルスクリプトだ
ただしPOSIXではないシェルスクリプトであるが
0039デフォルトの名無しさん
垢版 |
2020/11/27(金) 21:51:03.71ID:w5Az7J0d
例えばシェルスクリプトで$_ってどういう意味ですか?
って聞かれても困るだろ?このコードで

cat test.txt | ruby -e 'while gets; print $_; end'
0042デフォルトの名無しさん
垢版 |
2020/11/27(金) 22:39:54.65ID:w5Az7J0d
そういうことだな。それはawkの文法だよ。
だからawkスレで聞いてねで終わる
0043デフォルトの名無しさん
垢版 |
2020/11/27(金) 22:40:48.72ID:3pf/tsln
>>38
じゃあPowerShellやcmdの話題も扱っていい筈よね。
ここUnix板じゃねーし,
仮にUnixシェル専用だという暗黙の了解があるにしても
PowerShellはLinuxの上で動くし。

……とまあ,際限なくチャチャを入れることができる
ガバガバ理論なんで,別にAWK程度なら
このスレで扱っても構わないでしょう。
柔軟に生きよう。
0045デフォルトの名無しさん
垢版 |
2020/11/27(金) 22:58:10.21ID:YUFOKuwU
ご覧の通り何を言っても無駄

無駄に突っかかってくるやつ相手にしてもSAN値下がるだけなので
「POSIXにこだわらないシェルスクリプト総合スレ」を立てたほうが建設的だよ

POSIXに強くこだわりたいときにこのスレ使えばいい
0051デフォルトの名無しさん
垢版 |
2020/11/27(金) 23:27:25.30ID:OZT1ua32
>>43
Awkを入れたらPerlも入るぞ?
Perlが入ったらPythonも入るぞ?
Pythonが入ったらRubyも入るぞ?

と際限がなくなりそうだけどなあ。
0052デフォルトの名無しさん
垢版 |
2020/11/27(金) 23:30:37.47ID:OZT1ua32
>>50
POSIXそのものなのか?準拠は?拡張は?と、それはそれでややこしい。w

こまけえことは気にすんな!でええがな。
POSIXバカは無視で。
0062デフォルトの名無しさん
垢版 |
2020/11/28(土) 10:42:20.87ID:PixgrLNy
>>53
確かにこれはひどい悪意を感じるので
立て直したほうがよい
0063デフォルトの名無しさん
垢版 |
2020/11/28(土) 12:09:11.41ID:FGpMIdZG
>>39
PowerShell でもそうだけど、$_ は、前段のパイプから渡ってくるもの。
1行ずつ渡ってくるのを、そのまま表示している

1-liner では、よく使う
0065デフォルトの名無しさん
垢版 |
2020/11/28(土) 12:27:00.82ID:u/XOSRZ8
だいたい,「分かりやすいタイトル」にしたところで人が集まるような話題じゃねーしなw
Fishだけ知っててBash知らない,みたいな人間なんて超希少だろうし,
大半の人間はFishの前にBashを知っていて,
シェルスクリプトとして書く場合はBashを使う。
だから「Fishでこんな処理を書きたいんだけど」という疑問の前に
Bashを使うんだわ,残念ながら。

まあBashを使うことが良いこと≠ゥ,というのはまた別の話な。
勘違いしてつっかかってくる奴がいそうなんで,念の為言っておくが。
0066デフォルトの名無しさん
垢版 |
2020/11/28(土) 15:43:45.81ID:RWbEaHwZ
PowerShellやコマンドプロンプトはシェルスクリプトがなかった
Windowsの世界で使わざるを得ないものだから、それでスクリプト書くことはあるけど
fishとか書かないよね

書けるやつはbashかPOSIX準拠で書くし
書けないやつはPythonとかの言語を使う
bash書くのだるいからfishでとかやるやつがいない

fishとかプロンプトからの入力に使うだけでしょ
使ってる人もデフォルトの補完便利だねぐらいにしか思ってない
0067デフォルトの名無しさん
垢版 |
2020/11/28(土) 15:52:04.59ID:/h72lCnp
fishのスクリプトの具体的なことは未だに全く書かれていない、どう書いたらいいとかさえも
最初に言い出したやつさえ使ってないだろうw いつまで引っ張ってるんだか
0069デフォルトの名無しさん
垢版 |
2020/11/28(土) 17:49:02.21ID:FGpMIdZG
AWS のCodeDeploy には、sudo yum install ruby
と書いてあるから、Ruby製

CloudFormation では、Ruby製のChef, Cookpad製のItamae, Kumogata2 を使える

バックエンドの環境構築運用では、
複雑なものは、シェルスクリプトよりも、Rubyで書く
0070デフォルトの名無しさん
垢版 |
2020/11/28(土) 18:12:07.68ID:u/XOSRZ8
>>68
もうこれに尽きるな。
Fishシェルのことを扱う別のスレを建てるんじゃなくて,
POSIXシェルのシェルとしての機能(for文, set命令とか)のみを
扱う専門スレを建てればいい。

「総合」とある以上,ここでは前者を含んだ話題を扱うべきだ。
0071デフォルトの名無しさん
垢版 |
2020/12/01(火) 08:36:50.52ID:2728+f2c
dateコマンドで「今日の10時」などではなく「次に来る10時」を求める方法をご存知の方教えてください!
0073デフォルトの名無しさん
垢版 |
2020/12/01(火) 12:42:30.34ID:WP+WGTcn
文字列での表示は出来るけど、
プログラミング的な時間オブジェクトの比較とかは、出来ないかも

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
007473
垢版 |
2020/12/01(火) 12:48:04.25ID:WP+WGTcn
現在・今日・明日の文字列で、文字列として比較できるかも知れない

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
007573
垢版 |
2020/12/01(火) 12:52:06.65ID:WP+WGTcn
>>74
今日が現在よりも前なら、明日

それ以外は、今日
007673
垢版 |
2020/12/01(火) 14:53:07.28ID:WP+WGTcn
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
0077デフォルトの名無しさん
垢版 |
2020/12/01(火) 17:23:30.11ID:sVIjNcb4
>>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が月末だったら問題あるから気をつけな
0080デフォルトの名無しさん
垢版 |
2020/12/01(火) 17:52:38.86ID:sVIjNcb4
思ったんだがシェルスクリプトって日付の計算ができないんだな
そういうライブラリってないのか?
0082デフォルトの名無しさん
垢版 |
2020/12/01(火) 18:09:45.30ID:XaSziyAo
シェルスクリプトで数字の計算は普通にできるやろ?

rubyとかpythonとか便利ライブラリ盛りだくさんな温室で
育ってきたやつは知らんだろうけど
C言語だって日付の計算はできないんだぞ

ライブラリを作るか使うかしてやっと実現できること
ライブラリを誰かが用意してくれなきゃプログラミングができないとか
技術力もほんと落ちたもんだわw
0086デフォルトの名無しさん
垢版 |
2020/12/01(火) 22:04:55.51ID:JidlBL+f
>>82
> シェルスクリプトで数字の計算は普通にできるやろ?

外部コマンド呼ばないとできないよね。あ$(())とかのこと? でも伝統的には...

> ライブラリを誰かが用意してくれなきゃプログラミングができないとか

日付の処理とかいろいろ落とし穴が多いから。

今はプログラムも複雑になったし... 料理に例えると、大昔は火を起こすところから
できないと駄目だったろうが今はそんなこと要求されないw
0087デフォルトの名無しさん
垢版 |
2020/12/01(火) 22:56:51.43ID:C5mmwJjK
GNUやBSDのdateの拡張部分、つうてもある値(文字列な日付も含む)を日付に変換っていう部分を使えば普通に日付の計算は(簡単に)できるだろう
日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通。落とし穴を避けるためにも(他の言語でも)
年月日で計算する必要のあるのは、落とし穴なんて関係ない単純な場合なだけだろう。何年何ヶ月 とか ある程度適当でいい場合とか
0089デフォルトの名無しさん
垢版 |
2020/12/01(火) 23:34:27.84ID:sWsOqT7L
>>86
> 外部コマンド呼ばないとできないよね。あ$(())とかのこと? でも伝統的には...
伝統?いつまでも古代のBourne shellなんか使ってるなよ
今は令和の時代だぞ?1988年(ksh88)はもう30年以上前だ。
そんな昔のシェルをお前は今も使ってるのか?
いい加減POSIX準拠シェルに乗り換えろ
0090デフォルトの名無しさん
垢版 |
2020/12/01(火) 23:35:29.20ID:8hFs+PyJ
>>71です
みなさんありがとうございます助かりました!
0091デフォルトの名無しさん
垢版 |
2020/12/01(火) 23:40:19.72ID:sWsOqT7L
>>87
> 日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通。

date +%s はPOSIX準拠ではない
0092デフォルトの名無しさん
垢版 |
2020/12/01(火) 23:54:59.72ID:vbtVJLvD
別にPOSIXに従ってなくても,元の質問が解決すればそれでいいと思うんだが。

ちなみにPOSIXに準拠した場合でもUNIX時刻は算出できる。
0098デフォルトの名無しさん
垢版 |
2020/12/02(水) 01:31:58.00ID:fE08etha
POSIXバカと呼び名通りにすぐにバカっぷりを体現してくれる呼び名に偽りはないなw
010073
垢版 |
2020/12/02(水) 13:32:26.78ID:vDg6xkSY
>>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
0104デフォルトの名無しさん
垢版 |
2020/12/02(水) 20:24:18.38ID:aGDRVZCV
>>96
なんでそこしか見てないの?
UNIX時刻の定義に書いてある。
は〜,これだからクレクレは困るんだよなぁ……
ちっとは他のページも調べればどうだ。
0106デフォルトの名無しさん
垢版 |
2020/12/03(木) 00:15:40.19ID:qzOIs4Mf
>>105
POSIXバカはスルーするんじゃなかったんか?
それともスルーできないくらい有用な書き込みだったかw
0112デフォルトの名無しさん
垢版 |
2020/12/03(木) 11:24:39.60ID:8fqR7feq
>>110
POSIXに手抜きするなって言っておけ
2020/12/03が2020/01/01から何日目であるかの計算式も書けとw
011373
垢版 |
2020/12/03(木) 12:16:58.37ID:Nwj1NL2r
>>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
0114デフォルトの名無しさん
垢版 |
2020/12/03(木) 12:51:14.44ID:8fqR7feq
>>113
dateの呼び出しなら理屈上1回でやれるだろ?
現在の日時から、今日の10時、明日の10時を計算するだけやで?
0115デフォルトの名無しさん
垢版 |
2020/12/03(木) 12:57:17.10ID:kewMsHSW
POSIXといえば、>>113はデフォのdateがGNUのdateな環境用だね。
いろいろ機能拡張されているみたいで。
0119デフォルトの名無しさん
垢版 |
2020/12/03(木) 15:07:46.18ID:U4KcZC74
>>114
現在の取得と明日を求めるのをお任せで2回は必要じゃね
明日を計算するのをうだうだ書くなら別だが
0120デフォルトの名無しさん
垢版 |
2020/12/03(木) 15:11:33.39ID:U4KcZC74
>>118
なるほど
あれは見てわかるようにCでのことだからな、Open Groupに言っても鼻で笑われるだけかとw
0121デフォルトの名無しさん
垢版 |
2020/12/03(木) 15:15:27.80ID:3lw1+h2j
>>119
現在の日時から今日の10時は計算できるし
明日の10時も計算できる
今日の10時に86400秒足せば、明日の10時だ
0122デフォルトの名無しさん
垢版 |
2020/12/03(木) 15:19:57.28ID:U4KcZC74
>>121
w
86400秒足したのを何月何日にするのにどうするつもりなの?
簡単に言えば、月末の次の日って話だぞ
0123デフォルトの名無しさん
垢版 |
2020/12/03(木) 15:28:04.68ID:3lw1+h2j
> 86400秒足したのを何月何日にするのにどうするつもりなの?

え?POSIXにその計算式があるんじゃなかったの?w
0126デフォルトの名無しさん
垢版 |
2020/12/03(木) 15:58:19.12ID:U4KcZC74
>>125
>>123のレスに中身があるとでも?w
そういうレスするのはいつものやつかwなるほど通りでバカなこと言うわけだ
0127デフォルトの名無しさん
垢版 |
2020/12/03(木) 16:01:23.95ID:3lw1+h2j
中身がないレスをお前が先にしたわけで、
それに対するレスにも中身が無いのは当然じゃん
早くPOSIXにその計算式はないって言いなよw
0128デフォルトの名無しさん
垢版 |
2020/12/03(木) 16:02:58.72ID:3lw1+h2j
あとはっきり言っておくな
POSIXにあるのは年月日時分秒からの変換ではなく
年日時分秒からの変換。月がない。
0129デフォルトの名無しさん
垢版 |
2020/12/03(木) 16:06:05.70ID:U4KcZC74
>>127
イミフ
>>119の通りだと今でも思うよ
それに対してなんか不思議なこと言ってるから、>>122とちゃんとした疑問なんだけどなあ
それが>>123なのか...マジで...

ないも何もそんな計算があるなんて誰が言ったんだか?どれのこと?w
0131デフォルトの名無しさん
垢版 |
2020/12/03(木) 16:08:37.33ID:3lw1+h2j
もう話の流れを忘れたのか?

↓無理やろ

> 日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通。
0132デフォルトの名無しさん
垢版 |
2020/12/03(木) 16:17:23.67ID:U4KcZC74
>>131
お前は根本的に何もわかってないんだな
だからそんな勝手な話の流れと思ってるのか。そこに書かれてることも全くわかってないんだな
そこに計算なんて書いてないだろうに。お前が全く話の流れをわかってないのが明らかだ

>>119なんて言ってたくせにw またごまかしなんだろうが、無理すぎw
0134デフォルトの名無しさん
垢版 |
2020/12/03(木) 16:22:27.43ID:3lw1+h2j
> 日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通

が真なら

86400秒足せばOKだろw
0135デフォルトの名無しさん
垢版 |
2020/12/03(木) 16:25:05.27ID:U4KcZC74
>>134
何を言っているのか...キチガイなのかとこわ
お前にはなんか知らんがOKなんだろうが、お前が注文つけた先では全くOKじゃないだろう、年月日を出したいらしいからな
残念だったな
0140デフォルトの名無しさん
垢版 |
2020/12/03(木) 16:38:34.33ID:U4KcZC74
もう全くわかってませんという自己紹介はいらんぞw
ちなみに、今日(今)の明日(というかどこまでかはわからんが、何時間/何日前後) の年月日はPOSIXでもトリッキーにできそうなのは上にあるだろに
0141デフォルトの名無しさん
垢版 |
2020/12/03(木) 17:37:06.10ID:Glofd6fS
>>113
変数に代入するのはformat指定だけにして
$(date “$format”)とか$(date +”$format”)にしたほうが
何をやってるかわかりやすくていい気がする

あと>>84とかと同じで0時またぎの微妙なタイミングで明後日になる可能性がある
それを把握した上で使う分には問題ないだろうけど
0142デフォルトの名無しさん
垢版 |
2020/12/03(木) 19:26:57.20ID:3lw1+h2j
>>141
> あと>>84とかと同じで0時またぎの微妙なタイミングで明後日になる可能性がある

なるほど。日付の取得は1回にしてあとは計算したほうが良さそうだな。
0143デフォルトの名無しさん
垢版 |
2020/12/04(金) 00:45:50.04ID:ECFKf8K5
>>121
いや,date(1)の呼び出しは一回で済むでしょう。
POSIXに拘ろうが拘らまいが,「ある瞬間の24時間後」
を知りたければUNIX時刻と普通の時刻を変換すればいい。

ちなみに「UNIX時刻はPOSIXのdateコマンドでは出せない/変換できない!」
って思ってる人も居そうだが,普通にできる。
0144デフォルトの名無しさん
垢版 |
2020/12/04(金) 01:18:58.36ID:iavYwWUx
Dateとして一回Calendarとして一回、二回は必要だろう
元のはCalendarとして二回使ってる感じかな
何言っているかわからんだろうけど
0146デフォルトの名無しさん
垢版 |
2020/12/04(金) 01:25:29.92ID:HyuHUD7c
>>143
> ちなみに「UNIX時刻はPOSIXのdateコマンドでは出せない/変換できない!」
できるのは、dateコマンドからUNIX時間への変換だけですよね?
0147デフォルトの名無しさん
垢版 |
2020/12/04(金) 01:48:29.11ID:HyuHUD7c
>>144
POSIXにはCalender(笑)の機能なんてないですもんねw
自分が使える言語に固執してないで、dateコマンド用語で話をするように
0148デフォルトの名無しさん
垢版 |
2020/12/04(金) 01:59:44.65ID:8vYOAEQt
論より証拠というやつで、実際にスクリプトを書いてみたらいいんだ
で書けたらそれを貼る、書けなかったらごめんなさいする
0149デフォルトの名無しさん
垢版 |
2020/12/04(金) 02:08:43.91ID:iavYwWUx
>>147
POSIXもそうだが、概念としてのDate(Time)とCalendarは当然のようにあるってことだよ
dateコマンドは機能は限定されているがその2つの概念を内包してる。他の言語ではクラスとして明確にわかりやすいように(?)存在するってだけだな
POSIXは「システムクロックを」に固執/それ対象なのが痛くてあまり使えなさそうなだけで
0150デフォルトの名無しさん
垢版 |
2020/12/04(金) 02:33:22.25ID:3npkCfBA
普通の暮らしで使ってる日付なのに
普通の暮らしで接してるからこんな話題でもあまりよく考えてないから計算でできると思い込んで言っちゃうんだろうな。今までそういうのも書いたこともなく
そんなのが機会があって自分で書いたら落とし穴に落ちたのを書きそう
さすがに今時はそう見事に簡単に落とし穴に落ちたのを書かないとは思うが、書きそうでもある
0152デフォルトの名無しさん
垢版 |
2020/12/04(金) 08:32:14.34ID:8vYOAEQt
ふつうJavaのプログラミングの経験ぐらいないか? ないのかw

なんか話がこじれてるが、dateコマンドの呼び出しを1回で済ませると言った人、
そーす(スクリプト)ぷりーず。
0153デフォルトの名無しさん
垢版 |
2020/12/04(金) 09:43:14.21ID:HyuHUD7c
>>152
すでに指摘済み

> 自分が使える言語に固執してないで、dateコマンド用語で話をするように

この文章は、Java”だけ"の常識を、このスレで語るなと言ってる
0154デフォルトの名無しさん
垢版 |
2020/12/04(金) 10:31:19.91ID:ySoYx7WA
Java”だけ"だと思ってるんだからなあ。知識が無さすぎなのが顕著だな

こいついつものやつか?
自分の知らないこと話すなマウント取れないからってことだろうとしか思えないw
015573
垢版 |
2020/12/04(金) 10:53:02.32ID:sfksvFP9
>>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 と解答を得たとしても、
処理が終わった時には、その時刻を過ぎているかも知れない

それと、夏時間・うるう秒などにも、注意
0157デフォルトの名無しさん
垢版 |
2020/12/04(金) 12:46:44.71ID:yENL1Rc+
それって 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
0158デフォルトの名無しさん
垢版 |
2020/12/04(金) 12:55:10.42ID:HyuHUD7c
>>154
Javaだけでも、Javaと○○だけ でもどっちでもいいよw
どちらにしろ特定の言語専用の用語で
dateコマンドと関係ないんだから
常識だろ

>>156
dateを2回呼ばないです。代わりにawkを呼ぶので遅いです。じゃ
あまり意味ないな。コードもクソ長いし。
0160デフォルトの名無しさん
垢版 |
2020/12/04(金) 12:55:34.58ID:yENL1Rc+
>>84
このTZずらし戦法って1時間以下のずらしでも使えるのかな?
とりあえずインドとの時差は3時間30分だから30分単位とかはできる?
0162デフォルトの名無しさん
垢版 |
2020/12/04(金) 13:22:53.16ID:2+VKdPy1
なぜかチョンは日本と同じにしてる
日本のほうが早いなんて許せないらしい
誇り高い民族だよね。あっぱれ!
0164デフォルトの名無しさん
垢版 |
2020/12/04(金) 18:33:51.60ID:9vuroJRJ
>>158
概念としての話だってのに、概念がわかりませんだからなあ
POSIXのそこらのC関数も当てはまる話だってのに、概念がわからないんだからなあ
概念の例としてわかりやすい形になってるのが、オブジェクトな言語でのフレームワークでって話なんだが、理解する気もなく「言うな」なんだからなあ
お前は入ってこなくていいよ、もう理解する気もなく文句言うだけなんだから
0166デフォルトの名無しさん
垢版 |
2020/12/04(金) 18:46:53.85ID:9vuroJRJ
>>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週間だった)
0167デフォルトの名無しさん
垢版 |
2020/12/04(金) 18:47:46.31ID:NVkYzPbW
でもまあどちらにしろdateを2回呼んでるからタイミング次第ではバグになるよね
0169デフォルトの名無しさん
垢版 |
2020/12/04(金) 18:50:44.54ID:9vuroJRJ
>>165
>POSIXのそこらのC関数も当てはまる話だってのに、〜
>概念の例としてわかりやすい形になってるのが、〜
って言ってるのに。読めなさすぎだろう。方々で似たような実装なのは、特定言語特有の話ではなくコンピュータサイエンスwとしてのだからだろうにな
シェルスクリプトしか知りません興味ありませんすぎだろう
0170デフォルトの名無しさん
垢版 |
2020/12/04(金) 18:55:02.87ID:9vuroJRJ
>>168
そんなのあるのね。ちょいググったところではGNUの機能削除版?
でも、-d があるらしいから絶対的に(?)必要な機能はあるんじゃないのかな?
0171デフォルトの名無しさん
垢版 |
2020/12/04(金) 20:20:16.74ID:9vuroJRJ
>>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
0172デフォルトの名無しさん
垢版 |
2020/12/04(金) 20:48:41.94ID:C8tBrA1L
> case1 なら BSDに合わせろw いや、どれもどこかに合わせろw

まあ、それだな。
macOSもあるのでLinuxだけに準拠すればいいという時代じゃない
あとawkとかやめてくれまじで
0173デフォルトの名無しさん
垢版 |
2020/12/04(金) 20:51:59.59ID:9vuroJRJ
>>172
> awkとかやめてくれまじで
別に同じようなことできる他のを使えばいいだろう。そっちが素直に書けると思うなら、そういうように読み替えて
失礼ながら、マジでは以後も無視します。別に拘ってるわけでもないしね(使うことに/使わないことにどっちも)
0174デフォルトの名無しさん
垢版 |
2020/12/04(金) 20:53:34.79ID:C8tBrA1L
> 別に同じようなことできる他の
ってなに?まさかPerlとは言わないよね?w
0179デフォルトの名無しさん
垢版 |
2020/12/04(金) 22:08:45.95ID:DO1guVvJ
へえ
0180デフォルトの名無しさん
垢版 |
2020/12/04(金) 22:11:28.39ID:UZX5oUlx
>>177
両方だろ。タイミング次第ではバグる。遅い。

> POSIX準拠のクソ長いコードの方がいくらかマシだなw
POSIX準拠のクソ長いコードってこのスレででてたっけ?
0183デフォルトの名無しさん
垢版 |
2020/12/04(金) 22:24:14.25ID:aYzT9jgU
>>182
あいつを模写ってるのだろうが、馬鹿みたいだからやめなさいw
あいつと同じ馬鹿みたいな無理筋なマウント取りたいだけに見えるからw
0185デフォルトの名無しさん
垢版 |
2020/12/04(金) 22:29:34.69ID:aYzT9jgU
>>184
お前はあいつなのか?
俺は>>180のレスに反してはないぞ、よくわからん追いきれてない部分があるけどな
だからやめなさいと言ってるだろw
0186デフォルトの名無しさん
垢版 |
2020/12/04(金) 22:36:07.76ID:UZX5oUlx
反対しないならレスしないでよ
POSIX準拠のクソ長いコードがでるのをまってるの
0187デフォルトの名無しさん
垢版 |
2020/12/04(金) 22:40:10.63ID:aYzT9jgU
えーっw
そういうこというとなおさらあいつみたいな自己中自分だけの世界で生きてるやつに...w
まあ、なんらかの恥ずかしさからそう言っちゃったと受け取っておくよw

大人しく俺も待つよww
0189デフォルトの名無しさん
垢版 |
2020/12/05(土) 00:07:35.66ID:Q5wPn3Se
「POSIX準拠のクソ長いコード」って
>>158
この人が言ってた「コードもクソ長いし」を念頭に置いてるんじゃ
0190デフォルトの名無しさん
垢版 |
2020/12/05(土) 00:10:29.29ID:Q5wPn3Se
自分はポジックス信者ではないけど,
「BSDの場合はこうする,GNUの場合はこうする」っていうふうに
ダラダラ場合分けして長くなったコードより,
「POSIXに準拠する」ことを目的として長大になったコードの方が
どちらかというと良いと思うな。

GNU環境用とBSD環境用にコードを分けるのが一番賢いやりかただと思っているが。
0191デフォルトの名無しさん
垢版 |
2020/12/05(土) 01:06:34.20ID:8Ma0zJVZ
ダラダラ場合分けして長くなったコードってどこにあるの?
一つの変数に場合によって一つの値を設定してるのが一箇所あるだけのコードのこと?
0192デフォルトの名無しさん
垢版 |
2020/12/05(土) 01:24:03.81ID:Tpji0Itw
> 「POSIXに準拠する」ことを目的として長大になったコードの方

これもどれのことかわからん
0193デフォルトの名無しさん
垢版 |
2020/12/05(土) 01:36:28.83ID:Tpji0Itw
まさかPOSIX準拠のクソ長いコードって>>156のコードのことなのか?
あれはシェルスクリプトの部分はごく僅かでほぼ9割がawkスクリプト
しかもオプション解析とか無駄なことをやってるからクソ長くなってるだけ
いやアルゴリズムもなんかムダに長い気がするな
あれみていってるなら、POSIX準拠とはクソ長いは全く関係ない
0194デフォルトの名無しさん
垢版 |
2020/12/05(土) 08:05:02.70ID:L0bYd0ih
>>193
それは違う。(別に>>156を積極的に養護するつもりもないがw)
POSIXののdateには秒->日付、日付->秒、どちらの機能もないから自作するしかない。
awkを呼ぶにしてもPOSIXのだと時刻系関数がないから自作。
POSIXerはつらいということw
0196デフォルトの名無しさん
垢版 |
2020/12/05(土) 11:58:33.40ID:En2ZUb0e
dateコマンド使うにしてもcoreutilsダウンロードして使うだけだから何も辛くない

自分はPOSIX云々より便利に使えるほうがいいから
cronパーサーみたいの使って`next_time ‘0 0 10 * * Fri’`みたいなコマンド作る
0197デフォルトの名無しさん
垢版 |
2020/12/05(土) 12:30:36.45ID:Q5wPn3Se
まあ「辛くない」って言える内は幸せよ……
経験を積んでくると,POSIXに準拠しようがしていまいが,
複数のシステムで期待どおりの動作をさせることが
どれだけ大変かが身に沁みて分かってくるから。
0198デフォルトの名無しさん
垢版 |
2020/12/05(土) 12:43:57.73ID:Q5wPn3Se
>>193
まさかもなにもそうじゃない?
知らないのかもしれないけど,POSIXって単にシェルの
挙動だけを決めてるんじゃなくて,
AWKとかC言語とか他のプログラミング言語の仕様も決めてるのよ。

ちなみにAWKのPOSIX仕様は↓ここで読める。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html

だから>>156のコードは「POSIX準拠のクソ長いコード」と言ってしまって良い。
0199デフォルトの名無しさん
垢版 |
2020/12/05(土) 13:34:14.56ID:++4jxPOM
いやこのスレ、シェルスクリプトのスレだから

C言語で書いてもPOSIX準拠だね
だけどこのスレでC言語で答えるのは間違いでしょ
0200デフォルトの名無しさん
垢版 |
2020/12/05(土) 13:36:57.86ID:En2ZUb0e
>>197
>複数のシステムで期待どおりの動作をさせることが
>どれだけ大変かが身に沁みて分かってくるから。

がんばってw
0201デフォルトの名無しさん
垢版 |
2020/12/05(土) 17:21:06.89ID:WoNSxYte
>>199
>だけどこのスレでC言語で答えるのは間違いでしょ

ということはcoreutilsを別途入れるのは反則? w
0203デフォルトの名無しさん
垢版 |
2020/12/06(日) 00:28:21.63ID:rU5Tjp1X
なんかグダグダやってるけどシェルスクリプトで
UNIXタイムの変換ってぐぐったら普通にでてくるやん
0208デフォルトの名無しさん
垢版 |
2020/12/06(日) 01:09:11.46ID:I5tPmPco
ほらな、自分で出せないもんを人に調べさせようとする
新興宗教といっしょ
そんなもんはない
0209デフォルトの名無しさん
垢版 |
2020/12/06(日) 01:11:49.17ID:rU5Tjp1X
検索して見つけたページを出せなんて言ってないよ
ただあんたが検索した「単語」だけを書けばいい
見つからなくても実際に検索してなくてもOKだよ
0210デフォルトの名無しさん
垢版 |
2020/12/06(日) 01:14:01.83ID:rU5Tjp1X
ちなみになんでこんな事を聞いてるかというと
検索して見つけられないなんてことが
有るんだろうか?って疑問になったから
0212デフォルトの名無しさん
垢版 |
2020/12/06(日) 02:04:12.25ID:rU5Tjp1X
ちなみに俺が検索した単語は「シェルスクリプト UNIXタイム」
もう一度聞くけど、お前は何の単語で調べた?
0213デフォルトの名無しさん
垢版 |
2020/12/06(日) 02:08:46.21ID:NqcvkCcY
>>202
草生やしたコメントにマジレスするなら、あえて「わからん」と言うね。

極論すればシェルスクリプトのお題は常にC言語で解くことが可能で、
そのコードをコンパイルしたコマンドを使うことは可能。coreutilsもその一種だろ。

だったら明確な指針でも書いてくださいw
0214デフォルトの名無しさん
垢版 |
2020/12/06(日) 02:17:28.74ID:NqcvkCcY
>>203
ただの後出しジャンケン乙w
例えばUNIXタイム以外でどうにかするとかいうなら今からコメントする価値はあるが。
0215デフォルトの名無しさん
垢版 |
2020/12/06(日) 02:23:24.16ID:rU5Tjp1X
チューリング完全かどうかでいいんじゃないの?
チューリング完全なもので実装=他言語で実装
ここはシェルスクリプトのスレなので対象外
0218デフォルトの名無しさん
垢版 |
2020/12/06(日) 11:04:27.70ID:+d6RCg1G
>>215
なるほど。
そうするとPOSIX sedは計算完備ではないので
このスレで詳しく議論できるな。
よかったよかった
0221デフォルトの名無しさん
垢版 |
2020/12/06(日) 12:46:27.12ID:+d6RCg1G
ちなみに*GNU* sedの--posixオプション付けて動かして
「動いているように見える」からPOSIX sedに準拠してる!っていうのは
当然だめだからね。分かってると思うけど。
0225デフォルトの名無しさん
垢版 |
2020/12/06(日) 12:57:09.16ID:43odFZj2
倉庫番のやつ、99ステージあるけどどうやってるんだろうと思ったら
普通にソースコードに初期配置が文字列で書かれてるんだなw
0236デフォルトの名無しさん
垢版 |
2020/12/07(月) 02:12:05.18ID:zwD8QGuc
しかし、ポジ準拠を謳いつつ、バグでもあったらどうすんだ?
処理系の問題だと言い張って、相手にしないつもりなの?

どこでも動くとか無責任なことは言うまい。
必要なのは動作確認。
0237デフォルトの名無しさん
垢版 |
2020/12/07(月) 08:49:22.82ID:KzEPqVfm
> しかし、ポジ準拠を謳いつつ、バグでもあったらどうすんだ?
動作確認すればいいだけ
0240デフォルトの名無しさん
垢版 |
2020/12/07(月) 17:48:32.54ID:l3Pgl7mQ
>>216
あー言い方がよくなかった。
すでに解決した問題のごく一部を後からかいつまんで、何か自分が有益な情報を
与えたかのようなふりをすること、だ。こういうのを何と言ったっけな。
コバンザメとか、そういうのにも近い。
0241デフォルトの名無しさん
垢版 |
2020/12/07(月) 19:02:40.12ID:hZsbXMrW
> すでに解決した問題

いいえ、POSIX準拠のシェルスクリプトでの
UNIXタイムの変換の話は出ていませんでした。
0242デフォルトの名無しさん
垢版 |
2020/12/07(月) 19:05:58.05ID:hZsbXMrW
有益な情報を与えたというか、単にググりましょうと言っただけですね。
下手の考え休むに似たり。ググればすぐ見つかるのに無駄な時間を過ごしてるなと言う話です。
0244デフォルトの名無しさん
垢版 |
2020/12/08(火) 00:37:56.66ID:/pT3aml4
>>243
まとめるとね

POSIXのdateには+%sがないし、今日の日付は取得できるけど任意の日付は取得できない
+%jを使った計算は出てるけど月日形式じゃなくて、その年の初めからの日数(例 12月08日の場合は343日)からの
変換だから、一般的な年月日形式からの変換はできない。またUNIXタイムから年月日への変換は全くでてない。

という話の流れぐらいわかってください
0248デフォルトの名無しさん
垢版 |
2020/12/08(火) 19:20:40.05ID:ZFT993pL
>>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
チューリング完全かどうかでいいんじゃないの?
チューリング完全なもので実装=他言語で実装
ここはシェルスクリプトのスレなので対象外
0249デフォルトの名無しさん
垢版 |
2020/12/08(火) 19:34:42.29ID:TAcWm+rA
なるほど,ではAWKやsedを使わずに,
「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」
を示してください。
0250デフォルトの名無しさん
垢版 |
2020/12/08(火) 19:43:49.41ID:ZFT993pL
「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」
を検索してください。
0251デフォルトの名無しさん
垢版 |
2020/12/08(火) 19:45:03.55ID:ZFT993pL
検索キーワードを自分で書くとか
わかっててわざとやってるんだろうか?w
0252デフォルトの名無しさん
垢版 |
2020/12/08(火) 20:44:10.87ID:hItfS6FC
ポジがどうのはよくわからんがsuperじゃないedもダメなの?今man引いたらだとgnu-ed(ed)が出てきてポジ云々書いてない
シェルスクリプト用途のgrep/sedの7割くらいは違和感なく置き換えられると思うが
0253デフォルトの名無しさん
垢版 |
2020/12/08(火) 21:53:32.63ID:ZFT993pL
>>252
POSIX準拠だと移植性が上がるのでベター
コマンド呼び出しは遅いのでシェルスクリプトで実装したほうが圧倒的に速い
この2つの話が混ざってる
0255デフォルトの名無しさん
垢版 |
2020/12/08(火) 22:28:27.56ID:TAcWm+rA
ていうか「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 でも言及があるな。

それともこれは嘘?
0256デフォルトの名無しさん
垢版 |
2020/12/08(火) 22:30:51.38ID:TAcWm+rA
まあこんだけグダグダやってもそのコードが挙げられない,ってことは,
多分最初に言及してたのは >>156 のコードで,
それを脊髄反射で否定してしまったから出そうにも出せなくなってしまってる,ってとこだろう。

↑これに反論したけりゃ実物のコードを出せ。そしたらそれで済む話だ。
俺は気にしないが,君が体裁を気にするような人物なら,コードを出してくれたら
「すいませんでした」と言ってもいいぞ。
0257デフォルトの名無しさん
垢版 |
2020/12/08(火) 22:47:32.95ID:3Lge4PBr
date コマンド1回で、POSIXで、awkやsedなしで、早い処理で ....

意味不明になってきてるけども。
まあそうやって遊びたい人は自分でやれば。ってそういう奴に限って自分ではできない
0258デフォルトの名無しさん
垢版 |
2020/12/08(火) 23:12:57.26ID:TAcWm+rA
>>257
いやいやそれを俺に言うのは違うでしょ。
俺は >>156 でいいじゃん,と言っている。

ところが >>203 やら >>250 で,
「AWKやsedを使わない」
「POSIX準拠の」
という条件が出てきている訳だ。
それは純粋に知りたいでしょ。
俺の知っているPOSIXに準拠しつつ
UNIX時間変換を行えるのはAWKでのやりかた。
0261デフォルトの名無しさん
垢版 |
2020/12/09(水) 00:45:24.40ID:XzWvmoKM
単純な時間計算の質問をネタにマウンティング合戦を1週間も続けられるってすごいよね

シェルスクリプトにこだわる人はさすが生産的!!
0268デフォルトの名無しさん
垢版 |
2020/12/09(水) 01:50:34.09ID:eCHhpLek
>>249
> なるほど,ではAWKやsedを使わずに,
> 「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」
> を示してください。

「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」でGoogleで検索して
上位5つの検索結果=「現物」を持ってきてください
人によって順位は違うらしいからね

なぜ現物を持ってこれないのか?
検索で簡単に見つかるという現実を受け入れられないからなのかな?
0269デフォルトの名無しさん
垢版 |
2020/12/09(水) 01:51:21.47ID:eCHhpLek
検索結果を貼り付けるだけでいいんだけどな
なんでそんな簡単なことができないんだろう?
0270デフォルトの名無しさん
垢版 |
2020/12/09(水) 02:03:19.79ID:S8QsR+fb
天才的w計算式で確証持てないとかかなあ
もしくは本当にググればすぐ出てるだろうかw
0271デフォルトの名無しさん
垢版 |
2020/12/09(水) 02:32:53.12ID:eCHhpLek
まあ計算式みても確証は持てないわな

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
ここで指摘されてる

何がいいたいかって言うと、この手のやつは計算式でもアルゴリズムでも
ぱっと見で確証持てないなんて当たり前だよってこと
うるう年の計算でさえ人類は何度もバグを入れてきた
0272デフォルトの名無しさん
垢版 |
2020/12/09(水) 02:37:26.28ID:eCHhpLek
ん?今気づいたが>>156のやつって、Rich’s sh (POSIX shell) tricksに
書いてあるバグありバージョンじゃんw
echoに書き換えてるから気づかなかったが計算式が一緒

awkスクリプトのやつも正しいかどうかわからんよねと
言おうとして、見返して気づいた
0273デフォルトの名無しさん
垢版 |
2020/12/09(水) 02:44:05.93ID:eCHhpLek
比較してみた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に書き間違えてるんだな
検証大事
0278デフォルトの名無しさん
垢版 |
2020/12/09(水) 02:56:41.58ID:jODQKuwy
このようにPOSIXに拘泥するとバグります。
と言うよりPOSIXバカは一般人よりバグを出す率が高い。
証拠はググったら出てくるw
0279デフォルトの名無しさん
垢版 |
2020/12/09(水) 02:57:35.34ID:eCHhpLek
POSIX関係ない。単に>>156がバカなだけ
検証もせずバグありコードと冗長なawkスクリプト持ってきてるw
0282デフォルトの名無しさん
垢版 |
2020/12/09(水) 09:31:11.63ID:vZ4bQifg
自分がコードを出せないからといって他人を僻むのはやめましょうw
結局、POSIXの範囲でUnixタイム→通常時間への変換はAWK使う方法くらいしかない。

ほんまポジバカは口先だけで何も生産しようとしないな。
別に擁護する訳じゃないが、ちゃんとコードを出すだけ >>156 とかのほうがまだマシ
バグがあったとしても指摘して修正できる。
一方、コードを出さなければいつまでたっても自分の間違いをつっつかれることはない。
0283デフォルトの名無しさん
垢版 |
2020/12/09(水) 10:06:49.17ID:ZEWfqGU4
>>282
なんてキーワードで検索した?
なんで検索結果の上位5位という「現物」を
ここに貼り付けられないの?

再掲
> 「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」でGoogleで検索して
> 上位5つの検索結果=「現物」を持ってきてください
> 人によって順位は違うらしいからね
>
> なぜ現物を持ってこれないのか?
> 検索で簡単に見つかるという現実を受け入れられないからなのかな?
0287デフォルトの名無しさん
垢版 |
2020/12/09(水) 11:59:10.93ID:ZEWfqGU4
検索結果の上位5位がないってどういう状態?
見つけたものじゃなくて、検索結果だよ。
Google検索が壊れてるの?
0288デフォルトの名無しさん
垢版 |
2020/12/09(水) 12:19:16.95ID:vZ4bQifg
どんだけ検索結果にこだわってんだよwww
そんなのどうでもいいから
お前が見つけたサイトやら記事やらを晒せって言ってんだよ。

頭おかしいなりに付き合ってたら
ポジキチからなにかPOSIX準拠でAWKに依存しないコードが得られるかも
と思ってここまでレスを返してあげてきたがもういいわ。
>>156 のutconvで十分。
AWKスクリプトがどうとかは関係ない。
あとPOSIXにこだわるのをやめるのも一つの手だぞ。
date -dとか%sとかなんてほぼどんなシステムでも使えるんだから。
0289デフォルトの名無しさん
垢版 |
2020/12/09(水) 12:32:45.70ID:ZEWfqGU4
> ポジキチからなにかPOSIX準拠でAWKに依存しないコードが得られるかも

だから検索したら得られるって何度も言ってる
検索キーワードも(誰かがw)書いた
得られるのは確定、お前に検索ぐらいしろよと言ってるだけ
0290デフォルトの名無しさん
垢版 |
2020/12/09(水) 12:35:10.53ID:ZEWfqGU4
> date -dとか%sとかなんてほぼどんなシステムでも使えるんだから。

有名である程度のシェアを持ってるmacOSで使えない
0291デフォルトの名無しさん
垢版 |
2020/12/09(水) 12:43:08.94ID:jODQKuwy
だから検索したら得られないって何度も言ってる
得られないのは確定、お前に結果ぐらい貼れよと言ってるだけ
無いから貼れないんだろうがな
0292デフォルトの名無しさん
垢版 |
2020/12/09(水) 12:45:51.62ID:ZEWfqGU4
> だから検索したら得られないって何度も言ってる

それが事実かどうか判断するために
検索結果をここに貼れと言ってる

無関係の記事や、見つからなかったという結果でいいんだよ。
単に検索結果だけ貼ればいい。それぐらいできるでしょ?
0293デフォルトの名無しさん
垢版 |
2020/12/09(水) 13:11:36.81ID:jODQKuwy
> だから検索したら得られるって何度も言ってる

それが事実かどうか判断するために
検索結果をここに貼れと言ってる

見つかった記事や、見つかったという結果でいいんだよ。
単に検索結果だけ貼ればいい。それぐらいできるでしょ?
0296デフォルトの名無しさん
垢版 |
2020/12/09(水) 13:18:05.27ID:ZEWfqGU4
むしろなんでシェルショッカーの記事を見つけだせたのかわからん
こっちの方が検索しても見つからないぞ

(あ、シェルショッカー本人かw)
0297デフォルトの名無しさん
垢版 |
2020/12/09(水) 13:19:51.75ID:rIU0lDlE
検索したらPOSIXはオワコンって書いてあった。
検索すればすぐ出てくる。
出てこないというならその結果を貼れ。
0298デフォルトの名無しさん
垢版 |
2020/12/09(水) 13:20:27.65ID:ZEWfqGU4
>>295
検索して見つからなかったというのなら
その見つからなかった結果を貼れと言ってます

あるなら貼るだと、なければ貼れないけど、
あってもなくても貼れなら
検索結果が貼れないなんてことはないのです
0299デフォルトの名無しさん
垢版 |
2020/12/09(水) 13:21:20.38ID:ZEWfqGU4
>>297
なんてキーワードで検索したんですか?

ちなみに見つかる検索キーワードは
上の方で「」つきでしっかり書かれています。
0300デフォルトの名無しさん
垢版 |
2020/12/09(水) 13:22:45.72ID:jODQKuwy
しょうゆは発ガン物質。
検索すればすぐ出てくる。
検索して見つからなかったというのなら
その見つからなかった結果を貼れ
0301デフォルトの名無しさん
垢版 |
2020/12/09(水) 13:24:09.58ID:ZEWfqGU4
ちなみにこちらは「見つかっても見つからなくてもいいから」
「検索結果」を貼れと言ってます。

検索したという事実を見たいだけです。

無関係な例えは潰しておきますw
0303デフォルトの名無しさん
垢版 |
2020/12/09(水) 13:28:41.82ID:ZEWfqGU4
>>302

代わりにお前でもいいよw
見つからなくていい。ググって出てきたものを貼るだけ

再掲
> 「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」でGoogleで検索して
> 上位5つの検索結果=「現物」を持ってきてください
> 人によって順位は違うらしいからね
>
> なぜ現物を持ってこれないのか?
> 検索で簡単に見つかるという現実を受け入れられないからなのかな?
0304デフォルトの名無しさん
垢版 |
2020/12/09(水) 13:31:32.04ID:jODQKuwy
見つかったなら貼ればいいだけ
見つからない、貼れない、
だからすり替えでごまかしてるだけw
誰にも効いてないがw
0306デフォルトの名無しさん
垢版 |
2020/12/09(水) 13:43:40.09ID:jODQKuwy
見つかった証拠出せ。
貼るだけ。
これができないのはなぜでしょう?
答え:嘘んこだからw
0307デフォルトの名無しさん
垢版 |
2020/12/09(水) 14:27:06.23ID:ZEWfqGU4
嘘か本当か自分で調べればわかること
本当に調べたのであれば検索結果を貼ることが出来るはず

見つかった証拠を貼れと言ってるのではない
検索した結果を貼れと言ってるだけで内容についてはどうでもいい

これができないのはなぜでしょう?
答え:検索すらできない人だからw
0308デフォルトの名無しさん
垢版 |
2020/12/09(水) 15:51:00.03ID:An1T/9HU
【置換前文字列1】を【置換後文字列1】に、【置換前文字列2】を【置換後文字列2】に、、、
ってときに
sedを一行で書くのではなく、何行かに分けてかくのが普通ですか?
(単に複業数を一行に見せるやり方という意味ではなく、置換前後の対応的な書き方があるのかなと)
0310デフォルトの名無しさん
垢版 |
2020/12/09(水) 16:28:08.45ID:vZ4bQifg
>>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

↑こういう「普通の」操作なら別にどっちでも結果が変わらないから
自分が好きな方で書けばいいんじゃないかな。
0311デフォルトの名無しさん
垢版 |
2020/12/09(水) 16:31:23.67ID:ZEWfqGU4
>>308
見やすいように書けばいいよ
長ければ複数行じゃないと見づらいだろ?

sedって引数で正規表現置換命令を単体で書くような感じだけど
実際は複数の命令を書くところなんだよね

こういう引数で置換!じゃなくて
行を読み取ってその行に対して、あれをやってこれをやってそれをやって・・・と複数の命令を書く
それがわかってない人が意外と多い気がする
0312デフォルトの名無しさん
垢版 |
2020/12/09(水) 17:17:45.74ID:h/snEzA+
っていうか前スレがまだ埋まってないやん
検索結果がなんだのくだらない話で埋めてくれてもええんやで
0313デフォルトの名無しさん
垢版 |
2020/12/09(水) 21:46:27.20ID:vZ4bQifg
最近findの-exec被演算子による実行を
for _var_ in *; do ...; done
を置き換える形で好んで使っている。
まあfor文の何が悪いって訳じゃないけど
強いて挙げるならfindを使う方法は余計な変数を用意しなくていい。
for文にしかできないことっていうのもそうそうないし。
0315デフォルトの名無しさん
垢版 |
2020/12/09(水) 22:17:29.01ID:0QlTtfMo
適材適所

forはファイル数が多数になった場合には引数が多すぎでエラーになる可能性があるから
ファイルを繰り返し処理するのはおすすめできない
ただし-execはシェル関数が呼べなかったりシェルスクリプトの処理との連携が
できないというデメリットが有る

外部コマンドを呼び出すだけなら-execでいいが
そうとは限らない場合はfind + while + read ループの方がいいだろう

ファイルの数が少ない場合は外部コマンドを呼び出さない分
for(というか * )の方が速い

それで検索してみたか?
0316デフォルトの名無しさん
垢版 |
2020/12/09(水) 22:27:18.92ID:0QlTtfMo
forは余計な変数がいるけど
whileを使えば余計な変数は不要

どうするかって?

set -- *
while [ $# -gt 0 ]; do ...; shift; done

余計な変数がいるからforを使わないというのは正しいが
余計な変数がいるからfindを使うは正しくない
0319デフォルトの名無しさん
垢版 |
2020/12/10(木) 13:32:02.46ID:PUDbf/ME
>>309
これについて
手元のGNU findで試してみたけど 該当するfile/dirが1件も見付からない場合でも
エラーにならないというかexit statusは0だった。
もっとも これが正しい挙動なのかは不明。
0322デフォルトの名無しさん
垢版 |
2020/12/10(木) 18:05:30.50ID:A3fjGgOY
これ以外に何の解釈が有るんだ?

EXIT STATUS
The following exit values shall be returned:

0 All path operands were traversed successfully.
>0 An error occurred.

終了ステータス 次の終了値が返されます。

0 すべてのパスオペランドが正常にトラバースされました。
> 0 エラーが発生しました。
0323デフォルトの名無しさん
垢版 |
2020/12/11(金) 00:40:48.48ID:wU/o6Go9
>>322
対象となるファイルが一つも見付からなかった場合、
終了ステータスは0?
0324デフォルトの名無しさん
垢版 |
2020/12/11(金) 01:30:47.40ID:s+ujdTab
>>323
悪い仕様の書き方の見本みたいなところあるけど
ファイルが見つかったかどうかはEXIT STATUSには無関係

ファイルが見つかっても見つからなくても
なんらかのエラーで走査できないパスが1つでもあればEXIT STATUSは1以上
全てのパスが走査きればファイルが見つかっても見つからなくてもEXIT STATUSは0
0325デフォルトの名無しさん
垢版 |
2020/12/11(金) 02:02:17.08ID:76SqqmH2
一般的にはプログラムが正常終了すれば0
異常終了すれば1
ファイルが一つも見つからなくても
プログラムが正常に終了したので0になる
0327デフォルトの名無しさん
垢版 |
2020/12/11(金) 10:03:55.72ID:ExAO4AKO
あげ
0332デフォルトの名無しさん
垢版 |
2020/12/11(金) 12:51:27.35ID:vQm1aiEb
sedについて質問。
入力に¥x80以上の文字が含まれていた場合、正規表現「.」はマッチしないんだっけ?
試しに「[¥x00-¥xff]」とするとエラーになるし。。。
任意のバイナリは扱えない?
0335デフォルトの名無しさん
垢版 |
2020/12/11(金) 14:42:33.40ID:vQm1aiEb
>>334
ほかにも'\\', '\a', '\b', '\f', '\r', '\t', '\v'は使えるようだが、それだけか。
うぬぬ。。。

では、次のようなバイナリがあったとき、数値部分を抽出するにはどうすればいいかな?

<任意のバイナリ><数値テキスト>
0338デフォルトの名無しさん
垢版 |
2020/12/11(金) 16:52:32.46ID:vQm1aiEb
>>336,337
ありがとう。
一瞬だけgrepでなんとかならんかな?と思ったけど、いやムリやろと自己完結してた。。。

ちなみに試した感じ、grep -o(--only-matching)で充分そうだけど、-a(--text)は何のため?
0339デフォルトの名無しさん
垢版 |
2020/12/11(金) 17:36:15.90ID:IIqX/1kZ
>>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 | ......|
0340デフォルトの名無しさん
垢版 |
2020/12/11(金) 17:40:10.43ID:IIqX/1kZ
$ LANG=C sed "s/./ /" a.txt | hexdump -C
00000000 20 bc a2 e5 ad 97 0a | ......|
0341デフォルトの名無しさん
垢版 |
2020/12/11(金) 18:05:15.53ID:FiGFWWeM
>>338
なんでドキュメントみないのかな

grep はファイルがバイナリだとわかると、 その先の出力を抑制します。
0342デフォルトの名無しさん
垢版 |
2020/12/11(金) 18:27:02.69ID:vQm1aiEb
>>339
あー、なるほど。
エスケープとかじゃなくて、直にその文字コードの文字を入力したらいいのか。

ってムリ。w
入力ができるできないで言えばできるけど、後から文字が読めなくなるし。

とにかく、sedだってバイナリを扱えないことはない、ということはわかりました。
ありがとう。
0343デフォルトの名無しさん
垢版 |
2020/12/11(金) 18:29:19.33ID:vQm1aiEb
>>341
いや、実際にバイナリに見えるであろうデータを流して問題がなかったから。
-aなしだとgrepの判定次第になるから、保険でつけといたほうがいいか。
0344デフォルトの名無しさん
垢版 |
2020/12/11(金) 18:36:44.59ID:IIqX/1kZ
>>342
> 入力ができるできないで言えばできるけど、後から文字が読めなくなるし。

$ A=$(printf '\xe6')
読めるだろ?

後からって読むならスクリプトファイルにしてるはずだし
なにか問題が?
0345デフォルトの名無しさん
垢版 |
2020/12/11(金) 19:02:21.38ID:vQm1aiEb
>>344
えー。
sed --expression "/[$(printf '\x80')-$(printf '\xff')]/"
とかかなりやばくね?w

今回はgrepでいいです。。。
0346デフォルトの名無しさん
垢版 |
2020/12/11(金) 19:13:58.45ID:IIqX/1kZ
x80=$(printf '\x80')
xFF=$(printf '\xff')
sed --expression "/[$x80-$xFF]/"
でいいだろ

なんでこう頭が固いのか
0349デフォルトの名無しさん
垢版 |
2020/12/11(金) 21:42:27.33ID:IIqX/1kZ
>>348
元のコードがやばいって言ったのはお前なんだが
じゃあ何がやばいんだ?
なんで変数にしただけで事故るんだ?
いきあたりばったりで理由づけするのやめろよ
0351デフォルトの名無しさん
垢版 |
2020/12/11(金) 22:41:13.04ID:vQm1aiEb
>>349
オレのもとのコードはたんに読みにくくてヤバいが、そっちのコードは、一度しか使わない変数で、さらにその名前と値がダブってるところがもっとヤバい。

いきあたりばったりなどではない、確固たるオレの感覚。
わからんのなら、見解の相違ということで。
おしまい。
0352デフォルトの名無しさん
垢版 |
2020/12/11(金) 23:43:56.95ID:IIqX/1kZ
ダブルのがいやならこうすれば?少しは頭を使おう

for i in 80 ff; do eval "x$i=$(printf "\x$i")"; done
0353デフォルトの名無しさん
垢版 |
2020/12/11(金) 23:46:03.88ID:wU/o6Go9
sed --expression "/[$(printf '\x80')-$(printf '\xff')]/"

これが「ヤバい」理由を教えてくれたら改善≠ナきるかも知れない。
(正直私にはとくに「ヤバい」コードには見えないのだが……)
0354デフォルトの名無しさん
垢版 |
2020/12/11(金) 23:48:19.15ID:wU/o6Go9
ていうか読み直したら「感覚」で批判してるのな……
じゃあもういいや。
なんか理論的な欠点があるのかと思って,
私にはそうは見えなかったから勉強の為に訊こうとしたけど
そういう感じではなかったみたい。
0355デフォルトの名無しさん
垢版 |
2020/12/11(金) 23:52:49.09ID:IIqX/1kZ
他にもこうするとかな。マジ頭が固すぎ

LANG=C sed --expression "s/$(printf '[\x80-\xff]')//"
LANG=C sed --expression "$(printf 's/[\x80-\xff]//')"
0356デフォルトの名無しさん
垢版 |
2020/12/11(金) 23:57:16.95ID:IIqX/1kZ
「確固たるオレの感覚」が技術力不足によるものだから
自分が未熟であることに気が付かないとどうしようもないだろうな
staticおじさんと一緒
0357デフォルトの名無しさん
垢版 |
2020/12/12(土) 00:10:55.93ID:iu3yHDzN
(まだ)POSIX準拠じゃないけど、誰かに言われるのも嫌なので一応w

LANG=C sed --expression $'s/[\x80-\xff])//'
0359デフォルトの名無しさん
垢版 |
2020/12/12(土) 08:26:04.77ID:MG/EKh+i
あるコマンドがシバン使って実行されてたかどうかを知る方法ってある?
例えばscript.shってのがあったとして

$ script.sh ./file で起動されたのか、それとも

[file]
#!/usr/bin/env script.sh

$ ./file で起動されたのか区別したい
0360デフォルトの名無しさん
垢版 |
2020/12/12(土) 10:35:15.06ID:yfEaL+fJ
>>359
どこで判定するの?
script.shになにかを記述して判定するってことでいいか?

fileじゃなくてscript.shで判定するのは厳しいと思うよ。
というのもシバンは,たとえばLinuxでは
#!xxxx yyyy zzzz
というのを
$ xxxx "yyyy zzzz"
というようなコマンドラインに変換≠オて実行する訳だから,
xxxxにとってはシバンなのかコマンドラインなのか
判断付かないと思う(間違ってたらすまん)
0361デフォルトの名無しさん
垢版 |
2020/12/12(土) 13:55:22.07ID:Fly4aHPX
ちょっと話外れるけど
みんな「シバン」派?
俺の周囲はみんな「シェバン」て言ってる
どっちが主流なんだろ

「エヌテーテー」と「エヌティーティー」みたいな
世代間の差がある様な気がしてる
まぁどっちも意味通じるしどちらも間違ってはいないんだろうけど
微妙に気になる
0362デフォルトの名無しさん
垢版 |
2020/12/12(土) 14:01:32.15ID:Fly4aHPX
ちなみに「エヌテーテー」と「エヌティーティー」の差は
昔は他社とは電話でコミュニケーション取ってたから
「ティー」だと「イー」と間違われる事が多くて
意図的に「T」を「テー」と発音する様になったんだと先輩に聞いた
だからインターネット以前から働いてる人に多いらしい
0363デフォルトの名無しさん
垢版 |
2020/12/12(土) 14:12:09.74ID:cw6OjyZf
>>362
たぶん後付

じいちゃんばあちゃん世代は
ティッシュじゃなくてテッシュと言ってる
ディズニーランドはデズニーランド

テーテーは小さいイが発音できないのをごまかしたんだろ
0364デフォルトの名無しさん
垢版 |
2020/12/12(土) 14:17:40.89ID:Fly4aHPX
>>363
確かにうちの爺ちゃんもそんな感じだな
でも50代前半の上司も「テー」って言ってるし
流石にその位の歳の人は普通に言いそうなもんだが
0366デフォルトの名無しさん
垢版 |
2020/12/12(土) 15:04:57.86ID:zzt2f7BI
>>361
シェにはならんやら

尿瓶(シビン)のシとは発音が違ってsheやshipのシ
sheをシェーとかshipをシェップと言わないのと同じ
「シィバン」ならまあ理解できる
0368デフォルトの名無しさん
垢版 |
2020/12/12(土) 15:36:24.16ID:4UtPcEnB
>>366
「shell bang」だと思うと「シェル」「バン」、略して「シェバン」。
全然おかしくないやろ。
0369デフォルトの名無しさん
垢版 |
2020/12/12(土) 16:34:12.41ID:zzt2f7BI
>>368
じゃ一番有力なsharp-bangが語源と考えると「シャバン」
次に有力なhash-bangを日本語読みで考えると「シュバン」だね

語源がどうあれ語呂合わせで既存の単語に当てたんだからその単語の発音を使うのが普通じゃね?
それともshebangの発音を日本語にすると「シェバン」と書く派?
https://www.merriam-webster.com/dictionary/shebang
0372デフォルトの名無しさん
垢版 |
2020/12/12(土) 17:38:18.46ID:yfEaL+fJ
>>371
それは戦前の読み方が関係しているんであって,
今話題に上がっているtをテー読みするという話とはまた別では?
0377デフォルトの名無しさん
垢版 |
2020/12/12(土) 19:56:11.05ID:Fly4aHPX
恐らくだけど>>368が近いと思う
みんなbshを「ビーシェ」て言ってる
でもbashは「バッシュ」だから一貫性は無いな
0382デフォルトの名無しさん
垢版 |
2020/12/13(日) 11:09:17.16ID:RA5rFVG6
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 が出たときにそのループを終わらせたいです。
よろしくお願いします。
0384デフォルトの名無しさん
垢版 |
2020/12/13(日) 14:48:45.37ID:FEa/qC9x
>>382
find . -type f \( -exec sh -c 'echo "$1" | sed -e "s/\.\/sub\([[:digit:]]\{1,\}\)\/\(.*\)/\1-\2/"; cat "$1"' sh \{\} \; \) > all.txt
0385デフォルトの名無しさん
垢版 |
2020/12/13(日) 14:50:01.64ID:FEa/qC9x
>>384
前提条件
/tmp/382-test$ tree
.
├── sub00
│   ├── 000.txt # → りんご
│   └── 001.txt # → ごりら
└── sub01
└── 000.txt # → らっぱ
0386382
垢版 |
2020/12/13(日) 18:03:10.51ID:RA5rFVG6
>>383
それぞれのテキストファイルの中身ってことです。すいません。
>>384
ありがとうございます。
そのfish文があまり理解できないのでよかったら教えてください。
特に正規表現部分が複雑でうまく想像できません。
サブフォルダ内には.txtではないファイルもありますが、それはall.txtに入れたくありません。
>>385
/tmp/382-test$がよくわかりません。
また
├── sub00
│ ├── 000.txt # → りんご
│ └── 001.txt # → ごりら
├── sub01
│ └──000.txt # → らっぱ
ファイル構造はこうなっています。
サブフォルダ直下の.txt以外はall.txtに入れたくありません。
0388デフォルトの名無しさん
垢版 |
2020/12/13(日) 18:34:18.01ID:FEa/qC9x
>>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
0389デフォルトの名無しさん
垢版 |
2020/12/13(日) 18:35:35.67ID:FEa/qC9x
とりあえずやってみろ。というかFish shellじゃなくてBourne系のShell(例えばBash)を使ってくれ。
0394デフォルトの名無しさん
垢版 |
2020/12/13(日) 21:56:47.60ID:RA5rFVG6
>>388
ありがとうございます。
うまくいきました。

色分けされてて見た目がかっこいいのでとりあえずfishに変えてみたんですが、
ネットにあまり情報がなくて知識がないと使いこなせなそうなので考え直します。
0397デフォルトの名無しさん
垢版 |
2020/12/13(日) 23:47:15.24ID:0ni70Uaa
echo a #b は a と出力されるけど
echo a#b は a#b と出力されるのは
POSIXで決まってますか?
0398デフォルトの名無しさん
垢版 |
2020/12/14(月) 00:24:09.46ID:v0FLOFDn
>>359
>>360
一般には不可能だと思うけど、Linuxの場合かつshebangで #!/path/to/script.sh のようにenvを使っていない場合は一応可能かもしれない。
script.shの中で cat /proc/$$/comm とすると、前者はscript.shになっていて、後者は./fileになっている。
これはtopに出るコマンド名に相当する。
ただし、パスではなく単なるファイル名なので不完全。
0399デフォルトの名無しさん
垢版 |
2020/12/14(月) 01:25:47.70ID:Bk30KwCz
>>359
>>360
script.shがCプログラムなら、その中でgetauxval(AT_EXECFN)の結果を見れば分かる
これは、exec系のシステムコールが最初に実行したファイル名をもとに設定されるから、スクリプトならスクリプトのファイル名になる
一方、script.shがbashスクリプトなら、↑の内容が変数$_に入っている
いずれもenvを使った場合は原理的に不可能(そもそもshebangでenvを使うのはあまりよろしくない)
これはenvがscript.shをもう一度execするから、↑の内容がscript.shで上書きされるため
0400デフォルトの名無しさん
垢版 |
2020/12/14(月) 11:37:42.84ID:Bk30KwCz
>>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に入る
0401デフォルトの名無しさん
垢版 |
2020/12/14(月) 13:24:17.46ID:FxT1T5PM
自分の技術力不足をSQLのせいにしている典型的な例だなw

私は昔、2000行に及ぶ一つのselect文を書いたことがある。
副問い合わせの嵐でおぞましい姿をしていた。
あれはSQLの匠に見せればマシになるのだろうか。

もしあの時、既にシェルスクリプトでやる発想があったらよかったが……。
副問い合わせがいくら連なっても素直に書けるからな。

SQLで副問い合わせを多段に利用する場合、インデントが欠かせないと思う。
例えばselect文なら、from句(データ入口)が途中にあるせいでインデント無しではselect文の範囲を区別しづらい。

一方シェルスクリプトの場合、データの出入口は先頭・末尾なので、
インデント無しに無理なく書き足していける。
0403デフォルトの名無しさん
垢版 |
2020/12/14(月) 14:07:16.58ID:AlgRlAv7
怖っ!
0404デフォルトの名無しさん
垢版 |
2020/12/14(月) 15:27:22.26ID:11mjuS31
長いSQLを誇る=汚いテーブル設計がされてるレベルの低い現場で働いていた証
0406デフォルトの名無しさん
垢版 |
2020/12/14(月) 16:59:48.58ID:FxT1T5PM
https://twitter.com/shellshoccarjpn/status/1338173393993023488

> 己の未熟さを棚に上げ、シェルスクリプトを批判し、使いこなしを放棄し、
> 高級言語やミドルウェア、その他を乱用する。
> そのせいで複雑化して開発効率が落ちれば、また別の、
> 新たなそれらを導入する。愚かな。過度な依存の先に待っているのは破綻だ。

己の未熟さを棚に上げ、SQLを批判し、使いこなしを放棄し、
やってもないのにシェルスクリプトなら素直に書けるとウソを付く
https://twitter.com/5chan_nel (5ch newer account)
0407デフォルトの名無しさん
垢版 |
2020/12/14(月) 17:14:47.67ID:i9MTeufC
いつものPOSIXといいながら
シェルスクリプトのことしか言わず
シェルスクリプトと言いながらawkスクリプトを書く
頭のおかしい人
0410デフォルトの名無しさん
垢版 |
2020/12/14(月) 20:48:00.40ID:UmA4y/hI
>>409
POSIX原理主義とかいうマイナーな宗教(笑)関連者

上の方ででていたawkスクリプトによるUNIXタイム計算を書いた人
https://github.com/ShellShoccar-jpn/misc-tools/blob/master/utconv

シェルスクリプトでウェブアプリを作れるとかいう
ユニケージにも関係していると見られる
POSIX、POSIXうるさいが、自分たちの独自理論を使ったビジネスに
利用しているだけ。POSIXの威を借る狐状態

このビジネス(ユニケージ)の犠牲になったのが東急ハンズで
ユニケージは負債扱い。脱ケージ活動という言葉まで言われている

東急ハンズがシステム更新で炎上した事件は
このユニケージが影響してるのではないかと言われている
0411デフォルトの名無しさん
垢版 |
2020/12/14(月) 21:51:45.70ID:SM2t3qAq
別にPOSIX主義者を用語するつもりはないけど,
Twitterでの話題をこっちまで引っ張ってきてネチネチ呟いているのも大概だと思うぞ。
0414デフォルトの名無しさん
垢版 |
2020/12/15(火) 03:03:15.13ID:SKnt5XjU
そのプログラミングの本質がだめなんだよなw

POSIXは移植性を上げるための最低限の規則であって
それだけじゃ足りないし、開発効率を上げるためのものじゃない
POSIX準拠は問題ないが、POSIX準拠のコマンドだけを使うのは馬鹿げている

具体的には各種ライブラリを使っていいし使うべき
そのライブラリがPOSIX準拠(のC言語等)で作られているならなおさら
RubyやPythonだって結局はPOSIX準拠のものを使って作られてるんだろ?
0415デフォルトの名無しさん
垢版 |
2020/12/15(火) 05:17:35.02ID:vYGb7HVK
Ruby 以外でシステムを作ったら、まず保守できない

シェルスクリプトで、複雑なアプリを作っても、保守できない。
難しすぎるから
0419デフォルトの名無しさん
垢版 |
2020/12/15(火) 13:26:47.48ID:OZzZpMYk
>>416
awkがPOSIXかどうかなんて話はしてないよ
awkはシェルスクリプトじゃないって話でしょ

awkはpythonと同じように、シェルスクリプトから
実行するコマンドであってシェルスクリプトそのものではない
0420デフォルトの名無しさん
垢版 |
2020/12/15(火) 13:38:03.39ID:OZzZpMYk
>>417
ソースコードの隠蔽なら、Goとかを使ってバイナリにすれば
まずバレなんじゃね?と思ったが

ウイルス対策ソフトからすれば、バイナリを解析して怪しい挙動を
しないか解析するのに比べれば、シェルスクリプトは解析が簡単だなー
って思っていたのが、シェルスクリプトでも(バイナリと同じように)大変になった!
という意味の高度化なのかな

つまりバイナリに追いついたレベル
0422デフォルトの名無しさん
垢版 |
2020/12/15(火) 15:44:03.39ID:rO/izmGR
やっぱり頭悪すぎだなw
データの話なんか全くしてねーのにな

リッチー大佐の中の人 @col_richie ・ 3時間

この記事からの学びは、UNIX哲学にある「単純なテキストファイルにデータを格納せよ」の正しさだろう。
それを意図的に破れば、厄介なマルウェアが作れるし、システム開発における難解な仕様設計はマルウェアも同然。

巧妙化するシェルスクリプトの隠蔽手口について解説 - https://go.shr.lc/3ncGDTD
0424デフォルトの名無しさん
垢版 |
2020/12/15(火) 16:44:33.64ID:rO/izmGR
ユニケージで作られたプロジェクトがオープンソースになってからいえ
完全にベンダーロックインになって交換不可能になっとるやないけ(笑)
0425デフォルトの名無しさん
垢版 |
2020/12/15(火) 17:40:49.18ID:QGBqsvyz
いまはオープンソースがどうたらの話はしてないでしょ。
つーか何回も言うけど非技術的な話は他所でやってくれ。

「これもぎじゅつのひとちゅだ!」みたいな下らねー反論はするなよ
0426デフォルトの名無しさん
垢版 |
2020/12/15(火) 19:08:25.42ID:+RD1gPFt
両方とも気持ち悪いけどそんな目くじらたてるようなことではないな

シェルスクリプトは抑制的に使わないと負債化しやすいっていう一般常識を
イデオロギー的に認められない人がネッツの隅っこでグチグチ言ってるだけ
0427デフォルトの名無しさん
垢版 |
2020/12/15(火) 19:31:19.44ID:QGBqsvyz
まあそうだけど,その隅っこに噛み付いて,
Twitterと無関係な5ちゃんねるまでわざわざ書き込むのは異常だと思うわ。
0428デフォルトの名無しさん
垢版 |
2020/12/15(火) 19:33:39.70ID:QGBqsvyz
POSIX中心主義に対する反論は,
私にはまっとうなものに見えるから,
それをTwitterで本人に対して言って議論すればいい。
それで仮に本人が自説を引っ込めなくても,Twitter上で議論が完結する。

「POSIX中心主義が正当かそうじゃないか」みたいな話はしてないんよ。
Twitterでの言説に対する鬱憤をここで晴らすな,っていう話をしてる。
0430デフォルトの名無しさん
垢版 |
2020/12/15(火) 21:02:10.05ID:65qlAZvS
ユニケージの話ならいいでしょ?
ギークが熱狂するしている開発手法らしいし(笑)

今、ユニケージ開発手法にギークが熱狂するワケ【USP研究所代表&オープンソースOSコミッター対談】
https://type.jp/et/feature/14070/

> 今では選りすぐった50個ほどのコマンドで大半の基幹システムを開発できるようになりました。
この50個のコマンドって?使い物になるの?
交換可能であることが重要だけど、他の誰か実装してるの?
0431デフォルトの名無しさん
垢版 |
2020/12/15(火) 21:04:27.64ID:65qlAZvS
ユニケージ、USP研究所、POSIX中心主義、シェルショッカー
だいたいこの4つで世界が完結してるよね
0435デフォルトの名無しさん
垢版 |
2020/12/16(水) 16:58:04.54ID:DM/Ohc5a
出力が見にくいので1つ1つの出力の行ごとに改行を入れたいです
今のところ
echo
で行だけを毎コマンドごとに挿入したり
sed "s/^/\n/g" hoge.txt
などをしています
もっと良い方法はないでしょうか?
0438デフォルトの名無しさん
垢版 |
2020/12/16(水) 19:40:15.12ID:neT7lGyG
>>437
すげえ発想。
でも実際,質問者のやりたいことはこれかも知れない。
別に「行を挿入する」ことが重要なんじゃなくて
「行を見易くする」ことが目的なんだかね。
0440デフォルトの名無しさん
垢版 |
2020/12/16(水) 19:57:20.32ID:HoimPx00
>>439
s/,/、/
0443デフォルトの名無しさん
垢版 |
2020/12/16(水) 21:44:16.10ID:q21a8ByJ
確かに日本の出版物では横組みのときは読点を「,」にするルールがあったりなかったり。
さらに句点を「.」にするルールがあったりなかったり。
科学・技術系で多いような気がしたりしなかったり。
0445デフォルトの名無しさん
垢版 |
2020/12/16(水) 22:42:03.74ID:UkMuMpFC
>>441
それは古いルールで現実に即してないから変更になる
もう使うのはやめよう

公文書の読点「,」から「、」に 半世紀以上前の通知変更へ
https://news.yahoo.co.jp/articles/88039fa6aabfa1f719af747607119694998f9eaa
>  文化審議会の国語課題小委員会は30日、半世紀以上前の通知に従い、
> 公文書では読点に「,」(コンマ)を使うとのルールを見直し、
> 一般に広く使われている「、」(テン)を用いるよう求める中間報告案をまとめた。

> ただ、現在は多くの省庁がテンを使っており、文化庁は要領改定を検討してきた。
0446デフォルトの名無しさん
垢版 |
2020/12/16(水) 22:52:46.52ID:BIGMoezD
そんなどうでもいいことよりも
質問の文章を理解してネタレスかどうかくらい区別できるようになってよ
0449デフォルトの名無しさん
垢版 |
2020/12/17(木) 02:02:06.79ID:3+5sK+CV
数学界でもその指標に従ってるだけのこと
テンを使うところは数式じゃなくて日本語だろうが
0451デフォルトの名無しさん
垢版 |
2020/12/17(木) 08:49:25.49ID:uhJoMPOw
>>445
それを読むと読点はもともと「。」だったみたいだね。
そして >>443 も指摘していた通り
科学・技術界隈では句点を「.」にすることが多いんだよ。
つまり >>445>>441 の反論になっていないということ
0452デフォルトの名無しさん
垢版 |
2020/12/17(木) 09:43:24.89ID:cCB/c6/C
Androidでシェルをやってます
コメントアウト
<< comment_out
コメントアウトしてます
comment_out
をすると
can't create temporary file /data/local/shuv2gty.tm
p: Permission denied
と表示されてしまいます
このエラーを非表示にする、またはパーミッションを得るにはどうしたらいいですか?
他のアプリが使えなくなるのでスマホ自体のroot化はできません
0453デフォルトの名無しさん
垢版 |
2020/12/17(木) 10:25:22.20ID:RUflbAwb
パーミッションをゲットしようとすんな!w

そうか、そんな発想もあんのか。新鮮。
0454デフォルトの名無しさん
垢版 |
2020/12/17(木) 12:21:57.92ID:hWtMYtoG
>>452
TMPDIRが/data/local/tmpなら書き込めると思うけど
Androidのスレで聞いたほうがいいんじゃないかな
0455デフォルトの名無しさん
垢版 |
2020/12/17(木) 16:54:16.36ID:nC3KtugT
漏れは、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
を使う。
本番環境では、使わない方が良い
0456デフォルトの名無しさん
垢版 |
2020/12/17(木) 19:08:56.70ID:SmI4i4iQ
>>451
> 科学・技術界隈では句点を「.」にすることが多いんだよ。
変なルールは時代の合わせて変えていくべきだねって話なのわかってないの?
0457デフォルトの名無しさん
垢版 |
2020/12/17(木) 19:12:33.49ID:SmI4i4iQ
これも面白い話だね

https://crd.ndl.go.jp/reference/modules/d3ndlcrdentry/index.php?page=ref_view&;id=1000155681

質問 技術文書で読点が「,」(カンマ)で句点が「.」(ピリオド)になっているものが多い。使われている根拠は何か。

回答 昭和25年(1950年)9月発行の文部省編『文部省刊行物表記の基準』付録「横書きの場合の書き方」では、
横書きでの句点は「。」を用い、読点は「,」を用いるという記述があり、現物を利用者に見ていただいた。
吹田所蔵の資料を取り寄せたが、根拠となるものを見つけることはできなかった。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ただ、資料によっては技術文書は欧字や数字、数式が含まれていることが多いので「,」(カンマ)「.」(ピリオド)を推奨するという記述があるものもあった。
インターネットのホームページで論文の原稿執筆に「,」(カンマ)「.」(ピリオド)を
用いるとしているものもあったが、根拠は見つけられなかった。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

根拠はない。全角半角という違いが有る、今の時代からすれば悪習だろう
0458デフォルトの名無しさん
垢版 |
2020/12/17(木) 22:02:17.91ID:uhJoMPOw
そんなに細かいところをネチネチ気にしてる癖に
スレの趣旨と違うことを話していることには気が付かない滑稽さたるや
0460デフォルトの名無しさん
垢版 |
2020/12/17(木) 22:16:57.75ID:fG6L+nO9
>>433
> 東急ハンズ以外に採用実績あるのか?

怪しい健康食品販売みたいな感じで
知り合いの紹介とかで、洗脳される人が広がってそうw
0461デフォルトの名無しさん
垢版 |
2020/12/18(金) 01:38:23.82ID:7u2Vzz2h
>>459
文章にだってTPOはある

>>440のように訂正したからといって論文読んだことないと判断するのは軽率
0462デフォルトの名無しさん
垢版 |
2020/12/18(金) 02:07:12.94ID:UPU6Cu+L
>>430
> 10万円以下で買ってきたごく普通のパソコンを10台並べ100GbpsのInfiniBandで

パソコンが10万以下でもInfiniBandのボードは10万では到底買えないし、スイッチは200万くらいする。
あまり誠実な記事とは言えないんじゃないかな。
0464デフォルトの名無しさん
垢版 |
2020/12/18(金) 02:28:04.80ID:7u2Vzz2h
>>463
一個しかないからだろ
0469デフォルトの名無しさん
垢版 |
2020/12/18(金) 10:20:09.21ID:En6upNha
よく分からんが突っ掛かったのは>>441じゃないのか
0470デフォルトの名無しさん
垢版 |
2020/12/18(金) 12:18:59.83ID:AR9d62Oq
どうでもいいやり取りに執着してまともに質問に答えるやつが一人もいないという状況
0475デフォルトの名無しさん
垢版 |
2020/12/18(金) 21:51:55.66ID:VUzElQyV
じゃあTPOを弁えて「,」を使うのは旧時代的!
なんていうくっだらねえ主張展開するなよw
0477デフォルトの名無しさん
垢版 |
2020/12/18(金) 23:21:48.08ID:VUzElQyV
まさかTPOのTを「時勢を捉える」の「時間」だと思ってらっしゃる御仁がいるとは
0478デフォルトの名無しさん
垢版 |
2020/12/19(土) 00:07:16.80ID:x1EY5aRu
timeは多義語だしな。
時は来た

The time has come
悪癖を脱する時勢<とき>なのだ!
0479デフォルトの名無しさん
垢版 |
2020/12/19(土) 01:19:53.43ID:eg1uqMNx
問題は時間じゃなくて場所だろ
5ちゃんねるで一般的じゃない「,」を使うなと
言ってるんだよ。ダサすぎ。
国会で5ちゃんねる用語を使うようなもんだ
0481デフォルトの名無しさん
垢版 |
2020/12/19(土) 10:34:47.28ID:RW00uZdG
TPOの観点で言うと、ほとんどの人がどっちでもいいと思っている事を目ざとく取り上げしつこく指摘し続けるのを、こういう場では古来から自治厨って言うんですよ
0483デフォルトの名無しさん
垢版 |
2020/12/19(土) 12:20:31.50ID:8pL4C7Je
>>481
自治は違うだろ
そのスレのルールに従わせるのが自治だ
ルール化されてない話は自治とは関係ない
0486デフォルトの名無しさん
垢版 |
2020/12/19(土) 15:31:53.90ID:Qqq4Ct+Y
どうでもいいけどそれこそ「日本語の句読点は、と。しか認めない!」ってほうが
よほど旧時代的≠セと思うよ。
あと「日本語の自治厨」とはよくいったもので,
仮に「,」を使うことが "TPOを弁えてない" としても
それをネチネチ指摘することもまた同様ってことね。
0487デフォルトの名無しさん
垢版 |
2020/12/19(土) 16:22:44.35ID:eg1uqMNx
認める認めないじゃなくて
日本語を書く時(手書き)につかうのは「、」と「。」だという話
そして「,」と「.」は英文で使うものなので半角にするべき
正しく使い分けよう
0492デフォルトの名無しさん
垢版 |
2020/12/20(日) 15:17:19.00ID:h+k5X02K
bashのreadコマンドの-uってどうやって使えばいいの?
echo "test" >&2 | read -u 2 line ってやっても取れないんだけど
0500デフォルトの名無しさん
垢版 |
2020/12/20(日) 17:25:33.58ID:367My7+8
>>492
| をそもそも勘違いしてるようだけど、stdoutをstdinに繋げるだけだぞ
stderrはそんなことしても対象外だし、stderrを読もうとするのがアレだが、
それでもreadプロセスでのstderr(tty)から読もうとして読めてるだろう。-u 使えてるじゃん?w
0501デフォルトの名無しさん
垢版 |
2020/12/20(日) 18:00:46.78ID:4dBK3uKK
-u 2 はそうかも知れないけど -u 3 は読めないじゃん?
-u ってどうやって使うの?

echo "test" >&3 | { read -u 3 line; echo "[$line]"; } は動かなかった
0504デフォルトの名無しさん
垢版 |
2020/12/20(日) 18:52:01.01ID:dy8ouxo/
なんでいきなり 3 やねん。どういう発想からなんだかだぞ
3 に適切に(自分で)割り当てれば、>>501で動くぞ
0511デフォルトの名無しさん
垢版 |
2020/12/20(日) 19:06:33.09ID:1hvzvG6m
> echo "test" >&3
誰が3をオープンしてんだよ
これで分らんなら基礎からやり直せ
0514デフォルトの名無しさん
垢版 |
2020/12/20(日) 19:10:57.93ID:dy8ouxo/
>>512
www
まあ、素直でよろしいw

mkfifo /tmp/hoge
exec 3<> /tmp/hoge
echo "test" >&3 | { read -u 3 line; echo "[$line]"; }

とか(後処理とか自分で書け)
0515デフォルトの名無しさん
垢版 |
2020/12/20(日) 19:13:39.64ID:4dBK3uKK
>>514
それパイプの意味ないですね

mkfifo /tmp/hoge
exec 3<> /tmp/hoge
echo "test" >&3
{ read -u 3 line; echo "[$line]"; }

ファイルを経由してる時点で論外だし
趣旨わかってますか?
0517デフォルトの名無しさん
垢版 |
2020/12/20(日) 19:21:32.30ID:dy8ouxo/
繰り返すが、
| をそもそも勘違いしてるようだけど、stdoutをstdinに繋げるだけだぞ
パイプの意味wが重要ならstdoutの出力するのが筋。そもそもそれを避けてるのにパイプの意味wもなんもないだろう

どうしてもパイプの意味wがなんだったら、stdoutとstderrを入れ替えて最後にstdoutとstderrを入れ替えるとかあったなあ
クソ小生意気wなだけの真性バカには詳しくは教えない、上述のはググればあるだろうと親切にw教えておしまい
0523デフォルトの名無しさん
垢版 |
2020/12/20(日) 23:23:43.13ID:fUCc7ZHX
自称透視能力者
煽るだけで答えをもらえると思ってるやつと変わらない性格なんだろな
いやそのままそう思ってるようなので全く同じ性格か
0524デフォルトの名無しさん
垢版 |
2020/12/21(月) 10:43:32.58ID:wOEzG6ti
ts
0526デフォルトの名無しさん
垢版 |
2020/12/22(火) 00:19:10.33ID:hq0fof4K
>>525
参加してきました。
よろしくお願いします。
0529デフォルトの名無しさん
垢版 |
2020/12/22(火) 01:34:57.89ID:GwBzbeZ5
ワロタw 微妙にディスってるだろwww

> 「2017年、POSIX原理主義は世界に進出する」
> リッチー大佐氏はそう仰いました。
>
> 同年、POSIX原理主義ならびに
> POSIX中心主義プログラミングについての
> 査読付き論文が公開されました。
>
> それ以降、
> 便りがほぼ皆無に近い状態となってしまっているように
> 感じられます。
> それどころか、世界進出も実感が湧かなく感じられます。
>
> POSIX原理主義ないしPOSIX中心主義プログラミングは
> 成熟をしきってしまったのでしょうか?
> それとも、まだ、成長をする余地があるのですか?
> そして、その存在は忘れ去られていませんか?
0530デフォルトの名無しさん
垢版 |
2020/12/22(火) 15:49:43.65ID:kndpEK+0
まあPOSIX中心主義を擁護する訳じゃないけど、
POSIXに従えるときは従っといた方がいいね。
0531デフォルトの名無しさん
垢版 |
2020/12/24(木) 07:33:18.96ID:o5oUfmlb
POSIX中心主義とかいう考え方が実用的じゃないんだよね
POSIXの問題じゃなくて、どこぞの素人が考えた「中心主義」が実用的じゃないという話

あれ、結局ライブラリを使わずに全部自分で実装しろってやつだから
生産性が悪すぎる
0533デフォルトの名無しさん
垢版 |
2020/12/24(木) 11:11:31.50ID:KLhNBo44
C言語が使ってOKなら、RubyやPythonもPOSIXに準拠して作られてるんだから
POSIX中心主義的には使ってOKになるはずなんだがなぁw

実装が複数ないといけないっていうのならPythonは無理でも
RubyはJRubyとかあるし、Javaも使ってOKなはず
0535デフォルトの名無しさん
垢版 |
2020/12/24(木) 12:02:57.49ID:5YZuSfe/
完全に標準規格のCを使った実用アプリなんか存在せんやろ。w
UNIXでもLinuxでもWindowsでも、どこかで非標準関数を使わざるを得ないことになりがち。
0536デフォルトの名無しさん
垢版 |
2020/12/24(木) 12:29:11.54ID:2kt6bLry
仮にRubyやPythonがPOSIXに準拠してようが、
RubyもPythonもPOSIXに含まれないので使ってはダメです
0537デフォルトの名無しさん
垢版 |
2020/12/24(木) 12:31:16.73ID:KLhNBo44
>>535
C言語のレベルでPOSIXだけでは作れないものが
あるなら、それはPOSIX中心主義の敗北なんだよな

POSIX準拠ではどうあっても動かないので
POSIX中心主義のかかげる「20年後も動く」は
「現時点ですでに動かない」ということになる
0538デフォルトの名無しさん
垢版 |
2020/12/24(木) 12:33:02.74ID:KLhNBo44
>>536
その理屈だとPOSIX準拠のC言語で作った「オレオレコマンド」は
POSIXに含まれてないので使ってはだめということになる(笑)
もちろんユニケージ用に作られた専用コマンドもPOSIXに含まれてないし
シェルショッカーが作ったオレオレコマンドもPOSIXに含まれていない
0541デフォルトの名無しさん
垢版 |
2020/12/24(木) 12:55:26.21ID:5YZuSfe/
>>537
なんかおかしい。
POSIXは、システムやツールがどのように作成されているかは規定してないやろ。

最悪、魔法でもいいのではないか?w
0542デフォルトの名無しさん
垢版 |
2020/12/24(木) 13:09:28.68ID:QjnK2nrq
なんかPOSIX中心主義も変だとは思うけど
それ以上にその反対勢力が気持ち悪い。
0544デフォルトの名無しさん
垢版 |
2020/12/24(木) 13:29:48.24ID:+GBnc4yf
POSIXってネットワーク系は何も規定してないじゃん
規定のあるところは従おうねってだけの話なのに「POSIX中心主義」とか大げさなんだよw
0545デフォルトの名無しさん
垢版 |
2020/12/24(木) 13:44:57.75ID:KLhNBo44
>>544
「POSIX準拠+交換可能性担保+W3C勧告準拠」が「POSIX中心主義」らしいw

> 交換可能性担保
> 上記の指針では実現の難しい機能、あるいは全く不可能な機能を実現しなければならない場合は、
> POSIX規格にない依存ソフトウェアを使用せざるを得ない。
> しかし、無制限に認めてしまえば保守や移植のコストは増大してしまう。
> そこで、使用する場合には次の性質を満たすことという例外条件が2番目の指針である。

> 今利用している依存ソフトウェア(A)と同等機能を有する別の実装(B)が存在し,
> 何らかの事情によりAが使えなくなったときでも,Bに交換することで
> Aを利用していたソフトウェアを継続して使える性質


この交換可能性担保が特に破綻してる

Rubyの実装としてJRubyがあるのだから、交換可能性担保を満たしている
ユニケージのライブラリと同等機能を有する別の実装は存在しないのだから、交換可能性担保を満たしていない
(Open usp Tukubaiは利用度の高いものだけ)
0546デフォルトの名無しさん
垢版 |
2020/12/24(木) 13:46:19.34ID:KLhNBo44
>>541
「POSIX」は、システムやツールがどのように作成されているかは規定してないのに
「POSIX中心主義」は交換可能性担していなければいけないとか別の規定を加えてる
0547デフォルトの名無しさん
垢版 |
2020/12/24(木) 14:06:22.21ID:KLhNBo44
curlとwgetのどちらでも動くようにしろ、そのために共通で持ってる機能だけを使えと書いてあるが、
wgetではPUTやDELETEなどに対応しておらず、機能が低い方に引きずられる
また必要もないのに両対応にするのは過剰設計でしかなくYAGNIの原則にも反している

シェルスクリプトの中でgitを使ってるとして、gitと同等の機能を有する別の実装とは何なのか?
その別の実装はgitリポジトリにアクセスできるのか?
そういう話
0549デフォルトの名無しさん
垢版 |
2020/12/24(木) 18:33:51.50ID:MGQS4hov
POSIX中心主義によるとgitはPOSIX準拠ではないので使ってはだめだが
例外条件が有るので、Mercurialのgitプラグインをつかって
gitでもhgでも交換可能で動くようにすればOK

gitを使うスクリプトは両方のコマンドで共通で使える機能だけを使い
hgでも動くようにしするのがPOSIX中心主義

最大公約数的な機能しか実現できずMercurialなんて使わないのに
両対応のためにコードが複雑化し開発工数が
上がるのがPOSIX中心主義である

現実的じゃない理由
0550デフォルトの名無しさん
垢版 |
2020/12/24(木) 19:39:56.60ID:QjnK2nrq
なんというか,「反POSIX中心主義」もそれもそれで
頭の固い連中だなと思うなど。
0551デフォルトの名無しさん
垢版 |
2020/12/24(木) 19:54:44.78ID:MGQS4hov
>>550
それは「POSIX中心主義」という技術の話ですか?
それとも単に人の話をしてるだけですか?
私は技術の話をしています。
0555デフォルトの名無しさん
垢版 |
2020/12/24(木) 22:44:46.84ID:5YZuSfe/
ま、こないだはポジバカがうるさかったからな。
カウンターみたいなもんやろ。
しゃあない。
0557デフォルトの名無しさん
垢版 |
2020/12/25(金) 08:54:47.64ID:WWGB0Om3
クソの役にも立たない言い訳はいいからシェルスクリプトの話題出せや
あくしろよクズ
0563デフォルトの名無しさん
垢版 |
2020/12/25(金) 19:39:35.11ID:VmiYGpd6
>>562
「POSIX中心主義の話題」が「シェルスクリプトの話題」
なのであれば当然>>542も「シェルスクリプトの話題」ですね。
0564デフォルトの名無しさん
垢版 |
2020/12/25(金) 19:49:51.04ID:Rv3U506l
「反対勢力が気持ち悪い」は勢力の話なのでシェルスクリプトの話ではありません。
「POSIX中心主義」と反対の技術の話はシェルスクリプトの話ですがね。
0565デフォルトの名無しさん
垢版 |
2020/12/25(金) 20:51:49.39ID:YbAqFMwb
しつけえ
POSIX中心主義とやらとの対話にもなってないのになんでこんなにしつこいのか
0567デフォルトの名無しさん
垢版 |
2020/12/25(金) 21:35:42.46ID:YbAqFMwb
誰も興味ないのは明らかだろう
ポジキチさえも食いついてないみたいだしな
お前というのには興味はちょっとあるみたいだが、お前はそれを拒否してるしw
0569デフォルトの名無しさん
垢版 |
2020/12/25(金) 22:25:13.08ID:wHWhOTCT
sedでスラッシュを含む文字列を置換する際に別のセパレーターを使うと思うけど、どの文字を使ったほうがいいとかおすすめってある?
0571デフォルトの名無しさん
垢版 |
2020/12/25(金) 22:56:34.63ID:VmiYGpd6
逆斜線を前置すれば別にどんな文字を使ってもいいんだけどね、実は。
まあ印象としては/と|が多く使われてている印象。
Gentoo Linuxを使ってるんだけど,パッケージのコンパイルの時に
流れていくスクリプトを見ていると
sed -e 's/.../.../'かsed -e 's|...|...|'が多い「気がする」。
0572デフォルトの名無しさん
垢版 |
2020/12/25(金) 23:21:27.19ID:DE1iEGh9
「|」を使ったものの、正規表現で選択を追加したくなって、区切り文字を変えることもある。
「!」に変えたら(「|」に似てるからw)、先読み否定アサーションを追加したくなって、さらに変えるはめに。
「%」に変えた(「/」に似てるからw)ものの、そのままcrontab(たしか)に書いた結果、エラーになることもある。

結局、「/」のままがもっともマシな気がしてきている今日このごろ。。。
0573デフォルトの名無しさん
垢版 |
2020/12/26(土) 00:42:46.54ID:KCd7SMlY
@マークとかも見た覚えがある。
繰り返すけど結局逆斜線でエスケープすればいいだけなので何使っても……って感じ。
0577デフォルトの名無しさん
垢版 |
2020/12/27(日) 05:20:13.65ID:3wE25Ze9
斜めつまようじ症候群というやつだな。

うわ、あの本がもう手元になかったw 最近ほとんど使ってないしな。

英語のWikipediaを見ると{}とか##とか!!とかの例が書いてある。
0579デフォルトの名無しさん
垢版 |
2020/12/27(日) 07:02:29.22ID:3wE25Ze9
ああそうだっけか。まあ leaning toothpick syndrome だから間違いではないが
やはり公式日本語本が聖典といえるw

どこ行っちゃんただろう、俺のラクダ本。
最近はスクリプトを書く場合はだいたいpython、たまにshって感じだからなあ...
0584デフォルトの名無しさん
垢版 |
2020/12/27(日) 20:41:56.75ID:OKKHmb6b
普通に斜線シンドロームとか斜線病で良くね
syndromeは症候群て訳されるけど症候群は違う感じする
0585デフォルトの名無しさん
垢版 |
2020/12/27(日) 21:04:38.86ID:RkRq3Z+d
ダブルミーニングな気がするが傾きと偏愛の2つの意味がある
https://eow.alc.co.jp/search?q=leaning
> 〔垂直な位置からの〕傾き、傾斜◆【動】lean
> 〔〜を好む〕傾向

https://ejje.weblio.jp/content/leaning
> 傾向,性癖; 好み,偏愛 〔to,toward〕.

だが公式につまようじ大好き症候群って書いてるんだから
こっちでいいやろ。斜めつまようじとか意味わからんし。
0587デフォルトの名無しさん
垢版 |
2020/12/27(日) 21:58:06.67ID:RkRq3Z+d
>>586
「star」には「星」という意味と「人気者」という意味がある

「star]を訳出してるだけ、スターウオーズは「人気者戦争」だ
と言われても、訳がおかしい、意味わからんとしか言いようがないのと一緒
0590デフォルトの名無しさん
垢版 |
2020/12/27(日) 23:25:45.11ID:vxCvKtMx
>>584
m/ftp:\/\/[^\/]*\/pub\//
をぱっとみ \ を含めて leaning toothpick が多すぎ=単に見た目な感じだけでじゃね
そんな厳密な病気的な意味でなく、なんらかの変わったように見える(もしくは少々異常に見える)状態行動を言うときもあるだろう
「病」と言う場合もあるがどちらかというと揶揄したり真っ向から否定する場合じゃね
0591デフォルトの名無しさん
垢版 |
2020/12/27(日) 23:40:37.60ID:vxCvKtMx
難読化を促進してるのは主に \ のせいだし、
/ と \ しかとりあえずその言葉の対象(原因?)でしかないので、斜めつまようじシンドローム の方が合ってるような気がするな。日本語の語感としては変だと思うけどw
0597デフォルトの名無しさん
垢版 |
2020/12/28(月) 08:17:31.57ID:Ek6iOK1a
>>590
そういうときのために
m(ftp%3A//[^/]*/pub/)
って書けるように
処理系のほうが工夫してるんだったら
書かない方が悪い
0601デフォルトの名無しさん
垢版 |
2020/12/31(木) 17:15:57.75ID:6l44qxZH
#!/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 =しか表示されないのはどこが間違えてますか?
0604デフォルトの名無しさん
垢版 |
2020/12/31(木) 19:11:51.62ID:+40/WJTs
awkがシェルスクリプトじゃないのは事実なんだよな

POSIX原理主義はシェルスクリプト以外も使っていいと言いつつ
結局「シェルスクリプトでやる」と主張してるだろっていうツッコミはあるが

シェルスクリプト以外も使っていいからこそ
awkという「シェルスクリプトではない言語」を使っているんだろ?w

だから最初に言った言葉である「awkはシェルスクリプトではない」という事実は変わってない
awkメインのコー ドは「シェルスクリプト」ではなく「awkスクリプト」と呼ぶべきで
POSIX原理主義は「(原則として)シェルスクリプトで実装する」と主張するんじゃなくて
「awkを使って実装する」と主張するべきだってことなんだよ

ちなみにな、POSIX原理主義はシェルスクリプト以外も使っていいのであれば
RubyやJavaなども使っていいということになる
こちらも「シェルスクリプト以外も使っていいが原則としてシェルスクリプトでやる」という主張と矛盾している
0605デフォルトの名無しさん
垢版 |
2020/12/31(木) 19:14:03.59ID:+40/WJTs
少し訂正

× awkメインのコー ドは「シェルスクリプト」ではなく「awkスクリプト」と呼ぶべきで
○ 埋め込みawkメインのコー ドは「シェルスクリプト」ではなく「awkスクリプト」と呼ぶべきで

Pythonのコー ドをワンライナーでシェルスクリプトに埋め込むのと同じ
ワンライナー程度ならまだシェルスクリプトがメインと言えるだろうが
何十行も全体の半分以上も埋め込むなやw
0606デフォルトの名無しさん
垢版 |
2020/12/31(木) 20:11:12.41ID:jey11SVr
>>601
hoge=$(aiuo)かhoge=`aiuo`にすれば?
0608デフォルトの名無しさん
垢版 |
2020/12/31(木) 20:57:23.81ID:2bA0HVQw
( hoge; hage ) コマンドのグループ化(サブシェル内でコマンド実行)
{ hoge; hage; } コマンドのグループ化(サブシェルなしでコマンド実行)

ret=$( hoge; hage ) 標準出力の結果を変数に入れる(サブシェル内でコマンド実行)
ret=`hoge; hage` 上記と同等。POSIXに準拠してない古いシェル用の書き方。ネストできないので30年前から非推奨。
ret=${ hoge; hage; } こんなものはない
0610デフォルトの名無しさん
垢版 |
2021/01/01(金) 00:39:28.26ID:wSR0l3d3
>>608
`<command>`ってネストできないんだっけ。
ネストしにくいだけで可能ではあるんじゃなかったか。
0611デフォルトの名無しさん
垢版 |
2021/01/01(金) 00:47:58.70ID:hjo1vK/7
もうどうでもいいよw
``は30年前から非推奨
四則演算にexprを使うのも30年前から非推奨
$(...) と $((...)) を使うのが30年前から続くPOSIX準拠のトレンド
これを普及させることが今年の目標なw
0612デフォルトの名無しさん
垢版 |
2021/01/01(金) 01:28:03.16ID:7BFOsP2G
>>610
シングルクウォートでできないっけ
0613デフォルトの名無しさん
垢版 |
2021/01/01(金) 01:52:19.59ID:2/H3yQW9
>>612
バックスラッシュかな。バックスラッシュでできるよう
`level1\`level2\\\`level3\\\\\\\`level4\\\\\\\`\\\`\\\`level3\\\`\``
のような
なんか笑うw
0614デフォルトの名無しさん
垢版 |
2021/01/01(金) 01:57:51.57ID:7BFOsP2G
>>613
これは分かりにくいな…
0615デフォルトの名無しさん
垢版 |
2021/01/01(金) 02:15:20.98ID:2/H3yQW9
\ はどういう増加率やねんと思った(level4は一つずつ増やしての手動)ら、2^(level-1)-1
だった
まあ、そんなにネストするやつは居ないだろうで実質level3ぐらいが実用的な範囲か
(もしくはそんなにネストすんなという暗黙的戒めか?w)
でも、遊びでlevel6とかするとやっぱり笑うw

>>614
うん。でも、見方変えるとなんかでかいからペアがわかりやすく...もねえかw
0617デフォルトの名無しさん
垢版 |
2021/01/01(金) 03:00:52.40ID:hjo1vK/7
さすがにPOSIXを厳守してるので``つかいます。expr使います。
とか言ってるエセPOSIX信者は消えたかね?

あと`#`とかいうハックするやつは○ね
サブシェル起動で遅くなるだろが
0618デフォルトの名無しさん
垢版 |
2021/01/01(金) 03:08:12.13ID:2/H3yQW9
いつものやつとしか思えないw
自分が間違ったのを異常に誤魔化すような(いつものw)異常なレスだなと見えるぞ
0625デフォルトの名無しさん
垢版 |
2021/01/04(月) 12:53:18.02ID:gQq4oDMw
aaa="testtt" #フォルダ名
date_dir=$(mkdir -p $aaa/`date '+%Y%m%d'`) #testttフォルダの中に20210104の作りたい

wget https://example.com/example.txt -P $date_dir

これをやるとフォルダは作られるけどtxtの保存先がカレントディレクトリになるのはどうしてですか?
0626デフォルトの名無しさん
垢版 |
2021/01/04(月) 13:13:55.07ID:VbZo6FxW
>>625
“$date_dir”の中身を確認してみ

原因を知ることも大事だけど
それを調べる方法を知ることのほうがもっと大事
0628デフォルトの名無しさん
垢版 |
2021/01/04(月) 15:43:15.17ID:UbvRjqjo
mkdir -p $aaa/`date '+%Y%m%d'`の標準出力見てごらん
0629デフォルトの名無しさん
垢版 |
2021/01/04(月) 17:34:40.13ID:yec7Hk1C
mkdir が、戻り値を返すか?

An exit status of zero indicates success,
and a nonzero value indicates failure.

echo $?
だろ
0635デフォルトの名無しさん
垢版 |
2021/01/05(火) 12:08:48.70ID:zD1ciQHW
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
0636デフォルトの名無しさん
垢版 |
2021/01/05(火) 15:59:04.73ID:2z9IJIZ8
スレのテンプレにRubyの話を控える(というかほぼ無くす)よう追記しない?
0637デフォルトの名無しさん
垢版 |
2021/01/05(火) 16:54:38.25ID:G+6noEPp
>>636
またマウントとれない話題はやめろってか

ダサいなぁ
答えられないならスルーすればいいだけだろ
0639デフォルトの名無しさん
垢版 |
2021/01/05(火) 17:48:43.98ID:psakH13p
半分シェルスクリプトの質問なんだからスレチでもなくない?
ワイはだるいから答えませんが...
0640デフォルトの名無しさん
垢版 |
2021/01/05(火) 17:55:47.46ID:DKe92MJE
>>635
ruby -e 'puts Dir.glob( "*" ).select{ |file| File.directory? file }.sort.join( ", " )'

find * -maxdepth 0 -type d -printf "%f, " | sed 's/, $/\n/'

27文字差
0642デフォルトの名無しさん
垢版 |
2021/01/05(火) 18:07:31.79ID:aNkjNIb3
シェルスクリプトが苦手な人が
難しくなったら他言語で書き直したほうがいいってよく言ってるけど
同じ処理を他言語で書き直すとたいていシェルスクリプトより長くなるんだよなw
0643デフォルトの名無しさん
垢版 |
2021/01/05(火) 18:45:22.40ID:PtcuBhf4
場合によるだろう
いつもの隙あればマウント取りたがりかw1行目から明らかに
>>633は誰かが遊んだのかと思ったら自らなのか。キチってるなw
0646デフォルトの名無しさん
垢版 |
2021/01/05(火) 19:09:44.19ID:PtcuBhf4
ルビキチはしばらく見ないなw
ルビキチに悪影響されての ID:2z9IJIZ8 の流れがちょっとアレだったな
0651デフォルトの名無しさん
垢版 |
2021/01/06(水) 12:16:54.19ID:mYe0Yhh2
>>650
こんなオプションあったんだな
0655デフォルトの名無しさん
垢版 |
2021/01/06(水) 20:47:11.09ID:HZIFnr+X
つーか俺は誰かと違ってPOSIXじゃないからだめなんて言ってないんだけどな

POSIXシェルではどうやればいいかって話をしてるだけで、ウェブアプリとか
シェルスクリプトには向かない作業にRubyやPythonなどの他の言語を使うのは当たり前
もちろんawkも使って構わないが、ただしそれはawk言語であってシェルスクリプトではないとは言うけどなw

何十年も動かしたいプログラムに、何十年も変化しない言語を使うのはまだ理解できるが
そもそも何十年も動かしたいという顧客の要求がなく、むしろ新しい機能の追加や修正を
行い続けるようなものに開発しづらいシェルスクリプトを使うのは馬鹿げてる
0656デフォルトの名無しさん
垢版 |
2021/01/06(水) 21:16:29.90ID:D/BvDb1X
っていうか,
「PythonやRubyはPOSIX Cで作られてるからPOSIX!」
っていう理論,いや1億歩譲ってそれを認めたとして,
このスレのタイトルを1億回読み直してほしいw

つまり結局,このスレで「POSIXが〜」と限定した場合に言及すべき範囲は
POSIXが(唯一)定めているShell Command Languageおよび(Shell) Utilitiyなんだよな。
0657デフォルトの名無しさん
垢版 |
2021/01/06(水) 22:10:20.61ID:hZlCYb+O
> 「PythonやRubyはPOSIX Cで作られてるからPOSIX!」

そんな主張してないぞ

POSIX原理主義がPOSIXシェルスクリプトをメインに開発する!
→でも○○無理じゃん
→シェルスクリプトで書くのは必須じゃない。交換可能可能性があれば使ってもOK!
→(交換可能可能性とか後付作っただろ・・・)
その理屈だと、C言語は交換可能性があるからOKだとして、
C言語で誰かがが作った(例えばユニケージの)独自コマンドは交換可能性がないからNGですよね?
そしてPythonやRubyもJythonやJRubyといった交換可能性があるからPOSIXじゃなくてもOKですね

こういう話ね
0659デフォルトの名無しさん
垢版 |
2021/01/11(月) 01:02:14.08ID:Nxf8SjHi
それで標準ライブラリは極力使わないって話にどうしてなるのか
意味不明なのは変わらないな
0661デフォルトの名無しさん
垢版 |
2021/01/11(月) 12:59:18.59ID:MB0taG6M
どんな環境でも動くものを作れるここの先輩方は
LinuxだけでなくMacも込で動くように作られますか?
0662デフォルトの名無しさん
垢版 |
2021/01/11(月) 14:08:49.23ID:4YPmzemp
LinuxでもMacでも動かしたくなるようなもので
普通に作れるようなものであれば作ってるよ

普通に作れないものっていうのは
例えば、systemdを使うものとかファイアウォール設定を変えるとか
Linuxの環境じゃないと意味がないようなもののことね
0663デフォルトの名無しさん
垢版 |
2021/01/11(月) 20:09:51.00ID:1GKY+oky
>>661
ポジキチではないけど,
MacはUNIX v7に準拠してるし,
Linuxは正式に準拠してはいないけどほぼPOSIXに従ってるから,
POSIXの範囲でシェルスクリプトを書いておけば
MacでもLinuxでも動く。

まあそれに「意味があるのか」というのは別の話。
(Goプログラマが「Goで書けどこでも動く!」とか言ってるのと
似たようなもん)
0664デフォルトの名無しさん
垢版 |
2021/01/11(月) 20:36:44.96ID:3OvUQiSB
ここに書き込む人は大概Linux前提でGNUのツールが前提になってるから
MacにもGNUのツールをどんどん入れれば大丈夫と言う考え方はある
逆に言えばGNU原理主義なのかもしれんがw
0666デフォルトの名無しさん
垢版 |
2021/01/11(月) 20:39:06.55ID:k6EkwuyV
>>664
それはそうなんだけど、Macの場合、結局、フリーソフト使って実現なんだよね
ああ、GNUがフリーソフトだろっていう話じゃなくて
macOSが公式に対応してるわけじゃないって意味ね。
macOSが公式に対応してないからOSのアップデートで動かなかったりする
0668デフォルトの名無しさん
垢版 |
2021/01/11(月) 22:14:22.97ID:TgqHKx3G
>>664
macosってコードベース的には90%くらいfreebsdのはずだが、gnuは徹底排除抹殺思想のfreebsdとしてどんな気持ちなんだろ…
もちろんライセンス的にクリアしてるんだろうが

まあmacは持ってないんだが(シェル含め)スクリプト写経用に人からコピーさせてもらった、まんじゃろ、とか言ってた頃?
blobじゃないファイルのコメントにfreebsd記載率9割
0669デフォルトの名無しさん
垢版 |
2021/01/11(月) 22:19:33.52ID:TgqHKx3G
というかbsd使いは規格とか気にしてない人が多そう(尖った人という偏見)
そもそもコミュニティが小さいので気にするまでもないってのもある
規格を異様に気にするのは、環境が千差万別なlinuxユーザでしょ
0670デフォルトの名無しさん
垢版 |
2021/01/12(火) 02:54:46.84ID:hnOFIrYF
>macosってコードベース的には90%くらいfreebsdのはず
>まあmacは持ってないんだが
他も無知ゆえの妄想ばかりだな
mac持ってなくても調べればわかるのを調べもしないでのでタチが悪い無知
0671デフォルトの名無しさん
垢版 |
2021/01/12(火) 03:08:52.49ID:TSfQlcFo
usrとかbinとかgrep(と-v)してみりゃそうだって分かるだろ、バイナリ部分は公開してない以上分からんとしか言えん
0672デフォルトの名無しさん
垢版 |
2021/01/12(火) 03:23:26.83ID:hnOFIrYF
「コードベース」とか範囲が広すぎだろう。バイナリ部分ってなんやねん
単にコマンド(大体はPOSIXにあるコマンド)って話なのか?
0674デフォルトの名無しさん
垢版 |
2021/01/12(火) 05:28:57.54ID:hnOFIrYF
お前の独特の言語言葉なんて知らんわ
usr bin にあるバイナリを調べろと言ってるのか。ちょっとは自分で調べてあんなこと言ってるのかと思ったら、全くなのな
てことは単にコマンドのことを言ってるだけか。コードベースwとか独特の言葉を使うなよ

それなりにオープンソースで公開されてるんだから少しは調べようとしろよ、語るwなら
妄想で語るだけのに さすが信者 とか言われたくないわw
0675デフォルトの名無しさん
垢版 |
2021/01/12(火) 06:11:57.28ID:eUCbLjlC
勝手に
les, bus - ATM LAN Emulation service demons
というのが入っているけど、何これ
0677デフォルトの名無しさん
垢版 |
2021/01/14(木) 09:56:27.47ID:s2FPIYdL
なんか面白いテクニックが某所で紹介されてるな

#!/usr/bin/echo This script is supposed to be sourced like this: .

まあ、macだと/bin/echoだったりするわけだが
0678デフォルトの名無しさん
垢版 |
2021/01/14(木) 12:42:21.34ID:tanA3fVT
a="A" b="B" みたいな文字列を渡したら
a変数にA、b変数のBみたいに代入する方法ないかな?
ただし脆弱性が怖いんで、 a="$(cmd)" みたいなものは
そのままa変数に$(cmd)という文字列が入る

そしてスペースとかダブルクォート入れたかったら
a='A " A' とか a="A \" A" とかできるようにしたい
0681デフォルトの名無しさん
垢版 |
2021/01/14(木) 14:19:03.84ID:83515Abn
ちなみに発言は↓ここ
https://github.com/koalaman/shellcheck/issues/2110

当人の発言によれば,
#!/bin/echoという「シバン」にすることに特に意味はないようなので

「単独で実行されたとき」を判定できればシバンじゃなくてもいい。
それはps(1)コマンドを使った「普通の」方法で達成可能。

まあ「普通」が嫌なんだろうなw
0683デフォルトの名無しさん
垢版 |
2021/01/14(木) 15:11:50.55ID:fZvBFJEs
どう面白いの?
0684デフォルトの名無しさん
垢版 |
2021/01/14(木) 15:12:47.48ID:tanA3fVT
>>681
psを使った方法は名前を変えられるとだめってレスきとるでw
シンボリックリンクとかな
ちなみにさっき名前にバージョン番号がついたバイナリを落とした所w
0685デフォルトの名無しさん
垢版 |
2021/01/14(木) 16:23:35.27ID:83515Abn
「ファイル名を変える」より「/usr/bin/echoがない」ことの方が致命的だと思うんだけどな。
まあ当人がそう思わないんなら(もしかして認識さえしてない?),俺はもう何も言わない。
0686デフォルトの名無しさん
垢版 |
2021/01/14(木) 16:36:57.62ID:tanA3fVT
/usr/bin/echoがないならエラーで落ちるだろ

実行しようとした時に、実行させないのが
目的なんだから、目的は達成できてる
0687デフォルトの名無しさん
垢版 |
2021/01/14(木) 18:00:29.32ID:83515Abn
>>683
いや,正直「奇抜(そして実装依存)」というだけで,
実用できると思っている理由が分からない。
0688デフォルトの名無しさん
垢版 |
2021/01/14(木) 20:28:27.29ID:bf8JVc72
>>687
そもそも「実用」するようなもんじゃない。
しょせんヘマ避けなので、実装依存なんか問題にならないことは>>686も言ったとおり。

きみ、アホなの?
0689デフォルトの名無しさん
垢版 |
2021/01/15(金) 01:15:51.82ID:YhT5m5Ec
実用できない癖に実用性は求めるのか…
じゃあファイル名に依存しててもいいじゃん……
0690デフォルトの名無しさん
垢版 |
2021/01/15(金) 07:41:49.61ID:uPQddvH2
実用っていうのは、echoするって意味だろ

ぱっとみてechoできなければ意味ないじゃんって
勘違いしたんだろうけど、echoするのが目的じゃないんだから実用性はある

なんのためにあるのか少しは考えたら?
0693デフォルトの名無しさん
垢版 |
2021/01/18(月) 18:04:21.25ID:Ge+kcekj
シェルスクリプトをググらず書けるようになったやっぱ言語は覚えた方がいいのか
perlとか正規表現の指定しか知らんしまだsedやawkの方が出番あるわ
0694デフォルトの名無しさん
垢版 |
2021/01/18(月) 18:36:52.77ID:ZtDZqP0p
まあ書けないよりは書けたほうがいいのは確かだが、
シェルスクリプトの場合、すでにある便利なコマンドを組み合わせるには
最速の方法なので、その言語を覚えていたとしても使えるようになったほうが良いと思うよ

シェルスクリプトの変わりにプログラム言語を使うと
コードが冗長になって、やりたい作業をささっとこなせない
コマンドの再発明をすることになる
0695デフォルトの名無しさん
垢版 |
2021/01/18(月) 20:37:19.00ID:daUvLGrG
>>693
sedはともかく、awkは忘れて、Perlに乗り換えたほうがいいんでは。

つーか、ワイはawkを使えん!w
0696デフォルトの名無しさん
垢版 |
2021/01/18(月) 21:36:36.94ID:ZtDZqP0p
Perlは互換性がなー、と言いたいところだけど
その互換性って主にライブラリの話
awkにはライブラリがない。

じゃあライブラリ無しで比べてみよう
ライブラリがないawkと
ライブラリを使わないPerl

どちらが機能が上で互換性があるだろうか?
おそらくPerlの方が機能が上で互換性も有るだろうな
Perlがawkに劣るのは標準で入ってない環境に当たる可能性が少し高いってことぐらい
0698デフォルトの名無しさん
垢版 |
2021/01/19(火) 00:26:51.55ID:kVTxVY5X
parlはawkやsed風に書けるけどあくまで似せてるだけで細部では違うから戸惑ったぞ
awkとperlでは添字がずれるし
sedの/foo/!や/foo/,/bar/はperlじゃできないからな
0700デフォルトの名無しさん
垢版 |
2021/01/19(火) 01:53:49.03ID:c4o9VOno
>>696
もう答えが出とるやん。w
ワイもそのとおりやと思う。

違うとするなら、昔のサーバーよりも、最近のコンテナのほうがPerlを外したくなるやろな、てところ。
意外とsedの価値が上がってる気が。
0702デフォルトの名無しさん
垢版 |
2021/01/19(火) 03:26:45.46ID:NDWgKi1/
>>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 でいいんじゃねっていう発想なだけだろう
0703デフォルトの名無しさん
垢版 |
2021/01/19(火) 03:59:18.00ID:DHFXGQbg
どの道具を使うべきかは解決すべき問題が与えられた時点で決まる
どれが優れているかなんて一般論で言うのは無意味だろ
0706デフォルトの名無しさん
垢版 |
2021/01/19(火) 05:59:25.50ID:Y7rxETSL
>>699
そのawkをBEGINだけ使って、Perlのような使い方をするコードを
シェルスクリプトだって言い張ってる
awk言語プログラマだっているんですよ!
0708デフォルトの名無しさん
垢版 |
2021/01/23(土) 22:13:34.25ID:99RNgT30
長いマルチバイトの文字列をきりのよい文字でカットすることはできますが

動画を落としていますがファイル名はタイトルから取っています
しかし昨今タイトルが長い動画があるため規定以上はcutコマンドでカットしていました
問題がありながらもそれなりに使えていたのですが
先日から落とせてない動画があり調べると
文字の途中でcutされてバイナリ文字になっているためか
samba経由で見れていないのが原因でした
(ls + grepでgrepがうまく動作していない問題もありました)

cutコマンドを調べると-bではなく-cを使えば将来的にいいようなのですが
現状-bと-cの動作は同じでした
このような場合にどのように対応するべきでしょうか
0709デフォルトの名無しさん
垢版 |
2021/01/23(土) 22:13:55.21ID:99RNgT30
続き

【現状の実装】
cut -b 1-220 -n

【変更してみた実装】
cut -c 1-220 -n

【途中に加えている編集】
sed -e "y/!’@#$%&−+=_;/\!'@#$%&-+=_;/
※この編集のために以下の文字列の「!」が「!」になっています
 これ以外に英数字などのASCII文字を変換をしていますが影響しないため割愛します

【元の文字列】
XXXXXXXXXX_たとえばラストダンジョン前の村の少年が序盤の街で暮らすような物語 第3話『たとえば「なんでもします!」と言われりゃ悪い気はしないけどそこはダメって言わなきゃいけないようなジレンマ』

【cutの結果】
XXXXXXXXXX_たとえばラストダンジョン前の村の少年が序盤の街で暮らすような物語 第3話『たとえば「なんでもします!」と言われりゃ悪い気はしないけどそこはダメって言わ?

※最後は「?」になっていますがls上の表示であり実際は違うようです

なお最終的には上記の文字列に拡張子を付与しています
0711デフォルトの名無しさん
垢版 |
2021/01/24(日) 00:02:43.53ID:goOw3wVq
違法ダウンロードは駄目だぞ
0712デフォルトの名無しさん
垢版 |
2021/01/24(日) 00:07:55.48ID:noy3WRZf
バイト数ではなく、見た目の長さ(全角(?)が2文字分)で切るでいいんだったら
colrm 221
かな
0713デフォルトの名無しさん
垢版 |
2021/01/24(日) 02:59:28.84ID:p6gUDKyK
ext4は255バイトでNTFSはUTF-16で255文字だっけ?

ext4は日本語だと85文字ぐらいしかないんだよな
IVSをフルに使われたら32文字にまで減るというw

それに対してWindowsは255文字
0714デフォルトの名無しさん
垢版 |
2021/01/24(日) 03:01:58.32ID:p6gUDKyK
ロケールに対応していれば文字数で切ることは出来るかもしれないけど
それだと最大に長さにするのは難しそう
かと言ってCロケールとかにすると文字の区切りがわからない
文字として扱いたいけどバイト数で長さを切るって難しいな
なんでext4ってバイト数制限なんだろ?
0715デフォルトの名無しさん
垢版 |
2021/01/24(日) 03:03:57.75ID:p6gUDKyK
やるとしたらUTF8ロケールにして
N文字・・・何バイトか調べる
N-1文字・・・何バイトか調べる
って繰り返して、最大のバイト数に入るまで
1文字ずつループで削るしかないのかな?
0718デフォルトの名無しさん
垢版 |
2021/01/24(日) 09:56:52.75ID:mNyCGHoF
さりげなく間違いを入れて正しい答えを書いてもらう、そんなのには釣られんから
0720デフォルトの名無しさん
垢版 |
2021/01/29(金) 14:11:51.49ID:w7VgAIO0
>>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

--------
0721デフォルトの名無しさん
垢版 |
2021/01/29(金) 20:32:02.95ID:jpIxUK7H
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 これってどうやって使えばいいの?
0722デフォルトの名無しさん
垢版 |
2021/01/30(土) 11:06:08.44ID:0eg/dEnN
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とか)割り当てたのとか
0724デフォルトの名無しさん
垢版 |
2021/01/30(土) 13:33:54.58ID:NOQF7Zt1
もしかして/dev/fd/fdを使って新しいファイルディスクリプタを作れないのか?
0725デフォルトの名無しさん
垢版 |
2021/02/01(月) 01:32:52.47ID:/mOfS3Su
$ a=$(printf '\0\n')
-bash: 警告: command substitution: ignored null byte in input
っていうエラーが出るんだけどさ、これだとでない
printf '\0\n' | read a

なんでreadだとこのエラーはださないんだろう?
誰か理由わかる?
0727デフォルトの名無しさん
垢版 |
2021/02/01(月) 02:58:31.68ID:45FIRZtx
>726
それは「警告:コマンド置換:入力のヌルバイトを無視しました」を取り除きます
という内容なので全くの無関係です
0728デフォルトの名無しさん
垢版 |
2021/02/01(月) 03:00:33.65ID:45FIRZtx
なぜこんな簡単な質問が理解できないのか、疑問に思います。

質問は明らかにこれです。
> なんでreadだとこのエラーはださないんだろう?
0729デフォルトの名無しさん
垢版 |
2021/02/01(月) 03:25:24.42ID:srTHfdLe
readはコマンド置換じゃないから。
なんでこんな単純なことが理解出来ないのか、理解に苦しむ
0730デフォルトの名無しさん
垢版 |
2021/02/01(月) 03:33:26.42ID:IMDeHKxL
すごいな。本当に質問を理解できてなかったよ。
なぜコマンド置換ではない場合は、エラーを出さないことにしたのか?
という質問だろ
0731デフォルトの名無しさん
垢版 |
2021/02/01(月) 03:41:04.66ID:srTHfdLe
>なぜコマンド置換ではない場合は、エラーを出さないことにしたのか?

昔は出ていたんですか?
0734デフォルトの名無しさん
垢版 |
2021/02/01(月) 04:07:05.58ID:IMDeHKxL
言ったな?なら質問のどこがおかしいか指摘できないなら
お前が間違ってることになる。はいどこがおかしいか言ってみて
0735デフォルトの名無しさん
垢版 |
2021/02/01(月) 04:07:54.79ID:IMDeHKxL
まあまたいつものやつだろうな。他人の話を聞かないで
自分の思い込みで発言して、指摘されたら逆切れ
0738デフォルトの名無しさん
垢版 |
2021/02/01(月) 09:26:00.05ID:QF/67lbC
ソース読んでも意図はわからんだろうな
元々あったが無効に(#if 0)になってたのが有効に(#if 1)なったていうだけっぽい、ソース上だけでは
0739デフォルトの名無しさん
垢版 |
2021/02/01(月) 10:21:53.21ID:TyKattHL
なぜこんな簡単な文章を最後まで読まずに無関係だと決めつけるのか、疑問に思います。
0741デフォルトの名無しさん
垢版 |
2021/02/01(月) 12:03:40.53ID:IMDeHKxL
>>738
やっぱ意図はわからんか

>>739
意図はわからんだろうなと言ってる人がいますが、
それで意図の話とどう関係するんですか?
0742デフォルトの名無しさん
垢版 |
2021/02/01(月) 12:55:01.95ID:DIpjm9PW
> なんでreadだとこのエラーはださないんだろう?
>なぜコマンド置換ではない場合は、エラーを出さないことにしたのか?
ある意味認識が逆。でなくて、単に、
コマンド置換とこだけ(そもそもコード上でもあった)メッセージを出すようなった
というのだろう

そういう認識を持っていた(本当に持っていたかは知らんけどw)ら、お前に対して言っているのも間違いではない
単なるちょっとした行き違いとしろよ。お前の質問文がズレてるのもあるしそれなのにお前から挑発してるしw、何で
コマンド置換とこだけ(そもそもコード上でもあった)メッセージを出すようなった
のかはちょっと調べた範囲ではわからなさそうだからな=そのせいでバグとされて対応に追われてるのがわんさかあるのに、何でbash 4.4(?)からそうなったのか言及されてるのはなさげ
0743デフォルトの名無しさん
垢版 |
2021/02/01(月) 12:57:52.28ID:KcF6/QTu
パイプは、エラーメッセージを出したらダメ。
後ろにつながらない

出ていても、標準出力には出せない。
結果を、後ろに標準出力で渡すから

標準エラーか、エラーログに出さないといけない
0745デフォルトの名無しさん
垢版 |
2021/02/01(月) 14:09:03.27ID:IMDeHKxL
>>742
> コマンド置換とこだけ(そもそもコード上でもあった)メッセージを出すようなった

どっちでもいいわw

なんでコマンド置換「だけ」だしたのか?その意図がわかる?

言っとくけど質問は「だけ」だからな
「だした」理由なんかわかってる
なぜコマンド置換のとこ「だけ」なのか
0746デフォルトの名無しさん
垢版 |
2021/02/01(月) 14:11:00.77ID:IMDeHKxL
>>743
標準出力にエラーを出すなんて発想は最初からなかった
標準エラー出力に出すに決まってるよ
0748デフォルトの名無しさん
垢版 |
2021/02/01(月) 17:54:19.71ID:rahHnkLn
>>745
お前は人の文の意図さえ全く読めないのか

てか、また自分の非/ミスは全く認めないその文からは...
そんな「知ってた」はずなら、質問は的確だっただろうに、そのごまかしからもやはり...

だったら、終了だな。すでに>>742って書いてるからな
お前がやはりいつものやつだったらいつもの通り読めないんだろうけどw
0749デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:03:43.60ID:IMDeHKxL
>>748

> なんでreadだとこのエラーはださないんだろう?
> 誰か理由わかる?

この「質問」に最初に答えたレスはどれですか?
0750デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:04:02.51ID:rahHnkLn
どっちか判断つかなかったのは>>735があるからなw
いつものやつ本人だったら本当によくいうよだよ、ガイキチ
じゃないんだったら、自分の>>735をよく噛みしめるんだな、>>745がまさしくお前のいう>>735だろうにww
0752デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:07:57.44ID:IMDeHKxL
散々指摘されてようやく

>>742で、readでこのエラーはださなかった意図は
(俺には)わかりません。だからなぁ

>>742より
> コマンド置換とこだけ(そもそもコード上でもあった)メッセージを出すようなった
> のかはちょっと調べた範囲ではわからなさそうだからな
0753デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:09:50.61ID:rahHnkLn
>>749
>コマンド置換とこだけ(そもそもコード上でもあった)メッセージを出すようなった
>そういう認識を持っていた(本当に持っていたかは知らんけどw)ら
>>726もそれに当たるだろうし、以下の>>729なども返しとしてはそんなに間違っていないなw

てか、そのズレてる質問、間違った質問をまだ繰り返すのだな??w
>>751,752
やはり、いつものお前か?ああ、やっぱりお前か。ガイキチ確定かよ(?)w
0754デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:12:17.51ID:IMDeHKxL
> >>726もそれに当たるだろうし、以下の>>729なども返しとしてはそんなに間違っていないなw

大間違いじゃん。

>>726の答え
質問 AとBが候補として考えられるのに、Bだけやった「意図」は?
答え Bだけやりました

>>729の答え
質問 AとBが候補として考えられるのに、Bだけやった「意図」は?
答え AはBじゃないから


「意図」を全く答えてない
0点だろw
0755デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:13:26.88ID:rahHnkLn
散々指摘も何も、俺は>>738からだからな。単に>736のレスに興味持ってそれに対してからの
お前の疑問は別に否定してないのになあwどっちの言い分もまあわかるっていう感じなw
なんかまた妄想のストーリー描いているようだけど、トンチンカンなレススンア
0756デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:14:35.10ID:rahHnkLn
>>754
すでに書いたろ。やはり読めないようだけど
お前の欲しいレスだけくれなんてお前の都合なんて、レスを書くやつに強制しても無駄だぞ?お前自体してないんだからww
0759デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:20:05.00ID:rahHnkLn
>>755って書いてるのに未だにw
また明らかに自分のミスを誤魔化すためだけのレスだな。しょうもない
0760デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:23:11.00ID:IMDeHKxL
だから「質問を理解してない」って話題はここなわけ

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はコマンド置換じゃないから。
なんでこんな単純なことが理解出来ないのか、理解に苦しむ



お前が出てきたのは後からじゃん。
後から来て質問と無関係の話をしてるやつを擁護してくるなと
0761デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:25:08.63ID:rahHnkLn
その本人が本当にはどう思っていたかは知らんが>>753に書いた通り。そんなお前の都合の良い方だけに与しない
別に間違っているとは思えなく読める。読めない/誤魔化したいだけのお前にはわからんだろうが
また、>>750って書いてるのに、まだ続けるのか。さすがだな...w
また誤魔化すだけの話題変えるしなwwガイキチの粘着質は尽きないな
0762デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:28:22.85ID:IMDeHKxL
なんつーか、質問がはっきりしてるのにその質問を無視して
アホを擁護するとか、まあいつもの流れだよなぁw
0763デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:30:08.47ID:IMDeHKxL
質問に答えるだけでいいんやで?
それ以外の話はお前とは関係ないやろ?
質問に答えてあとは黙ってればいいだろ?

本当にお前がしたいのは、質問と関係ない話をして
日頃の鬱憤でも晴らしたいんか?
0764デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:31:58.96ID:rahHnkLn
どっちの言い分もまあわかるっていう感じなだからな。また質問がズレてるとおも言ってるしな(それが元凶だろうという意味だぞw)
全然人のを読めないのな
どういうオチなのか知らんがよく>>750なんて書けたなあっていうだけのオチだなw
0765デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:33:12.67ID:rahHnkLn
>>763
よくいうよwww
まあ素晴らしいオチとしておくよ。別に笑いを誘ったわけじゃないんだろうけどww
0767デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:36:52.59ID:rahHnkLn
書いてるだろうに...わからんのか。かやはりお前は読めないやつだな...つくづく呆れるw
0768デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:46:47.12ID:IMDeHKxL
書いてる言ったからには、その書いてるレスを引用する必要がある
そうすればお前の主張する「書いてる」が間違いだとわかるだろう
0769デフォルトの名無しさん
垢版 |
2021/02/01(月) 18:52:47.07ID:rahHnkLn
お前は偉そうなくせに教えてくれくんだなあ...つくづくそう思う
そんなヤツはどう扱われる/見られるなんて普通知っているもんだが、さすがだなw
誤魔化そうとすればするほどドツボなのも、さすがすぎてすげえよw
0773デフォルトの名無しさん
垢版 |
2021/02/01(月) 22:25:22.02ID:srTHfdLe
>>730にこう書いてあるねぇ
>なぜコマンド置換ではない場合は、エラーを出さないことにしたのか?

コマンド置換じゃないから。>>729で書いた時点で話が終わってるはずなんだが。
ごめんなさい言えばいいだけなのに、20近いレスで
言い訳ばかり書いてるような頭じゃ理解できないんだろうな
0776デフォルトの名無しさん
垢版 |
2021/02/02(火) 22:58:29.24ID:7of77oce
コマンド置換だしたからだろ?

どちらもnullがあったらかってに除去するという処理をしていたのに
なぜかコマンド置換の場合だけエラーを出すようにした


それはなぜか?その理由が>>729に書いてあると言ったよね?
0779デフォルトの名無しさん
垢版 |
2021/02/03(水) 00:30:27.87ID:JDDr+bmN
ignored null byte処理が実装されたのは、
コマンド置換: 2.05-alpha (この時点ですでにメッセージを出力する文もあることはある)
read: 4.3 (メッセージを出力する文はまだない)
コマンド置換でメッセージ出力するようにしたのは 4.4-betaからで、readでメッセージを出力するのは時期尚早なんだろうw
readとコマンド置換が同じじゃなくてはというようなことを言い張ってるが、bashの中の人は別に同じとは思ってないんだろう
他に構文解析かな??のとこでも同じように ignored null byte を出力する文はあることはあるしな(言い張ってるゼロイチ論ではこっちもじゃないのか?)

>まあまたいつものやつだろうな。他人の話を聞かないで
>自分の思い込みで発言して、指摘されたら逆切れ
どの口いやどの頭でこんなことほざいたんだか。いやあの頭だからか
0780デフォルトの名無しさん
垢版 |
2021/02/03(水) 03:19:25.92ID:tGLgSWGP
>>778
コマンド置換ではないreadは出さない「理由」はなんですか?
が質問ですよ?

readで出さない理由はわからないけど
readはコマンド置換じゃないから出しませんでした。
だと「理由はわからない」が答えになります。OK?
0781デフォルトの名無しさん
垢版 |
2021/02/03(水) 03:23:16.39ID:tGLgSWGP
>>779
あなたは時期が来たらreadでエラーを出すべきだと思いますか?
逆にそう思わないですか?

出すべき or 出すべきでない、その理由は何でしょうか?
知りたいのは「理由」です。

いま出てないから出てないんだーとかいう
現状は最初からわかってます。
0782デフォルトの名無しさん
垢版 |
2021/02/03(水) 03:36:41.39ID:BvAjTIO8
こっちはechoを使ってるのに、こっちではprintfを使ってる理由はなんですか?というレビューに対して
printfはechoじゃないから、じゃ全く答えになってないんだよな
そんな答えばっかり返してるやつはアスペだと思う

レビューでインデントはスペース4にしなさいと言っても
こっちのスクリプトは4にしなさいと言われなかったからとか言いそうw
0783デフォルトの名無しさん
垢版 |
2021/02/03(水) 04:14:56.11ID:JHLizRYo
読めなさすぎだろう、自分の頭で物事を考えなさすぎだろう
問題の本質は、
何で コマンド置換のとこのソースコード中に昔から元々あったメッセージ出力を出すようになったのか
でしかない。readとか関係ない。ソース見れば大体その雰囲気がわかるだろう
質問するなら、
どうして4.4からコマンド置換のとこでメッセージ出すようになったか
だろう。readに主題置いて聞かれたら、readはコマンド置換じゃないから という返答は特におかしくもないだろう

レビューとか下手な例え話してんじゃないよ
0784デフォルトの名無しさん
垢版 |
2021/02/03(水) 04:24:23.61ID:BvAjTIO8
>>783
本質って、最初のレス読めばわかるだろう?
>>725

> $ a=$(printf '\0\n')
> -bash: 警告: command substitution: ignored null byte in input
> っていうエラーが出るんだけどさ、これだとでない
> printf '\0\n' | read a
>
> なんでreadだとこのエラーはださないんだろう?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 誰か理由わかる?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

問題の本質は「なんでreadだとこのエラーはださないんだろう?誰か理由わかる?」
以外にありえないよ。勝手に文章に入れ替えるの"だけ"は明らかに間違いだからね
0785デフォルトの名無しさん
垢版 |
2021/02/03(水) 04:27:53.75ID:BvAjTIO8
> だろう。readに主題置いて聞かれたら、

readは主語ではありません。この文章は日本語でよくある主語の省略です。

主語を入れるなら
「なんで(開発者は)readだとこのエラーはださないんだろう?」
となり、主語は開発者です。
0786デフォルトの名無しさん
垢版 |
2021/02/03(水) 04:30:18.19ID:jQBymAxP
お前の言ってるのはトンチンカンな質問の本質(??)wだろう
問題の本質の意味が違う、てか読めねえの?普通に読めそうだと思うんだがな
トンチンカンな質問の発端がメッセージが出ることなんだろ?その疑問の発露となる問題の本質だよ、故に
何で コマンド置換のとこのソースコード中に昔から元々あったメッセージ出力を出すようになったのか
だよ

繰り返しreadではと言っておいて何を言っているのか。本当にお前は懲りないな
0787デフォルトの名無しさん
垢版 |
2021/02/03(水) 04:34:08.84ID:BvAjTIO8
文章は

「read "では"」です。
「read "が"」ではありません。

この文章を見て、readを主語だと思うのは日本語不自由な証拠です。
「コマンド置換(主語)がエラーを出している」
「read(主語)はエラーを出さない」
と勘違いしちゃったんでしょうね。


「開発者はなぜコマンド置換ではエラーを出すようにし、readでは出さなかったのか?」
という文章だと読めなかったんですか?

やっぱりアスペなんだろうな
0788デフォルトの名無しさん
垢版 |
2021/02/03(水) 04:40:15.59ID:jQBymAxP
どうして4.4からコマンド置換のとこでメッセージ出すようになったか
開発者の気分だろうwもしくはそこの部分で開発者に何らかの注文があったんだろ
コマンド置換の部分だけの修正(ソースコードからは気分としか読めないけどw)なのでコマンド置換だけの話、readは関係ない
readに主題置いて聞かれたら、readはコマンド置換じゃないから という返答は特におかしくもない
それだけの話だな

色々読めないくせに、なんか言ってる
正直何言ってるのとしか思えない。マジでそれで自分は日本語が不自由ではないと思っているなら、日本語が不自由すぎだろう。そりゃ色々読めないだろうな
0790デフォルトの名無しさん
垢版 |
2021/02/03(水) 04:43:16.91ID:BvAjTIO8
質問文 「なんで(開発者は)readだとこのエラーはださないんだろう?」

>>788のの解釈
質問分の意味は「どうして4.4からコマンド置換のとこでメッセージ出すようになったか」だな!

これだからもうw
0791デフォルトの名無しさん
垢版 |
2021/02/03(水) 04:49:04.40ID:jQBymAxP
アホな日本語講釈に事細かに反論するのも馬鹿らしいだけなのに

>>728
質問は明らかにこれです。
> なんでreadだとこのエラーはださないんだろう?

こう書いたのはどこぞの誰なんだかな。馬鹿馬鹿しい

以下ずっと。
1.コマンド置換とreadは同じであるはず/あるべきと思った
2.それが間違いだったのに自ら先に返答レスを馬鹿にした
この2つの間違いを決して認められないだけで、下手くそな小手先な誤魔化しを延々と繰り返すんだろうな
ますます馬鹿を晒してるだけなのに
0792デフォルトの名無しさん
垢版 |
2021/02/03(水) 04:50:13.13ID:BvAjTIO8
> こう書いたのはどこぞの誰なんだかな。馬鹿馬鹿しい

↓これ

> 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だとこのエラーはださないんだろう?
> 誰か理由わかる?
0794デフォルトの名無しさん
垢版 |
2021/02/03(水) 04:53:12.04ID:jQBymAxP
お前は馬鹿すぎて話にならんぞ
だったら、
readに主題置いて聞かれたら、readはコマンド置換じゃないから という返答は特におかしくもない
でしかないだろう
お前の小手先ごまかしがキチガイすぎて頭痛くなってくるぞ
0796デフォルトの名無しさん
垢版 |
2021/02/03(水) 04:59:06.37ID:jQBymAxP
なに言ってるの?マジキチすぎ
>誰が言ったのか書いたのに、無視すんの?
揶揄とかわからんのかw それに対しての>>794がわからんのか。レスする前にちゃんと読み返したほうがいいよ って言うくせにwww

どうして4.4からコマンド置換のとこでメッセージ出すようになったか
開発者の気分だろうwもしくはそこの部分で開発者に何らかの注文があったんだろ
コマンド置換の部分だけの修正(ソースコードからは気分としか読めないけどw)なのでコマンド置換だけの話、readは関係ない
readに主題置いて聞かれたら、readはコマンド置換じゃないから という返答は特におかしくもない

1.コマンド置換とreadは同じであるはず/あるべきと思った
2.それが間違いだったのに自ら先に返答レスを馬鹿にした
この2つの間違いを決して認められないだけ

でしかないな
0797デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:01:05.98ID:BvAjTIO8
「どうして4.4からコマンド置換のとこでメッセージ出すようになったか」
それはどれが言ったの?w

質問は明らかにこれです。
> なんでreadだとこのエラーはださないんだろう?
0798デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:02:33.40ID:jQBymAxP
レスする前にちゃんと読み返したほうがいいよ

www
阿呆らしい...いやアホだけど
0799デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:04:04.63ID:BvAjTIO8
だから質問は「なんでreadだとこのエラーはださないんだろう?」だろ
これに対して反論なかったんだが?

誰が4.4とかいい出したのか。お前か?
いつから出したとか誰も気にしてないんだが

はい、この質問に答えられる?
0800デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:05:52.97ID:jQBymAxP
レスする前にちゃんと読み返したほうがいいよ
としか言いようがない

1.コマンド置換とreadは同じであるはず/あるべきと思った
2.それが間違いだったのに自ら先に返答レスを馬鹿にした
この2つの間違いを決して認められないだけ
だけでよくそんだけ小手先の誤魔化しを続けられるな。マジキチすぎだろう
0801デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:06:58.67ID:BvAjTIO8
> 1.コマンド置換とreadは同じであるはず/あるべきと思った

思ったとか、それはお前の感想でしかない

> 2.それが間違いだったのに自ら先に返答レスを馬鹿にした

「それ」とはお前の感想である
0803デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:09:08.17ID:BvAjTIO8
ほらね。俺が言い返しても、
こいつは言い返してこない。

言い返せないというのが正しいがw
0804デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:11:25.52ID:jQBymAxP
すぐにそういう馬鹿なこと言うし
アホな小手先の誤魔化し文になんで正面からいつまでも付き合わなきゃならんねん
アホな小手先の誤魔化し文という自覚がないのか?マジキチすぎすぎだろう
0805デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:13:12.26ID:BvAjTIO8
それにコマンド置換とreadが全く違う動作をすると思ってそうだよなw
違うところがあるのは知ってるからそれは聞いてない
同じ動作をするところがあるのを、はたしてこいつは知ってるんだろうか?w

ま、また関係ない話をしてごまかすだろうな
0806デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:16:11.71ID:jQBymAxP
後付けて決めつけが始まりましたwww
ソース読んでるし、他のシェルで試してもいるし
イマイチ何のことかだが、こいつだと言い出しそうなのは大体推測できる
こんなこと言い出したのもついさっきわかったとかだろうな。違うか?w
0808デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:19:36.98ID:BvAjTIO8
だいたいさぁ command substitution: ignored null byte in input を出すなら、
read: ignored null byte in input も出すべきだって思うだろ
これに関する動作は同じなんだから

多分それも知らなかったんだろうけどな
0809デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:20:21.08ID:jQBymAxP
レスする前にちゃんと読み返したほうがいいよ

www
いい加減怒るヤツ出るだろうし、誤魔化しに付き合うのももういいってので

どうして4.4からコマンド置換のとこでメッセージ出すようになったか
開発者の気分だろうwもしくはそこの部分で開発者に何らかの注文があったんだろ
コマンド置換の部分だけの修正(ソースコードからは気分としか読めないけどw)なのでコマンド置換だけの話、readは関係ない
readに主題置いて聞かれたら、readはコマンド置換じゃないから という返答は特におかしくもない

1.コマンド置換とreadは同じであるはず/あるべきと思った
2.それが間違いだったのに自ら先に返答レスを馬鹿にした
この2つの間違いを決して認められないだけ

というだけのお話でしたとさw
0810デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:21:04.31ID:BvAjTIO8
> どうして4.4からコマンド置換のとこでメッセージ出すようになったか

誰もそんな事気にしてない
0811デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:21:20.27ID:BvAjTIO8
> 1.コマンド置換とreadは同じであるはず/あるべきと思った

同じところがありますね。
0812デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:22:16.05ID:BvAjTIO8
もうネタバレしてやると

コマンド置換とreadは、どちらも ignored null byte in input は同じなんですよ
どちらも入力のnullバイトを無視してる
0813デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:27:21.54ID:jQBymAxP
>>779ですでに書かれてることを何を一人悦に入っているのだか
すでに書かれてることを、何自分は知ってるお前(ら)は知らないと言えるんだか
>コマンド置換とreadは、どちらも ignored null byte in input は同じなんですよ
ちょっと違うんだなあ。さてどう違うでしょう?ww
0814デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:29:11.45ID:BvAjTIO8
違いはありません。どちらも同じように ignored null byte in input します。
英語わかる? 入力のNULLバイトを無視するって書いてあるんだよw
0816デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:30:41.09ID:BvAjTIO8
1. コマンド置換とreadはどちらも入力のNULLバイトを無視する
2. 質問は「なんでreadだとこのエラーはださないんだろう?」

これだけなのにreadが主語だ!とか理由わからないことを言って
ずーっと自分の勘違いをごまかしてる
0817デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:31:53.40ID:BvAjTIO8
>>815
「入力のNULLバイトを無視する」は同じですといいました。
それ以外の点では違うところがあると>>805ですでにいいました。
> 違うところがあるのは知ってるからそれは聞いてない

お前のターン(笑)
0818デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:32:05.41ID:jQBymAxP
はい出ました、また話題を変えての堂々巡り巡り
レスする前にちゃんと読み返したほうがいいよ

www
一人でやってなさい。じゃね
0820デフォルトの名無しさん
垢版 |
2021/02/03(水) 05:35:38.89ID:jQBymAxP
逃げてないよぉ
他の人に怒られるのが嫌なだけだぞw本当にお前は自分がどれほどだと思ってるねん
0824デフォルトの名無しさん
垢版 |
2021/02/03(水) 08:29:21.99ID:OYjylJSn
質問者おいてけぼりだと思ってるやつがいるらしい
そんなやついないだろう
0831デフォルトの名無しさん
垢版 |
2021/02/07(日) 19:23:43.78ID:95HB2PSV
$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が作用していないように見えるのですか?
0833デフォルトの名無しさん
垢版 |
2021/02/07(日) 19:30:49.83ID:urVbT3ji
$dirname /Applications/Safari.app
だと、dirnameという変数を展開しようとしてるだけだろ
dirnameというコマンドを実行するのではなく

コマンドプロンプトのとちょっと見分けづらいのでちゃんとスペースを置くべきだな
0834デフォルトの名無しさん
垢版 |
2021/02/07(日) 19:34:34.15ID:/Qje/xZk
何がしたいの?
0835デフォルトの名無しさん
垢版 |
2021/02/07(日) 19:39:40.46ID:urVbT3ji
さっぱりわからんなw
動作確認の途中なんだろう。findしても同じ結果出すだけだしな
そのうち {} とか入れたりするんだろうが、

実行したいなら $() だろう

-exec sh -c "

-exec sh -c '
でないとマズそうマズいだろうな

な感じかなあ
0837デフォルトの名無しさん
垢版 |
2021/02/07(日) 23:59:19.31ID:rB7egHB7
パラメータ展開より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
0838831
垢版 |
2021/02/08(月) 00:07:37.75ID:vQsk29JM
ありがとうございます
変数になっていることに気づいていませんでした
find -exec sh -cで複数コマンドを扱うのは諦めforを使って解決しました
>>833 スペースをどう置くとどう見分けやすくなりますか?
>>834 質問に関係ある部分だけ抜き出したので意味不明なものになっています
0839デフォルトの名無しさん
垢版 |
2021/02/08(月) 01:01:47.00ID:mwZivU/L
>>837
わかりやすさ vs 実行速度の話だね
さくっとコマンド入力する時はbasenameでいいけど
シェルスクリプトであればパラメーター展開のほうがいい
0840デフォルトの名無しさん
垢版 |
2021/02/08(月) 02:02:04.12ID:MxYuS/Yw
>>838
$ find . -type f -name '*.mp4' -exec sh -c "echo $dirname /Applications/Safari.app " ¥;

$ dirname /Applications/Safari.app
0842デフォルトの名無しさん
垢版 |
2021/02/08(月) 19:08:48.56ID:0fSH6U0R
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
0845デフォルトの名無しさん
垢版 |
2021/02/08(月) 20:15:13.87ID:luijRT1t
なぜ定期的にRubyが出てくるのか
0846842
垢版 |
2021/02/08(月) 20:50:44.33ID:0fSH6U0R
シェルスクリプトも、Windows 10, WSL2, Ubuntu 18.04, VSCode でやってる

Ruby は、Linux用・Windows用の両方を入れてる
0847デフォルトの名無しさん
垢版 |
2021/02/08(月) 20:53:25.78ID:kogF3g22
>>845
久しぶりだけどなw
なんて言われてるかは上の方であるな
トンチンカンなレスしてるとこからもトンチンカンな承認欲求なんだろう
0848831
垢版 |
2021/02/09(火) 16:10:25.08ID:KQyT9obu
>>840
ありがとうございます
0849デフォルトの名無しさん
垢版 |
2021/02/10(水) 14:26:08.93ID:BVEov/zu
Alpine?busyboxってコマンド追加した場合の競合どうなってるんですかね?
たとえばdateがGNU版と挙動が違うのでcoreutils追加したんですけど
元々/bin/dateだったのが追加後も/bin/dateのままなのに呼び出されるのはしっかりcoreutilsのに変わってます
macではdateとgdateで使い分けられたのでモヤモヤします
0850デフォルトの名無しさん
垢版 |
2021/02/10(水) 15:19:36.03ID:kdTQDXtx
汎用ではなくカスタマイズした環境前提だからそんなの気にしない
置き換わっても置き換わるのを知って作るそういう独自の環境を自ら望んで作る
0852デフォルトの名無しさん
垢版 |
2021/02/10(水) 20:16:55.68ID:kDXEbzyj
>>849
ディストリの方針次第。Debianとかだってvim-tinyを入れるか
通常のvimを入れるかで呼び出されるvimが変わる
どちらを使うかの切り替え機能も持っている

パッケージで入れる分には、入れても動作するように作られてる
パッケージで入れて壊れたらそれはディストリのバグ

Debianなんかはbusyboxを入れてもデフォルトで置き換えたりしない
alpineはbusyboxの方がデフォルトなんだから、それで動くように作られてる
それをcoreutilsに変更しても動くように作られてるだろう

macの場合、gdateを入れるのはサードパーティのHomebrew
Apple社と一切関係ないフリーソフトで、Appleは動作保証もしてないのだから
Homebrewはデフォルトで置き換えたりしない。壊れる可能性があるから
dateを置き換えられないだけで使い分ける方が便利なわけではない

そもそもbusyboxはcoreutilsのコマンドと比較して一部の機能が
実装されてないだけで、実装されてる機能に関しては互換性があるように作られてる
しかしMacのdateはBSD版なのでgdateと互換性がない
0853デフォルトの名無しさん
垢版 |
2021/02/12(金) 23:49:25.35ID:0z7QwFq3
超高速なシェルって登場しないもんかね?
JITエンジン搭載して最適化とかガシガシやるようなやつ
0856デフォルトの名無しさん
垢版 |
2021/02/13(土) 15:47:07.99ID:Ieh1QGrP
>>855
各自適当に当てはまると思うのを挙げてもらえばいいと思ったんだがw
じゃあ例えばPythonの各種実装でいいけども。
そしてJITだけが高速化の技術ではないけども。
0857デフォルトの名無しさん
垢版 |
2021/02/13(土) 15:50:58.00ID:scVpGKPS
超高速なシェルって〜という質問に対して
スクリプト言語の高速化とは違うのけと言われてもね

飴がほしいに対して
キャンディーとは違うのけと言うようなもんだよ
お前は何がいいたいのか
0858デフォルトの名無しさん
垢版 |
2021/02/13(土) 16:12:05.01ID:ZrAw7sjN
思慮が浅いからわからんのだろう
思慮が浅いからトンチンカンな疑問が湧くのだろう
0859デフォルトの名無しさん
垢版 |
2021/02/13(土) 16:14:48.15ID:Ieh1QGrP
>>857
じゃあ最初から「ちがうのけ」に対して「ノー」と言えよw
どうしてもシェルじゃないといけないのかの確認だったのだが。
もうどうでもいい。
0860デフォルトの名無しさん
垢版 |
2021/02/13(土) 16:20:51.53ID:scVpGKPS
各自適当に当てはまるといっておきながら何を言ってるんだ?

(俺の定義に当てはまるものは)ノーだ

これでお前は何のことかわかるのか?
0863デフォルトの名無しさん
垢版 |
2021/02/13(土) 16:50:09.98ID:IQ0h7Vrd
いやお前がなんだが
いつものやつもそういうレスを前にいくつかしてたからなおだな
0865デフォルトの名無しさん
垢版 |
2021/02/13(土) 16:58:17.73ID:IQ0h7Vrd
じゃあ、そういうように見えるから気をつけたほうがいいな
なぜかいきなり喧嘩腰になる>>857とか、全然意図を読めずにまだマウント取るのがメインのような>>860とかな
本当に違うんだったら、すまんかった。本当に違うなら
0866デフォルトの名無しさん
垢版 |
2021/02/13(土) 21:13:09.13ID:2KIaYprT
超高速なシェルって言ってもどこを高速化したいのか分からんね
他のスクリプト言語と違ってプロセス起動を平気でやる性質があるから
JIT実装したところで、ねえ……
0868デフォルトの名無しさん
垢版 |
2021/02/13(土) 21:48:07.63ID:TtDJ0hV3
>>866
だよな
だから誰も必要としてないから誰も作ろうともしない、
シェルスクリプトの長い歴史から見ても
変わった人(いい意味で)がやろうと出ても企画倒れかな
0869デフォルトの名無しさん
垢版 |
2021/02/14(日) 01:27:13.76ID:u5RUQBwf
デーモン起動とかにも使われるシェルスクリプトは、速さよりもちょっとでも軽いほうがええやろ。
JITなんかにメモリを使う余裕はないな。
0870デフォルトの名無しさん
垢版 |
2021/02/14(日) 14:36:19.88ID:kcgt6YrO
デーモンとかに使うのは素の/bin/shで、言う通り軽い方なのが採用されてるだろう
JIT云々はそういうのではないのだろう。今あるbashとかzshとかそういう方向の
0871デフォルトの名無しさん
垢版 |
2021/02/14(日) 15:27:49.90ID:PhDiV4m5
シェルスクリプトの高速化って結局、exprに対する$()みたいな、外部コマンドの組み込みコマンド化が原則になると思うけど、
それで行き着く先ってPerlでしかないよね

まあRob Pikeの言う通り計測しろって話ではあるので、ボトルネックが実際fork/waitじゃなければまったくの的外れだけど
0873デフォルトの名無しさん
垢版 |
2021/02/14(日) 23:21:01.83ID:Xb0b89w4
>>871
JavaScriptの言語仕様を見ればわかるけど
JavaScript自体ではファイルの読み書きはできないんだよ
つまりI/Oを伴う機能は言語仕様としては本質的に不要と言える

外部コマンドなんて殆どがI/Oなので、それらを組み込む必要はない
Perlは多数組み込んでるので良くない

JavaScriptと同じように、I/Oを必要としないものは
シェル組み込みとして、メモリ計算処理を高速化すればいい
例えばメモリだけでできる単純な値比較や計算だけでもシェルは遅い
0876デフォルトの名無しさん
垢版 |
2021/02/15(月) 00:59:58.92ID:DbVx2um6
争ってるがどこまでを指しているのかわからんが、反論してるのは複数居るだろう
確定しても意味なさげw
0877デフォルトの名無しさん
垢版 |
2021/02/15(月) 01:11:01.23ID:Yv9X0Du7
>>873
ブラウザというホスト環境にのせるために考えられた言語だからI/Oがないだけ
ホスト環境がI/OやEvent Loopを補完しないと動かないし役に立たない

そういう種類の言語の仕様にI/Oがないからといって
一般的なプログラミング言語仕様にI/Oが本質的に不要なわけない
I/O無しではどんなプログラムも役に立たないから
0878デフォルトの名無しさん
垢版 |
2021/02/15(月) 01:12:58.43ID:DbVx2um6
JavaScriptは元々はブラウザ上で動くが発端だからな
勝手にどこぞからロードしてユーザの意思に関係なく勝手に動くプログラムだからな
ローカルファイルにアクセスなんて自由にできたらどうなるか火を見るより明らか
ていうのがあって、何言ってんだかなという>>874じゃないのかな。知らんけどw
0881デフォルトの名無しさん
垢版 |
2021/02/16(火) 03:21:55.67ID:jKfE5F96
>>880
だから、#includeだったりリンカオプションだったり、めんどくさい準備が必要なんだけどな。
0885デフォルトの名無しさん
垢版 |
2021/02/16(火) 11:56:09.07ID:VrzH5GTZ
C言語を持ち出すのはアセンブリに無いと言っているようなもんだな
どういう意味かわかるかな?
0887デフォルトの名無しさん
垢版 |
2021/02/16(火) 13:03:01.94ID:VrzH5GTZ
アセンブリ言語に無いのは当たり前なのはわかるね?
でもアセンブリでもファイルI/Oはできるよね?
C言語はアセンブリに近しい言語だというのはわかる?
だったら「言語仕様」としては無いのは普通と言える
アセンブリでファイルI/Oはアセンブリで記述したライブラリ(サブルーチン)を用いるのと同じように

てか「言語仕様」としては無いが、原典である K&R C でもすでにファイルI/Oに関しては記述があるし、
それに則っての標準としてのライブラリが「必ず」あるだろうから、言語仕様としてないあれはライブラリというのは無理筋だな

プログラミング言語だからとどれも一緒の扱いにするのが間違いでもあるな
0888デフォルトの名無しさん
垢版 |
2021/02/16(火) 13:06:51.96ID:VrzH5GTZ
>>887
>それに則っての標準としてのライブラリが「必ず」あるだろうから
ああ、無いのもあるか。有名なOSで
まあ、そういう独特なのも独特のファイルI/Oは必ずあるってことでw
0890デフォルトの名無しさん
垢版 |
2021/02/16(火) 16:14:30.97ID:jKfE5F96
>>887
ただの決めつけを根拠にしているから、理屈があやしいな。w

まあ、おまえはまず「フリースタンディング環境」について調べろ。
IOはあるのが当然、ではない。
0891デフォルトの名無しさん
垢版 |
2021/02/16(火) 16:32:25.56ID:VrzH5GTZ
>>889
OUT命令ってなんなのか知ってるのかっていう
対象はチップのポートだぞ

>>890
そのフリースタンディングでもフリースタンディングではI/Oは無いとは言ってないだろ
C言語の元といえば K&R C Program Language であり、それに標準ライブラリはあると書いてある
ないとこは標準ライブラリがない環境でCを持ってきてるある意味派生であるはずの標準ライブラリが無いだけだな
0892デフォルトの名無しさん
垢版 |
2021/02/16(火) 16:47:09.77ID:VrzH5GTZ
初版とかどうなのかと思い探したらあった。いいないんたーねっつは

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.
0893デフォルトの名無しさん
垢版 |
2021/02/16(火) 16:51:36.76ID:VrzH5GTZ
K&R The C Program Language が Cの原典ではないというなら話にならないからもう知らないw
フリースタンディング環境とやらののうちのどこぞの環境でファイルI/Oがないなんて、>>888と似たようなもんだろうとしか思えない
0895デフォルトの名無しさん
垢版 |
2021/02/16(火) 20:04:17.80ID:jKfE5F96
なぜC言語の話が出るのか?
なぜアセンブリの話が出るのか?
と飛躍がありすぎて、なんの話なのか、まったくわからん。w

>>893
K&Rなんか、今となっては怪しい歴史書やろ。w
記紀とか聖書とかから現実を語ることはできまい。
0897デフォルトの名無しさん
垢版 |
2021/02/16(火) 20:46:48.66ID:K7YXHG1n
かと思ったら、以下も何言ってんだかだよ
冗談で逃げただけか??
マジならお前がそう思うならそうなんだろな、お前の頭の中ではなんとかかんとかw
見損なったのぞお前w
0898デフォルトの名無しさん
垢版 |
2021/02/16(火) 21:04:42.04ID:fDzgwbS2
シェルスクリプトスレはいつ見ても
キチ vs キチのマウンティング合戦
サル山でもこうはならない
0901デフォルトの名無しさん
垢版 |
2021/02/17(水) 03:06:40.89ID:1QKhelwr
逆に全然枯れてないし俺環上等で本業のジョブ管理に役立つツールの話はもっとするべきだと思う
gnu parallelとかcoprocとか
0902デフォルトの名無しさん
垢版 |
2021/02/17(水) 03:13:44.11ID:PIB5BTik
gnu parallel使うぐらいなら自力実装したほうが楽だと思うわ
coprocは知ってるけど使う理由が見当たらない
0903デフォルトの名無しさん
垢版 |
2021/02/18(木) 09:30:54.83ID:oVgZds3b
シス管やデータサイエンティストとかのparallelヘビーユーザーではないんで効率は気にしてないけど、まあ変な文字の扱いが良くなったxargsとして便利だと思う
配るスクリプトならより普及してるxargsに置き換えた方が良いと思うけど
Perl実装だしいっそ同梱もありだと思うが
0906デフォルトの名無しさん
垢版 |
2021/02/18(木) 09:50:29.23ID:sRdwF113
バイオ系のやつが使ってるけどddで割って割り当てると朝には落ち出るとか
情報出身じゃないのでなんか変な事してる可能性はあるが
0909デフォルトの名無しさん
垢版 |
2021/02/18(木) 10:15:23.24ID:sRdwF113
>>905
ちゃんとスケジュールするの割と大変じゃね?
フォアグラウンドでジョブ走らせたから別端末からアタッチ、5秒毎にpsしてコアの稼働率グラフ作ったが、シヌソイドみたいに振動してる
局所性とのTradeオフがあるから単に分ければいい訳じゃない
一度アフィニティー設定したら終わりじゃなくて、スループット監視しながら、少なくともPID制御程度のロジックは書かなきゃならんだろ
0910デフォルトの名無しさん
垢版 |
2021/02/18(木) 11:02:26.51ID:sRdwF113
>>908
欲張ってパイプ繋げて失敗するのあるある
だからと言ってteeでディスクに中間結果流すとボトルネックになるし

でもバッファリングを乗っ取ってコマンド実行するstdbufを最近知って捗った
二段以上繋ぐと前後のバッファリングモードの影響をモロに受けてた、特にいつも両脇挟まれるteeが…
コマンドがputc連打してるのか、printfにちゃんと改行付けてるのか、と調べるよりオプション全部試した方が早いね
0912デフォルトの名無しさん
垢版 |
2021/02/21(日) 04:01:15.96ID:N+CZPwAr
>>902
coproc cmdだけで対話的に様子見たり追加で入力送って修整したりできるのが便利じゃないかな
スクリプト向けじゃなくてインタラクティブ向け
0913デフォルトの名無しさん
垢版 |
2021/02/21(日) 12:39:32.90ID:kbkbRMiR
シェルスクリプトってPOSIX準拠っていうか/bin/shを使うと
/bin/shの実体がいろんなシェルの場合があるから互換性問題に悩まされるな

bashだけしかなければ互換性問題に悩まされることはないが
交換可能性がある(つまりbashと同等の別の実装)があると
互換性問題に悩まされて、いろんなシェルに対応しようとすると
保守や移植のコストが増大してしまうな
0914デフォルトの名無しさん
垢版 |
2021/02/21(日) 13:50:25.30ID:lCWmWEmE
いわゆるbashismはUbuntuが/bin/shをbashからdashに変えてシステムの数あるスクリプトが動かないがあるのに気づいたのが発端でしかない
dashに変えたのはただ軽いからという理由でしかないし、dashに対応もしくはシバンを適切にという対応が終わってしまってる
いろんなシェルに対応しようとするというニーズはきわめて限られてるか、ただの空想だろな
0915デフォルトの名無しさん
垢版 |
2021/02/21(日) 23:37:24.17ID:D6Gyi0vA
POSIX準拠すれば可搬性があるって言うけどあれ嘘なんだよね
そもそもシェルが完全にPOSIXに準拠してるわけじゃなくて互換性がないから
/bin/shを使ったとしても強制的にbashを使わされる環境ある

もちろん互換性がまったくないとは言わないよ
でもPythonのバージョンが違っていて動かなくなったって話と同じぐらい
別のシェルで動かなくなったって話がでる
0916デフォルトの名無しさん
垢版 |
2021/02/21(日) 23:47:08.70ID:O3wCOSqq
bashはアプリと思ってわざわざインストールするものと
思えばいいんじゃ
高機能でメモリ食う
たまたまshとかぶってる
0917デフォルトの名無しさん
垢版 |
2021/02/22(月) 00:00:35.75ID:04l4cBcD
>>915
可搬性はある
だが、Write once, run anywhere ってことは絶対ではない
もしかしたら問題が起こることもあるが、そんな場合でも修正はそうでないより少なくて済む
くらいなかな
0918デフォルトの名無しさん
垢版 |
2021/02/22(月) 00:29:31.87ID:Vv8+u1qd
POSIX準拠はOKだけど、POSIXコマンド縛りはアホなんだよな
例えば普通にgawkを使えばいい

gawkが提供する機能はPOSIXのawkの機能を超えていて一部互換性はないけど
gawkのソースコード自体はPOSIX準拠なんだから
どのOSでもインストールすれば使うことが出来る。

POSIXコマンド縛りは言い換えれば、インストールしない縛りでしかなくて
便利なものをインストールしないなら、開発コストが上がりますよという話

いろんな環境に移植されてる便利なコマンド(bashとかgawkとかgsedとか)を
インストールしてOKという前提に立てば、それらを使ったほうが
移植性を犠牲にすること無く開発コストは下げられる
0919デフォルトの名無しさん
垢版 |
2021/02/22(月) 00:33:24.80ID:Vv8+u1qd
あとPOSIXコマンド縛り(インストールなし縛り)にすれば20年後でも動くぜ
ただし開発コストが上がるから、弊社が作った独自コマンドをインストールしろよな!
っていうのは矛盾しまくりw

そんな独自コマンドをインストールするなら
各OSに広く移植されてるコマンドをインストールしたほうがいい
例えばrubyとかpythonとかな
0921デフォルトの名無しさん
垢版 |
2021/02/22(月) 00:49:11.43ID:Vv8+u1qd
むやみに否定してるんじゃなくて
理由を言いながら否定してるから問題ないでしょ?
0924デフォルトの名無しさん
垢版 |
2021/02/22(月) 00:55:37.40ID:CFqWxJ8Z
結果や是非を考えないで、いちずに物事をすること
に当たるだろうwわかりやすくいうと非しか考えてないだな
0926デフォルトの名無しさん
垢版 |
2021/02/22(月) 00:58:09.47ID:CFqWxJ8Z
是非があるのに非しか言ってないという自覚がないんじゃ話にならない
その読めなさは
0927デフォルトの名無しさん
垢版 |
2021/02/22(月) 00:58:51.57ID:Vv8+u1qd
もう一回述べるか?

POSIXコマンド縛りをしないほうが
高い移植性に加えて開発コストの削減を実現できるのだから
POSIXコマンド縛りはアホ
0929デフォルトの名無しさん
垢版 |
2021/02/22(月) 01:00:15.42ID:Vv8+u1qd
>>926
是非を考えるっていうのは、
是と非の両方を言うって意味じゃないぞw

是と非の両方を「考える」という意味だ
考えた結果、POSIXコマンド縛りはアホというのが結論だ
0930デフォルトの名無しさん
垢版 |
2021/02/22(月) 01:01:23.37ID:CFqWxJ8Z
POSIX準拠には利点もあるし欠点もある
適時もしくは各々の好みで好きにしろってだけだな
0931デフォルトの名無しさん
垢版 |
2021/02/22(月) 01:02:56.43ID:Vv8+u1qd
POSIX準拠じゃなくてPOSIXコマンド縛りなw
POSIX準拠だとgawkのソースコードもPOSIXに準拠してるだろ

じゃあお前がPOSIXコマンド縛りの是非を考えて
是となる部分を言えばいいじゃん
何も言ってないのはお前の方だぞ
0932デフォルトの名無しさん
垢版 |
2021/02/22(月) 01:04:37.72ID:CFqWxJ8Z
>>829
わかった?
わからんだろうけど。今だに是非を自分の都合の良い視点でしか理解できないみたいだからなあ
言いたいこと言ったのでおしまいおしまい

>>831
やっぱりわからんかったか。てかいつもの話題変えるのか
POSIX準拠の利点とそう変わらないだろうに。わからんのね
0934デフォルトの名無しさん
垢版 |
2021/02/22(月) 01:07:15.01ID:Vv8+u1qd
918 名前:デフォルトの名無しさん[sage] 投稿日:2021/02/22(月) 00:29:31.87 ID:Vv8+u1qd [1/9]
POSIX準拠はOKだけど、POSIXコマンド縛りはアホなんだよな
例えば普通にgawkを使えばいい
0935デフォルトの名無しさん
垢版 |
2021/02/22(月) 01:08:23.33ID:CFqWxJ8Z
>POSIX準拠の利点とそう変わらない
これがわからないんだったら語る資格はない
俺はあんたのママではないぞ
もう全て語ってるからあとはあんた次第、頑張れ
0936デフォルトの名無しさん
垢版 |
2021/02/22(月) 01:13:01.92ID:Vv8+u1qd
「POSIXコマンド縛りの是の部分を言え」

という言葉の意味がわかりませんか?
0937デフォルトの名無しさん
垢版 |
2021/02/22(月) 01:23:33.23ID:Vv8+u1qd
POSIXにはPOSIX socketやPOSIX スレッドなど多くのAPIを含んでいるが
POSIXコマンドはPOSIX全体のごく一部しか利用しておらず
POSIXコマンド縛り=POSIXの一部しか使えない制限 という意味でもある

POSIX(C言語中心のOSとのインターフェース)は必要だから作っれたけだが
POSIXの一部しか使えないPOSIXは、必要なものが使えないということを意味する
0938デフォルトの名無しさん
垢版 |
2021/02/22(月) 01:25:24.66ID:Vv8+u1qd
訂正

POSIX(C言語中心のOSとのインターフェース)は必要だから作られたわけだが
POSIXの一部しか使えないPOSIXコマンドは、必要なものが使えないということを意味する
0939デフォルトの名無しさん
垢版 |
2021/02/22(月) 01:30:49.08ID:hF/C7ALs
POSIX準拠にはPOSIXで規定されたコマンドおよびコマンドのオプションだけを利用することを規定してるのもあるな
0940デフォルトの名無しさん
垢版 |
2021/02/22(月) 02:19:05.57ID:Vv8+u1qd
> 規定してるのもあるな

なんの話してるんだよw

そんなものないって言ったら
あるって言って証拠出してくれるんだよな?
0943デフォルトの名無しさん
垢版 |
2021/02/22(月) 04:19:52.69ID:Ti3ZPwKy
簡単なシェルスクリプトならググらず書けるようになった新参者だけど、
オプションの法則に統一性ないのが一番解せないわ
ショートオプションはハイフンの後が一文字っていうけどfindの-typeからして守ってないしさ
wgetにも-nvがあるけど既に形骸化してんの?
0944デフォルトの名無しさん
垢版 |
2021/02/22(月) 05:47:22.05ID:Vv8+u1qd
>>942
適切なツールを使いましょうってだけ
コマンドを組み合わせて使うなら
シェルスクリプトが一番適切
他のどの言語もコマンドを組み合わせて使うのには適していない

>>943
一部のコマンドに変なオプションがあるだけだよ
開発者がよく知らずに実装してしまっただけ
0945デフォルトの名無しさん
垢版 |
2021/02/22(月) 12:30:54.33ID:CSMFeOjN
メモリが安価になったという意味で時代は変わったんだから
組込含めてdashを選ぶ必要性はないでしょ

POSIX準拠なんてかつては大衆芸能だったが今では伝統芸能で
保存対象になるつつある歌舞伎みたいなもんだよ
0946デフォルトの名無しさん
垢版 |
2021/02/22(月) 13:38:19.02ID:DHZuB9bv
>>945
文句はディストリ屋に言ってくれ
Debian/Ubuntuはdashを選んでるし
Alpineはbusyboxを選んでるんだ
嫌でもdashやbusyboxを使わないといけないんだだよ
0947デフォルトの名無しさん
垢版 |
2021/02/22(月) 13:42:31.76ID:pc9xVD8t
>>943
ロングオプションなんかぐにゅの後出しみたいなもんやし、互換性のほうが重要やし、しゃあない。
統一性を期待するもんでも、守る守らないを議論するもんでもない。

コマンドラインの世界は、ただ混沌を受け入れるのみ。。。
0948デフォルトの名無しさん
垢版 |
2021/02/22(月) 14:06:32.02ID:G00ce5gO
ロングオプションっていうかハイフン2個で始まるオプションに関しては統一されてる
変なオプションがあるのはハイフン1個で始まるやつ

もし今からオプションを規格化するとしたら、俺なら
-で始まるのは一文字のオプションだけ。オプションの引数はなし
--で始まるのはロングオプションで、オプションの引数はあって無くてもよいが
ある場合は --long=value みたいに必ずハイフンでつなげること
--long value形式は無しってルールにするだろうな

そうしないとオプションの解析は面倒くさすぎる
0949デフォルトの名無しさん
垢版 |
2021/02/22(月) 14:28:14.65ID:7dAnGrvt
2020年代にもなってオプション解析を自前でやらなきゃいけないという時代錯誤感よ
0952デフォルトの名無しさん
垢版 |
2021/02/22(月) 19:20:10.80ID:G00ce5gO
>>951
俺ルールじゃなくて、既存のルールのサブセットだけどな
まあ知らない人にとっては特殊なルールに見えるんだろうね
0956デフォルトの名無しさん
垢版 |
2021/02/22(月) 22:47:21.38ID:DTTWlGhR
>>952
すでにデファクトスタンダードになってるだろう、>>951のがあるんだから「俺なら」ってのはいらないって話じゃないの
シェルスクリプト用には>>915を用いたのがになるだろうし
「俺なら」がGNUとBSDの違い(があるなら)を勘案してのかと思ったら、解析は面倒くさすぎるって言ってるから違うっぽいかな
0959デフォルトの名無しさん
垢版 |
2021/02/22(月) 23:05:58.69ID:UEjjQNjA
シェルで標準的に使われてるのってgetoptかgetoptsじゃないの?
どっちも微妙だけど
0961デフォルトの名無しさん
垢版 |
2021/02/24(水) 21:20:00.07ID:5t0N0rwK
現行ディレクトリ直下にあるファイルを日付順に処理したい。
dateの-dオプションと'%s'書式を使ったやりかた
(-dオプションにlsの出力の日付欄を渡して,%s書式でsortに回しやすい形式に変換する)
は思い付くのだが,できればもうちょっと汎用性のあるやりかたでやりたい。
それこそAlpine Linuxでもできるようなやりかた,せめてSUS準拠くらいで。
0967デフォルトの名無しさん
垢版 |
2021/02/25(木) 02:26:19.35ID:4mFpqJjx
Unix Version 1 からあるな
逆順は System III にはあるな
興味があって探してみたらあるもんだな
0971デフォルトの名無しさん
垢版 |
2021/02/25(木) 12:34:26.08ID:lhusjOX+
ls lt(r)じゃ駄目なのか
0972デフォルトの名無しさん
垢版 |
2021/02/25(木) 14:28:26.85ID:YHeeVxEb
だれも**なぜか**具体的なこと教えていないので私が。
> -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)で処理するのはどうかな。

まあ改行を含むファイル名には対処できないが。
0979デフォルトの名無しさん
垢版 |
2021/02/25(木) 17:28:29.42ID:/S7F+Ehi
Q: 現行ディレクトリ直下にあるファイルを日付順に処理したい。

A: lsでソート出力すればいいじゃん

人にものを教えてもらった時は「ありがとうございました」だろ
0980デフォルトの名無しさん
垢版 |
2021/02/25(木) 18:29:23.70ID:Le6oxEMx
利奈みんとbotっていい加減停止してほしい
過去の質の悪い情報を、何度も繰り返しツイートすんな
0982デフォルトの名無しさん
垢版 |
2021/02/26(金) 04:55:54.66ID:hDnFyj4c
知らなかったくせにプライドだけはいっちょ前だな
謙虚さが無いやつは成長しない
0985デフォルトの名無しさん
垢版 |
2021/02/26(金) 13:35:11.54ID:XgSzjw4v
>>982
謙虚さがないから人の言っていることがわからないのか
単に馬鹿だから色々わからなく人との接し方もわからないのか
どうも後者っぽいな。リアル社会でも人と接するのが難しいレベルな
0986デフォルトの名無しさん
垢版 |
2021/02/26(金) 18:46:13.32ID:7vDu415h
>>985
いや、俺が教えろっつったら教えろよ
学生時代てめえみたいな陰キャを脅してノート写して貰ってた感じで俺は質問したんだぞ
あ?
0989デフォルトの名無しさん
垢版 |
2021/02/26(金) 21:39:37.76ID:IMLGfwsq
#!/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
0993デフォルトの名無しさん
垢版 |
2021/02/28(日) 22:15:05.12ID:BY9ZMr+Z
bash
変数sに文字列を代入したいのですが、文字列が長いので複数行に分けて書く方法を教えてください


s="a"
\ "b"
\ "c"

これはエラーになりますがこんな感じで複数行に分けて、sにはabcと1行分として代入されているようにしたいです
0995デフォルトの名無しさん
垢版 |
2021/02/28(日) 23:16:50.23ID:sNDsGIAp
3行じゃなくて1行っていみなら最終行以外の末尾にバックスラッシュで
s=$(cat <<EOF
a\
b\
c
EOF
)
0999デフォルトの名無しさん
垢版 |
2021/03/01(月) 00:48:24.22ID:p97sWF/c
$ l\
> s
ってしても、単に ls っていう
シンプルの極み、いつでもどこでも改行したければどうぞって感じ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 96日 4時間 48分 17秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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