Водич за почетнике за скриптирање Схелл 3 Више основних команди и ланаца
Научили сте како креирати скрипте, користити аргументе и градити за петље. Сада ћемо погледати неке основне команде, манипулацију текстуалним датотекама, и преусмерити улазне и излазне податке у датотеке и друге команде.
Неке основне корисне команде
Већ смо вам дали основну поделу скрипти и пример за петље засноване на примеру, али свакако проверите ове чланке ако сте до сада пропустили наш скриптни водич.
Командна линија је дивна из више разлога, а редирекција је једна од најистакнутијих. Ако бисте морали да забележите и репродукујете резултате сваке наредбе да бисте предузели даље акције или то искористили за нешто друго, онда бисмо сви одавно полудели. Преусмеравање нам омогућава да користимо тај излаз и да га сачувамо или да га одмах употребимо као улаз за другу команду. Такођер можемо користити датотеке као улазе за друге наредбе.
Пре него што наставимо, покрићемо неке основне команде које могу бити корисне на много различитих места.
одјек - Ова команда једноставно исписује (приказује) целину свог аргумента у командној линији као излаз
Ецхо аргумент са размацима
Као што можете да видите, специјалне карактере треба да „побегну“ тако да се третирају нормално. Ово се ради помоћу обрнуте косе црте (испред знака). Боље је користити цитате. Команда ецхо такође ради са променљивим.
Као што видите, појединачни и двоструки наводници се понашају другачије. За више информација, погледајте Каква је разлика између појединачних и двоструких цитата у Басх љусци?
цат - Ова команда приказује садржај текстуалних датотека као излаз.
цат филе_то_бе_реад
Рецимо да креирамо текстуалну датотеку у нано:
Када користимо мачку команду на фајлу, можемо да видимо њен излаз.
греп - Ово је једна од најмоћнијих и најкориснијих команди које су вам доступне у Линуку. То значи Глобал / Регулар Екпрессион Принт. Гледа кроз датотеку и исписује било коју линију која одговара одређеном узорку. Пошто је овај образац заснован на "регуларном изразу", концизна линија може да произведе мноштво узорака који ће се упарити. Ипак, не можете ући у чигру за претраживање.
греп паттерн филе
Уверавам вас, греп може учинити више, али за сада се држимо лакших ствари.
Преусмеравање излаза
Да бисте преусмерили излаз команде у датотеку, користимо специјални знак, симбол већи-од (>).
Хајде да променимо нашу листу, хоћемо ли? Унесите следећу команду:
ецхо пепперони> листа
Видите да ехо више не приказује линију, а када погледамо садржај “лист” фајла, видимо шта смо одјекли тамо.
Такође имајте на уму да су претходни садржаји "листе" уклоњени. Покушајте поново:
Ово може бити корисно када желите поново користити датотеку, али често само желимо додати постојећу датотеку. За ово користимо два узастопна симбола већег од:
ецхо иеллов пепперс >> список
Еаси! Хајде да користимо ову команду да направимо већу листу?
Ево га. Мислим да можете да видите зашто толико много штребера користи командну линију да направи листе задатака и слично, али постаје још боље.
Узмимо излаз команде и ставимо је у датотеку:
лс -ал /> ~ / роотлист
Никада није било једноставније правити листе датотека, уређивати их, а затим изводити наредбе на онима које желите. И док радимо ове основне функције у командној линији, оне добро функционишу иу скриптама.
Пипинг, или Цхаининг
Пипинг је тако назван јер користи цијев, (|; дијели се с кључем на већини типковница). У суштини, он узима излаз једне команде и директно је шаље другој. Можете створити дуге ланце наредби да бисте на овај начин добили врло специфичан жељени излаз, и врло је погодан за наредбе као што је греп.
Делује много као ">" осим што се може везати више пута и његов ефекат је опћенитији у томе што не мора да пролази кроз текстуалну датотеку.
Као што можете видјети, греп је осјетљив на велика и мала слова. Можете користити заставицу “-и” да бисте је игнорисали.
Преусмеравање улаза
Такође можете узети улазе из датотека за команде помоћу симбола мањег од (<).
цат < list
"То се не разликује од употребе аргумента!" Могло би се рећи. Па, био би у праву у овом случају. Тамо где је преусмеравање инпута заиста корисно у ланцу командовања заједно.
Рецимо да желимо да филтрирамо сваку реч која има у њој "пеп" из наше тренутне датотеке "листе" у нову датотеку под називом "ревизије".
греп пеп ревизије
Поновимо ову наредбу и додамо мало сортирања.
греп пеп ревизије
Ово ће користити “пеп” као тражени појам из “листе” улазног фајла, сортирати га по абецедном реду (сви термини великих слова праћени свим малим словима), а затим га исписати у датотеку “ревисионс”.
Да би илустровали команду сортирања, погледајмо следећи пример:
Као што видите, додавање “-ф” заставице команди сорте омогућава да игноришете случај. То нам олакшава да алфабетизујемо линије у текстуалним датотекама и да игноришемо велика слова када то није важно.
Једноставан скрипт
Креирамо скрипту која има следећи облик:
сцрипт сеарцхтерм листфиле
Потребан је термин и употребити греп за претрагу по датотеци листе, сортирање резултата, а затим их извести у други фајл.
Ево директоријума који ћемо тестирати у:
И можемо да направимо листу онога што је овде, а затим покренемо скрипту.
Ето га! Што више научите правила регуларних израза, точније можете саставити наредбу за претраживање. И све што је валидно у наводницима може заменити ваш први аргумент!
Што се тиче сортирања, можете урадити више него само сортирати по абецедном реду. Погледајте ман страницу за неке од следећих команди:
- тсорт - напреднија функција тополошког сортирања
- тр - омогућава вам да мапирате одређене знакове у друге карактере и препишете их између њих.
- уник - уклања било које не-јединствено (читај: дупликат)
- авк - заиста напредан језик / функција за обраду текста који се може користити за раздвајање поља у именима датотека
- цут, пасте / јоин - команде корисне за изоловање поља из текстуалних датотека и додавање нових података у колоне
- лоок - претражује као греп, али користи датотеку рјечника (која може бити специфицирана од стране корисника) за претраживање
- вц - омогућава вам да добијете број речи, број линија, број знакова и још много тога
Данас смо погледали још неке основе које могу бити корисне у командној линији као у скриптама. Текстуални подаци су често у срцу ствари које свакодневно користимо, тако да је у могућности да радимо са њом, претражујемо је и манипулишемо њиме..
Које су ваше омиљене скрипте? Имате ли неке специјалне скрипте за текстуалне датотеке? Поделите оно што знате у коментарима!