タグ

シェルスクリプトに関するozumaのブックマーク (36)

  • 環境に依存しないワンライナーを書くならsedよりperlの方がいい - Qiita

    まえがき sedで環境に依存しないワンライナーを書きたかったけど、BSDとGNUの実装で微妙に挙動が違うせいで難しかった。で、いっそのことperlで書いた方がいいのでは、という結論になった。ぐぐったらperlのワンライナーの書き方出てくるけど何でそう動くのか分からなかったのでそれも調べた。そこらへんについてまとめる。 GNU sedとBSD sedの違い、perlからsedへの乗り換え方簡易版、その詳細、という感じでまとめたので知りたいところからどうぞ。 sedにはGNU sedとBSD sedがある sedで とかしようとすると実行する環境によって失敗する。 sedにはBSDの実装とGNUの実装があるからだ。-EはBSD sedで拡張正規表現を使うオプションで、GNU sedで拡張正規表現を使いたければ-rを使う必要がある。 じゃあ拡張正規表現を使わずにデフォルトの正規表現を使えばいいの

    環境に依存しないワンライナーを書くならsedよりperlの方がいい - Qiita
  • c: c言語をスクリプト感覚で実行出来る様にするコマンド

    B! 92 0 0 0 PythonRubyなんかはShebangをファイルの先頭に書いておくと、 ファイルの実行権限を持っていれば内容をその言語のものとして読み取って実行してくれます。 これと同じような事をしてくれるコマンドが cです。 c Shebangを使って実行 コマンドとしてファイルを引数として渡して実行 その他出来るコト c cはファイルの中身を見ると結構単純なシェルスクリプトです。 中でccを使ってコンパイルして実行する、を一気にやってくれるわけです。 その際、実際の実行ファイルなんかは 一時ディレクトリ($C_CACHE_PATH or $TMPDIR or /tmp) に作られるのでまるでスクリプトを実行してる様な感じで コマンドが実行されます。 使うには上のレポジトリからcスクリプトを取ってきて適当なPATHの通った ディレクトリにインストールします。 Shebang

    c: c言語をスクリプト感覚で実行出来る様にするコマンド
  • sed コマンド | コマンドの使い方(Linux) | hydroculのメモ

    sed コマンド 2015/05/13 文字列を全置換したり、行単位で抽出したり、削除したり、いろいろなテキスト処理のできるコマンド。処理内容はコマンドラインパラメータで指定して、非対話的に一括処理できる。 sedで書ける処理であれば、処理内容にもよるが、perlのワンライナーで書くよりも速いことが多い。 sedというコマンド名は Stream EDitor の略らしい。 基的な使い方 2021/01/17 標準入力をなにかしら処理して標準出力に出力するので、パイプとして使える。まあたいていのUNIXツールはパイプとして使えるのだが。 ファイル名を指定すればそのファイルを読み込んで処理して標準出力に出力する。 ファイル名を指定してオプション -i を使えば、そのファイルを読み込んで、結果をそのファイルに上書きする。ファイル自体を編集したい場合には便利。(-i はGNU sed限定) 処理

  • 正規表現メモ

    \x{} \pは後続する名前が表すクラス(プロパティ、スクリプト、ブロック)に属する文字にマッチし、 \Pは後続する名前のクラスに属さない文字にマッチします。 クラスの名前が一文字のときはブレースを省略できます。 クラス名の前に^を置くことにより否定形の指定を行うことも可能です。 Perl 5.8 での変更点 Perl5.8以降(5.6でも使えたようですが)では \pや\Pで始まるプロパティ指定に標準Unicode属性を使うこともできます。 詳しくは perlunicode perlunicode - Perl における Unicode サポート を参照してください。 日語による説明が Unicodestandard にもあります。 Perl 5.8以降ではユーザーが任意のプロパティを作成することができます (IsまたはInを必ず前置)。 詳しくは perlunicode perluni

  • explainshell.com - match command-line arguments to their help text

    write down a command-line to see the help text that matches each argument

  • 安全に標準コマンドを置き換える - ももいろテクノロジー

    「cdの引数を絶対パスにしてコマンドヒストリに残す」のように標準コマンドを置き換える上で考えるべき、bashの仕組みについてのメモ。 環境 $ uname -a Linux vm-ubuntu64 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.1 LTS Release: 14.04 Codename: trusty $ bash --version GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)

    安全に標準コマンドを置き換える - ももいろテクノロジー
    ozuma
    ozuma 2014/12/12
  • コマンド実行でシェルが怖いなら使わなければいいじゃない - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog

    http://blog.ohgaki.net/os-command-escape-shell-spec-command-implementation 「えすけーぷじゅうよう!!」を強調して言いたいからなのかシェルの理解が足りないからなのか、 意図がよくわからない文言やら説明が散見されますが、きりがないのでそれらはスルーします。 (シェルについては、なんで関係ない tcsh の話が出てくるんだとか、 位置パラメーター展開に $* 使うなとか、色々) 特に気になったのが以下の文章です。(強調は私によるもの) OSコマンドはOSが提供するシェルで実行されます。 シェルはテキストインターフェースを持ち、 テキストでコマンドとオプションを受け取り実行します。 例示した脆弱なPHPプログラムの場合、 ユーザーからの入力に対しセキュリティ処理を一切してないため、 簡単にサーバーを乗っ取られる可能性があり

  • シェルスクリプトのオプション設計ガイドライン - Qiita

    僕はコマンドラインで使うシェルスクリプトを書くことがけっこうあるんだけど、インターフェイスというか呼び出し方はとても大事だと思ってるので、そこにわりと時間をかけて考えるようにしてる。実装はいつでも変更できるけど呼び出し方を変えた時は利用者にも変更を強いるので、できれば最初から良い設計で作りたいと思っている。 そこで、僕がシェルスクリプトのオプションとか引数とかの仕様を決める上で注意していることをまとめてみた。シェルスクリプトや、その他コマンドラインのツールを作るときに参考にしてほしい。 シェルの種類は bash や zsh を想定してるけど、実装によらない話なのでどんなシェルでも使えると思う。 エラーの時に Usage (使い方ヘルプメッセージ)を表示するのはやめる エラーになった時に Usage (使い方ヘルプメッセージ) を表示するスクリプトがあるけど、やめたほうがいいと思う。例えばこ

    シェルスクリプトのオプション設計ガイドライン - Qiita
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    ozuma
    ozuma 2014/02/04
    netstat -mとかmbuf clustersでメモリ
  • どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 - Qiita

    シェルスクリプトは環境依存が激しいから…… などとよく言われ、敬遠される。それなら共通しているものだけ使えばいいのだが、それについてまとめているところがなかなかないので作ってみることにした。 「どの環境でも使える=POSIXで定義されている」と定義 「どの環境でも使える」とは、なかなか定義が難しい。あまりこだわりすぎると「古いものも含め、既存のUNIX全てで使えるものでなければダメ」ということになってしまう。しかし、私個人としては 今も現役(=メンテナンスされている)のUNIX系OSで使いまわせること にこだわりたい。 とはいっても全てのOSやディストリビューションについて調べられるわけではないので、この記事では基的に最新のPOSIXで定義されていることをもって、どの環境でも使えると判断するようにした。(飽くまで「基的に」ということで) 従って、互換性確保のため、シェルの中で使ってよい

    どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 - Qiita
  • シェルスクリプトで役立つテキスト文字列のパターンマッチングの基礎

    シェルスクリプトで役立つテキスト文字列のパターンマッチングの基礎:Beginner's Guide(1/5 ページ) 効率的なシェルスクリプティングを行う上で、文字列にかんする操作は非常に重要な役割を果たす。稿では、これからシェルパターンや正規表現と呼ばれる強力なパターンマッチングを学ぼうとする方に向けたガイドをお届けする。 シェルプログラミングでは、文字列にかんする操作が大きな役割を果たすことになる。ここで言う文字列とは、連続した任意のキャラクタの並びで構成されるテキストのことで、具体例としてはインプットされるテキストやコマンドの引数などを考えればいい。そして、プロンプトへの応答入力、必要なファイル名の生成、コマンドの出力結果に対する処理を繰り返し実行させる際に必要となるのが、特定の文字列が特定のパターンと一致しているかという確認作業であり、これこそがパターンマッチングと呼ばれているプ

    シェルスクリプトで役立つテキスト文字列のパターンマッチングの基礎
  • リモートサーバにローカルスクリプトを流し込む時に引数渡す方法 - Thanks Driven Life

    題名のようにリモートとかローカルとかそれに限った話ではないんですが・・・ 最近、ようやく $ ssh hoge.sv 'sh' < $HOME/fuga.sh っていう技を知ってだいぶ便利便利してました。 そこで、ふと「引数有りのスクリプトはどうやって渡すのか」と思い、試してみました。 $ ssh hoge.sv 'sh' < $HOME/hago.sh 1 2 sh: 1: そのようなファイルやディレクトリはありません 余裕でだめでした。ですよね。 ということで正解?は下記でした。 $ ssh hoge.sv 'sh -s 1 2' < $HOME/hago.sh 「-s」ってあるのね。ちなみに気づけたのは rvm のインストール方法 のおかげでした。

    リモートサーバにローカルスクリプトを流し込む時に引数渡す方法 - Thanks Driven Life
  • All commands

    Other solutions that involve doing du -sx /* are incomplete because they will still descend other top-level filesystems are that mounted directly at "/" because the * expands to explicitly include all files and directories in "/", and du will still traverse them even with -x because you asked it to by supplying the directory name as a parameter (indirectly via "*"). Show Sample Output 4.0K /mnt 4.

  • シェルスクリプトの便利なワンライナー - Qiita

    要約 端末で一行でできる便利コマンドの組み合わせたちを紹介します。 登場コマンドは 6 つだけ: find, grep, sed, xargs, tree, watch 以下実例 [find] src/ 以下の、 .svn という名前の全ディレクトリを削除

    シェルスクリプトの便利なワンライナー - Qiita
    ozuma
    ozuma 2013/12/28
    watchとかfindとか
  • zsh を使って簡単に URL や HTML ファイルをブラウザで開く - Qiita

    # HTML ファイルがあったとして ... % ls index.html # それを直接指定する % index.html # index.html が Firefox で開かれる # または明示的に関数を指定してもOK。 % pick-web-browser index.html # ファイルとして存在しなくても、URLを開くこともできる。 % pick-web-browser "https://www.google.co.jp/search?q=zsh"

    zsh を使って簡単に URL や HTML ファイルをブラウザで開く - Qiita
  • linuxディレクトリ中のファイルサイズ合計値を バイト表示

    Landscape トップページ | < 前の日 2004-05-25 2004-05-26 次の日 2004-05-27 > Landscape - エンジニアのメモ 2004-05-26 ディレクトリ中のファイルサイズ合計値を バイト表示 当サイト内を Google 検索できます * ディレクトリ中のファイルサイズ合計値を バイト表示この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [シェルスクリプト] [unix] Windows では、ディレクトリのアイコンを右クリックしてプロパティを表示させると、そのディレクトリ以下のファイルのサイズの合計値がバイト単位で表示される。併せて、ファイル数やクラスタギャップを含めたディスク上のサイズも表示される。ちなみに、プロパティは ALT + ディレクトリアイコンのダブルクリックでも表示される。 Linux や Uni

  • なるべく書かないawkの使い方 - ザリガニが見ていた...。

    awkという、古くからのスクリプト言語がある。(1977年生まれ。読み方は「オーク」である。エイ・ダブリュ・ケイではない)man awkをPDFに変換してみると、たったの3ページ強しかない。 $ man -t awk|pstopdf -i -o ~/Downloads/awk.pdf とてもシンプルな言語仕様ではあるが、awkには必要十分な表現力がある。特にテキストを処理する場面においては、最小限のシンプルな記述で、気の利いた処理を素早くこなす。無駄のないawkワンライナーを見ると、ある種の感動を覚える。awk以降に生まれたスクリプト言語は、少なからずawkの影響を受けていると思われる。 awkを知ることで、間違いなく幸福度は上がると思う。いつかきっと「知ってて良かった」と思える時が来るはず。もっともっと、awkを知りたくなってきた。 基動作 awkの基動作は、とってもシンプルである。

    なるべく書かないawkの使い方 - ザリガニが見ていた...。
    ozuma
    ozuma 2013/12/09
    いいまとめー
  • 突然のTwitter砲にもなんとか耐えたさくらVPSに感謝する - As a Futurist...

    なんか、2/6 の夜に「修士論文の代わりに退学願を提出してきた」が Twitter でばずったらしく、Yahoo 砲よろしく突如としてアクセスが集中しました。下の方にリソースモニタリングのグラフを貼りつけてますが、今までがほぼ 0 に見えてしまうくらいに来てたのでびっくりでした。 まぁ色々コメントつけて頂いたりしてますが、もう2 年も前なんでこのエントリについて今更僕から突っ込むことは無くて、あのエントリはあのエントリとして見て頂ければと思います。ここでは今回そんな突然のアクセス集中にも見事耐えてくれたさくら VPS に感謝しつつ、アクセス集中の状況を鯖管的立場から分析してみましょう。 ちなみに、以前エントリに書いていますがサーバの構成としてはさくら VPS1 台で、CentOS+Apache+mod_fastcgi+PHP-FPM+MySQL5.5(InnoDB)で WordPress

    突然のTwitter砲にもなんとか耐えたさくらVPSに感謝する - As a Futurist...
  • 前月を知る - sh編 - (ひ)メモ

    shっていうかdateコマンドですけど。 安直に「1 month ago」でいいじゃん!と思った人は負けです(ぼくもですけど><)。 これはいいんだけど、 $ date '+%Y-%m-%d %T.%N'; date '+%Y-%m-%d %T.%N' -d '1 month ago' 2010-09-16 18:05:00.342008278 2010-08-16 18:05:00.344293593 このケースだと前月になってない # date 053100002010 >/dev/null; date '+%Y-%m-%d %T.%N'; date '+%Y-%m-%d %T.%N' -d '1 month ago' 2010-05-31 00:00:00.000000000 2010-05-01 00:00:00.004000016set $(date '+%Y %m') y=$1

    前月を知る - sh編 - (ひ)メモ
  • [bash][GNU date]エレガントに先月の初日と末日を出す方法 – (っ´∀`)っ ゃー | 一撃

    Tweet さっきのエントリで、for文使ったりパイプに渡すような書き方しちゃったけど、 早速 @chonan さんから ツッコミ が・・・(;゚Д゚) $ date --date="`date +%d` days ago" +%Y%m01 20110201 $ date --date="`date +%d` days ago" +%Y%m%d 20110228 $ date --date="`date +%d` days ago" +%Y/%m/01 2011/02/01 $ date --date="`date +%d` days ago" +%Y/%m/%d 2011/02/28 えらくシンプルにできました(;゚Д゚) タッタコレダケ ゼロパディングの影響を極力排除したいなら $ date --date="`date +%e` days ago" +%Y/%m/%d 2011/02