概要 †
目次 †
疑問 †
問題集 †
DQ, SQ, 何もなしの違い †
A=test B=$A echo hoge # Bに"test"が入って、hogeが標準出力 B="$A echo hoge" # Bに"test echo hoge"が入る B='$A echo hoge' # Bに"$A echo hoge"が入る parallel †time seq 1000 | parallel -j 1 ./a.out | sort -n 3.6s time seq 1000 | parallel -j 8 ./a.out | sort -n 1.3s time seq 1000 | parallel ./a.out | sort -n #指定しないとコア数分並列化 1.3s
使用ケース †
ls orig/* | parallel -j 10 "echo < {} > {}.log"
cat big_size.txt | parallel --pipe -L 10000 "awk '{n+=$1}END{print n}'" > compressed
lr=(0 0.05 0.10) units=(100 200 300) parallel "./a.out {1} {2} > {1}_{2}.log" \ ::: ${lr[@]} ::: ${units[@]}
seq 10 | parallel bash -c "./game < sample1 > output{}" # -a - でパイプから入力を受け取る $ ls * | parallel -a - --dry-run echo echo a echo b # {} で場所を指定できる $ ls * | parallel -a - --dry-run echo {} end echo a end echo b end # アトミックな処理をしたいなら '' で囲む。というか基本的には囲んだほうがいい $ ls * | parallel -a - --dry-run 'echo {} 1; echo {} 2' echo a 1; echo a 2 echo b 1; echo b 2 echo test.xt 1; echo test.xt 2 echo x.txt 1; echo x.txt 2 # {.} で basename が取れる。test.sh なら test $ echo test.sh | parallel -a - --dry-run echo {.} sh -c echo test # zip の例 $ ls *.zip | parallel -a - --dry-run 'mkdir {.}; unzip {} -d {.}; rm {}' Tips †
計算 †VAR_LEFT=5 VAR_RIGHT=5 echo $(($VAR_LEFT + $VAR_RIGHT)) echo $(($VAR_LEFT - $VAR_RIGHT)) echo $(($VAR_LEFT * $VAR_RIGHT)) echo $(($VAR_LEFT / $VAR_RIGHT)) echo $(($VAR_LEFT % $VAR_RIGHT)) デバッグ †
bashとshの違い †
文法 †if †if [ $? -eq 1 ] # []の回りにスペース必須 then continue fi for †
終了ステータス †
配列 †list=("1332" "1333" "1605") # =の間にスペースを入れると死ぬ include †. list #listは実行可能である必要は無い find †find . find . -type f find . -type ! -name "*~" find . -type f -a \( -name "*.c" -o -name "*.h" \)
xargs †ls -1 | xargs echo find . -print0 | xargs -0 echo find . -print0 | xargs -0 -L1 echo find . -print0 | xargs -0 -L2 echo find . -print0 | xargs -0 -I{} echo "<{}>"
ls | sed -e "p;s/\.jpeg$/\.jpg/" | xargs -n2 mv for i in *.jpeg ; do mv $i `basename $i .jpeg`.jpg ; done
sed †
sed -e 's/#//'
sed -n 's/#//'
sed -n 's/#//p'
echo 'a a' | sed -e 's/ *//'
sed -e '1s/rep/p/'
awk †
echo "replot" | awk '{sub(/^rep/, "p", $0); print $0}' make †Makefileの\( のエスケープは \)$ backquote †echo hamu echo `echo hamu` echo `echo \`echo hamu\`` echo `echo \`echo \\\`echo hamu \\\`\`` for文 †for var in `echo "a b"` do echo ${var} done for var in `echo "a b"` ; do echo ${var} ; done
セパレータ †#!/bin/bash IFS=$'\n' for i in `cat file` do IFS=$' \t\n'で echo $i done $'' †中の\t, \b, \nなどを展開する。 echo "a\na" \n echo $'a\na' a a while †while read i;do echo $i;done < file
文字列の比較 †${var} = "A" ${var} != "A"
何もしない †: if †
if command ; then echo a ; fi
test †
if [ condition ] then expression fi if [ -e hoge ] ; then echo a ; fi
grep, egrep †
echo $' \t' | grep $'^[ \t]+$' ; echo $? 1 echo $' \t' | egrep $'^[ \t]+$' ; echo $? 0
echo $' \t' | grep -E $'^[ \t]+$' ; echo $? 1 $?とパイプ †echo "hoge" | grep "test" | echo $?
Gnuplot †式 †plot "file" u 1 plot "file" u ($1)
for †
1 2 3 2 3 2 3 5 2 5 8 1 plot for [i=1:3] "a" u i sprintf †plot for [i=1:3] sprintf("hoge%02d", i) t sprintf("hoge%02d", i)
system †
3 num = system("cat num.config") plot for [i=1:num] sprintf("hoge%02d", i) t sprintf("hoge%02d", i) 数字と文字列の連結 †n = system("awk '{print NF; exit}' motenc_state") replot for [i=2:n] "dv_motor" u i title "Motenc State".(i-1)." [unknown]" awk †1行目のフィールド数の取得 †awk '{print NF; exit}' file complete †complete †complete -o dirnames -f -X '!*.mp3' mp3nantoka.sh
comgen †
定石 †function _hoge { local arg opts COMPREPLY=() arg="${COMP_WORDS[COMP_CWORD]}" opts="`ls -1`" IFS=$'\n' COMPREPLY=($(compgen -W "${opts}" -- ${arg})) unset IFS } complete -F "_hoge" "hoge" Directoryのパスの場合 †complete -F "_plotter" -o "nospace" "plotter"
Dropbox †~/.dropbox-dist/dropboxd 自動起動 †Startup Aplicationからクリックで頑張る wget †
cron †
mail †echo "test" | mail wakataberyo@gmail.com sendmail †
md5sum †
iconv, nkf †
sed †
cat $i | sed -n 's/^.*`\(.*\)`のクラス.*$/\1/p';
![](images/IMAGE2_ITP1_11_B) ITP1_2_D ![](images/IMAGE2_circle_and_rectangle) ITP1_8_D $ cat test | sed -E '/^ITP/s/ITP/hoge/g' ![](images/IMAGE2_ITP1_11_B) hoge1_2_D ![](images/IMAGE2_circle_and_rectangle) hoge1_8_D sort †
jq †nkf †
cmake †cron †
MINUTELY_PATH=/home/ryo/git/stocks/utils/minutely_sh 16 19 * * * cd $MINUTELY_PATH; ./run.sh byobu †
emacs †チートシート †
自動補完 †
インストール †
$ cd /tmp $ wget -O- http://ftp.gnu.org/gnu/emacs/emacs-25.1.tar.xz | tar xJvf - $ cd emacs-25.1 $ sudo apt install libgtk-3-dev libwebkitgtk-3.0-dev libgif-dev Inconsolata $ ./configure --disable-largefile --with-x-toolkit=gtk3 \ --without-toolkit-scroll-bars --without-xaw3d --without-xim \ --without-compress-install --with-sound=no --without-pop \ --without-xpm --without-tiff --without-rsvg --without-gconf \ --without-gsettings --without-selinux --without-gpm \ --without-makeinfo --with-x --with-modules --with-xwidgets && time make $ sudo make install
wget †
mail †
pkgconfig †
# coolVisi Package Information for pkg-config prefix=/usr/local/isi exec_prefix=/usr/local/isi libdir=/usr/local/isi/lib includedir=/usr/local/isi/include/coolVisi-2.0 Name: libcoolVisi Description: ISI statistics and image processing library Version:2.0.0 Libs: -L/usr/lib/x86_64-linux-gnu/octave/3.8.1 -loctave -lcruft -lreadline -L/usr/local/isi/lib -lcoolVisi -ljpeg CFlags: -I/usr/include/octave-3.8.1 -I/usr/local/isi/include/coolVisi-2.0 git †
トラブルシューティング †
運用 †
逆引き †
理解すべきこと †
gnuplot †
eps(論文用) †set xrange [0:400] p "bla" u 1:4 w l rep "eigen" u 1:4 w l set terminal postscript eps enhanced color set output "out.eps" replot png †set xrange [0:400] p "bla" u 1:4 w l rep "eigen" u 1:4 w l set terminal png set output 'sinc.png' 点を打つ †set label 1 point pt 7 ps 3 lc rgb "dark-violet" at 0,0,800 ヒートマップ †set pm3d set pm3d map set ticslevel 0 set cbrange[-1:1] set palette defined (-1 "blue", 0 "white", 1 "red") splot "data" with pm3d
1 1 0.33 1 2 0.457 1 3 0.45 2 1 0.33 2 2 0.457 2 3 0.45 3 1 0.33 3 2 0.457 3 3 0.45 gnuplot自動化 †バッチモードとインタラクティブモード †
gnuplot -persist < file gnuplot -persist << EOF p 'a.txt' EOF 共通ファイル †
コマンド群のバッチ実行 †
ファイルによる実行(リダイレクト) †
EOFによる実行 †gnuplot -persist << EOF plot 'a.txt' u 1 EOF 描画すべきファイル名をシェルスクリプトの引数で指定する †
シェルスクリプトに全部突っ込む †
sedで置換 †
複数グラフ表示 †
Cからgnuplot操作 †
最小二乗法 †二次方程式 †
seq 10 | awk '{printf("%d %f\n", $0, $0 * $0 + rand());}' > data cat data gnuplot f(x)=a*x*x+b*x+c a=0.5;b=0;c=0; plot f(x), 'data' using 1:2 # not fitted yet fit f(x) 'data' u 1:2 via a,b,c plot f(x), 'data' using 1:2 # fitted! 指数関数 †
f(x)=a*(1-exp(-b*x)) # ''x=0での傾きはab、x=infでの速度はa、bは系に固有'' a=20.0;b=2.0; fit f(x) './0.6-5step-vel' u ($0/40):1 via a,b # /40は、25ms周期のサンプリングだから plot f(x), './0.6-5step-vel' using ($0/40):1 多変数関数 †
g(x,y)=a*x+b*y+c+d*x*y+e*x*x+f*y*y fit g(x,y) 'a' using 1:2:3:(1) via a,b,c,d,e,f sp g(x, y) rep 'a' plotの中にコマンドを突っ込む †
plot "<awk '$7 > 2.2049*$5-210.4416 {print}' mani" u 5:8 plot "<paste file1 file2 | awk '$1 > 2.0 {print}' multiplot †set multiplot layout 2,1 #multiplotの開始、縦2横1自動配置 set xrange [1950:2150] set yrange [500:1500] p "a" u 2 w l set yrange [-1.1:1.1] p "a" u 3 w l multiplotでreplot †
Qt Creator †Shortcuts †
:vsp clang †
実例 †Chrome 38からGCC 4.6に代わりClangが採用されるようになったのだが、この理由についてPhoronixが記事にしている。 これによると、Clang採用の理由はすでに多くの開発者がLinux上でClangを使っていたということと、C++のより新しい機能を利用するためらしい。Clangは診断出力が優れており、スピードも速く、さらにChromium(Chromeの開発版)に特化したClang向けプラグインも作られていたため、開発者のClangへの移行が進んでいたそうだ。GCCのより新しいバージョンではC++の新機能のサポートが進んでいるものの、GCCをアップグレードするよりもClangに移行したほうが容易だと判断したという。 実際にClangに移行したところ、性能面ではほとんど変化はなかったが、バイナリサイズは8%ほど小さくなった
dd †
pgrep †
kill †
screen †
valgrind †
参考 †
基本的な使い方 †
使いどころ †
まとまってないもの †
tmux †
コマンド †
vi †
メモ †vimのタブ系のコマンド.http://qiita.com/tekkoc/items/98adcadfa4bdc8b5a6ca noremapは,「vimの標準のものにマップする」という意味http://cocopon.me/blog/?p=3871 Vimの分割を平均的にする :new :q Vimの便利コマンドは検索したほうがいいかも.MとかHとか
q †
NeoBundle? †
mkdir -p ~.vim/bundle git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim
"--------------------------- " Start Neobundle Settings. "--------------------------- " bundleで管理するディレクトリを指定 set runtimepath+=~/.vim/bundle/neobundle.vim/ " Required: call neobundle#begin(expand('~/.vim/bundle/')) " neobundle自体をneobundleで管理 NeoBundleFetch 'Shougo/neobundle.vim' " 今後このあたりに追加のプラグインをどんどん書いて行きます!!" " 例 " NERDTreeを設定 NeoBundle 'scrooloose/nerdtree' call neobundle#end() " Required: filetype plugin indent on " 未インストールのプラグインがある場合、インストールするかどうかを尋ねてくれるようにする設定 " 毎回聞かれると邪魔な場合もあるので、この設定は任意です。 NeoBundleCheck "------------------------- " End Neobundle Settings. "-------------------------
vimsnippet †
vi a.cpp[enter] for[tab]int[tab]i[tab]0[tab]10[tab]cout<<i<<endl;[esc]
graphviz †
tar †
cpufreq-set †
chrt †
ifconfig †
ifconfig ifconfig eth0 zfs †ファイルシステムのスナップショット ab †
各種設定ファイル †
|