揮発性のメモ2

http://d.hatena.ne.jp/iww/

bash

ネットマスクの /8 とか /16 とかの表記を 255.0.0.0 とか 255.255.0.0 とかに変換するbashスクリプト

あの 192.168.0.1/8 みたいなおしゃれな書き方を Classless Inter-Domain Routing(CIDR:サイダー) と呼ぶらしい。 IPアドレスとサブネットマスクをまとめて表記する:Tech TIPS - @IT #!/bin/bash A=$1 C=$(( 2**(32-$A)-1 )) D=$(( 0xFFFFFFFF^$C )) E1…

192.168.0.1〜192.168.0.254 までpingを打って結果の一覧を作る

echo -e 192.168.0.{1..254}\\n \ | xargs -IXXX -P30 bash -c 'ping -c1 -w1 XXX >&/dev/null; echo XXX $?' \ | sort -V > ping.txt for文で回すと1件ずつしか動かせないので、xargsで30件ずつくらい並行処理する。 並列処理すると当然結果はばらばらにな…

ディレクトリの中身をコピーする

× cp -a hoge/* piyo/ ○ cp -a hoge/. piyo/ *を使うと一旦展開されるのがダサいし、そもそもとして隠しファイルがコピーされないのはマズい。

teratermで罫線の表示 3

罫線のあるテキストをviで読んだ時に罫線が半角扱いになるためクシャっとなる問題teratermで罫線の表示 2 - 揮発性のメモ の続き Teraterm上で罫線を全角幅で表示する TERATERM.INIを編集 UnicodeToDecSpMapping=0 これにより、端末での表示上は全角になる…

結果がOKだったらOK、エラーだったらNGと表示する

make && echo OK || echo NG 逆に書くと当然アホになる

bashのコマンドラインで、コマンドを途中まで打ってからヒストリを検索する

便利な shell いろいろ Bashについていくつか - 備忘録 beta bash の履歴入力で前方一致検索を有効にする bind '"\e[A": history-search-backward' bind '"\e[B": history-search-forward'コマンドを途中まで打って、カーソルキーの上下でヒストリーを検索で…

flockコマンドをflock関数みたいに使う 2

flockコマンドをflock関数みたいに使う - 揮発性のメモ リダイレクトでファイルディスクリプタを指定するとき、番号を直接指定しているのがいやだったけど、 変数名を指定することで自動で空いている番号を使用してくれることがわかった 参考:本を読む exec…

bashで配列

dashには配列がない。 配列宣言、初期化 $ A=() $ B=(111 "HOGE" 333) $ C[1]=jikken ()をつけて並べて書くと、添え字0から順につっこまれる 要素数 $ echo ${#B[@]} 3 $ echo ${#C[*]} 1 @でも*でもどっちでもいい。 要素の取り出し $ echo ${B[@]} 111 HOG…

今実行しているコマンドをウィンドウタイトルに表示する

端末をたくさん開いている状態で、 tailとかmakeとか長い処理してると どの端末でなにをしてるかわかんなくなるので、 今実行しているコマンドをウィンドウタイトルに表示したいので、表示した。 .bashrc にこれを書き足す # window title trap 'echo -ne "\…

末尾に ?> がありそうなPHPファイル一覧

ケツ10行以内に ?> で始まっている行があれば、怪しいと判断する #!/bin/sh (tail $1 | grep -qe '^?>') && echo $1 find -name "*.php" | xargs -n1 hoge.sh

bashで履歴検索

CTRL+Rで最新から過去の方向へインクリメンタルサーチ開始 (reverse-i-search)`history': history` ' で囲まれた部分が検索対象文字列 インクリメンタルサーチのモードのとき(このプロンプトがでているとき)は CTRL+Rで過去の方向、CTRL+Sで現在の方向へ検…

bashの履歴をダブらせない

ignoredupsが効いてない感じがしたので、erasedupsも設定することにした # history export HISTCONTROL=ignoreboth:erasedups export HISTSIZE=2000 export HISTFILESIZE=40000 export HISTTIMEFORMAT='%m/%d %T ' historyコマンド関連のシェル変数 | Cardif…

ディレクトリを作って移動する

ディレクトリを作って移動する mkcd というコマンド mkcd() { mkdir -p "$1" && cd "$_"; } エイリアスだと引数を途中に使えないので関数にする。 失敗したら途中で終わるよう && でつなげる。

ディレクトリごとにCSVファイルの数を数えて出力

#!/bin/sh DIR=$1 DLIST=`find $DIR -type d` for D in $DLIST; do COUNT=`find $D -maxdepth 1 -iname "*.csv"|wc -l` if [ "$COUNT" -gt 0 ]; then echo $D:$COUNT fi done

BASHの脆弱性で、PHPはどうなっちゃうか

ApacheでPHPスクリプト起動してるけど、モジュール版なら大丈夫っぽい。 Apacheの設定 AddHandler cgi-script .cgi AddHandler php5-script .php.cgi は環境変数を全部もらえるので、bash(system関数)呼出時に今回の脆弱性に引っかかる。 .php はsystem関数…

ドラッグ&ドロップでascファイルを解凍するバッチファイル

@echo off set PATH=D:\cygwin\bin;%PATH% set Password=hogehoge set OutputFolder=D:\MyDoc\download set InputFile=%1 set OutputFile=%OutputFolder%\%~n1 bash -c 'echo %Password% | gpg --batch --yes --passphrase-fd 0 -o %OutputFile% %InputFile%'

bashで、そのコマンドがあるかどうかチェックする

コマンドhogeが、実行できるかどうかをチェックする つまり、実行ファイルか エイリアスか 関数か を判定する hogeが実行ファイルかどうかを判定する $ which hoge /usr/local/bin/hogewhichコマンドでチェックする。 成功すれば、何が実行されるかパスを表…

readで hoge=1 を分割する

IFS='=' read A B < /tmp/piyo.txt echo $A=$B http://linuxjm.sourceforge.jp/html/GNU_bash/man1/bash.1.html

dateコマンドでミリ秒まで出す2

A=$(printf "%.23s" "$(date +'%Y-%m-%d %H:%M:%S.%N')") http://d.hatena.ne.jp/iww/20120616/date

標準エラー出力を赤くする

標準エラー出力を赤く表示するコマンド bash: print stderr in red color - Server Fault ここの color というコマンドがスーパー超便利 コード .bashrcにでも書いとく color() { set -o pipefail; "$@" 2>&1>&3|sed $'s,.*,\e[31m&\e[m,'>&2; } 3>&1 使い方…

現在使っているシェルの名前を知る方法

今使用中のシェルを調べる方法。 ログインシェルではなく、そのスクリプトを実行するときに使われてるシェルを知りたい。 とりあえず、シェバングにdash書いたら dashと表示させたい。 $SHELLを使う SHELLはログインシェルなので、今使われているシェルを表…

ファイルが出来るのを待つ。すでに出来てたら待たない。

inotifywait はエッジトリガなので、待ち始める直前にファイルを作られると詰む。 inotifyfilewait (){ FILENAME="$1" DIRNAME=`dirname $FILENAME`/ while [ ! -f $FILENAME ]; do inotifywait -q -e CREATE -t 1 $DIRNAME >/dev/null done } 使い方:指定…

ファイルを1行読んで変数に入れる

遅いし1行じゃない VAL=`cat /tmp/hoge.txt` 速いし1行だけ読める read VAL </tmp/hoge.txt ループの中はできるだけ内部コマンドだけで頑張りたい readコマンドを使うとき、ファイルが開けない等のエラーが発生したときのエラーメッセージを 2>/dev/null では非表示に出来ないので、事前にちゃんとファイルチェックをおこないそもそもエラーが発生しないよう気を使うこと

bashのif文

いろんなサイトのコピペ。 印刷して壁に貼っとく用。あとでどんどん追記する。 数値系 真の条件 備考 "$A" -eq "$B" A==B "$A" -ne "$B" A!=B "$A" -lt "$B" A 小なり "$A" -le "$B" A "$A" -gt "$B" A > B 大なり "$A" -ge "$B" A>=B 文字列系 真の条件 備…

bashで文字列の辞書比較をするときには、演算子を""で囲う

$ [ "A" < "B" ] && echo OK -bash: B: そのようなファイルやディレクトリはありません $ if [ "A" < "B" ]; then echo OK; fi -bash: B: そのようなファイルやディレクトリはありません [ はコマンドなので、大なり > や小なり 思ったとおり動作させさいと…

JDでDAT落ちしたログを消去する

Tips - JD for Linux Wiki - JD for Linux - OSDN これだと消し忘れが残るので一応全部消すように変更した #!/bin/sh DIR=${JD_CACHE:-~/.jd} find $DIR -type f -regex ".*/info/[0-9]+\.info$" \ | xargs grep -H "status =" \ | perl -nle '/^(.*)\/info\…

