mv
深いディレクトリにある他のファイルの名前を変更する必要があることがよくあります。
mv /a/long/path/to/a/file.txt /a/long/path/to/a/file.txt.bak
しかし、フルパス名を再入力したくありません。使用できる簡単な略語やエイリアスはありますか?つまり:
$ mv /a/long/path/to/a/file.txt file.txt.bak
$ ls /a/long/path/to/a/file.txt.bak
a/long/path/to/a/file.txt.bak
(注:これは、異なる時間に別のディレクトリにある単純な単一ファイルの名前を変更するためのものです。一括名前の変更)
答え1
使う支柱の拡張:
mv /a/long/path/to/a/file.txt{,.bak}
これにより、/a/long/path/to/a/file.txt
空のサフィックスの名前が/a/long/path/to/a/file.txt
with suffixに変更されます.bak
。
答え2
おそらく図のように中括弧拡張を使用します。フレディの答え、どちらも対話式を使用bash
できますzsh
歴史的拡張、インジケーターを使用して、#$
現在の行でこれまでに入力した最後の単語を示します。
mv /a/long/path/to/a/file.txt !#$.bak
答え3
基本的な質問かもしれませんが、既存の質問/回答が見つかりません。私が作った簡単な解決策は~./bash_functions
次の機能です。
#/home/user/.bash_functions
function mv-rn() {
mv $1 $(dirname $1)/${2}
}
だから今:
$ mv-rn /a/long/path/to/a/file.txt file.txt.bak
$ ls /a/long/path/to/a/file.txt.bak
a/long/path/to/a/file.txt.bak
(**注、上記の関数がエイリアスとして認識されるようにするには、〜/ .bashrcにそれを含める必要があります。)
# Function definitions.
if [ -f ~/.bash_functions ]; then
. ~/.bash_functions
fi
答え4
(cd /a/long/path/to/a && mv file.txt file.txt.bak)
&&
cdが成功した場合にのみmvが実行されることを確認してください。角かっこはコマンドがサブシェルで実行されることを意味するので、cdは既存のシェルの作業ディレクトリを変更しません。