Две связанные замены в одной командной строке?

Это отлично работает:

ls /path/{foo,bar}/ 

Теперь, если я хочу эффективно сделать:

 cp /path/foo/bunch/of/stuff/foo.txt /path/bar/bunch/of/stuff/bar.txt 

Есть несколько коротких рук, которые я могу сделать в одной командной строке?

Т.е. вроде cp /path/{foo,bar}/file.txt но где есть две замены, которые необходимо выполнить одновременно?

Фактически, я хочу, чтобы множественные связанные расширения фигурных скобок не приводили к появлению всех возможных комбинаций.

  • аргументы с чистой командной строкой
  • Почему требуется обновление readline при исправлении ошибки shellshock bash?
  • Как запустить программу несколько раз с разными аргументами, используя цикл в сценарии bash?
  • Можно ли указать пользовательскую команду перед запуском интерактивной сессии bash?
  • Первый аргумент bash отличается при передаче параметра или нет
  • Создать псевдоним для изменения содержимого каталога и списка
  • bash: ввести символ в указанной позиции в файле
  • ^ Символы C в начале редактирования команды bash bash
  • 2 Solutions collect form web for “Две связанные замены в одной командной строке?”

    Подстановка может включать / :

     cp /path/{foo/foo,bar/bar}.txt 

    эквивалентно

     cp /path/foo/foo.txt /path/bar/bar.txt 

    Альтернативный подход заключается в поиске и замене; это работает до тех пор, пока «foo» не содержит слэшей:

     set /path/foo/bunch/of/stuff/foo.txt; cp $1 ${1//foo/bar} 

    Один из способов – использовать взаимодействие с историей , но для текущей строки ( !# ):

     $ echo /path/foo/bunch/of/stuff/foo.txt !#:1:gs/foo/bar/ echo /path/foo/bunch/of/stuff/foo.txt /path/bar/bunch/of/stuff/bar.txt 
    • !# , как уже говорилось, относится к текущей строке
    • :1 к первому слову
    • :s/foo/bar заменяет bar для foo
    • g является модификатором, который делает замену по всей линии
    Interesting Posts

    Где я могу поместить свой файл systemd в Arch Linux?

    Перемещение каталогов, несмотря на ошибки

    Почему я получаю сообщение «Erase is backspace» после сброса в xterm?

    Повторное использование сеанса ssh для повторяющихся команд rsync

    Сделать «самый» пейджер правильно обрабатывать цвета со стандартного ввода

    Вырезать одну строку на две

    Как удалить папки, созданные с именами дат 2016-04-03 до 2016-10-4

    что такое `env <command>` делать?

    Почему BIOS должен загружать загрузчик начальной стадии из MBR, но это не относится к UEFI?

    CentOS 7 создал mdadm-массив после перезагрузки

    Использование IPV6 в Hetzener при виртуализации KVM

    Создание устройства, похожего на / dev / random, из сценария

    Сервер Ubuntu – ОС на одном жестком диске, файловый сервер на программном RAID 1

    Как добавить новую строку для отсутствующей записи между двумя полями

    Как можно скрыть короткие клавиши X11 программой Python?

    Linux и Unix - лучшая ОС в мире.