シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
前スレ: シェルスクリプト総合 その35
https://mevius.5ch.net/test/read.cgi/tech/1606221440/
関連スレ
・【Bash】Windows Subsystem for Linux【WSL】9
https://mao.5ch.net/test/read.cgi/linux/1607589861/
・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/
・過去UNIXで使われていた ksh というシェルについて
https://mevius.5ch.net/test/read.cgi/unix/1582358403/
・【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
・おまえら! shell は何を使っているんですか?
https://mevius.5ch.net/test/read.cgi/unix/1012330865/
シェルスクリプト総合 その36
■ このスレッドは過去ログ倉庫に格納されています
2021/02/25(木) 09:20:14.64ID:ZyJLXTlk
221デフォルトの名無しさん
2021/04/01(木) 22:02:03.77ID:B5PjUTjB 互換性オプションはマニュアル読んでも例を見ないと分からない物が多いと思う
222デフォルトの名無しさん
2021/04/01(木) 22:26:08.86ID:o5XCnMGW makeの欠点はシェルの文法を混ぜ込むことだよな
223デフォルトの名無しさん
2021/04/01(木) 23:47:14.73ID:I05CY+G0 >>219
ちゃうねん、もう一声!
ひとつのターゲットの中での最後じゃなく、依存関係にあるターゲットでも、並列のターゲットでも、とにかくすべての最後に処理をやらせたいんや。
ちなみに、そのページは見てたけど、流してたわ。w
あらためて見直すと、意義がわかった。
ありがとやで!
ちゃうねん、もう一声!
ひとつのターゲットの中での最後じゃなく、依存関係にあるターゲットでも、並列のターゲットでも、とにかくすべての最後に処理をやらせたいんや。
ちなみに、そのページは見てたけど、流してたわ。w
あらためて見直すと、意義がわかった。
ありがとやで!
224デフォルトの名無しさん
2021/04/01(木) 23:49:43.54ID:I05CY+G0225デフォルトの名無しさん
2021/04/02(金) 00:09:16.86ID:sr96G99p226デフォルトの名無しさん
2021/04/02(金) 02:22:57.94ID:xkKIrGbu227デフォルトの名無しさん
2021/04/02(金) 02:28:01.75ID:sr96G99p Pythonスクリプトの問題点
1. makeのように依存ファイルに基づいた処理を行うのが大変
2. makeでやっていたような処理はシェルスクリプトで書いたほうが簡潔に書ける
なんでPythonのようなタスクを行うのに
適してない言語を使おうとするのかわからない
1. makeのように依存ファイルに基づいた処理を行うのが大変
2. makeでやっていたような処理はシェルスクリプトで書いたほうが簡潔に書ける
なんでPythonのようなタスクを行うのに
適してない言語を使おうとするのかわからない
228デフォルトの名無しさん
2021/04/02(金) 11:31:17.73ID:ebi/L5xP make相当のもあるし最近良くなったので(PEP517)、python+c拡張のプロジェクトでなら従った方がいい
わざわざビルドプロセスだけpythonで書いて添えるんならやめとけ
わざわざビルドプロセスだけpythonで書いて添えるんならやめとけ
229デフォルトの名無しさん
2021/04/02(金) 13:02:49.67ID:xkKIrGbu230デフォルトの名無しさん
2021/04/02(金) 13:20:46.71ID:sr96G99p >>229
そんなsedはゲームにも使えるんやで!みたいなことを言われてもな
sedで書かれたチェスがもの凄い件
https://softantenna.com/wp/unknown/chess-written-in-sed/
> sedで書かれたテトリス「sedtris」なんてものまであるようです。
自分が得意な言語じゃなくて適切な道具を使いましょうってだけ
make使ってなにかのコマンドを実行してたんだろ?
ならそれはシェルスクリプトが適切な道具だ
Pythonじゃない。Pythonで書くと倍以上にコードが長くなるだろう
そんなsedはゲームにも使えるんやで!みたいなことを言われてもな
sedで書かれたチェスがもの凄い件
https://softantenna.com/wp/unknown/chess-written-in-sed/
> sedで書かれたテトリス「sedtris」なんてものまであるようです。
自分が得意な言語じゃなくて適切な道具を使いましょうってだけ
make使ってなにかのコマンドを実行してたんだろ?
ならそれはシェルスクリプトが適切な道具だ
Pythonじゃない。Pythonで書くと倍以上にコードが長くなるだろう
231デフォルトの名無しさん
2021/04/02(金) 13:27:11.24ID:s72UfXRI それもよく言われるけど落とし穴が多すぎる、現にハマってるようだし他の方法を考えた方が
232デフォルトの名無しさん
2021/04/02(金) 13:27:52.24ID:s72UfXRI >>229宛てね
233デフォルトの名無しさん
2021/04/02(金) 13:36:01.88ID:ebi/L5xP なるべく基本ユティリティでやりたくて、makeで融通が効かないタスクの自動順序解決&実行ならtsortを使うのが良い
234デフォルトの名無しさん
2021/04/02(金) 13:46:20.17ID:ebi/L5xP 何がやりたいのか小出しでよくわからんね
makeはtsort+ビルド向けの機能のセットであって、ビルドに使わないなら必要としてるのはtsortの部分だろ
makeはtsort+ビルド向けの機能のセットであって、ビルドに使わないなら必要としてるのはtsortの部分だろ
235デフォルトの名無しさん
2021/04/02(金) 14:06:24.57ID:qkslRrVn 具体的にどうタイムスタンプ(に限らないが)を取ってきてコマンドと結合しtsortにかけ、出力を整形して実行するのか
みたいな事なら答えてやれるし、それがこのスレの趣旨だろう
みたいな事なら答えてやれるし、それがこのスレの趣旨だろう
236デフォルトの名無しさん
2021/04/02(金) 14:16:05.96ID:W1Cqjj5x 単にタスクランナーとして使ってるだけかもしれんし、質問者が出してない情報を推測であれこれ言うのはやめよう
237デフォルトの名無しさん
2021/04/02(金) 17:21:25.62ID:l3SG9gZX #!/bin/sh
# >>14
# 外国籍の者が日本人に成り済ますために使う「通名」作成スクリプトを実行し
# 当たり玉を3回以上出した者をPOSIX中心主義者と見なしコレ以降の書き込みを禁じる
KIM=1
while [ $KIM -lt 21 ]
do
echo "$KIM回目"
KIM=$( expr $KIM + 1 )
NAME=$( shuf -e 村 崎 本 田 山 玉 子 -n 1 )
if [ "$NAME" = "玉" ]
then tput setaf 3 && echo "金$NAME"; tput sgr0
else echo "金$NAME"
fi
sleep $(( $(od -vAn -N3 -i /dev/random) % 5 ))
done
# >>14
# 外国籍の者が日本人に成り済ますために使う「通名」作成スクリプトを実行し
# 当たり玉を3回以上出した者をPOSIX中心主義者と見なしコレ以降の書き込みを禁じる
KIM=1
while [ $KIM -lt 21 ]
do
echo "$KIM回目"
KIM=$( expr $KIM + 1 )
NAME=$( shuf -e 村 崎 本 田 山 玉 子 -n 1 )
if [ "$NAME" = "玉" ]
then tput setaf 3 && echo "金$NAME"; tput sgr0
else echo "金$NAME"
fi
sleep $(( $(od -vAn -N3 -i /dev/random) % 5 ))
done
238デフォルトの名無しさん
2021/04/02(金) 17:37:09.20ID:sr96G99p POSIX中心主義ってあれ生きてるの?
もう虫の息なきがw
もう虫の息なきがw
239デフォルトの名無しさん
2021/04/02(金) 18:12:13.70ID:Ka7wreYU 煽ってくる質問者なんてほっとけ
240デフォルトの名無しさん
2021/04/02(金) 18:17:16.53ID:hbCxlU+U 移植性や持続性っても、
移植性ってただ他でも動くでしかないし、
持続性ってただ変わらない=古いのに固執でしかないし
メンテナンス性は軽視もしくは考慮外だからな(命名のいい加減さから考慮してないだろうなw)
その面が実務者(新しい人だけど)に公にやんわりとw指摘されて瀕死かな
移植性ってただ他でも動くでしかないし、
持続性ってただ変わらない=古いのに固執でしかないし
メンテナンス性は軽視もしくは考慮外だからな(命名のいい加減さから考慮してないだろうなw)
その面が実務者(新しい人だけど)に公にやんわりとw指摘されて瀕死かな
241デフォルトの名無しさん
2021/04/02(金) 18:25:37.14ID:2zuzxBMS >>240
日本語でOK
日本語でOK
242デフォルトの名無しさん
2021/04/02(金) 18:35:13.75ID:hbCxlU+U 自分の無知を人の日本語wのせいにするんじゃないよ
243デフォルトの名無しさん
2021/04/02(金) 18:42:19.12ID:ebi/L5xP tsortはmakeのような動的依存解決&コード生成に使う発想は無かったわ
確かにスクリプト中でタイムスタンプでソート(sort)してからtsortすればmakeの基本機能はカバーできるが、実行したいコマンドを直接書くのはセパレータの扱いや依存が一つしか書けないなど厄介
書き散らしたシェル関数/コマンド"名"を直列に依存解決してダンプ、リファクタリングの参考にするのには気軽でいい
確かにスクリプト中でタイムスタンプでソート(sort)してからtsortすればmakeの基本機能はカバーできるが、実行したいコマンドを直接書くのはセパレータの扱いや依存が一つしか書けないなど厄介
書き散らしたシェル関数/コマンド"名"を直列に依存解決してダンプ、リファクタリングの参考にするのには気軽でいい
244デフォルトの名無しさん
2021/04/02(金) 19:16:18.60ID:1/Ara7QU 進捗率表示してくれるpvコマンドってどうなの?
やっぱその分処理遅くなったりする?
やっぱその分処理遅くなったりする?
245デフォルトの名無しさん
2021/04/02(金) 19:16:25.76ID:ebi/L5xP 見かけ上無引数のシェル関数で包めば、とりあえず簡単に動くコードは吐けるか
あんまりやりすぎるとmakeでタスクランナーと変わらんが
あんまりやりすぎるとmakeでタスクランナーと変わらんが
246デフォルトの名無しさん
2021/04/02(金) 19:37:10.62ID:ebi/L5xP247デフォルトの名無しさん
2021/04/02(金) 19:42:14.08ID:ebi/L5xP たぶん求められている答えじゃないかもしれないけど…
ことパイプに関しては前後のコマンドすらスループットに大いに関係がある
特に挟まれる前提のコマンドなら、それ単体で遅い速いを言うのは意味がない
ことパイプに関しては前後のコマンドすらスループットに大いに関係がある
特に挟まれる前提のコマンドなら、それ単体で遅い速いを言うのは意味がない
248デフォルトの名無しさん
2021/04/02(金) 20:08:48.33ID:ITrGzi0M 進捗確認ツールならそれ自体は多分十分気をつけてるだろ、通信先が病的なら気をつけても無駄だが
遅くて困ってからstdbufとか試せば
どうしても必要なものとは思えないけど、インストールスクリプト等でこだわりがあるなら
遅くて困ってからstdbufとか試せば
どうしても必要なものとは思えないけど、インストールスクリプト等でこだわりがあるなら
249デフォルトの名無しさん
2021/04/02(金) 20:45:04.78ID:B/D63v/Y 確かにこれに限らずパイプ通しただけでもわからんよな
それ用のコマンドだから意識してるとは思うが
それ用のコマンドだから意識してるとは思うが
250デフォルトの名無しさん
2021/04/02(金) 22:49:58.28ID:Gl9s1y4K straceするんだ
ファイルIO想定で書いたけど、ストリームも一応(ロジックそのままで)対応しとくかみたいな奴が腐ったミカン
内部バッファにある程度貯めて処理するのが理想だけど、パイプラインのパーツはそうじゃない
こまめに空パイプ覗きに行って藪蛇ブロック、貯めたデータの処理止まってたり
時々ドバっと書き出すから後続はずっとアイドル
なんかインピーダンスみたいだな
ファイルIO想定で書いたけど、ストリームも一応(ロジックそのままで)対応しとくかみたいな奴が腐ったミカン
内部バッファにある程度貯めて処理するのが理想だけど、パイプラインのパーツはそうじゃない
こまめに空パイプ覗きに行って藪蛇ブロック、貯めたデータの処理止まってたり
時々ドバっと書き出すから後続はずっとアイドル
なんかインピーダンスみたいだな
251デフォルトの名無しさん
2021/04/02(金) 22:56:06.54ID:Gl9s1y4K リーダ/メイン/ライタの3プロセスで1コマンド構成するのがベストになんだろうが、めんどくさいな…
pvみたいに統計取るだけの奴は、読んだ分をそのまま書き出すだろうから、それ自身が問題起こすことは考えにくいかと
ところで、誰かtime したかー?
pvみたいに統計取るだけの奴は、読んだ分をそのまま書き出すだろうから、それ自身が問題起こすことは考えにくいかと
ところで、誰かtime したかー?
252デフォルトの名無しさん
2021/04/02(金) 23:12:36.74ID:nXGaO3xM タスクランナーなら、
Jenkins,
Ruby のRake, Thor,
JavaScript のnpm scripts, gulp
Jenkins,
Ruby のRake, Thor,
JavaScript のnpm scripts, gulp
253デフォルトの名無しさん
2021/04/02(金) 23:21:07.01ID:Gl9s1y4K 俺は他の使ってるが、単なるオレオレタスクランナーならモダン言語で良いの山ほどあるしな
やっぱり何でもmakeマンには賛同できないわ
やっぱり何でもmakeマンには賛同できないわ
254デフォルトの名無しさん
2021/04/02(金) 23:22:46.09ID:Gl9s1y4K どうせ自分用なんだから好きなの使えば良いわけだし
255デフォルトの名無しさん
2021/04/02(金) 23:55:49.61ID:Fe5X0u2X 複数の言語を使ってるとなんで言語ごとに
タスクランナーを変えなきゃいけないんだよと思う
大したことなんかしないだろ
タスクランナーを変えなきゃいけないんだよと思う
大したことなんかしないだろ
256デフォルトの名無しさん
2021/04/03(土) 00:05:04.26ID:hWVbhofL >>255
高度な機能を実装する為にモダン言語使っているというだけで、自分の好きなシェルを指定して、そのシェル文法で書くのが主流だと思うよ
(思う、というのはホスト言語の構文ももちろん使えるから、他人は知らん)
.ONESHELLみたいな汚いワークアラウンドも要らないしmakeよりはbsh
高度な機能を実装する為にモダン言語使っているというだけで、自分の好きなシェルを指定して、そのシェル文法で書くのが主流だと思うよ
(思う、というのはホスト言語の構文ももちろん使えるから、他人は知らん)
.ONESHELLみたいな汚いワークアラウンドも要らないしmakeよりはbsh
257デフォルトの名無しさん
2021/04/03(土) 00:12:46.44ID:YB/KO+42 Makefileは真のタスクランナー(シェルスクリプト)の
よく使う使い方を書いたサンプルファイルだよw
makeコマンドが入っていれば、makeコマンドで実行できるし
入ってないならMakefileの中を見て
そこに書いてるサンプルを直接実行するもの
よく使う使い方を書いたサンプルファイルだよw
makeコマンドが入っていれば、makeコマンドで実行できるし
入ってないならMakefileの中を見て
そこに書いてるサンプルを直接実行するもの
258デフォルトの名無しさん
2021/04/03(土) 00:23:20.08ID:r67/WY6G makeがcで書かれてるからといってcでルールかかない
259デフォルトの名無しさん
2021/04/03(土) 00:24:59.87ID:r67/WY6G のと同じか
スレチぎみだけどbashで書けるオススメおしえろ
スレチぎみだけどbashで書けるオススメおしえろ
260デフォルトの名無しさん
2021/04/03(土) 00:28:21.58ID:YB/KO+42 > bashで書けるオススメおしえろ
どういう意味?
makeは依存ファイルに基づいてビルドするターゲットを決めるものだけど
その機能を使わないで、ただのタスクランナーとして使うなら
普通にシェルスクリプトにコード書けばいいんじゃん?
よくinstall.shとかあるでしょ?
インストールというタスクを実行してる
どういう意味?
makeは依存ファイルに基づいてビルドするターゲットを決めるものだけど
その機能を使わないで、ただのタスクランナーとして使うなら
普通にシェルスクリプトにコード書けばいいんじゃん?
よくinstall.shとかあるでしょ?
インストールというタスクを実行してる
261デフォルトの名無しさん
2021/04/03(土) 00:37:33.71ID:r67/WY6G >>260
ロジック頭から追わなくてもルールベースで書けるってのが意義では、ここだけmake信者の気持ちは理解できる
カジュアル用途なら再コンパイル判定は要らないし、トポロジカルソートだけしてくれれば大体みんな満足でしょう
シェルオタとしては上の方に出てるtsort実装もやってみたくはある
ロジック頭から追わなくてもルールベースで書けるってのが意義では、ここだけmake信者の気持ちは理解できる
カジュアル用途なら再コンパイル判定は要らないし、トポロジカルソートだけしてくれれば大体みんな満足でしょう
シェルオタとしては上の方に出てるtsort実装もやってみたくはある
262デフォルトの名無しさん
2021/04/03(土) 00:40:42.08ID:YB/KO+42 >>261
ルールって何?ルールがなにもないんだけど?
ルールって何?ルールがなにもないんだけど?
263デフォルトの名無しさん
2021/04/03(土) 00:42:44.05ID:r67/WY6G264デフォルトの名無しさん
2021/04/03(土) 00:52:45.70ID:r67/WY6G >>262
connect: lounch-serverみたいな感じ、これなら生tsortでも済むけど
connect: lounch-serverみたいな感じ、これなら生tsortでも済むけど
265デフォルトの名無しさん
2021/04/03(土) 00:53:12.25ID:YB/KO+42 >>263
適切な順番に並べればいいだけじゃん?
例えばmake.shとか作って
task1() { ・・・}
task2() { ・・・}
task3() { ・・・}
cmd1() {
task1
task2
task3
}
"$@"
とか書けば、make.sh cmd1でこの順番通りに実行できるでしょ?
task2がtask3に絶対依存するってものなら
task2の中からtask3を呼び出せばいいだけだし
シンプルな手続き型で書けることを
知らなきゃわからない独自の定義構文で書くのってアホらしいと思う
適切な順番に並べればいいだけじゃん?
例えばmake.shとか作って
task1() { ・・・}
task2() { ・・・}
task3() { ・・・}
cmd1() {
task1
task2
task3
}
"$@"
とか書けば、make.sh cmd1でこの順番通りに実行できるでしょ?
task2がtask3に絶対依存するってものなら
task2の中からtask3を呼び出せばいいだけだし
シンプルな手続き型で書けることを
知らなきゃわからない独自の定義構文で書くのってアホらしいと思う
266デフォルトの名無しさん
2021/04/03(土) 00:55:23.30ID:r67/WY6G 依存とレシピを同一視できるのが強みじゃないかな
267デフォルトの名無しさん
2021/04/03(土) 00:56:16.66ID:YB/KO+42 なんのために?
268デフォルトの名無しさん
2021/04/03(土) 00:57:18.69ID:r67/WY6G 簡潔性
269デフォルトの名無しさん
2021/04/03(土) 00:58:12.59ID:YB/KO+42 >>265がより簡潔になるというのなら
それを見せてほしいが
それを見せてほしいが
270デフォルトの名無しさん
2021/04/03(土) 01:06:37.77ID:r67/WY6G >>269
適切な順番に並べたのなら書き直さなくていいよ、適切に並べる為の仕組みの話で
あと簡潔というのは各記述の話であってコード全体が簡潔になるという意味ではないぞ…むしろトポロジカルソート直列化後のコードは一般に冗長になる
適切な順番に並べたのなら書き直さなくていいよ、適切に並べる為の仕組みの話で
あと簡潔というのは各記述の話であってコード全体が簡潔になるという意味ではないぞ…むしろトポロジカルソート直列化後のコードは一般に冗長になる
271デフォルトの名無しさん
2021/04/03(土) 01:14:42.13ID:r67/WY6G つーかいい実装無いか尋ねてる俺になぜ聞く…
独特のレス見るに月末に初心者イビってた奴か?
独特のレス見るに月末に初心者イビってた奴か?
272デフォルトの名無しさん
2021/04/03(土) 01:14:50.26ID:YB/KO+42 適切に並べる為の仕組み?
どの順番で実行すべきかなんて人が知ってる
どの順番で実行すべきかなんて人が知ってる
273デフォルトの名無しさん
2021/04/03(土) 01:16:18.50ID:r67/WY6G などとautotoolsもcmakeもわけわかんねー事をほざいでおります
274デフォルトの名無しさん
2021/04/03(土) 01:18:13.59ID:r67/WY6G タイポしちゃった、わけわかんねー、の前に、"も理解できないオッサン"を補って読んでください
275デフォルトの名無しさん
2021/04/03(土) 01:20:35.91ID:YB/KO+42 >>273
autotoolsもcmakeも「発生した問題」を解決するためのツールであって
問題が発生してないのに、使うものではないと言ってます。
タスクランナーごときで問題が発生しますか?
まさにKeep it simple stupidの話だよ
シンプルにしておけ
autotoolsもcmakeも「発生した問題」を解決するためのツールであって
問題が発生してないのに、使うものではないと言ってます。
タスクランナーごときで問題が発生しますか?
まさにKeep it simple stupidの話だよ
シンプルにしておけ
276デフォルトの名無しさん
2021/04/03(土) 01:34:22.75ID:r67/WY6G277デフォルトの名無しさん
2021/04/03(土) 01:37:02.86ID:YB/KO+42 > 問題が起きないようアルゴリズムに任せるとこは任せましょう
無理です。どちらにしろ人間が依存関係の情報を書かなければいけません。
単に書き方が変わってるだけです。
無理です。どちらにしろ人間が依存関係の情報を書かなければいけません。
単に書き方が変わってるだけです。
278デフォルトの名無しさん
2021/04/03(土) 01:41:25.51ID:r67/WY6G そういう意見はここじゃやくてそれらのツール、あと
>>252
Jenkins,
Ruby のRake, Thor,
JavaScript のnpm scripts, gulp
のメーリスにでも投稿してくれ
もしかしたら世の役に立たないこともないかもしれん
>>252
Jenkins,
Ruby のRake, Thor,
JavaScript のnpm scripts, gulp
のメーリスにでも投稿してくれ
もしかしたら世の役に立たないこともないかもしれん
279デフォルトの名無しさん
2021/04/03(土) 01:44:38.22ID:YB/KO+42 ここまでレスの応酬を続けておきながら、
今更そんなレスをするっていうのは
これ以上言い返せなくなったからということなんですね
今更そんなレスをするっていうのは
これ以上言い返せなくなったからということなんですね
280デフォルトの名無しさん
2021/04/03(土) 01:44:39.70ID:r67/WY6G 昨日結構賑わいあって久々に良い感じの雰囲気だったのに、ID真っ赤にして空気乱してすまんかった
大人げない、反省
大人げない、反省
281デフォルトの名無しさん
2021/04/03(土) 01:45:59.57ID:ANUlY9KL282デフォルトの名無しさん
2021/04/03(土) 01:53:31.65ID:YB/KO+42 >>281
お前が、俺の勝ちに見えるのなら、そうなんだろうな
お前が、俺の勝ちに見えるのなら、そうなんだろうな
283デフォルトの名無しさん
2021/04/03(土) 01:56:49.08ID:K2jZ2c+V こいつが絡むといつもこう、目的が↑これが冗談じゃないからな
284デフォルトの名無しさん
2021/04/03(土) 13:13:41.11ID:eS+08rtw チャンピオンの誕生を祝して専スレを建てよう
敗者も向学のためご一緒にどうぞ
敗者も向学のためご一緒にどうぞ
285デフォルトの名無しさん
2021/04/03(土) 13:19:21.91ID:G0wsjcxM それは良い考え。チャンピオンを称えてそうしてくれるとありがたい
286デフォルトの名無しさん
2021/04/03(土) 15:48:41.71ID:cpKOTPf8 >>236
当たらずとも遠からず。
目的は、サーバーテスト。
で、テスト終了後にサーバーを始末したかったんや。。。
>>265
そんなんするくらいなら、makefileのほうが万倍マシやな!w
makeと違って、個別ターゲットの指定もできないし。
>>235
tsortを持ち出す教える君は、上から教えたい気持ちが漏れすぎやで!
https://togetter.com/li/1685
当たらずとも遠からず。
目的は、サーバーテスト。
で、テスト終了後にサーバーを始末したかったんや。。。
>>265
そんなんするくらいなら、makefileのほうが万倍マシやな!w
makeと違って、個別ターゲットの指定もできないし。
>>235
tsortを持ち出す教える君は、上から教えたい気持ちが漏れすぎやで!
https://togetter.com/li/1685
287デフォルトの名無しさん
2021/04/03(土) 15:51:10.04ID:cpKOTPf8288デフォルトの名無しさん
2021/04/04(日) 04:15:28.57ID:Y9bxvDcN >>286
> そんなんするくらいなら、makefileのほうが万倍マシやな!w
> makeと違って、個別ターゲットの指定もできないし。
たった>>265のコードだけで個別ターゲット指定できてるんだが?w
makeの「依存ファイルに基づいてビルドするターゲットを決める」という
メイン機能を使わないなら>>265だけでいい。
シバンがないからこれがシェルスクリプト全体だってわからなかったか?
#!/bin/sh
target1() { echo "target1"; }
target2() { echo "target2"; }
target3() { echo "target3"; }
"$@"
↑これをmake.shとかいうファイル名で作って
./make.sh target1ってやってみ、ちゃんと動作するから
もし ./make.sh target1 target2 target3 みたいに
複数ターゲット指定できるようにしたいなら単にループすればいい
for target in "$@"; do
"$target"
done
お前にとってのmakeの価値はこのたった3行のコードにすぎんよ
一行でも書けるがw
# お前に必要なmakeコマンドの実装
for target; do "$target"; done
> そんなんするくらいなら、makefileのほうが万倍マシやな!w
> makeと違って、個別ターゲットの指定もできないし。
たった>>265のコードだけで個別ターゲット指定できてるんだが?w
makeの「依存ファイルに基づいてビルドするターゲットを決める」という
メイン機能を使わないなら>>265だけでいい。
シバンがないからこれがシェルスクリプト全体だってわからなかったか?
#!/bin/sh
target1() { echo "target1"; }
target2() { echo "target2"; }
target3() { echo "target3"; }
"$@"
↑これをmake.shとかいうファイル名で作って
./make.sh target1ってやってみ、ちゃんと動作するから
もし ./make.sh target1 target2 target3 みたいに
複数ターゲット指定できるようにしたいなら単にループすればいい
for target in "$@"; do
"$target"
done
お前にとってのmakeの価値はこのたった3行のコードにすぎんよ
一行でも書けるがw
# お前に必要なmakeコマンドの実装
for target; do "$target"; done
289252
2021/04/04(日) 06:36:12.78ID:0QnJQanX290デフォルトの名無しさん
2021/04/04(日) 06:54:28.00ID:Y9bxvDcN291デフォルトの名無しさん
2021/04/04(日) 10:55:57.93ID:Y9bxvDcN たまたまビルドを作る必要があってMakefileにちゃんと依存関係を書いてみたが
やっぱり数個程度のファイルしかない場合は過剰なんだよなw
そしてその依存関係の定義はちゃんと正しいのか見なきゃいけなないという
タスクごとにそのまま書いたほうが分かりやすいっていうね
やっぱり数個程度のファイルしかない場合は過剰なんだよなw
そしてその依存関係の定義はちゃんと正しいのか見なきゃいけなないという
タスクごとにそのまま書いたほうが分かりやすいっていうね
292デフォルトの名無しさん
2021/04/04(日) 12:21:35.65ID:Y9bxvDcN 依存関係の定義なくしたw
正確に言えば依存ファイルの定義だな
依存のタスクは残しているが、依存ファイルはどうでもいいや
タスクを実行したら最初からビルドしなおしても時間はかからんし
正確に言えば依存ファイルの定義だな
依存のタスクは残しているが、依存ファイルはどうでもいいや
タスクを実行したら最初からビルドしなおしても時間はかからんし
293デフォルトの名無しさん
2021/04/04(日) 12:30:56.36ID:sWeAOgyW 矮小化した自分に都合に良い条件でしか考えられない
連投さえして同じとこぐるぐる回ってるだけって馬鹿犬かよ
連投さえして同じとこぐるぐる回ってるだけって馬鹿犬かよ
294デフォルトの名無しさん
2021/04/04(日) 12:42:29.55ID:Y9bxvDcN 自分に都合に良い条件で考えるのは足り前
正確に言えば、実際のプロジェクトにいい条件ってこと
架空のプロジェクトを相手にしたってしょうがない
正確に言えば、実際のプロジェクトにいい条件ってこと
架空のプロジェクトを相手にしたってしょうがない
295デフォルトの名無しさん
2021/04/04(日) 13:10:39.02ID:sWeAOgyW プロジェクトってw
想像できませんってだけのそんなレスできるんだから趣味での経験しかないんだろうな
吠えて煩いだけの馬鹿犬だな
想像できませんってだけのそんなレスできるんだから趣味での経験しかないんだろうな
吠えて煩いだけの馬鹿犬だな
296デフォルトの名無しさん
2021/04/04(日) 13:30:29.59ID:rmqTiba5 >>288
all : task1 task2 task3
task1: prepare
task2: prepare
task3: prepare
prepare :
という構成で、タスクは並列可、prepareは超重い、となると、makeが最適解やろ。
all : task1 task2 task3
task1: prepare
task2: prepare
task3: prepare
prepare :
という構成で、タスクは並列可、prepareは超重い、となると、makeが最適解やろ。
297デフォルトの名無しさん
2021/04/04(日) 15:51:18.30ID:Y9bxvDcN298デフォルトの名無しさん
2021/04/04(日) 15:53:37.76ID:Y9bxvDcN299デフォルトの名無しさん
2021/04/04(日) 16:57:04.88ID:WsuFFQM2 狂犬
300デフォルトの名無しさん
2021/04/04(日) 19:44:32.02ID:rmqTiba5 >>298
勝手に終わりにしとるだけやん!w
勝手に終わりにしとるだけやん!w
301デフォルトの名無しさん
2021/04/05(月) 04:28:41.70ID:gsx4ZFoJ 終わりじゃない理由でもあるの?
302デフォルトの名無しさん
2021/04/05(月) 06:19:20.07ID:3jUc8O+L prepare無視して勝手に終わりにしてるってとこだろ
無視というかただわかってないからだろうけど
無視というかただわかってないからだろうけど
303デフォルトの名無しさん
2021/04/05(月) 06:33:48.44ID:Ir9xQslo そう言われてから出すとしたら等価ではないのをまた出しそうでだな
304デフォルトの名無しさん
2021/04/05(月) 08:37:32.95ID:gsx4ZFoJ その前にprepareが何なのか言えよ
ただ実行する以外に何が違うのか書いてないのに
あとつけで違うとか言うなよ
ただ実行する以外に何が違うのか書いてないのに
あとつけで違うとか言うなよ
305デフォルトの名無しさん
2021/04/05(月) 08:49:07.73ID:Ir9xQslo わかってないこと多すぎなのになぜもそう偉そうなのか
306デフォルトの名無しさん
2021/04/05(月) 09:09:31.93ID:Ir9xQslo307デフォルトの名無しさん
2021/04/05(月) 10:59:23.34ID:gsx4ZFoJ308デフォルトの名無しさん
2021/04/05(月) 11:01:51.92ID:gsx4ZFoJ 複数のタスクを指定したときにprepareを一回しか実行しないというのであれば
all関数の最初に一回だけ書いてもいいし
フラグを使って一回だけ実行するようにしてもいい(たった一行で実現可能)
動かしたい通りに書けば良い
all関数の最初に一回だけ書いてもいいし
フラグを使って一回だけ実行するようにしてもいい(たった一行で実現可能)
動かしたい通りに書けば良い
309デフォルトの名無しさん
2021/04/05(月) 11:04:18.21ID:i9PX2oQn 気持ち悪いスレだなあ
310デフォルトの名無しさん
2021/04/05(月) 11:04:54.93ID:gsx4ZFoJ leftpad事件と同じ匂いを感じててしまうな
われわれ(俺除くw)はこんな簡単なコードも書けなくなってしまったのか?
われわれ(俺除くw)はこんな簡単なコードも書けなくなってしまったのか?
311デフォルトの名無しさん
2021/04/05(月) 11:22:30.40ID:i9PX2oQn >>284
棲み分けられるか正直疑問だし、御高説垂れにくい初心者スレ的なのはどうだろうか
棲み分けられるか正直疑問だし、御高説垂れにくい初心者スレ的なのはどうだろうか
312デフォルトの名無しさん
2021/04/05(月) 11:52:33.18ID:qeGrbie0 >>308
そんなクソコードに頼らずとも使えるのがmakeなんやで!w
そんなクソコードに頼らずとも使えるのがmakeなんやで!w
313デフォルトの名無しさん
2021/04/05(月) 12:42:09.26ID:gsx4ZFoJ >>312
makeはすぐ複雑化するよ
http://quruli.ivory.ne.jp/document/make_3.79.1/make-jp_16.html
C. 複雑なMakefileの例
ここにGNU makeプログラムのmakefileがあり、それは比較的複雑なものです。
makeはすぐ複雑化するよ
http://quruli.ivory.ne.jp/document/make_3.79.1/make-jp_16.html
C. 複雑なMakefileの例
ここにGNU makeプログラムのmakefileがあり、それは比較的複雑なものです。
314デフォルトの名無しさん
2021/04/05(月) 12:43:47.04ID:gsx4ZFoJ このMakefileを見て以下の情報を読み取るのは困難
> ここでは、最初のターゲットなのでデフォルトのゴールは‘all’です。
> この makefileの興味深い特徴は、‘testpad.h’がtestpadプログラムに よって
> 自動的に作成されるソースファイルである点です。そして、その プログラム自身は‘testpad.c’のコンパイルによるものです。
> ‘make’あるいは‘make all’と入力することでmakeが実行可能な ‘tar’、
> テープアクセスを提供する‘rmt’デーモン、‘tar.info’の Infoファイルを作成します。
> ‘make install’と入力すると、‘tar’、‘rmt’、‘tar.info’の 作成だけでなく、それらのインストールも行ないます。
> ‘make clean’と入力すると、makeは‘.o’ファイル、 ‘tar’、‘rmt’、‘testpad’、
> ‘testpad.h’、そして ‘core’ファイルをすべて削除します。
> ‘make distclean’と入力すると、makeは‘make clean’と同じ 削除以外に‘TAGS’、
> ‘Makefile’、そして‘config.status’ファイルも 削除します。
> (明らかではありませんが、このmakefileと‘config.status’は configureプログラムに
> よって作成されたもので、これはtarの 配布プログラムに含まれています。しかし、ここではそれは表示されていません。)
> ‘make realclean’と入力すると、makeは‘make distclean’の ときと同じ削除を行ない、
> さらに‘tar.texinfo’から生成されたInfoファイルの 削除も行ないます。
> さらに、ここでは、配布キットを作成するためのターゲットsharと distも示されています。
> ここでは、最初のターゲットなのでデフォルトのゴールは‘all’です。
> この makefileの興味深い特徴は、‘testpad.h’がtestpadプログラムに よって
> 自動的に作成されるソースファイルである点です。そして、その プログラム自身は‘testpad.c’のコンパイルによるものです。
> ‘make’あるいは‘make all’と入力することでmakeが実行可能な ‘tar’、
> テープアクセスを提供する‘rmt’デーモン、‘tar.info’の Infoファイルを作成します。
> ‘make install’と入力すると、‘tar’、‘rmt’、‘tar.info’の 作成だけでなく、それらのインストールも行ないます。
> ‘make clean’と入力すると、makeは‘.o’ファイル、 ‘tar’、‘rmt’、‘testpad’、
> ‘testpad.h’、そして ‘core’ファイルをすべて削除します。
> ‘make distclean’と入力すると、makeは‘make clean’と同じ 削除以外に‘TAGS’、
> ‘Makefile’、そして‘config.status’ファイルも 削除します。
> (明らかではありませんが、このmakefileと‘config.status’は configureプログラムに
> よって作成されたもので、これはtarの 配布プログラムに含まれています。しかし、ここではそれは表示されていません。)
> ‘make realclean’と入力すると、makeは‘make distclean’の ときと同じ削除を行ない、
> さらに‘tar.texinfo’から生成されたInfoファイルの 削除も行ないます。
> さらに、ここでは、配布キットを作成するためのターゲットsharと distも示されています。
315デフォルトの名無しさん
2021/04/05(月) 12:52:05.95ID:4wNso/hW Makefileが複雑化するのはビルドする工程が複雑化しているという別の問題の顕在化でしかないでしょ
それと同じことができるシェルスクリプトを書くのとMakefileを書くのとどっちが簡単かって話じゃないの
それと同じことができるシェルスクリプトを書くのとMakefileを書くのとどっちが簡単かって話じゃないの
316デフォルトの名無しさん
2021/04/05(月) 13:07:34.94ID:i9PX2oQn 話題に挙がったついでだけどそこでtsortよ
ルールだけ抜き出して可視化しリファクタリングしなさい
ルールだけ抜き出して可視化しリファクタリングしなさい
317デフォルトの名無しさん
2021/04/05(月) 13:09:49.69ID:gsx4ZFoJ >>315
複雑なビルド工程をMakefileだと
・依存関係の定義として記述するのが正しいとされ、シェルスクリプトとしての柔軟性もないので
細切れのタスクが多数できてしまい、見づらくエスケープされたシェルスクリプト等を埋め込むことになる
と言ってます。
Makefileからシェルスクリプトを呼び出すんじゃなくて
シェルスクリプトから(必要な場合に必要な所だけ)makeを呼び出したほうがいいんだよ
そして大抵はmakeはいらない。多くの人がタスクランナーとして使ってるのはそういうこと
本当にmakeが必要なのは、C言語のような古い言語で、ヘッダファイルとソースファイルから
オブジェクトファイルを作ってリンクするような作業の部分だけでしょ?
つまり>>314に書いてあるタスクの殆どはmakeを使う必要がないってこと
複雑なビルド工程をMakefileだと
・依存関係の定義として記述するのが正しいとされ、シェルスクリプトとしての柔軟性もないので
細切れのタスクが多数できてしまい、見づらくエスケープされたシェルスクリプト等を埋め込むことになる
と言ってます。
Makefileからシェルスクリプトを呼び出すんじゃなくて
シェルスクリプトから(必要な場合に必要な所だけ)makeを呼び出したほうがいいんだよ
そして大抵はmakeはいらない。多くの人がタスクランナーとして使ってるのはそういうこと
本当にmakeが必要なのは、C言語のような古い言語で、ヘッダファイルとソースファイルから
オブジェクトファイルを作ってリンクするような作業の部分だけでしょ?
つまり>>314に書いてあるタスクの殆どはmakeを使う必要がないってこと
318デフォルトの名無しさん
2021/04/05(月) 13:28:19.87ID:qeGrbie0 >>317
見辛いシェルスクリプトコードならファイルにしたらええのに。w
見辛いシェルスクリプトコードならファイルにしたらええのに。w
319デフォルトの名無しさん
2021/04/05(月) 14:41:15.13ID:VlUSW8N+ そもそもシェルスクリプトでファイル間の依存関係を定義するのに疲れたから make が生まれたと思うんですけど...
あと Makefile があれば make install や make clean が存在するっていうのが分かるのがいいんだよ
プロジェクトごとにシェルスクリプトがあったらどういう引数で読んだらいいかとか分からないだろ?
あと Makefile があれば make install や make clean が存在するっていうのが分かるのがいいんだよ
プロジェクトごとにシェルスクリプトがあったらどういう引数で読んだらいいかとか分からないだろ?
320デフォルトの名無しさん
2021/04/05(月) 15:23:18.33ID:gsx4ZFoJ > そもそもシェルスクリプトでファイル間の依存関係を定義するのに疲れたから make が生まれたと思うんですけど...
そうだよ?タスクランナーではなく依存関係を定義するために作られたのがmakeだよ
最初からそう言ってるじゃん
そうだよ?タスクランナーではなく依存関係を定義するために作られたのがmakeだよ
最初からそう言ってるじゃん
321デフォルトの名無しさん
2021/04/05(月) 15:26:11.21ID:gsx4ZFoJ > プロジェクトごとにシェルスクリプトがあったらどういう引数で読んだらいいかとか分からないだろ?
俺はそれよりもmakeで実行できるタスクに何があるのかわからんのだがw
make --helpした所で表示されないしな
Makefileみればわかるって?それはソース見ればわかるって言ってるようなもんだし
依存関係を見たいんじゃなくて、makeで直接実行することを目的としたタスクの一覧が見たいんだよ
俺はそれよりもmakeで実行できるタスクに何があるのかわからんのだがw
make --helpした所で表示されないしな
Makefileみればわかるって?それはソース見ればわかるって言ってるようなもんだし
依存関係を見たいんじゃなくて、makeで直接実行することを目的としたタスクの一覧が見たいんだよ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- パワフル女性世界3位に高市首相 米誌フォーブス選出 [蚤の市★]
- 【S.RIDE】「忘年会の幹事ずるい」 ソニー系配車アプリの広告が物議…… 運営が謝罪「配慮に欠ける不適切な表現」掲出終了に [ぐれ★]
- 【米FRB】0.25%利下げ決定 3会合連続、雇用下支え [蚤の市★]
- テレ朝本社から社外スタッフの男性が転落し死亡 テレビ朝日がコメント [ひかり★]
- 【野球】日本ハム・水谷瞬、WBCイギリス代表入りか!? 父がナイジェリア出身 監督「手続き進めている」…単独取材に応じる [冬月記者★]
- アイヌ民族の「戸籍簿」がヤフオクで落札 団体「人権無視」と憤り [蚤の市★]
- 高市「野党はもう債権とか為替の話はしないで!よく分からないから答えない!」 [884040186]
- 夜勤から帰ってきたけど飯食って寝るだけ
- うんちでそぅ🥺
- いまインド人の間で「人気の移住先」は日本🇯🇵 彼らが「定住」を望む理由😳 [762037879]
- 【悲報】教育ママ「ギャオオオオオン!息子が大麻吸ってるのお!!」⇨中3の息子を警察に突き出し全てを終わらせる [455031798]
- Twitter医師ら「死ぬほど勉強して博愛精神求められるとかそらみんな美容外科なるわ。嫌なら普通の医療も保険診療廃止しろ!」 [762037879]
