Ваш магический союз - точка с запятой ... и фигурные скобки:
{ cat wordlist.txt ; ls ~/folder/* ; } | wc -l
В фигурных скобках команды сгруппированы только вместе, поэтому знак канала |
влияет на объединенный вывод.
Вы также можете использовать круглые скобки ()
вокруг группы команд, которые будут выполнять команды в подоболочке. Это имеет тонкий набор различий с фигурными скобками, например, попробуйте следующее:
cd $HOME/Desktop ; (cd $HOME ; pwd) ; pwd
cd $HOME/Desktop ; { cd $HOME ; pwd ; } ; pwd
Вы увидите, что все переменные окружения, включая текущий рабочий каталог, сбрасываются после выхода из группы в скобках, но не после выхода из группы фигурных скобок.
Что касается точки с запятой, альтернативы включают &&
и ||
знаки, которые условно выполнить вторую команду , только если первая успешна или нет, соответственно, например ,
cd $HOME/project && make
ls $HOME/project || echo "Directory not found."