タグ

ShellScriptとshellscriptに関するfootnoteのブックマーク (40)

  • Bash用ユニットテストフレームワーク作りました - Folioscope

    Bash用テストフレームワークに、Batsやshunit2がありますが、イケてないなーと思ってたら、気づいたら自分で作ってました。 github.com テストの結果はモダンなテストフレームワークのように、カラフルに表示します。 またFAIL時は、FAILしたテストの結果を表示します。 自分の Arch Linux 上の Bash 4.3.42 および、Travis CI 上で動作することを確認しています。 インストール curl -o ~/bin/bashtub https://raw.githubusercontent.com/ueokande/bashtub/v0.1/bin/bashtub chmod +x ~/bin/bashtub です。ただし~/binはパスが通ってるとします。 これでターミナルから bashtub と打つことで実行できます。 bashtub テストを書く 各

    Bash用ユニットテストフレームワーク作りました - Folioscope
  • どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 - Qiita

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

    どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 - Qiita
  • どのUNIXコマンドでも使える正規表現 - Qiita

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

    どのUNIXコマンドでも使える正規表現 - Qiita
  • シェルスクリプトの平文パスワードをセキュアにする方法 - 余白の書きなぐり

    追記: (2015/8/3) 大量のはてブが付いたので 続き を書きました。 sshを使用している人は文字列を手軽に暗号化・復号化できるという話。 このテクニックを使えば色々セキュアになるのでおすすめ。 今回はシェルスクリプト中の平文パスワードをセキュアに代替する。 平文パスワードはやめよう シェルスクリプト中でパスワードが必要になったとき、 とりあえず平文で書いてしまいがち。 #!/bin/sh PASSWORD="hoge" これをセキュアにしたい。 面倒くさいのは嫌なので、なるべく手持ちのツールで暗号化、復号化したい。 ssh用の rsa 秘密鍵と、openssl(大抵の環境に入っている)を使って改善しよう。 秘密鍵の準備 パスワードを暗号化するにあたって、秘密鍵を使用する. sshを常用している場合は ~/.ssh/id_rsa という秘密鍵が存在するだろう。 もし秘密鍵が無ければ

    シェルスクリプトの平文パスワードをセキュアにする方法 - 余白の書きなぐり
  • readするときはIFS=を付けておくとstrictな感じで気持ちが良い - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    readするときはIFS=を付けておくとstrictな感じで気持ちが良い - Qiita
    footnote
    footnote 2015/04/27
    FreeBSDのshでも使える。bash限定ではない。
  • Apacheホスティング環境(Webサーバー+PHP実行環境)をコマンド一発で構築する一撃シェルスクリプト

    一撃シェルスクリプトとは これは私が作った造語で、厳密な定義というものを設けているわけではありませんが、「シェルスクリプト(と設定ファイルのひな形)を用意すれば、コマンドを1回実行するだけで環境構築ができてしまうというスグレモノ」を目指しています。現在のところ、線引きとして以下のように詳細なルールを作っています。 OSインストール直後に一撃シェルスクリプトを配置して動かすものとする 実行回数は1回のみで、人が張り付く必要のない設計とする 対話式の入力は可能な限り回避する 一撃シェルスクリプトで重視していないこと 一撃シェルスクリプトは、あくまで「シェルで頑張れる範囲で冪等性(べきとうせい)を確保する」ツールです。なので、上に記した「一撃シェルスクリプトの定義」にだいたい合致していれば「これは一撃シェルスクリプトだぞ」と名乗ってもよいと思っています。例えば、何がなんでも1枚のスクリプトファイ

    Apacheホスティング環境(Webサーバー+PHP実行環境)をコマンド一発で構築する一撃シェルスクリプト
    footnote
    footnote 2015/02/26
    一撃シェルスクリプト
  • 自宅PCのグローバルIPアドレスの変更をメールで通知 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    自宅PCのグローバルIPアドレスの変更をメールで通知 - Qiita
  • UNIX & Linux コマンド・シェルスクリプト リファレンス

    目次 当サイトについて bash シェルスクリプト入門 -シェルスクリプトのいろは- コマンド Tips シェルスクリプト Tips 変数を使用する 配列を使用する 入力と出力 if 文と test コマンド for 文の使用方法 while 文の使用方法 case 文の使用方法 関数の使用方法 引数を処理する 終了ステータス シグナルと trap コマンド フィルタを使用した文字列操作 1 フィルタを使用した文字列操作 2 日付を取得する 文字コードと改行コード シェルスクリプトのデバッグ AWK リファレンス (Deprecated) シェルスクリプト ライブラリ 『ether.sh』 お知らせ Bluesky を始めました @sunone.me 変更履歴 2023.10.07 ページ内リンクを修正した。 2021.02.01 このサイトに「もう 1 ページ追加しよう」と思ってから、も

    UNIX & Linux コマンド・シェルスクリプト リファレンス
  • 初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita

    ここ最近、沢山シェルスクリプトを書くようになりました。 元々あまりシェルスクリプトを書いたこと無かったので、色々と勉強しつつ書いてるのですが、 他のプログラミング言語とはちょっと違って独特なクセというか、発見の度におぉー!ってなることが沢山あって楽しいです。 そんなわけで、最近学んだり参考にした中で特に感動したシェルの上手い書き方をまとめてみます。 きっとまだ知らないこととかもっと上手くやる方法なんかが沢山見つかりそうなので、 もっといいやり方あるよ!って方はコメントください 何もしない : (コロン)コマンド シェルを書いていた時に非常に欲しかったコマンドがこれ!何もしない! : というコマンド(?)を利用すると、**何もせずに終了ステータス0(つまり正常終了)**を返します。 これが様々な事に使える万能コマンドで、これによって面倒なエラー処理を簡潔にできたり、 入力や出力のリダイレクト

    初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita
  • シェルスクリプトの中で1行ずつ変数を分割する際には、cutとかawkとか余計なプロセスを起動せずsetを使って分割した方が効率的 - 双六工場日誌

    シェルスクリプトの中で、スペース区切りもしくはタブ区切りのレコードを扱うことがよくあると思います。 たとえば、前回のエントリ「AWS CLIとjqを使って、AWSのELBボリュームがアタッチされているEC2インスタンス名を出力するワンライナーを書いた - 双六工場日誌」のスクリプトの出力は以下のようになります。 i-ec56a9f5 vol-07d00601 servername i-ec56a9f5 vol-8f550991 servername このようなレコードの特定の列を取り出して、処理する際にどうするのが効率的か、というのがこのエントリのお題です。 非常に古い話題なので、昔からシェルスクリプトを書いている人には自明な話ではありますが、最近、シェルの標準機能の話を聞く機会がなく、失われつつある技術になってきている気がしているので、改めて確認ということで。 例として挙げたレコードから

    シェルスクリプトの中で1行ずつ変数を分割する際には、cutとかawkとか余計なプロセスを起動せずsetを使って分割した方が効率的 - 双六工場日誌
  • csh cシェル 簡単なシェルプログラミングまとめ

    csh(cシェルと読む)は、UNIX上のコマンドインタプリタで、 コマンドを読み込み、解釈し、実行までを行います。 シェルプログラムはシェルが解釈するコマンドの集まりです。 コマンドを組み合わせて、多様な機能をもつ新たなコマンドが作れます。 cシェルの動作は以下のようになります。 全体構造 #! /bin/csh ... ... !/bin/csh -fZCX とスクリプト1行目に書くと、 ~/.cshrc を読み込まみません。-f オプションを 付けていないスクリプトでは ~/.cshrc中で定義している設定(alias等)が有効に なります。 if 文 if ( 条件 ) then コマンド (任意の行数可) else if (条件) then コマンド (任意の行数可) else コマンド (任意の行数可) endif 例 #! /bin/csh if ($#argv != 1) t

    csh cシェル 簡単なシェルプログラミングまとめ
  • 「スマートな紳士のためのシェルスクリプト」関連の最新 ニュース・レビュー・解説 記事 まとめ - ITmedia Keywords

    スマートな紳士のためのシェルスクリプト(8): シェルスクリプト最大の罠、while問題 シェルスクリプトプログラミングに取り組むときに最もはまりやすい問題、それが「while問題」だ。今回はその原因を掘り下げてみよう。(編集部)(2012/9/14) スマートな紳士のためのシェルスクリプト(7): 「アット・ア・グランス性」確保のための8つの原則 シェルスクリプトで読みやすく、後から変更しやすいプログラミングを行うには、手続き型のプログラミング言語とは違ったポイントを押さえなくてはならない。筆者はそのコツを「アット・ア・グランス性」と表現している。(編集部)(2012/8/17) スマートな紳士のためのシェルスクリプト(6): あなたの知らない>|と<>の使い方 >や>>、>&といったひんぱんに使われるリダイレクトに対し、ほとんど使われることのないリダイレクトが>|と<>だ。実際には興味

  • シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」

    OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料

    シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
  • 仕事で使えるシェルスクリプト

    C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„

    仕事で使えるシェルスクリプト
  • シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」

    Dec 29, 2014Download as pptx, pdf59 likes17,024 views

    シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
    footnote
    footnote 2014/12/29
    % find . -type f
  • シェルで変数のインクリメントに expr を使うと100倍遅い件

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    シェルで変数のインクリメントに expr を使うと100倍遅い件
    footnote
    footnote 2014/12/28
    FreeBSDの/bin/shは、二重括弧 Arithmetic Expansion が使える。
  • シェルスクリプト入門 書き方のまとめ | Memo on the Web

    シェルスクリプト入門として, 基的な書き方をまとめました. 長いですが, 1ページにまとめてみました. 良かったら目次も参考にしてご覧になって下さい. 目次 シェルスクリプトとは 作り方, 実行の仕方 コメント ユーザーからのキーボード入力を受け付ける 変数 通常の変数 特別な変数 演算子 数値計算演算子 比較演算子 コマンドを繋げる演算子 条件文に使える比較演算子 条件文 制御構文(分岐) if文 case文 制御構文(ループ) for文 while文 until文 select文 文字列処理 文字列置換 削除 複数行のテキストの出力(ヒアドキュメント) 関数 シェルスクリプトとは シェルスクリプトとは, シェルの動作をまとめて記述したスクリプトのことです. 決められた文法にしたがって処理を記述することによって, シェルでの処理をまとめて行ったり, 作業を自動化できたりします(例 複数

  • GETSUNRISE.SHコマンド

    ■GETSUNRISE.SHコマンド 何それ、おいしいの? 郵便番号を引数で与えると、WebAPIを渡り歩いて、日の出・日の入時刻を返すコマンドです。 郵便番号を住所にし、住所を日の出・日の入時刻にするのに、2つのWebAPIを呼んでいます。 郵便番号検索API ― HeartRails Geo API@ハートレイルズさん 上のAPI紹介ページのクレジット表記が“HeartRails Inc. Some Rights Reserved.”になってるんですけど、気のせいですか? 日の出・日の入検索API ― おはこん番地は!?@ビットマイスターさん JSON、XMLパーサーも含めて、シェルスクリプトで書いています。(ソースコード) 動作に必要なもの なぁに、大したことありませんよ。 BourneシェルとUNIX標準コマンド群(UNIXが動いているなら特に準備の必要なし) curlコマンド(p

  • 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で済ませてる。 なのでこいつをダウンロードして、解凍・実行するだけだ。(コンパイルも不要) このコマンドがやっている事は下記のとおりだ。要するにWebAP

    jq、xmllintコマンドさようなら。俺はパイプが好きだから - Qiita
  • 使いやすいシェルスクリプトを書く

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