SakamonWeb
New
Tools
Index
Edit
Unix/bash
<< 簡単な計算 >> <pre> > echo $((3+4*2)) 11 </pre> << 基数変換 >> 16進数→10進数(hex2dec) <pre> a=10; b=11; c=12; d=13; e=14; f=15 A=10; B=11; C=12; D=13; E=14; F=15 dec=(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) hex2dec (){ s=$(echo ${1}|sed 's/\(.\)/\1 /g') q=0 for n in ${s} do q=$(expr 16 \* ${q} + ${dec[${n}]}) done echo -n ${q} } </pre> <pre> > echo $(( 0x110 )) 272 </pre> 10進数→16進数(dec2hex) <pre> hex=(0 1 2 3 4 5 6 7 8 9 a b c d e f) dec2hex () { s=${1} if [ ${s} -gt 15 ]; then dec2hex $(expr ${s} / 16) s=$(expr ${1} % 16) fi echo -n ${hex[${s}]} } </pre> << URLエンコード >> URLデコード <pre> > echo "http%3A%2F%2Fsakamoto%2Efam%2Ecx%2F" | tr % = | nkf -emQ http://sakamoto.fam.cx/ > echo "http%3A%2F%2Fsakamoto%2Efam%2Ecx%2F" | echo -e "$(sed 's/%/\\x/g')" http://sakamoto.fam.cx/ </pre> URLエンコード <pre> > echo "http://sakamoto.fam.cx/| nkf -eMQ | tr = % http%3A%2F%2Fsakamoto%2Efam%2Ecx%2F > echo -n "http://sakamoto.fam.cx" | echo -n ${1-`cat`} | od -t x1 -A n | tr " " % | tr -d "\n" %68%74%74%70%3a%2f%2f%73%61%6b%61%6d%6f%74%6f%2e%66%61%6d%2e%63%78bash-5.0$ </pre> << 日付変換 >> 日付文字 ⇒ UnixTime <pre> > date -d "2017-05-24 00:00:00" +%s </pre> UnixTime ⇒ 日付文字 <pre> > date -d "@1495551600" </pre> << 標準入力 >> 標準入力の文字列を事前に指定する <pre> $ cat <<<"any words" any words </pre> << 評価 >> 文字列をコマンドとして評価する <pre> $ eval $(echo echo abc) abc </pre> << ネットワーク >> TCP通信の疎通確認 192.168.0.1サーバの80/tcpへ通信できるか確認する <pre> $ echo 0 > /dev/tcp/192.168.0.1/80 $ ←接続できた場合はプロンプトが返ってくる $ echo 0 > /dev/tcp/192.168.0.1/80 ←接続できない場合はずっと待たされる </pre> << プロセス置換 >> プロセスの実行結果をディスクリプタへ書き込み。再利用する。 5秒前のプロセス状態との比較を行う例 8< $ diff -u <(ps ax) <(sleep 5; ps ax) >8 <(プロセスA) ・・・プロセスの結果が/dev/fd/xx に書き込まれるイメージ。((br)) つまり、上記は/dev/fd/yと/dev/fd/zを読みこんで比較していると思われる。 << null文字 >> echo コマンドの制御コード評価を有効にするオプション(-e)を利用する。 ((br))null文字(\0)の後に数値を繋げると別の意味になるので要注意。 8< $ echo -e "123\0abc\0" | od -c 000000 1 2 3 \0 a b c \0 \n $ $ echo -en "123\0abc\0" | od -c 000000 1 2 3 \0 a b c \0 $ $ echo -en "abc\0123\0" | od -c 000000 a b c S \0 $ $ echo -en "abc\0\x3123\0" | od -c 000000 a b c \0 1 2 3 \0 $ >8 << ASCIIコード >> null文字以外にも、[ASCIIコード|https://ja.wikipedia.org/wiki/ASCII]を指定することで任意の文字を表示できる。 ((br)) 複雑なリモート接続等でキーボードのアサインがずれた場合に便利。かも。 8< $ echo -e "\x7c" | $ echo -e "\x5c" \ >8
Sign:
freeze
sage
Attachment
New:
Sign:
Rename
Title:
Sign: