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

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

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

前スレ: シェルスクリプト総合 その27(https://mevius.5ch.net/test/read.cgi/unix/1525337663/
2018/08/26(日) 23:23:16.02ID:XxVIxjiS
http://pubs.opengroup.org/onlinepubs/009695399/utilities/tput.html
ここを見るとtput colsおよびtput linesは標準で使えないと読めるのですが
POSIXに準拠した形で端末の幅などを取得するにはどうすればいいんでしょうか
2018/08/27(月) 00:43:08.11ID:6cDpYi8T
POISXコマンドであるtput使ってればいいんじゃないの
tputの仕様上は、端末(というかTerminalアプリというか端末エミュレータ)までは知らんってことじゃないの
tputの仕様/機能を満たすために後は勝手にやってくれってことじゃないの。で、当然勝手にやってる、というか、それも標準的な方法でやってるだろう(だいたいはtermcap/terminfoとかベースで)
2018/08/27(月) 00:48:50.05ID:QAQ5xX6o
でもOpenWrtにはtputないしなー
2018/08/27(月) 01:06:14.94ID:KUEVzuS1
POSIX 準拠かどうか分からんけど、

$ stty size

じゃだめなん?
2018/08/27(月) 01:12:42.77ID:QAQ5xX6o
sttyもOpenWrtではないなー
2018/08/27(月) 01:13:44.58ID:x5JZtbKK
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/stty.html
https://www.freebsd.org/cgi/man.cgi?query=stty&;sektion=1
http://man7.org/linux/man-pages/man1/stty.1.html
なさげ?
2018/08/27(月) 01:14:39.85ID:x5JZtbKK
ID:QAQ5xX6o ただの知識自慢?OpenWrtって
2018/08/27(月) 03:20:49.11ID:y2YT/eYl
>>320
いえ すいません言葉が悪かったです。
POSIX標準としてのtputコマンドはあるのです。
http://pubs.opengroup.org/onlinepubs/009695399/utilities/tput.html
しかし そのオプションとして“cols”や“lines”が記載されていないのです。
2018/08/27(月) 03:58:36.09ID:6cDpYi8T
直接、端末に問い合わせる
https://unix.stackexchange.com/questions/16578/resizable-serial-console-window
いちおう、POSIXコマンドオプション内ではあるな。まあ、端末種によって判断しのだけど、2つぐらいに集約されてんのかな?

C関数ではPOSIXのがあるので、ちっちゃいコマンドをCで書く

http://austingroupbugs.net/view.php?id=1053
らしい。時代を先取りして(?)気にせず >>322 を使う
2018/08/27(月) 04:54:02.59ID:6cDpYi8T
というか、
COLUMNS LINES でええやん
http://pubs.opengroup.org/onlinepubs/009604599/basedefs/xbd_chap08.html
んなの設定してないっていうしょぼい環境だったら、しょぼいので設定してくださいって、ユーザに固定値でも設定させれば済むんじゃないの
2018/08/27(月) 05:14:12.97ID:y2YT/eYl
http://austingroupbugs.net/main_page.php
↑このサイト初めて知ったわ。
ここで次期のPOSIX標準がだいたい把握できるんだな。
ところでxargsに-0オプションが付くかどうかってどうやって調べればいいですかね
2018/08/27(月) 06:47:11.21ID:QAQ5xX6o
>>329
実行してみりゃいいだろ。
xargsなんて副作用なく機能判定できる
簡単なコマンドだ
2018/08/27(月) 07:11:24.04ID:i3Gxv5eF
>>317
組み込み向けでわざとない環境を作ったりすることはあるけど、
普通はあると仮定して問題ないよ。
総ディスク容量10MB以下のベル研UNIX の頃からあるコマンドだから。
2018/08/27(月) 07:46:41.74ID:y2YT/eYl
>>330
いやそうじゃなくてPOSIX標準に取り込まれるかどうかってことです
findの-print0オプションはこの間採用されたものの
対応するコマンドでナル文字区切りのデータを受け取れて,さらにそれを区切りとして解釈できるものが
awkくらいしかない状況なので
多くの拡張実装(BSDやGNU)で取り入れられているxargsコマンドの-0オプションが
POSIX標準にならないかな というのが知りたいのです。

そしてその情報をどう入手すればいいのか今迄分からなかったんですよ。
2018/08/27(月) 08:12:50.85ID:gOoey+yt
次期POSIXや将来のPOSIXで入れる入れない機能みたいな議論を知りたいってことでしょうか
2018/08/27(月) 09:26:49.88ID:y2YT/eYl
>>333
その通りです 言葉が足らずもうしわけない
2018/08/27(月) 13:54:28.91ID:i3Gxv5eF
>>334
ttp://austingroupbugs.net/view.php?id=244
を見ると追加する方向ではあるみたい。
でもレビュー中状態でもう7年近く止まってるから、いつになるやら。
2018/08/27(月) 13:58:31.29ID:6cDpYi8T
他にもあるけど、managerはあくまでも拒否って感じ。確か2015あたりのもあるけど、同じ応えばかりw
2018/08/27(月) 14:31:36.35ID:i3Gxv5eF
毎回 -exec {} + を書いてるよね。
でも close はされてないし、うーん この
2018/08/27(月) 14:48:30.12ID:6cDpYi8T
0000251がファイル名に改行を認めるべきか認めないべきかっていうのがありの
んなのとっとと認めないでcloseすれば話が先にすすむのになって感じかなあ。議論が長いのでよくは読んではいない
2018/08/27(月) 15:34:44.12ID:gOoey+yt
現代のスピード感じゃないよね(´・ω・`)
2018/08/27(月) 20:40:23.57ID:y2YT/eYl
まあ互換性の最後の砦だから 新しい機能を付け足すのに慎重になりすぎることはないのかも
2018/08/27(月) 22:17:16.58ID:6cDpYi8T
>>339
dwheelerさんが問題解決を拗らせてると見えなくもないw
ファイル名に改行を認めないで、改行をNULLの代わりにxargsが対応すれば済むような。readはマズいのかなと思うがNULLと改行が同時に必要ってあるのかな??
2018/08/27(月) 22:20:04.31ID:6cDpYi8T
>>341
NULL=ヌル文字'¥0'のことね。いちおう(なぞ)
2018/08/27(月) 22:31:27.06ID:r0TuCFDo
>>341
マルチバイト文字列の2バイト目以降に改行コードが入る可能性は?
2018/08/27(月) 22:36:28.15ID:6cDpYi8T
>>343
議論でEBICDICでとかあったが、そんなのももういらないUnicodeでいいやんここ(5ch)もいい加減Shift-JISを捨ててUnicodeにしやがれっ

あるの?知らん。あったら他でも問題あったりするんじゃないのかなあ。dwheelerさんもそんな感じで重箱の隅的なwなのになぜか-0や-print0はええやん的な
2018/08/27(月) 22:39:24.93ID:i3Gxv5eF
>>343
UNIXでサポートされてる既存のエンコーディングにそういうのはないし、
今後もサポートされないと思う。
346デフォルトの名無しさん
垢版 |
2018/08/27(月) 22:59:48.13ID:zX+eejgv
COLUMNS LINES でいいわけがない
xtermみたいなターミナルエミュレータでも普通にリサイズされるからな
しらん間にサイズが変更されるttyなんかいくらでもある

ttyのサイズについて、常に正しい値を取得したい場合は
常にttyのサイズが変更されたシグナル(SIGWINCH)を受け取るようにして
毎回、COLUMNS LINESの環境変数を更新し続けるとか工夫しないと難しい

 ↓こんな感じのやりかた
 trap 'COLUMNS=$(tput cols) LINES=$(tput lines)' WINCH

あとはioctrlでTIOCGWINSZをじかにとるぐらいしか思い付かない
2018/08/27(月) 23:13:57.46ID:6cDpYi8T
>>346
俺の環境では、COLUMNS LINES が自動で変わるけどな。サーバーにssh接続して、クライアントでウィンドウサイズ変えても、ちゃんとサーバー側shellでのCOLUMNS LINESは
ので、それが当たり前かと思ってたよw xtermでもやりゃできるんじゃないのってか、そんな古いのは対応しないのかな
2018/08/27(月) 23:16:22.70ID:6cDpYi8T
xtermでもちゃんとCOLUMNS LINESがリアルタイムに変わるやんけっ!
349デフォルトの名無しさん
垢版 |
2018/08/27(月) 23:18:21.35ID:zX+eejgv
いやsshでの接続なら普通に対応してるからな
2018/08/27(月) 23:21:50.19ID:6cDpYi8T
なるほど!逆にローカルでは何もしないのか。なるほど。なんでやねんっ!xtermのせいか
351デフォルトの名無しさん
垢版 |
2018/08/27(月) 23:23:01.18ID:zX+eejgv
xtermが対応してるとか
そういう問題じゃないからな
ttyはただのダム端末だからな

xtermみたいにサイズを変更できるターミナルがあって
それに対応できるかどうかという問題になる
2018/08/27(月) 23:25:15.75ID:6cDpYi8T
TTYの幅とかの概念あるの?行はまず無いでしょ。TTYの話じゃないよ
Terminalアプリでローカルでもちゃんとしているのはあるけど?
353デフォルトの名無しさん
垢版 |
2018/08/27(月) 23:29:04.05ID:zX+eejgv
ただな幅の情報が取得できないと
cursorライブラリなんか使えない

ウィンドウサイズが端末の幅とか関係なく
好き放題サイズを設定できるとしても
使いようがない
354デフォルトの名無しさん
垢版 |
2018/08/27(月) 23:31:24.22ID:zX+eejgv
ターミナルはエコーされた文字を
標準出力や標準エラー出力に出力するだけだからな
2018/08/27(月) 23:33:24.56ID:6cDpYi8T
いやいや...いやいや...
xterm前提とか、今何使ってるの??
356デフォルトの名無しさん
垢版 |
2018/08/27(月) 23:34:19.94ID:zX+eejgv
オレはxtermを例にあげただけで
xtermだけじゃない
puttyでもTeratermでもなんでもいい
357デフォルトの名無しさん
垢版 |
2018/08/27(月) 23:35:13.23ID:zX+eejgv
昔のwindowsに附属してた
telnetでもいい
2018/08/27(月) 23:36:58.83ID:6cDpYi8T
あー...
ちょっとLinuxのでも使ってみ。今時は違うから。まあ、そゆのも対象にしたら使えないかもね
2018/08/27(月) 23:38:30.97ID:6cDpYi8T
telnetって...
まあ、そんな古いのを対象にしたらそかもね。なにかPOSIXの貧弱さに通じるものがあるなw
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
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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