Bash - Linux Command - Unix Command

NAMA

Bash - GNU Bourne-Again SHell

SINOPSIS

bash [options] [file]

DESCRIPTION

Bash minangka juru basa swara kompatibel sh sing nglakokne printah sing diwaca saka input standar utawa saka file. Bash uga nyakup fitur migunani saka cangkang Korn lan C ( ksh lan csh ).

Bash dimaksudaké minangka implementasi konsol spesifikasi Shell lan Spesifikasi Alat IEEE POSIX (IEEE Working Group 1003.2).

PILIHAN

Saliyane opsi cangkang siji-karakter sing didokumentasikan ing katrangan saka prangkat builtin, bash njelasake pilihan ing ngisor iki nalika dipunsebut:

-c string

Yen opsi -c saiki, banjur perintah diwaca saka senar . Yen ana argumentasi sawise string , dheweké diwenehi parameter paramèter, wiwit karo $ 0 .

-i

Yen opsi -i ana, cangkang kasebut interaktif .

-l

Nggawe bash minangka soko kasebut minangka shell login (deleng INVOCATION ngisor).

-r

Yen opsi -r muncul, cangkang kasebut diwatesi (ndeleng RESTRICTED SHELL ing ngisor).

-s

Yen opsi -s ana, utawa yen ora ana argumen tetep sawise proses pilihan, banjur perintah diwaca saka input standar. Opsi iki ngidini paramèter sing digunakna kanggo nyetel nalika nampilaké cangkang interaktif.

-D

Dhaptar kabeh rangkap rangkai pindho sing diduweni dening $ dicithak ing ouput standar. Iki minangka strings sing bisa dadi terjemahan basa nalika ora saiki basa C utawa POSIX . Iki nyebabake pilihan -n ; ora ana perintah sing bakal dileksanakake.

[- +] O [ shopt_option ]

shopt_option minangka salah sijine pilihan cangkang sing ditampa dening shopt builtin (pirsani SHELL BUILTIN COMMANDS ngisor). Yen shopt_option saiki, -O nemtokake nilai opsi kasebut; + O unsets iku. Yen shopt_option ora diwenehake, jeneng lan nilai-nilai pilihan cangkang sing ditampa dening shopt dicithak ing output standar. Yen opsi invocation yaiku + O , output bakal ditampilake ing format sing bisa dienggo maneh minangka input.

-

A - sinyal pungkasan opsi lan mbatalake pilihan pilihan liyane. Saben argumentasi sawise - dianggep minangka jeneng file lan argumen. Argumentasi - sing padha karo - .

Bash uga napsirake sawetara opsi multi karakter. Opsi iki kudu katon ing baris perintah sadurunge opsi siji-karakter bakal dikenali.

--dump-po-strings

Setara karo -D , nanging output ing format file GNU gettext po (portable).

--dump-strings

Setara karo -D .

--Takon

Nuduhake pesen panggunaan ing output standar lan metu kanthi sukses.

- file -init

- berkas berkas

Nglakoni perintah saka berkas tinimbang file initialization standar ~ / .bashrc yen cangkang kasebut interaktif (pirsani INVOCATION ngisor).

--login

Setara karo -l .

- ora ana

Aja nggunakake pandhuan GNU readline kanggo maca garis printah nalika cangkang kasebut interaktif.

--noprofile

Aja maca file wiwitan sistem / etc / profile utawa file inisialisasi pribadi ~ / .bash_profile , ~ / .bash_login , utawa ~ / .profile . Secara kusus, bash bisa maca file kasebut nalika dianggo minangka shell login (pirsani INVOCATION ngisor).

--norc

Aja maca lan nglakokne file inisialisasi pribadi ~ / .bashrc yen cangkang iku interaktif. Opsi iki urip kanthi cetha yen cangkang kasebut dijupuk minangka sh .

--Pendix

Ngganti prilaku bash ing ngendi operasi standar bedo saka standar POSIX 1003.2 kanggo cocog standar ( mode posix ).

- ora ditemtokake

Cangkang kasebut diwatesi (ndeleng RESTRICTED SHELL ing ngisor iki).

--rpm-requires

Nggawe dhaptar file sing dibutuhake kanggo skrip shell kanggo mbukak. Iki nyebabake '-n' lan tundhuk watesan sing padha minangka nyisipake mriksa kesalahan kesalahan wektu; Backticks, [] tes, lan evals ora dipirsani supaya sawetara dependensi bisa dilewatake. - Pangandikane Setara karo -v .

--versi

Tampilake informasi versi kanggo conto saka bash ing output standar lan metu kanthi sukses.

ARGUMENTS

Yen argumen tetep sawise proses pilihan, lan ora ono -c utawa pilihan -s - wis diwenehake, argumen kapisan dianggep minangka jeneng file sing ngemot perintah shell. Yen bash kasebut kanthi cara iki, $ 0 disetel dadi jeneng file, lan paramèter pangaturan kasebut disetel menyang argumen sing isih ana. Bash maos lan nglakokne perintah saka berkas iki, banjur metu. Status exit Bash yaiku status metu saka printah pungkasan sing dieksekusi. Yen ora ana perintah sing dileksanakake, status metu iku 0. Nyoba kawitan kanggo mbukak file ing direktori saiki, lan, yen ora ana berkas, sampeyan bakal nelusur direktori ing PATH kanggo script.

INVOCATION

Tombol mlebu log iku salah siji sing aksara pisanan argument nol yaiku - , utawa siji sing diwiwiti karo opsi --loglog .

Cangkang interaktif salah siji diwiwiti tanpa argumen tanpa pilihan lan tanpa opsi -c sing standar input lan output loro disambungake menyang terminal (kaya sing ditemtokake dening isatty (3)), utawa siji diwiwiti kanthi opsi -i . PS1 disetel lan $ - kalebu i yen bash interaktif, ngidini script shell utawa file wiwitan kanggo nyoba negara iki.

Paragraf ing ngisor iki njlèntrèhaké babagan carane mbusak berkas wiwitan. Yen ana file-file sing ana nanging ora bisa dibaca, ana kesalahan ing laporan. Tildes diperluas ing jeneng berkas minangka diterangake ing sangisore Tilde Expansion ing bagean EXPANSION .

Nalika bash dijupuk minangka cangkang login interaktif, utawa minangka cangkang sing ora interaktif karo opsi --login , sapisanan diwaca lan dieksekusi perintah saka file / etc / profile , yen file kasebut ana. Sawise maca file kasebut, katon kanggo ~ / .bash_profile , ~ / .bash_login , lan ~ / .profile , ing urutane, lan maca lan nglakokne perintah saka sing pertama sing ana lan bisa diwaca. Opsi --noprofile bisa digunakake nalika cangkang diwiwiti kanggo nyandhet prilaku iki.

Nalika ditampilake shell login, bash maos lan nglakokne perintah saka file ~ / .bash_logout , yen ana.

Nalika cangkang interaktif sing ora ana cangkang login diwiwiti, bash dibaca lan dieksekusi perintah saka ~ / .bashrc , yen file kasebut ana. Iki bisa dicegah kanthi nggunakake opsi --norc . Opsi berkas-file filenya bakal meksa bash kanggo maca lan ngeksekusi perintah saka file tinimbang ~ / .bashrc .

Nalika bash diwiwiti non-interaktif, kanggo mbukak script shell, contone, katon kanggo variabel BASH_ENV ing lingkungan, memperluas nilainya yen katon ana, lan nggunakake nilai ditambahi minangka jeneng file kanggo maca lan ngeksekusi . Bash behaves kaya prentah ing ngisor iki:

yen [-n "$ BASH_ENV"]; banjur. "$ BASH_ENV"; fi

nanging Nilai saka variabel PATH ora digunakake kanggo nggoleki jeneng file.

Yen bash diarani kanthi jeneng sh , dhewek nyoba niru perilaku wiwitan versi sajarah sh saklawasna sabisa, nalika manut karo standar POSIX uga. Nalika dianggo minangka shell login interaktif, utawa cangkang sing ora interaktif karo opsi --login , mula nyoba maca lan nglakokne perintah saka / etc / profile lan ~ / .profile , ing urutane. Opsi --noprofile bisa digunakake kanggo nyegah prilaku iki. Nalika dipanggil minangka cangkang interaktif kanthi jeneng sh , bash katon kanggo variabel ENV , memperluas nilainya yen ditetepake, lan nggunakake nilai ditambahi minangka jeneng file kanggo maca lan nglakokké. Wiwit cangkang minangka sh ora nyoba maca lan nglakokne perintah saka file startup liyane, opsi --file ora duwe efek. Cangkang non-interaktif kasebut kanthi jeneng sh ora nyoba maca file startup liyane. Nalika dijupuk minangka sh , bash entuk mode posix sawise file wiwitan diwaca.

Nalika bash diwiwiti kanthi mode posix , kaya karo opsi baris print --posix , iku ngetutake standar POSIX kanggo file wiwitan. Ing mode iki, cangkang interaktif nggedhekake variabel ENV lan perintah diwaca lan dieksekusi saka file sing jenenge ningkatake nilai. Ora ana file wiwitan sing diwaca.

Bash nyoba kanggo nemtokake nalika lagi dioperasikake dening daemon mabur jarak jauh, biasane rshd . Yen bash nemtokake manawa diaktifake dening rshd , maca lan nglakokne perintah saka ~ / .bashrc , yen file kasebut ana lan bisa dibaca. Ora bakal dilakoni yen dijaluk minangka sh . Opsi --norc bisa digunakake kanggo nyandhet prilaku iki, lan opsi --rcfile bisa digunakake kanggo meksa file liyane sing bakal dibaca, nanging rshd ora biasa njaluk cangkang karo opsi kasebut utawa ngidini supaya kasebut.

Yen cangkang kasebut diwiwiti karo id panganggo (klompok) sing efektif ora padha karo id panganggo (klompok) sing bener, lan opsi -p ora diwenehake, ora ana file wiwitan sing dibaca, fungsi shell ora diwenehi warisan saka lingkungan, SHELLOPTS variabel, yen katon ing lingkungan, ora dianggep, lan id panganggo sing efektif diatur menyang id panganggo sing asli. Yen opsi -p diwenehake ing panyuwunan, prilaku wiwitan padha, nanging id panganggo sing efektif ora dilebokne.

DEFINITIONS

Dhéfinisi ing ngisor iki digunakake ing saindhenging piranti liya.

ra ono isine

Spasi utawa tab.

tembung

Urutan karakter dianggep minangka unit tunggal dening cangkang. Uga dikenal minangka token .

jeneng

Tembung sing dumadi mung aksara alfanumerik lan garis ngisor, lan diwiwiti nganggo aksara alfabet utawa garis bawah. Uga diarani minangka pengenal .

metacharacter

Karakter sing, nalika ora ditulis, misahake tembung. Salah siji saka ing ngisor iki:

Deleng uga &; () <> tab papan

operator kontrol

Tokoh sing nglakoni fungsi kontrol. Iku salah sawijining simbol ing ngisor iki:

|| & &; ;;; () |

PURWAKA WORDS

Tembung sing disimpen minangka tembung sing duwe arti khusus kanggo cangkang. Tembung ing ngisor iki diakoni minangka ditrapake nalika ora kapilih lan salah siji saka tembung pisanan prasaja (waca SHELL GRAMMAR ing ngisor) utawa tembung katelu saka sawijining kasus utawa kanggo printah:

! case done elif else esac fi for function if in select then until while {} time [[]]

SHELL GRAMMAR

Prasaja Wikipedia

A prasaja sederhana yaiku rangkuman assignment opsional opsional diiringi tembung kosong lan redirect, lan diakhiri dening operator kontrol . Tembung pisanan nemtokake anggone bisa dieksekusi, lan dilulusake minangka argument nol. Tembung sing isih diarani minangka argumen ing dhawuhe.

Nilai bali saka printah prasaja yaiku status metu, utawa 128+ n yen printah dibusak dening sinyal n .

Pipelines

Pipa minangka urutan siji utawa luwih printah sing dipisahake karo karakter | . Format kanggo pipeline yaiku:

[ wektu [ -p ]] [! ] perintah [ | command2 ...]

Output standar saka perintah disambungake liwat pipa kanggo input standar perintah2 . Sambungan iki ditindakake sadurunge sembarang redirect kasebut miturut perintah kasebut (pirsani REDIRECTION ing ngisor iki).

