Как создать цепочку команд?

Я хочу создать цепочку команд, например, cp ab && mv bc && rm a .

Я пробовал делать cp ab && mv bc && rm a & но это только фоны последнего процесса.

Как создать цепочку команд?

  • Преобразование истории в скрипт?
  • Как я могу передать только stderr в zsh?
  • Завершение Zsh, включение shift-tab
  • Автозаполнение Zsh gpg2
  • Автозаполнение оболочки очень медленное после форматирования частичного диска
  • Сократить путь в приглашении zsh
  • Изменить шрифт в команде echo
  • Ctrl + левая / правая стрелка
  • 2 Solutions collect form web for “Как создать цепочку команд?”

    cp ab && mv bc && rm a & является правильным. & имеет более низкий приоритет, чем && . На самом деле & имеет более низкий приоритет, чем что-либо другое ; и newline: & находится в той же синтаксической категории, что и ; , причем разница заключается в том, что ; запускает список команд на переднем плане & запускает его в фоновом режиме. Вы можете проверить это самостоятельно:

     $ dash -c 'sleep 2 && echo waited & echo backgrounded' backgrounded $ waited информация $ dash -c 'sleep 2 && echo waited & echo backgrounded' backgrounded $ waited 

    То же самое с pdksh, ksh93, bash, csh, tcsh.

    Исключением является zsh, что является странно несовместимым. Это описано в руководстве :

    Если подсписок заканчивается символом & , &| , или &! , оболочка выполняет последний конвейер в нем в фоновом режиме и не ждет его завершения (обратите внимание на отличие от других оболочек, которые выполняют весь подсписчик в фоновом режиме).

    К сожалению, zsh ведет себя таким образом даже в режиме совместимости sh или ksh. Чтобы убедиться, что вся команда выполнена в фоновом режиме, поместите скобки или круглые скобки вокруг него. Скобки создают подоболочку, а фигурные скобки – нет, но это не имеет значения (кроме как микро-оптимизация в некоторых оболочках), так как фоновая команда находится в подоболочке в любом случае.

     { cp ab && mv bc && rm a; } & 

    вы можете поместить его в скобки, такие как (cp ab && mv bc && rm a )& включить всю цепочку.

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