1 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 05:22:16.82 .net] シェルスクリプトの総合スレです。 □お約束 ・特記なき場合は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 にまとめられています 最新の仕様はこちらへ pubs.opengroup.org/onlinepubs/9699919799/ (左上の「Shell & Utilities」 から参照することができます。) ・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。 src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/ heirloom.sourceforge.net/sh.html ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) ・シェルスクリプトのことをシェルってゆうな □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awkまたはperlの方が適した
2 名前:処理にはそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 □回答者への注意事項: ・シェルスクリプトでの処理方法を質問しているのに、よくわからずに 「そういうのはperl使いましょう」と回答するのはやめましょう。 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。 質問に対して問題が間違ってるといちゃもんをつけるのもやめましょう シェルスクリプト総合 その27 https://mevius.5ch.net/test/read.cgi/unix/1525337663/ mailto:シェルスクリプト総合 その28 [] [ここ壊れてます]
3 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 07:30:57.65 .net] その28は以下に移動しました。 シェルスクリプト総合 その28 mevius.5ch.net/test/read.cgi/tech/1532397676/
4 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:22:54.47 .net] FAQ Q. 秘密結社シェルショッカーってなんですか? A. しらん。どっかの変態団体やろ。近寄らんほうが良い。 Q. USP友の会ってなんですか? A. しらん。どっかの変態団体やろ。近寄らんほうが良い。 Q. シェル芸ってなんですか? A. しらん。ヲタ芸みたいなもんやろ。恥ずべきものや。 Q. ユニケージ開発手法ってなんですか? A. しらん。所でアプリの開発には普通のプログラム言語使ったほうが良いぞ
5 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:24:01.24 .net] シェルスクリプトの総合スレです。 初心者、学生、アマチュア、プロ、シェルの種類や 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 参照 )
6 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:24:52.02 .net] ★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 のシェルスクリプトは推奨されません。理由は下記を参照 www.speech-lab.org/~hiroki/csh-whynot.euc 9. cat file|すんなハゲ a. 詳細は "Useless Use of Cat" UUOC で検索して下さい b. 有用な場合も有ります Useful use of cat(1) 英文 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
7 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:25:30.27 .net] ★E. 学習用テキスト 1. Bourne Shell自習テキスト ( 1993年 ) pdf お薦め lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/ (↑サイト消滅かも) ayapin.film.s.dendai.ac.jp/~matuda/Lecture/PDF/sh-two.pdf 2. UNIX FAQ LIST www.nurs.or.jp/~asada/FAQ/UNIX/UNIX.FAQ.html (3. シェルを使おう - 導入からプログラミングまで - ( 2002年 ) www.netfort.gr.jp/~tomokuni/lms/shell/ (リンク切れ)) ★F. 参考リンク 1. 可搬性関連 a. autoconf マニュアル 移植性のあるシェルプログラム www.gnu.org/software/autoconf/manual/autoconf.html#Portable-Shell www.geocities.jp/fut_nis/html/autoconf-ja/Portable-Shell.html b. Portability talk [Bash Hackers Wiki] 英文 Obsolete and deprecated syntax も見る価値有り wiki.bash-hackers.org/scripting/nonportable c. How to make bash scripts work in dash 英文 mywiki.wooledge.org/Bashism d. DashAsBinSh 英文 https://wiki.ubuntu.com/DashAsBinSh e. Portable Shell Programming 英文 www.in-ulm.de/~mascheck/various/portability/
8 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:26:16.74 .net] 2. POSIX The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition 英文 pubs.opengroup.org/onlinepubs/9699919799/ 3. Traditional Bourne Shell 関連 a. The Traditional Bourne Shell Family History and Development 英文 www.in-ulm.de/~mascheck/bourne/ b. BourneShell / Where does the Bourne shell live? 英文 mywiki.wooledge.org/BourneShell c. The Heirloom Bourne Shell 英文 heirloom.sourceforge.net/ 4. マニュアル a. The Base Specifications Issue 7, 2013 Edition 英文 pubs.opengroup.org/onlinepubs/9699919799/nfindex.html b. FreeBSD 日本語マニュアル検索 www.jp.freebsd.org/man-jp/search.html c. JM Project (Japanese) linuxjm.sourceforge.jp/ 5. FAQ 等 a. UNIXの部屋 ( 2011年 ) x68000.q-e-d.net/~68user/unix/ b. Linux JF (Japanese FAQ) Project linuxjf.osdn.jp/ c. Advanced Bash-Scripting Guide 英文 www.tldp.org/LDP/abs/html/ d. Unix Programming FAQ 日本語訳 ( 2000年 ) www.race.u-tokyo.ac.jp/~moro/unix-programmer/
9 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:26:56.94 .net] 6. ツール a. web tool です。Vim syntastic や Emacs の Flycheck でも使えます ShellCheck 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. ☆シェルスクリプトを勉強するにあたって☆ hibari.2ch.net/test/read.cgi/unix/989659936/ 2. 便利なシェルスクリプト見せろ pc.2ch.net/test/read.cgi/unix/996949546/ 3. シェルスクリプト総合 その1 pc5.2ch.net/test/read.cgi/unix/1101820646/ 後略。検索して下さい
10 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:40:37.63 .net] ★H. 関連スレ(UNIX板/プログラム板) 1. sed mevius.5ch.net/test/read.cgi/unix/1085730992/ 2. 正規表現 mevius.5ch.net/test/read.cgi/unix/1039165754/ 3. Regular Expression(正規表現) Part14 mevius.5ch.net/test/read.cgi/tech/1489511075/ 4. 【モダン推奨】Perlについての質問箱 50箱目 mevius.5ch.net/test/read.cgi/tech/1327110999/ 5. ECMAScript デス 6 mevius.5ch.net/test/read.cgi/tech/1483332914/ 6. Ruby 初心者スレッド Part 63 mevius.5ch.net/test/read.cgi/tech/1523954817/ 7. Pythonのお勉強 Part57 mevius.5ch.net/test/read.cgi/tech/1529888279/ 8. 【node.js】サーバサイドjavascript 5【Nashorn】 mevius.5ch.net/test/read.cgi/tech/1518528093/ ★I. 現在評価待ち: X.n は予定した追加先。主にスレ立て人の判断保留用。
11 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 08:59:28.57 .net] このスレは手違いで作成されたものです。 前スレ mevius.5ch.net/test/read.cgi/unix/1525337663/941- の流れを読むとわかる通り、 ワッチョイをつけられる板に移動しようという話になり、 特に反対も出ず mevius.5ch.net/test/read.cgi/tech/1532397676/ への移動が決まりました。 このスレは利用せず、 mevius.5ch.net/test/read.cgi/tech/1532397676/ への移動をお願いします。
12 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 09:07:59.90 .net] 移りたい奴はさっさと移れよ もうここ来んな
13 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 09:21:20.82 .net] 移りたくない理由って、前スレで自演荒らししてたからってのしか思いつかない。 このスレを使いたい人間ってのが荒らしだとしたら、このスレを捨てるのが適切では?
14 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 10:08:56.08 .net] お前が今やってることが荒らしだろ さっさと移れよ
15 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 10:25:08.21 .net] >>13 移りたくないのであれば、前スレで反論する機会があったのに、 一言も反論せずにいきなりこのスレを建てたんだから、 どう考えてもあなたがスレ荒らしでしょう。
16 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 10:26:56.73 .net] シェルスクリプト総合 その28 mevius.5ch.net/test/read.cgi/tech/1532397676/ に移動してください
17 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 11:50:13.77 .net] 移りたかった奴らがいつまでも見てんなよ ここを荒らすな
18 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 11:51:21.90 .net] ここのことは忘れて移った先で楽しく過ごしてください もう構わないでね
19 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 12:36:09.60 .net] >>17 荒らしスレであることを知らずに迷いこむといけませんから、 知らずに書き込んだ可能性がある場合には、重複スレである旨の 注意書きを今後も投稿するつもりです。 荒らしスレであることを承知の上で書き込んでいるケースについては、 私は今後このスレに書きこみません。 他の人がどうするかは私には分かりませんが。
20 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 13:00:44.80 .net] 向こうのスレで、こっちにしつこく誘導しようとしてるなら非難されて仕方ないけど、そんなことしてる奴いないんだろ? 見てないから知らんが もうここは構ってくれなくていいって 余計なお世話だわ どんだけ暇人だよ
21 名前:名無しさん@お腹いっぱい。 [2018/08/05(日) 08:04:43.32 .net] fishをログインシェルとして使ってます zshの場合bindkey "\e[A" history-beginning-search-backward-end で数文字入力して上矢印キーを押すと直近の履歴から保管されますが fishでこれをしたい場合どうすればいいのでしょうか? fishだとデフォルトで右矢印キーがこの動作になるようですが これを上矢印キーにしたいところです。
22 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/05(日) 08:21:50.23 .net] ~ > 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
23 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/27(月) 12:16:09.32 .net] wgetを使ってシェルスクリプトでダウンロードツールを作ったんだけど ナロー回線だから出来るだけ無駄を省きたくて -cオプションで既存ダウンロード分に追記する形にしてる でも当然ならがコマンドが2重に発行されたらぐちゃぐちゃになるから psコマンドでwgetを2重発行しないようにしてるけどちょっと不安 実際一部の文字がpsコマンドで「?」表示されてgrepに掛からなかったことがあり ファイルが壊れたことがあった ぶっちゃけダウンロードしてるのはニコニコの動画であり (動画なんで視聴しないと壊れてるのかわからず厄介) ID_タイトル.mp4とかの形式で保存してるんだけど 問題はマルチバイト文字のタイトルだから 「grep "${id}.*${extention}"」として回避 実際はもうちょっとコマンドの詳細まで見てるけど こんな場合のベストってダウンロード先のファイル名に プロセスID(wgetを実行するシェルスクリプトのプロセスID)を含めるようにして 状況に応じてファイル名を変えながらwgetするくらいしかないのかな? 既存ダウンロード分のmvに成功したらwgetするとかで ファイルをロックする相当の処理を実現するイメージなんだけど ちなみにナローじゃない回線を使うことがあったり ダウンロード中に止まることがあるため 複数の動画を同時並行でダウンロードするつくりにしているため この問題はぜひとも回避したいです
24 名前:名無しさん@お腹いっぱい。 [2018/08/27(月) 12:48:42.73 .net] >>22 >複数の動画を同時並行でダウンロードするつくり なんでlockファイルで二重起動を防止しないのだろうと思ったら、 同時並列でwgetを実行したいけど、 1つの動画については多重実行されないようにしたい、ということか。 ニコニコのことはよく知らないけど、半角英数のIDが存在するなら、 wgetのダウンロード開始時に動画のIDのみを参照ファイルに書き込んで、 終了したらそのIDを消すようにして、IDが参照ファイルに書かれている間は、 そのファイルをダウンロードしないという仕組みにすればどうだろう。 でもそもそも > 実際一部の文字がpsコマンドで「?」表示されてgrepに掛からなかったことがあり これが分からん。idのみでgrepしたら文字化けしていてもヒットすると思うけど。
25 名前:名無しさん@お腹いっぱい。 [2018/08/27(月) 14:07:03.57 .net] >>22 ファイルがオープンされているかを調べれば良いと思う どうやるのかな lsof が使えるなら lsof -a -c '/^wget$/' "${filename}"
26 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/27(月) 14:33:46.01 .net] > ニコニコのことはよく知らないけど、半角英数のIDが存在するなら、 > wgetのダウンロード開始時に動画のIDのみを参照ファイルに書き込んで、 > 終了したらそのIDを消すようにして、IDが参照ファイルに書かれている間は、 > そのファイルをダウンロードしないという仕組みにすればどうだろう。 参照ファイルを参照してIDが無いことを確認してID書き込むまでの間に 同じ処理が走ったらチェック抜けてしまうなというのが懸案としてあります なのでダウンロードしているファイルそのものをロックファイルにして しかもmvコマンドの成否によって判断したらよいのではと午前中に思いました > でもそもそも > > 実際一部の文字がpsコマンドで「?」表示されてgrepに掛からなかったことがあり > これが分からん。idのみでgrepしたら文字化けしていてもヒットすると思うけど。 今はIDと拡張子でgrep掛けてるので問題ないのです (直近だと「禁書目録」がpsコマンドで「禁??録」になりプロセスチェックをスルーしていました) でも先の参照ファイルと同じで 同じ動画に対してほぼ同時にダウンロード処理が走った場合 psコマンドを実行してから実際にwgetコマンドを実行するまでの間に チェックを抜けてしまうことが考えられるのでどうにかしたいなと思ってます ちょっと後出しになって申し訳ないですが ダウンロードの処理はさまざまな状況で実行されることがあり これからダウンロードするぞってターミナルからコマンドを打つこともありますが cron登録していて自動でダウンロードが走るようにもしているため そういう適当な運用でも回避できればと考えています
27 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/27(月) 14:36:33.24 .net] >>24 ありがとうございます 試してみたいと思いますが lsof でチェックしてオープンされていないと判断して継続のwgetがオープンする間に 並行して実行された処理でwgetがオープンしてしまう可能性があるので・・・ シェルでやるには難しい処理でしょうか?
28 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/27(月) 14:38:01.66 .net] >>22 >>1-15 あたりをご覧になると分かりとおり、 このスレは荒らしが立てて維持しています。 特段の理由がなければ本スレ mevius.5ch.net/test/read.cgi/tech/1532397676/ の利用をお勧めします。
29 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/27(月) 15:17:33.08 .net] サーバーのサービスではなく、 ユーザは自分1人だよね。cronも動いているけど。 それなら、ミリ秒単位で処理開始がぶつかることなんて想定しなくてもよいのでは。 人命がかかっているような処理なら別だけど。
30 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/28(火) 06:51:31.61 .net] >>28 確かにそうですが方法が確立し実装してしまえば 動画を視聴してチェックと言う作業からほぼ解放されるので もうちょっとやってみます >>27 実装を試して相談したいことがあった場合検討してみます
31 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/28(火) 15:13:22.37 .net] ずっと楽をするために今努力して作りこむってのは間違っていない まあ出来ないと思うときは妥協は必要だが
32 名前:名無しさん@お腹いっぱい。 [2018/08/28(火) 15:25:38.94 .net] >>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
33 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/29(水) 09:19:34.39 .net] $ yotei.py 201808290900 って感じでスクリプトの引数に今日の年月日0900(date +%Y%m%d0900)を入れて実行したいです。 cronで実行したいのですが、date +%Y%m%d0900の出力をyotei.pyの引数に入れるには、1行でどうやって書いたらいいですか?
34 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/29(水) 09:26:24.72 .net] $ yotei.py namae 201808290900 だったので、2番目の引数にdate +%Y%m%d0900の出力を入れたいです。
35 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/29(水) 09:54:06.25 .net] すぐ思いついたのはシェルスクリプトを1個増やして以下のようにする export ymd0900=`date +%Y%m%d0900` yotei.py namae $ymd0900 それをcronから呼ぶ
36 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/29(水) 10:03:21.87 .net] >>33 https://ja.wikipedia.org/wiki/Crontab よくあるミス でそのもののようなのあるけど
37 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/29(水) 10:16:33.10 .net] >>34 >>35 どうもありがとうございます! ファイルを増やしたくなかったので1行でやりたかったんですが、ウィキペディアのその項目のとおり、エスケープ\を入れる事で1行で出来ました! yotei.py 名前 $(date +\%Y\%m\%d0900)
38 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/30(木) 20:22:06.89 .net] サマータイム導入に気をつけろよ ローカルタイム使ってると同じ日時が 2回でてくることになるぜ
39 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/31(金) 06:31:36.33 .net] EUじゃサマータイムは廃止だっていうのにマジで日本はこれから導入するのか? 趣味でプログラム作ってるだけなのに余計な処理増えるのはホント困る…。
40 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/09(日) 01:40:34.50 .net] >>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なんかは高速だけど年代で仕様が違う辺りエロサイトより酷い
41 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/09(日) 08:27:37.92 .net] 東京オリンピックまでにサマータイム導入 てのはどう考えても物理的に不可能だから 話は立ち消えになるだろうけど、将来、 導入されないとも限らない ローカルタイムを出力するときは必ず timezoneを付けておいたほうがいい
42 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/09(日) 12:38:12.16 .net] >>40 YAGNI。必要になってから対応するよw
43 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/09(日) 19:40:32.45 .net] あっちのスレめっちゃ荒れてるじゃん
44 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/10(月) 08:35:40.82 .net] >>40 どうやって対応したらよい?
45 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/10(月) 09:38:34.63 .net] >>42 このスレ立てた奴が荒らしに行ってるからな。 あっちの板に嫌がらせで重複スレまで立てるという性格の悪さ。 そういう悪人の立てたこのスレ使ってると、悪人の一味みたいな立ち位置に属することになるぜ。
46 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/10(月) 10:02:10.94 .net] >>43 要件による。どうしたらいいかは客にでも聞いてこい
47 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/10(月) 16:10:33.13 .net] ゴリホーモの嫌がらせ陰湿やなあ
48 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/10(月) 16:45:10.08 .net] なんのためにプログラム板に移動したんんだっけ? 人を増やすため?
49 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/10(月) 21:52:59.04 .net] >>47 前スレで荒らしが出たからIDやワッチョイをつけたかったんだけど、 UNIX板ではつけられなかったから。 で、荒らしはIDつくのが嫌で新スレが立った後からこのスレを立て(>>10-15 )、 さらには新スレを荒らしに行ってるってのが現状。
50 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/11(火) 12:13:26.79 .net] でもIDつくのが嫌だったんでしょう? IDつくのが嫌じゃなくなったってこと?
51 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/11(火) 13:49:11.52 .net] >>49 IDつくと自分が荒らしてることが分かるから嫌だったけど、 向こうのスレについてはスレ自体を敵視しているから、 自分が荒らしてることがバレバレであっても、スレを使いづらくしたい ってことじゃないかな。
52 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/11(火) 15:12:37.72 .net] でもこのスレも使いづらくしてたんでしょう?
53 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/11(火) 17:42:07.09 .net] >>51 ム板の本スレは意図的に荒らしてて(だからバレてもOK)、 前スレは天然で荒らしてる面がある(だからバレたくない) って程度の違いはありそうだね。
54 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/12(水) 04:28:30.52 .net] >>52 いやいや、単に荒らしは最初から隠すつもりもなく、 バレようがバレまいが関係ないんだよ。 荒らしにとってはは最初から隠してるわけでもないが、 でもこのスレの住民がその荒らしのIDを見たくて移動したんでしょ? それでんで、見て何がしたかったのか不明だけどなw IDが出ていれば荒らされないとでも思った?
55 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/12(水) 08:39:27.35 .net] >>53 荒らしさん、こんにちはー
56 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/12(水) 13:03:52.35 .net] >>54 はい、こんにちは。 やっと気づいた?w
57 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/12(水) 13:57:49.01 .net] IDを何に使うかなんて自明でしょ。 まさか分からないってことはないよな?
58 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/13(木) 04:39:22.11 .net] 荒らしをNGIDにして見えなくするため、という説がある 確かにNGIDにすると見えなくなるが、 荒らしの書き込みを止めることはできない 荒らしはどんどん自分の意見を書き込むが それに対しての反論はできない。 なぜなら荒らしの書き込みが見えないから 荒らしとNGIDに入れてない人とのやり取りでスレは埋まっていく はたから見れば、話についてこれず時々レスするが 荒らしに論破され何も言い返せない構図のできあがり それ全体の荒らしの濃度が高まる そしてIDは変わるから毎日の登録作業が増える。 忘れるとついレスをしてしまう
59 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/13(木) 09:15:51.30 .net] というわけで、以下のどっちかの運用にするのがよくあるパターンだな。 ・このIDは昔から粘着してる奴だから無視するぜってコメントを時々入れつつ無視する ・奇特な人物がいちいち反論するので、スレにいる他のメンバーは、連鎖アボーン設定して安心してその議論全体を無視する IDがないとこういう回避ができないから、ひたすら我慢することになる。
60 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/13(木) 15:25:23.10 .net] 連鎖あぼーんって荒らしが誰だれかれ構わずレスしたら みんな消えちゃうの?
61 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/13(木) 15:40:35.15 .net] それを荒らしにわざわざ教えてやる理由はないな。
62 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/13(木) 15:45:05.41 .net] お前が荒らしだろ
63 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/13(木) 15:45:42.12 .net] バレたかw
64 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/13(木) 15:46:13.40 .net] まあ回線切ってIPアドレスを変えればいいだけだしな
65 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/13(木) 20:00:10.94 .net] >>59 やってみればいいんじゃね?
66 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/13(木) 21:16:50.93 .net] つまりIDやIPアドレスを変えてNG避けする意志のある荒らしってことだから、 IPアドレスも表示させるようにして、 IPアドレスの範囲を使ってNG登録するのもやむなしってことだな。 今でも2つのプロバイダーを使い分けて自演してるって 自分でバラしてたから、NG登録する範囲も2通りは必要だと。
67 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/15(土) 09:20:57.31 .net] 特定文字列の除外リストを元に除外処理をしたいんだけど リストとかあきらめてgrepをフィルタファイルとして別するのが一番楽? やりたいのは以下のようなことなんだけど シェルスクリプトなのにプログラミング的なことやって grepのフィルタを組み立てることに違和感を感じてる(面倒とはっきり言えって?) echo ${DATA_REC} | grep -e AAA -e BBB -e CCC if [ $? -eq 0 ] then continue fi # 継続処理
68 名前:名無しさん@お腹いっぱい。 [2018/09/15(土) 09:24:06.05 .net] > grepをフィルタファイルとして別するのが一番楽? ってのはファイルにgrepのコマンドを書いてreadで読んで echo ${DATA_REC} ${grep_cmd} とかにするってことね grepコマンドが書かれてたら適用 書かれてなかったらスルーって感じ
69 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/15(土) 09:26:44.49 .net] ああパイプがうまくいかないから若干判定が必要か・・・ 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 $
70 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/15(土) 10:04:14.90 .net] もうベタで書いてしまった・・・ でも順調!すげーよく動いてる! この件は今後の課題にしよう
71 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/15(土) 11:49:54.77 .net] 除外する文字列をファイルに入れて grep -f か grep -v -f でいいような気がする
72 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/15(土) 12:13:24.53 .net] >>66 > シェルスクリプトなのにプログラミング的なことやって シェル芸じゃなくてスクリプトなんだから プログラミングで当たり前だよw
73 名前:71 mailto:sage [2018/09/15(土) 12:37:34.28 .net] >>67 少し考えてみたが、俺もgrepの-fオプションを利用するのが一番楽だと思うな ただ昔、除外リストの否定とかやりたかったんで書いたことはあるが
74 名前:71 mailto:sage [2018/09/15(土) 12:43:55.58 .net] grep -f 使えばいいから不要だが お手軽に>>66 のようなことをするのならこうかな リストにスペースなどが入っていたらうまくいかんがw 文字列の組み立ての参考として echo ${DATA_REC} | grep $(printf ' -e %s' $(cat list))
75 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/22(土) 07:11:59.06 .net] シェルスクリプトじゃなくてシェルの基礎を訊いてアレだけど bashの$()と``って使い分けた方がいいの? 端末ではバッククォート多用してるけども
76 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/22(土) 09:23:42.74 .net] ``は古い書き方。ネストができないという欠点が有る bashに限らず、$()を使ったほうが良い。欠点は文字が一文字多くなるだけ
77 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/09/22(土) 10:20:58.39 .net] きっちりエスケープすればネストはできるよ。もちろん推奨はせんが
78 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/10/07(日) 11:42:06.75 .net] >>74 mywiki.wooledge.org/BashFAQ/082
79 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/10/13(土) 19:33:57.01 .net] https://imgur.com/FAF05na.jpg
80 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/09(金) 16:05:12.56 .net] test $(date +%w) -eq 5 今日が金曜日なら5が出るんですが、-eq というのはコマンドなのかtestコマンドのオプションなのか、これは何ですか?
81 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/09(金) 16:08:05.57 .net] 自己レス -eq はtestコマンドのオプションで、==の事みたいですね
82 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/09(金) 16:09:52.77 .net] test コマンドの
83 名前:Iプションです。 ところで今日は金曜日ですが5は出ませんよね。 戻り値は0となりますが……何か勘違いしている気がします。 [] [ここ壊れてます]
84 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/09(金) 16:18:31.36 .net] すみません test $(date +%w) -eq 5 && echo "今日は金曜日!" これだと、金曜日だとechoが実行されました
85 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/09(金) 16:20:38.51 .net] >>82 自己レス 金曜日かどうか調べて金曜日なら戻り値は0、 で、戻り値が0の場合echoが実行されるって事ですね
86 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/09(金) 16:32:51.67 .net] 毎月第2月曜日と毎月第2週の月曜日とでは、指す日にちってもしかして異なります? 0 17 8-14 * test $(date +%w) -eq 5 && command こんな風にcronで毎月第2金曜日とか指定したいんですが、 例えば今月の5日で言うと、5日は1回目の月曜日だけど、月の2週目にあるので疑問に思いました。 0 17 8-14 * test $(date +%w) -eq 1 && command これだと今週の月曜日には実行するされないですよね?
87 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/10(土) 02:31:24.55 .net] 読みづらい。testなんて使うな [ $(date +%w) -eq 5 ] && echo "今日は金曜日!"
88 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/10(土) 10:01:16.06 .net] >>85 [ ]ってなんですか? ググろうにも記号なのでググれないです
89 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/10(土) 10:12:06.10 .net] man [
90 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/10(土) 18:00:25.18 .net] bash(バージョン 4.4.12(1)-release)でスクリプト書いててちょっと謎が $ a=1; b=2; [[ ${a}<=${b} ]]; echo $? こうするとちゃんと終了コードの0が返ってきますが $ a=1; b=2; [[ ${a} <= ${b} ]]; echo $? 比較演算子の前後にスペースを入れると「条件式に構文エラーがあります」「`${b}' 周辺に構文エラーがあります」と怒られます $ a=1; b=2; [[ ${a} < ${b} ]]; echo $? 比較演算子をleでなくltにするとまた0が返ります これって何故なんでしょう?
91 名前:名無しさん@お腹いっぱい。 [2018/11/10(土) 19:37:33.60 .net] >>88 [[ ... ]] で使える演算子に <= は存在しない それは数の比較ではなく [[ "1" < "=2" ]] という文字列の比較になっている なので <= の右に空白を置くと [[ "1" < "=" "2" ]] となりエラー 条件式 https://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html#lbBW
92 名前:88 mailto:sage [2018/11/10(土) 21:37:24.33 .net] >>89 さっそくありがとうございます そうか、イコールをつけない不等号で上手く動いてるように見えるのは、文字列として辞書順で比較してるからなんですね どうやら私の頭の中では、二重丸括弧での算術式展開とゴッチャになってたみたいです 何時間も唸ってたのが一撃でスッキリしました。ありがとうございました
93 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/10(土) 21:45:21.63 .net] 記号のコマンドってドットと[以外にもあるんか?
94 名前:名無しさん@お腹いっぱい。 [2018/11/10(土) 22:29:10.53 .net] >>91 :
95 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/11(日) 00:38:12.80 .net] >>87 もしかしてtestと[]はだいたい同じですか? testを使わない方がいいのはなぜなんでしょうか?
96 名前:名無しさん@お腹いっぱい。 [2018/11/11(日) 19:15:20.55 .net] r2.upup.be/wV2qsULdHm
97 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/11(日) 23:47:57.65 .net] >>87 それで出てくるのは /usr/bin[ の方のmanじゃないだろうか
98 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/15(木) 14:21:20.04 .net] bash の場合。 $ type [ [ is a shell builtin $ help [ [: [ arg... ] Evaluate conditional expression. This is a synonym for the "test" builtin, but the last argument must be a literal `]', to match the opening `['.
99 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/21(水) 22:42:24.51 .net] sedで\1を変数名としていっぺんに異なる部分を異なる変数の内容で変換できませんか? sed -e "s/<\(.*\)>/${\1}/g" こんなかんじの
100 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/11/29(木) 16:58:28.90 .net] #!/bin/bash # 変数UR