Возможное дублирование:
повторное использование текста в команде bash
Если я хочу переименовать файл на несколько каталогов, как мне избежать повторения пути?
Например:
mv path/to/old_filename.txt path/to/new_filename.txt
Мне интересно, есть ли способ сделать это:
mv path/to/old_filename.txt (?)new_filename.txt
Где (?)
бы был какой-то способ сказать "в том же каталоге".
Вы можете использовать расширение скобки:
mv path/to/{old_filename.txt,new_filename.txt}
Вот ссылка на руководство GNU по расширению скобок в оболочке bash, которое определяет список замен и говорит bash повторять параметр, используя разные замены каждый раз, когда повторяется.
Например,
будет расширен до
Единственное предостережение в том, что расширенные повторения должны быть в состоянии следовать друг за другом в качестве аргументов целевой программы.
источник
mv path/to/{old,new}_filename.txt
. Это также помогает отмене или другим видам, близким к повторению команды. Я много раз делал, напримерmv /etc/X11/xorg.conf{,.backup}
, возможность изменить процесс простым изменениемmv /etc/X11/xorg.conf{.backup,}
.Ответ Дарта выше умный, но если вы хотите использовать подход с
cd
, вы могли бы также рассмотреть возможность использования подоболочки:Поскольку изменение каталога происходит в подоболочке, вы фактически не будете изменять каталоги в своей интерактивной оболочке.
источник
old_filename.txt
.Другая полезная альтернатива, если вы собираетесь выполнять несколько команд в каталоге, это:
источник
Мне нравится ответ @ Дарта . Вот альтернатива:
cd path/to && mv oldfile newfile && cd -
источник
mv
не удается (например, нет разрешений), вы останетесь вpath/to
каталоге. Вы можетеcd path/to && mv oldfile newfile ; cd -
убедиться, чтоcd -
он всегда запущен, за исключением случаев, когдаcd path/to
(без прав доступа) произойдет сбой, вы все равно будете выполнятьcd -
и переходить к предыдущему каталогу, который является нежелательным. MLC (+1) subhell ответ лучше. Я полагаю,cd . && cd path/to && mv oldfile newfile ; cd -
что это сработает в 99,9% случаев (сcd .
ошибкой только в том случае, если вы или ваши текущие права доступа к каталогам изменились; и в этом случае переход на другой