ようこそゲストさん

Kerosoft : Modus Operandi

2008/07/11(Fri) 便利コマンド on Linux

はてブ情報 はてブに登録 はてブ数 2008/07/11 18:19 Software::Linux
Linuxのシェルは拡張性がヤバいですね。
Linuxを使い始めたときからbash一筋な私ですが、.bashrcに色々と拡張関数を作って便利に使っているので、少し紹介してみます。

コンパイラ系 省略コマンド

コンパイルしたら自動的にそのプログラム名で出力して欲しい!ってことで、N先生に作り方を教わったコマンド。
a.outのままだと、後からみてどのプログラムのコンパイル結果なのか分からないし、既存のと被る可能性があるからなぁ。
  • Usage: $ gcc prog.c
# gcc
function gcc(){
    pn=`echo $1 | sed -e 's/\.cp\?p\?//'`
    command gcc -Wall -lm -o $pn $*
}
# g++
function g++(){
    pn=`echo $1 | sed -e 's/\.cpp//'`
    command g++ -Wall -lm -o $pn $*
}
# cc
function cc(){
    pn=`echo $1 | sed -e 's/\.c//'`
    command cc -Wall -lm -o $pn $*
}

プログラムコンパイルから出力をファイルに書くまで一発なコマンド

まぁごくたまに使いますかねぇ。大量のinputをプログラムに流し込んだ結果をとりたいときとか。
  • Usage: $ start prog.c input.dat
function start(){
    pn=`echo $1 | sed -e 's/\.c//'`
    command cc -Wall -lm -o $pn $1; ./$pn $2 &> $pn.result; cat $pn.result
}

ファイルの中をぐるぐる検索してくれるコマンド

でも、最近は$ grep -r HOGE ./ で事足りるじゃん…と思って使ってない。
  • Usage: $ exgrep HOGE
# File grep
function exgrep(){
    command find ./ -type f -exec grep -l "$1" {} \;
}

ディレクトリ内のtarballを一気に解凍するコマンド

さっき必要だったので作ってみた。
$ tar zxvf *.tar.gzでディレクトリ内の全ての.tar.gzを解凍してほしかったんだけど(apacheログの日ごとにtarballしていたものを解凍したかった)、いちいちforとか打つの面倒だなと思って。
  • Usage: $ extar *.tar.gz
# Expand decompress .tar.gz
function extar(){
    for TGZ in $@
    do
        tar zxvf ${TGZ}
    done
}

どーでもいいけど、シェルスクリプトってifの対がfiだったり、caseの対がesacなのに、doの対はodじゃないんだね^^;
参考になった記事や興味深かった記事は、他の人も見つけやすいようにリンクはてブしていただけると助かります…。 コメントも歓迎です。

名前:  非公開コメント   

  • TB-URL  http://mo.kerosoft.com/042/tb/