タグ

shellに関するlimitususのブックマーク (10)

  • 使いやすいシェルスクリプトを書く

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

  • Shell Style Guide

    Revision 1.25 Paul Armstrong Too many more to mention Bash is the only shell scripting language permitted for executables. Executables must start with #!/bin/bash and a minimum number of flags. Use set to set shell options so that calling your script as bash <script_name> does not break its functionality. Restricting all executable shell scripts to bash gives us a consistent shell language that'

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

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

    シェルスクリプトを書くときに気をつける9箇条 - Qiita
  • shell script を書くときの tips 2つ(初心者向け) - tokuhirom's blog

    shell script は普段さけて通りたいと願ってやまないわけですが、たまには書かないといけないことがあるので、そういうときは覚えておくと便利な tips を2つ。 autodie っぽくするset -eとすると、コマンドの実行に失敗したときにそこで実行がとまるので便利。 #!/bin/sh set -e perl -e 'die' echo SHOULD NOT REACH HEREとすると % ./hoge.sh Died at -e line 1. % echo $? 255となって、最後までいかずに死にます。 複数のコマンドを順番に実行するときに便利。 なお、以下のような挙動をするんだそうです。 ただし失敗したコマンドが until または while ループの一部である、 if 文の一部である、 && または || リストの一部である、 コマンドの返り値が ! で反転されてい

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

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

    シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third
  • テキストファイルを処理するときのUnixコマンドまとめ - nokunoの日記

    個人的にテキストファイルを処理することが多いのですが,簡単な処理ならUnixのコマンドをパイプとリダイレクトで組み合わせてできることが多くあります.今回はそんななかでもちょっとマニアックなTIPSをまとめてみました. sortコマンドでタブ区切りのファイルを指定する最近知って驚愕したのがこれ.sortコマンドでタブ区切りのファイルを指定したいときは,Ctrl+v Tabでタブ文字を入力していたのですが,$ sort -t $'\t' -k 2,2 のようにしてタブ区切りで2番目のキーでソートすることができます. 1000行おきにデータをサンプリングする1000行おきにファイルからデータをサンプリングしたいときとかは,perlでワンライナーを書くのが速いようです.$ perl -ne '$i++; print unless ($i % 1000)' 某所のコードゴルフによるとこれだけ短くでき

  • シェルスクリプトはエレガントでなければならない

    /bin/shの実体としてはash(dash)、bash、kshの採用例が多い。どのシェルもBourne shellの機能に加えて、拡張機能を提供する。 FreeBSDなどの*BSD系のOSは、ashを/bin/shとして使っている。ashはPOSIX.1(POSIX:2008)にいくらかのBSD拡張機能を取り込んだシェルだ。メモリをあまり消費せず、高速に動作し、ほかのライブラリに依存することが少ない。従って、rootやレスキューシステムのインタラクティブシェル、システムのシェルスクリプトといった場面で採用されている。 Mac OS Xはbashを/bin/shに採用している。FedoraやopenSUSEなどのLinuxディストリビューションもbashを/bin/shに採用している。LinuxディストリビューションでもUbuntuやDebian、Linux Mintなどは、高速に動作する

    シェルスクリプトはエレガントでなければならない
  • 1つのシェルから複数のSSHセッションを同時に実行するツール3種類を試す | OSDN Magazine

    リモートマシンへのログインやファイルのコピーなど、システム管理作業全般でSSHを利用する機会は多い。SSHでの作業を効率よく進めるには、複数のリモートマシンに対してコマンドを同時に実行できるツールを使ってみるとよいだろう。この記事では、Parallel ssh、Cluster SSH、ClusterItという3つのツールを紹介する。いずれも、単一のターミナルウィンドウで入力したコマンドを、対象となる複数のリモートマシンに対して一斉に送ることができる。 こうしたツールを使わずに、openSSHで複数ホストに対する処理を行うことも不可能ではない。たとえば、実行するコマンドを記述したファイルを作成し、bashのforループを使って、複数のリモートホストに対して順次実行していけばよい。だが、ツールを使うことにはメリットがある。その1つは、複数のホストで並行してコマンドを実行できる点だ。短時間で完了

    1つのシェルから複数のSSHセッションを同時に実行するツール3種類を試す | OSDN Magazine
  • zsh でログイン時に screen を起動する方法

    zsh でログイン時に screen を起動する方法 2007-08-20-1: [Solaris] ~/.zlogin に以下を記述する。 if [ ! "$WINDOW" ]; then exec screen -S main -xRR fi ログイン直後にいつも screen を打っていたのですが、これで楽になりました。 - 追記 (2007-08-21) コメント欄で情報をいただいたように、他のホストにログインすると screen が二重起動する件ですが、以下のようにして対処できそうです。 if [ $TERM != "screen" ]; then exec screen -S main -xRR fi ただし、Solaris の場合は terminfo に screen の記述がないので上記設定ではうまくいきません。 結局メインで使うマシンのみに、一番上の設定をしてそれ以外のマ

  • 漢のzsh | コラム | エンタープライズ | マイコミジャーナル

    新着記事一覧 田中麗奈、初舞台で「嫁姑仲は順調です」 - 舞台『思い出トランプ』 [11:00 10/11]  【レポート】ソーシャルレンディングサービスの気になるメリット・デメリット-- maneoの妹尾賢俊社長に聞く [09:00 10/11]  【レポート】秋葉原アイテム巡り - 「マクロス」シリーズが秋葉原をジャック! 歌は世界(秋葉原)を救う!? [04:36 10/11]  「ロックマン9 アレンジサウンドトラック」のインストアイベントが開催決定 [03:25 10/11]  DS『流星のロックマン3』、PR貴族に"髭男爵"が就任! 楽曲タイアップも決定 [03:03 10/11]  ゼンリン、600カ所の紅葉スポットの情報を提供 - 色づき具合を15段階で表示 [02:46 10/11]  TVアニメ『ドルアーガの塔〜the Sword of URUK〜』、2009年1月放送

  • 1