タグ

ブックマーク / qiita.com/richmikan@github (7)

  • [バグか仕様か?] FreeBSD /bin/shにおける-mオプションの挙動 - Qiita

    FreeBSDの/bin/shで、他実装とは違うヘンな挙動を見つけたのでメモ書き。 まずは、このテストコード(setm_test.sh)を書いてください。 #! /bin/sh set -m # ←コレをつけると不可解な動きをする # 終了時のトラップ設定 exit_trap() { trap INT echo "EXIT_TRAPPED" exit 1; } trap 'exit_trap' INT # メインルーチン(sleepを実行して終了を通知する) sleep 5 || echo $? echo "FINISH_SLEEPING" trap INT 冒頭に出てくる-mというオプションは、ジョブ制御を有効にするためのものです。具体的には、 ジョブ完了メッセージ(“[1] Done”のようなメッセ^時)が出る。(非対話のシェルスクリプトのデフォルトでは表示されない) fgコマンドのよ

    [バグか仕様か?] FreeBSD /bin/shにおける-mオプションの挙動 - Qiita
    labunix
    labunix 2016/09/11
  • /dev/stderr(/dev/std{in,out}も)は使うべきではない - Qiita

    実験してみよう Linuxで、一般ユーザー権限と、root権限のどちらも所有しているホストがある人は次の操作を試してみてもらいたい。 Using username "GENERAL_USER". ← 1)一般ユーザーでログイン GENERAL_USER@your.server's password: Last login: Mon Jul 13 00:00:00 2015 from your.client $ su - ← 2)rootになる Password: # su -m apache ← 3)別の一般ユーザー(例えばapache)になる bash: /root/.bashrc: Permission denied ← (とりあえずこのエラーは気にしない) $ echo HOGE >/dev/stderr ← 4)標準エラー出力に文字列を出力してみる ??? ← (果たしてどういう挙

    /dev/stderr(/dev/std{in,out}も)は使うべきではない - Qiita
    labunix
    labunix 2015/07/15
  • POSIX原理主義に基づく究極のスクレイピング - Qiita

    この投稿はクローラー/スクレイピング Advent Calendar 2014の12月25日用です。 199X年。核戦争によって荒廃した時代に、ジャギという男がいた。 「おいお前、普段使っているシェルの名前を言ってみろぉ」 弟ケンシロウに成りすまし、そう言っては、“Bourne Shell”と答えない平民達を虐殺するという悪行を繰り返していた。弟の名に頼り、銃に頼り、人質に頼り、含み針に頼り、そしてガソリンという切り札に頼ったその男は、己の肉体のみで闘う弟によって、無様な最期を遂げた。 さて題名にもあるとおり、この記事は「POSIX原理主義」、つまりUNIX系OS最小インストール時に使えるコマンドだけでスクレイピングします。立派な言語やライブラリーがあったらスゴいスクレイピングができて当たり前。それだと道具がスゴいだけで、「自分はノーアイデアです」と言っているようなものです。 しかしながら

    POSIX原理主義に基づく究極のスクレイピング - Qiita
    labunix
    labunix 2015/05/31
  • どのUNIXコマンドでも使える正規表現 - Qiita

    特定コマンドの正規表現で使えるメタ文字が何だかわからない! 正規表現自体は知っているけど、それが今から使おうとしているコマンドで使えるものなのかわからずに困っている人も多いと思うのでまとめてみた。 たった3つの正規表現メタ文字セットだけ知ればいい コマンドによって、対応している正規表現メタ文字の範囲には違いがある。しかし、最低限知っておけばよいのは2種類+1サブセットの3つだけだ。 BRE(基正規表現)メタ文字セット ERE(拡張正規表現)メタ文字セット AWKのサブセット もちろん、これ以外にもGNU拡張正規表現メタ文字セットやPerl拡張正規表現メタ文字セット、JavaScript拡張正規表現メタ文字セットなどいくつかあるのだが、「どのUNIXでも(=POSIXで)使える」という特長を持たせたいのであれば、それらは覚えても意味がないので上記の3つさえおさえておけばよい。(例えPOSI

    どのUNIXコマンドでも使える正規表現 - Qiita
    labunix
    labunix 2015/05/09
  • jq、xmllintコマンドさようなら。俺はパイプが好きだから - Qiita

    2016-09-15 New! この記事で紹介するコマンドの逆変換コマンド(JSONのみ)も作り、記事化しました。次の相手はjoです。 → joコマンドさようなら、俺はパイプが好きだから。PART 1 郵便番号→緯度経度→日の出時刻 コマンド jqやxmllintといったコマンドの使い勝手についカッとなって、独自JSON&XML解析コマンドと、その応用品“getsunrise.sh”を作った。なぜカッとなったのかは次のセクションで言いたい放題することにして、まぁとりあえず遊んでみてもらいたい。 curlとnkfが入っているUNIX環境ならほとんどの環境で動く。もちろん jqとかxmllintとか不要。JSONとXMLの解析はsedやAWKで済ませてる。 なのでこいつをダウンロードして、解凍・実行するだけだ。(コンパイルも不要) $ ./getsunrise.sh 288-0012 2014

    jq、xmllintコマンドさようなら。俺はパイプが好きだから - Qiita
    labunix
    labunix 2014/08/04
  • シェルスクリプトによるCGIのセッション管理 - Qiita

    シェルスクリプトでだってできるよ 私は普段から、シェルスクリプトでCGIスクリプトを組んでいるが、「えー、ウソでしょ。だってセッション管理とかできないでしょ?」と言われることがあり、ウソじゃないってという回答を兼ねてこのTipsを前々から書きたいと思っていた。 では早速、披露しよう。 動作デモ も用意したので、よろしければ試してもらいたい。 ソースコード #! /bin/sh # # シェルスクリプトでHTTPセッションを張るテスト # ・このシェルスクリプトを動かすには、標準UNIXコマンド以外に下記のものが必要 # - cgi-name (CGI変数を正規化する。Open usp Tukubaiコマンド) # https://github.com/usp-engineers-community/Open-usp-Tukubai/blob/master/COMMANDS.SH/cgi-n

    シェルスクリプトによるCGIのセッション管理 - Qiita
    labunix
    labunix 2014/02/02
  • sedコマンドで文字列を改行に置換する、しかもスマートに置換する。 - Qiita

    概要 sedコマンドで任意の文字列を改行に置換する方法 知ってはいるけど記述が汚いのでもっと綺麗に書きたい。 そもそも改行ってどーやるの? 例えば、\nって書いてあるところを全部物の改行に置換したいならこーやります。 sedの置換コマンド後半部分に、エスケープ用のバックスラッシュと、実際の改行コードを書くわけです。 でもこれって汚い!コマンドの途中で改行されちゃうのはイヤんな感じ。 スマートにいきましょ。 綺麗に書きたければ改行文字をシェル変数に入れておき、実際の改行を書く代わりに使えばいいのです。つまり、シェル変数$LFなどを作ってそこに'\'と'<0x0A>'の2文字を格納し、これを使えばいいのです。 まずは$LFに'\'と'<0x0A>'を入れましょ。 が!素直にはシェル変数には入ってくれません。 一筋縄ではいかない。 printfコマンドを使うとキーボードから打てないコントロール

    sedコマンドで文字列を改行に置換する、しかもスマートに置換する。 - Qiita
    labunix
    labunix 2012/09/04
  • 1