If-Koubou

Ръководството на начинаещия за Shell Scripting 3: Повече основни команди и вериги

Ръководството на начинаещия за Shell Scripting 3: Повече основни команди и вериги (Как да)

Научили сте се как да създавате скриптове, да използвате аргументи и да създавате за цикли. Сега, нека да разгледаме някои по-основни команди, манипулиране на текстови файлове и пренасочване на вход и изход към файлове и други команди.

Някои основни полезни команди

Вече ви дадохме основна разбивка на скриптовете на Shell и примерно базирано очертание на за цикли, но не забравяйте да проверите тези статии, ако досега сте пропуснали нашето ръководство за скриптове на Shell.

Командната линия е чудесна по много причини, а пренасочването е едно от най-важните. Ако трябваше да отбележите и да възпроизведете изхода на всяка команда, за да предприемете по-нататъшни действия или да използвате това за нещо друго, щяхме да сме луди преди много време. Пренасочването ни позволява да използваме този изход и да го запазим или да го използваме веднага като вход за друга команда. Можем да използваме и файлове като входове за други команди.

Преди да продължим, нека да разгледаме някои основни команди, които могат да бъдат полезни на много различни места.

ехо - Тази команда просто отпечатва (показва) целия си аргумент на командния ред като изход

echo аргумент с интервали

Както можете да видите, специални символи трябва да бъдат "избягали", така че да се третират нормално. Това се прави, като се използва обратна наклонена черта (\) пред знака. По-добре е да използвате котировки. Командата ехо работи и с променливи.

Както можете да видите, единичните и двойни кавички се държат по различен начин. За повече информация, вижте Каква е разликата между единичните и двойните котировки в Баш Shell?

котка - Тази команда показва съдържанието на текстовите файлове като изход.

котка file_to_be_read

Да приемем, че създаваме този текстов файл в нано:

Когато използваме командата котка върху файла, можем да видим, че това е изход.

grep - Това е една от най-мощните и полезни команди, достъпни за вас в Linux. Това означава "глобален / регулярен израз". Преглежда през файл и отпечатва всеки ред, който съответства на конкретен модел. Тъй като този модел се основава на "регулярен израз", кратката линия може да доведе до множество модели, които да бъдат съчетани. За не, обаче, можете да въведете трева за търсене.

grep pattern file

Уверявам ви, че Grep може да направи повече, но засега нека се придържаме към по-лесните неща.

Пренасочващи изходи

За да пренасочим изхода на команда към файл, използваме специален символ, по-голям от символ (>).

Да променим списъка си, нали? Въведете следната команда:

echo pepperoni> списък

Можете да видите, че ехото вече не показва реда и когато погледнем съдържанието на файла "списък", ние виждаме онова, което отекнахме там.

Също така имайте предвид, че предишното съдържание на "списъка" е премахнато. Опитай отново:

Това може да бъде полезно, когато искате да използвате повторно файл, но често просто искаме да добавим към съществуващ файл. За това използваме два последователни символа по-големи от тези:

ехо жълти чушки >> списък

Лесно! Да използваме тази команда, за да създадем по-голям списък, нали?

Ето. Мисля, че можете да разберете защо толкова много хора използват командния ред, за да правят списъци със задачи и други подобни, но става още по-добре.

Да вземем изхода на команда и да я сложим в файл:

ls -al /> ~ / rootlist

Извършването на списъци с файлове, редактирането им и след това изпълняването на командите на тези, които искате, никога не е било по-лесно. И докато правим тези основни функции в командния ред, те работят добре и в скриптове.

Тръби или верига

Тръбопроводът е наречен така, защото използва тръбата, (|, споделена с клавиша \ на повечето клавиатури). По същество това отнема изхода на една команда и директно я захранва с друга. Можете да създадете дълги вериги от команди, за да получите много специфичен желан изход по този начин и това е много удобно за команди като grep.

Той действа много като ">", с изключение на това, че може да бъде верижен няколко пъти и ефектът му е по-общ, тъй като не е необходимо да минава през текстов файл.

Както можете да видите, grep е чувствителна към малки и големи букви. Можете да използвате флага "-i", за да го пренебрегнете.

Пренасочване на входове

Можете също така да взимате данни от файлове за команди, като използвате символа, който е по-малко от (<).

котка <списък

"Това не е нещо различно от използването на аргумент!", Може да кажете. Е, в този случай ще бъдете правилни. Където пренасочването на входа действително идва в удобно е във верига команди заедно.

Да приемем, че искаме да филтрираме всяка дума, която има "pep" в нея от нашия текущ "списък" файл в нов файл, наречен "revisions".

grep pep revisions

Да ремонтираме тази команда и да добавим някакво сортиране.

grep pep revisions

Това ще използва "перо" като термин за търсене от входния файл "списък", ще го сортира по азбучен ред (всички главни букви, последвани от всички малки термини), след което ще го изведе в "ревизиите".

За да илюстрираме командата за сортиране, нека разгледаме следния пример:

Както можете да видите, добавянето на флага "-f" на командата за сортиране ви позволява да пренебрегвате случая. Това ни улеснява лесно да правим азбучни положения в текстовите файлове и да игнорираме изписването с главни букви, когато няма значение.

Прост скрипт

Нека създадем скрипт, който има следната форма:

скрипт searchterm listfile

Това ще отнеме термина и ще използва grep, за да претърси файл от списъка, да сортира резултатите и после да ги изведе в друг файл.

Ето директорията, която ще тестваме скрипта:

И можем да създадем списък на това, което е тук, след което да изпълните скрипта.

Ето! Колкото повече научавате правилата за регулярните изрази, толкова по-точно можете да съберете команда за търсене. И всичко, което е валидно в кавичките, може да замести първия аргумент!

Що се отнася до сортирането, можете да направите нещо повече от подреждане по азбучен ред. Разгледайте страницата на човека за някои от следните команди:

  • tsort - по-модерна топологична функция за сортиране
  • tr - ви позволява да картите конкретни знаци на други символи и да транскрибирате между тях.
  • uniq - премахва всички не-уникални (чете: дубликат)
  • awk - наистина усъвършенстван език / функция за обработка на текст, която може да се използва за отделяне на полета в имена на файлове
  • cut, paste / join - команди, полезни за изолиране на полета от текстови файлове и добавяне на нови данни в колони
  • изглежда - търсене като grep, но използва речник файл (който може да бъде определен от потребителя) за търсене
  • wc - ви позволява да получавате брой думи, брой линии, брой знаци и др

Разгледахме още някои основни неща, които могат да бъдат полезни на команден ред, както в скриптовете. Текстовите данни често са в основата на нещата, които използваме ежедневно, затова можем да работим с тях, да ги търсим и да ги манипулираме.

Какви са някои от любимите ви скриптове? Имате ли скриптове със специална употреба за текстови файлове? Споделете какво знаете в коментарите!