タグ

shellに関するyogoのブックマーク (23)

  • これだけ覚えておけばOK!シェルスクリプトで冪等性を担保するためのTips集 - Qiita

    「シェルスクリプトって冪等性ないじゃないですか」 そんなことをよく耳にします。しかし、if文を入れるだけで簡単に冪等性を担保したシェルスクリプトを書くことができます。 今回は、私が使う条件式を紹介します。基的な形式なものなので、組み合わせると幅が広がりますよっ! ファイル/フォルダ関係 ファイルの存在確認 -e 'ファイル名'で「ファイル名」が存在しているかチェックします。 if [ -e 'ファイル名' ]; then # ファイル/フォルダが存在していれば、ファイル/フォルダを削除するなど rm ファイル名 fi

    これだけ覚えておけばOK!シェルスクリプトで冪等性を担保するためのTips集 - Qiita
    yogo
    yogo 2016/09/28
  • "shove" というシェルスクリプト用のテストツールを作った - weblog of key_amb

    CONTENTS: "shove" とは Motivation こんなツールにしたい 使い方について 中で何をやっているのか おわりに "shove" とは こちらです。 github.com 動作イメージとしては README.md にも貼っているスクリーンショットがわかりやすいと思うので、こちらにも貼ります。 成功時: 失敗時: 上のようにテストスクリプトを引数に与えて shove コマンドを実行すると、テストを実行して結果を出力してくれます。 Perl Monger のみなさんは「proveっぽい」と思っていただけたでしょうか。 そうです。名前の "shove" は "shell" + "prove" を縮めたものです。 bash だけでなく、ksh, dash, zsh など POSIX を満たしているシェルに対応できるように作りました。 $SHELL 変数の値と異なるシェルでテス

    "shove" というシェルスクリプト用のテストツールを作った - weblog of key_amb
  • bash の脆弱性 "Shell Shock" のめっちゃ細かい話 (CVE-2014-6271) - もろず blog

    ※(2014/10/1 追記) 脆弱性の番号を誤って CVE-2014-6721 と表記してしまっていました 正しくは "CVE-2014-6271" です 失礼致しました ※(2014/10/7 追記) 2014/10/7 14:00時点で Shell Shock への修正パッチは6個 公開されています 既に対応済みのシステムでもパッチの漏れがないか注意してください シェルに脆弱性が見つかったらしいです このコマンドを実行すると脆弱性があるバージョンかのチェックができるようです $ env x='() { :;}; echo vulnerable' bash -c "echo this is a test" 以下のように表示されたらアウトです vulnerable this is a test どうやら、このコマンドが正常に実行できるというのがこの脆弱性の正体らしく、 echo vuln

    bash の脆弱性 "Shell Shock" のめっちゃ細かい話 (CVE-2014-6271) - もろず blog
  • シェルスクリプトのオプション設計ガイドライン - Qiita

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

    シェルスクリプトのオプション設計ガイドライン - Qiita
    yogo
    yogo 2014/05/21
  • 使いやすいシェルスクリプトを書く

    できればシェルスクリプトなんて書きたくないんだけど,まだまだ書く機会は多い.シェル芸やワンライナーのような凝ったことではなく,他のひとが使いやすいシェルスクリプトを書くために自分が実践していることをまとめておく. ヘルプメッセージ 書いてるシェルスクリプトが使い捨てではなく何度も使うものである場合は,体を書き始める前に,そのスクリプトの使い方を表示するusage関数を書いてしまう. これを書いておくと,後々チームへ共有がしやすくなる.とりあえずusage見てくださいと言える.また,あらかじめ書くことで,単なるシェルスクリプトであっても自分の中で動作を整理してから書き始めることができる.関数として書くのは,usageを表示してあげるとよい場面がいくつかあり,使い回すことができるため. 以下のように書く. function usage { cat <<EOF $(basename ${0})

  • Shell Scripts vs Ansible: Fight!

    Note: In this article, I talk mostly about Shell Scripts as the enemy. However, in practice, there are much worse offenders like not using any kind of script or not even having a checklist or any documentation whatsoever. Surprise After writing my book on configuration management (CM) tools, I sent out review copies to about 20 people, including some very well-known developers. What really surpris

  • Writing Robust Bash Shell Scripts - David Pashley.com

    Many people hack together shell scripts quickly to do simple tasks, but these soon take on a life of their own. Unfortunately shell scripts are full of subtle effects which result in scripts failing in unusual ways. It’s possible to write scripts which minimise these problems. In this article, I explain several techniques for writing robust bash scripts. How often have you written a script that br

  • Advanced Bash-Scripting Guide

    This tutorial assumes no previous knowledge of scripting or programming, yet progresses rapidly toward an intermediate/advanced level of instruction . . . all the while sneaking in little nuggets of UNIX® wisdom and lore. It serves as a textbook, a manual for self-study, and as a reference and source of knowledge on shell scripting techniques. The exercises and heavily-commented examples invite ac

  • シェルスクリプトを書くときに気をつける9箇条 - Qiita

    最新の類似投稿としてシェルスクリプトのコーディングルール2014も併せてどうぞ。 2014/10/09追記 ぼくがシェルスクリプトを書くときに気にしていること、過去の失敗で書き留めたことを忘れないために。 1. グローバル変数は大文字 PATH や HOME など、環境変数が大文字なので、エクスポートする変数を大文字で書くという習慣は一般的であるような気がしますが、エクスポートする変数を抱えるシェルスクリプトを作成する機会が稀なので。 グローバル変数は大文字 ローカル変数は小文字 エクスポートする変数も大文字 関数内からグローバル変数にアクセスする場合がありますが、やはり区別していると、可読性が増すような気がするのでお勧めです。 2. awk を知る Unix 上にて文書処理をするときに、数多くのフィルタコマンド(grep、cut、tr、head、sort、uniq、sed、awk、wc、

    シェルスクリプトを書くときに気をつける9箇条 - Qiita
  • explainshell.com - match command-line arguments to their help text

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

  • 私が他人のシェルスクリプトから学んだこと | Yakst

    私はシェルスクリプトの大ファンで、他人のスクリプトから面白い方法を学ぶのが大好きだ。最近、SSHサーバの2要素認証を簡単にするためのauthy-sshスクリプトに出会った。このスクリプト群を見まわしていて、みんなと共有したいたくさんのクールなことを見つけた。 出力に色付けする 出力文字列を、成功した時は緑に、失敗した時は赤に、警告は黄色に色づけしたいと思うことはたくさんあるだろう。 NORMAL=$(tput sgr0) GREEN=$(tput setaf 2; tput bold) YELLOW=$(tput setaf 3) RED=$(tput setaf 1) function red() { echo -e "$RED$*$NORMAL" } function green() { echo -e "$GREEN$*$NORMAL" } function yellow() { e

    私が他人のシェルスクリプトから学んだこと | Yakst
  • OSに付属するシェルスクリプトを読んで技術を盗む

    今回から、OS付属のシェルスクリプトを読んでいく。多くの人が使っているスクリプトを読むことで、シェルスクリプトならではの書き方、テクニックを身に付けることができるはずだ(編集部) 他人の技術を盗まなければ進歩はない 外国語をマスターするにも、楽器の演奏を覚えるにも、上達するにはただ練習するだけではダメだ。素晴らしいお手を見つけて、よく観察し、何度もまねることが必要だ。お手から技術を「盗む」ことが大切だということだ。 プログラミングでも同じことが言えると思う。文法を覚えて、ただひたすらプログラムを書くだけではなかなか上手にならない。スキルのある人のコードを見て、技術を盗もう。開発チームのメンバーそれぞれが書いたコードを持ち寄って、お互いに批評し合う「コードレビュー」に参加している、あるいはリーダーとして主催しているという人は多いと思う。このコードレビューも、人から技術を盗む良い機会と言え

    OSに付属するシェルスクリプトを読んで技術を盗む
  • 第1回 zshで広がる世界 | gihyo.jp

    zshはシェルである。シェルはもちろんキーボード入力されたコマンド行を解釈し、必要なコマンドを必要な引数とともに起動することを主な仕事とするソフトウェアである。単なるシェルなのだが、zshには他を圧到する比類なき機能がある。その一端を印象づける一つの例に、zshで実装されたテトリスがある(図1⁠)⁠。 もちろんこれは、お遊び機能の例で実際の日常作業をこれで進めるわけではないが、潜在的に備えている機能がどれほどのものかが分かる好例である。 zshは、sh(Bourne Shell)をベースとし、ksh、csh(tcsh⁠)⁠、bashの優れた機能をアイデアとして取り込み、なおかつ作業効率を高める独自の機能を登載したまさに至高のシェルである。しかしながら超高機能・多機能であるがゆえに全容を掴むのが難しい。付属の英文マニュアルはしっかりしているものの、簡潔な仕様記述がされているのみなので具体的な

    第1回 zshで広がる世界 | gihyo.jp
  • cut、head、tail、sort・・・定番のフィルタコマンドを使いこなす! ~業務でラクするためのUNIXテクニック~

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    cut、head、tail、sort・・・定番のフィルタコマンドを使いこなす! ~業務でラクするためのUNIXテクニック~
  • シェルのコマンド履歴から再利用、のいろいろ - 元RX-7乗りの適当な日々

    覚えていると、たまに便利かもしれない"bash"のコマンド履歴の展開に関する技を、例を交えながらまとめてみました。 最後にも書きましたが、他にもたくさんありますので、色々試してみてください。 直前に実行したコマンドを実行 "!!"コマンドで、1つ前に実行したコマンドを再度実行できます。 $ ls -l 合計 0 -rw-rw-r-- 1 rx7 rx7 0 2009-02-26 02:20 test $ !! ls -l 合計 0 -rw-rw-r-- 1 rx7 rx7 0 2009-02-26 02:20 test n個前に実行したコマンドを実行 "!-n"コマンドで、n個前に実行したコマンドを再度実行できます。 例えば、以下の例では、"!-2"とすると、2個前に実行したコマンドを実行しています。 $ ls test $ ls -l 合計 0 -rw-rw-r-- 1 rx7 rx7

    シェルのコマンド履歴から再利用、のいろいろ - 元RX-7乗りの適当な日々
  • 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.

  • ウノウラボ Unoh Labs: シェルの仕組み(後編)

    ウノウでは特に最近、積極的にエンジニアを採用しています。 採用ページをご覧になり興味のある方、ぜひご応募ください!! Find Job!でも募集開始してます! 尾藤正人(a.k.a BTO)です 前回の勉強会でシェルの仕組み(前編)というのをやりましたが、今回はその後編をやりました。 前編と合わせて見ていただくと、シェル内部で使われている仕組みが一通り分かるようになるかと思います。 資料及び動画を公開しますので、もしよろしければご覧ください。 Shell 2

  • Windows の基本的なコマンド集 - IT戦記

    まずは、コマンドプロンプトの基的な部分を使えるようにならないと。。ということで nul ファイル Unix の /dev/null のようなもの サイレントにコマンドを実行 > verbose-command > nul 空のファイルを作る > type nul > hoge.txtこーんな感じでコピーができる 環境変数 PATH 、 PATHEXT PATH という環境変数にディレクトリを登録しておくと、そのディレクトリ内の実行ファイル(環境変数 PATHEXT で指定された拡張子を持ったファイル)がファイル名だけで実行できるようになります。 PATHEXT に .TXT を指定してみる 以下のようにすると .txt に関連付けられたアプリケーション(メモ帳)で、 hoge.txt が起動する。 > type nul > hoge.txt > set PATHEXT = .TXT >

    Windows の基本的なコマンド集 - IT戦記
  • find/grep/xargsコマンドを使いこなす 業務で楽するためのUNIXテクニック集「検索」編

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    find/grep/xargsコマンドを使いこなす 業務で楽するためのUNIXテクニック集「検索」編
  • 業務で楽するためのUNIXテクニック集 まずはおさらい、シェル制御構造と正規表現の基礎:CodeZine

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    業務で楽するためのUNIXテクニック集 まずはおさらい、シェル制御構造と正規表現の基礎:CodeZine