123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147 |
- # SOME DESCRIPTIVE TITLE
- # Copyright (C) YEAR Free Software Foundation, Inc.
- # This file is distributed under the same license as the PACKAGE package.
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
- #
- #, fuzzy
- msgid ""
- msgstr ""
- "Project-Id-Version: PACKAGE VERSION\n"
- "POT-Creation-Date: 2020-12-07 18:35+0100\n"
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
- "Language-Team: LANGUAGE <LL@li.org>\n"
- "Language: \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=CHARSET\n"
- "Content-Transfer-Encoding: 8bit\n"
- #. type: title
- #: ./bashref.texi:4 ./bashref.texi:41
- #, no-wrap
- msgid "Bash Reference Manual"
- msgstr ""
- #. type: include
- #: ./bashref.texi:6
- #, no-wrap
- msgid "version.texi"
- msgstr ""
- #. type: copying
- #: ./bashref.texi:12
- msgid ""
- "This text is a brief description of the features that are present in the "
- "Bash shell (version @value{VERSION}, @value{UPDATED})."
- msgstr ""
- #. type: ifnottex
- #: ./bashref.texi:16 ./bashref.texi:67
- msgid ""
- "This is Edition @value{EDITION}, last updated @value{UPDATED}, of @cite{The "
- "GNU Bash Reference Manual}, for @code{Bash}, Version @value{VERSION}."
- msgstr ""
- #. type: copying
- #: ./bashref.texi:18
- msgid "Copyright @copyright{} 1988--2020 Free Software Foundation, Inc."
- msgstr ""
- #. type: quotation
- #: ./bashref.texi:26
- msgid ""
- "Permission is granted to copy, distribute and/or modify this document under "
- "the terms of the GNU Free Documentation License, Version 1.3 or any later "
- "version published by the Free Software Foundation; with no Invariant "
- "Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the "
- "license is included in the section entitled ``GNU Free Documentation "
- "License''."
- msgstr ""
- #. type: dircategory
- #: ./bashref.texi:33
- #, no-wrap
- msgid "Basics"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:36
- msgid "Bash: (bash)"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:36
- msgid "The GNU Bourne-Again SHell."
- msgstr ""
- #. type: subtitle
- #: ./bashref.texi:42
- #, no-wrap
- msgid "Reference Documentation for Bash"
- msgstr ""
- #. type: subtitle
- #: ./bashref.texi:43
- #, no-wrap
- msgid "Edition @value{EDITION}, for @code{Bash} Version @value{VERSION}."
- msgstr ""
- #. type: subtitle
- #: ./bashref.texi:44
- #, no-wrap
- msgid "@value{UPDATED-MONTH}"
- msgstr ""
- #. type: author
- #: ./bashref.texi:45
- #, no-wrap
- msgid "Chet Ramey, Case Western Reserve University"
- msgstr ""
- #. type: author
- #: ./bashref.texi:46
- #, no-wrap
- msgid "Brian Fox, Free Software Foundation"
- msgstr ""
- #. type: node
- #: ./bashref.texi:57
- #, no-wrap
- msgid "Top"
- msgstr ""
- #. type: chapter
- #: ./bashref.texi:57 ./bashref.texi:100 ./bashref.texi:103 ./bashref.texi:104
- #, no-wrap
- msgid "Introduction"
- msgstr ""
- #. type: node
- #: ./bashref.texi:57 ./bashref.texi:57
- #, no-wrap
- msgid "(dir)"
- msgstr ""
- #. type: chapter
- #: ./bashref.texi:58 ./bashref.texi:100 ./bashref.texi:6463 ./bashref.texi:6464
- #, no-wrap
- msgid "Bash Features"
- msgstr ""
- #. type: ifnottex
- #: ./bashref.texi:63
- msgid ""
- "This text is a brief description of the features that are present in the "
- "Bash shell (version @value{VERSION}, @value{UPDATED}). The Bash home page "
- "is @url{http://www.gnu.org/software/bash/}."
- msgstr ""
- #. type: ifnottex
- #: ./bashref.texi:75
- msgid ""
- "Bash contains features that appear in other popular shells, and some "
- "features that only appear in Bash. Some of the shells that Bash has "
- "borrowed concepts from are the Bourne Shell (@file{sh}), the Korn Shell "
- "(@file{ksh}), and the C-shell (@file{csh} and its successor, @file{tcsh}). "
- "The following menu breaks the features up into categories, noting which "
- "features were inspired by other shells and which are specific to Bash."
- msgstr ""
- #. type: ifnottex
- #: ./bashref.texi:79
- msgid ""
- "This manual is meant as a brief introduction to features found in Bash. The "
- "Bash manual page should be used as the definitive reference on shell "
- "behavior."
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "An introduction to the shell."
- msgstr ""
- #. type: chapter
- #: ./bashref.texi:100 ./bashref.texi:191 ./bashref.texi:192
- #, no-wrap
- msgid "Definitions"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "Some definitions used in the rest of this manual."
- msgstr ""
- #. type: chapter
- #: ./bashref.texi:100 ./bashref.texi:305 ./bashref.texi:306
- #, no-wrap
- msgid "Basic Shell Features"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "The shell \"building blocks\"."
- msgstr ""
- #. type: chapter
- #: ./bashref.texi:100 ./bashref.texi:3403 ./bashref.texi:3404
- #, no-wrap
- msgid "Shell Builtin Commands"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "Commands that are a part of the shell."
- msgstr ""
- #. type: chapter
- #: ./bashref.texi:100 ./bashref.texi:5574 ./bashref.texi:5575
- #, no-wrap
- msgid "Shell Variables"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "Variables used or set by Bash."
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "Features found only in Bash."
- msgstr ""
- #. type: chapter
- #: ./bashref.texi:100 ./bashref.texi:8179 ./bashref.texi:8180
- #, no-wrap
- msgid "Job Control"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "What job control is and how Bash allows you to use it."
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "Command Line Editing"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "Chapter describing the command line editing features."
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "Using History Interactively"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "Command History Expansion"
- msgstr ""
- #. type: chapter
- #: ./bashref.texi:100 ./bashref.texi:8498 ./bashref.texi:8499
- #, no-wrap
- msgid "Installing Bash"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "How to build and install Bash on your system."
- msgstr ""
- #. type: appendix
- #: ./bashref.texi:100 ./bashref.texi:9031 ./bashref.texi:9032
- #, no-wrap
- msgid "Reporting Bugs"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "How to report bugs in Bash."
- msgstr ""
- #. type: appendix
- #: ./bashref.texi:100 ./bashref.texi:9070 ./bashref.texi:9071
- #, no-wrap
- msgid "Major Differences From The Bourne Shell"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid ""
- "A terse list of the differences between Bash and historical versions of "
- "/bin/sh."
- msgstr ""
- #. type: appendix
- #: ./bashref.texi:100 ./bashref.texi:9538 ./bashref.texi:9539
- #, no-wrap
- msgid "GNU Free Documentation License"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "Copying and sharing this documentation."
- msgstr ""
- #. type: appendix
- #: ./bashref.texi:100 ./bashref.texi:9543 ./bashref.texi:9544
- #, no-wrap
- msgid "Indexes"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:100
- msgid "Various indexes for this manual."
- msgstr ""
- #. type: section
- #: ./bashref.texi:108 ./bashref.texi:110 ./bashref.texi:111
- #, no-wrap
- msgid "What is Bash?"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:108
- msgid "A short description of Bash."
- msgstr ""
- #. type: section
- #: ./bashref.texi:108 ./bashref.texi:136 ./bashref.texi:137
- #, no-wrap
- msgid "What is a shell?"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:108
- msgid "A brief introduction to shells."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:120
- msgid ""
- "Bash is the shell, or command language interpreter, for the @sc{gnu} "
- "operating system. The name is an acronym for the @samp{Bourne-Again SHell}, "
- "a pun on Stephen Bourne, the author of the direct ancestor of the current "
- "Unix shell @code{sh}, which appeared in the Seventh Edition Bell Labs "
- "Research version of Unix."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:128
- msgid ""
- "Bash is largely compatible with @code{sh} and incorporates useful features "
- "from the Korn shell @code{ksh} and the C shell @code{csh}. It is intended "
- "to be a conformant implementation of the @sc{ieee} @sc{posix} Shell and "
- "Tools portion of the @sc{ieee} @sc{posix} specification (@sc{ieee} Standard "
- "1003.1). It offers functional improvements over @code{sh} for both "
- "interactive and programming use."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:135
- msgid ""
- "While the @sc{gnu} operating system provides other shells, including a "
- "version of @code{csh}, Bash is the default shell. Like other @sc{gnu} "
- "software, Bash is quite portable. It currently runs on nearly every version "
- "of Unix and a few other operating systems @minus{} independently-supported "
- "ports exist for @sc{ms-dos}, @sc{os/2}, and Windows platforms."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:142
- msgid ""
- "At its base, a shell is simply a macro processor that executes commands. "
- "The term macro processor means functionality where text and symbols are "
- "expanded to create larger expressions."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:152
- msgid ""
- "A Unix shell is both a command interpreter and a programming language. As a "
- "command interpreter, the shell provides the user interface to the rich set "
- "of @sc{gnu} utilities. The programming language features allow these "
- "utilities to be combined. Files containing commands can be created, and "
- "become commands themselves. These new commands have the same status as "
- "system commands in directories such as @file{/bin}, allowing users or groups "
- "to establish custom environments to automate their common tasks."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:157
- msgid ""
- "Shells may be used interactively or non-interactively. In interactive mode, "
- "they accept input typed from the keyboard. When executing "
- "non-interactively, shells execute commands read from a file."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:167
- msgid ""
- "A shell allows execution of @sc{gnu} commands, both synchronously and "
- "asynchronously. The shell waits for synchronous commands to complete before "
- "accepting more input; asynchronous commands continue to execute in parallel "
- "with the shell while it reads and executes additional commands. The "
- "@dfn{redirection} constructs permit fine-grained control of the input and "
- "output of those commands. Moreover, the shell allows control over the "
- "contents of commands' environments."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:179
- msgid ""
- "Shells also provide a small set of built-in commands (@dfn{builtins}) "
- "implementing functionality impossible or inconvenient to obtain via separate "
- "utilities. For example, @code{cd}, @code{break}, @code{continue}, and "
- "@code{exec} cannot be implemented outside of the shell because they directly "
- "manipulate the shell itself. The @code{history}, @code{getopts}, "
- "@code{kill}, or @code{pwd} builtins, among others, could be implemented in "
- "separate utilities, but they are more convenient to use as builtin "
- "commands. All of the shell builtins are described in subsequent sections."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:184
- msgid ""
- "While executing commands is essential, most of the power (and complexity) of "
- "shells is due to their embedded programming languages. Like any high-level "
- "language, the shell provides variables, flow control constructs, quoting, "
- "and functions."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:190
- msgid ""
- "Shells offer features geared specifically for interactive use rather than to "
- "augment the programming language. These interactive features include job "
- "control, command line editing, command history and aliases. Each of these "
- "features is described in this manual."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:194
- msgid "These definitions are used throughout the remainder of this manual."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:197 ./bashref.texi:198
- #, no-wrap
- msgid "POSIX"
- msgstr ""
- #. type: table
- #: ./bashref.texi:202
- msgid ""
- "A family of open system standards based on Unix. Bash is primarily "
- "concerned with the Shell and Utilities portion of the @sc{posix} 1003.1 "
- "standard."
- msgstr ""
- #. type: item
- #: ./bashref.texi:203
- #, no-wrap
- msgid "blank"
- msgstr ""
- #. type: table
- #: ./bashref.texi:205
- msgid "A space or tab character."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:206 ./bashref.texi:207 ./bashref.texi:4128 ./bashref.texi:4129
- #, no-wrap
- msgid "builtin"
- msgstr ""
- #. type: table
- #: ./bashref.texi:210
- msgid ""
- "A command that is implemented internally by the shell itself, rather than by "
- "an executable program somewhere in the file system."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:211 ./bashref.texi:212
- #, no-wrap
- msgid "control operator"
- msgstr ""
- #. type: table
- #: ./bashref.texi:217
- msgid ""
- "A @code{token} that performs a control function. It is a @code{newline} or "
- "one of the following: @samp{||}, @samp{&&}, @samp{&}, @samp{;}, @samp{;;}, "
- "@samp{;&}, @samp{;;&}, @samp{|}, @samp{|&}, @samp{(}, or @samp{)}."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:218 ./bashref.texi:219 ./bashref.texi:3251
- #, no-wrap
- msgid "exit status"
- msgstr ""
- #. type: table
- #: ./bashref.texi:222
- msgid ""
- "The value returned by a command to its caller. The value is restricted to "
- "eight bits, so the maximum value is 255."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:223 ./bashref.texi:224
- #, no-wrap
- msgid "field"
- msgstr ""
- #. type: table
- #: ./bashref.texi:228
- msgid ""
- "A unit of text that is the result of one of the shell expansions. After "
- "expansion, when executing a command, the resulting fields are used as the "
- "command name and arguments."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:229 ./bashref.texi:230
- #, no-wrap
- msgid "filename"
- msgstr ""
- #. type: table
- #: ./bashref.texi:232
- msgid "A string of characters used to identify a file."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:233 ./bashref.texi:234
- #, no-wrap
- msgid "job"
- msgstr ""
- #. type: table
- #: ./bashref.texi:237
- msgid ""
- "A set of processes comprising a pipeline, and any processes descended from "
- "it, that are all in the same process group."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:238 ./bashref.texi:239 ./bashref.texi:8195
- #, no-wrap
- msgid "job control"
- msgstr ""
- #. type: table
- #: ./bashref.texi:242
- msgid ""
- "A mechanism by which users can selectively stop (suspend) and restart "
- "(resume) execution of processes."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:243 ./bashref.texi:244
- #, no-wrap
- msgid "metacharacter"
- msgstr ""
- #. type: table
- #: ./bashref.texi:249
- msgid ""
- "A character that, when unquoted, separates words. A metacharacter is a "
- "@code{space}, @code{tab}, @code{newline}, or one of the following "
- "characters: @samp{|}, @samp{&}, @samp{;}, @samp{(}, @samp{)}, @samp{<}, or "
- "@samp{>}."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:250 ./bashref.texi:251
- #, no-wrap
- msgid "name"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:252
- #, no-wrap
- msgid "identifier"
- msgstr ""
- #. type: table
- #: ./bashref.texi:257
- msgid ""
- "A @code{word} consisting solely of letters, numbers, and underscores, and "
- "beginning with a letter or underscore. @code{Name}s are used as shell "
- "variable and function names. Also referred to as an @code{identifier}."
- msgstr ""
- #. type: item
- #: ./bashref.texi:258
- #, no-wrap
- msgid "operator"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:259
- #, no-wrap
- msgid "operator, shell"
- msgstr ""
- #. type: table
- #: ./bashref.texi:263
- msgid ""
- "A @code{control operator} or a @code{redirection operator}. "
- "@xref{Redirections}, for a list of redirection operators. Operators contain "
- "at least one unquoted @code{metacharacter}."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:264 ./bashref.texi:265
- #, no-wrap
- msgid "process group"
- msgstr ""
- #. type: table
- #: ./bashref.texi:268
- msgid ""
- "A collection of related processes each having the same process group "
- "@sc{id}."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:269 ./bashref.texi:270
- #, no-wrap
- msgid "process group ID"
- msgstr ""
- #. type: table
- #: ./bashref.texi:273
- msgid ""
- "A unique identifier that represents a @code{process group} during its "
- "lifetime."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:274 ./bashref.texi:275
- #, no-wrap
- msgid "reserved word"
- msgstr ""
- #. type: table
- #: ./bashref.texi:279
- msgid ""
- "A @code{word} that has a special meaning to the shell. Most reserved words "
- "introduce shell flow control constructs, such as @code{for} and "
- "@code{while}."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:280 ./bashref.texi:281
- #, no-wrap
- msgid "return status"
- msgstr ""
- #. type: table
- #: ./bashref.texi:283
- msgid "A synonym for @code{exit status}."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:284 ./bashref.texi:285
- #, no-wrap
- msgid "signal"
- msgstr ""
- #. type: table
- #: ./bashref.texi:288
- msgid ""
- "A mechanism by which a process may be notified by the kernel of an event "
- "occurring in the system."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:289 ./bashref.texi:290 ./bashref.texi:5545
- #, no-wrap
- msgid "special builtin"
- msgstr ""
- #. type: table
- #: ./bashref.texi:293
- msgid ""
- "A shell builtin command that has been classified as special by the "
- "@sc{posix} standard."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:294 ./bashref.texi:295
- #, no-wrap
- msgid "token"
- msgstr ""
- #. type: table
- #: ./bashref.texi:298
- msgid ""
- "A sequence of characters considered a single unit by the shell. It is "
- "either a @code{word} or an @code{operator}."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:299 ./bashref.texi:300
- #, no-wrap
- msgid "word"
- msgstr ""
- #. type: table
- #: ./bashref.texi:303
- msgid ""
- "A sequence of characters treated as a unit by the shell. Words may not "
- "include unquoted @code{metacharacters}."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:307
- #, no-wrap
- msgid "Bourne shell"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:315
- msgid ""
- "Bash is an acronym for @samp{Bourne-Again SHell}. The Bourne shell is the "
- "traditional Unix shell originally written by Stephen Bourne. All of the "
- "Bourne shell builtin commands are available in Bash, The rules for "
- "evaluation and quoting are taken from the @sc{posix} specification for the "
- "`standard' Unix shell."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:321
- msgid ""
- "This chapter briefly summarizes the shell's `building blocks': commands, "
- "control structures, shell functions, shell @i{parameters}, shell expansions, "
- "@i{redirections}, which are a way to direct input and output from and to "
- "named files, and how the shell executes commands."
- msgstr ""
- #. type: section
- #: ./bashref.texi:332 ./bashref.texi:334 ./bashref.texi:335
- #, no-wrap
- msgid "Shell Syntax"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:332
- msgid "What your input means to the shell."
- msgstr ""
- #. type: section
- #: ./bashref.texi:332 ./bashref.texi:575 ./bashref.texi:576
- #, no-wrap
- msgid "Shell Commands"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:332
- msgid "The types of commands you can use."
- msgstr ""
- #. type: section
- #: ./bashref.texi:332 ./bashref.texi:1394 ./bashref.texi:1395
- #, no-wrap
- msgid "Shell Functions"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:332
- msgid "Grouping commands by name."
- msgstr ""
- #. type: section
- #: ./bashref.texi:332 ./bashref.texi:1578 ./bashref.texi:1579
- #, no-wrap
- msgid "Shell Parameters"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:332
- msgid "How the shell stores values."
- msgstr ""
- #. type: section
- #: ./bashref.texi:332 ./bashref.texi:1785 ./bashref.texi:1786
- #, no-wrap
- msgid "Shell Expansions"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:332
- msgid "How Bash expands parameters and the various expansions available."
- msgstr ""
- #. type: section
- #: ./bashref.texi:332 ./bashref.texi:2703 ./bashref.texi:2704
- #, no-wrap
- msgid "Redirections"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:332
- msgid "A way to control where input and output go."
- msgstr ""
- #. type: section
- #: ./bashref.texi:332 ./bashref.texi:2995 ./bashref.texi:2996
- #, no-wrap
- msgid "Executing Commands"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:332
- msgid "What happens when you run a command."
- msgstr ""
- #. type: section
- #: ./bashref.texi:332 ./bashref.texi:3333 ./bashref.texi:3334
- #, no-wrap
- msgid "Shell Scripts"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:332
- msgid "Executing files of shell commands."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:340 ./bashref.texi:357 ./bashref.texi:358
- #, no-wrap
- msgid "Shell Operation"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:340
- msgid "The basic operation of the shell."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:340 ./bashref.texi:398 ./bashref.texi:399
- #, no-wrap
- msgid "Quoting"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:340
- msgid "How to remove the special meaning from characters."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:340 ./bashref.texi:560 ./bashref.texi:561
- #, no-wrap
- msgid "Comments"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:340
- msgid "How to specify comments."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:346
- msgid ""
- "When the shell reads input, it proceeds through a sequence of operations. "
- "If the input indicates the beginning of a comment, the shell ignores the "
- "comment symbol (@samp{#}), and the rest of that line."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:350
- msgid ""
- "Otherwise, roughly speaking, the shell reads its input and divides the input "
- "into words and operators, employing the quoting rules to select which "
- "meanings to assign various words and characters."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:356
- msgid ""
- "The shell then parses these tokens into commands and other constructs, "
- "removes the special meaning of certain words or characters, expands others, "
- "redirects input and output as needed, executes the specified command, waits "
- "for the command's exit status, and makes that exit status available for "
- "further inspection or processing."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:363
- msgid ""
- "The following is a brief description of the shell's operation when it reads "
- "and executes a command. Basically, the shell does the following:"
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:369
- msgid ""
- "Reads its input from a file (@pxref{Shell Scripts}), from a string supplied "
- "as an argument to the @option{-c} invocation option (@pxref{Invoking Bash}), "
- "or from the user's terminal."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:375
- msgid ""
- "Breaks the input into words and operators, obeying the quoting rules "
- "described in @ref{Quoting}. These tokens are separated by "
- "@code{metacharacters}. Alias expansion is performed by this step "
- "(@pxref{Aliases})."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:379
- msgid ""
- "Parses the tokens into simple and compound commands (@pxref{Shell "
- "Commands})."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:384
- msgid ""
- "Performs the various shell expansions (@pxref{Shell Expansions}), breaking "
- "the expanded tokens into lists of filenames (@pxref{Filename Expansion}) "
- "and commands and arguments."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:388
- msgid ""
- "Performs any necessary redirections (@pxref{Redirections}) and removes the "
- "redirection operators and their operands from the argument list."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:391
- msgid "Executes the command (@pxref{Executing Commands})."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:395
- msgid ""
- "Optionally waits for the command to complete and collects its exit status "
- "(@pxref{Exit Status})."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:400
- #, no-wrap
- msgid "quoting"
- msgstr ""
- #. type: subsubsection
- #: ./bashref.texi:410 ./bashref.texi:430 ./bashref.texi:431
- #, no-wrap
- msgid "Escape Character"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:410
- msgid "How to remove the special meaning from a single character."
- msgstr ""
- #. type: subsubsection
- #: ./bashref.texi:410 ./bashref.texi:439 ./bashref.texi:440
- #, no-wrap
- msgid "Single Quotes"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:410
- msgid "How to inhibit all interpretation of a sequence of characters."
- msgstr ""
- #. type: subsubsection
- #: ./bashref.texi:410 ./bashref.texi:446 ./bashref.texi:447
- #, no-wrap
- msgid "Double Quotes"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:410
- msgid "How to suppress most of the interpretation of a sequence of characters."
- msgstr ""
- #. type: subsubsection
- #: ./bashref.texi:410 ./bashref.texi:474 ./bashref.texi:475
- #, no-wrap
- msgid "ANSI-C Quoting"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:410
- msgid "How to expand ANSI-C sequences in quoted strings."
- msgstr ""
- #. type: node
- #: ./bashref.texi:410 ./bashref.texi:529
- #, no-wrap
- msgid "Locale Translation"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:410
- msgid "How to translate strings into different languages."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:417
- msgid ""
- "Quoting is used to remove the special meaning of certain characters or words "
- "to the shell. Quoting can be used to disable special treatment for special "
- "characters, to prevent reserved words from being recognized as such, and to "
- "prevent parameter expansion."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:426
- msgid ""
- "Each of the shell metacharacters (@pxref{Definitions}) has special meaning "
- "to the shell and must be quoted if it is to represent itself. When the "
- "command history expansion facilities are being used (@pxref{History "
- "Interaction}), the @var{history expansion} character, usually @samp{!}, must "
- "be quoted to prevent history expansion. @xref{Bash History Facilities}, for "
- "more details concerning history expansion."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:429
- msgid ""
- "There are three quoting mechanisms: the @var{escape character}, single "
- "quotes, and double quotes."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:438
- msgid ""
- "A non-quoted backslash @samp{\\} is the Bash escape character. It preserves "
- "the literal value of the next character that follows, with the exception of "
- "@code{newline}. If a @code{\\newline} pair appears, and the backslash "
- "itself is not quoted, the @code{\\newline} is treated as a line continuation "
- "(that is, it is removed from the input stream and effectively ignored)."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:445
- msgid ""
- "Enclosing characters in single quotes (@samp{'}) preserves the literal value "
- "of each character within the quotes. A single quote may not occur between "
- "single quotes, even when preceded by a backslash."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:470
- msgid ""
- "Enclosing characters in double quotes (@samp{\"}) preserves the literal "
- "value of all characters within the quotes, with the exception of @samp{$}, "
- "@samp{`}, @samp{\\}, and, when history expansion is enabled, @samp{!}. When "
- "the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}), the @samp{!} has "
- "no special meaning within double quotes, even when history expansion is "
- "enabled. The characters @samp{$} and @samp{`} retain their special meaning "
- "within double quotes (@pxref{Shell Expansions}). The backslash retains its "
- "special meaning only when followed by one of the following characters: "
- "@samp{$}, @samp{`}, @samp{\"}, @samp{\\}, or @code{newline}. Within double "
- "quotes, backslashes that are followed by one of these characters are "
- "removed. Backslashes preceding characters without a special meaning are "
- "left unmodified. A double quote may be quoted within double quotes by "
- "preceding it with a backslash. If enabled, history expansion will be "
- "performed unless an @samp{!} appearing in double quotes is escaped using a "
- "backslash. The backslash preceding the @samp{!} is not removed."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:473
- msgid ""
- "The special parameters @samp{*} and @samp{@@} have special meaning when in "
- "double quotes (@pxref{Shell Parameter Expansion})."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:476
- #, no-wrap
- msgid "quoting, ANSI"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:482
- msgid ""
- "Words of the form @code{$'@var{string}'} are treated specially. The word "
- "expands to @var{string}, with backslash-escaped characters replaced as "
- "specified by the ANSI C standard. Backslash escape sequences, if present, "
- "are decoded as follows:"
- msgstr ""
- #. type: item
- #: ./bashref.texi:484 ./bashref.texi:4323 ./bashref.texi:7536
- #, no-wrap
- msgid "\\a"
- msgstr ""
- #. type: table
- #: ./bashref.texi:486 ./bashref.texi:4325
- msgid "alert (bell)"
- msgstr ""
- #. type: item
- #: ./bashref.texi:486 ./bashref.texi:4325
- #, no-wrap
- msgid "\\b"
- msgstr ""
- #. type: table
- #: ./bashref.texi:488 ./bashref.texi:4327
- msgid "backspace"
- msgstr ""
- #. type: item
- #: ./bashref.texi:488 ./bashref.texi:4329 ./bashref.texi:7544
- #, no-wrap
- msgid "\\e"
- msgstr ""
- #. type: itemx
- #: ./bashref.texi:489 ./bashref.texi:4330
- #, no-wrap
- msgid "\\E"
- msgstr ""
- #. type: table
- #: ./bashref.texi:491
- msgid "an escape character (not ANSI C)"
- msgstr ""
- #. type: item
- #: ./bashref.texi:491 ./bashref.texi:4332
- #, no-wrap
- msgid "\\f"
- msgstr ""
- #. type: table
- #: ./bashref.texi:493 ./bashref.texi:4334
- msgid "form feed"
- msgstr ""
- #. type: item
- #: ./bashref.texi:493 ./bashref.texi:4334 ./bashref.texi:7554
- #, no-wrap
- msgid "\\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:495
- msgid "newline"
- msgstr ""
- #. type: item
- #: ./bashref.texi:495 ./bashref.texi:4336 ./bashref.texi:7556
- #, no-wrap
- msgid "\\r"
- msgstr ""
- #. type: table
- #: ./bashref.texi:497 ./bashref.texi:4338
- msgid "carriage return"
- msgstr ""
- #. type: item
- #: ./bashref.texi:497 ./bashref.texi:4338 ./bashref.texi:7561
- #, no-wrap
- msgid "\\t"
- msgstr ""
- #. type: table
- #: ./bashref.texi:499 ./bashref.texi:4340
- msgid "horizontal tab"
- msgstr ""
- #. type: item
- #: ./bashref.texi:499 ./bashref.texi:4340 ./bashref.texi:7571
- #, no-wrap
- msgid "\\v"
- msgstr ""
- #. type: table
- #: ./bashref.texi:501 ./bashref.texi:4342
- msgid "vertical tab"
- msgstr ""
- #. type: item
- #: ./bashref.texi:501 ./bashref.texi:4342 ./bashref.texi:7588
- #, no-wrap
- msgid "\\\\"
- msgstr ""
- #. type: table
- #: ./bashref.texi:503 ./bashref.texi:4344
- msgid "backslash"
- msgstr ""
- #. type: item
- #: ./bashref.texi:503
- #, no-wrap
- msgid "\\'"
- msgstr ""
- #. type: table
- #: ./bashref.texi:505
- msgid "single quote"
- msgstr ""
- #. type: item
- #: ./bashref.texi:505
- #, no-wrap
- msgid "\\\""
- msgstr ""
- #. type: table
- #: ./bashref.texi:507
- msgid "double quote"
- msgstr ""
- #. type: item
- #: ./bashref.texi:507
- #, no-wrap
- msgid "\\?"
- msgstr ""
- #. type: table
- #: ./bashref.texi:509
- msgid "question mark"
- msgstr ""
- #. type: item
- #: ./bashref.texi:509 ./bashref.texi:7586
- #, no-wrap
- msgid "\\@var{nnn}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:512
- msgid ""
- "the eight-bit character whose value is the octal value @var{nnn} (one to "
- "three octal digits)"
- msgstr ""
- #. type: item
- #: ./bashref.texi:512 ./bashref.texi:4347
- #, no-wrap
- msgid "\\x@var{HH}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:515 ./bashref.texi:4350
- msgid ""
- "the eight-bit character whose value is the hexadecimal value @var{HH} (one "
- "or two hex digits)"
- msgstr ""
- #. type: item
- #: ./bashref.texi:515 ./bashref.texi:4350
- #, no-wrap
- msgid "\\u@var{HHHH}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:518 ./bashref.texi:4353
- msgid ""
- "the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value "
- "@var{HHHH} (one to four hex digits)"
- msgstr ""
- #. type: item
- #: ./bashref.texi:518 ./bashref.texi:4353
- #, no-wrap
- msgid "\\U@var{HHHHHHHH}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:521 ./bashref.texi:4356
- msgid ""
- "the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value "
- "@var{HHHHHHHH} (one to eight hex digits)"
- msgstr ""
- #. type: item
- #: ./bashref.texi:521
- #, no-wrap
- msgid "\\c@var{x}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:523
- msgid "a control-@var{x} character"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:528
- msgid ""
- "The expanded result is single-quoted, as if the dollar sign had not been "
- "present."
- msgstr ""
- #. type: subsubsection
- #: ./bashref.texi:530
- #, no-wrap
- msgid "Locale-Specific Translation"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:531
- #, no-wrap
- msgid "localization"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:532
- #, no-wrap
- msgid "internationalization"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:533
- #, no-wrap
- msgid "native languages"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:534
- #, no-wrap
- msgid "translation, native languages"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:547
- msgid ""
- "A double-quoted string preceded by a dollar sign (@samp{$}) will cause the "
- "string to be translated according to the current locale. The @var{gettext} "
- "infrastructure performs the message catalog lookup and translation, using "
- "the @code{LC_MESSAGES} and @code{TEXTDOMAIN} shell variables, as explained "
- "below. See the gettext documentation for additional details. If the current "
- "locale is @code{C} or @code{POSIX}, or if there are no translations "
- "available, the dollar sign is ignored. If the string is translated and "
- "replaced, the replacement is double-quoted."
- msgstr ""
- #. type: item
- #: ./bashref.texi:548 ./bashref.texi:6218
- #, no-wrap
- msgid "LC_MESSAGES"
- msgstr ""
- #. type: vindex
- #: ./bashref.texi:549
- #, no-wrap
- msgid "TEXTDOMAIN"
- msgstr ""
- #. type: vindex
- #: ./bashref.texi:550
- #, no-wrap
- msgid "TEXTDOMAINDIR"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:559
- msgid ""
- "Some systems use the message catalog selected by the @env{LC_MESSAGES} shell "
- "variable. Others create the name of the message catalog from the value of "
- "the @env{TEXTDOMAIN} shell variable, possibly adding a suffix of "
- "@samp{.mo}. If you use the @env{TEXTDOMAIN} variable, you may need to set "
- "the @env{TEXTDOMAINDIR} variable to the location of the message catalog "
- "files. Still others use both variables in this fashion: "
- "@env{TEXTDOMAINDIR}/@env{LC_MESSAGES}/LC_MESSAGES/@env{TEXTDOMAIN}.mo."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:562
- #, no-wrap
- msgid "comments, shell"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:574
- msgid ""
- "In a non-interactive shell, or an interactive shell in which the "
- "@code{interactive_comments} option to the @code{shopt} builtin is enabled "
- "(@pxref{The Shopt Builtin}), a word beginning with @samp{#} causes that word "
- "and all remaining characters on that line to be ignored. An interactive "
- "shell without the @code{interactive_comments} option enabled does not allow "
- "comments. The @code{interactive_comments} option is on by default in "
- "interactive shells. @xref{Interactive Shells}, for a description of what "
- "makes a shell interactive."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:577
- #, no-wrap
- msgid "commands, shell"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:581
- msgid ""
- "A simple shell command such as @code{echo a b c} consists of the command "
- "itself followed by arguments, separated by spaces."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:586
- msgid ""
- "More complex shell commands are composed of simple commands arranged "
- "together in a variety of ways: in a pipeline in which the output of one "
- "command becomes the input of a second, in a loop or conditional construct, "
- "or in some other grouping."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:596 ./bashref.texi:598 ./bashref.texi:599
- #, no-wrap
- msgid "Reserved Words"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:596
- msgid "Words that have special meaning to the shell."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:596 ./bashref.texi:624 ./bashref.texi:625
- #, no-wrap
- msgid "Simple Commands"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:596
- msgid "The most common type of command."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:596 ./bashref.texi:639 ./bashref.texi:640
- #, no-wrap
- msgid "Pipelines"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:596
- msgid "Connecting the input and output of several commands."
- msgstr ""
- #. type: node
- #: ./bashref.texi:596 ./bashref.texi:713
- #, no-wrap
- msgid "Lists"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:596
- msgid "How to execute commands sequentially."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:596 ./bashref.texi:770 ./bashref.texi:771
- #, no-wrap
- msgid "Compound Commands"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:596
- msgid "Shell commands for control flow."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:596 ./bashref.texi:1221 ./bashref.texi:1222
- #, no-wrap
- msgid "Coprocesses"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:596
- msgid "Two-way communication between commands."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:596 ./bashref.texi:1268 ./bashref.texi:1269
- #, no-wrap
- msgid "GNU Parallel"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:596
- msgid "Running commands in parallel."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:600
- #, no-wrap
- msgid "reserved words"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:604
- msgid ""
- "Reserved words are words that have special meaning to the shell. They are "
- "used to begin and end the shell's compound commands."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:607
- msgid ""
- "The following words are recognized as reserved when unquoted and the first "
- "word of a command (see below for exceptions):"
- msgstr ""
- #. type: item
- #: ./bashref.texi:609
- #, no-wrap
- msgid "@code{if} @tab @code{then} @tab @code{elif}"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:611 ./bashref.texi:879
- #, no-wrap
- msgid "else"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:611 ./bashref.texi:881
- #, no-wrap
- msgid "fi"
- msgstr ""
- #. type: multitable
- #: ./bashref.texi:611
- msgid "@code{time}"
- msgstr ""
- #. type: item
- #: ./bashref.texi:611
- #, no-wrap
- msgid "@code{for} @tab @code{in} @tab @code{until}"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:613 ./bashref.texi:818 ./bashref.texi:819
- #, no-wrap
- msgid "while"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:613 ./bashref.texi:805
- #, no-wrap
- msgid "do"
- msgstr ""
- #. type: multitable
- #: ./bashref.texi:613
- msgid "@code{done}"
- msgstr ""
- #. type: item
- #: ./bashref.texi:613
- #, no-wrap
- msgid "@code{case} @tab @code{esac} @tab @code{coproc}"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:615 ./bashref.texi:974 ./bashref.texi:975
- #, no-wrap
- msgid "select"
- msgstr ""
- #. type: multitable
- #: ./bashref.texi:615
- msgid "@code{function}"
- msgstr ""
- #. type: item
- #: ./bashref.texi:615
- #, no-wrap
- msgid "@code{@{} @tab @code{@}} @tab @code{[[} @tab @code{]]} @tab @code{!}"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:623
- msgid ""
- "@code{in} is recognized as a reserved word if it is the third word of a "
- "@code{case} or @code{select} command. @code{in} and @code{do} are "
- "recognized as reserved words if they are the third word in a @code{for} "
- "command."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:626
- #, no-wrap
- msgid "commands, simple"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:633
- msgid ""
- "A simple command is the kind of command encountered most often. It's just a "
- "sequence of words separated by @code{blank}s, terminated by one of the "
- "shell's control operators (@pxref{Definitions}). The first word generally "
- "specifies a command to be executed, with the rest of the words being that "
- "command's arguments."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:638
- msgid ""
- "The return status (@pxref{Exit Status}) of a simple command is its exit "
- "status as provided by the @sc{posix} 1003.1 @code{waitpid} function, or "
- "128+@var{n} if the command was terminated by signal @var{n}."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:641
- #, no-wrap
- msgid "pipeline"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:642
- #, no-wrap
- msgid "commands, pipelines"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:646
- msgid ""
- "A @code{pipeline} is a sequence of one or more commands separated by one of "
- "the control operators @samp{|} or @samp{|&}."
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:647
- #, no-wrap
- msgid "time"
- msgstr ""
- #. type: item
- #: ./bashref.texi:648 ./bashref.texi:1768
- #, no-wrap
- msgid "!"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:649
- #, no-wrap
- msgid "command timing"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:651
- msgid "The format for a pipeline is"
- msgstr ""
- #. type: example
- #: ./bashref.texi:653
- #, no-wrap
- msgid "[time [-p]] [!] @var{command1} [ | or |& @var{command2} ] @dots{}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:661
- msgid ""
- "The output of each command in the pipeline is connected via a pipe to the "
- "input of the next command. That is, each command reads the previous "
- "command's output. This connection is performed before any redirections "
- "specified by the command."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:668
- msgid ""
- "If @samp{|&} is used, @var{command1}'s standard error, in addition to its "
- "standard output, is connected to @var{command2}'s standard input through the "
- "pipe; it is shorthand for @code{2>&1 |}. This implicit redirection of the "
- "standard error to the standard output is performed after any redirections "
- "specified by the command."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:684
- msgid ""
- "The reserved word @code{time} causes timing statistics to be printed for the "
- "pipeline once it finishes. The statistics currently consist of elapsed "
- "(wall-clock) time and user and system time consumed by the command's "
- "execution. The @option{-p} option changes the output format to that "
- "specified by @sc{posix}. When the shell is in @sc{posix} mode (@pxref{Bash "
- "POSIX Mode}), it does not recognize @code{time} as a reserved word if the "
- "next token begins with a @samp{-}. The @env{TIMEFORMAT} variable may be set "
- "to a format string that specifies how the timing information should be "
- "displayed. @xref{Bash Variables}, for a description of the available "
- "formats. The use of @code{time} as a reserved word permits the timing of "
- "shell builtins, shell functions, and pipelines. An external @code{time} "
- "command cannot time these easily."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:690
- msgid ""
- "When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}), @code{time} "
- "may be followed by a newline. In this case, the shell displays the total "
- "user and system time consumed by the shell and its children. The "
- "@env{TIMEFORMAT} variable may be used to specify the format of the time "
- "information."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:693
- msgid ""
- "If the pipeline is not executed asynchronously (@pxref{Lists}), the shell "
- "waits for all commands in the pipeline to complete."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:699
- msgid ""
- "Each command in a pipeline is executed in its own subshell, which is a "
- "separate process (@pxref{Command Execution Environment}). If the "
- "@code{lastpipe} option is enabled using the @code{shopt} builtin (@pxref{The "
- "Shopt Builtin}), the last element of a pipeline may be run by the shell "
- "process."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:712
- msgid ""
- "The exit status of a pipeline is the exit status of the last command in the "
- "pipeline, unless the @code{pipefail} option is enabled (@pxref{The Set "
- "Builtin}). If @code{pipefail} is enabled, the pipeline's return status is "
- "the value of the last (rightmost) command to exit with a non-zero status, or "
- "zero if all commands exit successfully. If the reserved word @samp{!} "
- "precedes the pipeline, the exit status is the logical negation of the exit "
- "status as described above. The shell waits for all commands in the pipeline "
- "to terminate before returning a value."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:714
- #, no-wrap
- msgid "Lists of Commands"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:715
- #, no-wrap
- msgid "commands, lists"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:721
- msgid ""
- "A @code{list} is a sequence of one or more pipelines separated by one of the "
- "operators @samp{;}, @samp{&}, @samp{&&}, or @samp{||}, and optionally "
- "terminated by one of @samp{;}, @samp{&}, or a @code{newline}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:725
- msgid ""
- "Of these list operators, @samp{&&} and @samp{||} have equal precedence, "
- "followed by @samp{;} and @samp{&}, which have equal precedence."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:728
- msgid ""
- "A sequence of one or more newlines may appear in a @code{list} to delimit "
- "commands, equivalent to a semicolon."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:738
- msgid ""
- "If a command is terminated by the control operator @samp{&}, the shell "
- "executes the command asynchronously in a subshell. This is known as "
- "executing the command in the @var{background}, and these are referred to as "
- "@var{asynchronous} commands. The shell does not wait for the command to "
- "finish, and the return status is 0 (true). When job control is not active "
- "(@pxref{Job Control}), the standard input for asynchronous commands, in the "
- "absence of any explicit redirections, is redirected from @code{/dev/null}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:742
- msgid ""
- "Commands separated by a @samp{;} are executed sequentially; the shell waits "
- "for each command to terminate in turn. The return status is the exit status "
- "of the last command executed."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:747
- msgid ""
- "@sc{and} and @sc{or} lists are sequences of one or more pipelines separated "
- "by the control operators @samp{&&} and @samp{||}, respectively. @sc{and} "
- "and @sc{or} lists are executed with left associativity."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:749
- msgid "An @sc{and} list has the form"
- msgstr ""
- #. type: example
- #: ./bashref.texi:751
- #, no-wrap
- msgid "@var{command1} && @var{command2}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:756
- msgid ""
- "@var{command2} is executed if, and only if, @var{command1} returns an exit "
- "status of zero (success)."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:758
- msgid "An @sc{or} list has the form"
- msgstr ""
- #. type: example
- #: ./bashref.texi:760
- #, no-wrap
- msgid "@var{command1} || @var{command2}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:765
- msgid ""
- "@var{command2} is executed if, and only if, @var{command1} returns a "
- "non-zero exit status."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:769
- msgid ""
- "The return status of @sc{and} and @sc{or} lists is the exit status of the "
- "last command executed in the list."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:772
- #, no-wrap
- msgid "commands, compound"
- msgstr ""
- #. type: subsubsection
- #: ./bashref.texi:778 ./bashref.texi:793 ./bashref.texi:794
- #, no-wrap
- msgid "Looping Constructs"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:778
- msgid "Shell commands for iterative action."
- msgstr ""
- #. type: subsubsection
- #: ./bashref.texi:778 ./bashref.texi:871 ./bashref.texi:872
- #, no-wrap
- msgid "Conditional Constructs"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:778
- msgid "Shell commands for conditional execution."
- msgstr ""
- #. type: node
- #: ./bashref.texi:778 ./bashref.texi:1177
- #, no-wrap
- msgid "Command Grouping"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:778
- msgid "Ways to group commands."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:785
- msgid ""
- "Compound commands are the shell programming language constructs. Each "
- "construct begins with a reserved word or control operator and is terminated "
- "by a corresponding reserved word or operator. Any redirections "
- "(@pxref{Redirections}) associated with a compound command apply to all "
- "commands within that compound command unless explicitly overridden."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:789
- msgid ""
- "In most cases a list of commands in a compound command's description may be "
- "separated from the rest of the command by one or more newlines, and may be "
- "followed by a newline in place of a semicolon."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:792
- msgid ""
- "Bash provides looping constructs, conditional commands, and mechanisms to "
- "group commands and execute them as a unit."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:795
- #, no-wrap
- msgid "commands, looping"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:798
- msgid "Bash supports the following looping constructs."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:801
- msgid ""
- "Note that wherever a @samp{;} appears in the description of a command's "
- "syntax, it may be replaced with one or more newlines."
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:803 ./bashref.texi:804
- #, no-wrap
- msgid "until"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:806
- #, no-wrap
- msgid "done"
- msgstr ""
- #. type: table
- #: ./bashref.texi:808
- msgid "The syntax of the @code{until} command is:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:811
- #, no-wrap
- msgid "until @var{test-commands}; do @var{consequent-commands}; done\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:817
- msgid ""
- "Execute @var{consequent-commands} as long as @var{test-commands} has an exit "
- "status which is not zero. The return status is the exit status of the last "
- "command executed in @var{consequent-commands}, or zero if none was executed."
- msgstr ""
- #. type: table
- #: ./bashref.texi:821
- msgid "The syntax of the @code{while} command is:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:824
- #, no-wrap
- msgid "while @var{test-commands}; do @var{consequent-commands}; done\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:830
- msgid ""
- "Execute @var{consequent-commands} as long as @var{test-commands} has an exit "
- "status of zero. The return status is the exit status of the last command "
- "executed in @var{consequent-commands}, or zero if none was executed."
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:831 ./bashref.texi:832
- #, no-wrap
- msgid "for"
- msgstr ""
- #. type: table
- #: ./bashref.texi:834
- msgid "The syntax of the @code{for} command is:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:837
- #, no-wrap
- msgid "for @var{name} [ [in [@var{words} @dots{}] ] ; ] do @var{commands}; done\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:846
- msgid ""
- "Expand @var{words} (@pxref{Shell Expansions}), and execute @var{commands} "
- "once for each member in the resultant list, with @var{name} bound to the "
- "current member. If @samp{in @var{words}} is not present, the @code{for} "
- "command executes the @var{commands} once for each positional parameter that "
- "is set, as if @samp{in \"$@@\"} had been specified (@pxref{Special "
- "Parameters})."
- msgstr ""
- #. type: table
- #: ./bashref.texi:850
- msgid ""
- "The return status is the exit status of the last command that executes. If "
- "there are no items in the expansion of @var{words}, no commands are "
- "executed, and the return status is zero."
- msgstr ""
- #. type: table
- #: ./bashref.texi:852
- msgid "An alternate form of the @code{for} command is also supported:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:855
- #, no-wrap
- msgid ""
- "for (( @var{expr1} ; @var{expr2} ; @var{expr3} )) ; do @var{commands} ; "
- "done\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:866
- msgid ""
- "First, the arithmetic expression @var{expr1} is evaluated according to the "
- "rules described below (@pxref{Shell Arithmetic}). The arithmetic expression "
- "@var{expr2} is then evaluated repeatedly until it evaluates to zero. Each "
- "time @var{expr2} evaluates to a non-zero value, @var{commands} are executed "
- "and the arithmetic expression @var{expr3} is evaluated. If any expression "
- "is omitted, it behaves as if it evaluates to 1. The return value is the "
- "exit status of the last command in @var{commands} that is executed, or false "
- "if any of the expressions is invalid."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:870
- msgid ""
- "The @code{break} and @code{continue} builtins (@pxref{Bourne Shell "
- "Builtins}) may be used to control loop execution."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:873
- #, no-wrap
- msgid "commands, conditional"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:876 ./bashref.texi:877
- #, no-wrap
- msgid "if"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:878
- #, no-wrap
- msgid "then"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:880
- #, no-wrap
- msgid "elif"
- msgstr ""
- #. type: table
- #: ./bashref.texi:883
- msgid "The syntax of the @code{if} command is:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:891
- #, no-wrap
- msgid ""
- "if @var{test-commands}; then\n"
- " @var{consequent-commands};\n"
- "[elif @var{more-test-commands}; then\n"
- " @var{more-consequents};]\n"
- "[else @var{alternate-consequents};]\n"
- "fi\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:904
- msgid ""
- "The @var{test-commands} list is executed, and if its return status is zero, "
- "the @var{consequent-commands} list is executed. If @var{test-commands} "
- "returns a non-zero status, each @code{elif} list is executed in turn, and if "
- "its exit status is zero, the corresponding @var{more-consequents} is "
- "executed and the command completes. If @samp{else "
- "@var{alternate-consequents}} is present, and the final command in the final "
- "@code{if} or @code{elif} clause has a non-zero exit status, then "
- "@var{alternate-consequents} is executed. The return status is the exit "
- "status of the last command executed, or zero if no condition tested true."
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:905 ./bashref.texi:906
- #, no-wrap
- msgid "case"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:907
- #, no-wrap
- msgid "in"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:908
- #, no-wrap
- msgid "esac"
- msgstr ""
- #. type: table
- #: ./bashref.texi:910
- msgid "The syntax of the @code{case} command is:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:915
- #, no-wrap
- msgid ""
- "case @var{word} in\n"
- " [ [(] @var{pattern} [| @var{pattern}]@dots{}) @var{command-list} "
- ";;]@dots{}\n"
- "esac\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:929
- msgid ""
- "@code{case} will selectively execute the @var{command-list} corresponding to "
- "the first @var{pattern} that matches @var{word}. The match is performed "
- "according to the rules described below in @ref{Pattern Matching}. If the "
- "@code{nocasematch} shell option (see the description of @code{shopt} in "
- "@ref{The Shopt Builtin}) is enabled, the match is performed without regard "
- "to the case of alphabetic characters. The @samp{|} is used to separate "
- "multiple patterns, and the @samp{)} operator terminates a pattern list. A "
- "list of patterns and an associated command-list is known as a @var{clause}."
- msgstr ""
- #. type: table
- #: ./bashref.texi:937
- msgid ""
- "Each clause must be terminated with @samp{;;}, @samp{;&}, or @samp{;;&}. "
- "The @var{word} undergoes tilde expansion, parameter expansion, command "
- "substitution, arithmetic expansion, and quote removal (@pxref{Shell "
- "Parameter Expansion}) before matching is attempted. Each @var{pattern} "
- "undergoes tilde expansion, parameter expansion, command substitution, and "
- "arithmetic expansion."
- msgstr ""
- #. type: table
- #: ./bashref.texi:944
- msgid ""
- "There may be an arbitrary number of @code{case} clauses, each terminated by "
- "a @samp{;;}, @samp{;&}, or @samp{;;&}. The first pattern that matches "
- "determines the command-list that is executed. It's a common idiom to use "
- "@samp{*} as the final pattern to define the default case, since that pattern "
- "will always match."
- msgstr ""
- #. type: table
- #: ./bashref.texi:947
- msgid ""
- "Here is an example using @code{case} in a script that could be used to "
- "describe one interesting feature of an animal:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:958
- #, no-wrap
- msgid ""
- "echo -n \"Enter the name of an animal: \"\n"
- "read ANIMAL\n"
- "echo -n \"The $ANIMAL has \"\n"
- "case $ANIMAL in\n"
- " horse | dog | cat) echo -n \"four\";;\n"
- " man | kangaroo ) echo -n \"two\";;\n"
- " *) echo -n \"an unknown number of\";;\n"
- "esac\n"
- "echo \" legs.\"\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:970
- msgid ""
- "If the @samp{;;} operator is used, no subsequent matches are attempted after "
- "the first pattern match. Using @samp{;&} in place of @samp{;;} causes "
- "execution to continue with the @var{command-list} associated with the next "
- "clause, if any. Using @samp{;;&} in place of @samp{;;} causes the shell to "
- "test the patterns in the next clause, if any, and execute any associated "
- "@var{command-list} on a successful match, continuing the case statement "
- "execution as if the pattern list had not matched."
- msgstr ""
- #. type: table
- #: ./bashref.texi:973
- msgid ""
- "The return status is zero if no @var{pattern} is matched. Otherwise, the "
- "return status is the exit status of the @var{command-list} executed."
- msgstr ""
- #. type: table
- #: ./bashref.texi:979
- msgid ""
- "The @code{select} construct allows the easy generation of menus. It has "
- "almost the same syntax as the @code{for} command:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:982
- #, no-wrap
- msgid "select @var{name} [in @var{words} @dots{}]; do @var{commands}; done\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:997
- msgid ""
- "The list of words following @code{in} is expanded, generating a list of "
- "items. The set of expanded words is printed on the standard error output "
- "stream, each preceded by a number. If the @samp{in @var{words}} is omitted, "
- "the positional parameters are printed, as if @samp{in \"$@@\"} had been "
- "specified. The @env{PS3} prompt is then displayed and a line is read from "
- "the standard input. If the line consists of a number corresponding to one "
- "of the displayed words, then the value of @var{name} is set to that word. "
- "If the line is empty, the words and prompt are displayed again. If "
- "@code{EOF} is read, the @code{select} command completes. Any other value "
- "read causes @var{name} to be set to null. The line read is saved in the "
- "variable @env{REPLY}."
- msgstr ""
- #. type: table
- #: ./bashref.texi:1001
- msgid ""
- "The @var{commands} are executed after each selection until a @code{break} "
- "command is executed, at which point the @code{select} command completes."
- msgstr ""
- #. type: table
- #: ./bashref.texi:1005
- msgid ""
- "Here is an example that allows the user to pick a filename from the current "
- "directory, and displays the name and index of the file selected."
- msgstr ""
- #. type: example
- #: ./bashref.texi:1012
- #, no-wrap
- msgid ""
- "select fname in *;\n"
- "do\n"
- "\techo you picked $fname \\($REPLY\\)\n"
- "\tbreak;\n"
- "done\n"
- msgstr ""
- #. type: item
- #: ./bashref.texi:1014
- #, no-wrap
- msgid "((@dots{}))"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1017
- #, no-wrap
- msgid "(( @var{expression} ))\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1023
- msgid ""
- "The arithmetic @var{expression} is evaluated according to the rules "
- "described below (@pxref{Shell Arithmetic}). If the value of the expression "
- "is non-zero, the return status is 0; otherwise the return status is 1. This "
- "is exactly equivalent to"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1025
- #, no-wrap
- msgid "let \"@var{expression}\"\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1028
- msgid "@xref{Bash Builtins}, for a full description of the @code{let} builtin."
- msgstr ""
- #. type: item
- #: ./bashref.texi:1029
- #, no-wrap
- msgid "[[@dots{}]]"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:1030
- #, no-wrap
- msgid "[["
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:1031
- #, no-wrap
- msgid "]]"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1034
- #, no-wrap
- msgid "[[ @var{expression} ]]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1046
- msgid ""
- "Return a status of 0 or 1 depending on the evaluation of the conditional "
- "expression @var{expression}. Expressions are composed of the primaries "
- "described below in @ref{Bash Conditional Expressions}. Word splitting and "
- "filename expansion are not performed on the words between the @code{[[} and "
- "@code{]]}; tilde expansion, parameter and variable expansion, arithmetic "
- "expansion, command substitution, process substitution, and quote removal are "
- "performed. Conditional operators such as @samp{-f} must be unquoted to be "
- "recognized as primaries."
- msgstr ""
- #. type: table
- #: ./bashref.texi:1049
- msgid ""
- "When used with @code{[[}, the @samp{<} and @samp{>} operators sort "
- "lexicographically using the current locale."
- msgstr ""
- #. type: table
- #: ./bashref.texi:1063
- msgid ""
- "When the @samp{==} and @samp{!=} operators are used, the string to the right "
- "of the operator is considered a pattern and matched according to the rules "
- "described below in @ref{Pattern Matching}, as if the @code{extglob} shell "
- "option were enabled. The @samp{=} operator is identical to @samp{==}. If "
- "the @code{nocasematch} shell option (see the description of @code{shopt} in "
- "@ref{The Shopt Builtin}) is enabled, the match is performed without regard "
- "to the case of alphabetic characters. The return value is 0 if the string "
- "matches (@samp{==}) or does not match (@samp{!=}) the pattern, and 1 "
- "otherwise. Any part of the pattern may be quoted to force the quoted "
- "portion to be matched as a string."
- msgstr ""
- #. type: table
- #: ./bashref.texi:1084
- msgid ""
- "An additional binary operator, @samp{=~}, is available, with the same "
- "precedence as @samp{==} and @samp{!=}. When it is used, the string to the "
- "right of the operator is considered a @sc{posix} extended regular expression "
- "and matched accordingly (using the @sc{posix} @code{regcomp} and "
- "@code{regexec} interfaces usually described in @i{regex}(3)). The return "
- "value is 0 if the string matches the pattern, and 1 otherwise. If the "
- "regular expression is syntactically incorrect, the conditional expression's "
- "return value is 2. If the @code{nocasematch} shell option (see the "
- "description of @code{shopt} in @ref{The Shopt Builtin}) is enabled, the "
- "match is performed without regard to the case of alphabetic characters. Any "
- "part of the pattern may be quoted to force the quoted portion to be matched "
- "as a string. Bracket expressions in regular expressions must be treated "
- "carefully, since normal quoting characters lose their meanings between "
- "brackets. If the pattern is stored in a shell variable, quoting the "
- "variable expansion forces the entire pattern to be matched as a string."
- msgstr ""
- #. type: table
- #: ./bashref.texi:1096
- msgid ""
- "The pattern will match if it matches any part of the string. Anchor the "
- "pattern using the @samp{^} and @samp{$} regular expression operators to "
- "force it to match the entire string. The array variable @code{BASH_REMATCH} "
- "records which parts of the string matched the pattern. The element of "
- "@code{BASH_REMATCH} with index 0 contains the portion of the string matching "
- "the entire regular expression. Substrings matched by parenthesized "
- "subexpressions within the regular expression are saved in the remaining "
- "@code{BASH_REMATCH} indices. The element of @code{BASH_REMATCH} with index "
- "@var{n} is the portion of the string matching the @var{n}th parenthesized "
- "subexpression."
- msgstr ""
- #. type: table
- #: ./bashref.texi:1103
- msgid ""
- "For example, the following will match a line (stored in the shell variable "
- "@var{line}) if there is a sequence of characters anywhere in the value "
- "consisting of any number, including zero, of characters in the @code{space} "
- "character class, zero or one instances of @samp{a}, then a @samp{b}:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1105
- #, no-wrap
- msgid "[[ $line =~ [[:space:]]*(a)?b ]]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1110
- msgid ""
- "That means values like @samp{aab} and @samp{ aaaaaab} will match, as will a "
- "line containing a @samp{b} anywhere in its value."
- msgstr ""
- #. type: table
- #: ./bashref.texi:1119
- msgid ""
- "Storing the regular expression in a shell variable is often a useful way to "
- "avoid problems with quoting characters that are special to the shell. It is "
- "sometimes difficult to specify a regular expression literally without using "
- "quotes, or to keep track of the quoting used by regular expressions while "
- "paying attention to the shell's quote removal. Using a shell variable to "
- "store the pattern decreases these problems. For example, the following is "
- "equivalent to the above:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1122
- #, no-wrap
- msgid ""
- "pattern='[[:space:]]*(a)?b'\n"
- "[[ $line =~ $pattern ]]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1134
- msgid ""
- "If you want to match a character that's special to the regular expression "
- "grammar, it has to be quoted to remove its special meaning. This means that "
- "in the pattern @samp{xxx.txt}, the @samp{.} matches any character in the "
- "string (its usual regular expression meaning), but in the pattern "
- "@samp{\"xxx.txt\"} it can only match a literal @samp{.}. Shell programmers "
- "should take special care with backslashes, since backslashes are used both "
- "by the shell and regular expressions to remove the special meaning from the "
- "following character. The following two sets of commands are @emph{not} "
- "equivalent:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1136
- #, no-wrap
- msgid ""
- "pattern='\\.'\n"
- "\n"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1139
- #, no-wrap
- msgid ""
- "[[ . =~ $pattern ]]\n"
- "[[ . =~ \\. ]]\n"
- "\n"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1142
- #, no-wrap
- msgid ""
- "[[ . =~ \"$pattern\" ]]\n"
- "[[ . =~ '\\.' ]]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1152
- msgid ""
- "The first two matches will succeed, but the second two will not, because in "
- "the second two the backslash will be part of the pattern to be matched. In "
- "the first two examples, the backslash removes the special meaning from "
- "@samp{.}, so the literal @samp{.} matches. If the string in the first "
- "examples were anything other than @samp{.}, say @samp{a}, the pattern would "
- "not match, because the quoted @samp{.} in the pattern loses its special "
- "meaning of matching any single character."
- msgstr ""
- #. type: table
- #: ./bashref.texi:1155
- msgid ""
- "Expressions may be combined using the following operators, listed in "
- "decreasing order of precedence:"
- msgstr ""
- #. type: item
- #: ./bashref.texi:1157
- #, no-wrap
- msgid "( @var{expression} )"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1160
- msgid ""
- "Returns the value of @var{expression}. This may be used to override the "
- "normal precedence of operators."
- msgstr ""
- #. type: item
- #: ./bashref.texi:1161
- #, no-wrap
- msgid "! @var{expression}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1163
- msgid "True if @var{expression} is false."
- msgstr ""
- #. type: item
- #: ./bashref.texi:1164
- #, no-wrap
- msgid "@var{expression1} && @var{expression2}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1166
- msgid "True if both @var{expression1} and @var{expression2} are true."
- msgstr ""
- #. type: item
- #: ./bashref.texi:1167
- #, no-wrap
- msgid "@var{expression1} || @var{expression2}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1169
- msgid "True if either @var{expression1} or @var{expression2} is true."
- msgstr ""
- #. type: table
- #: ./bashref.texi:1175
- msgid ""
- "The @code{&&} and @code{||} operators do not evaluate @var{expression2} if "
- "the value of @var{expression1} is sufficient to determine the return value "
- "of the entire conditional expression."
- msgstr ""
- #. type: subsubsection
- #: ./bashref.texi:1178
- #, no-wrap
- msgid "Grouping Commands"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1179
- #, no-wrap
- msgid "commands, grouping"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1185
- msgid ""
- "Bash provides two ways to group a list of commands to be executed as a "
- "unit. When commands are grouped, redirections may be applied to the entire "
- "command list. For example, the output of all the commands in the list may "
- "be redirected to a single stream."
- msgstr ""
- #. type: item
- #: ./bashref.texi:1187
- #, no-wrap
- msgid "()"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1190
- #, no-wrap
- msgid "( @var{list} )\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1197
- msgid ""
- "Placing a list of commands between parentheses causes a subshell environment "
- "to be created (@pxref{Command Execution Environment}), and each of the "
- "commands in @var{list} to be executed in that subshell. Since the "
- "@var{list} is executed in a subshell, variable assignments do not remain in "
- "effect after the subshell completes."
- msgstr ""
- #. type: item
- #: ./bashref.texi:1198
- #, no-wrap
- msgid "@{@}"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:1199
- #, no-wrap
- msgid "@{"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:1200
- #, no-wrap
- msgid "@}"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1203
- #, no-wrap
- msgid "@{ @var{list}; @}\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1208
- msgid ""
- "Placing a list of commands between curly braces causes the list to be "
- "executed in the current shell context. No subshell is created. The "
- "semicolon (or newline) following @var{list} is required."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1217
- msgid ""
- "In addition to the creation of a subshell, there is a subtle difference "
- "between these two constructs due to historical reasons. The braces are "
- "@code{reserved words}, so they must be separated from the @var{list} by "
- "@code{blank}s or other shell metacharacters. The parentheses are "
- "@code{operators}, and are recognized as separate tokens by the shell even if "
- "they are not separated from the @var{list} by whitespace."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1220
- msgid ""
- "The exit status of both of these constructs is the exit status of "
- "@var{list}."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1223
- #, no-wrap
- msgid "coprocess"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1230
- msgid ""
- "A @code{coprocess} is a shell command preceded by the @code{coproc} reserved "
- "word. A coprocess is executed asynchronously in a subshell, as if the "
- "command had been terminated with the @samp{&} control operator, with a "
- "two-way pipe established between the executing shell and the coprocess."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1232
- msgid "The format for a coprocess is:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1234
- #, no-wrap
- msgid "coproc [@var{NAME}] @var{command} [@var{redirections}]\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1242
- msgid ""
- "This creates a coprocess named @var{NAME}. If @var{NAME} is not supplied, "
- "the default name is @var{COPROC}. @var{NAME} must not be supplied if "
- "@var{command} is a simple command (@pxref{Simple Commands}); otherwise, it "
- "is interpreted as the first word of the simple command."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1258
- msgid ""
- "When the coprocess is executed, the shell creates an array variable "
- "(@pxref{Arrays}) named @env{NAME} in the context of the executing shell. "
- "The standard output of @var{command} is connected via a pipe to a file "
- "descriptor in the executing shell, and that file descriptor is assigned to "
- "@env{NAME}[0]. The standard input of @var{command} is connected via a pipe "
- "to a file descriptor in the executing shell, and that file descriptor is "
- "assigned to @env{NAME}[1]. This pipe is established before any redirections "
- "specified by the command (@pxref{Redirections}). The file descriptors can "
- "be utilized as arguments to shell commands and redirections using standard "
- "word expansions. Other than those created to execute command and process "
- "substitutions, the file descriptors are not available in subshells."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1263
- msgid ""
- "The process ID of the shell spawned to execute the coprocess is available as "
- "the value of the variable @env{NAME}_PID. The @code{wait} builtin command "
- "may be used to wait for the coprocess to terminate."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1267
- msgid ""
- "Since the coprocess is created as an asynchronous command, the @code{coproc} "
- "command always returns success. The return status of a coprocess is the "
- "exit status of @var{command}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1273
- msgid ""
- "There are ways to run commands in parallel that are not built into Bash. "
- "GNU Parallel is a tool to do just that."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1281
- msgid ""
- "GNU Parallel, as its name suggests, can be used to build and run commands in "
- "parallel. You may run the same command with different arguments, whether "
- "they are filenames, usernames, hostnames, or lines read from files. GNU "
- "Parallel provides shorthand references to many of the most common operations "
- "(input lines, various portions of the input line, different ways to specify "
- "the input source, and so on). Parallel can replace @code{xargs} or feed "
- "commands from its input sources to several different instances of Bash."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1284
- msgid ""
- "For a complete description, refer to the GNU Parallel documentation. A few "
- "examples should provide a brief introduction to its use."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1287
- msgid ""
- "For example, it is easy to replace @code{xargs} to gzip all html files in "
- "the current directory and its subdirectories:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1289
- #, no-wrap
- msgid "find . -type f -name '*.html' -print | parallel gzip\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1293
- msgid ""
- "If you need to protect special characters such as newlines in file names, "
- "use find's @option{-print0} option and parallel's @option{-0} option."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1296
- msgid ""
- "You can use Parallel to move files from the current directory when the "
- "number of files is too large to process with one @code{mv} invocation:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1298
- #, no-wrap
- msgid "printf '%s\\n' * | parallel mv @{@} destdir\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1306
- msgid ""
- "As you can see, the @{@} is replaced with each line read from standard "
- "input. While using @code{ls} will work in most instances, it is not "
- "sufficient to deal with all filenames. @code{printf} is a shell builtin, and "
- "therefore is not subject to the kernel's limit on the number of arguments to "
- "a program, so you can use @samp{*} (but see below about the @code{dotglob} "
- "shell option). If you need to accommodate special characters in filenames, "
- "you can use"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1309
- #, no-wrap
- msgid "printf '%s\\0' * | parallel -0 mv @{@} destdir\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1313
- msgid "as alluded to above."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1317
- msgid ""
- "This will run as many @code{mv} commands as there are files in the current "
- "directory. You can emulate a parallel @code{xargs} by adding the "
- "@option{-X} option:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1319
- #, no-wrap
- msgid "printf '%s\\0' * | parallel -0 -X mv @{@} destdir\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1323
- msgid ""
- "(You may have to modify the pattern if you have the @code{dotglob} option "
- "enabled.)"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1326
- msgid ""
- "GNU Parallel can replace certain common idioms that operate on lines read "
- "from a file (in this case, filenames listed one per line):"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1331
- #, no-wrap
- msgid ""
- "\twhile IFS= read -r x; do\n"
- "\t\tdo-something1 \"$x\" \"config-$x\"\n"
- "\t\tdo-something2 < \"$x\"\n"
- "\tdone < file | process-output\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1335
- msgid "with a more compact syntax reminiscent of lambdas:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1338
- #, no-wrap
- msgid ""
- "cat list | parallel \"do-something1 @{@} config-@{@} ; do-something2 < "
- "@{@}\" |\n"
- " process-output\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1342
- msgid ""
- "Parallel provides a built-in mechanism to remove filename extensions, which "
- "lends itself to batch file transformations or renaming:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1344
- #, no-wrap
- msgid "ls *.gz | parallel -j+0 \"zcat @{@} | bzip2 >@{.@}.bz2 && rm @{@}\"\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1352
- msgid ""
- "This will recompress all files in the current directory with names ending in "
- ".gz using bzip2, running one job per CPU (-j+0) in parallel. (We use "
- "@code{ls} for brevity here; using @code{find} as above is more robust in the "
- "face of filenames containing unexpected characters.) Parallel can take "
- "arguments from the command line; the above can also be written as"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1355
- #, no-wrap
- msgid "parallel \"zcat @{@} | bzip2 >@{.@}.bz2 && rm @{@}\" ::: *.gz\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1359
- msgid ""
- "If a command generates output, you may want to preserve the input order in "
- "the output. For instance, the following command"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1365
- #, no-wrap
- msgid ""
- "@{\n"
- " echo foss.org.my ;\n"
- " echo debian.org ;\n"
- " echo freenetproject.org ;\n"
- "@} | parallel traceroute\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1369
- msgid ""
- "will display as output the traceroute invocation that finishes first. "
- "Adding the @option{-k} option"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1375
- #, no-wrap
- msgid ""
- "@{\n"
- " echo foss.org.my ;\n"
- " echo debian.org ;\n"
- " echo freenetproject.org ;\n"
- "@} | parallel -k traceroute\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1378
- msgid ""
- "will ensure that the output of @code{traceroute foss.org.my} is displayed "
- "first."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1385
- msgid ""
- "Finally, Parallel can be used to run a sequence of shell commands in "
- "parallel, similar to @samp{cat file | bash}. It is not uncommon to take a "
- "list of filenames, create a series of shell commands to operate on them, and "
- "feed that list of commands to a shell. Parallel can speed this up. "
- "Assuming that @file{file} contains a list of shell commands, one per line,"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1388
- #, no-wrap
- msgid "parallel -j 10 < file\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1393
- msgid ""
- "will evaluate the commands using the shell (since no explicit command is "
- "supplied as an argument), in blocks of ten shell jobs at a time."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1396
- #, no-wrap
- msgid "shell function"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1397
- #, no-wrap
- msgid "functions, shell"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1406
- msgid ""
- "Shell functions are a way to group commands for later execution using a "
- "single name for the group. They are executed just like a \"regular\" "
- "command. When the name of a shell function is used as a simple command "
- "name, the list of commands associated with that function name is executed. "
- "Shell functions are executed in the current shell context; no new process is "
- "created to interpret them."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1408
- msgid "Functions are declared using this syntax:"
- msgstr ""
- #. type: rwindex
- #: ./bashref.texi:1408
- #, no-wrap
- msgid "function"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1411
- #, no-wrap
- msgid "@var{fname} () @var{compound-command} [ @var{redirections} ]\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1414 ./bashref.texi:1912 ./bashref.texi:2402 ./bashref.texi:2465
- msgid "or"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1417
- #, no-wrap
- msgid "function @var{fname} [()] @var{compound-command} [ @var{redirections} ]\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1441
- msgid ""
- "This defines a shell function named @var{fname}. The reserved word "
- "@code{function} is optional. If the @code{function} reserved word is "
- "supplied, the parentheses are optional. The @var{body} of the function is "
- "the compound command @var{compound-command} (@pxref{Compound Commands}). "
- "That command is usually a @var{list} enclosed between @{ and @}, but may be "
- "any compound command listed above, with one exception: If the "
- "@code{function} reserved word is used, but the parentheses are not supplied, "
- "the braces are required. @var{compound-command} is executed whenever "
- "@var{fname} is specified as the name of a command. When the shell is in "
- "@sc{posix} mode (@pxref{Bash POSIX Mode}), @var{fname} must be a valid shell "
- "@var{name} and may not be the same as one of the special builtins "
- "(@pxref{Special Builtins}). In default mode, a function name can be any "
- "unquoted shell word that does not contain @samp{$}. Any redirections "
- "(@pxref{Redirections}) associated with the shell function are performed when "
- "the function is executed. A function definition may be deleted using the "
- "@option{-f} option to the @code{unset} builtin (@pxref{Bourne Shell "
- "Builtins})."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1446
- msgid ""
- "The exit status of a function definition is zero unless a syntax error "
- "occurs or a readonly function with the same name already exists. When "
- "executed, the exit status of a function is the exit status of the last "
- "command executed in the body."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1455
- msgid ""
- "Note that for historical reasons, in the most common usage the curly braces "
- "that surround the body of the function must be separated from the body by "
- "@code{blank}s or newlines. This is because the braces are reserved words "
- "and are only recognized as such when they are separated from the command "
- "list by whitespace or another shell metacharacter. Also, when using the "
- "braces, the @var{list} must be terminated by a semicolon, a @samp{&}, or a "
- "newline."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1464
- msgid ""
- "When a function is executed, the arguments to the function become the "
- "positional parameters during its execution (@pxref{Positional Parameters}). "
- "The special parameter @samp{#} that expands to the number of positional "
- "parameters is updated to reflect the change. Special parameter @code{0} is "
- "unchanged. The first element of the @env{FUNCNAME} variable is set to the "
- "name of the function while the function is executing."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1478
- msgid ""
- "All other aspects of the shell execution environment are identical between a "
- "function and its caller with these exceptions: the @env{DEBUG} and "
- "@env{RETURN} traps are not inherited unless the function has been given the "
- "@code{trace} attribute using the @code{declare} builtin or the @code{-o "
- "functrace} option has been enabled with the @code{set} builtin, (in which "
- "case all functions inherit the @env{DEBUG} and @env{RETURN} traps), and the "
- "@env{ERR} trap is not inherited unless the @code{-o errtrace} shell option "
- "has been enabled. @xref{Bourne Shell Builtins}, for the description of the "
- "@code{trap} builtin."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1483
- msgid ""
- "The @env{FUNCNEST} variable, if set to a numeric value greater than 0, "
- "defines a maximum function nesting level. Function invocations that exceed "
- "the limit cause the entire command to abort."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1497
- msgid ""
- "If the builtin command @code{return} is executed in a function, the function "
- "completes and execution resumes with the next command after the function "
- "call. Any command associated with the @code{RETURN} trap is executed before "
- "execution resumes. When a function completes, the values of the positional "
- "parameters and the special parameter @samp{#} are restored to the values "
- "they had prior to the function's execution. If a numeric argument is given "
- "to @code{return}, that is the function's return status; otherwise the "
- "function's return status is the exit status of the last command executed "
- "before the @code{return}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1502
- msgid ""
- "Variables local to the function may be declared with the @code{local} "
- "builtin. These variables are visible only to the function and the commands "
- "it invokes. This is particularly important when a shell function calls "
- "other functions."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1508
- msgid ""
- "Local variables \"shadow\" variables with the same name declared at previous "
- "scopes. For instance, a local variable declared in a function hides a "
- "global variable of the same name: references and assignments refer to the "
- "local variable, leaving the global variable unmodified. When the function "
- "returns, the global variable is once again visible."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1520
- msgid ""
- "The shell uses @var{dynamic scoping} to control a variable's visibility "
- "within functions. With dynamic scoping, visible variables and their values "
- "are a result of the sequence of function calls that caused execution to "
- "reach the current function. The value of a variable that a function sees "
- "depends on its value within its caller, if any, whether that caller is the "
- "\"global\" scope or another shell function. This is also the value that a "
- "local variable declaration \"shadows\", and the value that is restored when "
- "the function returns."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1526
- msgid ""
- "For example, if a variable @var{var} is declared as local in function "
- "@var{func1}, and @var{func1} calls another function @var{func2}, references "
- "to @var{var} made from within @var{func2} will resolve to the local variable "
- "@var{var} from @var{func1}, shadowing any global variable named @var{var}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1529
- msgid ""
- "The following script demonstrates this behavior. When executed, the script "
- "displays"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1532
- #, no-wrap
- msgid "In func2, var = func1 local\n"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1540
- #, no-wrap
- msgid ""
- "func1()\n"
- "@{\n"
- " local var='func1 local'\n"
- " func2\n"
- "@}\n"
- "\n"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1545
- #, no-wrap
- msgid ""
- "func2()\n"
- "@{\n"
- " echo \"In func2, var = $var\"\n"
- "@}\n"
- "\n"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1548
- #, no-wrap
- msgid ""
- "var=global\n"
- "func1\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1560
- msgid ""
- "The @code{unset} builtin also acts using the same dynamic scope: if a "
- "variable is local to the current scope, @code{unset} will unset it; "
- "otherwise the unset will refer to the variable found in any calling scope as "
- "described above. If a variable at the current local scope is unset, it will "
- "remain so until it is reset in that scope or until the function returns. "
- "Once the function returns, any instance of the variable at a previous scope "
- "will become visible. If the unset acts on a variable at a previous scope, "
- "any instance of a variable with that name that had been shadowed will become "
- "visible."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1572
- msgid ""
- "Function names and definitions may be listed with the @option{-f} option to "
- "the @code{declare} (@code{typeset}) builtin command (@pxref{Bash "
- "Builtins}). The @option{-F} option to @code{declare} or @code{typeset} will "
- "list the function names only (and optionally the source file and line "
- "number, if the @code{extdebug} shell option is enabled). Functions may be "
- "exported so that subshells automatically have them defined with the "
- "@option{-f} option to the @code{export} builtin (@pxref{Bourne Shell "
- "Builtins})."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1577
- msgid ""
- "Functions may be recursive. The @code{FUNCNEST} variable may be used to "
- "limit the depth of the function call stack and restrict the number of "
- "function invocations. By default, no limit is placed on the number of "
- "recursive calls."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1580
- #, no-wrap
- msgid "parameters"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1581
- #, no-wrap
- msgid "variable, shell"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1582
- #, no-wrap
- msgid "shell variable"
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:1587 ./bashref.texi:1679 ./bashref.texi:1680
- #, no-wrap
- msgid "Positional Parameters"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:1587
- msgid "The shell's command-line arguments."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:1587 ./bashref.texi:1699 ./bashref.texi:1700
- #, no-wrap
- msgid "Special Parameters"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:1587
- msgid "Parameters denoted by special characters."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1596
- msgid ""
- "A @var{parameter} is an entity that stores values. It can be a @code{name}, "
- "a number, or one of the special characters listed below. A @var{variable} "
- "is a parameter denoted by a @code{name}. A variable has a @var{value} and "
- "zero or more @var{attributes}. Attributes are assigned using the "
- "@code{declare} builtin command (see the description of the @code{declare} "
- "builtin in @ref{Bash Builtins})."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1600
- msgid ""
- "A parameter is set if it has been assigned a value. The null string is a "
- "valid value. Once a variable is set, it may be unset only by using the "
- "@code{unset} builtin command."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1602
- msgid "A variable may be assigned to by a statement of the form"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1604
- #, no-wrap
- msgid "@var{name}=[@var{value}]\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1624
- msgid ""
- "If @var{value} is not given, the variable is assigned the null string. All "
- "@var{value}s undergo tilde expansion, parameter and variable expansion, "
- "command substitution, arithmetic expansion, and quote removal (detailed "
- "below). If the variable has its @code{integer} attribute set, then "
- "@var{value} is evaluated as an arithmetic expression even if the "
- "@code{$((@dots{}))} expansion is not used (@pxref{Arithmetic Expansion}). "
- "Word splitting is not performed, with the exception of @code{\"$@@\"} as "
- "explained below. Filename expansion is not performed. Assignment "
- "statements may also appear as arguments to the @code{alias}, @code{declare}, "
- "@code{typeset}, @code{export}, @code{readonly}, and @code{local} builtin "
- "commands (@var{declaration} commands). When in @sc{posix} mode (@pxref{Bash "
- "POSIX Mode}), these builtins may appear in a command after one or more "
- "instances of the @code{command} builtin and retain these assignment "
- "statement properties."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1642
- msgid ""
- "In the context where an assignment statement is assigning a value to a shell "
- "variable or array index (@pxref{Arrays}), the @samp{+=} operator can be used "
- "to append to or add to the variable's previous value. This includes "
- "arguments to builtin commands such as @code{declare} that accept assignment "
- "statements (@var{declaration} commands). When @samp{+=} is applied to a "
- "variable for which the @var{integer} attribute has been set, @var{value} is "
- "evaluated as an arithmetic expression and added to the variable's current "
- "value, which is also evaluated. When @samp{+=} is applied to an array "
- "variable using compound assignment (@pxref{Arrays}), the variable's value is "
- "not unset (as it is when using @samp{=}), and new values are appended to the "
- "array beginning at one greater than the array's maximum index (for indexed "
- "arrays), or added as additional key-value pairs in an associative array. "
- "When applied to a string-valued variable, @var{value} is expanded and "
- "appended to the variable's value."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1657
- msgid ""
- "A variable can be assigned the @var{nameref} attribute using the @option{-n} "
- "option to the @code{declare} or @code{local} builtin commands (@pxref{Bash "
- "Builtins}) to create a @var{nameref}, or a reference to another variable. "
- "This allows variables to be manipulated indirectly. Whenever the nameref "
- "variable is referenced, assigned to, unset, or has its attributes modified "
- "(other than using or changing the nameref attribute itself), the operation "
- "is actually performed on the variable specified by the nameref variable's "
- "value. A nameref is commonly used within shell functions to refer to a "
- "variable whose name is passed as an argument to the function. For instance, "
- "if a variable name is passed to a shell function as its first argument, "
- "running"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1659
- #, no-wrap
- msgid "declare -n ref=$1\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1666
- msgid ""
- "inside the function creates a nameref variable @var{ref} whose value is the "
- "variable name passed as the first argument. References and assignments to "
- "@var{ref}, and changes to its attributes, are treated as references, "
- "assignments, and attribute modifications to the variable whose name was "
- "passed as @code{$1}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1678
- msgid ""
- "If the control variable in a @code{for} loop has the nameref attribute, the "
- "list of words can be a list of shell variables, and a name reference will be "
- "established for each word in the list, in turn, when the loop is executed. "
- "Array variables cannot be given the nameref attribute. However, nameref "
- "variables can reference array variables and subscripted array variables. "
- "Namerefs can be unset using the @option{-n} option to the @code{unset} "
- "builtin (@pxref{Bourne Shell Builtins}). Otherwise, if @code{unset} is "
- "executed with the name of a nameref variable as an argument, the variable "
- "referenced by the nameref variable will be unset."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1681
- #, no-wrap
- msgid "parameters, positional"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1695
- msgid ""
- "A @var{positional parameter} is a parameter denoted by one or more digits, "
- "other than the single digit @code{0}. Positional parameters are assigned "
- "from the shell's arguments when it is invoked, and may be reassigned using "
- "the @code{set} builtin command. Positional parameter @code{N} may be "
- "referenced as @code{$@{N@}}, or as @code{$N} when @code{N} consists of a "
- "single digit. Positional parameters may not be assigned to with assignment "
- "statements. The @code{set} and @code{shift} builtins are used to set and "
- "unset them (@pxref{Shell Builtin Commands}). The positional parameters are "
- "temporarily replaced when a shell function is executed (@pxref{Shell "
- "Functions})."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1698
- msgid ""
- "When a positional parameter consisting of more than a single digit is "
- "expanded, it must be enclosed in braces."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1701
- #, no-wrap
- msgid "parameters, special"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1705
- msgid ""
- "The shell treats several parameters specially. These parameters may only be "
- "referenced; assignment to them is not allowed."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1707 ./bashref.texi:5593 ./bashref.texi:5660 ./bashref.texi:8468
- msgid "@vtable @code"
- msgstr ""
- #. type: item
- #: ./bashref.texi:1708 ./bashref.texi:2610
- #, no-wrap
- msgid "*"
- msgstr ""
- #. type: vindex
- #: ./bashref.texi:1709
- #, no-wrap
- msgid "$*"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1724
- msgid ""
- "($*) Expands to the positional parameters, starting from one. When the "
- "expansion is not within double quotes, each positional parameter expands to "
- "a separate word. In contexts where it is performed, those words are subject "
- "to further word splitting and filename expansion. When the expansion occurs "
- "within double quotes, it expands to a single word with the value of each "
- "parameter separated by the first character of the @env{IFS} special "
- "variable. That is, @code{\"$*\"} is equivalent to "
- "@code{\"$1@var{c}$2@var{c}@dots{}\"}, where @var{c} is the first character "
- "of the value of the @code{IFS} variable. If @env{IFS} is unset, the "
- "parameters are separated by spaces. If @env{IFS} is null, the parameters "
- "are joined without intervening separators."
- msgstr ""
- #. type: item
- #: ./bashref.texi:1725
- #, no-wrap
- msgid "@@"
- msgstr ""
- #. type: vindex
- #: ./bashref.texi:1726
- #, no-wrap
- msgid "$@@"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1746
- msgid ""
- "($@@) Expands to the positional parameters, starting from one. In contexts "
- "where word splitting is performed, this expands each positional parameter to "
- "a separate word; if not within double quotes, these words are subject to "
- "word splitting. In contexts where word splitting is not performed, this "
- "expands to a single word with each positional parameter separated by a "
- "space. When the expansion occurs within double quotes, and word splitting "
- "is performed, each parameter expands to a separate word. That is, "
- "@code{\"$@@\"} is equivalent to @code{\"$1\" \"$2\" @dots{}}. If the "
- "double-quoted expansion occurs within a word, the expansion of the first "
- "parameter is joined with the beginning part of the original word, and the "
- "expansion of the last parameter is joined with the last part of the original "
- "word. When there are no positional parameters, @code{\"$@@\"} and "
- "@code{$@@} expand to nothing (i.e., they are removed)."
- msgstr ""
- #. type: item
- #: ./bashref.texi:1747
- #, no-wrap
- msgid "#"
- msgstr ""
- #. type: vindex
- #: ./bashref.texi:1748
- #, no-wrap
- msgid "$#"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1750
- msgid "($#) Expands to the number of positional parameters in decimal."
- msgstr ""
- #. type: item
- #: ./bashref.texi:1751 ./bashref.texi:2618
- #, no-wrap
- msgid "?"
- msgstr ""
- #. type: vindex
- #: ./bashref.texi:1752
- #, no-wrap
- msgid "$?"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1755
- msgid ""
- "($?) Expands to the exit status of the most recently executed foreground "
- "pipeline."
- msgstr ""
- #. type: item
- #: ./bashref.texi:1756 ./bashref.texi:5153
- #, no-wrap
- msgid "-"
- msgstr ""
- #. type: vindex
- #: ./bashref.texi:1757
- #, no-wrap
- msgid "$-"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1762
- msgid ""
- "($-, a hyphen.) Expands to the current option flags as specified upon "
- "invocation, by the @code{set} builtin command, or those set by the shell "
- "itself (such as the @option{-i} option)."
- msgstr ""
- #. type: item
- #: ./bashref.texi:1763
- #, no-wrap
- msgid "$"
- msgstr ""
- #. type: vindex
- #: ./bashref.texi:1764
- #, no-wrap
- msgid "$$"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1767
- msgid ""
- "($$) Expands to the process @sc{id} of the shell. In a @code{()} subshell, "
- "it expands to the process @sc{id} of the invoking shell, not the subshell."
- msgstr ""
- #. type: vindex
- #: ./bashref.texi:1769
- #, no-wrap
- msgid "$!"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1773
- msgid ""
- "($!) Expands to the process @sc{id} of the job most recently placed into the "
- "background, whether executed as an asynchronous command or using the "
- "@code{bg} builtin (@pxref{Job Control Builtins})."
- msgstr ""
- #. type: item
- #: ./bashref.texi:1774
- #, no-wrap
- msgid "0"
- msgstr ""
- #. type: vindex
- #: ./bashref.texi:1775
- #, no-wrap
- msgid "$0"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1783
- msgid ""
- "($0) Expands to the name of the shell or shell script. This is set at shell "
- "initialization. If Bash is invoked with a file of commands (@pxref{Shell "
- "Scripts}), @code{$0} is set to the name of that file. If Bash is started "
- "with the @option{-c} option (@pxref{Invoking Bash}), then @code{$0} is set "
- "to the first argument after the string to be executed, if one is present. "
- "Otherwise, it is set to the filename used to invoke Bash, as given by "
- "argument zero."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1787
- #, no-wrap
- msgid "expansion"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1791
- msgid ""
- "Expansion is performed on the command line after it has been split into "
- "@code{token}s. There are seven kinds of expansion performed:"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1793 ./bashref.texi:1847
- #, no-wrap
- msgid "brace expansion"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1794 ./bashref.texi:1918
- #, no-wrap
- msgid "tilde expansion"
- msgstr ""
- #. type: item
- #: ./bashref.texi:1795
- #, no-wrap
- msgid "parameter and variable expansion"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1796 ./bashref.texi:2392
- #, no-wrap
- msgid "command substitution"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1797 ./bashref.texi:2432
- #, no-wrap
- msgid "arithmetic expansion"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1798 ./bashref.texi:2490
- #, no-wrap
- msgid "word splitting"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1799 ./bashref.texi:2539
- #, no-wrap
- msgid "filename expansion"
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:1815 ./bashref.texi:1845 ./bashref.texi:1846
- #, no-wrap
- msgid "Brace Expansion"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:1815
- msgid "Expansion of expressions within braces."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:1815 ./bashref.texi:1916 ./bashref.texi:1917
- #, no-wrap
- msgid "Tilde Expansion"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:1815
- msgid "Expansion of the ~ character."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:1815 ./bashref.texi:1992 ./bashref.texi:1993
- #, no-wrap
- msgid "Shell Parameter Expansion"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:1815
- msgid "How Bash expands variables to their values."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:1815 ./bashref.texi:2390 ./bashref.texi:2391
- #, no-wrap
- msgid "Command Substitution"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:1815
- msgid "Using the output of a command as an argument."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:1815 ./bashref.texi:2429 ./bashref.texi:2430
- #, no-wrap
- msgid "Arithmetic Expansion"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:1815
- msgid "How to use arithmetic in shell expansions."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:1815 ./bashref.texi:2453 ./bashref.texi:2454
- #, no-wrap
- msgid "Process Substitution"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:1815
- msgid "A way to write and read to and from a command."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:1815 ./bashref.texi:2488 ./bashref.texi:2489
- #, no-wrap
- msgid "Word Splitting"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:1815
- msgid "How the results of expansion are split into separate arguments."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:1815 ./bashref.texi:2532 ./bashref.texi:2533
- #, no-wrap
- msgid "Filename Expansion"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:1815
- msgid "A shorthand for specifying filenames matching patterns."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:1815 ./bashref.texi:2696 ./bashref.texi:2697
- #, no-wrap
- msgid "Quote Removal"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:1815
- msgid "How and when quote characters are removed from words."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1823
- msgid ""
- "The order of expansions is: brace expansion; tilde expansion, parameter and "
- "variable expansion, arithmetic expansion, and command substitution (done in "
- "a left-to-right fashion); word splitting; and filename expansion."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1829
- msgid ""
- "On systems that can support it, there is an additional expansion available: "
- "@var{process substitution}. This is performed at the same time as tilde, "
- "parameter, variable, and arithmetic expansion and command substitution."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1833
- msgid ""
- "After these expansions are performed, quote characters present in the "
- "original word are removed unless they have been quoted themselves "
- "(@var{quote removal})."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1841
- msgid ""
- "Only brace expansion, word splitting, and filename expansion can increase "
- "the number of words of the expansion; other expansions expand a single word "
- "to a single word. The only exceptions to this are the expansions of "
- "@code{\"$@@\"} and @code{$*} (@pxref{Special Parameters}), and "
- "@code{\"$@{@var{name}[@@]@}\"} and @code{$@{@var{name}[*]@}} "
- "(@pxref{Arrays})."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1844
- msgid ""
- "After all expansions, @code{quote removal} (@pxref{Quote Removal}) is "
- "performed."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1848
- #, no-wrap
- msgid "expansion, brace"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1861
- msgid ""
- "Brace expansion is a mechanism by which arbitrary strings may be generated. "
- "This mechanism is similar to @var{filename expansion} (@pxref{Filename "
- "Expansion}), but the filenames generated need not exist. Patterns to be "
- "brace expanded take the form of an optional @var{preamble}, followed by "
- "either a series of comma-separated strings or a sequence expression between "
- "a pair of braces, followed by an optional @var{postscript}. The preamble is "
- "prefixed to each string contained within the braces, and the postscript is "
- "then appended to each resulting string, expanding left to right."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1866
- msgid ""
- "Brace expansions may be nested. The results of each expanded string are not "
- "sorted; left to right order is preserved. For example,"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1869
- #, no-wrap
- msgid ""
- "bash$ echo a@{d,c,b@}e\n"
- "ade ace abe\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1887
- msgid ""
- "A sequence expression takes the form "
- "@code{@{@var{x}..@var{y}[..@var{incr}]@}}, where @var{x} and @var{y} are "
- "either integers or single characters, and @var{incr}, an optional increment, "
- "is an integer. When integers are supplied, the expression expands to each "
- "number between @var{x} and @var{y}, inclusive. Supplied integers may be "
- "prefixed with @samp{0} to force each term to have the same width. When "
- "either @var{x} or @var{y} begins with a zero, the shell attempts to force "
- "all generated terms to contain the same number of digits, zero-padding where "
- "necessary. When characters are supplied, the expression expands to each "
- "character lexicographically between @var{x} and @var{y}, inclusive, using "
- "the default C locale. Note that both @var{x} and @var{y} must be of the "
- "same type. When the increment is supplied, it is used as the difference "
- "between each term. The default increment is 1 or -1 as appropriate."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1893
- msgid ""
- "Brace expansion is performed before any other expansions, and any characters "
- "special to other expansions are preserved in the result. It is strictly "
- "textual. Bash does not apply any syntactic interpretation to the context of "
- "the expansion or the text between the braces."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1898
- msgid ""
- "A correctly-formed brace expansion must contain unquoted opening and closing "
- "braces, and at least one unquoted comma or a valid sequence expression. Any "
- "incorrectly formed brace expansion is left unchanged."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1904
- msgid ""
- "A @{ or @samp{,} may be quoted with a backslash to prevent its being "
- "considered part of a brace expression. To avoid conflicts with parameter "
- "expansion, the string @samp{$@{} is not considered eligible for brace "
- "expansion, and inhibits brace expansion until the closing @samp{@}}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1908
- msgid ""
- "This construct is typically used as shorthand when the common prefix of the "
- "strings to be generated is longer than in the above example:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1910
- #, no-wrap
- msgid "mkdir /usr/local/src/bash/@{old,new,dist,bugs@}\n"
- msgstr ""
- #. type: example
- #: ./bashref.texi:1914
- #, no-wrap
- msgid "chown root /usr/@{ucb/@{ex,edit@},lib/@{ex?.?*,how_ex@}@}\n"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1919
- #, no-wrap
- msgid "expansion, tilde"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1933
- msgid ""
- "If a word begins with an unquoted tilde character (@samp{~}), all of the "
- "characters up to the first unquoted slash (or all characters, if there is no "
- "unquoted slash) are considered a @var{tilde-prefix}. If none of the "
- "characters in the tilde-prefix are quoted, the characters in the "
- "tilde-prefix following the tilde are treated as a possible @var{login "
- "name}. If this login name is the null string, the tilde is replaced with "
- "the value of the @env{HOME} shell variable. If @env{HOME} is unset, the "
- "home directory of the user executing the shell is substituted instead. "
- "Otherwise, the tilde-prefix is replaced with the home directory associated "
- "with the specified login name."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1938
- msgid ""
- "If the tilde-prefix is @samp{~+}, the value of the shell variable @env{PWD} "
- "replaces the tilde-prefix. If the tilde-prefix is @samp{~-}, the value of "
- "the shell variable @env{OLDPWD}, if it is set, is substituted."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1947
- msgid ""
- "If the characters following the tilde in the tilde-prefix consist of a "
- "number @var{N}, optionally prefixed by a @samp{+} or a @samp{-}, the "
- "tilde-prefix is replaced with the corresponding element from the directory "
- "stack, as it would be displayed by the @code{dirs} builtin invoked with the "
- "characters following tilde in the tilde-prefix as an argument (@pxref{The "
- "Directory Stack}). If the tilde-prefix, sans the tilde, consists of a "
- "number without a leading @samp{+} or @samp{-}, @samp{+} is assumed."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1950
- msgid ""
- "If the login name is invalid, or the tilde expansion fails, the word is left "
- "unchanged."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1957
- msgid ""
- "Each variable assignment is checked for unquoted tilde-prefixes immediately "
- "following a @samp{:} or the first @samp{=}. In these cases, tilde expansion "
- "is also performed. Consequently, one may use filenames with tildes in "
- "assignments to @env{PATH}, @env{MAILPATH}, and @env{CDPATH}, and the shell "
- "assigns the expanded value."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1959
- msgid "The following table shows how Bash treats unquoted tilde-prefixes:"
- msgstr ""
- #. type: item
- #: ./bashref.texi:1961
- #, no-wrap
- msgid "~"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1963
- msgid "The value of @code{$HOME}"
- msgstr ""
- #. type: item
- #: ./bashref.texi:1963
- #, no-wrap
- msgid "~/foo"
- msgstr ""
- #. type: file{#1}
- #: ./bashref.texi:1965
- msgid "$HOME/foo"
- msgstr ""
- #. type: item
- #: ./bashref.texi:1966
- #, no-wrap
- msgid "~fred/foo"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1969
- msgid "The subdirectory @code{foo} of the home directory of the user @code{fred}"
- msgstr ""
- #. type: item
- #: ./bashref.texi:1970
- #, no-wrap
- msgid "~+/foo"
- msgstr ""
- #. type: file{#1}
- #: ./bashref.texi:1972
- msgid "$PWD/foo"
- msgstr ""
- #. type: item
- #: ./bashref.texi:1973
- #, no-wrap
- msgid "~-/foo"
- msgstr ""
- #. type: file{#1}
- #: ./bashref.texi:1975
- msgid "$@{OLDPWD-'~-'@}/foo"
- msgstr ""
- #. type: item
- #: ./bashref.texi:1976
- #, no-wrap
- msgid "~@var{N}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1978 ./bashref.texi:1981
- msgid "The string that would be displayed by @samp{dirs +@var{N}}"
- msgstr ""
- #. type: item
- #: ./bashref.texi:1979
- #, no-wrap
- msgid "~+@var{N}"
- msgstr ""
- #. type: item
- #: ./bashref.texi:1982
- #, no-wrap
- msgid "~-@var{N}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:1984
- msgid "The string that would be displayed by @samp{dirs -@var{N}}"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:1991
- msgid ""
- "Bash also performs tilde expansion on words satisfying the conditions of "
- "variable assignments (@pxref{Shell Parameters}) when they appear as "
- "arguments to simple commands. Bash does not do this, except for the "
- "@var{declaration} commands listed above, when in @sc{posix} mode."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1994
- #, no-wrap
- msgid "parameter expansion"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:1995
- #, no-wrap
- msgid "expansion, parameter"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2003
- msgid ""
- "The @samp{$} character introduces parameter expansion, command substitution, "
- "or arithmetic expansion. The parameter name or symbol to be expanded may be "
- "enclosed in braces, which are optional but serve to protect the variable to "
- "be expanded from characters immediately following it which could be "
- "interpreted as part of the name."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2008
- msgid ""
- "When braces are used, the matching ending brace is the first @samp{@}} not "
- "escaped by a backslash or within a quoted string, and not within an embedded "
- "arithmetic expansion, command substitution, or parameter expansion."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2017
- msgid ""
- "The basic form of parameter expansion is $@{@var{parameter}@}. The value of "
- "@var{parameter} is substituted. The @var{parameter} is a shell parameter as "
- "described above (@pxref{Shell Parameters}) or an array reference "
- "(@pxref{Arrays}). The braces are required when @var{parameter} is a "
- "positional parameter with more than one digit, or when @var{parameter} is "
- "followed by a character that is not to be interpreted as part of its name."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2036
- msgid ""
- "If the first character of @var{parameter} is an exclamation point (!), and "
- "@var{parameter} is not a @var{nameref}, it introduces a level of "
- "indirection. Bash uses the value formed by expanding the rest of "
- "@var{parameter} as the new @var{parameter}; this is then expanded and that "
- "value is used in the rest of the expansion, rather than the expansion of the "
- "original @var{parameter}. This is known as @code{indirect expansion}. The "
- "value is subject to tilde expansion, parameter expansion, command "
- "substitution, and arithmetic expansion. If @var{parameter} is a nameref, "
- "this expands to the name of the variable referenced by @var{parameter} "
- "instead of performing the complete indirect expansion. The exceptions to "
- "this are the expansions of $@{!@var{prefix}*@} and $@{!@var{name}[@@]@} "
- "described below. The exclamation point must immediately follow the left "
- "brace in order to introduce indirection."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2039
- msgid ""
- "In each of the cases below, @var{word} is subject to tilde expansion, "
- "parameter expansion, command substitution, and arithmetic expansion."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2046
- msgid ""
- "When not performing substring expansion, using the form described below "
- "(e.g., @samp{:-}), Bash tests for a parameter that is unset or null. "
- "Omitting the colon results in a test only for a parameter that is unset. "
- "Put another way, if the colon is included, the operator tests for both "
- "@var{parameter}'s existence and that its value is not null; if the colon is "
- "omitted, the operator tests only for existence."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2049
- #, no-wrap
- msgid "$@{@var{parameter}:@minus{}@var{word}@}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2053
- msgid ""
- "If @var{parameter} is unset or null, the expansion of @var{word} is "
- "substituted. Otherwise, the value of @var{parameter} is substituted."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2054
- #, no-wrap
- msgid "$@{@var{parameter}:=@var{word}@}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2061
- msgid ""
- "If @var{parameter} is unset or null, the expansion of @var{word} is assigned "
- "to @var{parameter}. The value of @var{parameter} is then substituted. "
- "Positional parameters and special parameters may not be assigned to in this "
- "way."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2062
- #, no-wrap
- msgid "$@{@var{parameter}:?@var{word}@}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2069
- msgid ""
- "If @var{parameter} is null or unset, the expansion of @var{word} (or a "
- "message to that effect if @var{word} is not present) is written to the "
- "standard error and the shell, if it is not interactive, exits. Otherwise, "
- "the value of @var{parameter} is substituted."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2070
- #, no-wrap
- msgid "$@{@var{parameter}:+@var{word}@}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2074
- msgid ""
- "If @var{parameter} is null or unset, nothing is substituted, otherwise the "
- "expansion of @var{word} is substituted."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2075
- #, no-wrap
- msgid "$@{@var{parameter}:@var{offset}@}"
- msgstr ""
- #. type: itemx
- #: ./bashref.texi:2076
- #, no-wrap
- msgid "$@{@var{parameter}:@var{offset}:@var{length}@}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2088
- msgid ""
- "This is referred to as Substring Expansion. It expands to up to "
- "@var{length} characters of the value of @var{parameter} starting at the "
- "character specified by @var{offset}. If @var{parameter} is @samp{@@}, an "
- "indexed array subscripted by @samp{@@} or @samp{*}, or an associative array "
- "name, the results differ as described below. If @var{length} is omitted, it "
- "expands to the substring of the value of @var{parameter} starting at the "
- "character specified by @var{offset} and extending to the end of the value. "
- "@var{length} and @var{offset} are arithmetic expressions (@pxref{Shell "
- "Arithmetic})."
- msgstr ""
- #. type: table
- #: ./bashref.texi:2099
- msgid ""
- "If @var{offset} evaluates to a number less than zero, the value is used as "
- "an offset in characters from the end of the value of @var{parameter}. If "
- "@var{length} evaluates to a number less than zero, it is interpreted as an "
- "offset in characters from the end of the value of @var{parameter} rather "
- "than a number of characters, and the expansion is the characters between "
- "@var{offset} and that result. Note that a negative offset must be separated "
- "from the colon by at least one space to avoid being confused with the "
- "@samp{:-} expansion."
- msgstr ""
- #. type: table
- #: ./bashref.texi:2102
- msgid ""
- "Here are some examples illustrating substring expansion on parameters and "
- "subscripted arrays:"
- msgstr ""
- #. type: verbatim
- #: ./bashref.texi:2108
- #, no-wrap
- msgid ""
- "$ string=01234567890abcdefgh\n"
- "$ echo ${string:7}\n"
- "7890abcdefgh\n"
- "$ echo ${string:7:0}\n"
- "\n"
- msgstr ""
- #. type: verbatim
- #: ./bashref.texi:2116
- #, no-wrap
- msgid ""
- "$ echo ${string:7:2}\n"
- "78\n"
- "$ echo ${string:7:-2}\n"
- "7890abcdef\n"
- "$ echo ${string: -7}\n"
- "bcdefgh\n"
- "$ echo ${string: -7:0}\n"
- "\n"
- msgstr ""
- #. type: verbatim
- #: ./bashref.texi:2125
- #, no-wrap
- msgid ""
- "$ echo ${string: -7:2}\n"
- "bc\n"
- "$ echo ${string: -7:-2}\n"
- "bcdef\n"
- "$ set -- 01234567890abcdefgh\n"
- "$ echo ${1:7}\n"
- "7890abcdefgh\n"
- "$ echo ${1:7:0}\n"
- "\n"
- msgstr ""
- #. type: verbatim
- #: ./bashref.texi:2133
- #, no-wrap
- msgid ""
- "$ echo ${1:7:2}\n"
- "78\n"
- "$ echo ${1:7:-2}\n"
- "7890abcdef\n"
- "$ echo ${1: -7}\n"
- "bcdefgh\n"
- "$ echo ${1: -7:0}\n"
- "\n"
- msgstr ""
- #. type: verbatim
- #: ./bashref.texi:2142
- #, no-wrap
- msgid ""
- "$ echo ${1: -7:2}\n"
- "bc\n"
- "$ echo ${1: -7:-2}\n"
- "bcdef\n"
- "$ array[0]=01234567890abcdefgh\n"
- "$ echo ${array[0]:7}\n"
- "7890abcdefgh\n"
- "$ echo ${array[0]:7:0}\n"
- "\n"
- msgstr ""
- #. type: verbatim
- #: ./bashref.texi:2150
- #, no-wrap
- msgid ""
- "$ echo ${array[0]:7:2}\n"
- "78\n"
- "$ echo ${array[0]:7:-2}\n"
- "7890abcdef\n"
- "$ echo ${array[0]: -7}\n"
- "bcdefgh\n"
- "$ echo ${array[0]: -7:0}\n"
- "\n"
- msgstr ""
- #. type: verbatim
- #: ./bashref.texi:2155
- #, no-wrap
- msgid ""
- "$ echo ${array[0]: -7:2}\n"
- "bc\n"
- "$ echo ${array[0]: -7:-2}\n"
- "bcdef\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2163
- msgid ""
- "If @var{parameter} is @samp{@@}, the result is @var{length} positional "
- "parameters beginning at @var{offset}. A negative @var{offset} is taken "
- "relative to one greater than the greatest positional parameter, so an offset "
- "of -1 evaluates to the last positional parameter. It is an expansion error "
- "if @var{length} evaluates to a number less than zero."
- msgstr ""
- #. type: table
- #: ./bashref.texi:2166
- msgid ""
- "The following examples illustrate substring expansion using positional "
- "parameters:"
- msgstr ""
- #. type: verbatim
- #: ./bashref.texi:2172
- #, no-wrap
- msgid ""
- "$ set -- 1 2 3 4 5 6 7 8 9 0 a b c d e f g h\n"
- "$ echo ${@:7}\n"
- "7 8 9 0 a b c d e f g h\n"
- "$ echo ${@:7:0}\n"
- "\n"
- msgstr ""
- #. type: verbatim
- #: ./bashref.texi:2184
- #, no-wrap
- msgid ""
- "$ echo ${@:7:2}\n"
- "7 8\n"
- "$ echo ${@:7:-2}\n"
- "bash: -2: substring expression < 0\n"
- "$ echo ${@: -7:2}\n"
- "b c\n"
- "$ echo ${@:0}\n"
- "./bash 1 2 3 4 5 6 7 8 9 0 a b c d e f g h\n"
- "$ echo ${@:0:2}\n"
- "./bash 1\n"
- "$ echo ${@: -7:0}\n"
- "\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2193
- msgid ""
- "If @var{parameter} is an indexed array name subscripted by @samp{@@} or "
- "@samp{*}, the result is the @var{length} members of the array beginning with "
- "@code{$@{@var{parameter}[@var{offset}]@}}. A negative @var{offset} is taken "
- "relative to one greater than the maximum index of the specified array. It "
- "is an expansion error if @var{length} evaluates to a number less than zero."
- msgstr ""
- #. type: table
- #: ./bashref.texi:2196
- msgid "These examples show how you can use substring expansion with indexed arrays:"
- msgstr ""
- #. type: verbatim
- #: ./bashref.texi:2212
- #, no-wrap
- msgid ""
- "$ array=(0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h)\n"
- "$ echo ${array[@]:7}\n"
- "7 8 9 0 a b c d e f g h\n"
- "$ echo ${array[@]:7:2}\n"
- "7 8\n"
- "$ echo ${array[@]: -7:2}\n"
- "b c\n"
- "$ echo ${array[@]: -7:-2}\n"
- "bash: -2: substring expression < 0\n"
- "$ echo ${array[@]:0}\n"
- "0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h\n"
- "$ echo ${array[@]:0:2}\n"
- "0 1\n"
- "$ echo ${array[@]: -7:0}\n"
- "\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2217
- msgid ""
- "Substring expansion applied to an associative array produces undefined "
- "results."
- msgstr ""
- #. type: table
- #: ./bashref.texi:2222
- msgid ""
- "Substring indexing is zero-based unless the positional parameters are used, "
- "in which case the indexing starts at 1 by default. If @var{offset} is 0, "
- "and the positional parameters are used, @code{$0} is prefixed to the list."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2223
- #, no-wrap
- msgid "$@{!@var{prefix}*@}"
- msgstr ""
- #. type: itemx
- #: ./bashref.texi:2224
- #, no-wrap
- msgid "$@{!@var{prefix}@@@}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2229
- msgid ""
- "Expands to the names of variables whose names begin with @var{prefix}, "
- "separated by the first character of the @env{IFS} special variable. When "
- "@samp{@@} is used and the expansion appears within double quotes, each "
- "variable name expands to a separate word."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2230
- #, no-wrap
- msgid "$@{!@var{name}[@@]@}"
- msgstr ""
- #. type: itemx
- #: ./bashref.texi:2231
- #, no-wrap
- msgid "$@{!@var{name}[*]@}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2238
- msgid ""
- "If @var{name} is an array variable, expands to the list of array indices "
- "(keys) assigned in @var{name}. If @var{name} is not an array, expands to 0 "
- "if @var{name} is set and null otherwise. When @samp{@@} is used and the "
- "expansion appears within double quotes, each key expands to a separate word."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2239
- #, no-wrap
- msgid "$@{#@var{parameter}@}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2251
- msgid ""
- "The length in characters of the expanded value of @var{parameter} is "
- "substituted. If @var{parameter} is @samp{*} or @samp{@@}, the value "
- "substituted is the number of positional parameters. If @var{parameter} is "
- "an array name subscripted by @samp{*} or @samp{@@}, the value substituted is "
- "the number of elements in the array. If @var{parameter} is an indexed array "
- "name subscripted by a negative number, that number is interpreted as "
- "relative to one greater than the maximum index of @var{parameter}, so "
- "negative indices count back from the end of the array, and an index of -1 "
- "references the last element."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2252
- #, no-wrap
- msgid "$@{@var{parameter}#@var{word}@}"
- msgstr ""
- #. type: itemx
- #: ./bashref.texi:2253
- #, no-wrap
- msgid "$@{@var{parameter}##@var{word}@}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2268
- msgid ""
- "The @var{word} is expanded to produce a pattern and matched according to the "
- "rules described below (@pxref{Pattern Matching}). If the pattern matches "
- "the beginning of the expanded value of @var{parameter}, then the result of "
- "the expansion is the expanded value of @var{parameter} with the shortest "
- "matching pattern (the @samp{#} case) or the longest matching pattern (the "
- "@samp{##} case) deleted. If @var{parameter} is @samp{@@} or @samp{*}, the "
- "pattern removal operation is applied to each positional parameter in turn, "
- "and the expansion is the resultant list. If @var{parameter} is an array "
- "variable subscripted with @samp{@@} or @samp{*}, the pattern removal "
- "operation is applied to each member of the array in turn, and the expansion "
- "is the resultant list."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2269
- #, no-wrap
- msgid "$@{@var{parameter}%@var{word}@}"
- msgstr ""
- #. type: itemx
- #: ./bashref.texi:2270
- #, no-wrap
- msgid "$@{@var{parameter}%%@var{word}@}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2285
- msgid ""
- "The @var{word} is expanded to produce a pattern and matched according to the "
- "rules described below (@pxref{Pattern Matching}). If the pattern matches a "
- "trailing portion of the expanded value of @var{parameter}, then the result "
- "of the expansion is the value of @var{parameter} with the shortest matching "
- "pattern (the @samp{%} case) or the longest matching pattern (the @samp{%%} "
- "case) deleted. If @var{parameter} is @samp{@@} or @samp{*}, the pattern "
- "removal operation is applied to each positional parameter in turn, and the "
- "expansion is the resultant list. If @var{parameter} is an array variable "
- "subscripted with @samp{@@} or @samp{*}, the pattern removal operation is "
- "applied to each member of the array in turn, and the expansion is the "
- "resultant list."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2286
- #, no-wrap
- msgid "$@{@var{parameter}/@var{pattern}/@var{string}@}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2313
- msgid ""
- "The @var{pattern} is expanded to produce a pattern just as in filename "
- "expansion. @var{Parameter} is expanded and the longest match of "
- "@var{pattern} against its value is replaced with @var{string}. The match is "
- "performed according to the rules described below (@pxref{Pattern "
- "Matching}). If @var{pattern} begins with @samp{/}, all matches of "
- "@var{pattern} are replaced with @var{string}. Normally only the first match "
- "is replaced. If @var{pattern} begins with @samp{#}, it must match at the "
- "beginning of the expanded value of @var{parameter}. If @var{pattern} begins "
- "with @samp{%}, it must match at the end of the expanded value of "
- "@var{parameter}. If @var{string} is null, matches of @var{pattern} are "
- "deleted and the @code{/} following @var{pattern} may be omitted. If the "
- "@code{nocasematch} shell option (see the description of @code{shopt} in "
- "@ref{The Shopt Builtin}) is enabled, the match is performed without regard "
- "to the case of alphabetic characters. If @var{parameter} is @samp{@@} or "
- "@samp{*}, the substitution operation is applied to each positional parameter "
- "in turn, and the expansion is the resultant list. If @var{parameter} is an "
- "array variable subscripted with @samp{@@} or @samp{*}, the substitution "
- "operation is applied to each member of the array in turn, and the expansion "
- "is the resultant list."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2314
- #, no-wrap
- msgid "$@{@var{parameter}^@var{pattern}@}"
- msgstr ""
- #. type: itemx
- #: ./bashref.texi:2315
- #, no-wrap
- msgid "$@{@var{parameter}^^@var{pattern}@}"
- msgstr ""
- #. type: itemx
- #: ./bashref.texi:2316
- #, no-wrap
- msgid "$@{@var{parameter},@var{pattern}@}"
- msgstr ""
- #. type: itemx
- #: ./bashref.texi:2317
- #, no-wrap
- msgid "$@{@var{parameter},,@var{pattern}@}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2339
- msgid ""
- "This expansion modifies the case of alphabetic characters in "
- "@var{parameter}. The @var{pattern} is expanded to produce a pattern just as "
- "in filename expansion. Each character in the expanded value of "
- "@var{parameter} is tested against @var{pattern}, and, if it matches the "
- "pattern, its case is converted. The pattern should not attempt to match "
- "more than one character. The @samp{^} operator converts lowercase letters "
- "matching @var{pattern} to uppercase; the @samp{,} operator converts matching "
- "uppercase letters to lowercase. The @samp{^^} and @samp{,,} expansions "
- "convert each matched character in the expanded value; the @samp{^} and "
- "@samp{,} expansions match and convert only the first character in the "
- "expanded value. If @var{pattern} is omitted, it is treated like a @samp{?}, "
- "which matches every character. If @var{parameter} is @samp{@@} or @samp{*}, "
- "the case modification operation is applied to each positional parameter in "
- "turn, and the expansion is the resultant list. If @var{parameter} is an "
- "array variable subscripted with @samp{@@} or @samp{*}, the case modification "
- "operation is applied to each member of the array in turn, and the expansion "
- "is the resultant list."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2340
- #, no-wrap
- msgid "$@{@var{parameter}@@@var{operator}@}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2344
- msgid ""
- "The expansion is either a transformation of the value of @var{parameter} or "
- "information about @var{parameter} itself, depending on the value of "
- "@var{operator}. Each @var{operator} is a single letter:"
- msgstr ""
- #. type: item
- #: ./bashref.texi:2346
- #, no-wrap
- msgid "U"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2349
- msgid ""
- "The expansion is a string that is the value of @var{parameter} with "
- "lowercase alphabetic characters converted to uppercase."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2349
- #, no-wrap
- msgid "u"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2352
- msgid ""
- "The expansion is a string that is the value of @var{parameter} with the "
- "first character converted to uppercase, if it is alphabetic."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2352
- #, no-wrap
- msgid "L"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2355
- msgid ""
- "The expansion is a string that is the value of @var{parameter} with "
- "uppercase alphabetic characters converted to lowercase."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2355
- #, no-wrap
- msgid "Q"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2358
- msgid ""
- "The expansion is a string that is the value of @var{parameter} quoted in a "
- "format that can be reused as input."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2358
- #, no-wrap
- msgid "E"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2361
- msgid ""
- "The expansion is a string that is the value of @var{parameter} with "
- "backslash escape sequences expanded as with the @code{$'@dots{}'} quoting "
- "mechanism."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2361
- #, no-wrap
- msgid "P"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2364
- msgid ""
- "The expansion is a string that is the result of expanding the value of "
- "@var{parameter} as if it were a prompt string (@pxref{Controlling the "
- "Prompt})."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2364
- #, no-wrap
- msgid "A"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2368
- msgid ""
- "The expansion is a string in the form of an assignment statement or "
- "@code{declare} command that, if evaluated, will recreate @var{parameter} "
- "with its attributes and value."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2368
- #, no-wrap
- msgid "K"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2373
- msgid ""
- "Produces a possibly-quoted version of the value of @var{parameter}, except "
- "that it prints the values of indexed and associative arrays as a sequence of "
- "quoted key-value pairs (@pxref{Arrays})."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2373
- #, no-wrap
- msgid "a"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2376
- msgid ""
- "The expansion is a string consisting of flag values representing "
- "@var{parameter}'s attributes."
- msgstr ""
- #. type: table
- #: ./bashref.texi:2385
- msgid ""
- "If @var{parameter} is @samp{@@} or @samp{*}, the operation is applied to "
- "each positional parameter in turn, and the expansion is the resultant list. "
- "If @var{parameter} is an array variable subscripted with @samp{@@} or "
- "@samp{*}, the operation is applied to each member of the array in turn, and "
- "the expansion is the resultant list."
- msgstr ""
- #. type: table
- #: ./bashref.texi:2388
- msgid ""
- "The result of the expansion is subject to word splitting and filename "
- "expansion as described below."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2397
- msgid ""
- "Command substitution allows the output of a command to replace the command "
- "itself. Command substitution occurs when a command is enclosed as follows:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2399
- #, no-wrap
- msgid "$(@var{command})\n"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2404
- #, no-wrap
- msgid "`@var{command}`\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2414
- msgid ""
- "Bash performs the expansion by executing @var{command} in a subshell "
- "environment and replacing the command substitution with the standard output "
- "of the command, with any trailing newlines deleted. Embedded newlines are "
- "not deleted, but they may be removed during word splitting. The command "
- "substitution @code{$(cat @var{file})} can be replaced by the equivalent but "
- "faster @code{$(< @var{file})}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2422
- msgid ""
- "When the old-style backquote form of substitution is used, backslash retains "
- "its literal meaning except when followed by @samp{$}, @samp{`}, or "
- "@samp{\\}. The first backquote not preceded by a backslash terminates the "
- "command substitution. When using the @code{$(@var{command})} form, all "
- "characters between the parentheses make up the command; none are treated "
- "specially."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2425
- msgid ""
- "Command substitutions may be nested. To nest when using the backquoted "
- "form, escape the inner backquotes with backslashes."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2428
- msgid ""
- "If the substitution appears within double quotes, word splitting and "
- "filename expansion are not performed on the results."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:2431
- #, no-wrap
- msgid "expansion, arithmetic"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2436
- msgid ""
- "Arithmetic expansion allows the evaluation of an arithmetic expression and "
- "the substitution of the result. The format for arithmetic expansion is:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2439
- #, no-wrap
- msgid "$(( @var{expression} ))\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2447
- msgid ""
- "The expression is treated as if it were within double quotes, but a double "
- "quote inside the parentheses is not treated specially. All tokens in the "
- "expression undergo parameter and variable expansion, command substitution, "
- "and quote removal. The result is treated as the arithmetic expression to be "
- "evaluated. Arithmetic expansions may be nested."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2452
- msgid ""
- "The evaluation is performed according to the rules listed below "
- "(@pxref{Shell Arithmetic}). If the expression is invalid, Bash prints a "
- "message indicating failure to the standard error and no substitution occurs."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:2455
- #, no-wrap
- msgid "process substitution"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2460
- msgid ""
- "Process substitution allows a process's input or output to be referred to "
- "using a filename. It takes the form of"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2462
- #, no-wrap
- msgid "<(@var{list})\n"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2467
- #, no-wrap
- msgid ">(@var{list})\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2483
- msgid ""
- "The process @var{list} is run asynchronously, and its input or output "
- "appears as a filename. This filename is passed as an argument to the "
- "current command as the result of the expansion. If the @code{>(@var{list})} "
- "form is used, writing to the file will provide input for @var{list}. If the "
- "@code{<(@var{list})} form is used, the file passed as an argument should be "
- "read to obtain the output of @var{list}. Note that no space may appear "
- "between the @code{<} or @code{>} and the left parenthesis, otherwise the "
- "construct would be interpreted as a redirection. Process substitution is "
- "supported on systems that support named pipes (@sc{fifo}s) or the "
- "@file{/dev/fd} method of naming open files."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2487
- msgid ""
- "When available, process substitution is performed simultaneously with "
- "parameter and variable expansion, command substitution, and arithmetic "
- "expansion."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2495
- msgid ""
- "The shell scans the results of parameter expansion, command substitution, "
- "and arithmetic expansion that did not occur within double quotes for word "
- "splitting."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2515
- msgid ""
- "The shell treats each character of @env{$IFS} as a delimiter, and splits the "
- "results of the other expansions into words using these characters as field "
- "terminators. If @env{IFS} is unset, or its value is exactly "
- "@code{<space><tab><newline>}, the default, then sequences of @code{ "
- "<space>}, @code{<tab>}, and @code{<newline>} at the beginning and end of the "
- "results of the previous expansions are ignored, and any sequence of "
- "@env{IFS} characters not at the beginning or end serves to delimit words. "
- "If @env{IFS} has a value other than the default, then sequences of the "
- "whitespace characters @code{space}, @code{tab}, and @code{newline} are "
- "ignored at the beginning and end of the word, as long as the whitespace "
- "character is in the value of @env{IFS} (an @env{IFS} whitespace character). "
- "Any character in @env{IFS} that is not @env{IFS} whitespace, along with any "
- "adjacent @env{IFS} whitespace characters, delimits a field. A sequence of "
- "@env{IFS} whitespace characters is also treated as a delimiter. If the "
- "value of @env{IFS} is null, no word splitting occurs."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2528
- msgid ""
- "Explicit null arguments (@code{\"\"} or @code{''}) are retained and passed "
- "to commands as empty strings. Unquoted implicit null arguments, resulting "
- "from the expansion of parameters that have no values, are removed. If a "
- "parameter with no value is expanded within double quotes, a null argument "
- "results and is retained and passed to a command as an empty string. When a "
- "quoted null argument appears as part of a word whose expansion is non-null, "
- "the null argument is removed. That is, the word @code{-d''} becomes "
- "@code{-d} after word splitting and null argument removal."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2531
- msgid "Note that if no expansion occurs, no splitting is performed."
- msgstr ""
- #. type: subsubsection
- #: ./bashref.texi:2536 ./bashref.texi:2595 ./bashref.texi:2596
- #, no-wrap
- msgid "Pattern Matching"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:2536
- msgid "How the shell matches patterns."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:2537
- #, no-wrap
- msgid "expansion, filename"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:2538
- #, no-wrap
- msgid "expansion, pathname"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:2540
- #, no-wrap
- msgid "pathname expansion"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2558
- msgid ""
- "After word splitting, unless the @option{-f} option has been set (@pxref{The "
- "Set Builtin}), Bash scans each word for the characters @samp{*}, @samp{?}, "
- "and @samp{[}. If one of these characters appears, and is not quoted, then "
- "the word is regarded as a @var{pattern}, and replaced with an alphabetically "
- "sorted list of filenames matching the pattern (@pxref{Pattern Matching}). "
- "If no matching filenames are found, and the shell option @code{nullglob} is "
- "disabled, the word is left unchanged. If the @code{nullglob} option is set, "
- "and no matches are found, the word is removed. If the @code{failglob} shell "
- "option is set, and no matches are found, an error message is printed and the "
- "command is not executed. If the shell option @code{nocaseglob} is enabled, "
- "the match is performed without regard to the case of alphabetic characters."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2565
- msgid ""
- "When a pattern is used for filename expansion, the character @samp{.} at the "
- "start of a filename or immediately following a slash must be matched "
- "explicitly, unless the shell option @code{dotglob} is set. The filenames "
- "@samp{.} and @samp{..} must always be matched explicitly, even if "
- "@code{dotglob} is set. In other cases, the @samp{.} character is not "
- "treated specially."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2570
- msgid ""
- "When matching a filename, the slash character must always be matched "
- "explicitly by a slash in the pattern, but in other matching contexts it can "
- "be matched by a special pattern character as described below (@pxref{Pattern "
- "Matching})."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2574
- msgid ""
- "See the description of @code{shopt} in @ref{The Shopt Builtin}, for a "
- "description of the @code{nocaseglob}, @code{nullglob}, @code{failglob}, and "
- "@code{dotglob} options."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2594
- msgid ""
- "The @env{GLOBIGNORE} shell variable may be used to restrict the set of file "
- "names matching a pattern. If @env{GLOBIGNORE} is set, each matching file "
- "name that also matches one of the patterns in @env{GLOBIGNORE} is removed "
- "from the list of matches. If the @code{nocaseglob} option is set, the "
- "matching against the patterns in @env{GLOBIGNORE} is performed without "
- "regard to case. The filenames @file{.} and @file{..} are always ignored "
- "when @env{GLOBIGNORE} is set and not null. However, setting "
- "@env{GLOBIGNORE} to a non-null value has the effect of enabling the "
- "@code{dotglob} shell option, so all other filenames beginning with a "
- "@samp{.} will match. To get the old behavior of ignoring filenames "
- "beginning with a @samp{.}, make @samp{.*} one of the patterns in "
- "@env{GLOBIGNORE}. The @code{dotglob} option is disabled when "
- "@env{GLOBIGNORE} is unset."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:2597
- #, no-wrap
- msgid "pattern matching"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:2598
- #, no-wrap
- msgid "matching, pattern"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2607
- msgid ""
- "Any character that appears in a pattern, other than the special pattern "
- "characters described below, matches itself. The @sc{nul} character may not "
- "occur in a pattern. A backslash escapes the following character; the "
- "escaping backslash is discarded when matching. The special pattern "
- "characters must be quoted if they are to be matched literally."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2609
- msgid "The special pattern characters have the following meanings:"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2618
- msgid ""
- "Matches any string, including the null string. When the @code{globstar} "
- "shell option is enabled, and @samp{*} is used in a filename expansion "
- "context, two adjacent @samp{*}s used as a single pattern will match all "
- "files and zero or more directories and subdirectories. If followed by a "
- "@samp{/}, two adjacent @samp{*}s will match only directories and "
- "subdirectories."
- msgstr ""
- #. type: table
- #: ./bashref.texi:2620
- msgid "Matches any single character."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2620
- #, no-wrap
- msgid "[@dots{}]"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2634
- msgid ""
- "Matches any one of the enclosed characters. A pair of characters separated "
- "by a hyphen denotes a @var{range expression}; any character that falls "
- "between those two characters, inclusive, using the current locale's "
- "collating sequence and character set, is matched. If the first character "
- "following the @samp{[} is a @samp{!} or a @samp{^} then any character not "
- "enclosed is matched. A @samp{@minus{}} may be matched by including it as "
- "the first or last character in the set. A @samp{]} may be matched by "
- "including it as the first character in the set. The sorting order of "
- "characters in range expressions is determined by the current locale and the "
- "values of the @env{LC_COLLATE} and @env{LC_ALL} shell variables, if set."
- msgstr ""
- #. type: table
- #: ./bashref.texi:2643
- msgid ""
- "For example, in the default C locale, @samp{[a-dx-z]} is equivalent to "
- "@samp{[abcdxyz]}. Many locales sort characters in dictionary order, and in "
- "these locales @samp{[a-dx-z]} is typically not equivalent to "
- "@samp{[abcdxyz]}; it might be equivalent to @samp{[aBbCcDdxXyYz]}, for "
- "example. To obtain the traditional interpretation of ranges in bracket "
- "expressions, you can force the use of the C locale by setting the "
- "@env{LC_COLLATE} or @env{LC_ALL} environment variable to the value @samp{C}, "
- "or enable the @code{globasciiranges} shell option."
- msgstr ""
- #. type: table
- #: ./bashref.texi:2648
- msgid ""
- "Within @samp{[} and @samp{]}, @var{character classes} can be specified using "
- "the syntax @code{[:}@var{class}@code{:]}, where @var{class} is one of the "
- "following classes defined in the @sc{posix} standard:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2651
- #, no-wrap
- msgid ""
- "alnum alpha ascii blank cntrl digit graph lower\n"
- "print punct space upper word xdigit\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2656
- msgid ""
- "A character class matches any character belonging to that class. The "
- "@code{word} character class matches letters, digits, and the character "
- "@samp{_}."
- msgstr ""
- #. type: table
- #: ./bashref.texi:2661
- msgid ""
- "Within @samp{[} and @samp{]}, an @var{equivalence class} can be specified "
- "using the syntax @code{[=}@var{c}@code{=]}, which matches all characters "
- "with the same collation weight (as defined by the current locale) as the "
- "character @var{c}."
- msgstr ""
- #. type: table
- #: ./bashref.texi:2664
- msgid ""
- "Within @samp{[} and @samp{]}, the syntax @code{[.}@var{symbol}@code{.]} "
- "matches the collating symbol @var{symbol}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2672
- msgid ""
- "If the @code{extglob} shell option is enabled using the @code{shopt} "
- "builtin, several extended pattern matching operators are recognized. In the "
- "following description, a @var{pattern-list} is a list of one or more "
- "patterns separated by a @samp{|}. Composite patterns may be formed using "
- "one or more of the following sub-patterns:"
- msgstr ""
- #. type: item
- #: ./bashref.texi:2674
- #, no-wrap
- msgid "?(@var{pattern-list})"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2676
- msgid "Matches zero or one occurrence of the given patterns."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2677
- #, no-wrap
- msgid "*(@var{pattern-list})"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2679
- msgid "Matches zero or more occurrences of the given patterns."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2680
- #, no-wrap
- msgid "+(@var{pattern-list})"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2682
- msgid "Matches one or more occurrences of the given patterns."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2683
- #, no-wrap
- msgid "@@(@var{pattern-list})"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2685
- msgid "Matches one of the given patterns."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2686
- #, no-wrap
- msgid "!(@var{pattern-list})"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2688
- msgid "Matches anything except one of the given patterns."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2695
- msgid ""
- "Complicated extended pattern matching against long strings is slow, "
- "especially when the patterns contain alternations and the strings contain "
- "multiple matches. Using separate matches against shorter strings, or using "
- "arrays of strings instead of a single long string, may be faster."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2702
- msgid ""
- "After the preceding expansions, all unquoted occurrences of the characters "
- "@samp{\\}, @samp{'}, and @samp{\"} that did not result from one of the above "
- "expansions are removed."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:2705
- #, no-wrap
- msgid "redirection"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2720
- msgid ""
- "Before a command is executed, its input and output may be @var{redirected} "
- "using a special notation interpreted by the shell. Redirection allows "
- "commands' file handles to be duplicated, opened, closed, made to refer to "
- "different files, and can change the files the command reads from and writes "
- "to. Redirection may also be used to modify file handles in the current "
- "shell execution environment. The following redirection operators may "
- "precede or appear anywhere within a simple command or may follow a command. "
- "Redirections are processed in the order they appear, from left to right."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2731
- msgid ""
- "Each redirection that may be preceded by a file descriptor number may "
- "instead be preceded by a word of the form @{@var{varname}@}. In this case, "
- "for each redirection operator except >&- and <&-, the shell will allocate a "
- "file descriptor greater than 10 and assign it to @{@var{varname}@}. If >&- "
- "or <&- is preceded by @{@var{varname}@}, the value of @var{varname} defines "
- "the file descriptor to close. If @{@var{varname}@} is supplied, the "
- "redirection persists beyond the scope of the command, allowing the shell "
- "programmer to manage the file descriptor's lifetime manually."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2738
- msgid ""
- "In the following descriptions, if the file descriptor number is omitted, and "
- "the first character of the redirection operator is @samp{<}, the redirection "
- "refers to the standard input (file descriptor 0). If the first character of "
- "the redirection operator is @samp{>}, the redirection refers to the standard "
- "output (file descriptor 1)."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2744
- msgid ""
- "The word following the redirection operator in the following descriptions, "
- "unless otherwise noted, is subjected to brace expansion, tilde expansion, "
- "parameter expansion, command substitution, arithmetic expansion, quote "
- "removal, filename expansion, and word splitting. If it expands to more than "
- "one word, Bash reports an error."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2747
- msgid ""
- "Note that the order of redirections is significant. For example, the "
- "command"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2749
- #, no-wrap
- msgid "ls > @var{dirlist} 2>&1\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2753
- msgid ""
- "directs both standard output (file descriptor 1) and standard error (file "
- "descriptor 2) to the file @var{dirlist}, while the command"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2755
- #, no-wrap
- msgid "ls 2>&1 > @var{dirlist}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2760
- msgid ""
- "directs only the standard output to file @var{dirlist}, because the standard "
- "error was made a copy of the standard output before the standard output was "
- "redirected to @var{dirlist}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2766
- msgid ""
- "Bash handles several filenames specially when they are used in redirections, "
- "as described in the following table. If the operating system on which Bash "
- "is running provides these special files, bash will use them; otherwise it "
- "will emulate them internally with the behavior described below."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2768
- #, no-wrap
- msgid "/dev/fd/@var{fd}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2770
- msgid "If @var{fd} is a valid integer, file descriptor @var{fd} is duplicated."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2771
- #, no-wrap
- msgid "/dev/stdin"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2773
- msgid "File descriptor 0 is duplicated."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2774
- #, no-wrap
- msgid "/dev/stdout"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2776
- msgid "File descriptor 1 is duplicated."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2777
- #, no-wrap
- msgid "/dev/stderr"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2779
- msgid "File descriptor 2 is duplicated."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2780
- #, no-wrap
- msgid "/dev/tcp/@var{host}/@var{port}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2784
- msgid ""
- "If @var{host} is a valid hostname or Internet address, and @var{port} is an "
- "integer port number or service name, Bash attempts to open the corresponding "
- "TCP socket."
- msgstr ""
- #. type: item
- #: ./bashref.texi:2785
- #, no-wrap
- msgid "/dev/udp/@var{host}/@var{port}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:2789
- msgid ""
- "If @var{host} is a valid hostname or Internet address, and @var{port} is an "
- "integer port number or service name, Bash attempts to open the corresponding "
- "UDP socket."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2792
- msgid "A failure to open or create a file causes the redirection to fail."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2796
- msgid ""
- "Redirections using file descriptors greater than 9 should be used with care, "
- "as they may conflict with file descriptors the shell uses internally."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:2797
- #, no-wrap
- msgid "Redirecting Input"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2803
- msgid ""
- "Redirection of input causes the file whose name results from the expansion "
- "of @var{word} to be opened for reading on file descriptor @code{n}, or the "
- "standard input (file descriptor 0) if @code{n} is not specified."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2805
- msgid "The general format for redirecting input is:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2807
- #, no-wrap
- msgid "[@var{n}]<@var{word}\n"
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:2809
- #, no-wrap
- msgid "Redirecting Output"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2816
- msgid ""
- "Redirection of output causes the file whose name results from the expansion "
- "of @var{word} to be opened for writing on file descriptor @var{n}, or the "
- "standard output (file descriptor 1) if @var{n} is not specified. If the "
- "file does not exist it is created; if it does exist it is truncated to zero "
- "size."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2818
- msgid "The general format for redirecting output is:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2820
- #, no-wrap
- msgid "[@var{n}]>[|]@var{word}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2829
- msgid ""
- "If the redirection operator is @samp{>}, and the @code{noclobber} option to "
- "the @code{set} builtin has been enabled, the redirection will fail if the "
- "file whose name results from the expansion of @var{word} exists and is a "
- "regular file. If the redirection operator is @samp{>|}, or the redirection "
- "operator is @samp{>} and the @code{noclobber} option is not enabled, the "
- "redirection is attempted even if the file named by @var{word} exists."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:2830
- #, no-wrap
- msgid "Appending Redirected Output"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2837
- msgid ""
- "Redirection of output in this fashion causes the file whose name results "
- "from the expansion of @var{word} to be opened for appending on file "
- "descriptor @var{n}, or the standard output (file descriptor 1) if @var{n} is "
- "not specified. If the file does not exist it is created."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2839
- msgid "The general format for appending output is:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2841
- #, no-wrap
- msgid "[@var{n}]>>@var{word}\n"
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:2843
- #, no-wrap
- msgid "Redirecting Standard Output and Standard Error"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2849
- msgid ""
- "This construct allows both the standard output (file descriptor 1) and the "
- "standard error output (file descriptor 2) to be redirected to the file "
- "whose name is the expansion of @var{word}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2852
- msgid "There are two formats for redirecting standard output and standard error:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2854
- #, no-wrap
- msgid "&>@var{word}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2857
- msgid "and"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2859
- #, no-wrap
- msgid ">&@var{word}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2863
- msgid ""
- "Of the two forms, the first is preferred. This is semantically equivalent "
- "to"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2865
- #, no-wrap
- msgid ">@var{word} 2>&1\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2869
- msgid ""
- "When using the second form, @var{word} may not expand to a number or "
- "@samp{-}. If it does, other redirection operators apply (see Duplicating "
- "File Descriptors below) for compatibility reasons."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:2870
- #, no-wrap
- msgid "Appending Standard Output and Standard Error"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2876
- msgid ""
- "This construct allows both the standard output (file descriptor 1) and the "
- "standard error output (file descriptor 2) to be appended to the file whose "
- "name is the expansion of @var{word}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2878
- msgid "The format for appending standard output and standard error is:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2880
- #, no-wrap
- msgid "&>>@var{word}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2883
- msgid "This is semantically equivalent to"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2885
- #, no-wrap
- msgid ">>@var{word} 2>&1\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2887
- msgid "(see Duplicating File Descriptors below)."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:2888
- #, no-wrap
- msgid "Here Documents"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2894
- msgid ""
- "This type of redirection instructs the shell to read input from the current "
- "source until a line containing only @var{word} (with no trailing blanks) is "
- "seen. All of the lines read up to that point are then used as the standard "
- "input (or file descriptor @var{n} if @var{n} is specified) for a command."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2896
- msgid "The format of here-documents is:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2900
- #, no-wrap
- msgid ""
- "[@var{n}]<<[@minus{}]@var{word}\n"
- " @var{here-document}\n"
- "@var{delimiter}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2913
- msgid ""
- "No parameter and variable expansion, command substitution, arithmetic "
- "expansion, or filename expansion is performed on @var{word}. If any part of "
- "@var{word} is quoted, the @var{delimiter} is the result of quote removal on "
- "@var{word}, and the lines in the here-document are not expanded. If "
- "@var{word} is unquoted, all lines of the here-document are subjected to "
- "parameter expansion, command substitution, and arithmetic expansion, the "
- "character sequence @code{\\newline} is ignored, and @samp{\\} must be used "
- "to quote the characters @samp{\\}, @samp{$}, and @samp{`}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2919
- msgid ""
- "If the redirection operator is @samp{<<-}, then all leading tab characters "
- "are stripped from input lines and the line containing @var{delimiter}. This "
- "allows here-documents within shell scripts to be indented in a natural "
- "fashion."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:2920
- #, no-wrap
- msgid "Here Strings"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2922
- msgid "A variant of here documents, the format is:"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2924
- #, no-wrap
- msgid "[@var{n}]<<< @var{word}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2934
- msgid ""
- "The @var{word} undergoes tilde expansion, parameter and variable expansion, "
- "command substitution, arithmetic expansion, and quote removal. Filename "
- "expansion and word splitting are not performed. The result is supplied as a "
- "single string, with a newline appended, to the command on its standard input "
- "(or file descriptor @var{n} if @var{n} is specified)."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:2935
- #, no-wrap
- msgid "Duplicating File Descriptors"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2937 ./bashref.texi:2968 ./bashref.texi:2986
- msgid "The redirection operator"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2939
- #, no-wrap
- msgid "[@var{n}]<&@var{word}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2950
- msgid ""
- "is used to duplicate input file descriptors. If @var{word} expands to one "
- "or more digits, the file descriptor denoted by @var{n} is made to be a copy "
- "of that file descriptor. If the digits in @var{word} do not specify a file "
- "descriptor open for input, a redirection error occurs. If @var{word} "
- "evaluates to @samp{-}, file descriptor @var{n} is closed. If @var{n} is not "
- "specified, the standard input (file descriptor 0) is used."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2952
- msgid "The operator"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2954
- #, no-wrap
- msgid "[@var{n}]>&@var{word}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2965
- msgid ""
- "is used similarly to duplicate output file descriptors. If @var{n} is not "
- "specified, the standard output (file descriptor 1) is used. If the digits "
- "in @var{word} do not specify a file descriptor open for output, a "
- "redirection error occurs. If @var{word} evaluates to @samp{-}, file "
- "descriptor @var{n} is closed. As a special case, if @var{n} is omitted, and "
- "@var{word} does not expand to one or more digits or @samp{-}, the standard "
- "output and standard error are redirected as described previously."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:2966
- #, no-wrap
- msgid "Moving File Descriptors"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2970
- #, no-wrap
- msgid "[@var{n}]<&@var{digit}-\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2975
- msgid ""
- "moves the file descriptor @var{digit} to file descriptor @var{n}, or the "
- "standard input (file descriptor 0) if @var{n} is not specified. @var{digit} "
- "is closed after being duplicated to @var{n}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2977
- msgid "Similarly, the redirection operator"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2979
- #, no-wrap
- msgid "[@var{n}]>&@var{digit}-\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2983
- msgid ""
- "moves the file descriptor @var{digit} to file descriptor @var{n}, or the "
- "standard output (file descriptor 1) if @var{n} is not specified."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:2984
- #, no-wrap
- msgid "Opening File Descriptors for Reading and Writing"
- msgstr ""
- #. type: example
- #: ./bashref.texi:2988
- #, no-wrap
- msgid "[@var{n}]<>@var{word}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:2994
- msgid ""
- "causes the file whose name is the expansion of @var{word} to be opened for "
- "both reading and writing on file descriptor @var{n}, or on file descriptor 0 "
- "if @var{n} is not specified. If the file does not exist, it is created."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:3010 ./bashref.texi:3012 ./bashref.texi:3013
- #, no-wrap
- msgid "Simple Command Expansion"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:3010
- msgid "How Bash expands simple commands before executing them."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:3010 ./bashref.texi:3058 ./bashref.texi:3059
- #, no-wrap
- msgid "Command Search and Execution"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:3010
- msgid "How Bash finds commands and runs them."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:3010 ./bashref.texi:3115 ./bashref.texi:3116
- #, no-wrap
- msgid "Command Execution Environment"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:3010
- msgid "The environment in which Bash executes commands that are not shell builtins."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:3010 ./bashref.texi:3211 ./bashref.texi:3212
- #, no-wrap
- msgid "Environment"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:3010
- msgid "The environment given to a command."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:3010 ./bashref.texi:3249 ./bashref.texi:3250
- #, no-wrap
- msgid "Exit Status"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:3010
- msgid "The status returned by commands and how Bash interprets it."
- msgstr ""
- #. type: subsection
- #: ./bashref.texi:3010 ./bashref.texi:3287 ./bashref.texi:3288
- #, no-wrap
- msgid "Signals"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:3010
- msgid "What happens when Bash or a command it runs receives a signal."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:3014
- #, no-wrap
- msgid "command expansion"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3019
- msgid ""
- "When a simple command is executed, the shell performs the following "
- "expansions, assignments, and redirections, from left to right, in the "
- "following order."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3025
- msgid ""
- "The words that the parser has marked as variable assignments (those "
- "preceding the command name) and redirections are saved for later processing."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3032
- msgid ""
- "The words that are not variable assignments or redirections are expanded "
- "(@pxref{Shell Expansions}). If any words remain after expansion, the first "
- "word is taken to be the name of the command and the remaining words are the "
- "arguments."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3035
- msgid "Redirections are performed as described above (@pxref{Redirections})."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3040
- msgid ""
- "The text after the @samp{=} in each variable assignment undergoes tilde "
- "expansion, parameter expansion, command substitution, arithmetic expansion, "
- "and quote removal before being assigned to the variable."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3047
- msgid ""
- "If no command name results, the variable assignments affect the current "
- "shell environment. Otherwise, the variables are added to the environment of "
- "the executed command and do not affect the current shell environment. If "
- "any of the assignments attempts to assign a value to a readonly variable, an "
- "error occurs, and the command exits with a non-zero status."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3051
- msgid ""
- "If no command name results, redirections are performed, but do not affect "
- "the current shell environment. A redirection error causes the command to "
- "exit with a non-zero status."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3057
- msgid ""
- "If there is a command name left after expansion, execution proceeds as "
- "described below. Otherwise, the command exits. If one of the expansions "
- "contained a command substitution, the exit status of the command is the exit "
- "status of the last command substitution performed. If there were no command "
- "substitutions, the command exits with a status of zero."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:3060
- #, no-wrap
- msgid "command execution"
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:3061
- #, no-wrap
- msgid "command search"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3066
- msgid ""
- "After a command has been split into words, if it results in a simple command "
- "and an optional list of arguments, the following actions are taken."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3072
- msgid ""
- "If the command name contains no slashes, the shell attempts to locate it. "
- "If there exists a shell function by that name, that function is invoked as "
- "described in @ref{Shell Functions}."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3077
- msgid ""
- "If the name does not match a function, the shell searches for it in the list "
- "of shell builtins. If a match is found, that builtin is invoked."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3095
- msgid ""
- "If the name is neither a shell function nor a builtin, and contains no "
- "slashes, Bash searches each element of @env{$PATH} for a directory "
- "containing an executable file by that name. Bash uses a hash table to "
- "remember the full pathnames of executable files to avoid multiple @env{PATH} "
- "searches (see the description of @code{hash} in @ref{Bourne Shell "
- "Builtins}). A full search of the directories in @env{$PATH} is performed "
- "only if the command is not found in the hash table. If the search is "
- "unsuccessful, the shell searches for a defined shell function named "
- "@code{command_not_found_handle}. If that function exists, it is invoked in "
- "a separate execution environment with the original command and the original "
- "command's arguments as its arguments, and the function's exit status becomes "
- "the exit status of that subshell. If that function is not defined, the "
- "shell prints an error message and returns an exit status of 127."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3102
- msgid ""
- "If the search is successful, or if the command name contains one or more "
- "slashes, the shell executes the named program in a separate execution "
- "environment. Argument 0 is set to the name given, and the remaining "
- "arguments to the command are set to the arguments supplied, if any."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3108
- msgid ""
- "If this execution fails because the file is not in executable format, and "
- "the file is not a directory, it is assumed to be a @var{shell script} and "
- "the shell executes it as described in @ref{Shell Scripts}."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3112
- msgid ""
- "If the command was not begun asynchronously, the shell waits for the command "
- "to complete and collects its exit status."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:3117
- #, no-wrap
- msgid "execution environment"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3121
- msgid ""
- "The shell has an @var{execution environment}, which consists of the "
- "following:"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3126
- msgid ""
- "open files inherited by the shell at invocation, as modified by redirections "
- "supplied to the @code{exec} builtin"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3130
- msgid ""
- "the current working directory as set by @code{cd}, @code{pushd}, or "
- "@code{popd}, or inherited by the shell at invocation"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3134
- msgid ""
- "the file creation mode mask as set by @code{umask} or inherited from the "
- "shell's parent"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3137
- msgid "current traps set by @code{trap}"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3141
- msgid ""
- "shell parameters that are set by variable assignment or with @code{set} or "
- "inherited from the shell's parent in the environment"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3145
- msgid ""
- "shell functions defined during execution or inherited from the shell's "
- "parent in the environment"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3149
- msgid ""
- "options enabled at invocation (either by default or with command-line "
- "arguments) or by @code{set}"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3152
- msgid "options enabled by @code{shopt} (@pxref{The Shopt Builtin})"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3155
- msgid "shell aliases defined with @code{alias} (@pxref{Aliases})"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3160
- msgid ""
- "various process @sc{id}s, including those of background jobs "
- "(@pxref{Lists}), the value of @code{$$}, and the value of @env{$PPID}"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3168
- msgid ""
- "When a simple command other than a builtin or shell function is to be "
- "executed, it is invoked in a separate execution environment that consists of "
- "the following. Unless otherwise noted, the values are inherited from the "
- "shell."
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3173
- msgid ""
- "the shell's open files, plus any modifications and additions specified by "
- "redirections to the command"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3176
- msgid "the current working directory"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3179
- msgid "the file creation mode mask"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3183
- msgid ""
- "shell variables and functions marked for export, along with variables "
- "exported for the command, passed in the environment (@pxref{Environment})"
- msgstr ""
- #. type: itemize
- #: ./bashref.texi:3187
- msgid ""
- "traps caught by the shell are reset to the values inherited from the shell's "
- "parent, and traps ignored by the shell are ignored"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3192
- msgid ""
- "A command invoked in this separate environment cannot affect the shell's "
- "execution environment."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3201
- msgid ""
- "Command substitution, commands grouped with parentheses, and asynchronous "
- "commands are invoked in a subshell environment that is a duplicate of the "
- "shell environment, except that traps caught by the shell are reset to the "
- "values that the shell inherited from its parent at invocation. Builtin "
- "commands that are invoked as part of a pipeline are also executed in a "
- "subshell environment. Changes made to the subshell environment cannot "
- "affect the shell's execution environment."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3205
- msgid ""
- "Subshells spawned to execute command substitutions inherit the value of the "
- "@option{-e} option from the parent shell. When not in @sc{posix} mode, Bash "
- "clears the @option{-e} option in such subshells."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3210
- msgid ""
- "If a command is followed by a @samp{&} and job control is not active, the "
- "default standard input for the command is the empty file @file{/dev/null}. "
- "Otherwise, the invoked command inherits the file descriptors of the calling "
- "shell as modified by redirections."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:3213
- #, no-wrap
- msgid "environment"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3218
- msgid ""
- "When a program is invoked it is given an array of strings called the "
- "@var{environment}. This is a list of name-value pairs, of the form "
- "@code{name=value}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3234
- msgid ""
- "Bash provides several ways to manipulate the environment. On invocation, "
- "the shell scans its own environment and creates a parameter for each name "
- "found, automatically marking it for @var{export} to child processes. "
- "Executed commands inherit the environment. The @code{export} and "
- "@samp{declare -x} commands allow parameters and functions to be added to and "
- "deleted from the environment. If the value of a parameter in the "
- "environment is modified, the new value becomes part of the environment, "
- "replacing the old. The environment inherited by any executed command "
- "consists of the shell's initial environment, whose values may be modified in "
- "the shell, less any pairs removed by the @code{unset} and @samp{export -n} "
- "commands, plus any additions via the @code{export} and @samp{declare -x} "
- "commands."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3240
- msgid ""
- "The environment for any simple command or function may be augmented "
- "temporarily by prefixing it with parameter assignments, as described in "
- "@ref{Shell Parameters}. These assignment statements affect only the "
- "environment seen by that command."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3244
- msgid ""
- "If the @option{-k} option is set (@pxref{The Set Builtin}), then all "
- "parameter assignments are placed in the environment for a command, not just "
- "those that precede the command name."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3248
- msgid ""
- "When Bash invokes an external command, the variable @samp{$_} is set to the "
- "full pathname of the command and passed to that command in its environment."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3260
- msgid ""
- "The exit status of an executed command is the value returned by the "
- "@var{waitpid} system call or equivalent function. Exit statuses fall "
- "between 0 and 255, though, as explained below, the shell may use values "
- "above 125 specially. Exit statuses from shell builtins and compound "
- "commands are also limited to this range. Under certain circumstances, the "
- "shell will use special values to indicate specific failure modes."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3269
- msgid ""
- "For the shell's purposes, a command which exits with a zero exit status has "
- "succeeded. A non-zero exit status indicates failure. This seemingly "
- "counter-intuitive scheme is used so there is one well-defined way to "
- "indicate success and a variety of ways to indicate various failure modes. "
- "When a command terminates on a fatal signal whose number is @var{N}, Bash "
- "uses the value 128+@var{N} as the exit status."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3273
- msgid ""
- "If a command is not found, the child process created to execute it returns a "
- "status of 127. If a command is found but is not executable, the return "
- "status is 126."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3276
- msgid ""
- "If a command fails because of an error during expansion or redirection, the "
- "exit status is greater than zero."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3280
- msgid ""
- "The exit status is used by the Bash conditional commands (@pxref{Conditional "
- "Constructs}) and some of the list constructs (@pxref{Lists})."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3286
- msgid ""
- "All of the Bash builtins return an exit status of zero if they succeed and a "
- "non-zero status on failure, so they may be used by the conditional and list "
- "constructs. All builtins return an exit status of 2 to indicate incorrect "
- "usage, generally invalid options or missing arguments."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:3289
- #, no-wrap
- msgid "signal handling"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3299
- msgid ""
- "When Bash is interactive, in the absence of any traps, it ignores "
- "@code{SIGTERM} (so that @samp{kill 0} does not kill an interactive shell), "
- "and @code{SIGINT} is caught and handled (so that the @code{wait} builtin is "
- "interruptible). When Bash receives a @code{SIGINT}, it breaks out of any "
- "executing loops. In all cases, Bash ignores @code{SIGQUIT}. If job control "
- "is in effect (@pxref{Job Control}), Bash ignores @code{SIGTTIN}, "
- "@code{SIGTTOU}, and @code{SIGTSTP}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3308
- msgid ""
- "Non-builtin commands started by Bash have signal handlers set to the values "
- "inherited by the shell from its parent. When job control is not in effect, "
- "asynchronous commands ignore @code{SIGINT} and @code{SIGQUIT} in addition to "
- "these inherited handlers. Commands run as a result of command substitution "
- "ignore the keyboard-generated job control signals @code{SIGTTIN}, "
- "@code{SIGTTOU}, and @code{SIGTSTP}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3319
- msgid ""
- "The shell exits by default upon receipt of a @code{SIGHUP}. Before exiting, "
- "an interactive shell resends the @code{SIGHUP} to all jobs, running or "
- "stopped. Stopped jobs are sent @code{SIGCONT} to ensure that they receive "
- "the @code{SIGHUP}. To prevent the shell from sending the @code{SIGHUP} "
- "signal to a particular job, it should be removed from the jobs table with "
- "the @code{disown} builtin (@pxref{Job Control Builtins}) or marked to not "
- "receive @code{SIGHUP} using @code{disown -h}."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3323
- msgid ""
- "If the @code{huponexit} shell option has been set with @code{shopt} "
- "(@pxref{The Shopt Builtin}), Bash sends a @code{SIGHUP} to all jobs when an "
- "interactive login shell exits."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3332
- msgid ""
- "If Bash is waiting for a command to complete and receives a signal for which "
- "a trap has been set, the trap will not be executed until the command "
- "completes. When Bash is waiting for an asynchronous command via the "
- "@code{wait} builtin, the reception of a signal for which a trap has been set "
- "will cause the @code{wait} builtin to return immediately with an exit status "
- "greater than 128, immediately after which the trap is executed."
- msgstr ""
- #. type: cindex
- #: ./bashref.texi:3335
- #, no-wrap
- msgid "shell script"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3345
- msgid ""
- "A shell script is a text file containing shell commands. When such a file "
- "is used as the first non-option argument when invoking Bash, and neither the "
- "@option{-c} nor @option{-s} option is supplied (@pxref{Invoking Bash}), Bash "
- "reads and executes commands from the file, then exits. This mode of "
- "operation creates a non-interactive shell. The shell first searches for the "
- "file in the current directory, and looks in the directories in @env{$PATH} "
- "if not found there."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3352
- msgid ""
- "When Bash runs a shell script, it sets the special parameter @code{0} to the "
- "name of the file, rather than the name of the shell, and the positional "
- "parameters are set to the remaining arguments, if any are given. If no "
- "additional arguments are supplied, the positional parameters are unset."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3357
- msgid ""
- "A shell script may be made executable by using the @code{chmod} command to "
- "turn on the execute bit. When Bash finds such a file while searching the "
- "@env{$PATH} for a command, it spawns a subshell to execute it. In other "
- "words, executing"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3359
- #, no-wrap
- msgid "filename @var{arguments}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3362
- msgid "is equivalent to executing"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3364
- #, no-wrap
- msgid "bash filename @var{arguments}\n"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3373
- msgid ""
- "if @code{filename} is an executable shell script. This subshell "
- "reinitializes itself, so that the effect is as if a new shell had been "
- "invoked to interpret the script, with the exception that the locations of "
- "commands remembered by the parent (see the description of @code{hash} in "
- "@ref{Bourne Shell Builtins}) are retained by the child."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3381
- msgid ""
- "Most versions of Unix make this a part of the operating system's command "
- "execution mechanism. If the first line of a script begins with the two "
- "characters @samp{#!}, the remainder of the line specifies an interpreter for "
- "the program and, depending on the operating system, one or more optional "
- "arguments for that interpreter. Thus, you can specify Bash, @code{awk}, "
- "Perl, or some other interpreter and write the rest of the script file in "
- "that language."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3394
- msgid ""
- "The arguments to the interpreter consist of one or more optional arguments "
- "following the interpreter name on the first line of the script file, "
- "followed by the name of the script file, followed by the rest of the "
- "arguments supplied to the script. The details of how the interpreter line "
- "is split into an interpreter name and a set of arguments vary across "
- "systems. Bash will perform this action on operating systems that do not "
- "handle it themselves. Note that some older versions of Unix limit the "
- "interpreter name and a single argument to a maximum of 32 characters, so "
- "it's not portable to assume that using more than one argument will work."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3402
- msgid ""
- "Bash scripts often begin with @code{#! /bin/bash} (assuming that Bash has "
- "been installed in @file{/bin}), since this ensures that Bash will be used to "
- "interpret the script, even if it is executed under another shell. It's a "
- "common idiom to use @code{env} to find @code{bash} even if it's been "
- "installed in another directory: @code{#!/usr/bin/env bash} will find the "
- "first occurrence of @code{bash} in @env{$PATH}."
- msgstr ""
- #. type: section
- #: ./bashref.texi:3414 ./bashref.texi:3449 ./bashref.texi:3450
- #, no-wrap
- msgid "Bourne Shell Builtins"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:3414
- msgid "Builtin commands inherited from the Bourne Shell."
- msgstr ""
- #. type: node
- #: ./bashref.texi:3414 ./bashref.texi:4009
- #, no-wrap
- msgid "Bash Builtins"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:3414
- msgid "Table of builtins specific to Bash."
- msgstr ""
- #. type: section
- #: ./bashref.texi:3414 ./bashref.texi:4871 ./bashref.texi:4872
- #, no-wrap
- msgid "Modifying Shell Behavior"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:3414
- msgid "Builtins to modify shell attributes and optional behavior."
- msgstr ""
- #. type: section
- #: ./bashref.texi:3414 ./bashref.texi:5543 ./bashref.texi:5544
- #, no-wrap
- msgid "Special Builtins"
- msgstr ""
- #. type: menuentry
- #: ./bashref.texi:3414
- msgid "Builtin commands classified specially by POSIX."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3422
- msgid ""
- "Builtin commands are contained within the shell itself. When the name of a "
- "builtin command is used as the first word of a simple command (@pxref{Simple "
- "Commands}), the shell executes the command directly, without invoking "
- "another program. Builtin commands are necessary to implement functionality "
- "impossible or inconvenient to obtain with separate utilities."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3426
- msgid ""
- "This section briefly describes the builtins which Bash inherits from the "
- "Bourne Shell, as well as the builtin commands which are unique to or have "
- "been extended in Bash."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3433
- msgid ""
- "Several builtin commands are described in other chapters: builtin commands "
- "which provide the Bash interface to the job control facilities (@pxref{Job "
- "Control Builtins}), the directory stack (@pxref{Directory Stack Builtins}), "
- "the command history (@pxref{Bash History Builtins}), and the programmable "
- "completion facilities (@pxref{Programmable Completion Builtins})."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3435
- msgid "Many of the builtins have been extended by @sc{posix} or Bash."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3448
- msgid ""
- "Unless otherwise noted, each builtin command documented as accepting options "
- "preceded by @samp{-} accepts @samp{--} to signify the end of the options. "
- "The @code{:}, @code{true}, @code{false}, and @code{test}/@code{[} builtins "
- "do not accept options and do not treat @samp{--} specially. The "
- "@code{exit}, @code{logout}, @code{return}, @code{break}, @code{continue}, "
- "@code{let}, and @code{shift} builtins accept and process arguments beginning "
- "with @samp{-} without requiring @samp{--}. Other builtins that accept "
- "arguments but are not specified as accepting options interpret arguments "
- "beginning with @samp{-} as invalid options and require @samp{--} to prevent "
- "this interpretation."
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:3454
- msgid ""
- "The following shell builtin commands are inherited from the Bourne Shell. "
- "These commands are implemented as specified by the @sc{posix} standard."
- msgstr ""
- #. type: item
- #: ./bashref.texi:3456
- #, no-wrap
- msgid ": @r{(a colon)}"
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3457
- #, no-wrap
- msgid ":"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3460
- #, no-wrap
- msgid ": [@var{arguments}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3464
- msgid ""
- "Do nothing beyond expanding @var{arguments} and performing redirections. "
- "The return status is zero."
- msgstr ""
- #. type: item
- #: ./bashref.texi:3465
- #, no-wrap
- msgid ". @r{(a period)}"
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3466
- #, no-wrap
- msgid "."
- msgstr ""
- #. type: example
- #: ./bashref.texi:3469
- #, no-wrap
- msgid ". @var{filename} [@var{arguments}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3489
- msgid ""
- "Read and execute commands from the @var{filename} argument in the current "
- "shell context. If @var{filename} does not contain a slash, the @env{PATH} "
- "variable is used to find @var{filename}. When Bash is not in @sc{posix} "
- "mode, the current directory is searched if @var{filename} is not found in "
- "@env{$PATH}. If any @var{arguments} are supplied, they become the "
- "positional parameters when @var{filename} is executed. Otherwise the "
- "positional parameters are unchanged. If the @option{-T} option is enabled, "
- "@code{source} inherits any trap on @code{DEBUG}; if it is not, any "
- "@code{DEBUG} trap string is saved and restored around the call to "
- "@code{source}, and @code{source} unsets the @code{DEBUG} trap while it "
- "executes. If @option{-T} is not set, and the sourced file changes the "
- "@code{DEBUG} trap, the new value is retained when @code{source} completes. "
- "The return status is the exit status of the last command executed, or zero "
- "if no commands are executed. If @var{filename} is not found, or cannot be "
- "read, the return status is non-zero. This builtin is equivalent to "
- "@code{source}."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3490 ./bashref.texi:3491
- #, no-wrap
- msgid "break"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3494
- #, no-wrap
- msgid "break [@var{n}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3500
- msgid ""
- "Exit from a @code{for}, @code{while}, @code{until}, or @code{select} loop. "
- "If @var{n} is supplied, the @var{n}th enclosing loop is exited. @var{n} "
- "must be greater than or equal to 1. The return status is zero unless "
- "@var{n} is not greater than or equal to 1."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3501 ./bashref.texi:3502
- #, no-wrap
- msgid "cd"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3505
- #, no-wrap
- msgid "cd [-L|[-P [-e]] [-@@] [@var{directory}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3517
- msgid ""
- "Change the current working directory to @var{directory}. If @var{directory} "
- "is not supplied, the value of the @env{HOME} shell variable is used. Any "
- "additional arguments following @var{directory} are ignored. If the shell "
- "variable @env{CDPATH} exists, it is used as a search path: each directory "
- "name in @env{CDPATH} is searched for @var{directory}, with alternative "
- "directory names in @env{CDPATH} separated by a colon (@samp{:}). If "
- "@var{directory} begins with a slash, @env{CDPATH} is not used."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3521
- msgid ""
- "The @option{-P} option means to not follow symbolic links: symbolic links "
- "are resolved while @code{cd} is traversing @var{directory} and before "
- "processing an instance of @samp{..} in @var{directory}."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3525
- msgid ""
- "By default, or when the @option{-L} option is supplied, symbolic links in "
- "@var{directory} are resolved after @code{cd} processes an instance of "
- "@samp{..} in @var{directory}."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3529
- msgid ""
- "If @samp{..} appears in @var{directory}, it is processed by removing the "
- "immediately preceding pathname component, back to a slash or the beginning "
- "of @var{directory}."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3534
- msgid ""
- "If the @option{-e} option is supplied with @option{-P} and the current "
- "working directory cannot be successfully determined after a successful "
- "directory change, @code{cd} will return an unsuccessful status."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3537
- msgid ""
- "On systems that support it, the @option{-@@} option presents the extended "
- "attributes associated with a file as a directory."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3540
- msgid ""
- "If @var{directory} is @samp{-}, it is converted to @env{$OLDPWD} before the "
- "directory change is attempted."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3545
- msgid ""
- "If a non-empty directory name from @env{CDPATH} is used, or if @samp{-} is "
- "the first argument, and the directory change is successful, the absolute "
- "pathname of the new working directory is written to the standard output."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3548
- msgid ""
- "The return status is zero if the directory is successfully changed, non-zero "
- "otherwise."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3549 ./bashref.texi:3550
- #, no-wrap
- msgid "continue"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3553
- #, no-wrap
- msgid "continue [@var{n}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3561
- msgid ""
- "Resume the next iteration of an enclosing @code{for}, @code{while}, "
- "@code{until}, or @code{select} loop. If @var{n} is supplied, the execution "
- "of the @var{n}th enclosing loop is resumed. @var{n} must be greater than or "
- "equal to 1. The return status is zero unless @var{n} is not greater than or "
- "equal to 1."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3562 ./bashref.texi:3563
- #, no-wrap
- msgid "eval"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3566
- #, no-wrap
- msgid "eval [@var{arguments}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3573
- msgid ""
- "The arguments are concatenated together into a single command, which is then "
- "read and executed, and its exit status returned as the exit status of "
- "@code{eval}. If there are no arguments or only empty arguments, the return "
- "status is zero."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3574 ./bashref.texi:3575
- #, no-wrap
- msgid "exec"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3578
- #, no-wrap
- msgid "exec [-cl] [-a @var{name}] [@var{command} [@var{arguments}]]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3598
- msgid ""
- "If @var{command} is supplied, it replaces the shell without creating a new "
- "process. If the @option{-l} option is supplied, the shell places a dash at "
- "the beginning of the zeroth argument passed to @var{command}. This is what "
- "the @code{login} program does. The @option{-c} option causes @var{command} "
- "to be executed with an empty environment. If @option{-a} is supplied, the "
- "shell passes @var{name} as the zeroth argument to @var{command}. If "
- "@var{command} cannot be executed for some reason, a non-interactive shell "
- "exits, unless the @code{execfail} shell option is enabled. In that case, it "
- "returns failure. An interactive shell returns failure if the file cannot be "
- "executed. A subshell exits unconditionally if @code{exec} fails. If no "
- "@var{command} is specified, redirections may be used to affect the current "
- "shell environment. If there are no redirection errors, the return status is "
- "zero; otherwise the return status is non-zero."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3599 ./bashref.texi:3600
- #, no-wrap
- msgid "exit"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3603
- #, no-wrap
- msgid "exit [@var{n}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3608
- msgid ""
- "Exit the shell, returning a status of @var{n} to the shell's parent. If "
- "@var{n} is omitted, the exit status is that of the last command executed. "
- "Any trap on @code{EXIT} is executed before the shell terminates."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3609 ./bashref.texi:3610
- #, no-wrap
- msgid "export"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3613
- #, no-wrap
- msgid "export [-fn] [-p] [@var{name}[=@var{value}]]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3624
- msgid ""
- "Mark each @var{name} to be passed to child processes in the environment. If "
- "the @option{-f} option is supplied, the @var{name}s refer to shell "
- "functions; otherwise the names refer to shell variables. The @option{-n} "
- "option means to no longer mark each @var{name} for export. If no "
- "@var{names} are supplied, or if the @option{-p} option is given, a list of "
- "names of all exported variables is displayed. The @option{-p} option "
- "displays output in a form that may be reused as input. If a variable name "
- "is followed by =@var{value}, the value of the variable is set to "
- "@var{value}."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3628
- msgid ""
- "The return status is zero unless an invalid option is supplied, one of the "
- "names is not a valid shell variable name, or @option{-f} is supplied with a "
- "name that is not a shell function."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3629 ./bashref.texi:3630
- #, no-wrap
- msgid "getopts"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3633
- #, no-wrap
- msgid "getopts @var{optstring} @var{name} [@var{arg} @dots{}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3653
- msgid ""
- "@code{getopts} is used by shell scripts to parse positional parameters. "
- "@var{optstring} contains the option characters to be recognized; if a "
- "character is followed by a colon, the option is expected to have an "
- "argument, which should be separated from it by whitespace. The colon "
- "(@samp{:}) and question mark (@samp{?}) may not be used as option "
- "characters. Each time it is invoked, @code{getopts} places the next option "
- "in the shell variable @var{name}, initializing @var{name} if it does not "
- "exist, and the index of the next argument to be processed into the variable "
- "@env{OPTIND}. @env{OPTIND} is initialized to 1 each time the shell or a "
- "shell script is invoked. When an option requires an argument, "
- "@code{getopts} places that argument into the variable @env{OPTARG}. The "
- "shell does not reset @env{OPTIND} automatically; it must be manually reset "
- "between multiple calls to @code{getopts} within the same shell invocation if "
- "a new set of parameters is to be used."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3658
- msgid ""
- "When the end of options is encountered, @code{getopts} exits with a return "
- "value greater than zero. @env{OPTIND} is set to the index of the first "
- "non-option argument, and @var{name} is set to @samp{?}."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3662
- msgid ""
- "@code{getopts} normally parses the positional parameters, but if more "
- "arguments are supplied as @var{arg} values, @code{getopts} parses those "
- "instead."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3671
- msgid ""
- "@code{getopts} can report errors in two ways. If the first character of "
- "@var{optstring} is a colon, @var{silent} error reporting is used. In normal "
- "operation, diagnostic messages are printed when invalid options or missing "
- "option arguments are encountered. If the variable @env{OPTERR} is set to 0, "
- "no error messages will be displayed, even if the first character of "
- "@code{optstring} is not a colon."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3677
- msgid ""
- "If an invalid option is seen, @code{getopts} places @samp{?} into @var{name} "
- "and, if not silent, prints an error message and unsets @env{OPTARG}. If "
- "@code{getopts} is silent, the option character found is placed in "
- "@env{OPTARG} and no diagnostic message is printed."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3683
- msgid ""
- "If a required argument is not found, and @code{getopts} is not silent, a "
- "question mark (@samp{?}) is placed in @var{name}, @code{OPTARG} is unset, "
- "and a diagnostic message is printed. If @code{getopts} is silent, then a "
- "colon (@samp{:}) is placed in @var{name} and @env{OPTARG} is set to the "
- "option character found."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3684 ./bashref.texi:3685
- #, no-wrap
- msgid "hash"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3688
- #, no-wrap
- msgid "hash [-r] [-p @var{filename}] [-dt] [@var{name}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3711
- msgid ""
- "Each time @code{hash} is invoked, it remembers the full pathnames of the "
- "commands specified as @var{name} arguments, so they need not be searched for "
- "on subsequent invocations. The commands are found by searching through the "
- "directories listed in @env{$PATH}. Any previously-remembered pathname is "
- "discarded. The @option{-p} option inhibits the path search, and "
- "@var{filename} is used as the location of @var{name}. The @option{-r} "
- "option causes the shell to forget all remembered locations. The @option{-d} "
- "option causes the shell to forget the remembered location of each "
- "@var{name}. If the @option{-t} option is supplied, the full pathname to "
- "which each @var{name} corresponds is printed. If multiple @var{name} "
- "arguments are supplied with @option{-t}, the @var{name} is printed before "
- "the hashed full pathname. The @option{-l} option causes output to be "
- "displayed in a format that may be reused as input. If no arguments are "
- "given, or if only @option{-l} is supplied, information about remembered "
- "commands is printed. The return status is zero unless a @var{name} is not "
- "found or an invalid option is supplied."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3712 ./bashref.texi:3713
- #, no-wrap
- msgid "pwd"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3716
- #, no-wrap
- msgid "pwd [-LP]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3726
- msgid ""
- "Print the absolute pathname of the current working directory. If the "
- "@option{-P} option is supplied, the pathname printed will not contain "
- "symbolic links. If the @option{-L} option is supplied, the pathname printed "
- "may contain symbolic links. The return status is zero unless an error is "
- "encountered while determining the name of the current directory or an "
- "invalid option is supplied."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3727 ./bashref.texi:3728
- #, no-wrap
- msgid "readonly"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3731
- #, no-wrap
- msgid "readonly [-aAf] [-p] [@var{name}[=@var{value}]] @dots{}\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3752
- msgid ""
- "Mark each @var{name} as readonly. The values of these names may not be "
- "changed by subsequent assignment. If the @option{-f} option is supplied, "
- "each @var{name} refers to a shell function. The @option{-a} option means "
- "each @var{name} refers to an indexed array variable; the @option{-A} option "
- "means each @var{name} refers to an associative array variable. If both "
- "options are supplied, @option{-A} takes precedence. If no @var{name} "
- "arguments are given, or if the @option{-p} option is supplied, a list of all "
- "readonly names is printed. The other options may be used to restrict the "
- "output to a subset of the set of readonly names. The @option{-p} option "
- "causes output to be displayed in a format that may be reused as input. If a "
- "variable name is followed by =@var{value}, the value of the variable is set "
- "to @var{value}. The return status is zero unless an invalid option is "
- "supplied, one of the @var{name} arguments is not a valid shell variable or "
- "function name, or the @option{-f} option is supplied with a name that is not "
- "a shell function."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3753 ./bashref.texi:3754
- #, no-wrap
- msgid "return"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3757
- #, no-wrap
- msgid "return [@var{n}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3780
- msgid ""
- "Cause a shell function to stop executing and return the value @var{n} to its "
- "caller. If @var{n} is not supplied, the return value is the exit status of "
- "the last command executed in the function. If @code{return} is executed by "
- "a trap handler, the last command used to determine the status is the last "
- "command executed before the trap handler. If @code{return} is executed "
- "during a @code{DEBUG} trap, the last command used to determine the status is "
- "the last command executed by the trap handler before @code{return} was "
- "invoked. @code{return} may also be used to terminate execution of a script "
- "being executed with the @code{.} (@code{source}) builtin, returning either "
- "@var{n} or the exit status of the last command executed within the script as "
- "the exit status of the script. If @var{n} is supplied, the return value is "
- "its least significant 8 bits. Any command associated with the @code{RETURN} "
- "trap is executed before execution resumes after the function or script. The "
- "return status is non-zero if @code{return} is supplied a non-numeric "
- "argument or is used outside a function and not during the execution of a "
- "script by @code{.} or @code{source}."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3781 ./bashref.texi:3782
- #, no-wrap
- msgid "shift"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3785
- #, no-wrap
- msgid "shift [@var{n}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3798
- msgid ""
- "Shift the positional parameters to the left by @var{n}. The positional "
- "parameters from @var{n}+1 @dots{} @code{$#} are renamed to @code{$1} @dots{} "
- "@code{$#}-@var{n}. Parameters represented by the numbers @code{$#} down to "
- "@code{$#}-@var{n}+1 are unset. @var{n} must be a non-negative number less "
- "than or equal to @code{$#}. If @var{n} is zero or greater than @code{$#}, "
- "the positional parameters are not changed. If @var{n} is not supplied, it "
- "is assumed to be 1. The return status is zero unless @var{n} is greater "
- "than @code{$#} or less than zero, non-zero otherwise."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3799 ./bashref.texi:3801
- #, no-wrap
- msgid "test"
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3800 ./bashref.texi:3802
- #, no-wrap
- msgid "["
- msgstr ""
- #. type: example
- #: ./bashref.texi:3805
- #, no-wrap
- msgid "test @var{expr}\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3814
- msgid ""
- "Evaluate a conditional expression @var{expr} and return a status of 0 (true) "
- "or 1 (false). Each operator and operand must be a separate argument. "
- "Expressions are composed of the primaries described below in @ref{Bash "
- "Conditional Expressions}. @code{test} does not accept any options, nor does "
- "it accept and ignore an argument of @option{--} as signifying the end of "
- "options."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3817
- msgid ""
- "When the @code{[} form is used, the last argument to the command must be a "
- "@code{]}."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3822
- msgid ""
- "Expressions may be combined using the following operators, listed in "
- "decreasing order of precedence. The evaluation depends on the number of "
- "arguments; see below. Operator precedence is used when there are five or "
- "more arguments."
- msgstr ""
- #. type: item
- #: ./bashref.texi:3824
- #, no-wrap
- msgid "! @var{expr}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3826
- msgid "True if @var{expr} is false."
- msgstr ""
- #. type: item
- #: ./bashref.texi:3827
- #, no-wrap
- msgid "( @var{expr} )"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3830
- msgid ""
- "Returns the value of @var{expr}. This may be used to override the normal "
- "precedence of operators."
- msgstr ""
- #. type: item
- #: ./bashref.texi:3831
- #, no-wrap
- msgid "@var{expr1} -a @var{expr2}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3833
- msgid "True if both @var{expr1} and @var{expr2} are true."
- msgstr ""
- #. type: item
- #: ./bashref.texi:3834
- #, no-wrap
- msgid "@var{expr1} -o @var{expr2}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3836
- msgid "True if either @var{expr1} or @var{expr2} is true."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3840
- msgid ""
- "The @code{test} and @code{[} builtins evaluate conditional expressions using "
- "a set of rules based on the number of arguments."
- msgstr ""
- #. type: item
- #: ./bashref.texi:3842
- #, no-wrap
- msgid "0 arguments"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3844
- msgid "The expression is false."
- msgstr ""
- #. type: item
- #: ./bashref.texi:3845
- #, no-wrap
- msgid "1 argument"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3847
- msgid "The expression is true if, and only if, the argument is not null."
- msgstr ""
- #. type: item
- #: ./bashref.texi:3848
- #, no-wrap
- msgid "2 arguments"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3856
- msgid ""
- "If the first argument is @samp{!}, the expression is true if and only if the "
- "second argument is null. If the first argument is one of the unary "
- "conditional operators (@pxref{Bash Conditional Expressions}), the expression "
- "is true if the unary test is true. If the first argument is not a valid "
- "unary operator, the expression is false."
- msgstr ""
- #. type: item
- #: ./bashref.texi:3857
- #, no-wrap
- msgid "3 arguments"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3859
- msgid "The following conditions are applied in the order listed."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3868
- msgid ""
- "If the second argument is one of the binary conditional operators "
- "(@pxref{Bash Conditional Expressions}), the result of the expression is the "
- "result of the binary test using the first and third arguments as operands. "
- "The @samp{-a} and @samp{-o} operators are considered binary operators when "
- "there are three arguments."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3871
- msgid ""
- "If the first argument is @samp{!}, the value is the negation of the "
- "two-argument test using the second and third arguments."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3875
- msgid ""
- "If the first argument is exactly @samp{(} and the third argument is exactly "
- "@samp{)}, the result is the one-argument test of the second argument."
- msgstr ""
- #. type: enumerate
- #: ./bashref.texi:3877
- msgid "Otherwise, the expression is false."
- msgstr ""
- #. type: item
- #: ./bashref.texi:3879
- #, no-wrap
- msgid "4 arguments"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3884
- msgid ""
- "If the first argument is @samp{!}, the result is the negation of the "
- "three-argument expression composed of the remaining arguments. Otherwise, "
- "the expression is parsed and evaluated according to precedence using the "
- "rules listed above."
- msgstr ""
- #. type: item
- #: ./bashref.texi:3885
- #, no-wrap
- msgid "5 or more arguments"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3888
- msgid ""
- "The expression is parsed and evaluated according to precedence using the "
- "rules listed above."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3892
- msgid ""
- "When used with @code{test} or @samp{[}, the @samp{<} and @samp{>} operators "
- "sort lexicographically using ASCII ordering."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3893 ./bashref.texi:3894
- #, no-wrap
- msgid "times"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3897
- #, no-wrap
- msgid "times\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3901
- msgid ""
- "Print out the user and system times used by the shell and its children. The "
- "return status is zero."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3902 ./bashref.texi:3903
- #, no-wrap
- msgid "trap"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3906
- #, no-wrap
- msgid "trap [-lp] [@var{arg}] [@var{sigspec} @dots{}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3925
- msgid ""
- "The commands in @var{arg} are to be read and executed when the shell "
- "receives signal @var{sigspec}. If @var{arg} is absent (and there is a "
- "single @var{sigspec}) or equal to @samp{-}, each specified signal's "
- "disposition is reset to the value it had when the shell was started. If "
- "@var{arg} is the null string, then the signal specified by each "
- "@var{sigspec} is ignored by the shell and commands it invokes. If @var{arg} "
- "is not present and @option{-p} has been supplied, the shell displays the "
- "trap commands associated with each @var{sigspec}. If no arguments are "
- "supplied, or only @option{-p} is given, @code{trap} prints the list of "
- "commands associated with each signal number in a form that may be reused as "
- "shell input. The @option{-l} option causes the shell to print a list of "
- "signal names and their corresponding numbers. Each @var{sigspec} is either "
- "a signal name or a signal number. Signal names are case insensitive and the "
- "@code{SIG} prefix is optional."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3938
- msgid ""
- "If a @var{sigspec} is @code{0} or @code{EXIT}, @var{arg} is executed when "
- "the shell exits. If a @var{sigspec} is @code{DEBUG}, the command @var{arg} "
- "is executed before every simple command, @code{for} command, @code{case} "
- "command, @code{select} command, every arithmetic @code{for} command, and "
- "before the first command executes in a shell function. Refer to the "
- "description of the @code{extdebug} option to the @code{shopt} builtin "
- "(@pxref{The Shopt Builtin}) for details of its effect on the @code{DEBUG} "
- "trap. If a @var{sigspec} is @code{RETURN}, the command @var{arg} is "
- "executed each time a shell function or a script executed with the @code{.} "
- "or @code{source} builtins finishes executing."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3955
- msgid ""
- "If a @var{sigspec} is @code{ERR}, the command @var{arg} is executed whenever "
- "a pipeline (which may consist of a single simple command), a list, or a "
- "compound command returns a non-zero exit status, subject to the following "
- "conditions. The @code{ERR} trap is not executed if the failed command is "
- "part of the command list immediately following an @code{until} or "
- "@code{while} keyword, part of the test following the @code{if} or "
- "@code{elif} reserved words, part of a command executed in a @code{&&} or "
- "@code{||} list except the command following the final @code{&&} or "
- "@code{||}, any command in a pipeline but the last, or if the command's "
- "return status is being inverted using @code{!}. These are the same "
- "conditions obeyed by the @code{errexit} (@option{-e}) option."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3959
- msgid ""
- "Signals ignored upon entry to the shell cannot be trapped or reset. Trapped "
- "signals that are not being ignored are reset to their original values in a "
- "subshell or subshell environment when one is created."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3962
- msgid ""
- "The return status is zero unless a @var{sigspec} does not specify a valid "
- "signal."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3963 ./bashref.texi:3964
- #, no-wrap
- msgid "umask"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3967
- #, no-wrap
- msgid "umask [-p] [-S] [@var{mode}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:3980
- msgid ""
- "Set the shell process's file creation mask to @var{mode}. If @var{mode} "
- "begins with a digit, it is interpreted as an octal number; if not, it is "
- "interpreted as a symbolic mode mask similar to that accepted by the "
- "@code{chmod} command. If @var{mode} is omitted, the current value of the "
- "mask is printed. If the @option{-S} option is supplied without a @var{mode} "
- "argument, the mask is printed in a symbolic format. If the @option{-p} "
- "option is supplied, and @var{mode} is omitted, the output is in a form that "
- "may be reused as input. The return status is zero if the mode is "
- "successfully changed or if no @var{mode} argument is supplied, and non-zero "
- "otherwise."
- msgstr ""
- #. type: table
- #: ./bashref.texi:3984
- msgid ""
- "Note that when the mode is interpreted as an octal number, each number of "
- "the umask is subtracted from @code{7}. Thus, a umask of @code{022} results "
- "in permissions of @code{755}."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:3985 ./bashref.texi:3986
- #, no-wrap
- msgid "unset"
- msgstr ""
- #. type: example
- #: ./bashref.texi:3989
- #, no-wrap
- msgid "unset [-fnv] [@var{name}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:4007
- msgid ""
- "Remove each variable or function @var{name}. If the @option{-v} option is "
- "given, each @var{name} refers to a shell variable and that variable is "
- "removed. If the @option{-f} option is given, the @var{name}s refer to shell "
- "functions, and the function definition is removed. If the @option{-n} "
- "option is supplied, and @var{name} is a variable with the @var{nameref} "
- "attribute, @var{name} will be unset rather than the variable it references. "
- "@option{-n} has no effect if the @option{-f} option is supplied. If no "
- "options are supplied, each @var{name} refers to a variable; if there is no "
- "variable by that name, a function with that name, if any, is unset. "
- "Readonly variables and functions may not be unset. Some shell variables "
- "lose their special behavior if they are unset; such behavior is noted in the "
- "description of the individual variables. The return status is zero unless a "
- "@var{name} is readonly."
- msgstr ""
- #. type: section
- #: ./bashref.texi:4010
- #, no-wrap
- msgid "Bash Builtin Commands"
- msgstr ""
- #. type: Plain text
- #: ./bashref.texi:4015
- msgid ""
- "This section describes builtin commands which are unique to or have been "
- "extended in Bash. Some of these commands are specified in the @sc{posix} "
- "standard."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:4018 ./bashref.texi:4019
- #, no-wrap
- msgid "alias"
- msgstr ""
- #. type: example
- #: ./bashref.texi:4022
- #, no-wrap
- msgid "alias [-p] [@var{name}[=@var{value}] @dots{}]\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:4031
- msgid ""
- "Without arguments or with the @option{-p} option, @code{alias} prints the "
- "list of aliases on the standard output in a form that allows them to be "
- "reused as input. If arguments are supplied, an alias is defined for each "
- "@var{name} whose @var{value} is given. If no @var{value} is given, the name "
- "and value of the alias is printed. Aliases are described in @ref{Aliases}."
- msgstr ""
- #. type: btindex
- #: ./bashref.texi:4032 ./bashref.texi:4033
- #, no-wrap
- msgid "bind"
- msgstr ""
- #. type: example
- #: ./bashref.texi:4041
- #, no-wrap
- msgid ""
- "bind [-m @var{keymap}] [-lpsvPSVX]\n"
- "bind [-m @var{keymap}] [-q @var{function}] [-u @var{function}] [-r "
- "@var{keyseq}]\n"
- "bind [-m @var{keymap}] -f @var{filename}\n"
- "bind [-m @var{keymap}] -x @var{keyseq:shell-command}\n"
- "bind [-m @var{keymap}] @var{keyseq:function-name}\n"
- "bind [-m @var{keymap}] @var{keyseq:readline-command}\n"
- msgstr ""
- #. type: table
- #: ./bashref.texi:4051
- msgid ""
- "Display current Readline (@pxref{Command Line Editing}) key and function "
- "bindings, bind a key sequence to a Readline function or macro, or set a "
- "Readline variable. Each non-option argument is a command as it would appear "
- "in a Readline initialization file (@pxref{Readline Init File}), but each "
- "binding or command must be passed as a separate argument; e.g., "
- "@samp{\"\\C-x\\C-r\":re-read-init-file}."
- msgstr ""
- #. type: table
- #: ./bashref.texi:4053 ./bashref.texi:4403 ./bashref.texi:4591
- msgid "Options, if supplied, have the following meanings:"
- msgstr ""
- #. type: item
- #: ./bashref.texi:4055
- #, no-wrap
- msgid "-m @var{keymap}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:4069
- msgid ""
- "Use @var{keymap} as the keymap to be affected by the subsequent bindings. "
- "Acceptable @var{keymap} names are @code{emacs}, @code{emacs-standard}, "
- "@code{emacs-meta}, @code{emacs-ctlx}, @code{vi}, @code{vi-move}, "
- "@code{vi-command}, and @code{vi-insert}. @code{vi} is equivalent to "
- "@code{vi-command} (@code{vi-move} is also a synonym); @code{emacs} is "
- "equivalent to @code{emacs-standard}."
- msgstr ""
- #. type: item
- #: ./bashref.texi:4070 ./bashref.texi:4244 ./bashref.texi:4785 ./bashref.texi:6582 ./bashref.texi:7448 ./bashref.texi:8347
- #, no-wrap
- msgid "-l"
- msgstr ""
- #. type: table
- #: ./bashref.texi:4072
- msgid "List the names of all Readline functions."
- msgstr ""
- #. type: item
- #: ./bashref.texi:4073 ./bashref.texi:4795 ./bashref.texi:5065 ./bashref.texi:7451 ./bashref.texi:8354
- #, no-wrap
- msgid "-p"
- msgstr ""
- #. type: table
- #: ./bashref.texi:4076
- msgid ""
- "Display Readline function names and bindings in such a way that they can be "
- "used as input or in a Readline initialization file."
- msgstr ""
- #. type: item
- #: ./bashref.texi:4077 ./bashref.texi:4820 ./bashref.texi:5116
- #, no-wrap
- msgid "-P"
- msgstr ""
- #. type: table
- #: ./bashref.texi:4079
- msgid "List current Readline function names and bindings."
- msgstr ""
- #. type: item
- #: ./bashref.texi:4080 ./bashref.texi:4813 ./bashref.texi:5088 ./bashref.texi:7454
- #, no-wrap
- msgid "-v"
- msgstr ""
- #. type: table
- #: ./bashref.texi:4083
- msgid ""
- "Display Readline variable names and values in such a way that they can be "
- "used as input or in a Readline initialization file."
- msgstr ""
- #. type: item
- #: ./bashref.texi:4084
- #, no-wrap
- msgid "-V"
- msgstr ""
- #. type: table
- #: ./bashref.texi:4086
- msgid "List current Readline variable names and values."
- msgstr ""
- #. type: item
- #: ./bashref.texi:4087 ./bashref.texi:4409 ./bashref.texi:4483 ./bashref.texi:4641 ./bashref.texi:4804 ./bashref.texi:5196 ./bashref.texi:6596 ./bashref.texi:8360
- #, no-wrap
- msgid "-s"
- msgstr ""
- #. type: table
- #: ./bashref.texi:4091
- msgid ""
- "Display Readline key sequences bound to macros and the strings they output "
- "in such a way that they can be used as input or in a Readline initialization "
- "file."
- msgstr ""
- #. type: item
- #: ./bashref.texi:4092 ./bashref.texi:4755
- #, no-wrap
- msgid "-S"
- msgstr ""
- #. type: table
- #: ./bashref.texi:4094
- msgid "Display Readline key sequences bound to macros and the strings they output."
- msgstr ""
- #. type: item
- #: ./bashref.texi:4095
- #, no-wrap
- msgid "-f @var{filename}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:4097
- msgid "Read key bindings from @var{filename}."
- msgstr ""
- #. type: item
- #: ./bashref.texi:4098
- #, no-wrap
- msgid "-q @var{function}"
- msgstr ""
- #. type: table
- #: ./bashref.texi:4100
- msgid "Query about wh
|