shutdown†
再起動†
reboot
あるいは
shutdown -r now
シャットダウン†
shutdown -h now
効かない場合
echo s > /proc/sysrq-trigger
echo u > /proc/sysrq-trigger
echo b > /proc/sysrq-trigger
sed†
文字列の置換。 tr は同じ長さしか置換できないがこれは長さが違ってもできる
sed "s/http/https/" input.txt > output.txt
xargs†
リターンで羅列された文字列をスペースで連結してシェルに渡せるように
input.txt
http://aaa.com/
http://bbb.com/
http://ccc.com/
cat input.txt |xargs wget
wget http://aaa.com http://bbb.com http://ccc.com
と等価になる。
ちなみに引数を再帰的に実行しないコマンドに渡す場合は
xargs -n1 command
とすると1引数ごとに1回コマンドが発行される
find -name "*.csv" | xargs -I{} sh -c 'cat {} > {}.2'
とすると {} の部分が入力ファイル名に変換される
xxd†
16進数 <-> binary 相互変換を行う
ダンプ
$ xxd -g 1 binaryfile
復帰
$ echo 'aabb' | xxd -r -p
find†
そのディレクトリ以下の ごみファイルを全消し
find -name '*~' |xargs rm
cut†
" で区切られた文字列の2番目を取り出す
cut -d '"' -f 2
ファイル中の特定文字列を一括変換†
# find . -name '*.txt' | xargs grep -l '[regexp]' | xargs sed -i.bak 's/[regexp]/[replacement]/g'
バイトカット†
head コマンドのバイナリ版
dd if=inputfile of=outputfile bs=1 skip=6 [count=5]
5バイト目から 6バイト
標準エラー出力†
make 2>&1 |less
make のエラー出力を less で確認
mke2fs†
format コマンドのようなもん
mke2fs -j /dev/hdb1
xml をパース†
<?xml version="1.0" encoding="utf-8"?>
<data>
<timestamp>1278479900154</timestamp>
</data>
xpath hoge.xml "//data/timestamp/text()" 2>/dev/nulll
※ stderr にゴミがつくので捨てる
date†
formatting†
date +'%Y%m%d-%H%M'
unixtime => string†
date -d @1278479900
str => unixtime†
date --date '20100729 19:11' +'%s'
csv 中の date -> unixtime変換†
cat hoge.csv | sed -r "s|(.{4})/(.{2})/(.{2}) (.{2}):(.{2}):(.{2})|\1 \2 \3 \4 \5 \6|" |awk -F, '{FS=","; OFS=","} {print $1,mktime($2),$3;}'
$1,$3 の数はお好みで
csv 中の unixtime -> date 変換†
awk -F, '{print strftime("%Y/%m/%d %H:%M:%S",$3);}' file.csv
xml中の timestamp をパースして date で見てみる例†
(echo -n @; echo `xpath data.xml "//data/timestamp/text()" 2>/dev/null` / 1000 | bc ) |xargs date +'%Y/%m/%d %H:%M:%S' -d