シェルスクリプト総合 その28

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/07/24(火) 11:01:16.36ID:r0TJj2hB
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。

前スレ: シェルスクリプト総合 その27(https://mevius.5ch.net/test/read.cgi/unix/1525337663/
360デフォルトの名無しさん
垢版 |
2018/08/27(月) 23:39:06.12ID:zX+eejgv
むしろ物理コンソールで計算機さわることのほうが希だからな
まずサーバーだったらxなんか立ちあげることなんかありえないから
xを使うようターミナルエミュレータを使う機会なんかまずない
361デフォルトの名無しさん
垢版 |
2018/08/27(月) 23:40:16.59ID:zX+eejgv
趣味や遊びで使う分にはいいかもしれないどな
仕事で使う場合そんな使い方はまずしない
2018/08/27(月) 23:40:52.92ID:6cDpYi8T
だったら、今時はssh接続一択じゃないんじゃないかなあ。それで万事解決のようなww
puttyでもTeratermでもssh接続ならちゃんとしているのでしょ?
2018/08/27(月) 23:42:31.94ID:6cDpYi8T
仕事ならなおさらssh接続一択のような。まあ、仕事では未だにtelnetでしかとかいうとこがあるかもしれないが、そうじゃないのは趣味や遊びと決めつけるあたり、ホントに仕事でやってんの?と疑問
364デフォルトの名無しさん
垢版 |
2018/08/27(月) 23:43:41.66ID:zX+eejgv
わかったか
オマエがニートだと思ったから
それようの書き方してる

わかってしまうのが怖い
2018/08/27(月) 23:44:35.56ID:6cDpYi8T
意味わからん。自信たっぷりだね。それだけはわかるw
366デフォルトの名無しさん
垢版 |
2018/08/27(月) 23:48:48.71ID:zX+eejgv
telnet(オレはターミナルの例としてあげただけだ)はないにしても
xサーバーたちあげることはまずない

そんなもん使ってみればいいとか勧めてるいってる時点でな
残念なことに大体察しはつく
2018/08/27(月) 23:50:47.78ID:6cDpYi8T
Xサーバー??何を言っているのか。Windows前提絶対でモノ言っているでしょ?Windowsつかわなきゃ仕事じゃないと言っているわけ??
Windowsでウィンドウシステムが起動してそれを使ってるのと同じだよ。Windows以外でも
2018/08/27(月) 23:54:58.42ID:6cDpYi8T
てか、なんでこのスレでWindows前提絶対やねんっ。別にいいけど、他の作業環境を知らない認めないのはナイな
369デフォルトの名無しさん
垢版 |
2018/08/27(月) 23:59:33.83ID:zX+eejgv
なにをいってるのか って?
オマエがいってることが意味がわからんわ

Xサーバーたちあげないで
どうやってそのUNIXライクな計算機のwindowを表示するワケ

なにも分かってない頭悪いのが使ったつもりになってるのが分かったわ
コレはもう確定
2018/08/28(火) 00:04:36.83ID:Hq0PMDIz
Linuxデスクトップでは普通に起動するでしょ?別に起動するって意識しなくて。Windowsでウィンドウシステムが起動しているのと同じだよ
このスレなんだから、Linuxメインで使っているのいてもおかしくもなんもないだろうにってことだけど?
Linuxを勧めるから仕事じゃないってw 俺のはLinuxでもWindowsでもないけど仕事でもよく/それなりに使われているんだけどなあ
371デフォルトの名無しさん
垢版 |
2018/08/28(火) 00:09:02.63ID:hby/BPp+
Linuxデスクトップとな。。。
ちなみにX端末ってなにかわかる?
2018/08/28(火) 00:10:09.47ID:Hq0PMDIz
どういう意味での?X端末は何もしないでXサーバが処理をするとかいう??
2018/08/28(火) 00:12:57.46ID:Hq0PMDIz
なんか老害?自分の古い知識でそれ前提絶対的なwもっと視野を広げた方がいいような。コンピュータ好きなら
374デフォルトの名無しさん
垢版 |
2018/08/28(火) 00:13:46.49ID:hby/BPp+
まあた始まった
クソニートなの
もうバレてんのに
2018/08/28(火) 00:15:11.79ID:Hq0PMDIz
いや、いうか躊躇はしてたけど、あんたがそういうのを言い出しているんだけど
さすがに>>371>>372のことを言っているようで、堪えられなかったw
2018/08/28(火) 00:24:53.71ID:SLlsMMxP
さて、便秘薬でも飲むとするか
2018/08/28(火) 00:31:12.44ID:ZccLN8yq
え? テレタイプ(TeleTYpe)がどうしたって?
2018/08/28(火) 06:15:37.18ID:xeMH1v/N
半角くん、こっちにいたのか。
よかったら「cursorライブラリ」のことを教えてくれないか?
curses なら知ってるんだが、俺は無知なんだ。
2018/08/28(火) 06:39:27.97ID:gikJ8/5D
>>378
やめてさしあげろw
2018/08/28(火) 09:10:20.79ID:yK6EJuSE
ウィンドウサイズ変えてもCOLUMNS LINESに正しい値が入ってるのは
親プロセスである対話的シェルがSIGWINCHハンドラで設定してくれてるからでしょ。
太古の昔の商用UNIXの/bin/shは設定してくれなかった気がする。
現代でも親プロセスがシェルじゃない場合には、
正しく設定されてない可能性がある。

まあシェルスクリプトならCOLUMNS LINES がもし設定されていれば
それを使えばいいとは思うけどね。
2018/08/28(火) 10:39:39.47ID:gikJ8/5D
ていうかCOLUMNS環境変数とかは設定されるべきとの勧告があるのか。
382デフォルトの名無しさん
垢版 |
2018/08/28(火) 18:07:03.95ID:+71nChns
シェルスクリプトで引数を取り扱ういい方法はないでしょうか?
getoptとかgetoptsがあるのは知っています。

ですが、例えば cp みたいに、cp -a a b とかけるが
cp a -a b や cp a b -a というふうにオプションの順番を入れ替えても動くとか

gitみたいにサブコマンドが使えて、
git --no-pager log --stat のように--no-pagerはgitのオプション、
--statはlogのオプションみたいにする方法がよくわかりません

頑張ればできると思いますが、複雑になりそうです。
なにかいい方法はないでしょうか?

なお他言語を使うとか言うのは禁止です。
2018/08/28(火) 18:11:08.70ID:+71nChns
忘れてましたが、 ls ーal でも ls ーla みたいな書き方にも対応したいし、
git --exec-path=path でも git --exec-path path でも良かったりとか
git --exec-path でもOKとか、みんなどうやって引数解析してるんでしょうか?
384デフォルトの名無しさん
垢版 |
2018/08/28(火) 19:06:24.55ID:C1AWmFJx
みんなは頑張ってやっている。
頑張らないでやる方法は他の言語とライブラリを使う。
2018/08/28(火) 21:17:43.19ID:gikJ8/5D
あなたとしてはgetopt(1)はシェルスクリプトとは別の言語ではないのかな?
思いきり外部コマンドなんだけど……。
2018/08/28(火) 21:23:37.21ID:+71nChns
POSIXできまっていて、どの環境にも入ってるものならOKです。
2018/08/28(火) 21:30:00.13ID:Hq0PMDIz
Cで書かれたものを例に出している時点で変だけどな。それで他言語を使うとか言うのは禁止とか
まあ、シェルスクリプトでも頑張ってる人はググればすぐ出てくるな
2018/08/28(火) 21:41:08.24ID:gikJ8/5D
>>386
getopt(3)
http://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html

はい終了
2018/08/28(火) 21:42:55.17ID:gikJ8/5D
オプション解析とはまったく関係ないんだが

確かこのスレかその前あたりでaliasの可能性について論じてた人がいたよね
あれどうなったのかな。個人的にすごく興味がある。
2018/08/28(火) 21:44:16.50ID:tpGA+DOm
>なお他言語を使うとか言うのは禁止です。
ずいぶん偉そうだね
2018/08/28(火) 21:45:59.04ID:ZccLN8yq
原理主義者クサイ
2018/08/28(火) 21:54:24.12ID:Hq0PMDIz
ロングオプションはgetopt_longでかなり幸せになっているよう。POSIXには(まだ)入っていない
gitは、まあ、大変。読む気は無くなるw
https://github.com/git/git/blob/master/git.c
CではCでも
2018/08/28(火) 22:09:30.12ID:+71nChns
>>388
何が終了なのかよくわかりませんが、
getoptを使えなんて言ってないですよ?
少し考えてください。
2018/08/28(火) 22:13:41.39ID:Hq0PMDIz
どういうネタやねんwまあ、頑張りや
2018/08/28(火) 22:19:33.48ID:gikJ8/5D
>>393
もうちょっと勉強したら?
俺 学部生だぜ? ガキに知識で負けてくやしいよね?

OpenGroupっていうのはさ POSIXを制定している企業なんだわ。
つまりそこがPOSIX標準を定めてるってこと。
だからgetopt(3)はPOSIXに準拠したオプション解析器ってことだ。
どう? 理解した? これでも分からなきゃ相当 馬鹿 だなお前は。
2018/08/28(火) 22:21:11.28ID:Hq0PMDIz
そうムキにならんくていいだろう。>>393なんて人はいない、ネタネタ
2018/08/28(火) 22:36:33.43ID:+71nChns
>>395
いや、知ってるけど、何にレスしてるのかわからん。

あー、>>382

> シェルスクリプトで引数を取り扱ういい方法はないでしょうか?
> getoptとかgetoptsがあるのは知っています。

↑この行が見えてなかったのか。

だから「getoptってのがあるで(ドヤー)」って
書き込んだのね。そういうことか

あのね、getoptだけを使っても、gitのような複雑な
オプションを解析するのは大変なんだよ
2018/08/28(火) 22:41:19.86ID:+71nChns
>>387
> Cで書かれたものを例に出している時点で変だけどな。

それな。C言語の話もしてないのに、
なんでそれ持ってきたのかもわからん

なんか根本的なところで勘違いしてる気がする。
まあ所詮学生だしな
2018/08/28(火) 22:47:19.25ID:Hq0PMDIz
>>398
ww ズレすぎ。あんたのようなヤツなんていない。いたら怖いわっw
いちおう、念のために言っておくと、その引用されたのはあんたに対してだよ
2018/08/28(火) 22:49:42.88ID:+71nChns
>>399
え?なに?つーことはお前もずれてるじゃん

gitのようなオプション(つまりgitは例)を
シェルスクリプトで解析するって話なのに
なんでgitはC言語でかかれていますーなんて話になるの?
意味がわからんが、説明できる?
(学生さんは図星だったようでだまっちゃったみたいだけどさw)
2018/08/28(火) 22:53:12.08ID:Hq0PMDIz
Cで書かれてるのを例に出してるんだから、Cでまずはだろう。そこすっとばして、どうやってんのシェルでって意味通じないよ

てか、ちょっと素が出てきてるねえって感じ。ご苦労さん。なにしたいねん
2018/08/28(火) 22:54:52.38ID:+71nChns
>>401

>>382で真っ先に

> シェルスクリプトで引数を取り扱ういい方法はないでしょうか?
> getoptとかgetoptsがあるのは知っています。

って書いてあるんだが、どこからC言語の話が出てきたの?
2018/08/28(火) 22:57:40.65ID:+71nChns
もしかして、オプションの例として、gitのこういうオプションを
シェルスクリプト取り扱いたいですって言ったから、
C言語の話をしてると思ったの?
2018/08/28(火) 23:00:52.68ID:Hq0PMDIz
マジなのか?うそだろーw
>gitみたいにサブコマンドが使えて、
>git --no-pager log --stat のように--no-pagerはgitのオプション、
>--statはlogのオプションみたいにする方法がよくわかりません

gitのをしたいんでしょ?する方法がよくわかりませんって、Cでやってるとこを言っているんでしょ?
ロングオプションにしたってそう。Cでやってることをどうやってるって聞いてんだから、Cの話だろうに

あえてあんたよりにすると、「シェルで実現するにはどうしたらいいですか、または、可能ですか?」だな
2018/08/28(火) 23:02:58.05ID:+71nChns
> gitのをしたいんでしょ?する方法がよくわかりませんって、Cでやってるとこを言っているんでしょ?

だからgitがCでやっているようなことを
シェリスクリプトでやりたいんですが?

> Cでやってることをどうやってるって聞いてんだから、Cの話だろうに
Cでやってることを(シェルスクリプトで)どうやるって聞いてんだから、シェルスクリプトの話だろうに

あと>>2を読もう
> ・シェルスクリプトのことをシェルってゆうな

はぁ、レベルの低いやつに目をつけあられたな
日本語もろくに理解できてない
2018/08/28(火) 23:03:17.46ID:Hq0PMDIz
ああ、応えは応えてるからね
>>387 のググればすぐ出る
>>392 Cでやってることを頑張ってシェルだ書けば
2018/08/28(火) 23:04:02.06ID:Hq0PMDIz
会話にならない。俺が悪いのか??w
2018/08/28(火) 23:06:22.48ID:+71nChns
> 頑張ればできると思いますが、複雑になりそうです。
と書いてるのに、

複雑になるのが嫌だということも読めていないようだ

Cのコードがシンプルならまだしも、複雑なものを見せて
シェルスクリプトでもCのまねして書け。複雑に書け
とか、全然答えになってないですわ
2018/08/28(火) 23:06:39.91ID:Hq0PMDIz
>>405
> ・シェルスクリプトのことをシェルってゆうな
ああ、すまん
2018/08/28(火) 23:06:43.85ID:+71nChns
>>407
はい
2018/08/28(火) 23:07:59.71ID:Hq0PMDIz
>>408
ww やっぱり、ネタだな。いないだろう、そんなレス書ける思考のヤツはw
なにしたいねんっ
2018/08/28(火) 23:10:58.04ID:+71nChns
ん?まさかと思うが、git "みたいな" オプションを使いたいって話を
例だとわからずに、本当にgitのオプションをそのまま扱うとか
勘違いしてないか?

一行目に
> シェルスクリプトで引数を取り扱ういい方法はないでしょうか?

と書いてあるから、間違うわけ無いと思うが?

> gitみたいにサブコマンドが使えて、

と書いてるのに「みたい」って文字を見逃して、
まんまgitのオプションを扱う方法だと思いこんで、
gitのオプション扱うなら、C言語のソースみればいいだろとか?


うわー、そう理解してしまうのは本気でやばい。ダメな方に意味でやばい
2018/08/28(火) 23:12:22.86ID:Hq0PMDIz
モノホンだったら怖過ぎですよ
2018/08/28(火) 23:14:57.35ID:+71nChns
仕切り直すわ。なんでこの文章で理解できないのかわからないが、
ちゃんと補足する。


シェルスクリプトで引数を取り扱ういい方法はないでしょうか?
getoptとかgetoptsがあるのは知っています。

くり返しいいます。

getoptとかgetoptsがあるのは知っています。


ですが、例えば cp みたいに、cp -a a b とかけるが
cp a -a b や cp a b -a というふうにオプションの順番を入れ替えても動くとか
(もちろんcpは例です。cpみたいなと言ってるわけで、cpのオプションを
扱いたいなんて言っていません)

gitみたいにサブコマンドが使えて、
git --no-pager log --stat のように--no-pagerはgitのオプション、
--statはlogのオプションみたいにする方法がよくわかりません
(もちろんgitは例です。gitみたいなと言ってるわけで、gitのオプションを
扱いたいなんて言っていません)

頑張ればできると思いますが、複雑になりそうです。
(gitのC言語のソースのような複雑なコードは書きたくないです)
なにかいい方法はないでしょうか?

なお他言語を使うとか言うのは禁止です。
2018/08/28(火) 23:17:00.32ID:gikJ8/5D
>>397
「知っています」(ただし使えるとは言っていない)
だろ? どうせ。

gitのオプション解析のソース覗いてみろ。そして俺にあやまるがいい
2018/08/28(火) 23:17:57.87ID:+71nChns
>>415
gitは忘れてください
2018/08/28(火) 23:18:19.53ID:+71nChns
gitの話はしていません。オプションの話をしています。
2018/08/28(火) 23:19:04.23ID:gikJ8/5D
だいたいgitがどうやってオプション解析してるかも知らずに
よくもまあぬけぬけと「getoptは使わない方針で」と言えたもんだな
いままでそんなゴミみたいな思考回路で生きてきて恥かしくないのかね
2018/08/28(火) 23:19:26.80ID:Hq0PMDIz
>>415
>そして俺にあやまるがいい
なんかウケたww

>gitのオプション解析のソース
見たらしいよ。ものすごい文句言われたw
2018/08/28(火) 23:20:08.62ID:gikJ8/5D
>>416
おまえがgitの例を執拗に提示したから悪いんだろ
シェルスクリプトでオプション解析する方法はあるが教えてほしければまず
自分の不手際を謝罪してからにしろ
2018/08/28(火) 23:20:31.97ID:Hq0PMDIz
>>418
直球だなああ。若いなww(しつれい)
2018/08/28(火) 23:20:43.63ID:+71nChns
>>418

>>414には「getoptを使わないで」
などと書いてないんですが、本当に日本語がおそまつ・・・
2018/08/28(火) 23:21:17.44ID:+71nChns
不手際ってなんだろう?

>>414になんか足りないところでもあるの?
2018/08/28(火) 23:21:55.96ID:gikJ8/5D
あーあ。
オプション解析なんてみんながやってることで
そしてそのノウハウもかなり溜ってるんだから
質問の仕方さえ間違えなければすぐさま希望する答えが手に入ったのにね

もったいない
お前のような人間はこれからずっと人生負け組だよww
2018/08/28(火) 23:22:44.60ID:gikJ8/5D
>>423
お前に足りないのは脳味噌と他人に対する配慮だよボケ
2018/08/28(火) 23:23:09.32ID:+71nChns
>>424
お前何がしたいの?
2018/08/28(火) 23:23:35.87ID:+71nChns
>>425
ふむ?なぜかバカにされたと思って、
それでムキになってるのか?
2018/08/29(水) 05:00:00.96ID:byfOgvI+
他板でもそうですが回答側がアレですねw
夏休みで低年齢層が増えていたからでしょうか。
2018/08/29(水) 08:40:49.02ID:JKfxUNfw
IDやワッチョイのつけられる板に越してきた理由が、
こういう感じの無意味な応酬が目に余ったからだしな。
知性はあっても子供だよね。
IDがあってホント良かったよ。
2018/08/29(水) 08:56:49.98ID:ND6xKvzt
>>414 お願いします。
2018/08/29(水) 10:36:23.57ID:jDyQ3/+0
>>430
ない
432デフォルトの名無しさん
垢版 |
2018/08/29(水) 14:43:49.86ID:dthpACHL
>>414
頑張って下さい。

ま、しかし、bashだと素のshよりはちょっと楽かな?
2018/08/29(水) 14:46:35.77ID:jUkhBS20
誰か414を3行にまとめてくれ
2018/08/29(水) 14:51:01.95ID:ND6xKvzt
シェルスクリプトで引数を取り扱ういい方法はないでしょうか?
getoptとかgetoptsがあるのは知っています。
頑張ればできると思いますが、複雑になりそうです。
2018/08/29(水) 15:14:53.45ID:AXEWk4o3
getoptとかgetoptsで頑張るのがいいと思います
2018/08/29(水) 15:29:00.41ID:jUkhBS20
getoptとかgetoptsで頑張るのがいいと思います
2018/08/29(水) 16:01:13.07ID:Nn5B1KsW
getoptとかgetoptsで頑張るのがいいと思います
2018/08/29(水) 16:14:32.69ID:U+j3n810
getoptとかgetoptsで頑張るのがいいと思います
2018/08/29(水) 17:01:53.59ID:rEBrQhP5
人生、時には諦める事も必要
2018/08/29(水) 17:22:27.53ID:zGukP1bd
良いプログラマーとは、楽をする為に労力を惜しまないそうです
今回はその労力をここでの問答に費やす訳ですから
粘り強く頑張って頂ければ良いのかなと思いました
441デフォルトの名無しさん
垢版 |
2018/08/29(水) 20:56:07.12ID:zRPnCBM0
なにもしないのが一番楽
やっぱりアホしかいないわ
2018/08/29(水) 21:02:14.84ID:zfnELSlX
と、アホが申してます
2018/08/29(水) 21:41:17.05ID:ySrrhl3u
ム版に引っ越してきたばかりにム版の厄介者にいつかれちまったな
2018/08/29(水) 21:45:29.75ID:PHlZ4Qkz
ゆうめいじんなのか。なるほど
2018/08/29(水) 21:46:04.98ID:jUkhBS20
まぁIDすらなかった頃に比べれば顔真っ赤が判別できるのは助かるわ
2018/08/29(水) 23:58:23.02ID:U+j3n810
要求の多いお兄ちゃんは、結局何もしないの?
447デフォルトの名無しさん
垢版 |
2018/08/30(木) 09:43:05.13ID:Le3eFjin
しかし引数解析ってそんなに頑張らなくても自作できるよなあ。面倒なだけで。
2018/08/30(木) 09:45:01.72ID:rxoSSaq5
だから面倒なのがいやなんだろ?それぐらいわかれよ
2018/08/30(木) 09:49:03.76ID:5UlR9u+e
引数解析そのものを諦めて別の手段にするとか
2018/08/30(木) 10:11:57.74ID:lJFNKW+A
引数解析って
prog -abcde
とかもできるの?
prog -a -b -c -d
とかしかできないの?
2018/08/30(木) 10:26:46.95ID:DLN02TyK
好きに作ればよくね
2018/08/30(木) 10:57:16.78ID:8BsM3ej5
>>450
普通にできるてかしてくれる。てかそれぐらいちょっと調べればわかること
2018/08/30(木) 11:05:59.54ID:rxoSSaq5
ちょっと調べたけど
https://qiita.com/b4b4r07/items/dcd6be0bb9c9185475bb

ロングオプションが使えないgetoptsか
--longと書いたら-oと誤爆するgetopsしか
見つからなかった

「普通にできる」とはどういうこと?
2018/08/30(木) 11:12:04.78ID:rxoSSaq5
> --longと書いたら-oと誤爆するgetopsしか
--は先に除外すればできるか。リンク先のコードではダメだけど
あとgetopt。これはbashだから、caseの二段構成にするしかないんかな
これを「普通にできる」とは思わんけど
2018/08/30(木) 11:13:00.09ID:8BsM3ej5
getoptはGNUとBSDでは別物。GNUのはロングオプションに対応してる。誤爆って?
getoptsはKorn/POSIX シェル組み込みコマンド(らしい)。ロングオプションは使えないが>>450を「普通」にやってくれる

ロングオプションと羅列を混同してるのか??
2018/08/30(木) 11:17:10.20ID:rxoSSaq5
やっぱりデメリットあるのか。
ロングオプションが使えないのはだめだね
できるけど、べつのことができない
2018/08/30(木) 11:17:50.50ID:8BsM3ej5
なにを言いたいのだか
2018/08/30(木) 11:22:47.19ID:KGeBif2I
やはりそういうことか
2018/08/30(木) 11:24:37.49ID:rxoSSaq5
例えて言うなら、ケーキ食べられる?って聞いて
普通に食べられる(だけどパンは食べられないけどね)
みたいだなーってことだよ

確かにケーキ食べられる?が質問だし、食べられるのだろけど
それ以前のできて当然のものができないっていうのは
がっかりするしか無いなぁってこと
2018/08/30(木) 11:25:04.80ID:KGeBif2I
うん

うん?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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