パイプの途中のエラーを取る

bash3.2.25とbash4.1.5で実験 参考:http://mlog.euqset.org/archives/linux-users/106994.html システム変数PIPESTATUSを使う $ (exit 1) | (exit 0) | (exit 3) | (exit 0) $ echo ${PIPESTATUS[@]} 1 0 3 0 PIPESTATUSという配列に、最後にパイプ使ったと…

コマンドライン引数の取得

./a.out abc あいうえお '' 山田みたいなのをコマンドラインで渡したときの引数の取り方と、取れ方 java public class hoge { public static void main(String[] args) { System.out.println( "args.length=" + args.length ); for (int i=0; i

gitのタイムスタンプをコミット時の時刻にする

本当はオリジナルのタイムスタンプを復元したいんだけど、それは失われるらしい http://stackoverflow.com/questions/2179722/checking-out-old-file-with-original-create-modified-timestamps このスクリプトが何用かわからなかったので、改造して使えるよ…

日付フォーマット出力

2012-10-03 16:33:58 みたいに出力する perl my ($S,$M,$H,$d,$m,$Y,$x) = localtime(); my $date = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $Y+1900,$m+1,$d,$H,$M,$S ); print "$date\n"; use POSIX qw(strftime); $date = strftime( "%Y-%m-%d %H:%M:…