タグ

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

  • GitHub - google/zx: A tool for writing better scripts

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - google/zx: A tool for writing better scripts
  • シェルスクリプトでset -eしているときに処理を中断せずエラーを扱う方法

    シェルスクリプトで set -e (errexit) しておくと、スクリプト中に実行したコマンドの終了ステータスが「非0」だった場合、つまりコマンドが失敗したときにそこでスクリプトを中断してくれるようになります。(終了ステータスとは「Exit code」「Return status」などと呼ばれるものです。) 都度エラー判定を書かなくてもよくなるので便利なオプションですが、個別にエラーハンドリングをしたくなった時にも意図せずスクリプトが中断されてしまい困ったことになります。 例えば、以下の例は false コマンドの実行で失敗扱いとなり、そこでスクリプトが中断されるため「finish」が出力されることはありません。 set -e # false コマンドは必ず終了ステータスに 1 (失敗) を返すコマンド # エラーが起きたとみなされスクリプトは中断される false # このコマンドは実

    シェルスクリプトでset -eしているときに処理を中断せずエラーを扱う方法
    oinume
    oinume 2020/07/29
    : コマンド知らなかった
  • What does "--" (double-dash) mean?

    Stack Exchange Network Stack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers. Visit Stack Exchange

    What does "--" (double-dash) mean?
  • 使いやすいシェルスクリプトを書く

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

    oinume
    oinume 2014/05/20
    オプション回りはgetopts使うとより幸せになれるかも。
  • GitHub - mooz/percol: adds flavor of interactive filtering to the traditional pipe concept of UNIX shell

    percol adds flavor of interactive selection to the traditional pipe concept on UNIX. What's this Features Related projects Installation PyPI Manual Usage Example Interactive pgrep / pkill zsh history search tmux Calling percol from Python Configuration Customizing prompt Dynamic prompt Custom format specifiers Customizing styles Foreground Colors Background Color Attributes Matching Method Migemo

    GitHub - mooz/percol: adds flavor of interactive filtering to the traditional pipe concept of UNIX shell
    oinume
    oinume 2014/01/18
    ターミナル版anything.el的なヤツ
  • Shellでgetoptsを使ってコマンドライン引数の解析 - oinume journal

    だいぶ前の話、Perlを使わないでShellスクリプトで頑張っていた頃、Shellでコマンドラインオプションの解析をやる時は #!/bin/sh for OPT in $* do case $OPT in '-x' ) FLAG_X="TRUE" ;; '-y' ) shift FLAG_Y="TRUE" VALUE_Y=$1 ;; esac shift done if [ "$FLAG_X" = "TRUE" ]; then echo "Option -x specified." fi if [ "$FLAG_Y" = "TRUE" ]; then echo "Option -y $VALUE_Y specified." fi という感じで $* と shift を使ってやっていたのですが、最近 getopts なる素敵なビルトインコマンドを知りました。これを使うと上のスクリプトは下のよ

    Shellでgetoptsを使ってコマンドライン引数の解析 - oinume journal
  • シェルスクリプトでパイプを使った時の戻り値のとり方 - 256bitの殺人メニュー

    はい、おつカレー様です。 bashを使ったシェルスクリプトでパイプを使っても戻り値をちゃんと取りたいときの話です。 シェルスクリプトの戻り値 シェルスクリプトでの戻り値取るときに $? を使うことがあると思います。 $ ls / # こっちは正常 $ echo $? 0 $ ls /notfounddir # こっちはエラー $ echo $? 1コマンドのログを取りたいなと思ってteeとかつなげちゃうとteeの戻り値になっちゃって取れないですよね。 $ ls /notfounddir | tee test ls: /notfounddir: No such file or directory $ echo $? 0 # <-アレ? ${PIPESTATUS[@]} こういう場合は、${PIPESTATUS[@]}を使うことで取ることができます。 $ ls / | tee test.log

    シェルスクリプトでパイプを使った時の戻り値のとり方 - 256bitの殺人メニュー
    oinume
    oinume 2012/10/30
    PIPESTATUS知らんかった
  • シェルスクリプトで「ビルドスクリプト」を作る時に便利なテクニック - ククログ(2012-10-11)

    プログラムの種類によっては、そのまま実行できるものと、実行できるようにするために「ビルド」が必要なものとがあります。Cなどのコンパイルが必要な言語で書かれたプログラムは当然ビルドが必要ですし、コンパイルが不要な言語であっても、インストーラパッケージを作るというビルド作業が必要な場合はあります。 ビルド作業の自動化のためのツールとしてmakeなどがありますが、そこまで格的な事をやる必要がない場合は、シェルスクリプトで「ビルドスクリプト」を作るのが手軽でおすすめです。この記事では、そのような場合に役立つシェルスクリプトのテクニックを4つご紹介します。 エラーの気付きやすさとデバッグのしやすさを高める メッセージに色を付ける シェル関数をライブラリにする 一時的に作業ディレクトリの中に入る エラーの気付きやすさとデバッグのしやすさを高める はじめに紹介するテクニックは問題が発生した時に気づきや

    シェルスクリプトで「ビルドスクリプト」を作る時に便利なテクニック - ククログ(2012-10-11)
    oinume
    oinume 2012/10/16
    もはや各所で言われているShellネタだけどこういう啓蒙活動はいいよね
  • WORDCHARS環境変数 - walf443's blog

    次のように設定しておけば、ファイル名などを補完しすぎたのを戻そうとしたときに便利。 export WORDCHARS="*?_-.[]~&;!#$%^(){}<>"具体的には、vi lib/hoge/fuga/まで打ってから間違って補完してしまってlib/hoge/まで戻りたい場合にこの設定をしておくとC-wで戻れるようになる。これはヤバい。 WORDCHARS環境変数には単語として認識したい記号を設定しておけば良いらしい。 「=」も抜いておくと、ロングオプションを入力しているときに値を変えたりするときに便利。 # かなり久々の更新でした。

    WORDCHARS環境変数 - walf443's blog
  • redirect COPY of stdout to log file from within bash script itself

    I know how to redirect stdout to a file: exec > foo.log echo test this will put the 'test' into the foo.log file. Now I want to redirect the output into the log file AND keep it on stdout i.e. it can be done trivially from outside the script: script | tee foo.log but I want to do declare it within the script itself I tried exec | tee foo.log but it didn't work.

    redirect COPY of stdout to log file from within bash script itself
  • シェルスクリプトで標準出力をファイルに出すようにする - 256bitの殺人メニュー

    おっさん力その1。 知らない人もいるのですなとおもって、メモ的に。 シェルスクリプトで標準出力をファイルに出す方法について 普通はあんまり使わないけど、監視サーバから叩かれるシェルのログを見たい時とかには使いますね。 テストコード cat <<'EOF' >fdtest.sh #!/bin/bash # 標準出力(1)のFDを3に退避 exec 3>&1 # 標準出力をlogfileにリダイレクト exec > logfile echo "output file" # 退避していたFDをもとに戻す exec 1>&3 echo "output screen" EOF 出力結果 kuwano@localhost:~/bin/test$ bash fdtest.sh output screen kuwano@localhost:~/bin/test$ cat logfile output fi

    シェルスクリプトで標準出力をファイルに出すようにする - 256bitの殺人メニュー
  • bashを便利に使うためのいくつかのTIPS - mikedaの日記

    人のオペレーションを見てるとそれぞれクセがあっておもしろいですよね! というわけで自分がよく使うbashの便利機能をまとめてみました。 1つ前の作業ディレクトリに戻る cd -で戻れます。 [mikeda@test01 tmp]$ cd [mikeda@test01 ~]$ cd - [mikeda@test01 tmp]$pushd、popdを使えば2つ前でも3つ前でも戻れるのですが、めんどうなので基コレだけ使ってます。 コマンドラインを移動する この状態から Ctrl+aを入力するとプロンプトが先頭に移動します。 Ctrl+eを入力すると末尾に移動です。 Ctrl+wを入力すると直前のワードを削除できます。 Ctrl+cで入力をキャンセルして次の行に移ります。 自分がよく使うのはこの4つです。 ヒストリをうまく使う ヒストリ検索 Ctrl+rを入力するとヒストリ検索モードになります

    oinume
    oinume 2012/03/24
  • シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third

    エンジニアという職業柄かシェルスクリプトを書くことはちょくちょくあるのですが、自分なりに気を付けていることを備忘録&自分への戒めも含めて、簡単に書いてみたいと思います。 変数は大文字 シェルスクリプト書いていれば変数の出番は至るところであるでしょう。その際、可読性を増すように、変数は大文字を使っています。 RET=`cmd1`みたいに。好みの問題もあるでしょうが、分かりやすいので。 クオテーションは選ぶ クオテーションにはシングルだったり、ダブルだったり色々ありますが、使い分けておいたほうがよいでしょう。 変数の展開がないようであれば、シングルクオーテーションのほうがスマートでしょうし、展開があるのならダブルクオーテーションを使えばと。 ダブルクオーテーションを使うのにも意味があって、変数は「$RET」のようにクオテーションで囲まなくても動作はたいていするのですが、 echo "${RET

    シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third
    oinume
    oinume 2012/02/23
    今度自分のブログに書こうと思っていたことが全て書かれていた!
  • 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 コマンド・シェルスクリプト リファレンス
    oinume
    oinume 2012/02/13
    網羅的
  • oinume journal

    Raycastを使い始めて1年経ったので、どういうことに使っているかを振り返ってみる。去年書いた AlfredからRaycastに移行した - oinume journal の記事から少し使い方が変わっているところもあるのでメモがてら。 基的な使い方 Cmd + QをRaycast起動のショートカットとして割り当てている。Pro版は使っていないのでAI機能などは使ったことがない。 ブラウザのブックマーク検索など、よく使うけどHotKeyを割り当てるほどでもないRaycastコマンドはbmのようにAliasを設定している。 Cmd + QでRaycastを起動してbmと入力するとブックマークの検索ができるので楽ちん アプリケーションランチャー機能 アプリケーションを起動するときのランチャーとして使っている。よく使うアプリにはHot Key(ショートカット)を割り当ててる。 Clipboar

    oinume journal
    oinume
    oinume 2012/02/05
    blogged
  • if 文と test コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス

    if 文と test コマンド if 文とは? if 文とは、与えられた条件式が真のときのみ処理を行い、それ以外の場合は処理をスキップする、などといった場合に使用される条件分岐処理である。 条件式には一般的に test コマンドを用いるが、ls コマンドや grep コマンド等の他のコマンドを用いても構わない。 if 文は条件式に指定されたコマンドの終了ステータスを判定し分岐を行う。終了ステータスが「0」の場合は真、その他の場合は偽となる。 if 文 タイプ 1

    if 文と test コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス
    oinume
    oinume 2012/01/28
  • oinume journal

    Raycastを使い始めて1年経ったので、どういうことに使っているかを振り返ってみる。去年書いた AlfredからRaycastに移行した - oinume journal の記事から少し使い方が変わっているところもあるのでメモがてら。 基的な使い方 Cmd + QをRaycast起動のショートカットとして割り当てている。Pro版は使っていないのでAI機能などは使ったことがない。 ブラウザのブックマーク検索など、よく使うけどHotKeyを割り当てるほどでもないRaycastコマンドはbmのようにAliasを設定している。 Cmd + QでRaycastを起動してbmと入力するとブックマークの検索ができるので楽ちん アプリケーションランチャー機能 アプリケーションを起動するときのランチャーとして使っている。よく使うアプリにはHot Key(ショートカット)を割り当ててる。 Clipboar

    oinume journal
    oinume
    oinume 2012/01/11
    過去に自分が書いたエントリが役に立った
  • シェルスクリプトのユニットテスト - wyukawa's diary

    ちょっとシェルスクリプトを書く機会があったので、ユニットテストできるかなーと思って調べてみたのでメモ。 こんなんがあった。 Google Code Archive - Long-term storage for Google Code Project Hosting. ダウンロードして解凍 $ wget http://shunit2.googlecode.com/files/shunit2-2.1.5.tgz $ tar zxvf shunit2-2.1.5.tgz サンプル実行 $ cd shunit2-2.1.5 $ ls Makefile doc lib src bin examples share $ cd examples/ $ ls equality_test.sh math.inc mkdir_test.sh lineno_test.sh math_test.sh party

    シェルスクリプトのユニットテスト - wyukawa's diary
    oinume
    oinume 2011/11/07
  • Linux等でのログのモニタリングで簡単にアラートをキャッチするワンライナー - 元RX-7乗りの適当な日々

    昔、『「ping -a」で音が鳴る!』なエントリでも書いたのですが、何らかをリアルタイムにチェック/監視したい時に、視覚だけではなくアラート音が一緒に出ると、モニタリングしやすいものです。 というわけで、Linuxなんかで、とあるログファイルの出力から、ある文字列が検出された際に、ビープ音を鳴らすワンライナーは以下。 $ tail -f ログファイル | sed -e 's/\(対象文字列\)/\1^G/'上記を実行中に、指定ログファイルに対象文字列が出力されるとビープ(Beep)音が鳴るはず。 「^G」(0x07)の部分が、ASCIIのBELキャラクタのリテラルです。 $ echo -n "^G"などとしてやれば、ベル(ビープ音)が鳴りますよね。 ちなみに、「^G」は、[Ctrl-V] ⇒ [Ctrl-G] の順に入力してやればOK。emacsだと[Ctrl-Q] ⇒ [Ctrl-G]か

    Linux等でのログのモニタリングで簡単にアラートをキャッチするワンライナー - 元RX-7乗りの適当な日々
  • emacsのM-!とM-|の使い方 - KAYAC engineers' blog

    来週ようやく夏休み!のnagata (@handlename) です。 シェルコマンドを実行したいとき、どうしてますか? emacsを使って開発する場合、 ターミナルとemacsを行ったり来たりすることはよくあると思います。 現在のディレクトリのパスがほしかったり(pwd)、 IPアドレスを調べたかったり(ifconfig)、 あるいは編集中のテキストを処理したかったり。 そんな場合、いちいちターミナルに移動して、 出力結果を確認(場合によってはコピー)して、 あらためてemacsに戻ってくるのは面倒です。 それ、emacsからできます! 往復するのが面倒ならば、すべてemacs上で完結させてしまえばいいのです。 shell-mode を使うという手もありますが、 今回はもっとお手軽な M-! (shell-command) と M-| (shell-command-on-region)

    emacsのM-!とM-|の使い方 - KAYAC engineers' blog