シェルスクリプトを作成するときに、よく使うけれどよく忘れるワンライナーの覚書です。解説を省いているので、一度経験した人用の備忘録。意外に少なかったので増やしていきたい。
カレントディレクトリにあるファイルの総量
du -sh ./
簡単な複数行コメントアウト
: '
'
もしくは
<< COMM
COMM
shellスクリプトのコマンドを画面に出力して実行してくれる
#!/bin/bash -x
パスの最後のファイル名だけを取得。
FILE_NAME=`echo ${FILEPATH} | awk -F "/" '{ print $NF }'`
basenameの使い方を教えていただきました。-aを使うと複数ファイルにも対応できるようです。
basename -s .txt -a $file $file2
- -s: 除きたい添字を指定すると、パスの最後に記載されているファイル名を取得するだけでなく、添字の文字列を除去して出力が得られる。
- -a: 複数のファイル名を指定できる。
特定の拡張子(例はVCFファイル)のファイルを現在のフォルダ内から検索する。
find ./ -name \*.vcf
screenのソケットを削除
screen -r -X quit
rm -rf /var/run/screen/S-ユーザ名/*
日付を入れる
timestamp=`date +"%Y%m%d%I%M"`
perl ワンライナーで1行処理
perl -nle
- n: 1行処理
- l: \nを省略
- e: ワンライナーとしての宣言
ファイル内のURLを抜き出してダウンロードする
awk '($0 ~ /(http.*jpg)/){print $0; system("wget " $1)}' urllist.txt
xargsを使って、pipeで並列化する例、samtools
samtools view -H $BAM | grep "\@SQ" | sed 's/^.*SN://g' | cut -f 1 | xargs -I {} -n 1 -P 26 sh -c "samtools mpileup -BQ0 -d 100000 -uf $REFFASTA -r {} $BAM | bcftools view -vcg - > tmp.{}.vcf"
xargs
- -I: indexをつけて出力ファイルを分割する。
- -P: 実行するプログラムの最大のプロセス数
- -n: 1ならば、pipeされたテキストを一行ずつ読み込んで-c以下のプログラムに渡す。
- sh: 渡すプログラムの種類をshellスクリプトとして指定している
- -c: 具体的なシェルスクリプト。
qsubに環境変数を食わせる
env OUTDIR=$OUTDIRNAME env INIFILE=$FPATH qsub -V /home/suimye/test.sh