Поддерживать
www.wikidata.ru-ru.nina.az
U etogo termina sushestvuyut i drugie znacheniya sm Bash znacheniya Bash ot angl Bourne again shell kalambur Born again shell vozrozhdyonnyj shell usovershenstvovannaya i modernizirovannaya variaciya komandnoj obolochki Bourne shell Odna iz naibolee populyarnyh sovremennyh raznovidnostej komandnoj obolochki UNIX Osobenno populyarna v srede Linux gde ona chasto ispolzuetsya v kachestve predustanovlennoj komandnoj obolochki GNU Bourne Again SHellTipichnyj seans v bashTip komandnaya obolochka UNIXAvtor Brajan Foks Brian Fox Razrabotchik Chet Ramej Chet Ramey Napisana na SiOperacionnaya sistema UNIX podobnyeYazyki interfejsa Anglijskij mnogoyazychnyj gettext Pervyj vypusk 8 iyunya 1989Apparatnye platformy x86 64 i i686 d Poslednyaya versiya 5 2 21 9 noyabrya 2023 Beta versiya 5 2 beta 13 aprelya 2022 goda Repozitorij git savannah gnu org cgi Chitaemye formaty fajlov Bash script vd Licenziya GNU General Public LicenseSajt gnu org software bash Mediafajly na Vikisklade Predstavlyaet soboj komandnyj processor rabotayushij kak pravilo v interaktivnom rezhime v tekstovom okne Bash takzhe mozhet chitat komandy iz fajla kotoryj nazyvaetsya skriptom ili scenariem Kak i vse Unix obolochki on podderzhivaet avtodopolnenie imyon fajlov i katalogov podstanovku vyvoda rezultata komand peremennye kontrol nad poryadkom vypolneniya operatory vetvleniya i cikla Klyuchevye slova sintaksis i drugie osnovnye osobennosti yazyka byli zaimstvovany iz sh Drugie funkcii naprimer istoriya byli skopirovany iz csh i ksh Bash v osnovnom sootvetstvuet standartu POSIX no s ryadom rasshirenij Nazvanie bash yavlyaetsya akronimom ot angl Bourne again shell eshyo odna komandnaya obolochka Borna i predstavlyaet soboj igru slov Bourne shell odna iz populyarnyh raznovidnostej komandnoj obolochki dlya UNIX sh avtorom kotoroj yavlyaetsya Stiven Born 1978 usovershenstvovana v 1987 godu Brajanom Foksom Familiya Bourne Born pereklikaetsya s anglijskim slovom born oznachayushim rodivshijsya otsyuda rozhdyonnaya vnov komandnaya obolochka V sentyabre 2014 goda v bash byla obnaruzhena shiroko ekspluatiruemaya uyazvimost Bashdoor Otlichiya v sintaksisePodavlyayushee bolshinstvo vazhnyh skriptov komandnogo processora Bourne mozhet vypolnyatsya bez izmeneniya v bash za isklyucheniem teh kotorye ssylayutsya na specialnye peremennye Bourne ili ispolzuyut vstroennye komandy Bourne Sintaksis komand Bash vklyuchaet idei zaimstvovannye u Korn shell ksh i C shell csh takie kak redaktirovanie komandnoj stroki istoriya komand stek katalogov peremennye RANDOM i PPID sintaksis zameny komandy Kogda Bash ispolzuetsya kak interaktivnyj komandnyj processor on podderzhivaet avtozavershenie imyon programm fajlov peremennyh i t p s pomoshyu klavishi Tab Vnutrennie komandyInterpretator bash imeet mnozhestvo vstroennyh komand chast iz kotoryh imeet analogichnye ispolnyaemye fajly v operacionnoj sisteme Odnako sleduet obratit vnimanie chto chashe vsego dlya vstroennyh komand otsutstvuyut man stranicy a pri popytke prosmotra spravki po vstroennoj komande na samom dele budet vydavatsya spravka po ispolnyaemomu fajlu Ispolnyaemyj fajl i vstroennaya komanda mogut razlichatsya parametrami Informaciya po vstroennym komandam raspisana v spravochnoj stranice bash man bash Vvod vyvod a href wiki Echo D0 BA D0 BE D0 BC D0 B0 D0 BD D0 B4 D0 B0 title Echo komanda echo a vyvodit vyrazhenie ili soderzhimoe peremennoj stdout no imeet ogranicheniya v ispolzovanii a href wiki Printf title Printf printf a komanda formatirovannogo vyvoda rasshirennyj variant komandy echoread chitaet znachenie peremennoj so standartnogo vvoda stdin v interaktivnom rezhime eto klaviaturaFajlovaya sistemacd izmenyaet tekushij katalog a href wiki Pwd title Pwd pwd a vyvodit nazvanie tekushego rabochego kataloga ot angl print working directory pushd izmenyaet tekushij katalog s vozmozhnostyu vozvrata v obratnom poryadkepopd vozvrashaet tekushij katalog posle pushddirs vyvodit ili ochishaet soderzhimoe steka katalogov sohranyonnyh cherez pushdDejstviya nad peremennymilet proizvodit arifmeticheskie operacii nad peremennymieval transliruet spisok argumentov iz spiska v komandyset izmenyaet znacheniya vnutrennih peremennyh skriptaudalyaet peremennuyueksportiruet peremennuyu delaya eyo dostupnoj dochernim processamdeclare typeset zadayut i ili nakladyvayut ogranicheniya na peremennyegetopts ispolzuetsya dlya razbora argumentov peredavaemyh skriptu iz komandnoj strokiUpravlenie scenariemsource tochka zapusk ukazannogo scenariya a href wiki Exit title Exit exit a bezuslovnoe zavershenie raboty scenariyaexec zamenyaet tekushij process novym zapuskaemym komandoj execshopt pozvolyaet izmenyat klyuchi opcii obolochki na letu Komandy a href wiki True title True true a vozvrashaet kod zaversheniya nol uspeshnoe zavershenie a href wiki False title False false a vozvrashaet kod zaversheniya kotoryj svidetelstvuet o neudachetype i prog i vyvodit polnyj put k proghash i prog i zapominaet put k proghelp i COMMAND i vyvodit kratkuyu spravku po ispolzovaniyu vnutrennej komandy COMMANDUpravlenie zapushennymi v komandnoj obolochke zadachamijobs pokazyvaet spisok zapushennyh v komandnoj obolochke zadach libo informaciyu o konkretnoj zadache po eyo nomerufg pereklyuchaet potok vvoda na tekushuyu zadachu ili na opredelyonnuyu zadachu esli ukazan eyo nomer i prodolzhaet eyo ispolneniebg prodolzhaet ispolnenie tekushej priostanovlennoj zadachi ili opredelyonnyh zadach esli ukazany ih nomera v fonovom rezhimewait ozhidaet zaversheniya ukazannyh zadachSkriptyV prostejshem sluchae skript prostoj spisok komand zapisannyj v fajl Komandnyj processor dolzhen znat chto on dolzhen etot fajl obrabotat a ne prosto prochest ego soderzhimoe Dlya etogo sluzhit specialnaya konstrukciya nazyvaemaya shebang Simvol zadayot kommentarij no v dannom sluchae shebang oznachaet chto posle etogo specsimvola nahoditsya put k interpretatoru dlya ispolneniya scenariya Sintaksis Sintaksis komand bash eto rasshirennyj sintaksis komand Bourne shell Okonchatelnaya specifikaciya sintaksisa komand bash est v Bash Reference Manual rasprostranyaemom proektom GNU Hello world usr bin env bash echo Hello World Etot skript soderzhit tolko dve stroki Pervaya stroka soobshaet sisteme o tom kakaya programma ispolzuetsya dlya zapuska fajla Vtoraya stroka eto edinstvennoe dejstvie kotoroe vypolnyaetsya etim skriptom on sobstvenno pechataet Hello world v terminale Zapusk skripta Dlya togo chtoby skript stal ispolnyaemym mogut byt ispolzovany sleduyushie komandy chmod rx scriptname vydacha prav na chtenie ispolnenie lyubomu polzovatelyu chmod u rx scriptname vydacha prav na chtenie ispolnenie tolko vladelcu skripta Iz soobrazhenij bezopasnosti put k tekushemu katalogu ne vklyuchyon v peremennuyu okruzheniya PATH Poetomu dlya zapuska skripta neobhodimo yavno ukazyvat put k tekushemu katalogu v kotorom nahoditsya skript scriptname Krome togo peredat takoj fajl na ispolnenie interpretatoru Bash mozhno i yavno ispolzuya komandu bash bash scriptname V etom sluchae ne trebuetsya ni ustanovka prav dostupa ni ispolzovanie posledovatelnosti v kode Perenapravlenie vvoda vyvoda Sm takzhe Standartnye potoki V bash est vstroennye fajlovye deskriptory 0 stdin 1 stdout 2 stderr stdin standartnyj vvod to chto nabiraet polzovatel v konsoli stdout standartnyj vyvod programmy stderr standartnyj vyvod oshibok Dlya operacij s etimi i polzovatelskimi deskriptorami sushestvuyut specialnye simvoly gt perenapravlenie vyvoda lt perenapravlenie vvoda Simvoly amp mogut predvaryat nomer deskriptora naprimer 2 gt amp 1 perenapravlenie deskriptora 2 stderr v deskriptor 1 stdout 0 lt filename ili lt filename Perenapravlenie vvoda iz fajla filename1 gt filename ili gt filename Perenapravlenie vyvoda v fajl filename Esli otklyuchena opciya noclobber to fajl perezapisyvaetsya postupayushimi dannymi1 gt filename ili gt filename Perenapravlenie vyvoda v fajl filename fajl perezapisyvaetsya postupayushimi dannymi1 gt gt filename ili gt gt filename Perenapravlenie vyvoda v fajl filename dannye dobavlyayutsya v konec fajla Pri otsutstvii fajla on sozdayotsya2 gt filename Perenapravlenie standartnogo vyvoda oshibok v fajl filename 2 gt gt filename Perenapravlenie standartnogo vyvoda oshibok v fajl filename dannye dobavlyayutsya v konec fajla Pri otsutstvii fajla on sozdayotsya amp gt filename Perenapravlenie vyvoda i oshibok v fajl filename 2 gt amp 1 Perenapravlenie vyvoda oshibok na standartnyj vyvod Bash imeet individualnyj sintaksis perenapravleniya kotoryj ne podderzhivaetsya v Bourne shell Primer odnovremennogo perenapravleniya standartnogo vyvoda i standartnyh oshibok command amp gt file Eto proshe nabrat chem ekvivalentnuyu komandu v sintaksise Bourne shell command gt file 2 gt amp 1 Perenapravlenie iz koda skripta Podderzhivaetsya heredoc sintaksis S interpretaciej peremennyh i konstrukcij yazyka vnutri bloka a mnogostrochnyj command lt lt MYDOC123 a tekst lt HOME my file txt MYDOC123 Bez interpretacii peremennyh command lt lt PERLCODE my first Hello my second world say join first second PERLCODE S udaleniem nachalnyh otstupov podderzhivayutsya tolko otstupy tabulyaciej command lt lt TABSTRIP for i 0 i lt 10 i do echo i done TABSTRIP Nachinaya s versii 2 05b bash mozhet perenapravlyat standartnyj vvod iz stroki ispolzuya sleduyushij sintaksis here strings command lt lt lt string to be read as standard input Esli stroka soderzhit probely eyo sleduet zaklyuchit v kavychki ili apostrofy libo ekranirovat probely obratnoj kosoj chertoj Budte vnimatelny vvodimaya s ispolzovaniem here strings stroka soderzhit neyavnuyu posledovatelnost zaversheniya stroki libo 1 dopolnitelnyj bajt line feed libo 2 dopolnitelnyh bajta carriage return i line feed cat lt lt lt 123 wc c Rezultat 4 cat lt echo n 123 wc c Rezultat 3 wc c lt lt lt 123 Rezultat 4 echo n 123 wc c Rezultat 3 Nachinaya s versii 4 1 stalo vozmozhnym ukazyvat v odnoj stroke terminiruyushuyu posledovatelnost simvolov i srazu za nej skobku Eto mozhet byt polezno dlya prisvoeniya peremennoj soderzhimogo here doc var cat lt lt TERMSEQ Fevral Dostat chernil i plakat Pisat o fevrale navzryd Poka grohochushaya slyakot Vesnoyu chyornoyu gorit TERMSEQ Pri etom BASH budet sgenerirovano preduprezhdayushee soobshenie Perenapravlenie dlya processa v celom Primer perenapravlenie standartnogo vyvoda v fajl zapis dannyh zakrytie fajla sbros stdout make Filedescriptor FD 6 a copy of stdout FD 1 exec 6 gt amp 1 open file test data for writing exec 1 gt test data produce some content echo data data data close file test data exec 1 gt amp make stdout a copy of FD 6 reset stdout exec 1 gt amp 6 close FD6 exec 6 gt amp Otkrytie i zakrytie fajlov open file test data for reading exec 6 lt test data read until end of file while read u 6 dta do echo dta done close file test data exec 6 lt amp Podstanovka vyvoda komand Zahvat vyvoda vneshnih komand vypolnit date i pomestit rezultat v VAR VAR date echo VAR vyvedet datu na moment vyzova predydushej stroki Pri etom ne podderzhivayutsya stroki s nul simvolom zaklyuchitelnye perevody strok propadayut v otlichie ot kanalov i prochego fajlovogo vvoda vyvoda Uslovnyj operator usr bin env bash T1 foo T2 bar if T1 T2 then echo uslovie vypolnyaetsya else echo uslovie ne vypolnyaetsya fi Obratite vnimanie chto kavychki vokrug levoj chasti neobyazatelny Cikly usr bin env bash for i in Nomer 1 10 do echo i done usr bin env bash COUNTER 0 while COUNTER lt 10 Do teh por poka uslovie ISTINNO vozvrashaet 0 vypolnyat telo cikla do echo The counter is COUNTER let COUNTER COUNTER 1 done usr bin env bash i 0 until i eq 10 Do teh por poka uslovie LOZhNO vozvrashaet ne 0 vypolnyat telo cikla do echo i i i 1 done usr bin env bash vnutri dvojnyh kruglyh skobok peremennye mozhno pisat v Si stile bez i razdelyaya probelom operatory i operandy for i 0 i lt 10 i do echo n i done Massivy V bash realizovany tolko odnomernye massivy Indeksami mogut byt kak celochislennye znacheniya obychnyj massiv tak i stroki associativnyj massiv ili hesh Nesmotrya na unifikaciyu sintaksisa dlya raboty s obychnymi i associativnymi massivami pervye ne yavlyayutsya raznovidnostyu vtoryh ni s tochki zreniya konechnogo polzovatelya ni s tochki zreniya vnutrennej logiki samogo interpretatora Kak estestvennoe sledstvie podderzhki associativnyh klyuchej v bash sushestvuet krajne ogranichennaya vozmozhnost emulyacii mnogomernyh massivov Obshie operacii Poluchit znachenie elementa kak indeksirovannogo tak i associativnogo massiva mozhno Po fiksirovannomu znacheniyu indeksa v linejnom massive ili stroki v associativnom declare a arrLinear 11 22 33 44 declare A arrAssoc city London index 420224 vi arrLinear 3 vi 44 va arrAssoc city va London Po znacheniyu peremennoj pri etom dlya indeksirovannyh massivov neobyazatelno ukazyvat sigil pered imenem peremennoj ispolzuemoj dlya indesacii Sigil pered peremennoj indeksa obyazatelen v sluchae s associativnymi massivami declare i n 3 vi arrLinear i vi 44 vi arrLinear i analogichno predydushemu no bez sigila declare index city va arrAssoc index va London i eto pravilno va arrAssoc index va 420224 i eto oshibochnyj rezultat esli podrazumevalos index va arrAssoc index va 420224 Poluchit stroku sostoyashuyu iz vseh elementov massiva razdelyonnyh probelom values arr Poluchit stroku so vsemi indeksami ili klyuchami massiva nezavisimo ot togo chislennye oni ili tekstovye keys arr Osushestvit massovuyu zamenu pervogo vhozhdeniya podstroki MAY na MARCH vo vseh elementah massiva i vernut stroku sostavlennuyu iz rezultiruyushih elementov massiva razdelyonnyh probelom values arr MAY MARCH To zhe samoe no v kazhdom elemente massiva budut zameneny vse vhozhdeniya podstroki MAY values arr MAY MARCH Do sih por ne vse zayavlennye v dokumentacii vozmozhnosti pravilno rabotayut dlya massivov Naprimer v imya massiva nepravilno srabatyvaet dlya pustogo massiva Operacii s indeksirovannymi massivami Bash imeet podderzhku odnomernyh massivov Inicializirovat elementy massiva mozhno v vide my array xx Takzhe mozhno yavno obyavit massiv v scenarii s pomoshyu direktivy declare declare a my array Obrashatsya k otdelnym elementam massiva mozhno s pomoshyu figurnyh skobok my array xx Inicializirovat indeksirovannyj massiv mozhno dvumya sposobami 1 Array element1 element2 element3 2 temp array 0 element1 temp array 5 element temp array 9 elementN Dobavlenie elementov v konec indeksirovannogo massiva declare a arrAnimals arrAnimals dog elephant horse cow fox koala turtle Vyvodim soderzhimoe massiva echo arrAnimals V konec massiva arrAnimals dobavlyaem novyj element pig arrAnimals pig I snova pokazyvaem soderzhimoe massiva echo arrAnimals Poluchit pervyj element massiva echo arrAnimals 0 Kak indeksirovannye tak i associativnye massivy podderzhivayut tak nazyvaemye srezy Eshyo odin sposob poluchit pervyj element massiva echo arrAnimals 0 1 Vyvesti 3 elementa massiva nachinaya so 2 go echo arrAnimals 2 3 Primechanie v sluchae s associativnymi massivami poryadok sledovaniya znachenij v obshem sluchae budet sluchajnym opredelyaetsya ispolzuemoj hesh funkciej poetomu operaciya sreza na associativnom massive hotya i dopustima no imeet krajne ogranichennuyu oblast prakticheskogo primeneniya V massivah s chislovymi indeksami dopustima obratnaya negativnaya adresaciya pozvolyayushaya poluchit dostup k elementam nachinaya s konca massiva Znachenie poslednego elementa massiva echo arrAnimals 1 Znachenie predposlednego elementa massiva echo arrAnimals 2 i t d S pomoshyu vstroennoj komandy mapfile sinonim readarray mozhno otobrazhat soderzhimoe tekstovogo fajla v indeksirovannyj massiv declare a fileWithLogins mapfile fileWithLogins lt etc passwd for i 0 i lt fileWithLogins i do echo Line i fileWithLogins i done Operacii s associativnymi massivami Nachinaya s versii 4 0 v bash poyavilas podderzhka associativnyh massivov tak nazyvaemyh hash massivov Dlya obyavleniya associativnyh massivov ispolzuetsya klyuch A vstroennoj komandy declare declare A hshArray Kak i v sluchae s indeksirovannymi massivami dlya zapolneniya associativnyh massivov mogut ispolzovatsya dva razlichnyh sintaksisa 1 TheCapitalOf Georgia Tbilisi TheCapitalOf Australia Canberra TheCapitalOf Pakistan Islamabad 2 TheCapitalOf Georgia Tbilisi Australia Canberra Pakistan Islamabad S pomoshyu associativnyh massivov mozhno imitirovat podderzhku mnogomernyh massivov declare A a obyavlyaet associativnyj massiv a i 1 j 2 inicializaciya neskolkih indeksov a i j 5 prisvoenie znacheniya 5 v yachejku i j t e 1 2 echo a i j vyvod hranimyh znachenij iz i j K sozhaleniyu v tekushih versiyah bash skopirovat soderzhimoe odnogo associativnogo massiva v drugoj prostym prisvaivaniem nevozmozhno Dannuyu problemu mozhno tolko obojti dlya chego sushestvuyut dva principialno raznyh podhoda 1 Emulirovat obyavlenie vtorogo hesha s nulya putyom kopirovaniya obyavleniya pervogo hesha declare A hsh1 hsh1 source lt declare p hsh1 sed s declare A hsh1 declare A hsh2 2 Perebrat vse elementy hesha istochnika i skopirovat ih v celevoj hesh declare A hsh1 hsh2 hsh1 for k in hsh1 do hsh2 k hsh1 k done Bezopasnaya rabota s massivami Massivy yavlyayutsya udobnym sposobom peredachi dinamicheski sgenerirovannyh argumentov v funkcii ili komandy Pri etom kazhdyj element massiva predstavlyaet soboj otdelnyj argument args ls l a ls args ls l a ls args ls l a ls args ls l a Odnako pri podobnom ispolzovanii massivov sleduet byt ostorozhnym vvidu osobennostej raskrytiya massivov pri ispolzovanii v kachestve indeksov specialnyh simvolov i Esli massiv zaklyuchyon v kavychki i raskryvaetsya s pomoshyu indeksa to obrazuetsya stroka iz slov gde kazhdoe slovo otdelnyj element massiva Odnako esli ne zaklyuchit raskrytie massiva v dvojnye kavychki to mozhet poluchitsya sovsem drugoj rezultat probely vhodyashie v sostav elementov massiva stanovyatsya razdelitelyami slov args l a home user Rabochij stol ls args prosmotr soderzhimogo kataloga home user Rabochij stol ls args oshibka katalogov home user Rabochij i stol ne sushestvuet Massiv s indeksom zaklyuchyonnyj v dvojnye kavychki raskryvaetsya v odnu stroku soedinyaya vse elementy massiva cherez razdeliteli hranimye v peremennoj IFS Esli ne ukazat dvojnye kavychki to massiv raskryvaetsya analogichno raskrytiyu pri ispolzovanii indeksa args usr local bin IFS ls args prosmotr soderzhimogo kataloga usr local bin IFS ls args poocheryodnyj prosmotr soderzhimogo katalogov usr local i bin Pri sozdanii massiva iz soderzhimogo tekstovoj peremennoj neobhodimo uchityvat vozmozhnoe nalichie probelov v tekste Naprimer v kachestve odnogo iz sposobov sozdaniya massiva iz stroki s perechisleniem mozhno rassmatrivat zamenu simvola razdelitelya na probel Odnako nalichie probelov v razdelyaemyh elementah privedyot k drobleniyu samih elementov na chasti array text nepravilno tekst v peremennoj text mog soderzhat probelnye simvoly IFS array text pravilno razdeltelnym simvolom yavlyaetsya zapyataya IFS read r a array lt lt lt text pravilno alternativnyj variant s perenapravleniem soderzhimogo peremennoj text v komandu read K oshibkam mozhet privesti sozdanie massiva iz teksta poluchennogo v kachestve vyvoda komand ili iz fajla tak kak ne tolko perevody strok no takzhe i probely s simvolami tabulyacii po umolchaniyu budut schitatsya razdelitelyami array ls nepravilno probely v nazvanii fajlov mogut razbit imya fajla na dva elementa massiva IFS n array ls pravilno razdelitelem budet tolko perevod strok mapfile t array lt lt ls pravilno alternativnyj variant cherez vstroennuyu komandu mapfile Konvejer Konvejer peredayot vyvod predydushej komandy na vvod sleduyushej ili na vhod komandnogo interpretatora Metod chasto ispolzuetsya dlya svyazyvaniya posledovatelnosti komand v edinuyu cepochku Konvejer oboznachaetsya simvolom vertikalnoj cherty Primer grep rabotaet kak filtr dlya standartnogo vyvoda cat filename grep pattern Logicheskie operacii Logicheskoe ILI oboznachaetsya kak V operaciyah proverki uslovij operator vozvrashaet 0 success esli odin iz operandov imeet znachenie true ISTINA Logicheskoe I oboznachaetsya kak amp amp V operaciyah proverki uslovij operator amp amp vozvrashaet 0 success togda i tolko togda kogda oba operanda imeyut znachenie true ISTINA Primechanie Vozmozhnaya putanica v ponimanii voznikaet iz za togo chto komanda true i uspeshnoe zavershenie lyuboj komandy zavershaetsya s kodom vozvrata 0 success false naoborot ne 0 v to vremya kak logicheskoe znachenie true false otlichno ot nulya ravno nulyu Primery if false then echo successfully else echo unsuccessfully fi unsuccessfully let a 1 amp amp 0 amp amp 123 echo echo a 1 Kod zaversheniya komandy nulevoj rezultat vychisleniya arifmeticheskogo vyrazheniya 0 Znachenie peremennoj a rezultat logicheskoj operacii if 1 amp amp 0 amp amp 123 then echo true else echo false fi false let a 1 amp amp 123 amp amp 345 echo echo a 0 Kod zaversheniya komandy 1 Znachenie peremennoj a rezultat logicheskoj operacii if 1 amp amp 123 amp amp 345 then echo true else echo false fi true false amp amp echo Uspeshnoe zavershenie echo Neuspeshnoe zavershenie Neuspeshnoe zavershenie Celochislennaya matematika Bash mozhet vypolnyat celochislennye vychisleniya vnutri processa ispolzuya komandu i sintaksis peremennoj kak pokazano nizhe VAR 55 Ustanavlivaem peremennuyu VAR ravnoj 55 VAR VAR 1 Dobavlyaem edinicu k peremennoj VAR Obratite vnimanie na otsutstvie znaka VAR 1 Sokrashyonnaya forma zapisi inkrementa VAR Drugoj sposob uvelicheniya VAR na edinicu Vypolnyaet prefiksnyj inkrement VAR Drugoj sposob uvelicheniya VAR na edinicu Vypolnyaet postfiksnyj inkrement echo VAR 22 Umnozhaem VAR na 22 i peredaem rezultat komande echo VAR 22 Ustarevshij sposob sdelat to zhe VAR lt lt 3 Pobitovyj sdvig vlevo to zhe chto VAR 8 VAR gt gt 3 Pobitovyj sdvig vpravo to zhe chto VAR 8 Komanda takzhe mozhet ispolzovatsya v uslovnyh utverzhdeniyah tak kak eyo ishodnyj parametr eto 0 ili 1 kotorye mogut interpretirovatsya kak true ili false if VAR Y 3 X 2 then echo Yes fi Z gt 23 amp amp echo Yes Komanda podderzhivaet sleduyushie operatory sravneniya gt lt gt lt Bash ne podderzhivaet vychisleniya vnutri processa s chislami s plavayushej tochkoj Tolko komandnye processory Unix Korn shell versiya 1993 goda i zsh nachinaya s versii 4 0 podderzhivayut etu vozmozhnost Spisok matematicheskih operacij vozvedenie v stepen delenie po modulyu ostatok ot deleniya let pozvolyaet ispolzovat sokrasheniya arifmeticheskih komand sokrashaya kolichestvo ispolzuemyh peremennyh naprimer a b ekvivalentno a a b i t p Peremennye i argumentyArgumenty pid tekushego shell samogo processa scenariya pid poslednego processa v fonovom rezhime kod vozvrata poslednego processa funkcii ili skripta i x i gde x nomer parametra peredannogo skriptu 1 2 i t d 0 poslednij zapushennyj skript kolichestvo argumentov komandnoj stroki vse argumenty v vide odnoj stroki slova to zhe samoe chto i no pri etom kazhdyj parametr predstavlen kak otdelnaya stroka slovo spisok flagov peredannyh scenariyu soderzhit poslednij argument predydushej komandy Vstroennye peremennye BASH put k ispolnyaemomu fajlu bash BASHPID PID tekushego bash sm Primechanie BASH VERSINFO n massiv sostoyashij iz 6 elementov soderzhashij informaciyu o versii bash BASH VERSION versiya Bash ustanovlennogo v sisteme DIRSTACK soderzhimoe vershiny steka katalogov EDITOR zadannyj po umolchaniyu redaktor EUID effektivnyj identifikacionnyj nomer polzovatelya Effective User ID FUNCNAME imya tekushej funkcii GLOBIGNORE perechen shablonnyh simvolov kotorye budut proignorirovany pri vypolnenii podstanovki imyon fajlov globbing GROUPS gruppy k kotorym prinadlezhit tekushij polzovatel HOME domashnij katalog polzovatelya HOSTNAME setevoe imya hosta HOSTTYPE tip mashiny identificiruet apparatnuyu arhitekturu IFS razdelitel polej vo vvodimoj stroke LC COLLATE zadayot poryadok sortirovki simvolov v operaciyah podstanovki imyon fajlov i v poiske po shablonu LC CTYPE opredelyaet kodirovku simvolov LINENO Nomer stroki ispolnyaemogo scenariya MACHTYPE apparatnaya arhitektura OLDPWD prezhnij rabochij katalog OSTYPE tip operacionnoj sistemy PATH put poiska vklyuchaet v sebya katalogi usr bin usr X11R6 bin usr local bin i t d PIPESTATUS Kod vozvrata kanala konvejera PPID PID identifikator roditelskogo processa PS1 priglashenie komandnoj stroki PS2 vtorichnoe priglashenie komandnoj stroki vyvoditsya togda kogda ot polzovatelya ozhidaetsya dopolnitelnyj vvod Obychno otobrazhaetsya kak gt PS3 tretichnoe priglashenie vyvoditsya kogda polzovatel dolzhen sdelat vybor v operatore select PS4 priglashenie chetvyortogo urovnya vyvoditsya v izmenyonnom vide v nachale kazhdoj stroki otladochnogo vyvoda togda kogda scenarij vyzyvaetsya s klyuchom x Obychno otobrazhaetsya kak i t d PWD rabochij tekushij katalog REPLY peremennaya po umolchaniyu kuda zapisyvaetsya vvod polzovatelya vypolnennyj s pomoshyu komandy read SECONDS vremya raboty scenariya v sekundah SHELLOPTS spisok dopustimyh opcij interpretatora dostupna tolko dlya chteniya SHLVL uroven vlozhennosti shellPrimechanie otlichaetsya ot pri opredelennyh obstoyatelstvah takih kak podobolochki kotorye ne trebuyut povtornoj inicializacii bash Primer echo echo BASHPID BASHPID 25680 16920 16920 16920 BASHPID outside of the subshell outside of the subshell inside of the subshell BASHPID inside of the subshell Regulyarnye vyrazheniya vnutri processa Bash 3 0 podderzhivaet vstroennye regulyarnye vyrazheniya s sintaksisom podobnym sintaksisu Perl string regex Sintaksis regulyarnyh vyrazhenij zadokumentirovan na stranicah dokumentacii man 7 regex Status vyhoda ustanavlivaetsya v 0 esli regulyarnoe vyrazhenie sovpalo so strokoj i 1 esli net Znachenie podvyrazheniya zaklyuchyonnogo v skobki mozhno poluchit cherez peremennuyu BASH REMATCH naprimer REGEXP foo bar bl if abcfoobarbletch REGEXP then echo Regulyarnoe vyrazhenie sovpalo so strokoj echo BASH REMATCH vyvodit foobarbletch echo BASH REMATCH 1 vyvodit bar echo BASH REMATCH 2 vyvodit etch fi Vstroennye regulyarnye vyrazheniya obychno rabotayut bystree chem vypolnenie vneshnej komandy grep potomu chto sootvetstvuyushee regulyarnoe vyrazhenie vypolnyaetsya v ramkah processa bash Esli regulyarnoe vyrazhenie ili stroka soderzhat probely ili metasimvoly takie kak ili ih sleduet vzyat v kavychki Rekomenduetsya ispolzovat peremennuyu dlya hraneniya regulyarnogo vyrazheniya kak v vysheprivedyonnom primere dlya izbezhaniya problem s ekranirovaniem specialnyh simvolov Mozhno ispolzovat vyvod bash s opciej x dlya proverki kak imenno bash vosprinimaet vashe regulyarnoe vyrazhenie Rasshirenie skobokVozmozhnost rasshireniya skobok zaimstvovana u csh Ona pozvolyaet proizvolnoj stroke byt sformirovannoj s ispolzovaniem pohozhej tehniki kak eto delaetsya s nazvaniyami fajlov Odnako v bash sgenerirovannye stroki ne obyazany byt imenami fajlov Rezultat kazhdogo rasshireniya stroki ne sortiruetsya sohranyaetsya poryadok sleva napravo Eto osobennost prisushaya bash echo a p c d b e ape ace ade abe Ne sleduet ispolzovat etu osobennost esli skript planiruetsya portirovat potomu chto v tradicionnyh skriptah rasshirenie stroki ne budet dejstvovat Tradicionnaya obolochka ne dayot tot zhe rezultat echo a p c d b e a p c d b e Kogda ispolzuetsya rasshirenie skobok v sochetanii s simvolami podstanovki skobki raskryvayutsya pervymi a zatem rezultat obrabatyvaetsya v obychnom rezhime Takim obrazom spisok JPEG i PNG izobrazhenij v tekushem kataloge mozhet byt poluchen tak ls jpg jpeg png skobki raskryvayutsya do jpg jpeg png posle chego vypolnyaetsya poisk po maskamGoryachie klavishiTab Avtodopolnenie stroki za kursorom Ctrl Ctrl Povtorit poslednyuyu komandu Ctrl a Peremeshaet kursor v nachalo stroki ekvivalentno klavishe Home Ctrl b Peremeshaet kursor na odin simvol nazad ekvivalentno klavishe Ctrl r Poisk po nabrannym ranee komandam Ctrl c Posylaet signal SIGINT tekushemu zadaniyu kotoryj obychno no ne vsegda prekrashaet i zakryvaet ego Ctrl d Posylaet marker EOF kotoryj esli ne otklyucheno opciej i tekushaya stroka ne soderzhit teksta zakryvaet tekushuyu obolochku ekvivalentno komande exit pri vvode v ispolnyayushuyusya programmu zavershaet vvod esli v stroke net teksta inache zavershaet stroku bez simvola zaversheniya stroki Ctrl d Udalyaet tekushij simvol tolko esli est tekst na tekushej stroke ekvivalentno klavishe Delete Ctrl e Peremeshaet kursor v konec stroki ekvivalentno klavishe End Ctrl f Peremeshaet kursor na odin simvol vperyod ekvivalentno klavishe Ctrl h Udalyaet predydushij simvol to zhe samoe chto i klavisha Backspace Ctrl i Ekvivalentno klavishe Tab Ctrl j Ekvivalentno klavishe Enter Ctrl k Ochishaet soderzhimoe stroki posle kursora i kopiruet eto v bufer obmena ekzemplyara bash kill ring Ctrl l Ochishaet soderzhimoe ekrana ekvivalentno komande clear Ctrl m Ekvivalentno klavishe Enter Ctrl n sleduyushee perelistyvaet k sleduyushej komande ekvivalentno klavishe Ctrl o Vypolnyaet najdennuyu komandu v istorii i vybiraet sleduyushuyu stroku otnositelno tekushej stroki v istorii dlya togo chtoby otredaktirovat Ctrl p predydushee perelistyvaet k predshestvuyushej komande ekvivalentno klavishe Ctrl q Vozobnovit vyvod processa Ctrl s Priostanovit vyvod processa stop Ctrl t Obmen mestami sosednih simvolov Ctrl u Ochishaet soderzhanie stroki do kursora i kopiruet ego v bufer obmena ekzemplyara bash kill ring Ctrl w Ubiraet slovo do kursora i kopiruet ego v bufer obmena ekzemplyara bash kill ring Ctrl y dobavlyaet soderzhimoe bufera obmena ekzemplyara bash ot pozicii kursora Ctrl z Posylaet signal SIGTSTP tekushemu zadaniyu kotoryj priostanavlivaet ego vypolnenie i vozobnovlyaet priyom komand Dlya vozobnovleniya ego vypolneniya v fonovom rezhime mozhno vvesti komandu bg Dlya togo chtoby vernut ego iz fonovogo rezhima ili priostanovki mozhno vypolnit fg Ctrl Prervat tekushij process s dampom pamyati core dump poslav emu signal Ctrl Ctrl Shift Otkat redaktirovaniya Alt gt perehod k poslednej komande v istorii Alt b nazad peremeshaet kursor nazad na odno slovo ekvivalentno klavishe Ctrl Alt d Sokrashaet slovo posle kursora Alt f vperyod peremeshaet kursor vperyod na odno slovo ekvivalentno klavishe Ctrl Alt t Menyaet dva slova pered kursorom mestami Alt Dobavlyaet poslednij argument predydushej komandy Alt c Zamenit bukvu pod kursorom na zaglavnuyu Alt l Zamenit bukvu pod kursorom na strochnuyu Ctrl x Ctrl x Perenosit kursor k nachalu stroki ot tekushej pozicii i obratno Ctrl x Ctrl e Redaktiruet tekushuyu stroku v programme EDITOR ili vi esli ne predopredeleno Ctrl x Ctrl v Vyvod na ekran informacii o versii tekushego ekzemplyara bash Startovye skriptyBash pri zapuske vyzyvaet komandy iz mnozhestva razlichnyh skriptov Kogda bash vyzyvaetsya kak interaktivnaya obolochka vhoda v sistemu pervym delom on chitaet i vyzyvaet komandy iz fajla etc profile esli etot fajl sushestvuet Posle chteniya etogo fajla on smotrit sleduyushie fajly v sleduyushem poryadke bash profile bash login i profile chitaet i vyzyvaet komandy iz pervogo kotoryj sushestvuet i dostupen dlya chteniya Pri vyhode bash chitaet i vypolnyaet komandy iz fajla bash logout Kogda zapuskaetsya interaktivnaya obolochka no ne dlya vhoda v sistemu bash chitaet i ispolnyaet komandy iz fajlov etc bash bashrc i bashrc esli oni sushestvuyut Eto mozhet byt otmeneno opciej norc Opciya rcfile file zastavit bash ispolzovat komandy iz fajla file vmesto etc bash bashrc i bashrc PerenosimostPervoj strokoj skripta dolzhna byt zapis bin bash esli izvesten absolyutnyj put k ispolnyaemomu fajlu libo usr bin env bash dlya avtomaticheskogo opredeleniya puti k ispolnyaemomu fajlu cherez komandu env s pomoshyu peremennoj okruzheniya PATH Skripty obolochek napisannye so specificheskimi dlya bash osobennostyami ne budut rabotat na sistemah gde ispolzuetsya Bourne shell sh ili odin iz ego analogov esli bash ne byl ustanovlen v kachestve dopolnitelnoj obolochki Eta problema stala osobenno vazhnoj kogda Ubuntu nachal s oktyabrya 2006 goda postavlyat Debian Almquist shell dash kak skriptovuyu obolochku po umolchaniyu chto privelo k nerabotosposobnosti mnogochislennyh skriptov Graficheskij interfejs k skriptamSushestvuet mnozhestvo programm pozvolyayushih sozdavat graficheskij interfejs k bash skriptam dialog utilita pozvolyayushaya sozdavat dialogovye okna v konsoli ispolzuet biblioteki curses i ncurses analog utility dialog ispolzuet biblioteku zenity naibolee populyarnoe prilozhenie dlya sozdaniya graficheskogo interfejsa k skriptam analog zenity v srede KDE fork zenity s bolshimi vozmozhnostyami zamena dialog prednaznachennaya dlya pridaniya zapuskaemym iz terminala programmam interfejsa X Window System naibolee funkcionalnaya utilita dlya sozdaniya graficheskih prilozhenij na bash skriptah Sm takzheGNU ReadlinePrimechaniyabash 5 2 21 tar gz 2023 GNU Guix 2012 William McCarty Learning Debian GNU Linux 13 Conquering the BASH Shell angl O Reilly Media 6 oktyabrya 1999 Data obrasheniya 6 dekabrya 2018 9 noyabrya 2017 goda Nevozmozhno vyvesti znachenie peremennoj soderzhashej n v otlichie ot a href wiki Printf title Printf printf a s n peremennaya tak kak n interpretiruetsya kak parametr komandy echo Bash Reference Manual ot 13 maya 2019 na Wayback Machine Bash News neopr Data obrasheniya 18 yanvarya 2017 1 fevralya 2017 goda BashGuide TestsAndConditionals ot 12 fevralya 2014 na Wayback Machine Greg s Wiki Dlya polucheniya dejstvitelno vseh elementov vklyuchaya elementy iz probelov i pustye stroki obyazatelno ispolzovat kavychki Zdes apostrofy upotrebleny pravilno bash 1 GNU Bourne Again SHell Linux man page angl linux die net Data obrasheniya 11 iyulya 2017 27 dekabrya 2019 goda Ustarevshij variant env 1 Linux manual page neopr man7 org Data obrasheniya 21 yanvarya 2017 13 yanvarya 2017 goda SsylkiBash Reference Manual angl Oficialnoe rukovodstvo Data obrasheniya 22 noyabrya 2010 Arhivirovano iz originala 23 avgusta 2011 goda neopr Perevod man stranicy ot 2004 goda Arhivirovano iz originala 23 aprelya 2012 goda rus Rasshirennoe rukovodstvo po napisaniyu bash skriptov Data obrasheniya 6 avgusta 2011 Arhivirovano iz originala 28 avgusta 2011 goda Chastye oshibki programmirovaniya na Bash neopr Data obrasheniya 22 noyabrya 2010 Arhivirovano iz originala 23 avgusta 2011 goda neopr Data obrasheniya 22 noyabrya 2010 Arhivirovano iz originala 27 avgusta 2011 goda Bash rus openSuse wiki Data obrasheniya 22 noyabrya 2010 Arhivirovano iz originala 23 avgusta 2011 goda Opisanie komand bash angl Data obrasheniya 22 noyabrya 2010 Arhivirovano iz originala 23 avgusta 2011 goda Yan Shilds Ian Shields Poleznye sovety Linux Parametry bash i rasshireniya parametrov rus Arhivirovano iz originala 15 oktyabrya 2012 goda
Вершина