シェルスクリプトの総合スレです。
□お約束
・特記なき場合は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
2018/08/29(水) 10:16:33.10
2018/08/30(木) 20:22:06.89
サマータイム導入に気をつけろよ
ローカルタイム使ってると同じ日時が
2回でてくることになるぜ
ローカルタイム使ってると同じ日時が
2回でてくることになるぜ
2018/08/31(金) 06:31:36.33
EUじゃサマータイムは廃止だっていうのにマジで日本はこれから導入するのか?
趣味でプログラム作ってるだけなのに余計な処理増えるのはホント困る…。
趣味でプログラム作ってるだけなのに余計な処理増えるのはホント困る…。
2018/09/09(日) 01:40:34.50
>>22
youtube-dlならニコニコにも対応してるしタイトルとIDそのままで保存できるよ
但しここ数年の動画はDL速度が極端に遅い上に途中で必ず落ちる
[download] 5.6% of 202.83MiB at 98.22KiB/s ETA 33:15[download] Got server HTTP error: Downloaded 12014750 bytes, expected 212678720 bytes. Retrying (attempt 1 of 10)...
ERROR: unable to download video data: HTTP Error 403: Forbidden
永続リトライ設定でもこうなるししmpvでも再生中断するからな
昔のflvなんかは高速だけど年代で仕様が違う辺りエロサイトより酷い
youtube-dlならニコニコにも対応してるしタイトルとIDそのままで保存できるよ
但しここ数年の動画はDL速度が極端に遅い上に途中で必ず落ちる
[download] 5.6% of 202.83MiB at 98.22KiB/s ETA 33:15[download] Got server HTTP error: Downloaded 12014750 bytes, expected 212678720 bytes. Retrying (attempt 1 of 10)...
ERROR: unable to download video data: HTTP Error 403: Forbidden
永続リトライ設定でもこうなるししmpvでも再生中断するからな
昔のflvなんかは高速だけど年代で仕様が違う辺りエロサイトより酷い
2018/09/09(日) 08:27:37.92
東京オリンピックまでにサマータイム導入
てのはどう考えても物理的に不可能だから
話は立ち消えになるだろうけど、将来、
導入されないとも限らない
ローカルタイムを出力するときは必ず
timezoneを付けておいたほうがいい
てのはどう考えても物理的に不可能だから
話は立ち消えになるだろうけど、将来、
導入されないとも限らない
ローカルタイムを出力するときは必ず
timezoneを付けておいたほうがいい
2018/09/09(日) 12:38:12.16
>>40
YAGNI。必要になってから対応するよw
YAGNI。必要になってから対応するよw
2018/09/09(日) 19:40:32.45
あっちのスレめっちゃ荒れてるじゃん
2018/09/10(月) 08:35:40.82
>>40
どうやって対応したらよい?
どうやって対応したらよい?
2018/09/10(月) 09:38:34.63
>>42
このスレ立てた奴が荒らしに行ってるからな。
あっちの板に嫌がらせで重複スレまで立てるという性格の悪さ。
そういう悪人の立てたこのスレ使ってると、悪人の一味みたいな立ち位置に属することになるぜ。
このスレ立てた奴が荒らしに行ってるからな。
あっちの板に嫌がらせで重複スレまで立てるという性格の悪さ。
そういう悪人の立てたこのスレ使ってると、悪人の一味みたいな立ち位置に属することになるぜ。
2018/09/10(月) 10:02:10.94
>>43
要件による。どうしたらいいかは客にでも聞いてこい
要件による。どうしたらいいかは客にでも聞いてこい
2018/09/10(月) 16:10:33.13
ゴリホーモの嫌がらせ陰湿やなあ
2018/09/10(月) 16:45:10.08
なんのためにプログラム板に移動したんんだっけ?
人を増やすため?
人を増やすため?
2018/09/10(月) 21:52:59.04
2018/09/11(火) 12:13:26.79
でもIDつくのが嫌だったんでしょう?
IDつくのが嫌じゃなくなったってこと?
IDつくのが嫌じゃなくなったってこと?
2018/09/11(火) 13:49:11.52
>>49
IDつくと自分が荒らしてることが分かるから嫌だったけど、
向こうのスレについてはスレ自体を敵視しているから、
自分が荒らしてることがバレバレであっても、スレを使いづらくしたい
ってことじゃないかな。
IDつくと自分が荒らしてることが分かるから嫌だったけど、
向こうのスレについてはスレ自体を敵視しているから、
自分が荒らしてることがバレバレであっても、スレを使いづらくしたい
ってことじゃないかな。
2018/09/11(火) 15:12:37.72
でもこのスレも使いづらくしてたんでしょう?
2018/09/11(火) 17:42:07.09
2018/09/12(水) 04:28:30.52
>>52
いやいや、単に荒らしは最初から隠すつもりもなく、
バレようがバレまいが関係ないんだよ。
荒らしにとってはは最初から隠してるわけでもないが、
でもこのスレの住民がその荒らしのIDを見たくて移動したんでしょ?
それでんで、見て何がしたかったのか不明だけどなw
IDが出ていれば荒らされないとでも思った?
いやいや、単に荒らしは最初から隠すつもりもなく、
バレようがバレまいが関係ないんだよ。
荒らしにとってはは最初から隠してるわけでもないが、
でもこのスレの住民がその荒らしのIDを見たくて移動したんでしょ?
それでんで、見て何がしたかったのか不明だけどなw
IDが出ていれば荒らされないとでも思った?
2018/09/12(水) 08:39:27.35
>>53
荒らしさん、こんにちはー
荒らしさん、こんにちはー
2018/09/12(水) 13:03:52.35
2018/09/12(水) 13:57:49.01
IDを何に使うかなんて自明でしょ。
まさか分からないってことはないよな?
まさか分からないってことはないよな?
2018/09/13(木) 04:39:22.11
荒らしをNGIDにして見えなくするため、という説がある
確かにNGIDにすると見えなくなるが、
荒らしの書き込みを止めることはできない
荒らしはどんどん自分の意見を書き込むが
それに対しての反論はできない。
なぜなら荒らしの書き込みが見えないから
荒らしとNGIDに入れてない人とのやり取りでスレは埋まっていく
はたから見れば、話についてこれず時々レスするが
荒らしに論破され何も言い返せない構図のできあがり
それ全体の荒らしの濃度が高まる
そしてIDは変わるから毎日の登録作業が増える。
忘れるとついレスをしてしまう
確かにNGIDにすると見えなくなるが、
荒らしの書き込みを止めることはできない
荒らしはどんどん自分の意見を書き込むが
それに対しての反論はできない。
なぜなら荒らしの書き込みが見えないから
荒らしとNGIDに入れてない人とのやり取りでスレは埋まっていく
はたから見れば、話についてこれず時々レスするが
荒らしに論破され何も言い返せない構図のできあがり
それ全体の荒らしの濃度が高まる
そしてIDは変わるから毎日の登録作業が増える。
忘れるとついレスをしてしまう
2018/09/13(木) 09:15:51.30
というわけで、以下のどっちかの運用にするのがよくあるパターンだな。
・このIDは昔から粘着してる奴だから無視するぜってコメントを時々入れつつ無視する
・奇特な人物がいちいち反論するので、スレにいる他のメンバーは、連鎖アボーン設定して安心してその議論全体を無視する
IDがないとこういう回避ができないから、ひたすら我慢することになる。
・このIDは昔から粘着してる奴だから無視するぜってコメントを時々入れつつ無視する
・奇特な人物がいちいち反論するので、スレにいる他のメンバーは、連鎖アボーン設定して安心してその議論全体を無視する
IDがないとこういう回避ができないから、ひたすら我慢することになる。
2018/09/13(木) 15:25:23.10
連鎖あぼーんって荒らしが誰だれかれ構わずレスしたら
みんな消えちゃうの?
みんな消えちゃうの?
2018/09/13(木) 15:40:35.15
それを荒らしにわざわざ教えてやる理由はないな。
2018/09/13(木) 15:45:05.41
お前が荒らしだろ
2018/09/13(木) 15:45:42.12
バレたかw
2018/09/13(木) 15:46:13.40
まあ回線切ってIPアドレスを変えればいいだけだしな
2018/09/13(木) 20:00:10.94
>>59
やってみればいいんじゃね?
やってみればいいんじゃね?
2018/09/13(木) 21:16:50.93
つまりIDやIPアドレスを変えてNG避けする意志のある荒らしってことだから、
IPアドレスも表示させるようにして、
IPアドレスの範囲を使ってNG登録するのもやむなしってことだな。
今でも2つのプロバイダーを使い分けて自演してるって
自分でバラしてたから、NG登録する範囲も2通りは必要だと。
IPアドレスも表示させるようにして、
IPアドレスの範囲を使ってNG登録するのもやむなしってことだな。
今でも2つのプロバイダーを使い分けて自演してるって
自分でバラしてたから、NG登録する範囲も2通りは必要だと。
2018/09/15(土) 09:20:57.31
特定文字列の除外リストを元に除外処理をしたいんだけど
リストとかあきらめてgrepをフィルタファイルとして別するのが一番楽?
やりたいのは以下のようなことなんだけど
シェルスクリプトなのにプログラミング的なことやって
grepのフィルタを組み立てることに違和感を感じてる(面倒とはっきり言えって?)
echo ${DATA_REC} | grep -e AAA -e BBB -e CCC
if [ $? -eq 0 ]
then
continue
fi
# 継続処理
リストとかあきらめてgrepをフィルタファイルとして別するのが一番楽?
やりたいのは以下のようなことなんだけど
シェルスクリプトなのにプログラミング的なことやって
grepのフィルタを組み立てることに違和感を感じてる(面倒とはっきり言えって?)
echo ${DATA_REC} | grep -e AAA -e BBB -e CCC
if [ $? -eq 0 ]
then
continue
fi
# 継続処理
67名無しさん@お腹いっぱい。
2018/09/15(土) 09:24:06.05 > grepをフィルタファイルとして別するのが一番楽?
ってのはファイルにgrepのコマンドを書いてreadで読んで
echo ${DATA_REC} ${grep_cmd}
とかにするってことね
grepコマンドが書かれてたら適用
書かれてなかったらスルーって感じ
ってのはファイルにgrepのコマンドを書いてreadで読んで
echo ${DATA_REC} ${grep_cmd}
とかにするってことね
grepコマンドが書かれてたら適用
書かれてなかったらスルーって感じ
2018/09/15(土) 09:26:44.49
ああパイプがうまくいかないから若干判定が必要か・・・
pi@melchior /tmp $ export grep_cmd=" | grep -e AA -e BB"
pi@melchior /tmp $ echo AAA $grep_cmd
AAA | grep -e AA -e BB
pi@melchior /tmp $ echo AAA | $grep_cmd
-bash: |: command not found
pi@melchior /tmp $ export grep_cmd=" grep -e AA -e BB"
pi@melchior /tmp $ echo AAA | $grep_cmd
AAA
pi@melchior /tmp $
pi@melchior /tmp $ export grep_cmd=" | grep -e AA -e BB"
pi@melchior /tmp $ echo AAA $grep_cmd
AAA | grep -e AA -e BB
pi@melchior /tmp $ echo AAA | $grep_cmd
-bash: |: command not found
pi@melchior /tmp $ export grep_cmd=" grep -e AA -e BB"
pi@melchior /tmp $ echo AAA | $grep_cmd
AAA
pi@melchior /tmp $
2018/09/15(土) 10:04:14.90
もうベタで書いてしまった・・・
でも順調!すげーよく動いてる!
この件は今後の課題にしよう
でも順調!すげーよく動いてる!
この件は今後の課題にしよう
2018/09/15(土) 11:49:54.77
除外する文字列をファイルに入れて
grep -f か grep -v -f でいいような気がする
grep -f か grep -v -f でいいような気がする
2018/09/15(土) 12:13:24.53
7271
2018/09/15(土) 12:37:34.28■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 事実上の減反政策を法定化へ 農水省方針 「需要に応じた生産」推進 [蚤の市★]
- 【このハゲーっ!】参政党・豊田真由子氏がまたもや“事件”を起こしていた! 「要望が通らないと態度を豹変させ、大声を張り上げて…」 [ぐれ★]
- 【自民党】所得税の増税、27年実施を検討 防衛力強化の財源に [Hitzeschleier★]
- 高市早苗首相、人口減少問題で「地方は東京を見習って」発言に違和感 鳥取・平井知事、県議会で言及 ★3 [Hitzeschleier★]
- 【TBS】良原安美アナ、TBS退社を発表 「年内のオンエアをもって全ての番組を卒業し、2026年1月、TBSテレビを退社します」 元ミス立大 [冬月記者★]
- フジテレビ F1地上波放送11年ぶり復活へ 26年シーズンから最大5戦 [征夷大将軍★]
- 🐼仏と中、パンダ協力延長決定!ヤフウヨ民大発狂開始www [194819832]
- 高市「ひらめいた!東京の税収を地方に配分するわ」 [219241683]
- なか卯に毎朝行くんやが
- 日本人「AIで失業?ないない(笑)日本人を舐めるな😡」 AIに対する楽観姿勢、先進国で異例。 [271912485]
- 【美しい国へ】高市「給食費無償化はムリ!」「防衛特別所得税(仮称)を新設」 [219241683]
- 【悲報】所得税増税、2027年1月からWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
