普段よく使うシェルスクリプト


なんか一部激しく間違った使い方をしているような気がする。

rrn

$ rrn
#!/bin/sh
rm *~

Shiftキー押しながら右手の小指で~を押すのって結構やりにくいので。
右手だけで押せないこともないけど、それだと手首をひねらないといけないのでそれはそれで嫌だ。

pon

$ pon
>>> 
$ pon test.py
#!/bin/sh
if [ -z $1 ]; then
    python
elif [ -n $1 ]; then
    python "$1"
fi

pythonってうちにくい。ただそれだけ。

rmremovecommit

$ rmremovecommit (ファイル名)
#!/bin/sh
rm $1
cvs remove $1
cvs commit $1

話は変わるけど、CVSってremoveしてもファイルのログは残るんだよね。

apt-update_grade

$ apt-update_grade
#/bin/sh
apt-get update
apt-get upgrade

upgradeはupdateの後じゃないと意味ないので。

cubicssh

$ cubicssh
#!/bin/sh
ssh cubicdaiya.no-ip.info

環境変数設定しろよと言われそうだけど、それでもこっちの方が速い。2, 3文字打てば後はTabキー。

kitccvs

$ kitccvs checkout wikitcc
$ kitccvs update
$ kitccvs commit
#!/bin/bash
if [ -z $2 ]; then
    cvs -d :ext:(アカウント)@(ドメイン):(リポジトリへのパス) "$1"
elif [ -n $2 ]; then
    cvs -d :ext:(アカウント)@(ドメイン):(リポジトリへのパス) "$1" "$2"
fi

書いた後で気づいたけど、updateとかcommitするときは普通にcvs updateとかcvs commitでも問題ない。
しかし、↑でも特に問題ないのでそのまま。環境変数設定以下略(cubicsshに同じ)

chownmod

$ chownmod (ファイル名)
#!/bin/bash
chown -R username "$1"
chmod -R (パーミッション) "$1"

同じPCにインストールしてあるWindowsからLinuxにファイルを持ってきた後に使う。

mvmusicfn

$ mvmusicfn *.mp3
#!/usr/bin/ruby

#Windows Media Playerで取り込んだ音楽ファイル名から無駄な数字を取り除く

array_fn = ARGV

array_fn.each do |s|
  ss = s.gsub(/^[0-9]{2,2}\s/, "")
  File.rename(s, ss)
end


WMPで取り込んだ音楽ファイルは勝手に番号がファイル名の先頭に付くのでそれを取り除くために使ってる。
ちなみにこれだけRubyなのはシェルスクリプトだと恐ろしく面倒だということに書いてて気づいたため。


シェルスクリプト基本リファレンス

シェルスクリプト基本リファレンス


そういや、シェルスクリプトの本って読んだことないなあと思いつつ、実家の近くの本屋で衝動買い。
これ読み終わったらzshに挑戦してみようかな。しばらく積んでそうですが。