Możliwa duplikat:
Użyj ponownie tekstu w poleceniu bash
Jeśli chcę zmienić nazwę pliku na kilka katalogów, jak mogę uniknąć powtarzania ścieżki?
Na przykład:
mv path/to/old_filename.txt path/to/new_filename.txt
Zastanawiam się, czy istnieje sposób, aby to zrobić:
mv path/to/old_filename.txt (?)new_filename.txt
Gdzie (?)
można by powiedzieć „w tym samym katalogu”.
Możesz użyć rozszerzenia nawiasu klamrowego:
mv path/to/{old_filename.txt,new_filename.txt}
Oto link do przewodnika GNU na temat rozwijania nawiasów w powłoce bash, który definiuje listę podstawień i każe bashowi powtarzać parametr za pomocą innego substytutu za każdym razem, gdy się powtarza.
Na przykład,
zostanie rozwinięty do
Jedynym zastrzeżeniem jest to, że rozszerzone powtórzenia muszą być w stanie podążać za sobą jako argumenty do programu docelowego.
źródło
mv path/to/{old,new}_filename.txt
. Pomaga to również w cofnięciu polecenia lub innym zbliżonym do powtórzenia poleceniu. Wielokrotnie to robiłem, np.mv /etc/X11/xorg.conf{,.backup}
Będąc w stanie odwrócić proces za pomocą prostej zmianymv /etc/X11/xorg.conf{.backup,}
.Powyższa odpowiedź Dartha jest sprytna, ale jeśli chcesz zastosować podejście
cd
, możesz również rozważyć użycie podpowłoki:Ponieważ zmiana katalogu odbywa się w podpowłoce, tak naprawdę nie zmienisz katalogów w interaktywnej powłoce.
źródło
old_filename.txt
.Kolejna przydatna alternatywa, jeśli zamierzasz wykonać kilka poleceń w katalogu, to:
źródło
Podoba mi się odpowiedź @ Dartha . Oto alternatywa:
cd path/to && mv oldfile newfile && cd -
źródło
mv
nie powiedzie (np. Brak uprawnień), pozostaniesz wpath/to
katalogu. Możesz spróbowaćcd path/to && mv oldfile newfile ; cd -
upewnić się, żecd -
jest zawsze uruchamiany, z wyjątkiem sytuacji, gdycd path/to
(brak uprawnień) nie powiedzie się, nadal będziesz wykonywaćcd -
i przejść do poprzedniego katalogu, który jest niepożądany. Odpowiedź podpowłoki mlc (+1) jest lepsza. Wydaje mi się, żecd . && cd path/to && mv oldfile newfile ; cd -
zadziałałoby 99,9% czasu (zcd .
niepowodzeniem tylko wtedy, gdy zmienił się ty lub twoje obecne katalogi; w takim przypadku przejście do innego