タグ

シェルスクリプトとLinuxに関するreika221のブックマーク (9)

  • 【試さないで】危険シェル芸【違法(脱法)シェル芸を勧められたり、 身近な人が持っていたりしませんか?】

    脱法シェル芸でマシンがトリップする案件が増加したため、名称を危険シェル芸に変更したら、変更後に危険シェル芸を試してさらにトぶ人間が増加。 それで・・・あのー宣伝で申し訳ないんですが・・・「シェルスクリプト高速開発手法入門」も・・・お願いします・・・ http://www.amazon.co.jp/dp/B00LBPGFJS

    【試さないで】危険シェル芸【違法(脱法)シェル芸を勧められたり、 身近な人が持っていたりしませんか?】
  • 私が他人のシェルスクリプトから学んだこと | 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
  • シェルスクリプトのデバッグは typeset または declare を使うと良いかも - よんちゅBlog

    はじめに つい最近知った便利なデバッグ方法 (長年シェルスクリプトを書いているのに知らなかった。これが常識だったら恥ずかしい…) シェルスクリプトのデバッグでは echo で変数の中身を見るという原始的な方法をよく使うかと思います。 いわゆる プリントデバッグ というやつですね。 もう少し詳しいデバッグが必要な場合は、 set -x と set +x でデバッグしたい部分を囲むという方法もあります。 今回は プリントデバッグ で使う echo の代わりに typeset or declare を使うと良いというお話です。 プリントデバッグは typeset or declare を使おう typeset or declare は変数宣言などでよく使うコマンドですが、変数の中身を見るのにも使えます。 echo と比べて何が良いのかというと、変数の中身はもちろん変数名や変数の型も表示してくれ、

    シェルスクリプトのデバッグは typeset または declare を使うと良いかも - よんちゅBlog
  • bashによるシェルスクリプトの小技(2) - shibainu55日記

    前回(bashによるシェルスクリプトの小技(1))に引き続き、シェルによって自動的に値が設定される特殊な変数について紹介する。特殊な変数を参照することにより、様々な情報を取得することができる(ただし、これらの変数には自分で任意の値を設定することはできない)。 さて、まずは特殊変数を一覧でまとめてみる。お馴染みのものが多いが、最後の2つ(特に最後のPIPESTATUS)についてはきっと今まで知らなかった人もいるんじゃないだろうか。シェルの中でパイプすると途中のコマンドのリターンコード、拾えないとか思っていませんか?今回のポイントとしては、「1. PIPESTATUS変数について」と「2. 特殊変数 $@と$*の違いについて」の2点を主に説明する。 特殊変数一覧表 変数名 自動的に設定される値 $? 直前に実行されたコマンドの終了ステータスが設定される変数。正常終了の場合は「0」、異常終了の場

    bashによるシェルスクリプトの小技(2) - shibainu55日記
  • 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 文の一部である、 && または || リストの一部である、 コマンドの返り値が ! で反転されてい

  • USP友の会:追記をもやもやと嫌いつつ、UNIXのファイルの使い方を説明

    こんばんは。勉強会の打ち合わせに出たナッツをバカいして、その後の楽しい飲み会を不成立にしてしまったかいちょうです。 たまには意味のある情報を(←おい)ということで、実験がてらに書いてみます。 UNIXはファイルを直接書き換えない データ一方通行の掟 UNIX系OSでは、同じファイルの内容を直接書き換える方法はあまり用意されていません。シェルスクリプトを書き慣れていないと、つい次のようなスクリプトを書いてしまい、ファイルをぶっ壊すことがあります。おそらく、10回壊すと一人前です。 ueda@uedaubuntu:~$ cat hoge.sh #!/bin/bash #入力と出力が同じファイルだとファイルの中身が消える cat ./a | tr ' ' '\n' > ./a 下のスクリプトの方が当然正しく、「データの流れは一方通行」が原則のUNIXらしい処理になります。つまり、上のスクリプト

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

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

    シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third
  • 自前のDropboxを実現する1ファイルのシェルスクリプト·vbox MOONGIFT

    vboxはシェルスクリプトで作られたDropboxライクなソフトウェア。 vboxはシェルスクリプト製のオープンソース・ソフトウェア。みんな大好きDropbox。指定されたフォルダを自動的に同期してくれて、別なPCともファイルが共有できる上にバージョン管理までしてくれる。普段は何もしないというのが良い所だ。 動作中 しかしそんなDropboxが便利だと感じる反面、自分だけのDropboxサーバを立てたいと感じている人も少なからず存在する。そんな方はvboxを使ってみるといいだろう。 vboxは何とたった一つのシェルスクリプトファイルでできている。技術的に言うと、自分でサーバを立てて、そこにある特定のディレクトリとローカルのディレクトリをrsyncで同期する。それでは単なるバックアップであり、vboxはリモートではGitを使ってバージョン管理を行っている。 複数のコンピュータで同期することも

  • Linux でシステムの起動時に 1 度だけ処理を実行する。 - D.

    システムの起動時に一度だけ実行する処理は、普通は /etc/rc.local に書くわけだが 、1 ファイルにすべてを書いてしまうと管理が煩雑になったりする。まとまった処理ごとにファイルを分けておいたほうが管理が楽だ。 そこで /etc/rc.local の内容を以下の通りにする。 #!/bin/sh if [ -d /etc/rc.local.d ]; then for i in /etc/rc.local.d/*; do if [ -r $i ]; then . $i fi done unset i fi exit 0 /etc/rc.local.d というディレクトリを用意する。ここにシェルスクリプトの書かれたテキストファイルを入れておくと上のスクリプトによってすべて実行されることになる。ファイル名は何でも良い。 イー・モバイル端末が体に接続されていれば接続する例 (ネットブック等

    Linux でシステムの起動時に 1 度だけ処理を実行する。 - D.
  • 1