Операторите за командна верига са специални знаци, използвани за писане на миниатюрни шел скриптове в командния ред. Те обикновено се използват за изпълнение на команди в определена последователност, дефинирана от разположението на операторите между командите. Това е невероятно полезно при автоматизиране на задачи.
Нека научим за няколко често срещани оператора за верига в Linux, които могат да ви помогнат да изпълнявате задачи по-бързо и с по-малки потребителски интервали.
1. Операторът амперсанд (&)
Често, когато отворите програма или изпълните команда от обвивката, трябва или да изчакате, докато командата приключи, или ръчно да излезете от програмата, преди да можете да продължите да използвате обвивката. Ето къде влиза в действие операторът амперсанд (&).
Като добавите оператора амперсанд към която и да е команда, вие диктувате обвивката на изпълнете тази Linux команда във фонов режим така че да можете да продължите да използвате обвивката без връзка.
gedit &
Обикновено, ако стартирате gedit от терминала, няма да можете да използвате терминала, освен ако не затворите текстовия редактор. Но като добавите оператора амперсанд, можете да го накарате да работи във фонов режим и да продължите да използвате обвивката веднага.
2. Операторът точка и запетая (;)
Операторът точка и запетая е невероятно полезен оператор за верига на Linux, който можете да използвате за изпълнение на команди в определен последователен ред. Подредете командите си и ги разделете с точка и запетая.
pwd; mkdir тест; cdтест; сензорен файл
Горният синтаксис диктува на обвивката да изпълнява всяка команда една след друга. Имайте предвид, че обвивката не проверява дали всяка команда завършва успешно. Веднага след като обвивката получи код за връщане, тя преминава към изпълнение на следващата команда.
3. Операторът ИЛИ (||)
Операторът OR ще изпълни командата, която следва, само ако предходната команда е неуспешна, т.е. върне код за изход 0. Той функционира като логическа ИЛИ врата, която връща стойност 1, когато входът е 0.
лоша_команда || ls
В този примерен синтаксис, лоша_команда е фалшива команда, която няма да успее да се изпълни и тъй като е неуспешна, командата следва оператора ИЛИ, което е командата ls, ще се изпълни успешно.
4. Операторът на тръбата (|)
Операторът на канала насочва изхода на предходната команда като вход към следващата команда. Най-често се използва за филтриране на данни с командата grep.
тест за котки | grep -i "да се възползват от"
Тази команда изпраща изхода на командата котка като вход към командата grep, която след това филтрира изхода спрямо определен низ.
5. Операторът И (&&)
Този оператор функционира по подобен начин на оператора точка и запетая, с изключение на това, че за разлика от оператора точка и запетая, операторът И ще изпълнява команди само ако предходната команда е била изпълнена успешно.
pwd && mkdir тест && cd тест && лоша_команда && ls
В този примерен синтаксис обвивката ще изпълни успешно всички команди до лоша_команда. Въпреки това, тъй като bad_command не успява да се изпълни, обвивката ще върне грешка и ще пропусне командата ls.
6. Операторът НЕ (!)
Операторът NOT работи по подобен начин на оператора за изключение в програмирането. Например, ако искате да извършите операция върху голям брой файлове в директория, но искате да изключите a няколко въз основа на някакъв параметър, тогава можете да използвате оператора NOT, като подадете параметъра след знака NOT (!).
rm-р !(*.текст)
Тази примерна команда ще премахне рекурсивно всички файлове в директория с изключение на файлове, които имат ".текст" разширение.
7. Операторът за приоритет ((..))
Командите след операторите И и ИЛИ зависят от изходния код на предходната команда. Тези оператори са двоични и оценяват само двете команди, които идват преди и след тях.
Така че, когато работите с множество оператори, е важно да зададете групи и приоритет, за да сте сигурни, че последователността на изпълнение отговаря на вашите очаквания.
(ls *.txt > txt-files.list && cp *.tx ~) && (ls *.deb > deb-packages.list && cp *.deb ~) || ехо "Тест за приоритет!"
В този примерен синтаксис и двете групи команди трябва да върнат изходен код 0, за да гарантират успешното изпълнение на последната команда. Този пример изисква и двете команди в първия набор () да излязат с 0, за да се изпълни вторият набор ().
8. Комбинационният оператор ({..})
Както подсказва името, комбинираният оператор се използва за групиране на команди. Които и команди да групирате, можете да ги поставите във къдрави скоби и те ще бъдат изпълнени в зависимост от изходния код на първата команда.
тест -f /etc/passwd && {pwd; дата} && ехо $0; ехо "Здравейте"
Примерният синтаксис ще провери дали файла /etc/passwd присъства, отпечата текущата работна директория, дата, име на обвивката и ехо "Здравей".
9. Конкатенация или Escape оператор (\)
Операторът за конкатенация или escape има две функции. Можете да го използвате или за свързване на две команди, или като екраниращ знак, когато работите с низове в обвивката.
mkdir test0 test1 \ test2
ехо "Здравейте! от на
друга страна"
Първата команда ще създаде четири директории с имена test0 до test2, а втората команда ще отпечата низа, разделен с нов ред.
10. Операторите за пренасочване (>, >>,
Операторите за пренасочване пренасочват изхода или входа към файл или чрез пренаписване на файла, или чрез добавяне към него. Ако искате да пренапишете файл, тогава трябва да използвате синтаксиса на единични ъглови скоби (>). Ако искате да добавите към файл, ще трябва да използвате синтаксиса на двойните ъглови скоби (>>).
ехо "dsd"> тест; ехо "бсссс">> тест
В примерния синтаксис първата команда ще презапише "тестовия" файл с предоставения низ, но във втората команда предоставеният низ ще бъде добавен към тестовия файл.
Ускорете работния процес на вашия Linux терминал
Въпреки че използването на специални оператори значително ще рационализира изпълнението на задачите за вас, има множество други начини да ускорите работния си процес.
Един лесен и полезен начин да свършите повече за по-малко време е да се запознаете с няколко удобни преки пътища в shell. Свикването с тези преки пътища ще ви помогне много и ще откриете, че разчитате на тях, докато използвате Linux.