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

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

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

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

  • Исключение имени каталога в рекурсивном глобусе zsh
  • Локальные `set -e` для функций
  • как прокручивать несколько строк в завершении экрана zsh
  • Вставка из буфера обмена в vi-enabled zsh или bash shell
  • флаг расширения параметра zsh (P) с ассоциативными массивами
  • Как добавить числовой порядок имен файлов Zsh / AWK / ...?
  • хранить файл с недопустимыми символами
  • Могу ли я условно отключить некоторые плагины oh-my-zsh?
  • 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 - лучшая ОС в мире.