rmコマンド的な関数を書いてみた
背景
ファイルをrmコマンドで消して、後日、そのファイルが必要になったりする。
どこかに移動してくれるコマンドがあったら嬉しい。
それ、mvコマンドでできるよ。
でも、移動先を毎回指定するのは面倒だよね。
じゃあ、zshの勉強の機会に関数でも作ってみたら〜。
準備
関数dlを置く。
~/.zfunc/dl
1 function dl () { 2 if [ $# -eq 0 ] 3 then 4 echo "Usage!!!" 5 return 1 6 fi 7 8 [ -d ~/.Trash ] || mkdir ~/.Trash 9 10 for file in $* 11 do 12 if [ -e $file ] 13 then 14 FNAME=`basename $file` 15 TAG=`date +%y%m%d%H%M%S` 16 mv $file ~/.Trash/${FNAME}.${TAG}.${RANDOM} 17 else 18 echo "No such file or directory:$file" 19 fi 20 done 21 unset file FNAME TAG 22 return 0 23 }
変数FPATHにパスを追加して関数を探せるようにする。
~/.zshenv
export FPATH=~/.zfunc/:$FPATH
関数を呼び出して使えるようにする。
~/.zshrc
autoload -U dl
これで関数dlが使えるようになる。
使ってみる
% ls a.txt b.txt c.txt d.txt % dl *.txt % ls % cd ~/.Trash % ls a.txt.090110134456.12563 d.txt.090110134456.6711 b.txt.090110134456.24687 e.txt.090110134456.18628 c.txt.090110134456.19403
雑感
- basenameコマンドの使いどころが分かった。
- 乱数が$RANDOMで得られるとは便利。
- 時間情報と乱数を付ける必要あるか?もっと、良い方法ないか?
参考
誰も褒めてくれないから自画自賛する日記(04-12[長年日記])
ライブドアブログ(livedoor Blog)| 読みたいブログが見つかる
basenameコマンドの使い方: UNIX/Linuxの部屋
追記
ライブドアブログ(livedoor Blog)| 読みたいブログが見つかるの関数のほうがファイル名がサッパリして素敵だと思い、
その関数を利用することにした。自分好みに多少、変更しているところもあるが。
1 function dl () { 2 3 if [ $# -eq 0 ] 4 then 5 echo "Usage!!!" 6 return 1 7 fi 8 9 [ -d ~/.Trash ] || mkdir ~/.Trash 10 11 for file in $* 12 do 13 if [ -e $file ] 14 then 15 BASENAME=`basename $file` 16 FNAME=$BASENAME 17 COUNT=0 18 while [ -e ~/.Trash/$FNAME ] 19 do 20 COUNT=$(($COUNT+1)) 21 FNAME="${BASENAME}.${COUNT}" 22 done 23 mv $file ~/.Trash/$FNAME 24 else 25 echo "No such file or directory: $file" 26 fi 27 done 28 29 unset file BASENAME FNAME COUNT 30 return 0 31 }