sh

ファイル・ディレクトリ監視コマンド

Gruntがよくわからないし、できればコマンドかなんかでファイルやディレクトリを監視できないのかなーと思って探してみたらやっぱりありました。 まあGruntの場合はnode.jsに閉じてるのでOSを気にする必要がないところが良い点かなと。一方でnode.jsがないと…

はじめてのSHA512SUM

sh

今日、Debian wheezyのnetinst版をダウンロードしました。 http://cdimage.debian.org/debian-cd/7.0.0/amd64/iso-cd/ で、ファイルが壊れてないかSHA SUMのファイルのハッシュ値と比べてたり、というのを今まではファイルを開いてやってました。 少し前にsh…

最近よく使ったコマンドのメモ

sh

最近、シェルスクリプトを書くことが多くて文字列処理をたくさんしたのですが、その中でとても便利だったコマンドをメモしておこうかと。 ただ、ディストリビューションとかコマンドそのもののバージョンによって微妙に違うのでいつでもそれが使えるわけじゃ…

awkで平均値算出

sh

ApacheBenchでいろいろベンチマークをして、それでRequests per secondの平均値を出したかったのでawkを使ってみる事に! 今まで特定の桁のprintするくらいしか使えなかったのだけど、ドットインストールのawk入門でちょっとだけ勉強したので試してみたので…

ドットインストール AWK入門

より。 なんかメモにいろいろ書いてる。 sedで大分ごにょごにょやってたことが多いのだけど、 awkを使った方が良いのだよなあと思ってたことが多々あったのでちょうど良い入門動画だったかも。 $0 レコード全体 NF 読み込んでいるレコードのフィールドの数 N…

C-dをtrapする

sh

trap 'echo exit' EXIT とか書けばいいみたい。 trap 'eval `/usr/bin/ssh-agent -k`' EXIT とか書いたらtmuxでC-d押すたびに発動するから逆に困る事態に…… bash_logoutに書きなおしたけど。

forked z

sh

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

zを使ってみたよ

sh

zというcdの履歴を管理してくれるコマンドがあるのを知りました。 合わせて、Tabでの補完等の時に先頭のパスが一致していなくても、後方のパスに一致していると補完してくれるものです。 普段cd -くらいしか使わないし、pushdやpopdも全然使ったことないので…

改行コードを調べる

sh

Linux系OSでの改行コードの調べ方をぐぐると、大抵nkfで〜とか出てくるのですが、nkf入れるのも面倒だしなーと思っていたらcatで一応判別できるみたいです。 catを実行する際に-Aオプション、もしくは-eオプションを付けてあげるとCRやLFなどの制御文字にマ…

高速にファイルを削除する

sh

ディレクトリに30万ファイルなんて出来ていて、全部削除したいとき。 普通、ひとつのディレクトリ直下にそんなファイル作らないでしょうけど…… $ find . -type f -print0 | xargs -0 -P0 rm -f で削除しました。 -print0は一致したファイル名をヌル文字で区…

bash-completionをインストールしたよ

長らくbash-completionをインストールしていなかったのでインストールしました。 homebrewを使いたくなかったので、直にインストールしています。 なかなか大変だったのですが…… 環境:OS X Lion 10.7.5 ダウンロード http://bash-completion.alioth.debian.…

lnのsrcとdestの順番の覚え方

sh

未だに $ ln -s src dest とする際に順番を覚えられなかったんですが…… window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id …

シェルスクリプト間の変数渡し的な

sh

aaa.sh #!/bin/sh AAA=123 sh ./bbb.sh bbb.sh #!/bin/sh set -u echo $AAA を実行すると $ sh aaa.sh ./bbb.sh: line 5: AAA: unbound variable になってしまう…… exportもしたくないしなーと思って先頭で変数を宣言してみたら。 $ AAA= sh aaa.sh 123 $ ec…

シェルのプロンプトにリポジトリ情報を表示するようにしてみたよ

sh

第27回 長岡開発者勉強会に行ってきたよ - 四角革命前夜での@neko_gata_sさんのGitリポジトリのブランチ名が表示されるプロンプトがカッコイイものだったので、自分も真似してみることに。 zshだと最初からそういう機能があるみたいだけど、bashはそうではな…

「シェル操作課題」をやってみたよ

sh

シェル操作課題 (cut, sort, uniq などで集計を行う) 設問編 - Yamashiro0217の日記 の問題をやってみたのです。 cat,パイプ,sort,cut,uniq,wc,sed,perl,awk,grep,head,tail,date,and so onとのことなのでまあ、知ってる限りというか。Perlとかawk知らんのだ…

VimFilerで拡張子変更

