GNU grep 2.25 で、pat1またはpat2の検索 $ grep '¥(pat1¥|pat2¥)' file .frcmodで終わる検索 $ grep '¥.frcmod$' file GNU emacs24.5.1 で、pat1またはpat2の検索 M-x query-replace-regexp や M-x occur で、条件は ¥(pat1¥|pat2¥)
grep | egrep | emacs | python | |
[...], ^, $ | v | v | v | v |
\<...\>, \b, \B | v | v | v | v |
グループ化 | \(...\) | (...) | \(...\) | \(...\) |
(...)* | v | v | v | v |
+ or \+ | \+ | + | + | + |
? or \? | \? | ? | ? | ? |
{...} or \{...\} 反復回数 | \{...\} | {...} | ・ | ・ |
\ or \| | \| | | | \| | \| |
リンク・マニュアル
例
$ tree --charset=C -I '*.pdb|*.gro|OUT.*|chignolin.*|genion.*|*~|*.cpt|*.edr|*.xtc|*.tpr|*.mdp|*.trr|*.top|*.o???[0-9]|min.log' ¥ | less > temp
X11, X, X Window System, 環境変数DISPLAY, ssh -Y などに関する背景はこちらを読め
$ ssh hostname として @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! になったとき、いったん $ ssh-keygen -R hostname としてから、もしくはsshがサジェストしたコマンドを実行してから、ssh接続する。 IPアドレスについても同様に削除するとよい。
$ diff -r hogehoge1 hogehoge2
$ find . -newer hogehoge -print
(HOGEDIRの部分は . など)
(参考) find $HOGEDIR -path '*\.trj' (参考) find $HOGEDIR -path '*\.trj' -printf "%p\t%s\n" | awk '{print $1 "\t" $2/1000/1000/1000 " GB"}' #ファイルサイズも表示 find $HOGEDIR -path '*\.trj' -printf "%p\t%s\n" | awk '{sum+=$2; print $1 "\t" $2/1000/1000/1000 " GB"} END{print sum/1000/1000/1000 " GB"}' #合計サイズも求める (参考) find $HOGEDIR -path '*\.trj' -printf "%p\t%s\n" | awk '{sum+=$2} END{print sum/1000/1000/1000 " GB"}' #合計サイズだけ求める
find $HOGEDIR -path '*\.trj' -delete 例えば、いくつかの拡張子のファイルを一気に削除する場合 find $HOGEDIR -path '*\.trj' -delete; find $HOGEDIR -path '*\.rst' -delete; find $HOGEDIR -path '*\.nuc' -delete; find $HOGEDIR -path '*\.vtk' -delete;
$HOGEDIRディレクトリの階層以下で、ファイルの末尾が .trjであるファイルのリストに対して、それぞれ個別に ls -1をする。 # {}はヒットしたパス名に置き換わる、\;は -execオプションの末尾として ;を与えるためにシェルのメタキャラをエスケープしている部分。 (参考) find $HOGEDIR -path '*\.trj' -exec ls -1 {} \;
# Find and then delete all files under current directory (.) that: # 1. contains cmake (case-&insensitive) in it's path (wholename) # 2. name is not CMakeLists.txt find . -iwholename '*cmake*' -not -name CMakeLists.txt -delete
find Adir -maxdepth 1 ! -regex '.*ABC.*' -type f -exec echo cp -ip {} Bdir/ \;
Adirディレクトリにある、ABC文字列を含むファイル名以外を、Bdirにコピーする。 なお、ディレクトリ名にABCが入っていてはダメ。。。?
$ dig -x 133.60.113.208 +short #ホスト名だけ出力 orange.eit.hirosaki-u.ac.jp. $ dig +noall +answer -x 133.60.113.208 #タイトル無しで、answer sectionだけ出力 208.113.60.133.in-addr.arpa. 3600 IN PTR orange.eit.hirosaki-u.ac.jp.
プログラムは -g つきでコンパイルしておく。
gdb a.out > run
http://antibayesian.hateblo.jp/entry/2014/09/15/162605
1ライナーで統計処理あり。なお、Linux上ではbashのメタキャラが展開されるので " は ' としなければならない。 awkインタプリタなので、実行はすごく遅い。 (例) 度数分布。binは幅 awk 'BEGIN{ bin=1.0 } { f[ int($1/bin) ]++ } END{ for( i in f ) print i*bin, f[i] }' < data.txt
bc -ls とする
bc -l とすること(オプション -l)で、標準的な数学関数が使えるようになる
s (x) The sine of x, x is in radians. c (x) The cosine of x, x is in radians. a (x) The arctangent of x, arctangent returns radians. l (x) The natural logarithm of x. e (x) The exponential function of raising e to the value x. j (n,x) The bessel function of integer order n of x.
例1) log_2 (x)
define lg(x) { return (l(x) / l(2)); }
例2) 二点間の距離
define dist (x,y,z,u,v,w) { return sqrt((x-u)*(x-u)+(y-v)*(y-v)+(z-w)*(z-w)); }
例3) 羃乗
define pow (x,y) { auto k, ans; ans=1; for ( k=0; k<y; k++ ) { ans = ans*x; } return ans; }
その他は man bc を参照のこと
平方根は sqrt( )
1.23e-4とかの表現は可能か?
topコマンドで覚えておきたい使い方14個 [#x0821353]
while true; do for i in 1 2 3 4; do ssh compute-0-$i "hostname; top -b -n 1 | sed '2,6d' | head -7" done echo ------------------------------------------------------------------------------- sleep 5 done
#このオプションがよい?
-A 全てのプロセスを選択する -C cmdlist コマンド名で選択する。 -u userlist 実効ユーザIDまたは実効ユーザ名で選択する。 -l 長いフォーマット。 --forest ASCII art process treeで表示。
<defunct>マーク
プロセスはゾンビであることを示す。親プロセスによって正しく消去されていないために残っている。親プロセスが終了するとinitによって消去される。
プロセスの状態コード
D 割り込み不可能なスリープ状態(通常I/O中) R 実行中又は実行可能状態 S 割り込み可能なスリープ状態 T ジョブ制御シグナルまたはトレースされているために停止中の状態 Z ゾンビプロセス
Fカラム(プロセスフラグ)
次の値の合計 1 fork された(execは含まず) 4 スーパーユーザー権限を使っている
man ps を参照のこと
$ rsync -av -e ssh --delete EPG username@machine:/disk1
EPGディレクトリを、/disk1ディレクトリ内にrsyncする。
(危険注意) EPG ではなく、EPG/ とすると、disk1の中にEPGディレクトリが出来るのではなく、 元のdisk1が丸ごと削除(disk1に他のファイル・ディレクトリがあるとそれは削除)されて、 disk1の内容がEPGになるので非常に危ない。
各オプションの意味
-a equivalent to -rlptgoD -v increase verbosity -e specify the remote shell to use --delete delete files that don't exist on the sending side -r recurse into directories -l copy symlinks as symlinks -p preserve permissions -t preserve times -g preserve group -o preserve owner (root only) -D preserve devices (root only)
rootで作業する(ファイルのパーミッションを保つため。一般ユーザの場合そのユーザー所有に変更される)
# find DIRECTORY | cpio -vo > FILE.cpio #コピーアウトモードと呼ばれる -v は表示
rootで作業する(アーカイブFILE.cpioにファイルが絶対パスで収められていたらそこに書き込まれるめ。 相対パスならカレントディレクトリから相対的に書き込まれる。変更のコントロールは出来ない?)
# cpio -vidmu < FILE.cpio #コピーインモードと呼ばれる -v は表示 -d はディレクトリが無ければ作る -m は日付を保つ -u は上書きをする(付けない方が無難か)
$ cpio -tv < FILE.cpio