CommandLine の変更点   

  • 追加された行はこの色です。
  • 削除された行はこの色です。
  • CommandLine へ行く。

#author("2018-06-14T04:02:15+00:00","default:pentacle","pentacle")
* shutdown [#zc84b1e5]
** 再起動 [#x657b376]
 reboot
あるいは
 shutdown -r now 

** シャットダウン [#a300152b]
 shutdown -h now

効かない場合
 echo s > /proc/sysrq-trigger
 echo u > /proc/sysrq-trigger
 echo b > /proc/sysrq-trigger

* sed [#n0c5d564]
文字列の置換。 tr は同じ長さしか置換できないがこれは長さが違ってもできる
 sed "s/http/https/" input.txt > output.txt

* xargs [#r48f74fd]
 リターンで羅列された文字列をスペースで連結してシェルに渡せるように

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 [#be05c736]
16進数 <->  binary 相互変換を行う

ダンプ
 $ xxd -g 1 binaryfile
復帰
 $ echo 'aabb' | xxd -r -p

* find [#g27604f3]
 そのディレクトリ以下の ごみファイルを全消し
 find -name '*~' |xargs rm 

* cut [#r4854bdf]
 " で区切られた文字列の2番目を取り出す
 cut -d '"' -f 2

* ファイル中の特定文字列を一括変換 [#v8fa2f64]
 # find . -name '*.txt' | xargs grep -l '[regexp]' | xargs sed -i.bak 's/[regexp]/[replacement]/g'

* バイトカット [#k11a8220]
 head コマンドのバイナリ版
 dd if=inputfile of=outputfile bs=1 skip=6 [count=5]
 5バイト目から 6バイト


* 標準エラー出力 [#fb6f4c01]
 make 2>&1 |less
 make のエラー出力を less で確認

* mke2fs [#pf44b747]
format コマンドのようなもん
 mke2fs -j /dev/hdb1

* xml をパース [#w0cd5711]
 <?xml version="1.0" encoding="utf-8"?>
 <data>
   <timestamp>1278479900154</timestamp>
 </data> 

 xpath hoge.xml "//data/timestamp/text()" 2>/dev/nulll
※ stderr にゴミがつくので捨てる

* date [#eb04a639]
*** formatting [#q693bd7e]
 date +'%Y%m%d-%H%M'

*** unixtime => string [#dda5c81e]
 date -d @1278479900

*** str => unixtime [#qe578ec9]
 date --date '20100729 19:11' +'%s'

*** csv 中の date -> unixtime変換 [#p4563b88]
 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 変換 [#k2cf9208]
 awk -F, '{print strftime("%Y/%m/%d %H:%M:%S",$3);}' file.csv


* xml中の timestamp をパースして date で見てみる例 [#g07bf1a8]
 (echo -n @; echo `xpath data.xml "//data/timestamp/text()" 2>/dev/null` / 1000 | bc ) |xargs date +'%Y/%m/%d %H:%M:%S' -d