Yen tembung reserved ! ngelanjutake pipo, status metu saka pipa kasebut minangka NOT logis saka status metu saka printah pungkasan. Yen ora, status pipa kasebut minangka status metu saka printah pungkasan. Cangkang nampilake kabeh perintah ing pipa kanggo siksa sadurunge ngasilake nilai.

Yen tembung sing ditemtokake wektu sadurunge sawijining pipa, sing dilakoni uga pangguna lan wektu sistem sing dikonsumsi dening eksekusi dilaporake nalika pipa rampung. Pilihan -p ngganti format output sing kasebut dening POSIX. Variabel TIMEFORMAT bisa disetel menyang senar format sing nemtokake cara informasi wektu kudu ditampilake; pirsani dhèskripsi TIMEFORMAT miturut Shell Variabel ing ngisor iki.

Saben perintah ing pipa dieksekusi minangka proses kapisah (yaiku, ing subshell).

Dhaptar

Daftar iki minangka urutan siji utawa luwih pipa pipa sing dipisahake dening salah sawijining operator ; , & , && , utawa || , lan ditrapake kanthi salah siji ; , & , utawa .

Saka operator kasebut, && lan || duwe prioritas sing padha, diterusake ; lan &, sing duwe prioritas sing padha.

Urutan siji utawa luwih garis anyar bisa katon ing dhaptar tinimbang titik koma kanggo mbatasi perintah.

Yen perintah diakhiri dening operator kontrol & , cangkang ngeksekusi perintah ing latar mburi ing subshell. Cangkang ora ngenteni perintah kanggo rampung, lan status bali 0. Pandhuan dipisahake karo ; sing dieksekusi secara urutan; cangkang sing ditunggu kanggo saben perintah kanggo siksa ing siji. Status bali yaiku status exit saka pungkasan sing dieksekusi.

Operator kontrol && lan || tegese lan dhaptar lan UTAWA dhaptar. Lan daftar sing duwe

command1 && command2

command2 dileksanakake yen, lan mung yen command1 ngasilake status exit nol.

Daftar OR duwe wangun

command1 || command2

command2 dieksekusi yen lan mung yen command1 ngasilake status exit non-nol. Status bali lan dhaptar OR lan UTAWA yaiku status metu saka printah pungkasan sing dileksanakake.

Komando Compound

A printah majemuk minangka salah siji saka ing ngisor iki:

( daftar )

dhaftar dieksekusi ing subshell. Tanggung jawab variabel lan perintah sing dibangun ing lingkungan cangkang ora tetep ing efek sawise perintah rampung. Status bali yaiku status metu saka daftar .

{ list ; }

dhaftar mung dieksekusi ing lingkungan cangkang saiki. dhaptar kudu diakhiri karo garis anyar utawa titik koma. Iki dikenal minangka printah klompok . Status bali yaiku status metu saka daftar . Elinga manawa ora kaya aksara metacharacters ( lan ) , { lan } iku tembung sing dicadhangake lan kudu kedadean manawa tembung ditrapake diidini dikenali. Awit padha ora nyebabake tembung break, wong-wong mau kudu dipisah saka dhaftar kanthi spasi putih.

(( ungkapan ))

Ekspresi kasebut dievaluasi miturut aturan sing kasebut ing ngisor iki kanthi EVALUASI ARITHMETIK . Yen angka ekspresi ora nol, status bali yaiku 0; Yen status bali yaiku 1. Iki persis padha supaya " ekspresi ".

[[ ekspresi ]]

Bali status 0 utawa 1 gumantung marang evaluasi ekspresi ungkapan sing kondisional. Ekspresi kasebut dumadi saka dhasar-dhasar sing dijelasake ing sangisoré ngisor EXPRESSIONS CONDITIONAL . Tembung pamisahan lan pathname ora dileksanakake ing tembung antarane [[ lan ]] ; Ekspansi, parameter, lan expansion variabel, ekspansi aritmetika, substitusi perintah, substitusi proses, lan kutipan pambusakan dileksanakake.

Nalika operator == lan ! = Sing digunakake, senar ing sisih tengen operator dianggep minangka pola lan dicocogake miturut aturan sing dijelasake ing ngisor iki miturut Matching Pattern . Nilai bali iku 0 yen senar cocog utawa ora cocog karo pola, lan 1 ora kasebut. Sembarang bagéan saka pola kasebut bisa dipetik supaya bisa dicocogake minangka senar.

Ekspresi bisa dikombinasikake nggunakake operator ing ngisor iki, kadhaptar ing urutan kapemeratan:

( ekspresi )

Ngganti angka ekspresi . Iki bisa digunakake kanggo ngatasi prabédan normal operator.

! ekspresi

Bener yen ekspresi palsu.

expression1 && expression2

Bener yen loro expression1 lan expression2 bener.

expression1 || expression2 Bener yen expression1 utawa expression2 bener.

The && lan || operator ora ngevaluasi expression2 yen nilai ekspresi1 cukup kanggo nemtokake nilai bali saka kabeh expression sing sarat.

kanggo jeneng [ ing tembung ]; dhaptar ; rampung

Dhaptar tembung ing ngisor iki ditambahi, ngasilake dhaptar item. Jeneng variabel disetel kanggo saben unsur dhaptar iki, lan dhaptar dileksanakake saben wektu. Yen ing tembung wis dilirwakaké, perintah kanggo ngeksekusi dhaptar sapisan kanggo saben parameter posisional sing disetel (pirsani PARAMETERS ngisor). Status bali yaiku status metu saka printah pungkasan sing dieksekusi. Yen ekspansi item ing ngisor asil ing dhaptar kosong, ora ana perintah sing dileksanakake, lan status bali dadi 0.

kanggo (( expr1 ; expr2 ; expr3 )); dhaptar ; rampung

Kaping pisanan, ekspresi aritmetika expr1 wis dievaluasi miturut aturan sing dijlèntrèhake ing ngisor iki miturut EVALUASI ARITHMETIK . Ekspresi aritmetika expr2 banjur dievaluasi nganti pirang-pirang nganti nol. Saben expr2 wektu ngevaluasi menyang nilai non-nol, dhaftar dieksekusi lan ekspresi aritmetika expr3 dievaluasi. Yen ana ekspresi sing dilirwakaké, prilaku kasebut kaya ngati-ati: 1. Nilai bali yaiku status metu saka dhuwit pungkasan ing dhaptar sing dileksanakake, utawa salah yen ana ekspresi ora bener.

pilih jeneng [ ing tembung ]; dhaptar ; rampung

Dhaptar tembung ing ngisor iki ditambahi, ngasilake dhaptar item. Setel tembung ditambahi dicithak ing kesalahan standar, saben didhisiki dening nomer. Yen ing tembung ora dileksanakake, paramèter pangaturan kasebut dicithak (pirsani PARAMETER ngisor). Panjaluk PS3 banjur ditampilake lan baris diwaca saka input standar. Yen baris kasusun saka nomer sing cocog karo salah sijine tembung sing ditampilake, banjur angka jeneng disetel kanggo tembung kasebut. Yen baris kosong, tembung lan pituduh bakal ditampilake maneh. Yen EOF dibaca, perintah kasebut rampung. Sembarang angka liyane sing diwaca bakal nyebabake jeneng bakal disetel dadi null. Garis sing disimpen disimpen ing variabel REPLY . Daftar wis dileksanakake sawise saben pilihan nganti perintah break dipateni. Status metu milih yaiku status metu saka dhuwit pungkasan sing dileksanakake ing dhaptar , utawa nol yen ora ana perintah sing dileksanakake.

