LoginSignup
1
2

More than 3 years have passed since last update.

shell script tips 備忘録

Last updated at Posted at 2019-06-19

シェルスクリプトを作成するときに、よく使うけれどよく忘れるワンライナーの覚書です。解説を省いているので、一度経験した人用の備忘録。意外に少なかったので増やしていきたい。

カレントディレクトリにあるファイルの総量

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
1
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2