Ръководство за начинаещи за скриптовете на Shell 3 Още основни команди и вериги
Научихте се как да създавате скриптове, да използвате аргументи и да създавате цикли. Сега, нека да разгледаме някои основни команди, манипулиране на текстов файл и пренасочване на входа и изхода към файлове и други команди.
Някои основни полезни команди
Вече ви дадохме основна разбивка на скриптовете на обвивката и примерна схема за затворени линии, но не забравяйте да проверите тези статии, ако сте пропуснали досегашното ни ръководство за скриптове.
Командният ред е чудесен по много причини и пренасочването е едно от най-известните. Ако трябваше да отбележите и възпроизведете изхода на всяка команда, за да предприемете по-нататъшни действия или да използвате това за нещо друго, тогава всички ние отдавна сме полудели. Пренасочването ни позволява да използваме този изход и да го запазим или веднага да го използваме като вход за друга команда. Също така можем да използваме файлове като входове за други команди.
Преди да продължим, нека разгледаме някои основни команди, които могат да бъдат полезни на много различни места.
ехо - Тази команда просто отпечатва (показва) цялата стойност на аргумента си в командния ред като изход
ехо аргумент с интервали
Както можете да видите, специалните символи трябва да бъдат „избягали”, така че да се третират нормално. Това се прави, като се използва обратна наклонена черта (\ t По-добра идея е да използвате цитати. Командата echo също работи с променливи.
Както виждате, единичните и двойните кавички се държат по различен начин. За повече информация, вижте каква е разликата между единични и двойни цитати в Bash Shell?
котка - Тази команда показва съдържанието на текстовите файлове като изход.
cat file_to_be_read
Да кажем, че създаваме този текстов файл в nano:
Когато използваме командата cat във файла, можем да видим неговия изход.
grep - Това е една от най-мощните и полезни команди, достъпни за вас в Linux. Това означава Глобален / Редовен израз на печат. Той преглежда файл и отпечатва всеки ред, който съответства на определен модел. Тъй като този модел се основава на „редовен израз“, кратката линия може да даде множество шаблони, които да бъдат съчетани. Защото не, обаче, можете да влезете в рибарка за търсене.
grep шаблон на файла
Уверявам ви, че grep може да направи повече, но засега нека се придържаме към по-лесните неща.
Пренасочване на изходите
За да пренасочим изхода на команда към файл, използваме специален символ, символ-по-голям (>).
Нека променим списъка си, нали? Въведете следната команда:
echo pepperoni> списък
Можете да видите, че ехото вече не показва линията, а когато погледнем съдържанието на файла с "списък", виждаме какво сме повторили там.
Също така вземете под внимание, че предишното съдържание на „списъка“ е премахнато. Опитай отново:
Това може да бъде полезно, когато искате да използвате повторно даден файл, но често ние просто искаме да добавим към съществуващ файл. За тази цел използваме два последователни символа по-голям от:
ехо жълти чушки >> списък
Лесно! Нека използваме тази команда, за да създадем по-голям списък?
Ето. Мисля, че можете да видите защо толкова много маниаци използват командния ред, за да правят списъци със задачи и други подобни, но става още по-добре.
Да вземем изхода на команда и да го поставим във файл:
ls -al /> ~ / rootlist
Създаването на списъци с файлове, редактирането им и след това изпълнението на команди, които искате, никога не е било по-просто. И докато правим тези основни функции в командния ред, те работят добре и в скриптовете.
Piping или Chaining
Тръбопроводът е наречен така, защото използва тръбата, (|; споделена с клавиша на повечето клавиатури). По същество той взема изхода на една команда и директно я подава на друг. Можете да създадете дълги вериги от команди, за да получите много специфичен желания резултат по този начин, и това е много удобно за команди като grep.
Той действа много като ">", с изключение на това, че може да бъде свързан многократно и неговият ефект е по-общ в това, че не е необходимо да минава през текстов файл.
Както виждате, grep е чувствителен към малки и главни букви. Можете да използвате флага "-i", за да го пренебрегнете.
Пренасочване на входове
Можете също да приемате входове от файлове за команди, като използвате символа по-малко от (<).
котка < list
"Това не е по-различно от използването на аргумент!" Е, бихте били правилни в този случай. Където пренасочването на входа наистина е полезно, е в свързването на командите заедно.
Да речем, че искаме да филтрираме всяка дума, която има „pep“ в него от текущия ни „списък“, в нов файл, наречен „ревизии“.
grep pep ревизии
Да повторим тази команда и да добавим някакво сортиране.
grep pep ревизии
Това ще използва “pep” като термин за търсене от входящия файл “list”, ще го подреди по азбучен ред (всички горни букви, следвани от всички малки букви), след което ще го изведе в файла “revisions”.
За да илюстрираме командата за сортиране, нека да разгледаме следния пример:
Както можете да видите, добавянето на "-f" флаг към командата sort ви позволява да игнорирате случай. Това ни улеснява да подреждаме по азбучен ред линиите в текстовите файлове и да игнорираме главни букви, когато това няма значение.
Обикновен скрипт
Нека създадем скрипт, който има следната форма:
списък за търсене на скриптове
Той ще поеме термина и ще използва grep за търсене в списък с файлове, сортиране на резултатите и след това ще ги изведе в друг файл.
Ето директорията, в която ще тестваме скрипта:
И ние можем да създадем списък на това, което е тук, след това да стартираме скрипта.
Ето! Колкото повече изучавате правилата на регулярните изрази, толкова по-точно можете да съберете команда за търсене. И всичко, което е валидно в кавички, може да бъде заменено с първия ви аргумент!
Що се отнася до сортирането, можете да направите повече, отколкото просто да подредите по азбучен ред. Обърнете внимание на страницата на човека за някои от следните команди:
- tsort - по-напреднала топологична функция за сортиране
- tr - ви позволява да картографирате конкретни символи с други знаци и да ги записвате между тях.
- uniq - премахва всички, които не са уникални (прочетете: дубликат)
- awk - наистина усъвършенстван език / функция за обработка на текст, който може да се използва за разделяне на полета в имената на файловете
- cut, paste / join - команди, полезни за изолиране на полета от текстови файлове и добавяне на нови данни в колони
- look - търси като grep, но използва речников файл (който може да бъде посочен от потребителя) за търсене
- wc - позволява да получите броя на думите, броя линии, броя на символите и др
Днес погледнахме още няколко основни неща, които могат да бъдат полезни за командния ред, както в скриптовете. Данните, базирани на текст, често са в основата на нещата, които използваме ежедневно, така че да сте в състояние да работите с него, да го търсите и да го манипулирате, е ключов.
Какви са някои от любимите ви скриптове? Имате ли специални скриптове за текстови файлове? Споделете какво знаете в коментарите!