シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。
bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています
最新の仕様はこちらへ http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」 から参照することができます。)
・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。
http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
「そういうのはperl使いましょう」と回答するのはやめましょう。
安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
質問に対して問題が間違ってるといちゃもんをつけるのもやめましょう
シェルスクリプト総合 その27
https://mevius.5ch.net/test/read.cgi/unix/1525337663/
探検
シェルスクリプト総合 その28
■ このスレッドは過去ログ倉庫に格納されています
2018/08/02(木) 05:22:16.82
2018/08/02(木) 07:30:57.65
2018/08/02(木) 08:22:54.47
FAQ
Q. 秘密結社シェルショッカーってなんですか?
A. しらん。どっかの変態団体やろ。近寄らんほうが良い。
Q. USP友の会ってなんですか?
A. しらん。どっかの変態団体やろ。近寄らんほうが良い。
Q. シェル芸ってなんですか?
A. しらん。ヲタ芸みたいなもんやろ。恥ずべきものや。
Q. ユニケージ開発手法ってなんですか?
A. しらん。所でアプリの開発には普通のプログラム言語使ったほうが良いぞ
Q. 秘密結社シェルショッカーってなんですか?
A. しらん。どっかの変態団体やろ。近寄らんほうが良い。
Q. USP友の会ってなんですか?
A. しらん。どっかの変態団体やろ。近寄らんほうが良い。
Q. シェル芸ってなんですか?
A. しらん。ヲタ芸みたいなもんやろ。恥ずべきものや。
Q. ユニケージ開発手法ってなんですか?
A. しらん。所でアプリの開発には普通のプログラム言語使ったほうが良いぞ
2018/08/02(木) 08:24:01.24
シェルスクリプトの総合スレです。
初心者、学生、アマチュア、プロ、シェルの種類や OS を問いません。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずはテンプレートをご覧下さい。
★A. お約束
1. 特記なき場合は #!/bin/sh がデフォルトです。この場合可搬性に注意し、
Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。
bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。
良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。
2. 質問する前に、まず自分で調べましょう。ただし、
「聞くは一時の恥、聞かぬは一生の恥」です。積極的に参加しましょう。
3. 相手を侮辱する発言、失礼な発言は差し控え、知的な議論を楽しみましょう。
4. 他者には様々な環境や事情、目的が有る事に留意し、無下に扱う様な発言は
控えましょう。
★B. お約束の補足
1. macOS では、/bin/sh の実体は bash です。また、一般的に BSD 系 や
GNU/Linux の方は、/bin/sh がシンボリックリンクですので、注意して下さい。
ls (ハイフン)l /bin/sh や readlink -e /bin/sh で確かめて下さい。
2. 可搬性については、下記 F.1 を参照して下さい。
3. POSIX については、man 7 standards や下記 F.2 ( の特に Shell & Utilities )
を参照して下さい。
4. Traditional Bourne Shell とは、UNIX Version 7 から SVR4.2 の /bin/sh を元に
小さなの改変を加え主に商用 UNIX で残されているものです。( 下記 F.3 参照 )
5. Traditional Bourne Shell で入手しやすい sh は、後期 SVR4.0 から派生し、
SunOS 5 / OpenSolaris を経た、Heirloom Bourne Shell です。
SVR4 / SVID3 相当です。同様の Unix utilities も扱っています。
( 下記 F.3 参照 )
初心者、学生、アマチュア、プロ、シェルの種類や OS を問いません。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずはテンプレートをご覧下さい。
★A. お約束
1. 特記なき場合は #!/bin/sh がデフォルトです。この場合可搬性に注意し、
Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。
bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。
良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。
2. 質問する前に、まず自分で調べましょう。ただし、
「聞くは一時の恥、聞かぬは一生の恥」です。積極的に参加しましょう。
3. 相手を侮辱する発言、失礼な発言は差し控え、知的な議論を楽しみましょう。
4. 他者には様々な環境や事情、目的が有る事に留意し、無下に扱う様な発言は
控えましょう。
★B. お約束の補足
1. macOS では、/bin/sh の実体は bash です。また、一般的に BSD 系 や
GNU/Linux の方は、/bin/sh がシンボリックリンクですので、注意して下さい。
ls (ハイフン)l /bin/sh や readlink -e /bin/sh で確かめて下さい。
2. 可搬性については、下記 F.1 を参照して下さい。
3. POSIX については、man 7 standards や下記 F.2 ( の特に Shell & Utilities )
を参照して下さい。
4. Traditional Bourne Shell とは、UNIX Version 7 から SVR4.2 の /bin/sh を元に
小さなの改変を加え主に商用 UNIX で残されているものです。( 下記 F.3 参照 )
5. Traditional Bourne Shell で入手しやすい sh は、後期 SVR4.0 から派生し、
SunOS 5 / OpenSolaris を経た、Heirloom Bourne Shell です。
SVR4 / SVID3 相当です。同様の Unix utilities も扱っています。
( 下記 F.3 参照 )
2018/08/02(木) 08:24:52.02
★C. 初心者へのアドバイス
1. シェルスクリプトのことをシェルってゆーな
2. 知らないコマンドが出てきたら man コマンドで調べましょう。
3. UNIX には、シェルスクリプトに便利な小さなコマンドが色々あります。
apropos ないしは man -k でそれらしい単語による簡単な検索もできます。
4. シェルの構文や内部コマンドは man sh で。英語は LANG=C man shで。
5. 思い通りに動かないときは、まずは #!/bin/sh -x でトレースしましょう。
6. 適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awk / perl / javascript / ruby / python 等、他の (スクリプト) 言語の方が
適した処理にはそちらを使いましょう。
7. シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題は正規表現スレへ
8. csh / tcsh のシェルスクリプトは推奨されません。理由は下記を参照
http://www.speech-lab.org/~hiroki/csh-whynot.euc
9. cat file|すんなハゲ
a. 詳細は "Useless Use of Cat" UUOC で検索して下さい
b. 有用な場合も有ります Useful use of cat(1) 英文
http://www.in-ulm.de/~mascheck/various/uuoc/
★D. シェルスクリプトでよく使うコマンド
1. 制御・条件判定系: [, test, expr, true, false, yes, getopts
2. テキスト処理系: cat, awk, sed, tr, sort, uniq, grep, wc, head, tail, cut,
paste, comm, join
3. ファイル検索系: find ( スペースなどを含むファイル名を正しく処理するため、
find は -exec command {} + を推奨。
他に -print0、xargs は -0 オプションという方法もあるが Solaris 非対応 )
4. ディレクトリ系: basename, dirname
5. 出力系: echo, printf
6. 対話コマンド制御系: expect
7. http / ftp の処理自動化: wget, curl
1. シェルスクリプトのことをシェルってゆーな
2. 知らないコマンドが出てきたら man コマンドで調べましょう。
3. UNIX には、シェルスクリプトに便利な小さなコマンドが色々あります。
apropos ないしは man -k でそれらしい単語による簡単な検索もできます。
4. シェルの構文や内部コマンドは man sh で。英語は LANG=C man shで。
5. 思い通りに動かないときは、まずは #!/bin/sh -x でトレースしましょう。
6. 適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awk / perl / javascript / ruby / python 等、他の (スクリプト) 言語の方が
適した処理にはそちらを使いましょう。
7. シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題は正規表現スレへ
8. csh / tcsh のシェルスクリプトは推奨されません。理由は下記を参照
http://www.speech-lab.org/~hiroki/csh-whynot.euc
9. cat file|すんなハゲ
a. 詳細は "Useless Use of Cat" UUOC で検索して下さい
b. 有用な場合も有ります Useful use of cat(1) 英文
http://www.in-ulm.de/~mascheck/various/uuoc/
★D. シェルスクリプトでよく使うコマンド
1. 制御・条件判定系: [, test, expr, true, false, yes, getopts
2. テキスト処理系: cat, awk, sed, tr, sort, uniq, grep, wc, head, tail, cut,
paste, comm, join
3. ファイル検索系: find ( スペースなどを含むファイル名を正しく処理するため、
find は -exec command {} + を推奨。
他に -print0、xargs は -0 オプションという方法もあるが Solaris 非対応 )
4. ディレクトリ系: basename, dirname
5. 出力系: echo, printf
6. 対話コマンド制御系: expect
7. http / ftp の処理自動化: wget, curl
2018/08/02(木) 08:25:30.27
★E. 学習用テキスト
1. Bourne Shell自習テキスト ( 1993年 ) pdf お薦め
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/
(↑サイト消滅かも)
http://ayapin.film.s.dendai.ac.jp/~matuda/Lecture/PDF/sh-two.pdf
2. UNIX FAQ LIST
http://www.nurs.or.jp/~asada/FAQ/UNIX/UNIX.FAQ.html
(3. シェルを使おう - 導入からプログラミングまで - ( 2002年 )
http://www.netfort.gr.jp/~tomokuni/lms/shell/ (リンク切れ))
★F. 参考リンク
1. 可搬性関連
a. autoconf マニュアル 移植性のあるシェルプログラム
http://www.gnu.org/software/autoconf/manual/autoconf.html#Portable-Shell
http://www.geocities.jp/fut_nis/html/autoconf-ja/Portable-Shell.html
b. Portability talk [Bash Hackers Wiki] 英文
Obsolete and deprecated syntax も見る価値有り
http://wiki.bash-hackers.org/scripting/nonportable
c. How to make bash scripts work in dash 英文
http://mywiki.wooledge.org/Bashism
d. DashAsBinSh 英文
https://wiki.ubuntu.com/DashAsBinSh
e. Portable Shell Programming 英文
http://www.in-ulm.de/~mascheck/various/portability/
1. Bourne Shell自習テキスト ( 1993年 ) pdf お薦め
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/
(↑サイト消滅かも)
http://ayapin.film.s.dendai.ac.jp/~matuda/Lecture/PDF/sh-two.pdf
2. UNIX FAQ LIST
http://www.nurs.or.jp/~asada/FAQ/UNIX/UNIX.FAQ.html
(3. シェルを使おう - 導入からプログラミングまで - ( 2002年 )
http://www.netfort.gr.jp/~tomokuni/lms/shell/ (リンク切れ))
★F. 参考リンク
1. 可搬性関連
a. autoconf マニュアル 移植性のあるシェルプログラム
http://www.gnu.org/software/autoconf/manual/autoconf.html#Portable-Shell
http://www.geocities.jp/fut_nis/html/autoconf-ja/Portable-Shell.html
b. Portability talk [Bash Hackers Wiki] 英文
Obsolete and deprecated syntax も見る価値有り
http://wiki.bash-hackers.org/scripting/nonportable
c. How to make bash scripts work in dash 英文
http://mywiki.wooledge.org/Bashism
d. DashAsBinSh 英文
https://wiki.ubuntu.com/DashAsBinSh
e. Portable Shell Programming 英文
http://www.in-ulm.de/~mascheck/various/portability/
2018/08/02(木) 08:26:16.74
2. POSIX
The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition 英文
http://pubs.opengroup.org/onlinepubs/9699919799/
3. Traditional Bourne Shell 関連
a. The Traditional Bourne Shell Family History and Development 英文
http://www.in-ulm.de/~mascheck/bourne/
b. BourneShell / Where does the Bourne shell live? 英文
http://mywiki.wooledge.org/BourneShell
c. The Heirloom Bourne Shell 英文
http://heirloom.sourceforge.net/
4. マニュアル
a. The Base Specifications Issue 7, 2013 Edition 英文
http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
b. FreeBSD 日本語マニュアル検索
http://www.jp.freebsd.org/man-jp/search.html
c. JM Project (Japanese)
http://linuxjm.sourceforge.jp/
5. FAQ 等
a. UNIXの部屋 ( 2011年 )
http://x68000.q-e-d.net/~68user/unix/
b. Linux JF (Japanese FAQ) Project
http://linuxjf.osdn.jp/
c. Advanced Bash-Scripting Guide 英文
http://www.tldp.org/LDP/abs/html/
d. Unix Programming FAQ 日本語訳 ( 2000年 )
http://www.race.u-tokyo.ac.jp/~moro/unix-programmer/
The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition 英文
http://pubs.opengroup.org/onlinepubs/9699919799/
3. Traditional Bourne Shell 関連
a. The Traditional Bourne Shell Family History and Development 英文
http://www.in-ulm.de/~mascheck/bourne/
b. BourneShell / Where does the Bourne shell live? 英文
http://mywiki.wooledge.org/BourneShell
c. The Heirloom Bourne Shell 英文
http://heirloom.sourceforge.net/
4. マニュアル
a. The Base Specifications Issue 7, 2013 Edition 英文
http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
b. FreeBSD 日本語マニュアル検索
http://www.jp.freebsd.org/man-jp/search.html
c. JM Project (Japanese)
http://linuxjm.sourceforge.jp/
5. FAQ 等
a. UNIXの部屋 ( 2011年 )
http://x68000.q-e-d.net/~68user/unix/
b. Linux JF (Japanese FAQ) Project
http://linuxjf.osdn.jp/
c. Advanced Bash-Scripting Guide 英文
http://www.tldp.org/LDP/abs/html/
d. Unix Programming FAQ 日本語訳 ( 2000年 )
http://www.race.u-tokyo.ac.jp/~moro/unix-programmer/
2018/08/02(木) 08:26:56.94
6. ツール
a. web tool です。Vim syntastic や Emacs の Flycheck でも使えます
ShellCheck
http://www.shellcheck.net/about.html
b. vim 用 syntastic
https://github.com/scrooloose/syntastic
c. checkbashisms も使用してチェック duggan/shlint GitHub
https://github.com/duggan/shlint
★G. 前スレ
1. ☆シェルスクリプトを勉強するにあたって☆
http://hibari.2ch.net/test/read.cgi/unix/989659936/
2. 便利なシェルスクリプト見せろ
http://pc.2ch.net/test/read.cgi/unix/996949546/
3. シェルスクリプト総合 その1
http://pc5.2ch.net/test/read.cgi/unix/1101820646/
後略。検索して下さい
a. web tool です。Vim syntastic や Emacs の Flycheck でも使えます
ShellCheck
http://www.shellcheck.net/about.html
b. vim 用 syntastic
https://github.com/scrooloose/syntastic
c. checkbashisms も使用してチェック duggan/shlint GitHub
https://github.com/duggan/shlint
★G. 前スレ
1. ☆シェルスクリプトを勉強するにあたって☆
http://hibari.2ch.net/test/read.cgi/unix/989659936/
2. 便利なシェルスクリプト見せろ
http://pc.2ch.net/test/read.cgi/unix/996949546/
3. シェルスクリプト総合 その1
http://pc5.2ch.net/test/read.cgi/unix/1101820646/
後略。検索して下さい
2018/08/02(木) 08:40:37.63
★H. 関連スレ(UNIX板/プログラム板)
1. sed
http://mevius.5ch.net/test/read.cgi/unix/1085730992/
2. 正規表現
http://mevius.5ch.net/test/read.cgi/unix/1039165754/
3. Regular Expression(正規表現) Part14
http://mevius.5ch.net/test/read.cgi/tech/1489511075/
4. 【モダン推奨】Perlについての質問箱 50箱目
http://mevius.5ch.net/test/read.cgi/tech/1327110999/
5. ECMAScript デス 6
http://mevius.5ch.net/test/read.cgi/tech/1483332914/
6. Ruby 初心者スレッド Part 63
http://mevius.5ch.net/test/read.cgi/tech/1523954817/
7. Pythonのお勉強 Part57
http://mevius.5ch.net/test/read.cgi/tech/1529888279/
8. 【node.js】サーバサイドjavascript 5【Nashorn】
http://mevius.5ch.net/test/read.cgi/tech/1518528093/
★I. 現在評価待ち: X.n は予定した追加先。主にスレ立て人の判断保留用。
1. sed
http://mevius.5ch.net/test/read.cgi/unix/1085730992/
2. 正規表現
http://mevius.5ch.net/test/read.cgi/unix/1039165754/
3. Regular Expression(正規表現) Part14
http://mevius.5ch.net/test/read.cgi/tech/1489511075/
4. 【モダン推奨】Perlについての質問箱 50箱目
http://mevius.5ch.net/test/read.cgi/tech/1327110999/
5. ECMAScript デス 6
http://mevius.5ch.net/test/read.cgi/tech/1483332914/
6. Ruby 初心者スレッド Part 63
http://mevius.5ch.net/test/read.cgi/tech/1523954817/
7. Pythonのお勉強 Part57
http://mevius.5ch.net/test/read.cgi/tech/1529888279/
8. 【node.js】サーバサイドjavascript 5【Nashorn】
http://mevius.5ch.net/test/read.cgi/tech/1518528093/
★I. 現在評価待ち: X.n は予定した追加先。主にスレ立て人の判断保留用。
2018/08/02(木) 08:59:28.57
このスレは手違いで作成されたものです。
前スレ
http://mevius.5ch.net/test/read.cgi/unix/1525337663/941-
の流れを読むとわかる通り、
ワッチョイをつけられる板に移動しようという話になり、
特に反対も出ず
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
への移動が決まりました。
このスレは利用せず、
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
への移動をお願いします。
前スレ
http://mevius.5ch.net/test/read.cgi/unix/1525337663/941-
の流れを読むとわかる通り、
ワッチョイをつけられる板に移動しようという話になり、
特に反対も出ず
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
への移動が決まりました。
このスレは利用せず、
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
への移動をお願いします。
2018/08/02(木) 09:07:59.90
移りたい奴はさっさと移れよ
もうここ来んな
もうここ来んな
2018/08/02(木) 09:21:20.82
移りたくない理由って、前スレで自演荒らししてたからってのしか思いつかない。
このスレを使いたい人間ってのが荒らしだとしたら、このスレを捨てるのが適切では?
このスレを使いたい人間ってのが荒らしだとしたら、このスレを捨てるのが適切では?
2018/08/02(木) 10:08:56.08
お前が今やってることが荒らしだろ
さっさと移れよ
さっさと移れよ
2018/08/02(木) 10:25:08.21
2018/08/02(木) 10:26:56.73
2018/08/02(木) 11:50:13.77
移りたかった奴らがいつまでも見てんなよ
ここを荒らすな
ここを荒らすな
2018/08/02(木) 11:51:21.90
ここのことは忘れて移った先で楽しく過ごしてください
もう構わないでね
もう構わないでね
2018/08/02(木) 12:36:09.60
>>17
荒らしスレであることを知らずに迷いこむといけませんから、
知らずに書き込んだ可能性がある場合には、重複スレである旨の
注意書きを今後も投稿するつもりです。
荒らしスレであることを承知の上で書き込んでいるケースについては、
私は今後このスレに書きこみません。
他の人がどうするかは私には分かりませんが。
荒らしスレであることを知らずに迷いこむといけませんから、
知らずに書き込んだ可能性がある場合には、重複スレである旨の
注意書きを今後も投稿するつもりです。
荒らしスレであることを承知の上で書き込んでいるケースについては、
私は今後このスレに書きこみません。
他の人がどうするかは私には分かりませんが。
2018/08/02(木) 13:00:44.80
向こうのスレで、こっちにしつこく誘導しようとしてるなら非難されて仕方ないけど、そんなことしてる奴いないんだろ?
見てないから知らんが
もうここは構ってくれなくていいって
余計なお世話だわ
どんだけ暇人だよ
見てないから知らんが
もうここは構ってくれなくていいって
余計なお世話だわ
どんだけ暇人だよ
20名無しさん@お腹いっぱい。
2018/08/05(日) 08:04:43.32 fishをログインシェルとして使ってます
zshの場合bindkey "\e[A" history-beginning-search-backward-end
で数文字入力して上矢印キーを押すと直近の履歴から保管されますが
fishでこれをしたい場合どうすればいいのでしょうか?
fishだとデフォルトで右矢印キーがこの動作になるようですが
これを上矢印キーにしたいところです。
zshの場合bindkey "\e[A" history-beginning-search-backward-end
で数文字入力して上矢印キーを押すと直近の履歴から保管されますが
fishでこれをしたい場合どうすればいいのでしょうか?
fishだとデフォルトで右矢印キーがこの動作になるようですが
これを上矢印キーにしたいところです。
2018/08/05(日) 08:21:50.23
~ > bind|grep search-back
bind \e\eOA history-token-search-backward
bind \e\e\[A history-token-search-backward
bind \eO3A history-token-search-backward
bind \e\[3A history-token-search-backward
bind \e\[1\;3A history-token-search-backward
bind \e\[1\;9A history-token-search-backward
bind \e. history-token-search-backward
bind \eo history-token-search-backward
bind \e\eOA history-token-search-backward
bind \e\e\[A history-token-search-backward
bind \eO3A history-token-search-backward
bind \e\[3A history-token-search-backward
bind \e\[1\;3A history-token-search-backward
bind \e\[1\;9A history-token-search-backward
bind \e. history-token-search-backward
bind \eo history-token-search-backward
2018/08/27(月) 12:16:09.32
wgetを使ってシェルスクリプトでダウンロードツールを作ったんだけど
ナロー回線だから出来るだけ無駄を省きたくて
-cオプションで既存ダウンロード分に追記する形にしてる
でも当然ならがコマンドが2重に発行されたらぐちゃぐちゃになるから
psコマンドでwgetを2重発行しないようにしてるけどちょっと不安
実際一部の文字がpsコマンドで「?」表示されてgrepに掛からなかったことがあり
ファイルが壊れたことがあった
ぶっちゃけダウンロードしてるのはニコニコの動画であり
(動画なんで視聴しないと壊れてるのかわからず厄介)
ID_タイトル.mp4とかの形式で保存してるんだけど
問題はマルチバイト文字のタイトルだから
「grep "${id}.*${extention}"」として回避
実際はもうちょっとコマンドの詳細まで見てるけど
こんな場合のベストってダウンロード先のファイル名に
プロセスID(wgetを実行するシェルスクリプトのプロセスID)を含めるようにして
状況に応じてファイル名を変えながらwgetするくらいしかないのかな?
既存ダウンロード分のmvに成功したらwgetするとかで
ファイルをロックする相当の処理を実現するイメージなんだけど
ちなみにナローじゃない回線を使うことがあったり
ダウンロード中に止まることがあるため
複数の動画を同時並行でダウンロードするつくりにしているため
この問題はぜひとも回避したいです
ナロー回線だから出来るだけ無駄を省きたくて
-cオプションで既存ダウンロード分に追記する形にしてる
でも当然ならがコマンドが2重に発行されたらぐちゃぐちゃになるから
psコマンドでwgetを2重発行しないようにしてるけどちょっと不安
実際一部の文字がpsコマンドで「?」表示されてgrepに掛からなかったことがあり
ファイルが壊れたことがあった
ぶっちゃけダウンロードしてるのはニコニコの動画であり
(動画なんで視聴しないと壊れてるのかわからず厄介)
ID_タイトル.mp4とかの形式で保存してるんだけど
問題はマルチバイト文字のタイトルだから
「grep "${id}.*${extention}"」として回避
実際はもうちょっとコマンドの詳細まで見てるけど
こんな場合のベストってダウンロード先のファイル名に
プロセスID(wgetを実行するシェルスクリプトのプロセスID)を含めるようにして
状況に応じてファイル名を変えながらwgetするくらいしかないのかな?
既存ダウンロード分のmvに成功したらwgetするとかで
ファイルをロックする相当の処理を実現するイメージなんだけど
ちなみにナローじゃない回線を使うことがあったり
ダウンロード中に止まることがあるため
複数の動画を同時並行でダウンロードするつくりにしているため
この問題はぜひとも回避したいです
23名無しさん@お腹いっぱい。
2018/08/27(月) 12:48:42.73 >>22
>複数の動画を同時並行でダウンロードするつくり
なんでlockファイルで二重起動を防止しないのだろうと思ったら、
同時並列でwgetを実行したいけど、
1つの動画については多重実行されないようにしたい、ということか。
ニコニコのことはよく知らないけど、半角英数のIDが存在するなら、
wgetのダウンロード開始時に動画のIDのみを参照ファイルに書き込んで、
終了したらそのIDを消すようにして、IDが参照ファイルに書かれている間は、
そのファイルをダウンロードしないという仕組みにすればどうだろう。
でもそもそも
> 実際一部の文字がpsコマンドで「?」表示されてgrepに掛からなかったことがあり
これが分からん。idのみでgrepしたら文字化けしていてもヒットすると思うけど。
>複数の動画を同時並行でダウンロードするつくり
なんでlockファイルで二重起動を防止しないのだろうと思ったら、
同時並列でwgetを実行したいけど、
1つの動画については多重実行されないようにしたい、ということか。
ニコニコのことはよく知らないけど、半角英数のIDが存在するなら、
wgetのダウンロード開始時に動画のIDのみを参照ファイルに書き込んで、
終了したらそのIDを消すようにして、IDが参照ファイルに書かれている間は、
そのファイルをダウンロードしないという仕組みにすればどうだろう。
でもそもそも
> 実際一部の文字がpsコマンドで「?」表示されてgrepに掛からなかったことがあり
これが分からん。idのみでgrepしたら文字化けしていてもヒットすると思うけど。
24名無しさん@お腹いっぱい。
2018/08/27(月) 14:07:03.572018/08/27(月) 14:33:46.01
> ニコニコのことはよく知らないけど、半角英数のIDが存在するなら、
> wgetのダウンロード開始時に動画のIDのみを参照ファイルに書き込んで、
> 終了したらそのIDを消すようにして、IDが参照ファイルに書かれている間は、
> そのファイルをダウンロードしないという仕組みにすればどうだろう。
参照ファイルを参照してIDが無いことを確認してID書き込むまでの間に
同じ処理が走ったらチェック抜けてしまうなというのが懸案としてあります
なのでダウンロードしているファイルそのものをロックファイルにして
しかもmvコマンドの成否によって判断したらよいのではと午前中に思いました
> でもそもそも
> > 実際一部の文字がpsコマンドで「?」表示されてgrepに掛からなかったことがあり
> これが分からん。idのみでgrepしたら文字化けしていてもヒットすると思うけど。
今はIDと拡張子でgrep掛けてるので問題ないのです
(直近だと「禁書目録」がpsコマンドで「禁??録」になりプロセスチェックをスルーしていました)
でも先の参照ファイルと同じで
同じ動画に対してほぼ同時にダウンロード処理が走った場合
psコマンドを実行してから実際にwgetコマンドを実行するまでの間に
チェックを抜けてしまうことが考えられるのでどうにかしたいなと思ってます
ちょっと後出しになって申し訳ないですが
ダウンロードの処理はさまざまな状況で実行されることがあり
これからダウンロードするぞってターミナルからコマンドを打つこともありますが
cron登録していて自動でダウンロードが走るようにもしているため
そういう適当な運用でも回避できればと考えています
> wgetのダウンロード開始時に動画のIDのみを参照ファイルに書き込んで、
> 終了したらそのIDを消すようにして、IDが参照ファイルに書かれている間は、
> そのファイルをダウンロードしないという仕組みにすればどうだろう。
参照ファイルを参照してIDが無いことを確認してID書き込むまでの間に
同じ処理が走ったらチェック抜けてしまうなというのが懸案としてあります
なのでダウンロードしているファイルそのものをロックファイルにして
しかもmvコマンドの成否によって判断したらよいのではと午前中に思いました
> でもそもそも
> > 実際一部の文字がpsコマンドで「?」表示されてgrepに掛からなかったことがあり
> これが分からん。idのみでgrepしたら文字化けしていてもヒットすると思うけど。
今はIDと拡張子でgrep掛けてるので問題ないのです
(直近だと「禁書目録」がpsコマンドで「禁??録」になりプロセスチェックをスルーしていました)
でも先の参照ファイルと同じで
同じ動画に対してほぼ同時にダウンロード処理が走った場合
psコマンドを実行してから実際にwgetコマンドを実行するまでの間に
チェックを抜けてしまうことが考えられるのでどうにかしたいなと思ってます
ちょっと後出しになって申し訳ないですが
ダウンロードの処理はさまざまな状況で実行されることがあり
これからダウンロードするぞってターミナルからコマンドを打つこともありますが
cron登録していて自動でダウンロードが走るようにもしているため
そういう適当な運用でも回避できればと考えています
2018/08/27(月) 14:36:33.24
>>24
ありがとうございます
試してみたいと思いますが
lsof でチェックしてオープンされていないと判断して継続のwgetがオープンする間に
並行して実行された処理でwgetがオープンしてしまう可能性があるので・・・
シェルでやるには難しい処理でしょうか?
ありがとうございます
試してみたいと思いますが
lsof でチェックしてオープンされていないと判断して継続のwgetがオープンする間に
並行して実行された処理でwgetがオープンしてしまう可能性があるので・・・
シェルでやるには難しい処理でしょうか?
2018/08/27(月) 14:38:01.66
>>22
>>1-15 あたりをご覧になると分かりとおり、
このスレは荒らしが立てて維持しています。
特段の理由がなければ本スレ
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
の利用をお勧めします。
>>1-15 あたりをご覧になると分かりとおり、
このスレは荒らしが立てて維持しています。
特段の理由がなければ本スレ
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
の利用をお勧めします。
2018/08/27(月) 15:17:33.08
サーバーのサービスではなく、
ユーザは自分1人だよね。cronも動いているけど。
それなら、ミリ秒単位で処理開始がぶつかることなんて想定しなくてもよいのでは。
人命がかかっているような処理なら別だけど。
ユーザは自分1人だよね。cronも動いているけど。
それなら、ミリ秒単位で処理開始がぶつかることなんて想定しなくてもよいのでは。
人命がかかっているような処理なら別だけど。
2018/08/28(火) 06:51:31.61
2018/08/28(火) 15:13:22.37
ずっと楽をするために今努力して作りこむってのは間違っていない
まあ出来ないと思うときは妥協は必要だが
まあ出来ないと思うときは妥協は必要だが
31名無しさん@お腹いっぱい。
2018/08/28(火) 15:25:38.94 >>26
ファイルに対応する「ロックファイル」を作って、その存在確認をするのが定石だったみたい
既にロックファイルが存在していたら、別のプロセスがファイルを使っていると見做す
その際ロックファイルの存在確認と作成を「同時」(アトミック)に行うのが大事だそうで
そのファイル、安全にロックできていますか?(アトミックなファイル操作:後編)
https://heartbeats.jp/hbblog/2013/10/atomic03.html
こんな感じかな
lockfile="${outputfile}".lock
if ln -s -- $$ "${lockfile}" 2>/dev/null; then
(
unlock() { rm -- "${lockfile}"; }
trap "unlock" EXIT HUP INT QUIT SEGV TERM
wget -c -O "${outputfile}" "${url}"
) &
fi
ファイルに対応する「ロックファイル」を作って、その存在確認をするのが定石だったみたい
既にロックファイルが存在していたら、別のプロセスがファイルを使っていると見做す
その際ロックファイルの存在確認と作成を「同時」(アトミック)に行うのが大事だそうで
そのファイル、安全にロックできていますか?(アトミックなファイル操作:後編)
https://heartbeats.jp/hbblog/2013/10/atomic03.html
こんな感じかな
lockfile="${outputfile}".lock
if ln -s -- $$ "${lockfile}" 2>/dev/null; then
(
unlock() { rm -- "${lockfile}"; }
trap "unlock" EXIT HUP INT QUIT SEGV TERM
wget -c -O "${outputfile}" "${url}"
) &
fi
2018/08/29(水) 09:19:34.39
$ yotei.py 201808290900
って感じでスクリプトの引数に今日の年月日0900(date +%Y%m%d0900)を入れて実行したいです。
cronで実行したいのですが、date +%Y%m%d0900の出力をyotei.pyの引数に入れるには、1行でどうやって書いたらいいですか?
って感じでスクリプトの引数に今日の年月日0900(date +%Y%m%d0900)を入れて実行したいです。
cronで実行したいのですが、date +%Y%m%d0900の出力をyotei.pyの引数に入れるには、1行でどうやって書いたらいいですか?
2018/08/29(水) 09:26:24.72
$ yotei.py namae 201808290900
だったので、2番目の引数にdate +%Y%m%d0900の出力を入れたいです。
だったので、2番目の引数にdate +%Y%m%d0900の出力を入れたいです。
2018/08/29(水) 09:54:06.25
すぐ思いついたのはシェルスクリプトを1個増やして以下のようにする
export ymd0900=`date +%Y%m%d0900`
yotei.py namae $ymd0900
それをcronから呼ぶ
export ymd0900=`date +%Y%m%d0900`
yotei.py namae $ymd0900
それをcronから呼ぶ
2018/08/29(水) 10:03:21.87
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 反撃の中居正広、一世一代の大勝負へ 元フジ女性アナとは「合意の上での性行為だった」と認識 ★17 [Ailuropoda melanoleuca★]
- 【埼玉】「大丈夫、と言ったのでその場から離れた」 男児4人重軽傷のひき逃げ事件で車を運転していた42歳の中国籍の男逮捕 三郷市 [ぐれ★]
- 【野球】セ・リーグ G 4-7 D [5/18] 中日3年ぶり4本塁打!山本2発、板山2ラン、ボスラー2ラン、松葉6回4失点 巨人3連勝ならず [鉄チーズ烏★]
- 機動戦士ガンダム最新作『GQuuuuuuX(ジークアクス)』乃木坂46ネタで炎上 監督の鶴巻和哉氏は乃木坂ファン ★5 [Anonymous★]
- 突出して低い日本女性の賃金 経済の停滞や少子化にも影響 ★2 [ぐれ★]
- 【日産】従業員「ショック」 諦めも… 神奈川の“日産城下町” 活気失い [煮卵★]
- ナザレンコさん、弱小アカウントのアンチコメにも丁寧に返信 [834922174]
- 自民・森山幹事長「消費税減税を否定する。ポピュリズムの政治をしてしまっては、国は持たない。つけは全て国民に返っていく」 [256556981]
- 【画像】百田尚樹の演説に1200人以上のウヨが集結wwwwwwwwwwwwwww [834922174]
- 永野芽郁、芸能界追放 [918862327]
- 消費税減税「食品だけ」33%、「一律」25%、「廃止」14%、「反対」16% [256556981]
- 週末最後のお🏡