Как объединить несколько команд в терминале?


25

У меня есть следующие команды.

cd import
zcat urls1.sql.gz | mysql -u root -p urls
cd /var/www/project1/
nano 1.php

На данный момент я выполняю это один за другим.

Есть ли способ объединить эти команды в одну строку?


3
Вы проводили какие-либо исследования по этому вопросу?
don.joey

Это был не мой вопрос. Просто полминуты поиска в Google дадут вам ответ. Поэтому мне было интересно, что вы уже нашли, если что-нибудь.
don.joey

С чего ты взял, что я отклонил твой вопрос? Я буду пренебрегать вашим гневом. Как примечание, вопрос «какой из них лучше: использовать ;или &&выполнять несколько команд в одной строке» намного лучше, требует больше исследований и, вероятно, вызвал бы очень много голосов.
don.joey

Существует более общий вариант этого вопроса, доступный по адресу askubuntu.com/questions/334994/… . Это касается именно вопроса, который я упоминал в предыдущем комментарии.
don.joey

Не волнуйся, Гири. Суть вопроса интересная. Я предпринял попытку сделать общий вариант этого.
don.joey

Ответы:


33

Да, отделите их точкой с запятой:

dir; ls -l

Большинство языков / оболочек используют точку с запятой для обозначения конца команды и запуска нового при оценке слева направо.

Или, как рекомендует @RobieBasak, используйте && вместо; для защиты от кодирования несчастных случаев.

dir && ls -l

23
Это хорошая идея, чтобы использовать &&вместо ;. Это гарантирует, что последующие команды будут выполнены только в том случае, если предыдущие команды не потерпели неудачу. Это позволяет избежать некоторых неловких последствий. Например: cd /somewhere_else; rm -Rf *может сделать что-то катастрофическое, если /somewhere_elseего не существует или вы ошиблись; cd /somewhere_else && rm -Rf *защищает вас от этого.
Роби Басак

2
Решение '&&' настолько хорошо, что оно должно быть первой рекомендацией в этом ответе. Пожалуйста, отредактируйте свой ответ и продвигайте лучший ответ на первое место.
Керем Байдоган

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.