!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
シェルスクリプトに関する総合スレッドです。
スレ立て時は以下の文を先頭行に加えて下さい。
後のつけ忘れ防止の為に複数行重ねて追加推奨
!extend:on:vvvvv:1000:512
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
シェルスクリプト総合 その29
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 3efb-m2E0)
2018/09/22(土) 11:53:21.38ID:BBiLRgnj0207デフォルトの名無しさん (ワッチョイ 1e98-kArq)
2018/10/07(日) 07:18:54.69ID:9DLOHMhB0 余談だが、
func() { printf '%s\n' "begin$@end";} という関数の時、
func 1 2 3 4 5 って書いたら
begin1
2
3
4
5end
func 3 って書いたら
begin3end
って表示されるんだよな。
理解はできるが、なんか不思議だ
func() { printf '%s\n' "begin$@end";} という関数の時、
func 1 2 3 4 5 って書いたら
begin1
2
3
4
5end
func 3 って書いたら
begin3end
って表示されるんだよな。
理解はできるが、なんか不思議だ
208デフォルトの名無しさん (ワッチョイ 969f-vBoO)
2018/10/08(月) 03:36:26.64ID:tKqgyITq0209デフォルトの名無しさん (ワッチョイ a798-kArq)
2018/10/08(月) 18:41:40.22ID:IMi/szTI0 func -a --foo file1 -b file2 -c --bar
みたいな、オプションとファイル名が交互に来てるときに
オプションを全部解析し終わってから
ファイルに対して処理を実行していくのってけっこう大変なんだな
forで回すのもwhileで回すのも一筋縄ではいかない
もちろんbashなんかの配列を使わないという前提
みたいな、オプションとファイル名が交互に来てるときに
オプションを全部解析し終わってから
ファイルに対して処理を実行していくのってけっこう大変なんだな
forで回すのもwhileで回すのも一筋縄ではいかない
もちろんbashなんかの配列を使わないという前提
210デフォルトの名無しさん (ワッチョイ a798-kArq)
2018/10/08(月) 18:48:20.63ID:IMi/szTI0 func -a --foo foo1 file1 -b file2 -c --bar
あ、例えば、foo1は--fooはパラメータ、のようなものが有る場合だった
-で始まる or 始まらないだけで見分けるならまだ簡単
あ、例えば、foo1は--fooはパラメータ、のようなものが有る場合だった
-で始まる or 始まらないだけで見分けるならまだ簡単
211デフォルトの名無しさん (ワッチョイ b064-selW)
2018/10/08(月) 18:50:15.77ID:NcWFD+EU0 そもそもそんな指定の仕方ありうる?
ありえない状況を想定してヤキモキするのは非生産的だと思うんだけど……。
ありえない状況を想定してヤキモキするのは非生産的だと思うんだけど……。
212デフォルトの名無しさん (ワッチョイ a798-kArq)
2018/10/08(月) 19:10:00.18ID:IMi/szTI0213デフォルトの名無しさん (ワッチョイ b064-selW)
2018/10/08(月) 20:52:36.04ID:NcWFD+EU0214デフォルトの名無しさん (ワッチョイ a798-kArq)
2018/10/08(月) 21:02:29.11ID:IMi/szTI0 >>213
そういうこと
そういうこと
215デフォルトの名無しさん (ワッチョイ 969f-XQ2D)
2018/10/08(月) 23:31:18.49ID:tKqgyITq0 GNUのgetoptのロングのやつ使えればなんとかなるんじゃないか?
216デフォルトの名無しさん (ワッチョイ b064-selW)
2018/10/09(火) 02:27:08.37ID:cJ7fFqob0 これでいいな。
$ getopt --options 'a,b,c' --longoptions 'foo:,bar' -- -a --foo foo1 file1 -b file2 -c --bar
$ getopt --options 'a,b,c' --longoptions 'foo:,bar' -- -a --foo foo1 file1 -b file2 -c --bar
217デフォルトの名無しさん (アウアウカー Sa0a-v2gR)
2018/10/09(火) 02:29:18.52ID:i1ZCVGtYa 195から207まで丸ごと吹っ飛んでんだがどんだけレスバトルしてたんだ
見る気もないが
見る気もないが
218デフォルトの名無しさん (ワッチョイ a798-kArq)
2018/10/09(火) 07:22:02.82ID:UgeI4/Dm0 >>216
Macでは動きませんでした
Macでは動きませんでした
219デフォルトの名無しさん (ワッチョイ b064-selW)
2018/10/09(火) 07:51:19.69ID:cJ7fFqob0220デフォルトの名無しさん (ワッチョイ a798-kArq)
2018/10/09(火) 07:55:02.13ID:UgeI4/Dm0 >>219
だからMacのgetoptはGNUのgetpotではないから動かないって言ったんだけど?
だからMacのgetoptはGNUのgetpotではないから動かないって言ったんだけど?
221デフォルトの名無しさん (ワッチョイ a798-kArq)
2018/10/09(火) 07:57:18.12ID:UgeI4/Dm0 GNUのgetoptなら動く。そうでないなら動かないと言われても、
どの環境がGNUのgetoptかなんてわからないでしょう?
GNUのgetoptがほとんどの環境で使われているなら問題ないが
使われてな環境は多いかもしれない。そしてそれがMacという形で
現実になったということを書いたんだけど
どの環境がGNUのgetoptかなんてわからないでしょう?
GNUのgetoptがほとんどの環境で使われているなら問題ないが
使われてな環境は多いかもしれない。そしてそれがMacという形で
現実になったということを書いたんだけど
222デフォルトの名無しさん (ワッチョイ b064-selW)
2018/10/09(火) 07:58:09.40ID:cJ7fFqob0223デフォルトの名無しさん (ワッチョイ a798-kArq)
2018/10/09(火) 08:18:38.20ID:UgeI4/Dm0 やはりgetoptは可搬性は皆無か
日本語でgetoptでぐぐるとこれが上の方に出てくるけど
相変わらずの、qiitaクオリティってことでいいのかな?
https://qiita.com/b4b4r07/items/dcd6be0bb9c9185475bb
> 一般に 使用される getopt のテンプレートは以下です。
>
> getopt.sh
> set -- 'getopt ad: "$@"'
初っ端からおかしいし。バッククォート書いたつもりが、シングルクォートに化けた?
しかもset --じゃだめだろうと思ってたら、後半では正しい書き方してたが
> OPT=`getopt -o ab:c --long long-a, long-b:,long-c -- "$@"`
> 略
> eval set -- "$OPT"
で、次
> getopt には重大な落とし穴があります。それは、スペースや特殊文字が
> 引数に含まれていた場合、正しく処理できないということです。
特殊文字まではやってないが、スペース入れても普通に動いたんだが?
デフォルトでクォートされてるよな?
man getoptすると「伝統的なgetoptの実装では 〜略〜 空白 〜略〜 使うことができない 〜略〜
この実装ではクォートした出力を生成する」ってことは(この記事で言及できないほど)最近対応したのか?
それはそれとしてクォート方法の指定ができて、shとbash(違いあるの?)があるからシェルごとに
使い分けなきゃいけない気がしていやなんだが
ま、この記事のBSD系ではロングオプション非対応っていうのはgetoptを候補からすばやく外すのには役に立ったなw
GNU版ならもう少し色々できることがわかったが、やはり大変だな。今回は書かなかったがサブコマンド対応とか。
あとgetopt使っても自前処理でもコードの量に大差ないってのはなんなだろう?と前から思っている
日本語でgetoptでぐぐるとこれが上の方に出てくるけど
相変わらずの、qiitaクオリティってことでいいのかな?
https://qiita.com/b4b4r07/items/dcd6be0bb9c9185475bb
> 一般に 使用される getopt のテンプレートは以下です。
>
> getopt.sh
> set -- 'getopt ad: "$@"'
初っ端からおかしいし。バッククォート書いたつもりが、シングルクォートに化けた?
しかもset --じゃだめだろうと思ってたら、後半では正しい書き方してたが
> OPT=`getopt -o ab:c --long long-a, long-b:,long-c -- "$@"`
> 略
> eval set -- "$OPT"
で、次
> getopt には重大な落とし穴があります。それは、スペースや特殊文字が
> 引数に含まれていた場合、正しく処理できないということです。
特殊文字まではやってないが、スペース入れても普通に動いたんだが?
デフォルトでクォートされてるよな?
man getoptすると「伝統的なgetoptの実装では 〜略〜 空白 〜略〜 使うことができない 〜略〜
この実装ではクォートした出力を生成する」ってことは(この記事で言及できないほど)最近対応したのか?
それはそれとしてクォート方法の指定ができて、shとbash(違いあるの?)があるからシェルごとに
使い分けなきゃいけない気がしていやなんだが
ま、この記事のBSD系ではロングオプション非対応っていうのはgetoptを候補からすばやく外すのには役に立ったなw
GNU版ならもう少し色々できることがわかったが、やはり大変だな。今回は書かなかったがサブコマンド対応とか。
あとgetopt使っても自前処理でもコードの量に大差ないってのはなんなだろう?と前から思っている
224デフォルトの名無しさん (ワッチョイ b064-selW)
2018/10/09(火) 13:51:30.72ID:cJ7fFqob0 parsargコマンドみたいなのを再発明したほうが早いかもね
GNU getoptと同じ(もしくはもうちょっと拡張)挙動でかつ可搬なのを。
GNU getoptと同じ(もしくはもうちょっと拡張)挙動でかつ可搬なのを。
225デフォルトの名無しさん (スッップ Sdff-ehAa)
2018/10/15(月) 14:55:49.61ID:Q15q2Q7Cd 質問しようと思ったけど初心者の俺にはレベル高い話ばかりで恥ずかしいぜ、、
226デフォルトの名無しさん (ワッチョイ 7f98-9/x8)
2018/10/15(月) 15:15:36.15ID:9UZy+Ppr0 どうぞどうぞ
227デフォルトの名無しさん (スッップ Sdff-ehAa)
2018/10/15(月) 15:50:29.54ID:Q15q2Q7Cd ありがとう
やりたいことは、環境を判定して対象の環境にある複数サーバーに対して一括でコマンド発行したい、です
条件
・A環境とB環境があり、引数でそれぞれ指定し(test.sh A のようにしたい)、シェルスクリプト側でどちらが入力されたか判定する
・サーバーにssh接続するためのIPアドレス等は外部ファイルに記載されているため、環境判定後にファイルを読み込んでsshアクセスする必要がある
・サーバーは両環境それぞれ25台ずつあるが、5台ずつコマンドを発行し、waitしてからまた5台と、塊毎にやりたい
質問1
外部ファイルの指定方法が分からないです
ifで環境を判定してthenの後にファイルを指定すれば良いのか?
質問2
5台ずつ、を実現するためにはwhileで良いのか?
そもそも、sshをまとめてやって後からそれらにコマンド発行ってできるのか
初歩的すぎて恥ずかしい限りですがお願いします
やりたいことは、環境を判定して対象の環境にある複数サーバーに対して一括でコマンド発行したい、です
条件
・A環境とB環境があり、引数でそれぞれ指定し(test.sh A のようにしたい)、シェルスクリプト側でどちらが入力されたか判定する
・サーバーにssh接続するためのIPアドレス等は外部ファイルに記載されているため、環境判定後にファイルを読み込んでsshアクセスする必要がある
・サーバーは両環境それぞれ25台ずつあるが、5台ずつコマンドを発行し、waitしてからまた5台と、塊毎にやりたい
質問1
外部ファイルの指定方法が分からないです
ifで環境を判定してthenの後にファイルを指定すれば良いのか?
質問2
5台ずつ、を実現するためにはwhileで良いのか?
そもそも、sshをまとめてやって後からそれらにコマンド発行ってできるのか
初歩的すぎて恥ずかしい限りですがお願いします
228デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
2018/10/15(月) 15:55:57.71ID:oz1FOCTra どうぞどうぞ
229デフォルトの名無しさん (スッップ Sdff-ehAa)
2018/10/15(月) 16:39:55.24ID:Q15q2Q7Cd230デフォルトの名無しさん (ワッチョイ 7f98-9/x8)
2018/10/15(月) 16:43:11.45ID:9UZy+Ppr0 どういたしまして
231デフォルトの名無しさん (ブーイモ MM0b-LEUL)
2018/10/15(月) 18:26:03.30ID:A4+xGAqjM 僕にも感謝して
232デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
2018/10/15(月) 18:56:32.85ID:3C5NcaRXa >>229
どうやることにしたの?
どうやることにしたの?
233デフォルトの名無しさん (ワッチョイ e776-jM1k)
2018/10/15(月) 20:03:34.75ID:dTacK6h30 ssh ... [command] ができるのがわかったとかじゃないのかな
234デフォルトの名無しさん (ワッチョイ 27eb-ehAa)
2018/10/15(月) 21:27:00.70ID:0gVRdy5i0 >>232
233の言うとおりです
opensshのマニュアル呼んだら、ファイル指定もコマンド発行方法も書いてあったので、それでやることに
あとはifとの組み合わせで頑張ります
まぁつまずいてるんだけど
233の言うとおりです
opensshのマニュアル呼んだら、ファイル指定もコマンド発行方法も書いてあったので、それでやることに
あとはifとの組み合わせで頑張ります
まぁつまずいてるんだけど
235デフォルトの名無しさん (ワッチョイ 07e0-SmB1)
2018/10/15(月) 21:32:13.05ID:E6pr56BO0 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。
236デフォルトの名無しさん (ワッチョイ 7b98-usPd)
2018/10/18(木) 12:14:09.96ID:/ofNkRJS0 ksh、関数のオーバーライド、くせっていうかバグあるわ
(foo() { echo 1; }; foo; (foo() { echo 2; }; foo;); foo)
何度実行しても1 2 1 と表示される(想定通り)
foo() { echo 1; }; foo; (foo() { echo 2; }; foo;); foo
最初の1回は1 2 1 と表示されるが、
2回目以降は1 1 1 としか表示されない(2でオーバーライドできなくなる)
(foo() { echo 1; }; foo; (foo() { echo 2; }; foo;); foo)
何度実行しても1 2 1 と表示される(想定通り)
foo() { echo 1; }; foo; (foo() { echo 2; }; foo;); foo
最初の1回は1 2 1 と表示されるが、
2回目以降は1 1 1 としか表示されない(2でオーバーライドできなくなる)
237デフォルトの名無しさん (ワッチョイ 7b98-usPd)
2018/10/18(木) 12:32:51.57ID:/ofNkRJS0 もう一つ。kshで関数の定義の場所でオーバーライドできない
場合があるんだが原因がよくわからない。
多分これ関連なんだろうけど
https://github.com/modernish/modernish/blob/master/libexec/modernish/cap/BUG_FNSUBSH.t
これはメインシェルの定義がある場合、サブシェルの中での定義が無視されるということだから、
サブシェルの中で定義していれば、その中のサブシェルではオーバーライドできると解釈できる
たしかに>>236はそのとおりの動きはしてる
もう一つの問題も同じなんだろうか、定義の順番を変えればうまくいくんだが
サブシェルに関しては定義の順番を変えても同じだと思うんだけどなぁ。
.コマンドを使ってるのが関係してるのかなんだこりゃって感じだ
場合があるんだが原因がよくわからない。
多分これ関連なんだろうけど
https://github.com/modernish/modernish/blob/master/libexec/modernish/cap/BUG_FNSUBSH.t
これはメインシェルの定義がある場合、サブシェルの中での定義が無視されるということだから、
サブシェルの中で定義していれば、その中のサブシェルではオーバーライドできると解釈できる
たしかに>>236はそのとおりの動きはしてる
もう一つの問題も同じなんだろうか、定義の順番を変えればうまくいくんだが
サブシェルに関しては定義の順番を変えても同じだと思うんだけどなぁ。
.コマンドを使ってるのが関係してるのかなんだこりゃって感じだ
238デフォルトの名無しさん (ワッチョイ 7b98-usPd)
2018/10/18(木) 12:40:28.86ID:/ofNkRJS0 もう一つの問題は、ちょっとコードが入り組んでて調べるのが面倒くさい。
なんでこれで解決したのかわかってない状況だが、今のところ動いているので
まあなにかわかったら書くよw
なんでこれで解決したのかわかってない状況だが、今のところ動いているので
まあなにかわかったら書くよw
239デフォルトの名無しさん (スッップ Sd8a-YVHm)
2018/10/18(木) 16:05:20.75ID:q7k/ngFed 初心者です、while文の質問です
このようなスクリプトがあったとします
a=0
while [ $a -le 50 ]
do
a=`expr $a +1`
echo "${a}個目
done
とやると、50個目まで表示されると思いますが、この数値が5の倍数の時だけ、echoで表示させたあとsleepを入れるようにするには、contiuneを使えばよい?
それともifでやる?
よくわからず
このようなスクリプトがあったとします
a=0
while [ $a -le 50 ]
do
a=`expr $a +1`
echo "${a}個目
done
とやると、50個目まで表示されると思いますが、この数値が5の倍数の時だけ、echoで表示させたあとsleepを入れるようにするには、contiuneを使えばよい?
それともifでやる?
よくわからず
240デフォルトの名無しさん (アウアウカー Safb-nHS7)
2018/10/18(木) 16:38:15.26ID:hfM3a7YWa >>239
continue はループ内のその後の処理を飛ばすやつだからできないと思うが。
普通に if 使ってやるしかないのでは?
if [ `expr $a % 5` -eq 0 ] ; then sleep 1 ; fi
とか、done の直前に入れる。
continue はループ内のその後の処理を飛ばすやつだからできないと思うが。
普通に if 使ってやるしかないのでは?
if [ `expr $a % 5` -eq 0 ] ; then sleep 1 ; fi
とか、done の直前に入れる。
241デフォルトの名無しさん (ワッチョイ 7b98-usPd)
2018/10/18(木) 17:31:05.73ID:/ofNkRJS0242デフォルトの名無しさん (アウアウカー Safb-nHS7)
2018/10/18(木) 17:40:57.72ID:hfM3a7YWa あ。そうか。なるほど。
243デフォルトの名無しさん (ワッチョイ 7b98-usPd)
2018/10/18(木) 17:41:55.70ID:/ofNkRJS0 ついでだから書いておくと、
a=`expr $a +1` でも大差ないだろ?と思った人
WSLの酷さがわかるぞ
たった50回のループ、sleepを行わない状態で
a=$((a+1)) だと 約0.025秒なのに、
a=`expr $a +1` だと 約0.5秒にもなるのだ
10000回のループだと
a=$((a+1)) だと 約0.1秒のところ、
a=`expr $a +1` だと 約90秒
早くWSLのfokの遅さが解決すると良いな
a=`expr $a +1` でも大差ないだろ?と思った人
WSLの酷さがわかるぞ
たった50回のループ、sleepを行わない状態で
a=$((a+1)) だと 約0.025秒なのに、
a=`expr $a +1` だと 約0.5秒にもなるのだ
10000回のループだと
a=$((a+1)) だと 約0.1秒のところ、
a=`expr $a +1` だと 約90秒
早くWSLのfokの遅さが解決すると良いな
244デフォルトの名無しさん (ワッチョイ 7b98-usPd)
2018/10/18(木) 17:43:58.54ID:/ofNkRJS0 × [ $(($a % 5)) = 0 ] && sleep 1
○ [ $((a % 5)) = 0 ] && sleep 1
書き込む前に気づいて直したと思ったんだがコピペミスったか
上でも動かないわけではない。無駄なだけ
○ [ $((a % 5)) = 0 ] && sleep 1
書き込む前に気づいて直したと思ったんだがコピペミスったか
上でも動かないわけではない。無駄なだけ
245デフォルトの名無しさん (ワッチョイ 6a7c-fIkj)
2018/10/18(木) 17:56:39.61ID:uRBurQVb0 > [ $((a % 5)) = 0 ]
新旧混ぜんなw
arithmetic使うなら、そのままevaluation記法にしてしまえばいい。
((...))
あと、旧testでの数値比較は-eqを使え。
新旧混ぜんなw
arithmetic使うなら、そのままevaluation記法にしてしまえばいい。
((...))
あと、旧testでの数値比較は-eqを使え。
246デフォルトの名無しさん (ワッチョイ 7b98-usPd)
2018/10/18(木) 18:24:07.81ID:/ofNkRJS0247デフォルトの名無しさん (ワッチョイ 6a7c-fIkj)
2018/10/18(木) 18:35:46.85ID:uRBurQVb0 ((a % 5 == 0))&& ...
なんで一々ここまで言わんとわからんような奴が、他人の指摘しているんだろうかね。。。
-eqでの数値比較とか基本中の基本だろうに。
なんで一々ここまで言わんとわからんような奴が、他人の指摘しているんだろうかね。。。
-eqでの数値比較とか基本中の基本だろうに。
248デフォルトの名無しさん (ワッチョイ 7b98-usPd)
2018/10/18(木) 18:50:03.03ID:/ofNkRJS0 >>247
$ dash -c 'a=0; ((a % 5 == 0)) && echo ok'
dash: 1: a: not found
$ dash -c 'a=0; (($a % 5 == 0)) && echo ok'
dash: 1: 0: Permission denied
なぜかって?
その書き方はPOSIX準拠じゃないもの
https://github.com/koalaman/shellcheck/wiki/SC2039#standalone-
$ dash -c 'a=0; ((a % 5 == 0)) && echo ok'
dash: 1: a: not found
$ dash -c 'a=0; (($a % 5 == 0)) && echo ok'
dash: 1: 0: Permission denied
なぜかって?
その書き方はPOSIX準拠じゃないもの
https://github.com/koalaman/shellcheck/wiki/SC2039#standalone-
249デフォルトの名無しさん (ワッチョイ 7b98-usPd)
2018/10/18(木) 18:56:56.93ID:/ofNkRJS0 動かないコード出されて、偉そうにされても
やれやれって言うしか無いわなw
やれやれって言うしか無いわなw
250デフォルトの名無しさん (アウアウカー Safb-nHS7)
2018/10/18(木) 19:33:42.29ID:9i8IzX+1a (( )) ではなく [[ ]] では?
251デフォルトの名無しさん (ワッチョイ 7b98-usPd)
2018/10/18(木) 19:37:12.04ID:/ofNkRJS0 [[ ]] もPOSIX準拠ではない
252デフォルトの名無しさん (アウアウカー Safb-6CEe)
2018/10/18(木) 22:39:25.80ID:3W2GDYvfa またぽっじくすか
253デフォルトの名無しさん (ワッチョイ dbeb-YVHm)
2018/10/19(金) 00:21:19.12ID:0zKHBU8T0254デフォルトの名無しさん (ワッチョイ 26e7-iIDB)
2018/10/19(金) 01:23:10.99ID:JmLVta5V0 cat file.txt | ( head; tail) は最高
255デフォルトの名無しさん (ワッチョイ f398-usPd)
2018/10/20(土) 02:22:05.90ID:V0y1IBp60 >>224
> parsargコマンドみたいなのを再発明したほうが早いかもね
違うもの調べてて、こういうのを見つけた。
見つけたってだけでどんなものかは調べていない
http://zentoo.hatenablog.com/entry/20110708/1310124831
> ちょっとした理由でgit-flow (https://github.com/nvie/gitflow) のソースを
> ちょっとちょっと眺めていたんだけど、内部でコマンドライン引数を
> パースするためにshflagsというツールが使われていたのでメモ。
> parsargコマンドみたいなのを再発明したほうが早いかもね
違うもの調べてて、こういうのを見つけた。
見つけたってだけでどんなものかは調べていない
http://zentoo.hatenablog.com/entry/20110708/1310124831
> ちょっとした理由でgit-flow (https://github.com/nvie/gitflow) のソースを
> ちょっとちょっと眺めていたんだけど、内部でコマンドライン引数を
> パースするためにshflagsというツールが使われていたのでメモ。
256デフォルトの名無しさん (ワッチョイ db8a-2XJB)
2018/10/20(土) 06:26:18.72ID:EzXK/x1W0 >>254
おまえらなんでそんなに猫が好きなん?
おまえらなんでそんなに猫が好きなん?
257デフォルトの名無しさん (ワッチョイ 3bfb-6CEe)
2018/10/20(土) 12:30:19.19ID:o8LOHz9N0 それを疑問に思う人間に説明するのは困難だ
258デフォルトの名無しさん (オッペケ Srb3-iHQf)
2018/10/20(土) 12:37:11.93ID:MzLaXRRvr 猫好きてそんなに言語化しにくい複雑怪奇な感情持っとるんか?
259デフォルトの名無しさん (ワッチョイ 3bfb-6CEe)
2018/10/20(土) 12:43:08.81ID:o8LOHz9N0 例えば女をみて欲情しない人間に、なぜ欲情するのかを説明するのは難しいだろう
言葉を並べるだけなら本能だとか体の特徴なんかを言えるが、共感はされまい
つまりそれを疑問に感じる人間には、その時点ですでに納得させる言葉がないのだ
言葉を並べるだけなら本能だとか体の特徴なんかを言えるが、共感はされまい
つまりそれを疑問に感じる人間には、その時点ですでに納得させる言葉がないのだ
260デフォルトの名無しさん (オッペケ Srb3-iHQf)
2018/10/20(土) 12:48:37.62ID:MzLaXRRvr でもそもそも説明するのが困難なのやろ?
おまえが言ったんやで
おまえが言ったんやで
261デフォルトの名無しさん (ワッチョイ f398-usPd)
2018/10/20(土) 12:55:36.75ID:V0y1IBp60 おい、スレと無関係な話をして荒らすな
262デフォルトの名無しさん (ワッチョイ 3bfb-6CEe)
2018/10/20(土) 12:56:11.89ID:o8LOHz9N0 なぜ説明するのが困難かを説明したつもりだったんだが
263デフォルトの名無しさん (ワッチョイ f398-usPd)
2018/10/20(土) 13:01:22.08ID:V0y1IBp60264デフォルトの名無しさん (ワッチョイ 2aa2-k6PT)
2018/10/20(土) 14:52:07.13ID:ZWcyeiuM0 お前がつまんねーんだよ
265デフォルトの名無しさん (アウアウカー Safb-6CEe)
2018/10/20(土) 14:54:50.53ID:2nu5r9gua なんかレス番飛んだけどなんだこれ
266デフォルトの名無しさん (ワッチョイ db8a-2XJB)
2018/10/20(土) 16:25:12.28ID:EzXK/x1W0267デフォルトの名無しさん (ワッチョイ 2aa2-k6PT)
2018/10/20(土) 17:00:11.18ID:ZWcyeiuM0 なんか遠いレスの番号という意味じゃないの。てか、なんで噛み付いているんだか
268デフォルトの名無しさん (アウアウカー Safb-6CEe)
2018/10/20(土) 17:06:13.46ID:T0X8nuYVa ワッチョイ変わったのになんでNG効いてんだ?と思ったら課題マンだったのか
269デフォルトの名無しさん (ワッチョイ ea98-usPd)
2018/10/21(日) 03:41:54.16ID:dQhyPQp/0 あるパスがディレクトリで書き込み可能かは、[ -d "$path" ] とか [ -w "$path" ] で調べられるし、
所有者が自分自身であるかは-Gや-Oで調べられますが、
自分以外が読み書き不可能であることをチェックするにはどうしたら良いですかね?
所有者が自分自身であるかは-Gや-Oで調べられますが、
自分以外が読み書き不可能であることをチェックするにはどうしたら良いですかね?
270デフォルトの名無しさん (ワッチョイ db8a-2XJB)
2018/10/21(日) 05:19:47.73ID:C+Apg5Hi0 ls
271デフォルトの名無しさん (ワッチョイ ea98-usPd)
2018/10/21(日) 05:42:25.02ID:dQhyPQp/0 やっぱlsしかないですかね。
このフォーマットって仕様化されてるんですよね
このフォーマットって仕様化されてるんですよね
272デフォルトの名無しさん (ワッチョイ aebe-fIkj)
2018/10/21(日) 06:29:17.52ID:9NX69mCX0 >>271
pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.html#tag_20_73_10
pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.html#tag_20_73_10
273デフォルトの名無しさん (ワッチョイ ea98-usPd)
2018/10/21(日) 06:34:56.07ID:dQhyPQp/0 ありがとう。だがオプション多すぎて読むのだりぃw
なんでだろ?どうもlsって解析する気にならないんだよな
人間向けのフォーマットでコンピュータが解釈するのに向いてない感じがしている
どこまでPOSIXで仕様化されてるのか、どこからが拡張なのか、オプション多すぎて(略
関係ないけど、ふと本棚を見たら
「lsを読まずにプログラマを名乗るな!」という本があったw
そういや買ったっけ(未読)
なんでだろ?どうもlsって解析する気にならないんだよな
人間向けのフォーマットでコンピュータが解釈するのに向いてない感じがしている
どこまでPOSIXで仕様化されてるのか、どこからが拡張なのか、オプション多すぎて(略
関係ないけど、ふと本棚を見たら
「lsを読まずにプログラマを名乗るな!」という本があったw
そういや買ったっけ(未読)
274デフォルトの名無しさん (ワッチョイ 2aa2-k6PT)
2018/10/21(日) 06:42:08.88ID:xQoMnSHc0 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.html
STDOUTに記述があるんだからそうじゃね
STDOUTに記述があるんだからそうじゃね
275デフォルトの名無しさん (ワッチョイ 2aa2-k6PT)
2018/10/21(日) 06:42:50.73ID:xQoMnSHc0 あら被りすぎた。すまん
276デフォルトの名無しさん (ワッチョイ 2aa2-k6PT)
2018/10/21(日) 06:45:46.73ID:xQoMnSHc0 >>273
>>272はPOSIXの仕様。>>269,270,271の目的には
If the -l option is specified, the following information shall be written for files other than character special and block special files:
と
If the -l option is specified, the following information shall be written for character special and block special files:
で書いてあるフォーマットだけだけどね
>>272はPOSIXの仕様。>>269,270,271の目的には
If the -l option is specified, the following information shall be written for files other than character special and block special files:
と
If the -l option is specified, the following information shall be written for character special and block special files:
で書いてあるフォーマットだけだけどね
277デフォルトの名無しさん (ワッチョイ ea98-usPd)
2018/10/21(日) 07:33:05.64ID:dQhyPQp/0 そういや、macだとlsで
drwxr-xr-x+ や
drwxr-xr-x@ みたいに
後ろになにかくっついていることがあるな
> Implementations may add other characters to this list to represent other implementation-defined file types.
くっつけても良いってことなのか?
drwxr-xr-x+ や
drwxr-xr-x@ みたいに
後ろになにかくっついていることがあるな
> Implementations may add other characters to this list to represent other implementation-defined file types.
くっつけても良いってことなのか?
278デフォルトの名無しさん (ワッチョイ db8a-2XJB)
2018/10/21(日) 11:22:28.24ID:C+Apg5Hi0 これだからマカーは馬鹿だと言われるんだなあ...
279デフォルトの名無しさん (アウアウウー Sa9f-L0SM)
2018/10/21(日) 20:00:09.31ID:0dWokXAIa stat コマンドの出力解析した方が楽ではないか?
または find コマンドの -perm 利用してチェックして -exec でやらせたいことをやらせる。
または find コマンドの -perm 利用してチェックして -exec でやらせたいことをやらせる。
280デフォルトの名無しさん (ワッチョイ ea98-usPd)
2018/10/21(日) 20:21:13.14ID:dQhyPQp/0281デフォルトの名無しさん (ワッチョイ f364-qPjg)
2018/10/21(日) 22:04:44.47ID:8BH3p2hm0 標準入力の代わりにfileの内容を入力するのに、リダイレクトで
$ <file somecmd
とやる方式ってPOSIXで既定されてるっけ。
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_01
このへんに書いてそうなんだけど、それっぽい記述がない?
$ <file somecmd
とやる方式ってPOSIXで既定されてるっけ。
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_01
このへんに書いてそうなんだけど、それっぽい記述がない?
282デフォルトの名無しさん (ワッチョイ 269f-nBLa)
2018/10/22(月) 02:54:50.03ID:HyPH6OEy0 >>280
じゃ、find で。
ファイルのパーミッションに 066 を and した時に 0 になるやつでいいのなら
find $dir -prune ! -perm -40 ! -perm -20 ! -perm -4 ! -perm -2 -exec やらせたいこと \;
のようにすればいいのではないかな。
http://pubs.opengroup.org/onlinepubs/9699919799/ で find コマンド見てみたら -perm はあるようなので。
もし GNU の find コマンド使えるようなら -perm /mode が使えて、これは何れかのビットが立っていれば
真になるので ! -perm /66 の一つで出来ると思う。
じゃ、find で。
ファイルのパーミッションに 066 を and した時に 0 になるやつでいいのなら
find $dir -prune ! -perm -40 ! -perm -20 ! -perm -4 ! -perm -2 -exec やらせたいこと \;
のようにすればいいのではないかな。
http://pubs.opengroup.org/onlinepubs/9699919799/ で find コマンド見てみたら -perm はあるようなので。
もし GNU の find コマンド使えるようなら -perm /mode が使えて、これは何れかのビットが立っていれば
真になるので ! -perm /66 の一つで出来ると思う。
283デフォルトの名無しさん (ワッチョイ db8a-2XJB)
2018/10/22(月) 03:01:30.80ID:1Kkbm3du0 GNUのfind使っていいという条件なら、GNUのlsやstatでいいじゃんw
284名無しさん@そうだ選挙に行こう! Go to vote! (アウアウウー Sa9f-L0SM)
2018/10/22(月) 10:18:21.67ID:8WYgXfgna その辺はご自由に。POSIX縛りがあってもこの場合にfindも使えるってだけの話なので。ls使いたいならそうすればいい。
285デフォルトの名無しさん (ワッチョイ f364-qPjg)
2018/10/22(月) 14:51:33.47ID:JUwIDQm90 >>281
これ分かる方います?
これ分かる方います?
286デフォルトの名無しさん (JP 0H1b-v9b0)
2018/10/22(月) 16:55:54.61ID:9s+yFzz3H >>281
2.1の5で、リダイレクトの処理をしてパラメーターリストから
除去するって書いてあるのと、
6でコマンド名を第0パラメーターとして渡すって書いてるってことは、
先頭もパラメーターリストの一部と解釈できるから、
暗に、先頭にリダイレクトがあってもいいってことを表してるんでは?
2.1の5で、リダイレクトの処理をしてパラメーターリストから
除去するって書いてあるのと、
6でコマンド名を第0パラメーターとして渡すって書いてるってことは、
先頭もパラメーターリストの一部と解釈できるから、
暗に、先頭にリダイレクトがあってもいいってことを表してるんでは?
287デフォルトの名無しさん (ガックシ 06e6-fIkj)
2018/10/22(月) 19:08:52.43ID:WU2zxBnF6288デフォルトの名無しさん (ガックシ 06e6-fIkj)
2018/10/22(月) 19:09:38.93ID:WU2zxBnF6 あ、ワッチョイもIDも違うけど>>285です。
289デフォルトの名無しさん (ワッチョイ ea98-Pr2h)
2018/10/22(月) 21:35:03.82ID:oF7wf0Ce0 >>118
それはオブジェクト指向の話じゃない
C++の話だ
そもそもテンプレートやジェネリックは、型を明確にすることでバグを少なくしたり
速度を速くするためのもので、オブジェクト指向における問題点を解決するための追加機能
テンプレートやジェネリックを使うことでオブジェクト指向が不要になるのではなく
オブジェクト指向と組み合わせて使うことで問題点が改善される
テンプレートはオブジェクト指向と組み合わせずに使えたと思うが、
テンプレートの殆ど(ジェネリックは全て)はオブジェクト指向なしに使うことはできない
それはオブジェクト指向の話じゃない
C++の話だ
そもそもテンプレートやジェネリックは、型を明確にすることでバグを少なくしたり
速度を速くするためのもので、オブジェクト指向における問題点を解決するための追加機能
テンプレートやジェネリックを使うことでオブジェクト指向が不要になるのではなく
オブジェクト指向と組み合わせて使うことで問題点が改善される
テンプレートはオブジェクト指向と組み合わせずに使えたと思うが、
テンプレートの殆ど(ジェネリックは全て)はオブジェクト指向なしに使うことはできない
290デフォルトの名無しさん (ワッチョイ ea98-usPd)
2018/10/22(月) 21:47:50.25ID:oF7wf0Ce0 あ、書き込まれてないと思ったら書き込む場所間違えてたのかw
291デフォルトの名無しさん (ワッチョイ ea98-usPd)
2018/10/22(月) 23:23:26.53ID:oF7wf0Ce0292デフォルトの名無しさん (アウアウウー Sa9f-L0SM)
2018/10/23(火) 13:27:19.16ID:QwHjyvjPa シェルというか tar コマンドの問題なんだけど、tar tvf でアーカイブに入っているファイルのタイムスタンプを秒単位まで出す方法ある?
Linux で GNU tar のmanページ見た感じではなさそうなんだけど、やはり自作するしかないなかな。
Linux で GNU tar のmanページ見た感じではなさそうなんだけど、やはり自作するしかないなかな。
293デフォルトの名無しさん (ワッチョイ 2a23-8h48)
2018/10/23(火) 14:12:45.60ID:mYtscksw0 >>292
tar --full-time ...
tar --full-time ...
294デフォルトの名無しさん (アウアウウー Sa9f-L0SM)
2018/10/23(火) 14:38:56.39ID:QwHjyvjPa >>293
おお!ありがとう。新しい GNU tar にあるね。
最初CentOS6で試しててわからなかった。これは GNU tar 1.23 だ。
CentOS7は GNU tar 1.26 になっててこちらでは出来るしmanページにも書いてあった。
おお!ありがとう。新しい GNU tar にあるね。
最初CentOS6で試しててわからなかった。これは GNU tar 1.23 だ。
CentOS7は GNU tar 1.26 になっててこちらでは出来るしmanページにも書いてあった。
295デフォルトの名無しさん (ワッチョイ f364-qPjg)
2018/10/23(火) 15:22:22.26ID:cKF5Z2eR0 CentOS 6はそろそろサポート切れるんじゃないかしら
余計なお世話だが移行したほうがいいんでは
余計なお世話だが移行したほうがいいんでは
296デフォルトの名無しさん (アウアウウー Sa9f-L0SM)
2018/10/23(火) 15:35:42.08ID:QwHjyvjPa >>295
するする。仕事でRHEL6のサーバ使っててそれの一部をテストする時に使ってただけなので。
するする。仕事でRHEL6のサーバ使っててそれの一部をテストする時に使ってただけなので。
297デフォルトの名無しさん (ワッチョイ 7b32-JHIh)
2018/10/25(木) 13:45:54.07ID:7aRL1OkY0 すごい低レベルな質問で申し訳ないんだけど、
win用のGit-bashで.shファイルダブルクリックしたときに
DOS窓出さないで実行するのってどうすればいい?
win用のGit-bashで.shファイルダブルクリックしたときに
DOS窓出さないで実行するのってどうすればいい?
298デフォルトの名無しさん (アウアウウー Sa5d-hDoO)
2018/10/25(木) 14:43:08.46ID:hw/Q19JUa >>297
それもはやシェルかどうか関係なくてWindows固有の問題だと思うが、エクスプローラでそのファイル右クリックしてプロパティ出したらそんな感じの設定できるようになってない?
最小化した状態で実行するとか、そんなやつ。
それもはやシェルかどうか関係なくてWindows固有の問題だと思うが、エクスプローラでそのファイル右クリックしてプロパティ出したらそんな感じの設定できるようになってない?
最小化した状態で実行するとか、そんなやつ。
299デフォルトの名無しさん (アウアウウー Sa5d-hDoO)
2018/10/25(木) 14:51:54.06ID:hw/Q19JUa こうだ。
まずショートカット作り、そのショートカットのプロパティ出すと実行時の大きさを指定できる所があって、そこを最小化にすると実行時にタスクバーにアイコン出ているだけになる。
まずショートカット作り、そのショートカットのプロパティ出すと実行時の大きさを指定できる所があって、そこを最小化にすると実行時にタスクバーにアイコン出ているだけになる。
300デフォルトの名無しさん (ワッチョイ 7b32-JHIh)
2018/10/25(木) 16:15:39.89ID:7aRL1OkY0301デフォルトの名無しさん (ワッチョイ 9764-Ed1r)
2018/10/26(金) 22:15:40.17ID:ScQN6FWl0 ファイルや標準出力の行数がある数値より大きいことをできるだけ高速に確かめるにはどうすればいいだろう
最も単純で最もUNIXっぽいのは
$ test $(<file.txt wc -l) -gt $num
としてその真偽を見ることだけど
$ test $( (yes | head -n 3000000000000000000) | wc -l) -lt 300
こういうのを実行して貰えれば分かると思うがかなり時間が掛かる
俺の使ってる計算機はそこそこ良い性能(Intel Xeon x2/32GiB RAMなのだが)
それでも実行に1分強掛かった。
しかしこれは無駄だ。なぜなら結局比較する対象は300なのだから、「300行以上ある」ことが分かればいい。
なにか案ありませんかね。
思ったのはsed -n -e '300p'とかでその失敗判定を見るとかだが,これはsedコマンドの失敗の要因が他にもあるので
ちょっと不安定かなと。
最も単純で最もUNIXっぽいのは
$ test $(<file.txt wc -l) -gt $num
としてその真偽を見ることだけど
$ test $( (yes | head -n 3000000000000000000) | wc -l) -lt 300
こういうのを実行して貰えれば分かると思うがかなり時間が掛かる
俺の使ってる計算機はそこそこ良い性能(Intel Xeon x2/32GiB RAMなのだが)
それでも実行に1分強掛かった。
しかしこれは無駄だ。なぜなら結局比較する対象は300なのだから、「300行以上ある」ことが分かればいい。
なにか案ありませんかね。
思ったのはsed -n -e '300p'とかでその失敗判定を見るとかだが,これはsedコマンドの失敗の要因が他にもあるので
ちょっと不安定かなと。
302デフォルトの名無しさん (ワッチョイ 1d80-SUE8)
2018/10/26(金) 23:12:31.32ID:7cGNdWT70 cで指定行読むコマンドを作ればいい
面倒なこといちいち考える必要がそもそもない
面倒なこといちいち考える必要がそもそもない
303デフォルトの名無しさん (ワッチョイ 5b98-o90R)
2018/10/26(金) 23:41:06.71ID:E+2rE/Ml0 >>301
headで300行読み込めば?
headで300行読み込めば?
304デフォルトの名無しさん (ワッチョイ 5b5b-F79V)
2018/10/27(土) 00:04:40.31ID:GbJLfo150 sed -n 300pでもええんか?
305デフォルトの名無しさん (ワッチョイ 9764-Ed1r)
2018/10/27(土) 00:13:24.42ID:BbyQQXdF0306デフォルトの名無しさん (ワッチョイ 5b98-o90R)
2018/10/27(土) 00:29:51.71ID:4RrrP6U60■ このスレッドは過去ログ倉庫に格納されています