たまにディレクトリ内の特定の拡張子を変更する、という作業が必要になったりするとき、bashだと $ for i in *.txt; do mv "$i" "`echo $i | sed -e 's/.txt$/.md/'`"; done なんてワンライナーで書いたりするんですが、VimShellを最近使うようになって、こ…

curlの代わりのwget

sh

よくcurlで $ curl http://xxx/xxx | sh - なんて使い方をすることがあるかと思いますが、wgetでも $ wget -q -O - http://xxx/xxx | sh - なんてやってあげると出来るみたいです。 -qは--quietでwgetの出力を抑止し、-Oは--output-documentでファイル名を指…

変数のスコープ・他のシェルで定義した変数を使用する

sh

#!/bin/sh # aaa.sh source ./bbb.sh echo $AAA #!/bin/sh # bbb.sh AAA=123 $ sh aaa.sh 123 sourceコマンドやら.やらで読み込むと他のシェルスクリプトで定義した変数も使えるみたい。 無駄にexportしたくない場合などにどうぞ。

ifとショートサーキット

sh

bashのtest, [内で使う-aはショートサーキットじゃないのですねえ。 echo "$1" | grep -E '^[0-9]+$' > /dev/null if [ "$?" -eq 0 -a -n "$1" -a "$1" -gt 0 ] then # ... fi grepした結果が一致して、空文字でなく、0より大きいって書いたらエラーが出まし…

sedで色付け

Apacheログに色を付けて快適tail生活 - y-kawazの日記が前から気になっていて、真似てみたかったのでちょっとしたスクリプトを書いてみた! 試しにlsで表示されたファイルの拡張子を太字で表示してみることに。 ext.sed #!/bin/sed -rf #!/bin/sed -r -fだと…

if文でコマンド実行結果の戻り値を判定する

sh

さてさて、またしてもシェルスクリプトです。 シェルスクリプトではコマンドを実行して、コマンドの戻り値によって処理を変えるなんてことがあるかと思います。 #!/bin/sh echo "$1" | grep 'a' if [ "$?" -eq 0 ] then echo 'has a' else # 英語自信ない ec…

シェルスクリプトのメモ

sh

メモしてたと思ったら書いてなかったみたい……なのでメモするのです。 環境:RHEL5.5 bash3.2.25 構文チェック $ sh -n xxx.sh xxx.shの構文チェックをします。ただ、括弧が片方ないとか、そういうレベルだったはずなのでそんなに期待できないというか…… コマ…

いたずら

sh

$ for i in `w | awk '{print $2}' | grep '\/[0-9]'`; do echo 'ヒャッハー' > /dev/$i; done ※いろいろ注意 追記: teramakoさんからgrepを使わない方法を教えてもらった! window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)…

sedで特定の行だけを消す

sh

ファイルがいくつかあって、特定の行を消すためにいちいちファイルを開いて消して保存して……というのは面倒で避けたいのでsedを使う事に。 でもsedは置換でしか使ったことがない!というわけで行の削除に関するメモ。 $ sed -i.bak -r -e '/^A/d' ./*.sh っ…

httpdを起動するMakeターゲット

自サイトの確認にhttpdをnode.jsやらRubyのWEBrickやらで起動するのが面倒だったので、 お気に入りのmongoose httpdをダウンロード、コンパイル、実行までしてくれるMakeのターゲットを書いてみたのですよ。 ターゲットというよりかはほとんどシェルスクリプ…

ファイルサイズの調べ方

特定のディレクトリ以下のファイルサイズを取得するJavaのコード――Apache CommonsにあるFileUtilsのsizeOfDirectoryを使っただけだが――を書いたのだけど、どうもそれが出力するファイルサイズがおかしいと言われたので調べた結果と、awkがちょっと使えるよう…

先頭行にsedで文字列を挿入する

sh

良く忘れるのでメモ。 $ sed -e '1i<h1>Insert</h1>' file とか。"1i"が重要。"a"とかもあったような。

screenと.bashrcとscpと解決編

sh

screenと.bashrcとscpと - 四角革命前夜で微妙な対策をしたけど、それの本当の解決策。 if [ "$TERM" != 'screen' -a "$TERM" != 'dumb' ] then [ `which screen 2>/dev/null` ] && screen -rx || screen -D -RR fi dumb端末ってのがあるそうで。scpのときは…

端末の描画が固まる

C-sを押すと端末の描画が固まって、前から困っていたのですが解決方法がやっとわかったのでメモを。 stty stop undef を.bashrcに記述しておくといいみたいです。これで無効化しなくても、C-qで直すこともできるのですが…… screenを使っているので、screenの…

bashでパスワードを入力してもらう

sh

bashでパスワードを入力してもらう必要があるコードを書くことになったのですが、普通にreadで受け取ると画面に表示されるのですね。 どうにかならないのかなーと # man read してみると -s Silent mode. If input is coming from a terminal, characters ar…