bashでcp/mvコマンドを使用してファイルのバックアップとか移動をする際、出来ればキー入力は少ない方がいいわけで。
長いファイル名とか、PATH名だととても面倒だったりする。
というわけで、個人的にキー入力を短縮するためにやっている指定方法について、記述しておく。
1.同一PATH内にバックアップ・移動(ファイル名変更)する場合
同一PATH内に、末尾に文字列を追加してバックアップ・移動をする場合は、以下のようにコマンドを実行することでキー入力を減らすことが出来る。
cp 対象PAHT{,文字列}
[root@BS-PUB-CENT7-01 ~]# ls -la /tmp/test*
-rw-r--r--. 1 root root 0 4月 1 08:40 /tmp/test
[root@BS-PUB-CENT7-01 ~]# cp /tmp/test{,.bk}
[root@BS-PUB-CENT7-01 ~]# ls -la /tmp/test*
-rw-r--r--. 1 root root 0 4月 1 08:40 /tmp/test
-rw-r--r--. 1 root root 0 4月 1 08:40 /tmp/test.bk
2.違うPATHにバックアップ・移動、ファイル名の一部をリネームする場合
違うPATHにバックアップ・移動したり、ファイル名の一部をリネームしてコピーしたりする場合は、2つ目の引数に「!#$」を指定し、それを加工して上げれば良い。
この「!#$」は、ひとつ前の引数の値を指定する事が出来るので、これを指定し、さらにbash変数として置換することで簡単に別PATHにコピー・移動させたりすることができる。
以下の例では、「/tmp/test」を「/opt/test」としてコピーしている。
cp /tmp/test !#$:s/tmp/opt
[root@BS-PUB-CENT7-01 ~]# ls -la {/opt,/tmp}/test
ls: /opt/test にアクセスできません: そのようなファイルやディレクトリはありません
-rw-r--r--. 1 root root 0 4月 1 08:40 /tmp/test
[root@BS-PUB-CENT7-01 ~]#
[root@BS-PUB-CENT7-01 ~]# cp /tmp/test !#$:s/tmp/opt
cp /tmp/test /opt/test
[root@BS-PUB-CENT7-01 ~]# ls -la {/opt,/tmp}/test
-rw-r--r--. 1 root root 0 4月 1 08:45 /opt/test
-rw-r--r--. 1 root root 0 4月 1 08:40 /tmp/test