huruf cilik ing pola [[(] pola [ | pola ]

Pandhuan cilik pisanan ngembangake tembung , lan nyoba cocog karo pola kasebut , kanthi nggunakake aturan sing cocog sing padha kanggo expansion pathname (ndeleng Pathname Expansion ngisor). Nalika pertandhingan ditemokake, dhaftar sing gegandhengan dieksekusi. Sawisé pertandhingan pisanan, ora ana sing cocog. Status metu iku nol yen ora ana pola sing cocog. Yen ora, iki status metu saka dhuwit pungkasan sing dileksanakake ing dhaptar .

yen dhaptar ; banjur dhaptar; [ elif list ; banjur dhaptar ; ] ... [ liya daftar ; ] fi

Daftar yen dieksekusi. Yen status metu iku nol, dhaptar banjur dieksekusi. Yen ora, saben dhaftar elif dileksanakake, lan yen status metu iku nol, dhaptar sing cocog banjur dileksanakake lan perintah rampung. Yen ora, dhaptar liyane wis dieksekusi, yen saiki. Status metu yaiku status metu saka pungkasan sing dieksekusi, utawa nol yen ora ana kondisi sing bener.

nalika daftar ; dhaptar ; rampung

nganti dhaptar ; dhaptar ; rampung

Perintah nalika terus-terusan nglakokne dhaptar sing dilakoni anggere printah pungkasan ing daftar ngasilake status exit nol. Ing ngisor iki, perintah kasebut cocog karo perintah nalika , kajaba yen test diurai; dhaptar dileksanakake anggere printah pungkasan ing daftar ngasilake status metu non-nol. Status exit nalika lan nganti perintah minangka status exit saka dhaptar dhaptar pungkasan sing dileksanakake, utawa nol yen ora ana sing dileksanakake.

[ function ] name () { list ; }

Iki nemtokake fungsi sing jenenge jeneng . Awak fungsi iki minangka dhaptar perintah ing antarane {lan}. Dhaptar iki dileksanakake saben jeneng ditemtokake minangka jeneng printah prasaja. Status metu saka fungsi kasebut yaiku status metu saka pungkasan sing dileksanakake ing awak. (Waca FUNGSI ing ngisor iki.)

KOMENTAR

Ing cangkang non-interaktif, utawa cangkang interaktif kang dadi pilihan interaktif kanggo pabrik sing dibangun (ndeleng SHELL BUILTIN COMMANDS ing ngisor), tembung sing diwiwiti kanthi # nyebabake tembung kasebut lan kabeh karakter sing isih ana ing baris kasebut bakal diabaikan. Cangkang interaktif tanpa pilihan interactive_comments ora ngidini komentar. Opsi interactive_comments aktif kanthi cangkang interaktif.

QUOTING

Quoting digunakake kanggo mbusak makna khusus saka aksara tartamtu utawa tembung menyang cangkang. Quoting bisa digunakake kanggo mateni perlakuan khusus kanggo karakter khusus, kanggo nyegah tembung-tembung sing ditrapake supaya ora diakoni, lan kanggo nyegah ekspansi parameter.

Saben metacharacters kadhaptar ing sangisore miturut DEFINISI nduweni teges khusus kanggo cangkang lan kudu dipetik yen bisa makili dhewe.

Nalika fasilitas ekspansi sejarah printah digunakake, karakter ekspansi sejarah , biasane ! , kudu dipetik kanggo nyegah ekspansi sejarah.

Ana telung mekanisme ngutip: karakter uwal , tanda kutip tunggal, lan tanda kutip ganda.

A backslash ( \ ) sing ora disebutake minangka karakter uwal . Iku ngreksa nilai harfiah saka karakter sabanjure sing nderek, kajaba . Yen pasangan \ katon, lan backslash dhewe ora dipetik, \ dianggep minangka lanjutan baris (yaiku, dibusak saka stream input lan ora diapusi sacara efektif).

Enclosing karakter ing kuotasi tunggal ngreksa nilai harfiah saben karakter ing kuotasi. Kutipan siji ora bisa kedadeyan antarane kutipan tunggal, sanajan didawali dening backslash.

Enclosing karakter ing kuotasi ganda ngreksa nilai harfiah kabeh karakter ing kuotasi, kajaba $ , ` , lan \ . Karakter $ lan ` nahan makna khusus ing kuotasi ganda. Backslash tetep maknané khusus mung nalika diiringi siji saka karakter kasebut: $ , ` , " , \ , utawa . Kutipan ganda bisa ditulis ing kuotasi kaping pindho kanthi sadurunge karo backslash.

Paramèter khusus * lan @ duwe makna khusus nalika nganggo tanda kutip ganda (pirsani PARAMETER ngisor).

Tembung-tembung saka wangun $ ' senar ' dianggep khusus. Tembung lumaku menyang string , kanthi karakter backslash-escaped diganti minangka spesifik ANSI C standar. Urutan mlayu backslash, yen saiki, didekode kaya ing ngisor iki:

\ a

tandha (bell)

\ b

backspace

\ e

karakter lali

\ f

mbentuk feed

\ n

baris anyar

\ r

kembange bali

\ t

tab horizontal

\ v

vertikal tab

\\

backslash

''

Kutipan tunggal

\ nnn

karakter wolung-bit sing ateges nilai octal nnn (siji nganti telung digit)

\ x HH

karakter wolu-bit sing ateges nilai heksadesimal HH (siji utawa rong digit hex)

\ c x

karakter kontrol

Asil sing ditambahake minangka siji-sebut, kaya-kaya tandha dolar durung kasedhiya.

Senar sing kapindho sing diwiwiti kanthi tandha dollar ( $ ) bakal nyebabake senar kasebut bakal diterjemahake miturut panggonan saiki. Yen lokal saiki iku C utawa POSIX , tandha dollar ora diolehi. Yen string wis diterjemahake lan diganti, pangganti kasebut diarani kaping pindho.

PARAMETERS

Parameter yaiku entitas sing nyimpen nilai. Bisa dadi jeneng , nomer, utawa salah sawijining karakter khusus sing didaftar ing ngisor iki ing Parameter Khusus . Kanggo tujuan shell, variabel minangka parameter sing dilambangake kanthi jeneng . Variabel nduweni nilai lan nol utawa atribut liyane. Atribut bakal diwenehake nggunakake printah perintah sing dibatalake (waca ing ngisor iki ing SHELL BUILTIN COMMANDS).

Parameter kasebut disetel yen wis diutus nilai. Senar nebula iku nilai sing sah. Sawise variabel wis disetel, bisa diilangake mung kanthi nggunakake perintah sing diunggahake (ndeleng perintah SHELL BUILTIN ngisor).

Variabel bisa diwenehi dening statement saka formulir

jeneng = [ Nilai ]

Yen nilai ora diwenehake, variabel kasebut bakal diwenehi string null. Kabeh nilai ngalami tilde expansion, parameter lan expansion variable, substitusi perintah, ekspansi aritmetik, lan kutipan pembuangan (waca EXPANSION ngisor). Yen variabel nduweni atribut atribut, mangka nilai bakal tundhuk ekspansi aritmatika sanajan ekspansi $ ((...)) ora digunakake (ndeleng Ekspansi aritmatika ing ngisor iki). Pisah tembung ora dilakokaké, kajaba "$ @" minangka diterangake ing ngisor iki ing Parameter Khusus . Pathname expansion ora dileksanakake. Pernyataan Assignment uga katon minangka argumen kanggo deklarasi , typeset , ekspor , readonly , lan perintah builtin lokal .

Parameter posisi

Parameter posisional minangka parameter sing diandharake karo siji utawa luwih digit, liyane saka digit siji 0. Parameter Posisi ditugasake saka argumen shell nalika ditimbulake, lan bisa ditindakake kanthi nggunakake perintah sing dibangun. Parameter posisi ora ditemtokake karo pernyataan assignment. Parameter posisi diganti nalika fungsi shell diisi (ndeleng FUNCTIONS ngisor).

Nalika parameter posisional sing dumadi saka luwih saka siji digit ditambah, kudu ditempelake ing klientangan (waca EXPANSION ngisor).

Parameter Khusus

Cangkang ngruwat sawetara paramèter khusus. Paramèter iki mung bisa kasebut; assignment kanggo wong-wong mau ora diijini.

*

Ekspansi menyang parameter posisi, wiwit saka siji. Nalika ekspansi dumadi ing kuotasi kaping pindho, tembung kasebut ngembang menyang tembung siji kanthi nilai saka saben parameter sing dipisahake karo karakter pisanan saka variabel khusus IFS . Dadi, " $ * " setara karo " $ 1 c $ 2 c ... ", ing ngendi c iku karakter pisanan saka variabel IFS . Yen IFS ora diisi, paramèter dipisahake kanthi spasi. Yen IFS ora ana, parameter kasebut digabung tanpa pemisah intervensi.

@

Ekspansi menyang parameter posisi, wiwit saka siji. Nalika ekspansi ana ing kuotasi kaping pindho, saben parameter ngembang menyang tembung kapisah. Dadi, " $ @ " sampeyan padha karo " $ 1 " " $ 2 " ... Yen ora ana parameter posisional, " $ @ " lan $ @ nggedhekake apa-apa (dhewekan, dibusak).

#

Ngembangaké nomer paramèter posisi ing desimal.

?

Ngembangaké status pipa foreground paling anyar sing dilakoni.

-

Nggedhekake pilihan bendera saiki sing ditemtokake marang invocation, dening command set dibangun, utawa sing disetel dening cangkang dhewe (kayata opsi -i ).

$

Ngembang menyang ID proses saka cangkang. Ing subkelas (), ngembang dadi ID proses saka cangkang saiki, dudu subshell.

!

Ndhuwur kanggo ID proses sing paling anyar sing dilakoni ing latar mburi (asinkron) printah.

0

Ngembangake jeneng cangkang utawa naskah cangkang. Iki disetel ing cangkang inisialisasi. Yen bash diundang nganggo file printah, $ 0 disetel dadi jeneng berkas kasebut. Yen bash diwiwiti karo opsi -c , banjur $ 0 disetel menyang argumen kapital sawise string bakal dieksekusi, yen ana. Yen ora, wis disetel kanggo jeneng berkas sing digunakake kanggo njaluk bash , minangka diwenehi dening argument nol.

_

Ing wiwitan shell, nyetel jeneng file sing mutlak saka shell utawa shell script sing dieksekusi kaya dilulusake ing dhaptar argumen. Sabanjure, nggedhekake menyang argumentasi pungkasan menyang perintah sadurunge, sawise expansion. Uga nyetel jeneng file lengkap saben perintah sing dileksanakake lan dilebokake ing lingkungan sing diekspor menyang perintah kasebut. Nalika mriksa mail, parameter iki ngemot jeneng file email sing lagi dicenthang.

Variabel Shell

Variabel ing ngisor iki disetel dening cangkang:

BASH

Ngembangake jeneng berkas lengkap digunakake kanggo njaluk conto iki saka bash .

BASH_VERSINFO

Variabel dhaptar sing bisa dibaca sing anggota bisa nyithak informasi versi iki kayata bash . Nilai-nilai sing ditugasake kanggo anggota array yaiku kaya mangkene:

BASH_VERSINFO [ 0]

Nomer versi utama ( release ).

BASH_VERSINFO [ 1]

Nomer versi cilik ( versi ).

BASH_VERSINFO [ 2]

Tingkat tembelan.

BASH_VERSINFO [ 3]

Versi mbangun.

BASH_VERSINFO [ 4]

Status rilis (contone, beta1 ).

BASH_VERSINFO [ 5]

Nilai MACHTYPE .

BASH_VERSION

Ngembangaké sawijining senar sing njlèntrèhaké versi bash iki .

COMP_CWORD

COMP_LINE

Baris perintah saiki. Variabel iki mung kasedhiya ing fungsi shell lan perintah njaba sing dijupuk dening fasilitas completion programmable (ndeleng Completion Programmable ngisor).

COMP_POINT

COMP_WORDS

Variabel array (lihat Arrays ing ngisor) kalebu tembung individu ing baris perintah saiki. Variabel iki mung kasedhiya ing fungsi-fungsi shell sing diwenehake dening fasilitas completion programmable (ndeleng Completion Programmable ngisor).

DIRSTACK

Variabel array (ndeleng Arrays ngisor) ngemot isi saiki stack direktori. Direktori ditampilake tumpukan supaya bisa ditampilake kanthi direkam . Nuduhake anggota variabel array iki bisa digunakake kanggo ngowahi direktori sing wis ana ing tumpukan, nanging builtins pushd lan popd kudu digunakake kanggo nambah lan mbusak direktori. Assignment kanggo variabel iki ora bakal ngganti direktori saiki. Yen DIRSTACK ora kasedhiya , bakal ilang sifat spesifik, sanajan kasil dibaline maneh .

EUID

Ngembangna ID panganggo sing efektif kanggo pangguna saiki, diinisialisasi ing wiwitan shell. Variabel iki wis diwaca.

FUNCNAME

Jeneng sembarang fungsi shell sing saiki dieksekusi. Variabel iki mung ana nalika fungsi shell dieksekusi. Tanggung jawab kanggo FUNCNAME ora duwe pangaruh lan ngasilake status kesalahan. Yen FUNCNAME ora katon , bakal ilang sifat khusus, sanajan kasil dibaline maneh .

GROUPS

Variabel terisolasi ngemot daftar grup sing pangguna saiki dadi anggota. Assignments kanggo GROUPS ora duwe efek lan bali status kesalahan. Yen GROUPS wis ora ditemtokake, bakal ilang situs spesial, sanajan bisa dileresake.

HISTCMD

Nomer sajarah, utawa indeks ing daftar riwayat, saka printah saiki. Yen HISTCMD ora kasedhiya, bakal entuk sifat spesiale , sanajan bisa di-Reset.

HOSTNAME

Sacara otomatis nyetel jeneng host sing saiki.

HOSTTYPE

Sacara otomatis disetel menyang senar sing ngandhut kanthi unik jinis mesin sing dieksekusi . Default iki gumantung saka sistem.

LINENO

Saben wektu paramèter iki dijlèntrèhaké, cangkang kasebut ngowahi nomer desimal sing makili nomer urut baris saiki (diwiwiti kanthi 1) sajrone naskah utawa fungsi. Yen ora ana ing naskah utawa fungsi, rega kasebut ora njamin bisa dadi berarti. Yen LINENO ora diset , sampeyan bakal nemtokake sifat khusus, sanajan kasil dibaline maneh .

MACHTYPE

Sacara otomatis disetel menyang senar sing kanthi gamblang nyebarke jinis sistem sing dieksekusi bash , ing format standar GNU cpu-perusahaan . Default iki gumantung saka sistem.

OLDPWD

Direktori apa wae sadurunge disetujoni dening perintah cd .

OPTARG

Nilai saka argumen pilihan pungkasan sing diproses dening perintah getopts builtin (pirsani SHELL BUILTIN COMMANDS ing ngisor iki).

OPTIND

Indeks saka argumentasi sabanjure bakal diproses dening perintah getopts builtin (ndeleng COMMANDS SHELL BUILTIN ing ngisor).

OSTYPE

Sacara otomatis disetel menyang senar sing nggambarake sistem operasi sing dieksekusi . Default iki gumantung saka sistem.

PIPESTATUS

Variabel array (lihat Arrays di bawah) mengandung daftar nilai status keluar dari proses-proses dalam pipa foreground yang paling baru-baru ini dijalankan (yang mungkin berisi hanya satu perintah).

PPID

ID proses saka wong tebu. Variabel iki wis diwaca.

PWD

Dirèktori wektu saiki minangka disetujoni dening cd command.

RANDOM

Saben wektu parameter iki dirujuk, integer acak antarane 0 lan 32767 diasilake. Urutan nomer acak bisa diinisialisasi kanthi menehi nilai menyang RANDOM . Yen RANDOM ora katon, bakal ilang sifat spesifik, sanajan kasil dibaline maneh.

REPLY

Nyetel menyang baris input sing diwaca dening perintah sing dibaca dibangun nalika ora ana argumen sing diwenehake.

SECONDS

Saben wektu parameter kasebut dijlèntrèhaké, sawetara detik wiwit invocation shell dibalèkaké. Yen nilai ditetepake dadi SECONDS , angka sing ditemokake ing referensi salajengipun yaiku nomer detik wiwit tugas ditambah nilai ditugasake. Yen ora kasedhiya SECONDS , situs kasebut ilang sifat khusus, sanajan kasil dibaline maneh.

SHELLOPTS

Daftar pilihan kolon sing dipisahake titik gedhe. Saben tembung sing ana ing dhaptar kasebut minangka argumen sing bener kanggo opsi -o kanggo set perintah sing dibangun (pirsani SHELL BUILTIN COMMANDS ing ngisor iki). Opsi sing muncul ing SHELLOPTS yaiku sing dilaporake dening set -o . Yen variabel kasebut ana ing lingkungan nalika bash dimainake, saben opsi shell ing dhaftar bakal aktif sadurunge maca file wiwitan. Variabel iki mung diwaca.

SHLVL

Dipenggal dening siji saben wektu conto saka bash diwiwiti.

UID

Ndhuwur kanggo pangguna ID pangguna saiki, diinisialisasi ing wiwitan shell. Variabel iki wis diwaca.

Variabel ing ngisor iki digunakake dening cangkang. Ing sawetara kasus, bash nemtokake nilai default menyang variabel; kasus kasebut dicathet ing ngisor iki.

BASH_ENV

Yen parameter iki disetel nalika bash ngeksekusi script shell, nilai kasebut dijarwakake minangka jeneng filenya sing ngandung perintah kanggo nginisialisasi cangkang, kaya neng ~ / .bashrc . Nilai BASH_ENV dipengaruhi ekspansi parameter, substitusi perintah, lan ekspansi aritmatika sadurunge diinterpretasikake minangka jeneng berkas. PATH ora dipigunakaké kanggo nggoleki jeneng berkas sing wis ana.

CDPATH

Path nggoleki perintah cd . Iki minangka dhaptar direktori sing dipérang dadi titik loro ing endi shell katon direktori panggonan sing ditemtokaké déning perintah cd . Nilai sampel yaiku ".: ~: / Usr".

COLUMNS

Digunakna kanthi milih command buildin kanggo nemtokake ambane terminal nalika mencetak daftar pilihan. Nyetel kanthi otomatis sawisé ditrima SIGWINCH.

KOMPLEKSI

Variabel terisolasi saka bash sing mbaca completion digawe dening fungsi shell ditimbulake dening fasilitas completion programable (ndeleng Completion Programmable ngisor).

FCEDIT

Editor standar kanggo perintah fc builtin.

FIGNORE

Dhaptar suffixes sing dipisahake titik loro kanggo ditolak nalika ngerjain completion filename (pirsani READLINE ing ngisor iki). Jeneng berkas sing suffix cocog karo salah siji saka entri ing FIGNORE ora termasuk saka daftar jeneng berkas sing cocog. Nilai sampel punika ".o: ~".

GLOBIGNORE

Daftar pola sing dipisahake titik loro sing ora bisa ditemokake dening jeneng pathname. Yen jeneng filosofi sing cocog karo pola ekspansi pathname uga cocog karo salah sawijining pola ing GLOBIGNORE , dibusak saka daftar sing cocog.

HISTCONTROL

Yen nyetel menyang nilai ignorespace , garis sing diwiwiti karo karakter spasi ora dilebokake ing dhaptar sajarah. Yen nyetel menyang nilai ora ditolak , garis sing cocog karo baris riwayat pungkasan ora mlebu. Nilai saka wong sing ora nggatekke nggabungake rong pilihan. Yen ora diuripake, utawa yen nyetel menyang nilai liyane tinimbang sing kasebut ing ndhuwur, kabeh garis sing diwaca dening parser bakal disimpen ing daftar riwayat, miturut nilai HISTIGNORE . Fungsi variabel iki diganti dening HISTIGNORE . Jalur kapindho lan sakteruse saka komando senyawa multi baris ora dites, lan ditambah ing sajarah tanpa kapisah saka nilai HISTCONTROL .

KABUPATEN

Jeneng file kasebut minangka sandhing sejarah sing disimpen (pirsani HISTORI ing ngisor iki). Nilai default punika ~ / .bash_history . Yen ora diset, riwayat printah ora disimpen nalika ditampilake shell interaktif.

HISTFILESIZE

Nomer maksimum garis sing ana ing file riwayat. Nalika variabel kasebut ditudhuhake sawijining nilai, file historis dipotong, yen perlu, kanggo ngemot ora luwih saka jumlah garis kasebut. Nilai default punika 500. Berkas Sajarah uga dipotong nganti ukuran kasebut sawise ditulis nalika metu tombol interaktif.

HISTIGNORE

Daftar pola sing dipisahake titik loro sing digunakake kanggo netepake baris perintah apa sing kudu disimpen ing daftar riwayat. Saben pola diadopsi ing awal baris lan kudu cocog karo baris lengkap (ora ana teges ` * 'sing ditambahake). Saben pola dites marang baris sawise kir sing kasebut dening HISTCONTROL sing diterapake. Saliyane karakter pencocokan pola cangkang normal, ` & 'cocog karo baris sajarah sadurungé. ` & 'bisa mlayu nganggo backslash; backslash dibusak sadurunge nyoba pertandhingan. Jalur kapindho lan sakteruse saka komando senyawa multi baris ora dites, lan ditambah ing sajarah tanpa kapisah saka HISTIGNORE .

HISTSIZE

Jumlah perintah sing kudu dielingi ing riwayat printah (waca SEJARAH ngisor). Nilai default 500.

HOME

Direktori ngarep pangguna saiki; argumen default kanggo cd builtin command. Nilai saka variabel iki uga digunakake nalika nampilake tilde expansion.

HOSTFILE

Ngemot jeneng file ing format sing padha karo / etc / hosts sing kudu diwaca nalika cangkang kudu ngrampungake jeneng host. Dhaptar kemungkinan tuan rumah bisa diganti nalika cangkang kasebut mlaku; pandhuan inang wektu sabanjuré wis dikembangake sawisé diganti, bash nambahake isi file anyar menyang dhaptar sing wis ana. Yen HOSTFILE disetel, nanging ora ana regane, bash nyoba maca / etc / sarwa dumadi kanggo ndhaftar daftar kemungkinan paramalan. Nalika HOSTFILE ora diisi , dhaftar jeneng host kacetha .

IFS

Pemisah Lapangan Internal sing dipigunakaké kanggo pamisah tembung sawisé perluasan lan kanggo mecah garis menyang tembung karo perintah maca builtin. Nilai gawan yaiku `` ''.

IGNOREEOF

Ngontrol tindakan cangkang interaktif nalika ditampa minangka karakter EOF minangka input tunggal. Yen disetel, angka kasebut minangka nomer karakter EOF sing terus - terusan sing kudu diketik minangka karakter pisanan ing baris input sadurunge metu bash . Yen variabel kasebut ana nanging ora duwe nilai numerik, utawa ora ana nilai, nilai default yaiku 10. Yen ora ana, EOF tegese mburi input menyang cangkang.

INPUTRC

Jeneng berkas kanggo file startup readline , ngeset default saka ~ / .inputrc (pirsani READLINE ing ngisor iki).

LANG

Digunakna kanggo nemtokake kategori lokal kanggo kategori apa wae sing ora dipilih kanthi spesifik diwiwiti karo LC_ .

LC_ALL

Variabel iki ngatasi nilai LANG lan variabel LC_ liyane sing ngatonake kategori lokal.

LC_COLLATE

Variabel iki nemtokake urutan collation sing digunakake nalika ngurutake asil ekspansi pathname, lan nemtokake prilaku ekspresi range, kelas ekualistis, lan urutan collating ing ekspansi pathname lan pencocokan pola.

LC_CTYPE

Variabel iki nemtokake interpretasi karakter lan prilaku kelas karakter ing expansion pathname lan pencocokan pola.

LC_MESSAGES

Variabel iki nemtokake panggonan sing dipigunakaké kanggo nerjemahake rangking kaping pindho sing diawali kanthi $ .

LC_NUMERIC

Variabel iki nemtokake kategori lokal sing digunakake kanggo format nomer.

LINES

Digunakna kanggo milih komando builtin kanggo nemtokake dawa kolom kanggo dhaptar pilihan pencetakan. Nyetel kanthi otomatis sawisé ditrima SIGWINCH.

MAIL

Yen parameter iki disetel menyang jeneng file lan variabel MAILPATH ora disetel, bash ngandhani pangguna kedhaftar saka mail ing file kasebut.

MAILCHECK

Nemtokake sepira kerepe (ing detik) cek bash kanggo mail. Default punika 60 detik. Nalika iku wektu kanggo mriksa mail, cangkang ora kaya sadurunge nampilake pitunjuk utama. Yen variabel iki ora diisi, utawa disetel menyang nilai sing ora angka luwih gedhe tinimbang utawa sing padha karo nol, cangkang mateni mriksa email.

MAILPATH

Daftar jenenge titik loro sing dipisahake kanggo mail. Pesen sing bakal dicithak nalika mail tiba ing file tartamtu bisa ditemtokake kanthi misahake jeneng berkas saka pesen nganggo `? '. Nalika digunakake ing teks pesen, $ _ ngembangake jeneng mailfile sing saiki. Conto:

MAILPATH = '/ var / mail / bfox? "Sampeyan duwe mail": ~ / shell-mail? "$ _ Duwe email!"'

Bash nyedhiyakake nilai asline kanggo variabel iki, nanging lokasi file email pangguna sing gumantung sistem gumantung (umpamane, / var / mail / $ USER ).

OPTERR

Yen disetel menyang nilai 1, bash nampilake pesen kesalahan sing digawe dening perintah getopts builtin (pirsani SHELL BUILTIN COMMANDS ing ngisor iki). OPTERR diinisialisasi nganti 1 saben wektu cangkang dilaporake utawa script shell dieksekusi.

PATH

Path nggoleki perintah. Iku dhaptar direktori sing dipérang dadi titik loro ing endi shell katon minangka printah (tingali printah ngisor iki). Path gawan gumantung saka sistem, lan disetel dening administrator sing masang bash . Nilai umum iku `/ / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin:. ''.

POSIXLY_CORRECT

Yen variabel kasebut ana ing lingkungan nalika bash diwiwiti, cangkang kasebut entuk mode posix sadurunge maca file startup, kaya - opsi invocation - pocapan wis diwenehake. Yen disetel nalika cangkang wis mlaku, bash mbisakake mode posix , kaya-kaya prentah seto -o posix wis dieksekusi.

PROMPT_COMMAND

Yen disetel, nilai kasebut dieksekusi minangka perintah sadurunge nerbitake saben pitunjuk utama.

PS1

Nilai parameter iki ditambahi (waca PROMPTING ngisor) lan digunakake minangka string pitulung utama. Nilai default iku `` \ s- \ v \ $ ''.

PS2

Nilai parameter iki ditambahi karo PS1 lan digunakake minangka string pitulung sekunder. Default yaiku `` > ''.

PS3

Nilai parameter iki digunakake minangka pituduh kanggo milih (ndeleng SHELL GRAMMAR ing ndhuwur).

PS4

Nilai paramèter iki ditambahi karo PS1 lan angka kasebut dicithak sadurunge saben layar komprèsi print metu sajrone nglanggar eksekusi. Karakter PS4 pisanan ditiru kaping pirang-pirang, sanajan perlu, kanggo nunjukake sawetara tingkat indireksi. Default yaiku `` + ''.

TIMEFORMAT

Nilai parameter iki digunakake minangka string format sing nemtokake manawa informasi wektu kanggo saluran pipa diawali karo wektu tembung sing ditrapake kudu ditampilake. Karakter % ngenalake urutan lolos sing ditambahake menyang nilai wektu utawa informasi liyane. Urutan sing mlaku lan tegese padha kaya mangkene; si penyokong nuduhaké bagian opsional.

%%

A literal % .

% [ p ] [l] R

Waktu diwiwiti ing detik.

% [ p ] [l] U

Nomer detik CPU sing digunakake ing mode panganggo.

% [ p ] [l] S

Nomer detik CPU sing digunakake ing mode sistem.

% P

Persentase CPU, diitung minangka (% U +% S) /% R.

P pilihan yaiku angka sing ngatonake presisi , nomer digit pecahan sawise titik desimal. Nilai 0 nyebabake ora ana titik desimal utawa bagian sekedhik dadi output. Ing paling telung panggonan sawisé titik desimal kasebut bisa kasebut; Nilai p luwih saka 3 bakal diganti dadi 3. Yen p ora ditemtokake, nilai 3 digunakake.

Opsional l nemtokake format maneh, kalebu menit, saka wangun MM m SS . FF s. Nilai p bakal nemtokake manawa fraksi kasebut ora kalebu.

Yen variabel iki ora disetel, bash minangka fungsi yen duweni nilai $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' . Yen angka ora ana, ora ana informasi wektu sing ditampilake. A newline jejeg ditambahake nalika string format ditampilake.

TMOUT

Yen nyetel menyang nilai sing luwih gedhe tinimbang nol, TMOUT dianggep minangka wektu tundha kanggo builtin diwaca . Pangaturan pilih mandheg yen input ora teka sawise detik TMOUT nalika input bakal teka saka terminal. Ing cangkang interaktif, angka kasebut diinterpretasikake minangka nomer detik kanggo ngenteni input sawise nerbitake pitunjuk utama. Bash mandheg sawise nunggu sawetara detik yen input ora teka.

auto_resume

Variabel iki ngontrol carane cangkang berinteraksi karo pangguna lan kontrol proyek. Yen variabel iki disetel, tembung siji prasaja tanpa peralihan bakal dianggep minangka calon kanggo nyalurake proyek sing lagi mandeg. Ana ambiguitas sing diijini; yen ana luwih saka siji proyek sing diwiwiti karo string diketik, proyek sing paling anyar diakses dipilih. Jeneng proyek sing mandegake, ing konteks iki, yaiku baris perintah sing digunakake kanggo miwiti. Yen nyetel angka sing tepat , senar sing diwenehake mesthine cocog karo jeneng proyek sing mandheg persis; yen disetel menyang substring , senar sing diwenehake cocog kanggo cocog substring saka jeneng proyek sing mandegake. Nilai substring nyedhiyakake fungsi sing analog menyang %? identifier proyek (ndeleng JOB CONTROL ing ngisor iki). Yen disetel marang nilai liyane, senar sing diwenehake kudu awalan jeneng proyek sing mandegake; iki nyedhiyakake fungsi sing analog menyang % identifier proyek.

histchars

Loro utawa telu karakter sing ngontrol ekspansi lan tokenisasi sejarah (waca EXPANSION SEJARAH ngisor). Karakter sing kapisan yaiku karakter ekspansi sejarah , karakter sing sinyal wiwitan ekspansi sejarah, biasane ` ! '. Karakter sing kapindho yaiku karakter substitusi sing cepet , sing digunakake minangka trik kanggone nglakokake maneh perintah sadurunge, ngganti siji string liyane ing perintah kasebut. Default yaiku ` ^ '. Karakter ketiga pilihan yaiku karakter sing nuduhake yen sisa garis kasebut minangka komentar nalika ditemokake minangka karakter pisanan tembung, biasane ` # '. Karakter komentar sajarah nyebabake substitusi sejarah dilewatake kanggo tembung sing isih ana ing baris kasebut. Ora kudu nyebabake parser cangkang kanggo ngobati sisa garis minangka komentar.

Array

Bash nyedhiyakake variabel array siji-dimensi. Variabel apa wae bisa digunakake minangka array; sing dikarepake dibangun bakal kanthi jelas ngumumake array. Ora ana wates maksimal ing ukuran array, utawa ora ana syarat sing bisa diindeks utawa diandharake kanthi cetha. Array bisa diindeks nganggo integer lan adhedhasar nol.

Arrayan digawe kanthi otomatis yen variabel ditetepake kanggo nggunakake jeneng sintaks [ subscript ] = value . Subskrip iki dianggep minangka ekspresi aritmetika sing kudu dievaluasi menyang angka sing luwih gedhe tinimbang utawa ora padha karo nol. Kanggo nyatakake kanthi tegas array, gunakake nyatakake- jeneng (pirsani SHELL BUILTIN COMMANDS ngisor). nyatakake -a jeneng [ subskrip ] uga ditampa; subskrip ora digatekake. Atribut bisa ditemtokake kanggo variabel array kanthi nggunakake piranti ucapan lan readonly . Saben atribut ditrapake kanggo kabeh anggota array.

Array bakal ditugasi kanggo nggunakake assignment senyawa saka wangun jeneng = ( Nilai 1 ... Nilai n ) , ngendi saben Nilai iku saka wangun [ subscript ] = senar . Mung senar sing dibutuhake. Yen sumbangan lan subskrip pilihan diwenehake, indeks kasebut ditugasake; Yen indeks saka unsur sing ditugasake minangka indeks pungkasan sing diwenehake dening statement ditambah siji. Indexing wiwit ing nol. Sintaks iki uga ditampa dening diarani builtin. Unsur array individu bisa diwenehi jeneng [ subskrip ] = sintaksis nilai sing dikenalaké ing ndhuwur.

Ing unset builtin digunakake kanggo numpes array. jeneng unset [ subskrip ] ngrusak unsur rangkean ing indeks subskrip . jeneng ora diarani, ing ngendi jeneng minangka array, utawa jeneng sing ora diarani [ subskrip ], ing ngendi subskrip yaiku * utawa @ , ngilangi kabeh array.

Ing wara - wara , lokal , lan readinly builtins saben nampa opsi -a kanggo nemtokake array. Ing builtin diwaca nampa opsi -a kanggo nglebokake dhaptar tembung sing diwaca saka input standar menyang array. Nyetel lan ngumumake builtins kanggo nampilake nilai-nilai kanthi cara sing bisa digunakake minangka tugas.

EXPANSION

Ekspansi dileksanakake ing baris printah sawise dipisah dadi tembung. Ana pitung jinis ekspansi sing dilakoni: expansion brace, ekspansi tilde , parameter lan expansion variabel , substitusi perintah , ekspansi aritmatika , pamecahan tembung , lan expansion pathname .

Urutan ekspansi yaiku: ekspansi, ekspansi, parameter, variabel, lan aritmatika lan substitusi perintah (dipigunakaké kanthi cara kiwa-tengen), pamisahan tembung, lan pathname expansion.

Ing sistem sing bisa ndhukung, ana expansion tambahan sing kasedhiya: substitusi proses .

Brace Expansion

Ekspansi nyangga iku sawijining mekanisme kanthi senar sing bisa diwujudake. Mekanisme iki meh padha karo pathname expansion , nanging jeneng file sing digawe kudu ora ana. Pola sing bakal ditambani bakal diwenehake dadi wangun opsional opsional, diiringi karo senar saka koma sing dipisahake ing antarane pasangan penyonggo, disusul kanthi pèngetan opsional. Preamble wis diwenehake kanggo saben senar sing ana ing kancing-kancing, lan kiriman kasebut banjur ditambahake saben senar, ningkatake kiwa menyang tengen.

Ekspansi penjaga bisa disambungake. Hasil saben string sing dikembangake ora diurutake; Ngiwa lan nengen ditahan. Contone, { d, c, b } e ngembang dadi `ade ace abe '.

Ekspansi nyangga wis dilakoni sadurunge ekspansi liyane, lan karakter khusus khusus kanggo ekspansi liyane bakal ditahan. Iku bener tekstual. Bash ora gunakake interpretasi sintaksis marang konteks ekspansi utawa teks antarane penyangga.

Konstruktor iki biasane digunakake minangka trik nalika awalan umum saka senar bisa dibentuk luwih dawa tinimbang ing conto ndhuwur:

mkdir / usr / local / src / bash / {old, new, dist, bugs}

utawa

chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Ekspansi nyangga ngenalake sing ora cocog karo versi sajarah sh . sh ora narik kawigaten bukaan utawa nutup nalika ditampilake minangka bagian saka tembung, lan njaga ing output. Bash mbusak braces saka tembung minangka akibat saka panyambungan ekspansi. Contone, tembung sing dienggo ing sh minangka file {1,2} katon identik ing output. Tembung sing padha metu minangka berkas file2 sawise expansion dening bash . Yen kompatibilitas sing ketat karo sh dikarepake, mulihake bash nganggo opsi B + utawa mateni ekspansi kanthi pilihan B + menyang perintah kasebut (pirsani SHELL BUILTIN COMMANDS ngisor).

Tilde Expansion

Yen tembung diwiwiti nganggo karakter tilde sing ora ditulis (` ~ '), kabeh karakter sadurunge slash sing ora kapacak ing ngisor (utawa kabeh karakter, yen ora ana garis sing ora kapacak) dianggep awalan tilde . Yen ora ana karakter ing awalan tilde sing dipetik, karakter ing awalan tilde bakal dianggep minangka jeneng mlebu log . Yen jeneng login iki minangka string kosong, tilde diganti karo nilai parameter shell HOME . Yen HOME ora disetel, direktori asal panganggo nglakokake cangkang kasebut diganti. Yen ora, ater-ater panerus diganti karo direktori ngarep sing digandhengake karo jeneng login kasebut.

Yen awalan tilde minangka `~ + ', nilai saka variabel cangkang PWD bakal ngganti awujud tilde. Yen awalan tilde yaiku `~ - ', nilai variabel cangkang OLDPWD , yen wis diowahi , diganti. Yen karakter ing ngisor iki tilde ing atine tilde kalebu nomer N , secara opsional diawali dening `+ 'utawa` -', awalan tilde diganti karo unsur sing cocog saka tumpukan direktori, amarga bakal ditampilake kanthi dhasar diresmikake kanthi awujud tilde minangka argumen. Yen karakter ing ngisor iki tilde ing atine tilde kalebu nomer tanpa leading `+ 'utawa` -', `+ 'dianggep.

Yen jeneng mlebu ora bener, utawa ekspansi tilde gagal, tembung kasebut ora diganti.

Saben tugas assignment dipriksa kanggo prefix sing ora ditulis ing ngisor iki : utawa = . Ing kasus kasebut, expansion tilde uga dileksanakake. Akibate, siji bisa nggunakake jeneng file kanthi tildes ing tugas kanggo PATH , MAILPATH , lan CDPATH , lan cangkang menehi nilai sing ditambahi.

Parameter Ekspansi

Karakter ` $ 'ngenalake expansion parameter, substitusi perintah, utawa ekspansi aritmatika. Jeneng parameter utawa simbol sing bakal ditambahi bisa diselehake ing klient, sing opsional nanging ditulihake kanggo nglindhungi variabel sing bakal ditambahi saka karakter saksuwene nyusul sing bisa diinterpretasikake minangka bagian saka jeneng kasebut.

Nalika penyonggo digunakake, penjepitan pungkasan sing cocog yaiku `` `ora bisa lolos dening backslash utawa ing sawijining string sing dicutat, lan ora ana ing ekspansi aritmatika sing ditrapake, substitusi perintah, utawa ekspansi paramter.

Nilai parameter diganti. Para pendaki diwajibake nalika paramèter kasebut minangka parameter posisional kanthi luwih saka siji digit, utawa nalika paramèter kasebut diiringi karakter sing ora bisa diinterpretasikaké minangka bagéan saka asma kasebut.

Ing saben kasus ing ngisor iki, tembung kasebut tundhuk marang expansion, expansion parameter, substitution command, lan expansion arithmetic. Nalika ora nindakake expansion substring, nyoba tes kanggo paramèter sing ora diolah utawa ora ditemtokake; ora ngasilake asil titik loro ing test mung kanggo parameter sing ora diilangake.

Gunakake Nilai Default . Yen parameter ora diisi utawa ora ditemtokake, ekspansi tembung kasebut diganti. Yen ora, nilai parameter kasebut diganti.

Temtokake Default Values . Yen parameter ora diisi utawa ora ditemtokake, ekspansi tembung kasebut diwenehi parameter . Nilai parameter kasebut banjur diganti. Parameter posisi lan paramèter spesial ora bisa ditampa kanthi cara iki.

Nampilake kesalahan yen Null utawa Unset . Yen parameter kothak utawa ora ditemtokake, ekspansi tembung (utawa pesen sing ditrapake yen tembung ora ana) ditulis kanggo kesalahan standar lan cangkang, yen ora interaktif, metu. Yen ora, nilai parameter kasebut diganti.

Gunakake Nilai Alternatif . Yen parameter ora ana utawa ora diowahi, ora ana sing diganti, yen tembung sing wis ditambahake diganti.

Ngembangaké jeneng-jeneng variabel sing jenengé diwiwiti nganggo ater-ater , dipisahaké déning karakter pisanan saka variabel khusus IFS .

Dawa ing aksara saka nilai parameter diganti. Yen parameter * utawa @ , angka kasebut diganti minangka jumlah paramater posisi. Yen parameter minangka jeneng array sing dicenthang * utawa @ , nilai kasebut diganti minangka nomer unsur ing array.

Tembung wis ditambahake kanggo ngasilake pola kaya ing pathname expansion. Yen pola cocog karo wiwitan nilai parameter , mula asil ekspansi punika paramèter paramèter parameter kanthi pola pencocokan paling cendhak (kasus `` # '') utawa pola pencocokan paling dawa (`` ## ' 'case) dibusak. Yen parameter punika @ utawa * , operasi pambusakan pola diterapake kanggo saben parameter posisi ing gilirannya, lan ekspansi iku dhaptar asil. Yen parameter minangka variabel array sing diarani @ utawa * , operasi pengikisan pola diterapake kanggo saben anggota array ing giliran, lan ekspansi punika dhaptar asil.

Tembung wis ditambahake kanggo ngasilake pola kaya ing pathname expansion. Yen pola cocog karo bagean sing ngluwihi watesan parameter sing diperluas, mula asil ekspansi punika paramèter paramèter parameter kanthi pola pencocokan paling cendhak (kasus ` % '') utawa pola pencocokan paling dawa (` ` % % '') dibusak. Yen parameter punika @ utawa * , operasi pambusakan pola diterapake kanggo saben parameter posisi ing gilirannya, lan ekspansi iku dhaptar asil. Yen parameter minangka variabel array sing diarani @ utawa * , operasi pengikisan pola diterapake kanggo saben anggota array ing giliran, lan ekspansi punika dhaptar asil.

Pola diperluas kanggo ngasilake pola kaya ing pathname expansion. Parameter kasebut ditambahake lan pola sing paling dawa saka pola kasebut diganti karo senar . Ing wangun pisanan, mung pertandhingan pisanan diganti. Wangun liya nyebabake kabeh pola sing cocog diganti karo senar . Yen pola diwiwiti kanthi # , mesthine cocog ing awal parameter parameter sing diperluas. Yen pola diwiwiti kanthi % , kudu cocog ing mburi parameter paramèter sing ditambahi. Yen string ora ana, pola sing cocog bakal kabusak lan pola / pola kasebut bisa uga dilirwakaké. Yen parameter punika @ utawa * , operasi substitusi diterapake kanggo saben parameter posisi ing gilirannya, lan ekspansi iku dhaptar asil. Yen parameter iku sawijining variabel array sing diarani @ utawa * , operasi substitusi diterapake kanggo saben anggota array ing giliran, lan ekspansi iku dhaptar asil.

Perintah Pengganti

Substitusi komando ngidini output saka printah kanggo ngganti jeneng printah. Ana rong wujud:

$ ( command )

utawa

` command`

Bash nindakake expansion kanthi ngeksekusi perintah lan ngganti perintah substitusi karo output standar perintah, karo garis anyar mburine mbusak. Newline sing disedhiyakake ora dibusak, nanging bisa dibusak nalika pamisahan tembung. Penggantian perintah $ ( file kucing ) bisa diganti kanthi setara nanging luwih cepet $ (< file ).

Nalika bentuk substitusi backquote lawas digunakake, backslash tetep makna harfiah kajaba nalika diiringi $ , ` , utawa \ . Ing backquote pisanan ora didahului dening backslash terminates substitusi printah. Nalika nggunakake formulir $ ( command ), kabeh karakter ing antarane kurung arupa perintah; ora ana sing dianggep khusus.

Panggunaan substitusi bisa disambung. Kanggo nest nalika nggunakake wangun sing dibandhingake maneh, nyingkiri backquotes ing jero karo backslashes.

Yen substitusi katon ing kuotasi ganda, tembung pamisah lan pathname expansion ora dileksanakake ing asil.

Ekspansi aritmatika

Ekspansi aritmetika ngidini evaluasi ekspresi aritmetika lan substitusi asil. Format kanggo ekspansi aritmatika yaiku:

$ (( ungkapan ))

Ekspresi kasebut dianggep kaya-kaya ana ing kutipan ganda, nanging kutipan kaping pindho ing jero kurung ora dianggep khusus. Kabeh tanda-tandha ing ekspresi kasebut ngalami expansion parameter, expansion string, substitution command, lan quoting removal. Substitusi aritmetika bisa disambungake.

Evaluasi ditindakake miturut aturan sing kadhaptar ing ngisor iki kanthi EVALUASI ARISMETIK . Yen expression ora bener, bash prints pesen nuduhake gagal lan ora ana substitusi.

Proses Penggantian

Proses substitusi didhukung ing sistem sing ndhukung jenenge pipa ( FIFOs ) utawa / dev / fd menehi jeneng file mbukak. Butuh bentuk <( daftar ) utawa > ( dhaptar ) . Dhaptar proses dikelola kanthi input utawa output sing disambungake menyang FIFO utawa sawetara berkas ing / dev / fd . Jeneng berkas iki dililakaké minangka argumen perintah saiki minangka asil saka ekspansi. Yen formulir > ( dhaftar ) digunakake, nulis file bakal nyedhiyake input kanggo daftar . Yen formulir <( dhaftar ) digunakake, file kasebut dilewati minangka argumen sing kudu diwaca kanggo entuk output daftar .

Nalika kasedhiya, proses penggantian dianakake bebarengan bebarengan karo parameter lan expansion variabel, substitusi perintah, lan ekspansi aritmetika.

Tembung pamisahan

Cangkang ngetokake asil ekspansi parameter, substitusi perintah, lan ekspansi aritmetik sing ora kedadeyan ing kuotasi ganda kanggo pisah tembung .

Cangkang nganggep saben karakter IFS minangka delimiter, lan pamisahan asil ekspansi liyane dadi tembung ing karakter kasebut. Yen IFS ora kasedhiya, utawa angka sing bener yaiku , minangka standar, banjur urutan karakter IFS bisa mbatesi tembung. Yen IFS duweni nilai sing luwih dhuwur tinimbang standar, banjur urutan spasi lan spasi papan whitespace diabaikan ing wiwitan lan pungkasan tembung, anggere spasi whitespace ana ing nilai IFS (karakter whitespace IFS ). Saben karakter ing IFS sing dudu IFS spasi, bebarengan karo karakter spasi IFS ing jejer, mbatesi lapangan. Sabanjure karakter space whitespace uga dianggep minangka pambatas. Yen nilai IFS ora ana, ora ana pisah tembung.

Alesan sing jelas nolak ( "" utawa '' ) disimpen. Argumen null implisit ora kacathet, amarga ekspansi parameter sing ora ana nilai, bakal dibusak. Yen parameter sing ora ana regane ditambahake ing kuotasi ganda, asil argument nol lan disimpen.

Elinga yen ora ana ekspansi, ora ana pisah.

Pathname Expansion

Sawise tembung bubar, kajaba opsi -f wis disetel, bash mindai saben tembung kanggo karakter * ,? , lan [ . Yen salah siji saka karakter kasebut katon, tembung kasebut dianggep minangka pola , lan diganti karo daftar jeneng file miturut abjad sing cocog karo pola kasebut. Yen ora ana jeneng file cocog sing ditemokake, lan opsi shell nullglob dipatèni, tembung kasebut ora diganti. Yen pilihan nullglob disetel, lan ora ana sing cocog, tembung kasebut dibusak. Yen opsi nocaseglob bisa diaktifake, match kasebut bisa ditindakake tanpa mengaruhi kasus karakter alfabet. Nalika pola digunakake kanggo pathname expansion, karakter ``. '' Ing wiwitan jeneng utawa langsung sawise garis miring kudu dicocogake tegas, kajaba pilihan shell dotglob disetel. Nalika cocog pathname, karakter slash kudu tansah dicocogake kanthi tegas. Ing kasus liyane, karakter ``. '' Ora dianggep istimewa. Waca katrangan saka toko ing sangisore miturut SHELL BUILTIN COMMANDS kanggo katrangan saka opsi shell, dobel , lan dotglob .

Variabel shell GLOBIGNORE bisa digunakake kanggo matesi set jeneng file sing cocog karo pola . Yen GLOBIGNORE disetel, saben jeneng berkas cocog sing uga cocog karo salah sawijining pola ing GLOBIGNORE dibusak saka dhaptar sing cocog. Jeneng berkas ``. '' Lan `` .. '' tansah digathekno, sanajan GLOBIGNORE disetel. Nanging, setelan GLOBIGNORE duweni efek ngijinke pilihan shell dotglob , supaya kabeh jeneng file liyane sing diwiwiti kanthi ``. '' Bakal cocog. Kanggo njaluk prilaku lawas saka ora nggatekake jeneng berkas diwiwiti karo ``. '' , Gawe ``. * '' Salah sawijining pola ing GLOBIGNORE . Opsi dotglob dipateni nalika GLOBIGNORE ora disetel .

Pola Cocog

Saben karakter sing katon ing pola, kajaba karakter pola khusus diterangake ing ngisor iki, cocog dhewe. Karakter NUL bisa uga ora dumadi ing pola. Karakter pola khusus kudu dipetik yen bakal dicocogake kanthi harfiah.

Karakter pola khusus duwe makna ing ngisor iki:

*

Cocog senar, kalebu string kosong.

?

Cocog sembarang karakter siji.

[...]

Cocog salah siji karakter sing ditempelake. Sabanjure karakter sing dipisahake dening sawijining hyphen ngandhut ekspansi; karakter apa wae sing ana ing antarane rong karakter kasebut, kalebu, kanthi urutan collating lokal lan karakter, dicocogake. Yen karakter pisanan ing ngisor iki [ iku ! utawa sawijining karakter sing ora dilampirake. Urutan urutan pamisah ing ekspresi jangkauan ditemtokake dening lokal saiki lan nilai saka variabel cangkang LC_COLLATE , yen wis disetel. A - bisa dicocogake kanthi kalebu minangka karakter pisanan utawa pungkasan ing pesawat kasebut. A ] bisa dicocogake kanthi kalebu minangka karakter pisanan ing pesawat kasebut.

Ing [ lan ] , kelas karakter bisa ditemtokake kanthi nggunakake sintaks [: kelas :] , ing ngendi kelas minangka salah sawijining kelas sing ditemtokake ing standar POSIX.2:

alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit
Kelas karakter cocog karo karakter sing kalebu kelas kasebut. Tembung kelas karakter cocog huruf, digit, lan karakter _.

Ing [ lan ] , kelas ekualisine bisa ditemtokake nggunakake sintaks [= c =] , sing cocog karo kabeh karakter kanthi bobot collation sing padha (kaya sing ditemtokake dening lokal saiki) minangka karakter c .

Ing [ lan ] , sintaks [. simbol .] cocog simbol simbol gabungan.

Yen opsi shell extglob diaktifake nggunakake toko sing dibangun , sawetara operator pencocokan pola sing luwih lengkap diakoni. Ing gambaran ngisor iki, dhaptar pola yaiku dhaptar pola siji utawa luwih sing dipisahake dening | . Pola gabungan bisa dibentuk nganggo salah siji utawa luwih pola sub pola kasebut:

? ( pola-daftar )

Cocog nol utawa siji kejadian pola kasebut

* ( pola-daftar )

Cocog nol utawa luwih saka pola kasebut

+ ( pola-daftar )

Cocog siji utawa luwih patrap pola tartamtu

@ ( pola-daftar )

Cocog kanthi persis siji pola kasebut

! ( pola-daftar )

Cocog apa wae kajaba salah sijine pola sing diwenehake

Nolak Kutip

Sawisé ekspansi sadurungé, kabèh tandha ora ditemokaké karakter \ , ' , lan " sing ora ana ing salah sawijining ekspansi ing ndhuwur bakal dibusak.

REDIRECTION

Sadurunge nindakake perintah kasebut, input lan output bisa dialihake nganggo notasi khusus sing diinterpretasikake dening cangkang. Redirection uga bisa digunakake kanggo mbukak lan nutup file kanggo lingkungan eksekusi cangkang saiki. Operator redirection ing ngisor iki bisa ndhisiki utawa katon ana ing ngendi wae ing printah prasaja utawa bisa tindakake perintah . Pangalihan ditindakake kanthi urutan kasebut, saka kiwa utawa tengen.

Ing ngisor iki ana deskripsi, yen file descriptor number diabaikan, lan karakter pisanan operator redirection yaiku < , redireksi kasebut yaiku input standar (file descriptor 0). Yen karakter pisanan operator redireksi iku > , redireksi kasebut nuduhake output standar (file descriptor 1).

Tembung kasebut miturut operator redirection ing ngisor iki, kajaba digunakake nyathet, ditrapake kanggo ngrampungake expansion, expansion tilde, expansion parameter, substitusi perintah, ekspansi aritmatika, penghapusan kutipan, expansion pathname, lan pisah tembung. Yen nglebokake luwih saka siji tembung, kacepetan laporan kesalahan.

Elinga yen urutan pangalihan iku penting. Contone, perintah kasebut

ls > dirlist 2 > & 1

ngarahake loro standar output lan kesalahan standar kanggo direkam file, nalika printah

ls 2 > & 1 > dirlist

mung ngarahake output standar kanggo diarani direkam , amarga kesalahan standar diduplikasi minangka output standar sadurunge output standar dialihake menyang dirlist .

Bash nangani sawetara jeneng filenya nalika ditrapake minangka redirect, kaya sing diterangake ing ngisor iki:

/ dev / fd / fd

Yen fd minangka integer sing bener, file descriptor fd diduplikasi.

/ dev / stdin

Gambar deskriptor 0 wis diduplikasi.

/ dev / stdout

Gambar deskriptor 1 diduplikasi.

/ dev / stderr

Gambar deskriptor 2 diduplikasi.

/ dev / tcp / host / port

Yen inang iku jeneng host sing bener utawa alamat Internet, lan port minangka nomer port integer utawa jeneng layanan, bash ngupaya mbukak sambungan TCP menyang soket sing cocog.

/ dev / udp / host / port

Yen inang iku jeneng host sing bener utawa alamat Internet, lan port minangka nomer port integer utawa jeneng layanan, bash nyoba mbukak sambungan UDP menyang soket sing cocog.

Gagal mbukak utawa nggawe file nyebabake redirection gagal.

Ngalihake Input

Pangalihan input nyebabake file sing jenenge asil saka ekspansi tembung sing bakal dibukak kanggo maca ing file descriptor n , utawa input standar (file descriptor 0) yen n ora kasebut.

Format umum kanggo ngarahake masukan yaiku:

[ n ] < tembung

Ngalihake Output

Pangalihan output nyebabake file sing asale saka asil ekspansi tembung sing bakal dibukak kanggo nulis ing descriptor file n , utawa output standar (file descriptor 1) yen n ora kasebut. Yen file ora ana, digawe; yen wis ana, truncated to zero size.

Format umum kanggo ngarahake output yaiku:

[ n ] > tembung

Yen operator redireksi iku > , lan opsi noclobber kanggo set builtin wis aktif, redirection bakal gagal yen file sing asale saka ekspansi tembung sing ana lan minangka file biasa. Yen operator redireksi iku > | , utawa operator redireksi iku > lan opsi noclobber kanggo prangkat builtin ora aktif, redireksi dileksanakake sanajan file kasebut dijenengi tembung .

Tambahan Output Dialihake

Pangalihan output ing mode iki nyebabake file sing jenenge dadi asil saka ekspansi tembung sing bakal dibukak kanggo append ing file descriptor n , utawa output standar (file descriptor 1) yen n ora kasebut. Yen file ora ana, wis digawe.

Format umum kanggo nambah output yaiku:

[ n ] >> tembung

Redirecting Output Standar lan Kesalahan Standar

Bash ngidini loro output standar (file descriptor 1) lan output kesalahan standar (berkas deskriptor 2) bakal dialihake menyang file sing asale saka ekspansi tembung karo konstruksi kasebut.

Ana rong format kanggo ngarahake output standar lan kesalahan standar:

&> tembung

lan

> & tembung

Saka rong bab kasebut, sing pisanan disenengi. Iki cocog kanthi semantis

> tembung 2 > & 1

Kene Dokumen

Jenis redireksi iki ngandhani cangkang kanggo maca input saka sumber saiki nganti baris sing mung ngemot tembung (karo ora ana sing mburi) sing katon. Kabeh baris sing maca nganti titik kasebut banjur digunakake minangka input standar kanggo dhawuhe.

Format kene-dokumen yaiku:

<< [ - ] tembung kene- delimiter

Ora ana expansion parameter, substitusi perintah, expansion aritmetik, utawa expansion pathname dileksanakake ing tembung . Yen ana karakter sing dikutip, potongan kasebut minangka asil kutipan kutipan tembung , lan garis ing kene ora ditambahi. Yen tembung ora kacathet, kabeh baris ing kene-dokumen diwatesi karo expansion parameter, substitusi perintah, lan ekspansi aritmatika. Ing kasus pungkasan, urutan karakter \ diabaikan, lan \ kudu digunakake kanggo ngutip karakter \ , $ , lan ` .

Yen operator redireksi iku << - , banjur kabeh karakter tab utama wis dilorot saka garis input lan baris sing ana delimiter . Iki ngidini kene-dokumen ing skrip shell bisa diwenehi indikator kanthi cara alami.

Kene Strings

A varian saka kene dokumen, formate yaiku:

<<< tembung

Tembung wis ditambahake lan diwenehake marang printah ing input standar.

Duplicating Descriptors Gambar

Operator redirection

[ n ] <& tembung

digunakake kanggo duplikat deskriptor file input. Yen tembung ngembang menyang siji utawa luwih digit, deskriptor file sing dilambari n digawe minangka salinan deskriptor file kasebut. Yen digit ing tembung ora nemtokake deskriptor file mbukak kanggo input, ana kesalahan redireksi. Yen tembung ngetokake - , file descriptor n ditutup. Yen n ora ditemtokake, input standar (file descriptor 0) digunakake.

Operator

[ n ] > & tembung

digunakake uga kanggo duplikat output deskriptor file. Yen n ora ditemtokake, output standar (file descriptor 1) digunakake. Yen digit ing tembung ora nemtokake deskriptor file sing mbukak kanggo output, ana kesalahan redireksi. Minangka kasus khusus, yen n diabaikan, lan tembung ora nggedhekake siji utawa luwih digit, keluaran standar lan kesalahan standar diarahake kaya sing kasebut ing sadurungé.

Ngalih Deskriptor Gambar

Operator redirection

[ n ] <& angka -

ngalih berkas deskriptor digit kanggo ngajokaken descriptor n , utawa input standar (file descriptor 0) yen n ora kasebut. digit ditutup sawise di duplikat menyang n .

Kajaba iku, operator redirection

[ n ] > & digit -

ngalih berkas deskriptor digit kanggo ngajukake deskriptor n , utawa output standar (file descriptor 1) yen n ora kasebut.

Mbukak Deskriptor Gambar kanggo Reading and Writing

Operator redirection

[ n ] <> tembung

nyebabake file sing jenenge ekspansi tembung sing bakal dibukak kanggo loro maca lan nulis ing descriptor file n , utawa ing deskriptor file 0 yen n ora kasebut. Yen file ora ana, wis digawe.

LAMPUNG

Aliases ngidini senar diganti kanggo tembung nalika digunakake minangka tembung pisanan saka prasaja prasaja. Cangkang nahan dhaptar alias sing bisa disetel lan ora diowahi karo alias lan uniniti sing didhuwurake perintah (pirsani SHELL BUILTIN COMMANDS ing ngisor iki). Tembung pisanan saben command, yen ora ditulis, wis dicenthang kanggo ndeleng manawa ana alias. Yen mangkono, tembung kasebut diganti karo teks alias. Jeneng alias lan teks panggantos bisa ngemot input cangkang sing bener, kalebu metacharacters sing kacathet ing ndhuwur, kajaba jeneng alias ora ana = . Tembung pisanan teks panggantos diuji kanggo alias, nanging tembung sing identik karo alias sing ditambahi ora ditambahi wektu liya. Iki tegese salah siji alias ls kanggo ls -F , kayata , lan bash ora nyoba kanggo rekursif nggedhekake teks panggantos. Yen karakter pungkasan alias ora ana, kothong kasebut uga diarani alias ekspansi.

Jeneng alias digawe lan didaftarake karo perintah alias , lan dibusak karo perintah unalias .

Ora ana mekanisme kanggo nggunakake argumen ing teks panggantos. Yen argumentate dibutuhake, fungsi shell kudu digunakake (ndeleng FUNGSI ngisor).

Aliases ora dikembangake nalika cangkang ora interaktif, kajaba pilihan cangkang expand_aliases disetel nganggo shopt (waca gambaran shopt miturut SHELL BUILTIN COMMANDS ngisor).

Aturan babagan definisi lan panggunaan jeneng alias kaya bingung. Bash tansah maca paling ora siji baris lengkap input sadurunge ngeksekusi sembarang perintah ing baris kasebut. Aliases dikembangaké nalika printah dibaca, ora nalika diolah. Mulane, definisi alias ditampilake ing baris sing padha karo printah liyane sing ora ditrapake nganti baris input sing dibaca. Pangaturan saksine definisi alias ing baris kasebut ora kena pengaruh alias anyar. Prilaku iki uga dadi masalah nalika fungsi dieksekusi. Aliases dikembangake nalika definisi fungsi dibaca, ora nalika fungsi dieksekusi, amarga definisi fungsi dhewe minangka komando senyawa. Minangka akibat, alias sing ditemtokake ing sawijining fungsi ora kasedhiya nganti sawise fungsi kasebut dileksanakake. Kanggo aman, gunakake definisi alias ing baris sing kapisah, lan aja nganggo alias ing printah komando.

Kanggo meh saben waé, alias diganti dening fungsi shell.

FUNGSI

Fungsi shell, ditetepake minangka ing ndhuwur ing SHELL GRAMMAR , nyimpen serangkaian perintah kanggo eksekusi lajeng. Nalika jeneng fungsi shell digunakake minangka jeneng printah prasaja, dhaptar perintah sing ana hubungane karo jeneng fungsi kasebut dileksanakake. Fungsi dieksekusi ing konteks cangkang saiki; ora ana proses anyar gawe interpretasi (kontras karo eksekusi script shell). Nalika fungsi dieksekusi, argumen ing fungsi dadi paramèter posisi sajrone eksekusi. Parameter khusus # dianyari kanggo nggambarake owahan. Posisi posisi 0 ora diganti. Variabel FUNCNAME disetel dadi jeneng fungsi nalika fungsi wis dileksanakake. Kabeh aspek liyane saka lingkungan eksekusi cangkang identik antarane fungsi lan pemanggil kajaba sing DEBUG trap (ndeleng gambaran saka sworo cangkem sing dibangun ing SHELL BUILTIN COMMANDS ngisor) ora diwenehi warisan kajaba fungsi kasebut diwenehi atribut tilak ( waca gambaran saka dibangun ing ngisor iki).

Variabel lokal kanggo fungsi kasebut bisa didekekno karo perintah builtin lokal . Biasane, variabel lan nilai-nilai sing dituduhake antarane fungsi lan pemanggil.

Yen printah bali dibangun ing fungsi, fungsi rampung lan eksekusi diterusake karo printah sabanjuré sawise fungsi fungsi kasebut. Nalika fungsi rampung, nilai paramèter posisi lan parameter khusus # bakal dibalèkaké menyang angka-angka sing padha sadurungé eksekusi fungsi.

Jeneng lan definisi bisa didaftar kanthi opsi -f kanggo nyat LIYANE Opsi -F kanggo ngumumake utawa typeset bakal nampilake jeneng fungsi mung. Fungsi bisa diekspor supaya subshells kanthi otomatis wis ditemtokake karo opsi -f kanggo ekspor .

Fungsi bisa dadi rekursif. Ora ana watesan sing ditrapake ing nomer panggilan rekursif.

EVALUASI ARITHMETIK

Cangkang iki ngidinake ekspresi aritmetik sing bakal dievaluasi, ing kahanan tartamtu (waca supaya perintah dibangun lan Ekspansi aritmatika ). Evaluasi wis rampung ing bilah jembar tetep kanthi ora ngeculake kebanjiran, sanajan divisi kanthi 0 ditangkap lan ditandai minangka kesalahan. Operator lan precedence lan associativity padha karo basa C. Dhaptar operator ing ngisor iki diklompokaké dadi tingkat pangaturan sing padha-precedence. Tingkat dicantumake kanthi urutan sing luwih cedhak.

id ++ id -

variabel post-increment lan post-decrement

++ id - id

pre-increment variable lan pre-decrement

- +

unary minus plus plus

! ~

mlebu logical lan bitwise

**

exponentiation

* /%

multiplication, divisi, sisa

+ -

tambahan, subtraction

<< >>

left lan right shift

<=> = <>

perbandingan

==! =

kesetaraan lan ketimpangan

&

bitwise lan

^

bitwise eksklusif UTAWA

Deleng uga

bitwise OR

&&

logis lan

||

logis OR

expr ? expr : expr

evaluasi sing kondisional

= * = / =% = + = - = << = >> = & = ^ = | =

tugas

expr1 , expr2

koma

Variabel Shell diijini minangka operan; Ekspansi parameter ditindakake sadurunge ekspresi dievaluasi. Ing sawijining ekspresi, variabel shell uga bisa kasebut kanthi jeneng tanpa nggunakake sintaksis ekspansi parameter. Nilai saka variabel dievaluasi minangka ekspresi aritmetika nalika ditrima. Variabel kangkang kudu ora duwe atribut atribut sing diaktifake kanggo digunakake ing ekspresi.

Constants with leading 0 diartekake minangka nomer octal. A leading 0x or 0X nyebataken hexadecimal. Yen ora, angka bakal nentukake [ base # ] n, ing ngendi basa minangka nomer desimal antarane 2 lan 64 minangka basis aritmetika, lan n minangka nomer ing basa kasebut. Yen basis # ilangi, banjur basis 10 digunakake. Angka luwih saka 9 diwakili dening huruf cilik, huruf gedhe, @, lan _, ing urutan kasebut. Yen basa kurang saka utawa witjaksono karo 36, aksara cilik lan huruf gedhe bisa digunakake kanthi interchangably kanggo makili nomer antarane 10 lan 35.

Operator kudu dievaluasi supaya bisa dideleng. Sub-ekspresi ing kurung dievaluasi pisanan lan bisa ngatasi aturan kasebut ing ndhuwur.

EXPRESSIONS CONDITIONAL

Ekspresi conditional digunakake dening [[ komando senyawa lan test lan [ instruksi dibangun kanggo nguji atribut file lan nglakoni pambanding lan aritmetika banding. Ekspresi dibentuk saka primata unary utawa binary ing ngisor iki. Yen ana argumen berkas ing salah sawijining primata yaiku / dev / fd / n , banjur berkas deskriptor n wis dicenthang. Yen argumen file menyang salah sawijining primata iku salah siji saka / dev / stdin , / dev / stdout , utawa / dev / stderr , file descriptor 0, 1, utawa 2, dicek.

-a file

Bener yen file ana .

-b file

Bener yen file ana lan minangka pamblokiran khusus file.

-c file

Bener yen file ana lan minangka file khusus karakter.

-d file

Bener yen file ana lan direktori.

-e file

Bener yen file ana .

-f file

Bener yen file wis ana lan minangka file biasa.

-g file

Bener yen file wis ana lan set-grup-id.

-h file

Bener yen file ana lan minangka pranala simbolis.

-k file

Bener yen file ana lan bit sing "lengket" disetel.

-p file

Bener yen file ana lan pipa sing dijenengi (FIFO).

-r file

Bener yen file ana lan bisa diwaca.

-s file

Bener yen file wis ana lan ukuran luwih saka nol.

-t fd

Bener yen file descriptor fd mbukak lan nuduhake menyang terminal.

-u file

Bener yen file ana lan set-user-id dicokot.

-w file

Bener yen file ana lan bisa ditulis.

-x file

Bener yen file ana lan bisa dieksekusi.

-O file

Bener yen ana file lan diduweni dening id panganggo sing efektif.

-G file

Bener yen file ana lan diduweni dening id grup efektif.

-L file

Bener yen file ana lan minangka pranala simbolis.

-S file

Bener yen file ana lan soket.

-N file

Bener yen berkas wis ana lan wis diowahi wiwit pungkasan diwaca.

file1 - nt file2

Bener yen file1 luwih anyar (miturut tanggal modifikasi) saka file2 , utawa yen file1 ana lan file2 ora.

file1 - ot file2

Bener yen file1 luwih lawas tinimbang file2 , utawa file2 ana lan file1 ora.

file1 -ef file2

Bener yen file1 lan file2 waca piranti lan nomer inode sing padha.

-o pilihen

Bener yen jeneng bukak opsi shell aktif. Deleng dhaptar pilihan miturut dhaptar pilihan -o kanggo set sing dibangun ing ngisor iki.

-z senar

Bener yen dawa senar nol.

-n senar

senar

Bener yen dawa senar non-nol.

string1 == string2

Bener yen senar padha. = bisa digunakake ing panggonan == kanggo ketaatan POSIX sing ketat.

string1 ! = string2

Bener yen senar ora padha.

string1 < string2

Bener yen string1 ngurut sadurunge string2 lexicographically ing lokal saiki.

string1 > string2

Bener yen string1 ngurutake sawise string2 lexicographically ing lokal saiki.

arg1 OP arg2

OP minangka salah siji saka -eq , -ne , -lt , -le , -gt , utawa -ge . Iki binary operator aritmetika bali bener yen arg1 padha karo, ora padha karo, kurang saka, kurang saka utawa witjaksono, luwih gedhe tinimbang, utawa luwih saka utawa padha kanggo arg2 , saben. Arg1 lan arg2 bisa dadi integer negatif utawa negatif.

PURWAKA PURWAKA SIMPLE

Nalika printah sederhana dieksekusi, cangkang nampilake ekspansi, tugas, lan pangalihan ing ngisor iki, saka kiwa utawa tengen.

1. Tembung sing ditulis dening parser minangka assignment variabel (sing sadurunge jeneng printah) lan pangalihan disimpen kanggo proses mengko.

2. Tembung sing ora ana assignment utawa redirections sing ditambahake. Yen ana tembung tetep sawise ekspansi, tembung pisanan dijupuk dadi jeneng printah lan tembung sing isih ana yaiku argumen.

3.Redirections dileksanakake minangka diterangake ing ndhuwur ing REDIRECTION .

4. Teks sawise = ing saben assignment maneko rupo ngalami expansion tilde, ekspansi parameter, substitusi perintah, ekspansi aritmatika, lan kutipan kutipan sadurunge ditugasake marang variabel.

Yen ora ana asil jeneng printah, assignment variabel mengaruhi lingkungan cangkang saiki. Yen ora, variabel kasebut ditambahake marang lingkungan printah eksekusi lan ora mengaruhi lingkungan cangkang saiki. Yen ana sing menehi assignment nemtokake nilai menyang variabel bebas, kesalahan ana, lan printah metu karo status non-nol.

Yen ora ana asil jeneng printah, pangalihan ditindakake, nanging ora kena pengaruh lingkungan cangkang saiki. Kesalahan redirection nyebabake printah metu karo status non-nol.

Yen ana jeneng printah sing ditinggalake sawise expansion, eksekusi diterusake minangka diterangake ing ngisor iki. Yen ora, printah metu. Yen salah sawijining ekspansi sing nduweni substitusi dhawuhe, status pamrentahan kasebut minangka status exit saka substitusi pangowahan pungkasan sing dilakoni. Yen ora ana substitusi ing printah, printah kasebut metu karo status nol.

MANDIRI PENGECAHAN

Sawise printah dipérang dadi tembung, yen ana dhaptar prasaja lan dhaptar pilihan argumèn, tumindak kasebut dijupuk.

Yen jeneng printah ora ana garis miring, cangkang nyoba nggoleki. Yen ana fungsi shell sing jenenge, fungsi kasebut dijupuk kaya sing kasebut ing ndhuwur ing FUNGSI . Yen jeneng ora cocog karo fungsi, cangkang nelusur dhaptar kasebut ing daftar shell shell. Yen ana match sing ditemokake, buildin dijupuk.

Yen jeneng kasebut minangka fungsi shell utawa builtin, lan ora ana garis miring, bash nelusur saben unsur PATH kanggo direktori sing ngemot file eksekusi kanthi jeneng kasebut. Bash migunakake tabel hash kanggo ngelingi pathname jeneng file eksekusi (ndeleng hash ing SHELL BUILTIN COMMANDS ngisor). Panelusuran lengkap direktori ing PATH dilakokaké mung yen printah ora ditemokake ing tabel hash. Yen panelusuran ora kasil, cangkang print pesen kesalahan lan ngasilake status metu saka 127.

Yen panelusuran wis sukses, utawa yen jeneng printah ngandhut siji utawa luwih slash, cangkang ngeksekusi program sing dijenengi ing lingkungan eksekusi sing kapisah. Argument 0 disetel kanggo jeneng sing diwenehake, lan argumen sing isih kanggo perintah kasebut disetel marang argumen sing diwenehake, yen ana.

Yen eksekusi gagal amarga file kasebut ora bisa dieksekusi, lan file kasebut ora minangka direktori, dianggep minangka skrip shell , file sing ngemot perintah shell. A subshell diwiwiti kanggo nglakokaké. Ing ngisor iki subskrip reinitializes dhewe, supaya efek minangka kaya cangkang anyar wis dipunginakke kanggo nangani script, kanthi pengecualian sing lokasi printah eling dening tiyang sepah (ndeleng hash ngisor ing SHELL BUILTIN COMMANDS ) sing disimpen dening bocah.

Yen program kasebut minangka file sing diwiwiti kanthi #! , sisa baris pisanan nemtokake interpreter kanggo program kasebut. Cangkang ngeksekusi interpreter kasebut ing sistem operasi sing ora bisa ngatasi format bisa dieksekusi piyambak. Argumentasi menyang interpreter kasusun saka argumen opsional siji saksampune jeneng interpreter ing baris pertama program, diiringi jeneng program, diikuti dening argumen perintah, yen ana.

LINGKUNGAN LINGKUNGAN KOMAND

Cangkang duwe lingkungan eksekusi , sing dumadi saka:

* mbukak file sing diwarisake dening cangkang ing invocation, minangka diowahi dening redirections diwenehake menyang exec builtin

* direktori wektu saiki sing disetel dening cd , pushd , utawa popd , utawa diwenehake dening cangkang ing invocation

* Masker file nggawe file sing disetel dening umask utawa diwenehi warisan saka wong tebu

* Traps saiki disetel dening sworo cangkem

* Parameter cangkang sing disetel dening assignment variable utawa karo set utawa diwenehi warisan saka wong tebu ing lingkungan

* Fungsi shell ditetepake nalika eksekusi utawa diwenehi warisan saka wong tebu ing lingkungan

* Opsi aktif ing telpon (kanthi standar utawa kanthi argumen baris perintah) utawa disetel

* opsi diaktifake dening shopt

* Alias cangkang sing ditemtokake karo alias

* Maneka proses ID, kalebu latar mburi, nilai $ , lan nilai $ PPID

Nalika prentah prasaja liyane tinimbang fungsi builtin utawa shell kudu dieksekusi, dipigunakaké ing lingkungan eksekusi kapisah sing kasusun ing ngisor iki. Kajaba digunakake nyatet, angka kasebut diwenehi warisan saka cangkang.

* file mbukak shell, ditambah modifikasi lan tambahan sing dituduhake dening redirections menyang perintah

* direktori wektu saiki

* topeng file nggawe file

* Variabel shell sing ditandhani kanggo ekspor, bebarengan karo variabel sing diekspor kanggo perintah kasebut, diterusake ing lingkungan

* Traps sing ditangkap dening cangkang disetel ulang menyang angka-angka sing diwarisake saka wong tebu, lan jebakan sing ora dikepengini dening cangkang diabaikan

A printah sing dilakoni ing lingkungan iki ora bisa nyebabake lingkungan eksekusi cangkang.

Substitusi komprèsi lan perintah asinkron dipigunakaké ing lingkungan subshell sing minangka duplikat saka lingkungan cangkang, kajaba perangkap sing ditangkap déning cangkang sing di-reset menyang nilai-nilai sing ditindakake déning cangkang saka indhuké ing invocation. Pranatan sing dibangun minangka bagean saka pipa uga dieksekusi ing lingkungan subshell. Owah-owahan sing digawe ing lingkungan subshell ora bisa mengaruhi lingkungan eksekusi cangkang.

Yen printah sing diikuti dening & lan kontrol proyek ora aktif, input standar standar kanggo perintah kasebut yaiku file kosong / dev / null . Yen ora, pranata kasebut dijupuk minangka deskriptor file saka cangkang panggilan minangka diowahi dening redirections.