10 полезных операторов объединения команд в Linux

Thank you for reading this post, don't forget to subscribe!

Цепоч­ка команд Linux озна­ча­ет объ­еди­не­ние несколь­ких команд и выпол­не­ние их на осно­ве опе­ра­то­ра, исполь­зу­е­мо­го меж­ду ними. Цепоч­ка команд в Linux — это то, когда вы пише­те корот­кие скрип­ты обо­лоч­ки в самой обо­лоч­ке и выпол­ня­е­те их непо­сред­ствен­но из тер­ми­на­ла. Цепоч­ка поз­во­ля­ет авто­ма­ти­зи­ро­вать про­цесс. Более того, необ­слу­жи­ва­е­мая маши­на может функ­ци­о­ни­ро­вать более систе­ма­ти­че­ски с помо­щью опе­ра­то­ров цепочки.

1. Оператор амперсанда (&)

Функ­ция ‘&‘ — заста­вит коман­ду рабо­тать в фоно­вом режи­ме. Про­сто вве­ди­те коман­ду с про­бе­лом и ‘&‘. Вы може­те выпол­нить более одной коман­ды в фоно­вом режи­ме за один раз.

Запу­сти­те одну коман­ду в фоно­вом режиме:

 

Запу­сти­те две коман­ды в фоно­вом режи­ме одновременно:

2. Оператор тока с запятой (;)

Опе­ра­тор точ­ка с запя­той поз­во­ля­ет запус­кать несколь­ко команд за один раз, и выпол­не­ние коман­ды про­ис­хо­дит последовательно.

При­ве­ден­ная выше ком­би­на­ция команд сна­ча­ла выпол­нит обнов­ле­ние репо­зи­то­рия, затем обно­вит систе­му и, нако­нец, создаст ката­лог «test» в теку­щей рабо­чей директории.

3. Оператор AND (&&)

Опе­ра­тор AND (&&) будет выпол­нять вто­рую коман­ду толь­ко в том слу­чае, если при выпол­не­нии пер­вой коман­ды SUCCEEDS, т.е. состо­я­ние выхо­да пер­вой коман­ды рав­но «0» — про­грам­ма выпол­не­на успеш­но. Эта коман­да очень полез­на при про­вер­ке состо­я­ния выпол­не­ния послед­ней команды.

Напри­мер, я хочу посе­тить сайт test.com с помо­щью коман­ды links в тер­ми­на­ле, но перед этим мне нуж­но про­ве­рить, явля­ет­ся ли хост доступ­ным или нет.

4. Оператор OR (||)

Опе­ра­тор OR (||) очень похож на опе­ра­тор «else» в про­грам­ми­ро­ва­нии. Выше­ука­зан­ный опе­ра­тор поз­во­ля­ет вам выпол­нять вто­рую коман­ду толь­ко в слу­чае сбоя при выпол­не­нии пер­вой коман­ды, то есть состо­я­ние выхо­да пер­вой коман­ды рав­но «1» — про­грам­ма выпол­не­на НЕ успешно».

Напри­мер, я хочу выпол­нить «apt-get update» из учет­ной запи­си без пол­но­мо­чий root, и если пер­вая коман­да не будет выпол­не­на, тогда будет выпол­не­на вто­рая коман­да «links www.test.com».

В при­ве­ден­ной выше коман­де, посколь­ку поль­зо­ва­те­лю не было раз­ре­ше­но обно­вить систе­му, это озна­ча­ет, что состо­я­ние выхо­да пер­вой коман­ды рав­но «1» и, сле­до­ва­тель­но, выпол­ня­ет­ся послед­няя коман­да «links test.com».

Что, если пер­вая коман­да выпол­не­на успеш­но, со ста­ту­сом выхо­да «0«? Оче­вид­но! Вто­рая коман­да не будет выполнена.

Здесь поль­зо­ва­тель созда­ет пап­ку «test» в сво­ем домаш­нем ката­ло­ге, где ему это раз­ре­ше­но. Коман­да выпол­не­на успеш­но, что дает ста­тус выхо­да «0«, и, сле­до­ва­тель­но, послед­няя часть коман­ды не выполняется.

5. Оператор NOT (!)

Опе­ра­тор NOT (!) очень похож на опе­ра­тор «кро­ме«. Эта коман­да выпол­нит все, кро­ме предо­став­лен­но­го усло­вия. Что­бы понять как это рабо­та­ет, создай­те ката­лог «test» в вашем домаш­нем ката­ло­ге и перей­ди­те к нему с помо­щью коман­ды «cd«.

Затем создай­те несколь­ко типов фай­лов в пап­ке «test».

Смот­ри­те, мы созда­ли все новые фай­лы в пап­ке «test».

Теперь уда­ли­те все фай­лы, за исклю­че­ни­ем фай­ла «html» одно­вре­мен­но, умным способом.

Про­сто что­бы про­ве­рить, послед­нее испол­не­ние. Пере­чис­ли­те все доступ­ные фай­лы с помо­щью коман­ды ls.

6. Оператор AND-OR (&& — ||)

Выше­ука­зан­ный опе­ра­тор фак­ти­че­ски явля­ет­ся ком­би­на­ци­ей опе­ра­то­ра «AND» и «OR». Это очень похо­же на утвер­жде­ние «если-еще».

Напри­мер, давай­те сде­ла­ем ping на test.com, если успеш­но то выве­дем на экран ‘Verified‘, если ping не успеш­ный, то выве­ден на экран ‘Host Down‘.

Пример вывода

Теперь отклю­чи­те интер­нет-соеди­не­ние и повто­ри­те ту же команду.

Пример вывода

7. Оператор потока PIPE (|)

Этот опе­ра­тор пото­ка PIPE очень поле­зен, когда выход­ные дан­ные пер­вой коман­ды дей­ству­ют как вход­ные дан­ные для вто­рой коман­ды. Напри­мер, направь­те вывод коман­ды «ls -l» на «less» и посмот­ри­те вывод все­го скрипта.

8. Оператор комбинации команд {}

Объ­еди­ни­те две или более команд, вто­рая коман­да зави­сит от выпол­не­ния пер­вой команды.

Напри­мер, про­верь­те, досту­пен ли ката­лог «bin», и выве­ди­те соот­вет­ству­ю­щий вывод.

9. Оператор приоритета ()

Опе­ра­тор поз­во­ля­ет выпол­нить коман­ду в поряд­ке приоритета.

В при­ве­ден­ной выше псев­до­ко­ман­де, что если Command_x1 завер­шит­ся неудач­но? Ни один из Command_x2, Command_x3, Command_x4 не будет выпол­нен, для это­го мы исполь­зу­ем опе­ра­тор при­о­ри­те­та вот так:

В выше­при­ве­ден­ном скрип­те, если Command_x1 завер­ша­ет­ся ошиб­кой, Command_x2 так­же завер­ша­ет­ся ошиб­кой, но все же выпол­не­ние Command_x3 и Command_x4 зави­сит от состо­я­ния выхо­да Command_x3.

10. Оператор конкатенации (\)

Опе­ра­тор кон­ка­те­на­ции (\), как ука­зы­ва­ет имя, исполь­зу­ет­ся для объ­еди­не­ния боль­ших команд в несколь­ких стро­ках обо­лоч­ки. Напри­мер, коман­да ниже откро­ет тек­сто­вый файл test(1) .txt.