Amri shell katika UNIX. Kuhusu Linux na shells tofauti za Unix

Ufafanuzi: Wazo la ganda la amri. Muhtasari wa makombora ya amri. Bash amri shell. Vipengele vya operesheni (historia ya amri, mwendeshaji "!", Vitendo kwa kubonyeza kitufe ) Kufanya kazi nyingi kwenye koni. Kazi. Usimamizi wa kazi. Vigezo vya mazingira ya kamanda wa usiku wa manane

Maendeleo ya somo

1. Katika ulimwengu wa Linux na Unix, kufanya kazi kwenye kompyuta kunahusishwa bila usawa na dhana ganda la amri- programu ambayo inaruhusu mtumiaji kuingiliana na mfumo kwa kuingiza na kutekeleza amri. Hata hivyo, ganda la amri ni programu ya kawaida. Unaweza kuthibitisha hili kwa kuweka ganda chaguo-msingi katika faili passwd programu nyingine kwa mtumiaji. Lakini ili mfumo uijue kama ganda, unahitaji kuongeza jina la faili kabisa /etc/shells.

Linux inakuja na makombora kadhaa ya amri, muundo wao unaweza kutofautiana kulingana na usambazaji, lakini unaweza kupata kila wakati:

Bourne Shell (sh) - kongwe na ya kawaida ganda la amri kwa mifumo ya Unix. Hakuna mfumo mmoja wa Unix ambapo hautumiwi.

Bourne Again Shell (bash) - Shell ya Bourne iliyopanuliwa. Ina faida nyingi za kupendeza, ndiyo sababu imekuwa maarufu hivi karibuni. Ni ganda chaguo-msingi kwa karibu usambazaji wote wa Linux.

Pia shells maarufu ni:

csh- shell, mfumo wa amri ambao uko karibu na lugha ya programu ya C

tcsh ni ganda ambalo mfumo wake wa amri uko karibu na lugha ya programu ya Tcl.

zsh ni ganda ambalo labda lina uwezo mkubwa zaidi. Ni nyongeza ya sh (bourne shell).

Kwa kuwa Linux hutumia bash kwa chaguo-msingi, tutazungumza juu yake.

2. Amri shell bash awali ilikuwa toleo lililosambazwa kwa uhuru la Bourne Shell. Baadaye, wakati uwezo wake ulikua, ilianza kuzingatiwa kuwa bidhaa huru. Sifa kuu za bash ni:

Jedwali 1.1.
Fursa Maoni
1 Kuhariri mstari Uwezo wa kuhariri amri iliyoingizwa badala ya kuiandika tena
2 Shirika la chaneli Fursa Uelekezaji kwingine wa I/O, kupanga njia kati ya kazi zilizofanywa
3 Urahisi wa matumizi Kutumia lakabu za amri, historia ya amri, kukamilisha kiotomatiki
4 Usimamizi wa kazi Uwezo wa kuunda na kusimamia kazi za nyuma
5 Kubadilika kwa ubinafsishaji Kutumia faili za hati za kuingia kwa kila mtumiaji, anuwai za mazingira

Tutaangalia uelekezaji upya wa I/O na mabomba baadaye katika Somo la 8. Kwa hivyo, tutaacha hatua hii. Lakini hebu tuzungumze kwa undani zaidi juu ya sifa za kufanya kazi katika bash na faida ambazo hutoa.

Bash huandika kiotomati amri zote zilizoandikwa na mtumiaji kwenye faili ~/.bash_historia. Ili kudhibiti faili hii, tumia amri ya historia. historia ni amri ya ujenzi bash. Hiyo ni, hakuna faili inayoweza kutekelezwa inayolingana na amri hii. Mwenyewe ganda la amri hufanya vitendo vyote. Imeingizwa bila vigezo, inaorodhesha tu amri zote zilizohifadhiwa katika faili hii na inafanana na paka ~/.bash_history amri.

Historia ya amri ipo ili kurahisisha seti ya amri zinazotumika kawaida. Historia ya amri inaweza kupangwa kupitia orodha kwa kutumia funguo <вверх>Na<вниз> .

Njia nyingine ni kuandika! na anza amri na bonyeza . Amri ya mwisho kutoka kwa historia, herufi za kwanza ambazo zinalingana na zile zilizoandikwa, zitatekelezwa. Kwa mfano:

$ !/usr /usr/bin/perl ./ptest.pl Sawa $ !xfonts bash: !xfonts: tukio halijapatikana $

Lakini tunawezaje kuharakisha ingizo ikiwa historia bado haina amri tunayohitaji? Katika kesi hii, ufunguo utatusaidia . Baada ya kuandika herufi chache za kwanza za amri (au njia ya faili), bonyeza Na Bash itakamilisha kiotomati amri yako (au kipengee cha njia). Ikiwa faili kadhaa zinafaa au hakuna faili inayofaa, mfumo utatoa ishara ya sauti. Ikiwa kifungo bonyeza tena, kisha faili kadhaa zinapokuja, mfumo utaonyesha orodha, na wakati hakuna, itarudia ishara ya sauti.

3. Kutoka kwa somo la kwanza, unapaswa kukumbuka kuwa Linux ni mazingira ya kufanya kazi nyingi. Walakini, hadi sasa bado haujaweza kuchukua fursa ya kufanya kazi nyingi. Kwa mtazamo wa kwanza, inaonekana kwamba console haikuruhusu kutumia uwezo wa multitasking wa mfumo, na tu katika mazingira ya kielelezo unaweza kuendesha programu mbili au zaidi wakati huo huo. Lakini hiyo si kweli! Console pia inafanya kazi nyingi.

Kwanza, unaweza kufungua consoles kadhaa kwa kufungua programu katika kila mmoja wao. Kubadilisha kati ya consoles kutafanywa kwa kutumia funguo Ctrl+ , Wapi x- nambari ya console.

Na hata katika console moja, kwa kutumia amri za usimamizi wa kazi, unaweza kuchukua faida kamili ya mfumo wa multitasking.

- mchanganyiko muhimu ambao hutuma ishara isiyoonekana kwa mchakato sigstop. Inakuruhusu kusimamisha utekelezaji wa mchakato wa kuhamisha udhibiti kwa mstari wa amri.

amri & - alama ya & baada ya amri hukuruhusu kuiendesha chinichini.

jobs - inaonyesha orodha ya kazi za sasa za shell.

bg<#j>- inaweka kazi #j nyuma. Kabla ya hili, kazi lazima ikomeshwe na mchanganyiko muhimu . Ikiwa kwa sasa mkalimani ana kazi moja tu, basi nambari haitaji kubainishwa.

fg<#j>- huweka kazi #j katika hali ya utekelezaji wa mbele. Kazi lazima isimamishwe na mchanganyiko muhimu au kuwa nyuma. Ikiwa kwa sasa mkalimani ana kazi moja tu, basi nambari haitaji kubainishwa.

$ man bash ^Z + Alisimamisha man bash $ vim ^Z vim + Aliacha vim $ bg 1 + man bash & $ jobs + Alisimamisha man bash + Alisimamisha vim $ fg 2 + vim $ fg + man bash $

4. Vigezo vya Mazingira- habari ya mfumo inayoonyesha mapendeleo yako, kama vile mhariri wa maandishi chaguo-msingi, njia za utafutaji za faili zinazotekelezeka, n.k., pamoja na mtumiaji, mfumo, na vitambulisho vya ganda kama vile Jina la mtumiaji, toleo la Linux, nk, linalotumiwa na mkalimani wa amri na programu zingine.

Vigezo vinavyotumiwa mara kwa mara na mtumiaji ni:

PATH - kutofautisha kuna njia ambazo mfumo unapaswa kutafuta faili zinazoweza kutekelezwa ikiwa kamili au njia ya jamaa kwao.

PWD - variable ina jina kamili la saraka ya sasa.

HOME - tofauti ina njia kamili saraka ya nyumbani ya mtumiaji.

HOSTNAME - kigezo kina jina la kompyuta.

LOGNAME - ina Jina la mtumiaji

SHELL - ina jina la shell ya amri inayoendesha katika kikao cha sasa.

USER - ina Jina la mtumiaji, ambao kikao chake kimefunguliwa kwa sasa.

Orodha ya vigezo vilivyowekwa kwenye mfumo vinaweza kuonekana kwa kutumia amri ya kuuza nje, iliyoingia bila vigezo.

Mkalimani wa amri ya bash pia ana anuwai zake. Ili vigeu vya ndani kuwa vigeu vya mfumo, lazima visafirishwe kwa kutumia amri ile ile ya kusafirisha nje. Kwa mfano:

$ export declare -x HOME="/home/gserg" declare -x HOSTNAME="WebMedia" declare -x LANG="ru_RU.KOI8-R" declare -x LOGNAME="gserg" declare -x PATH="/bin: /usr/bin:/usr/local/bin:/home/gserg/bin" declare -x PWD="/home/gserg" declare -x SHELL="/bin/bash" declare -x TERM="Eterm" tangaza -x USER="gserg" $ EDITOR=/bin/vim $ export EDITOR $ export declare -x EDITOR="/bin/vim" declare -x HOME="/home/gserg" declare -x HOSTNAME="WebMedia" tangaza -x LANG="ru_RU.KOI8-R" tangaza -x LOGNAME="gserg" tangaza -x PATH="/bin:/usr/bin:/usr/local/bin:/home/gserg/bin:"tangaza - x PWD="/home/gserg" tangaza -x SHELL="/bin/bash" tangaza -x TERM="Eterm" tangaza -x USER="gserg" $

Timu haijawekwa hufuta kibadilishaji cha mfumo. Kwa mfano:

$ unset EDITOR $ export declare -x HOME="/home/gserg" declare -x HOSTNAME="WebMedia" declare -x LANG="ru_RU.KOI8-R" declare -x LOGNAME="gserg" declare -x PATH=" /bin:/usr/bin:/usr/local/bin:/home/gserg/bin:"tangaza -x PWD="/home/gserg" declare -x SHELL="/bin/bash" declare -x TERM= "Eterm" tangaza -x USER="gserg" $

5. Katika somo la leo tutakujulisha kwa ganda lingine, lisilo la kawaida, la amri Usiku wa manane kamanda. Sio ganda la amri kwa maana ya kawaida. Hii ni meneja wa faili ya maandishi - analog Kamanda wa Norton au Mbali. Usiku wa manane kamanda ilizinduliwa na mc amri. Tutazungumza juu ya uwezo wake.

Skrini Usiku wa manane kamanda kugawanywa katika sehemu mbili. Takriban nafasi nzima ya skrini inamilikiwa na paneli mbili zilizo na orodha ya saraka na faili. Kwa chaguo-msingi, mstari wa pili kutoka chini ya skrini ni mstari wa amri, ambapo unaweza kuendesha amri za kawaida za shell, na mstari wa chini unaonyesha vidokezo vya ufunguo wa kazi ( F1-F10) Mstari wa juu wa alama una menyu ambayo unaweza kufanya kazi nyingi. Ili kutumia menyu, unaweza kubofya panya kwenye kipengee unachotaka au bonyeza kitufe F9 na kutumia funguo udhibiti wa mshale chagua kipengee unachotaka.

Paneli Usiku wa manane kamanda toa utazamaji wa saraka mbili kwa wakati mmoja. Moja ya paneli ni kazi (kwa maana kwamba mtumiaji anaweza kufanya vitendo fulani na faili na saraka ziko ndani yake). Katika kidirisha kinachotumika, jina la mojawapo ya faili au saraka limeangaziwa, na kichwa cha paneli kwenye mstari wa juu kinaangaziwa kwa rangi. Jina la kichwa ni sawa na jina la saraka inayoonyeshwa sasa. Takriban shughuli zote zinafanywa kwenye paneli inayotumika. Baadhi ya shughuli kama vile uhamisho au kunakili faili tumia paneli tulivu kama mahali ambapo kunakili, kuhamisha, n.k. hufanywa.

Sasa hebu tuzungumze kuhusu mikato ya msingi ya kibodi ambayo itakusaidia kufanya kazi nayo Usiku wa manane kamanda.

funguo hutumiwa kubadilisha paneli inayotumika au +

kuweka alama kwenye faili, bofya au +

bonyeza kwa msaada

itaita mtazamaji wa faili

kwa kutumia unahariri faili

itakuruhusu kunakili faili ya .

hamisha au ubadilishe jina la faili

tengeneza saraka

Ufunguo itakuruhusu kufuta faili na/au saraka

, kama ilivyotajwa tayari, inafungua ufikiaji wa menyu.

- itawawezesha kutoka nje Usiku wa manane kamanda.

itahamisha pointer hadi mwanzo wa orodha ya faili,

- kinyume chake - hadi mwisho wa orodha.

Na itabadilisha nafasi ya kiashiria kwenye ukurasa juu na chini kwa mtiririko huo.

Ufunguo <*> kwenye kibodi ya ziada itakuruhusu kugeuza uteuzi wa faili (haiathiri saraka)

Ufunguo <+> kwenye kibodi ya ziada itawawezesha kuashiria faili kwa mask, na <-> ondoa alama kwenye faili kwa kutumia barakoa.

+ - sasisha yaliyomo kwenye saraka (kwa kusoma tena kutoka kwa diski au kutoka kwa mtandao)

+ - ubadilishane paneli za kulia na kushoto.

+ - kuondoa / kurejesha paneli.

Ingawa njia za mkato za kibodi ndio zana bora ya kumaliza kazi nayo Usiku wa manane kamanda haraka na rahisi iwezekanavyo, ni ngumu sana kwa Kompyuta kujifunza yote mara moja. Ili kujaza pengo hili na kuongeza uwezo mwingine ambao hauna mikato ya kibodi, Usiku wa manane kamanda ina menyu (inayoitwa na F9).

Menyu ni pamoja na vitu vifuatavyo: "Kidirisha cha Kushoto", "Faili", "Amri", "Mipangilio", "Kidirisha cha Kulia".

"Jopo la Kushoto/Kulia"- vitu hivi vya menyu ni sawa kabisa. Tofauti pekee kati yao ni kwamba vitendo vinavyofanyika vitashughulikiwa kwa jopo la kushoto au la kulia.

"Muundo wa orodha"- inafungua sanduku la mazungumzo ambalo unaweza kuchagua mtazamo ambao orodha ya faili / saraka itaonyeshwa. Kuna miundo ya kawaida, fupi na iliyopanuliwa ya kuchagua. Hata hivyo, mtumiaji katika dirisha hili anaweza kuamua mwenyewe aina ya paneli inayomfaa kwa kuchagua swichi ya "Mtumiaji Aliyefafanuliwa".

"Mtazamo wa haraka"- huweka jopo katika hali ya kutazama otomatiki kwa faili zilizochaguliwa kwenye paneli iliyo karibu. Kuzingatia hubadilika kiotomatiki hadi kwenye paneli iliyo kinyume.

"Habari"- hubadilisha kidirisha ili kuona maelezo kuhusu faili iliyoangaziwa kwenye paneli iliyo karibu, kama vile nafasi, ruhusa na mmiliki, mfumo wa faili na kifaa ambacho iko, idadi ya viungo ngumu vinavyohusishwa na faili hii, pamoja na taarifa kuhusu kifaa ambacho faili iko.

"Mti"- hutafsiri Usiku wa manane kamanda katika hali sawa na hali ya uendeshaji ya Explorer kutoka OS Windows. Katika jopo ambalo amri inatumika "Mti", mti wa saraka umejengwa, ambao unaweza kuabiri kwa kutumia mishale udhibiti wa mshale, funguo PageUp, UkurasaDown, Nyumbani, Mwisho. Paneli iliyo karibu inaonyesha yaliyomo kwenye saraka iliyoangaziwa kwenye mti.

"Agizo la kupanga"- inafungua kisanduku cha mazungumzo ambamo unaweza kuchagua sifa ambayo faili na saraka zitapangwa katika orodha kama vile jina, kiendelezi, wakati wa kuhariri, wakati wa ufikiaji, wakati wa mabadiliko ya sifa, saizi, nodi (ambayo faili iko) . Unaweza pia kuacha faili zikiwa hazijapangwa, kuzipanga kuwa nyeti, au kuzipanga kwa mpangilio wa kinyume.

"Chuja"- inakuwezesha kuchagua majina ya faili ambayo yataonyeshwa kwenye jopo kwa kutumia usemi wa kawaida ulioingia kwenye sanduku la mazungumzo.

"Uunganisho wa FTP"- kwa kutumia amri hii unaweza kuanzisha uhusiano na kompyuta ya mbali (au hata ya ndani) kwa kutumia itifaki ftp. Ikiwa tu anwani ya seva ya mbali imeingizwa, basi Usiku wa manane kamanda itajaribu kuanzisha muunganisho usiojulikana. Mstari kamili ambao nodi imeainishwa ni:

ftp:user_name:password@server_address:port/directory_on_server

Baada ya uunganisho kuanzishwa, fanya kazi na mfumo wa faili wa mbali inafanya kazi sawa na kufanya kazi na FS ya ndani.

"Uunganisho wa Shell"- inakuwezesha kufungua uunganisho wa mtandao kwa kutumia itifaki SAMAKI (Uhamisho wa faili kupitia Shell- uhamishaji wa faili kupitia ganda). SAMAKI hutumia itifaki RSH (Shell ya Mbali- ganda lililoondolewa) au SSH (Salama Shell- shell iliyolindwa, analog RSH, lakini kwa usaidizi wa usimbaji fiche wa data iliyopitishwa). Mfuatano kamili ambao mtumiaji anaweza kubainisha nodi ya mbali ni:

sh:user_name@server_address:options/directory_on_server

Kigezo Jina la mtumiaji, chaguzi na saraka_kwenye_seva haihitajiki. Kama Jina la mtumiaji haijabainishwa, basi Usiku wa manane kamanda itajaribu kuingia kwenye mfumo wa mbali na jina la mtumiaji linalotumiwa kwenye kompyuta ya ndani.

"Kurekebisha"- analog ya mchanganyiko muhimu + - husababisha orodha ya faili na saraka kwenye paneli ya sasa kusasishwa kwa kuzisoma tena kutoka kwa diski au kupitia mtandao.

"Faili"- sehemu ya menyu, vitu ambavyo hutoa kazi za kimsingi za usindikaji wa faili na saraka, kama vile:

"Menyu ya mtumiaji"- inakuwezesha kupiga orodha ambayo imewekwa na mtumiaji mwenyewe. Pia inaitwa na ufunguo .

"Angalia faili"- analog ya kazi iliyofanywa kwa kushinikiza . Inakuruhusu kutazama faili iliyoangaziwa (au ingiza saraka). Inaauni umbizo nyingi kama vile fomati za maandishi, kumbukumbu, Winword DOC, vitekelezo vya Linux, n.k.

"Inaangalia faili ..."- sawa na aya iliyotangulia, lakini haifanyi kazi kwenye faili iliyoangaziwa, lakini kwa yule ambaye jina lake na njia itaingizwa kwenye sanduku la mazungumzo.

"Tazama Timu"- inakuwezesha kutekeleza amri na kuiona pato la kawaida katika hali ya kutazama faili.

"Kuhariri"- inafungua faili kwa uhariri. Rahisi iliyojengwa ndani mhariri wa maandishi ina seti ya kutosha ya vitendaji vilivyojumuishwa vya kuhariri faili za usanidi, misimbo ya chanzo cha programu, n.k., na kiotomatiki kilichojengwa ndani. kuangazia sintaksia hufanya uhariri kuwa rahisi zaidi na maandishi yaliyohaririwa kusomeka zaidi.

"Nakala"- kunakili faili kutoka kwa paneli inayotumika hadi kwa ile tulivu. Inafanana na chaguo la kukokotoa linaloitwa na . Kwa chaguo-msingi, faili (au kikundi cha faili) iliyoangaziwa kwenye paneli inayotumika inachukuliwa kuwa kunakiliwa, na lengwa ni saraka iliyofunguliwa kwenye paneli ya passiv. Hii inaweza kubadilishwa kwa kurekebisha maadili ya uwanja kwenye mazungumzo ambayo hufungua baada ya kupiga amri hii.

"Haki za ufikiaji"- inakuwezesha kubadilisha haki za kufikia faili (au kikundi cha faili) kwenye sanduku la mazungumzo.

"Kiungo cha ishara"- huunda kiungo cha mfano. Kwa chaguo-msingi, faili iliyoangaziwa kwenye paneli inayotumika inachukuliwa kama mpokeaji, na kiungo kilichoundwa kitakuwa na jina sawa na kuwa katika saraka iliyofunguliwa kwenye paneli ya passiv. Mtumiaji anaweza kubadilisha hii kwenye kisanduku cha mazungumzo kinachofungua.

"Mmiliki/Kikundi"- hubadilisha mmiliki na/au kikundi ambacho faili/saraka ni mali.

"Haki (iliyopanuliwa)"- hukuruhusu kubadilisha wakati huo huo haki za ufikiaji kwa faili na mmiliki wake na/au kikundi. Ruhusa zinawakilishwa kama mpangilio tatu wa rwx kwa mmiliki, kikundi na watumiaji wote.

"Kubadilisha jina"- hukuruhusu kubadilisha jina / kuhamisha faili. Inafanana na chaguo la kukokotoa linaloitwa na . Kwa chaguo-msingi, faili (au kikundi cha faili) kilichoangaziwa kwenye kidirisha kinachotumika huchukuliwa kuhamishwa/kupewa jina jipya, na lengwa ni saraka iliyofunguliwa kwenye paneli ya passiv. Hii inaweza kubadilishwa kwa kurekebisha maadili ya uwanja kwenye mazungumzo ambayo hufungua baada ya kupiga amri hii.

"Kuunda saraka"- huunda saraka. Inafanana na chaguo la kukokotoa linaloitwa na . Kwa chaguo-msingi, saraka imeundwa kwenye saraka iliyofunguliwa kwenye paneli inayofanya kazi. Hii inaweza kubadilishwa ikiwa utabainisha njia kamili ya saraka itakayoundwa kwenye kidirisha kinachofungua.

"Futa"- kufuta faili / kikundi cha faili / saraka. Inafanana na chaguo la kukokotoa linaloitwa na .

"Badilisha saraka"- hubadilisha saraka ya sasa. Sawa na amri ya cd kwenye ganda la Bash. Saraka inayohitajika imeingizwa kwenye sanduku la mazungumzo.

"Kikundi cha alama"- Huweka alama kundi la faili kwa kutumia barakoa kwenye saraka iliyofunguliwa kwenye paneli inayotumika. Inafanana na chaguo la kukokotoa linaloitwa na <+> kwenye kibodi ya ziada.

Makombora ya amri yalionekana mwanzoni mwa maendeleo ya Unix, yalikuwa muhimu kwa sababu ndio njia pekee ya kuingiliana na mfumo. Wakati huu, wamekuja njia ndefu sana ya maendeleo na kupokea kazi nyingi mpya. Si rahisi kufahamu mabadiliko ya makombora ya Linux. Unaweza kuandika juu ya hili kwa muda mrefu sana na nakala moja haitoshi. Tutajaribu kufunika mambo ya msingi tu bila kuingia ndani sana. Wacha kwanza tuangalie ganda la amri ya Linux ni nini na kuna makombora gani.

Gamba la Linux/Unix ni nini

Gamba la Unix ni mkalimani wa safu ya amri ambayo hutekeleza amri zilizoingizwa na mtumiaji. Tunaingia amri, inafasiriwa, inatekelezwa na kisha tunapata matokeo ya utekelezaji wake. Ganda hutoa kiolesura cha jadi cha kuingiza amri cha Unix ambacho tumezoea. Kawaida hii ni skrini nyeusi na maandishi nyeupe. Tunaingiza amri kwa maandishi wazi, na tunaweza pia kuunda maandishi kutoka kwa amri moja au zaidi.

Ganda ni kiolesura chako cha kuingiliana na mfumo. Baada ya kuingia kwenye mfumo wa Unix, unajikuta kwenye programu inayoitwa shell.

Thompson Shell

Ikiwa historia na vyanzo vingi vya mtandao vitaaminika, ganda la kwanza kabisa lilikuwa Thompson Shell, iliyoandikwa na Ken Thomson katika Bell Labs. Kulikuwa na matoleo 6 kwa jumla na ilisambazwa kutoka 1971 hadi 1975. Vipengele kama vile uelekezaji upya wa I/O na miundo rahisi ya udhibiti - ikiwa, goto - vilitumika. Vitendaji hivi vinaauni makombora yote ya amri ya Linux ya kisasa.

Shell ya PWB

Ganda la PWB ni marekebisho ya ganda la Thomson lililotengenezwa na John Masheu. Iliandikwa ili kuongeza urahisi wa programu ya Shell. Miundo ya kuvutia imeonekana kama vile if-basi-else-endif, swichi na wakati vitanzi.

Shell ya Bourne

Unix ilianza kupanda kwake na ganda la Bourne. Iliandikwa na Stefan Mzaliwa wa Bell Labs na ilitumiwa kama ganda chaguo-msingi katika toleo la 7 la Unix kutoka 1979. Idadi kubwa ya vipengele vinavyopatikana katika shells za kisasa tayari zimetekelezwa hapa - kukamilika kwa jina la faili, kukamilika kwa amri, vigezo vya kawaida vya mazingira na miundo ya kudhibiti iliyojengwa. Bourne Shell iliitwa sh na ilikuwa kwenye mfumo wa faili wa Unix kwa /bin/sh.

Kwenye mifumo mingi, mpango wa ganda la Bourne (sh) ni kiunga cha mfano au ngumu kwa moja ya chaguzi zake:

  • Ganda la Almquist (majivu)
  • Gamba la Bourne-Tena (bash)
  • Kona shell (ksh)
  • Z shell (zsh)

Mfano wa maandishi ya Bourne Shell:

!/bin/sh
mwangwi "Hujambo Ulimwengu 1!"
mwangwi "Hujambo Ulimwengu 2!"

Ganda la Almquist (majivu)

Almquist shell, pia inajulikana kama Shell. Ni shell nyepesi ya Unix iliyoandikwa awali na Kenneth Almquist. Iliundwa mwishoni mwa miaka ya 1980. Hii ni marekebisho ya ganda la Bourne na kuchukua nafasi ya asili katika BSD Unix iliyotolewa mnamo 1990. Sasa inaweza kutumika katika usambazaji kama vile Debian na Ubuntu kama toleo la jivu linaloitwa dash (ganda la Debian Almquist). Ganda hili pia ni maarufu kwa usambazaji uliopachikwa wa Unix.

Ni ganda la Unix la haraka, lililoshikana, na linalotii POSTIX, ambayo inaweza kuwa ndiyo sababu hutumiwa mara nyingi kwenye vifaa vilivyopachikwa. Lakini majivu hayaungi mkono historia za amri. Ingawa katika matoleo ya kisasa kazi hii tayari imeongezwa.

Shell ya Bourne-Again (Bash)

Imeandikwa na Brian Fox kama sehemu ya Mradi wa GNU kama mbadala wa chanzo huria na huria wa ganda la Bourne. Bash ndio maarufu na inayotumika sana kati ya makombora yote. Usambazaji wote wa Linux huja na ganda hili kwa chaguo-msingi. Inapanua seti ya kipengele cha Bourne Shell. Kwenye mifumo mingi ya Unix/Linux, ganda hili linaweza kupatikana kwenye mfumo wa faili kwa /bin/bash. Ilitolewa mnamo 1989.

Kwa sababu ya umaarufu kama huo, iliwekwa kwenye Windows na kusambazwa pamoja na seti ya wakusanyaji wa Cygwin na MinGW. Bash pia inatumika kwenye Android na inaweza kupatikana kwa kutumia emulators mbalimbali za wastaafu.

Inaauni ukamilishaji kiotomatiki, uelekezaji upya wa I/O, ukamilishaji wa amri, vigeuzo na miundo ya udhibiti wa kufanya maamuzi (ikiwa-basi-ikiwezekana), na vitanzi.

Maandishi ya Bash huanza na mstari huu:

Ganda hili la linux pia linaauni amri za kusoma kutoka kwa faili na kuelekeza pato kwa faili au amri nyingine.

Nambari ya mfano katika Bash:

!/bin/sh
ikiwa [ $siku -gt 365]
basi
echo Hii ni zaidi ya mwaka mmoja.
fi

Kona shell (ksh)

Imeandikwa na David Kron na kulingana na nambari ya chanzo ya ganda la Bourne. KornShell (ksh) ni ganda lililotengenezwa huko Bell Labs huko nyuma mnamo 1980. Linaendana kwa nyuma na Shell ya Bourne na pia linajumuisha vipengele vingi vya C shell.

Kuna matoleo na marekebisho yafuatayo:

  • Dtksh
  • MKS Korn shell

Hati ya mfano:

!/bin/ksh
chapisha matumizi ya nafasi ya Diski
du-k
toka 0

Z shell (zsh)

Paul Falstad aliandika toleo la kwanza na amri ya zsh shell mnamo 1990. Ni ganda la amri la Linux ambalo linaweza kutumika kama ganda la kuingiliana la kuingia, mkalimani wa amri mwenye nguvu sana. Zsh kwa kweli ni ganda la Bourne lililoimarishwa na maboresho mengi yanayojumuisha baadhi ya vipengele kutoka kwa Bash, KSH na Tcsh.

Jina Zsh linatokana na profesa wa Yale Zhong Shao, kama Paul alikuwa mwanafunzi katika Chuo Kikuu cha Princeton.

Vipengele vifuatavyo vya kupendeza vinaungwa mkono:

  • Kukamilika kwa mstari
  • Historia ya amri iliyoshirikiwa kwa vipindi vyote vya ganda
  • Kazi iliyoboreshwa na anuwai na safu
  • Kuhariri mistari mingi katika bafa moja
  • Marekebisho ya tahajia na mengi zaidi.

C shell

Kamba la C pia linajulikana kama Csh. Ilitengenezwa na Bill Joy alipokuwa mwanafunzi katika Chuo Kikuu cha California. Gamba hili ni la kawaida sana kwenye mifumo ya BSD Linux. Kuna vipengele vingi vya kuvutia hapa, ikiwa ni pamoja na miundo ya udhibiti na maneno ya kisarufi. Ganda hili pia lilianzisha idadi kubwa ya vipengee vya kupendeza kwa mara ya kwanza, kama vile historia na mifumo ya uhariri, lakabu, CDPATH, usimamizi wa kazi na hashing, uelekezaji upya wa matokeo, uwekaji, uingizwaji tofauti, utekelezaji wa usuli, n.k.

Kama aina zingine za makombora ya Linux, inasaidia faili za hati, uelekezaji upya na miundo ya udhibiti. Csh sasa inatumika kama tcsh kwenye mifumo mingi, kama vile MacOS X na Red Hat Linux. Kwenye Debian unaweza kutumia CSH na Tcsh zote mbili.

Nambari ya mfano katika C Shell:

!/bin/csh
ikiwa ($siku > 365) basi
echo Hii ni zaidi ya mwaka mmoja.
endif

Samaki

Samaki au Friendly Interactive Shell ni kizazi kipya cha amri ya Linux. Imeundwa ili kurahisisha kwa mtumiaji kutekeleza amri, kuna uangaziaji wa sintaksia, kuangazia anwani sahihi za faili, utafutaji wa historia ya haraka, kisanidi wavuti, pamoja na sintaksia maalum ya hati.

Hili ni ganda jipya la amri katika Linux na syntax yake ni tofauti na ganda lingine la kisasa la amri, lakini kama lugha ya programu ya Python.

Mfano wa kuunda kazi katika samaki:

!/usr/bin/samaki
kazi su
kazi su
/bin/su --shell=/usr/bin/fish $argv
mwisho
funcsave su

Unaweza kuona ulinganisho wa kina zaidi wa makombora ya amri kwenye Linux kwenye kiunga.

Yote ni ya leo. Natumaini umepata kuvutia.

    Mifumo ya uendeshaji ya familia ya Linux, pamoja na mifumo mingine yoyote ya uendeshaji, inahitaji kuwepo kwa kiolesura cha mwingiliano kati ya vipengele vya mfumo wa kompyuta na mtumiaji wa mwisho, yaani, kuwepo kwa kiwango cha programu ambacho hutoa mchango wa amri. na vigezo vya kupata matokeo yaliyohitajika. Kiwango cha programu hii inaitwa "ganda" au, kwa Kiingereza - ganda.

Ganda ni nini?

Kamba ya amri ( ganda) hutoa mwingiliano kati ya mtumiaji na mazingira ya mfumo wa uendeshaji wa Linux. Ni bidhaa maalum ya programu ambayo inahakikisha utekelezaji wa amri na kupata matokeo ya utekelezaji wao, au, kwa urahisi sana, shell ni mpango ambao umeundwa ili kuhakikisha utekelezaji wa programu nyingine kwa ombi la mtumiaji. Mfano wa shell inaweza kuwa, kwa mfano, mkalimani wa amri amri.com mfumo wa uendeshaji MS DOS, au shell bash Mifumo ya uendeshaji ya Unix/Linux.

Magamba yote yana kazi na mali sawa, kwa mujibu wa madhumuni yao kuu - kutekeleza amri za mtumiaji na kuonyesha matokeo ya utekelezaji wao:

Tafsiri ya mstari wa amri.

Upatikanaji wa amri na matokeo ya utekelezaji wao.

Msaada kwa vigezo, wahusika maalum na maneno yaliyohifadhiwa.

Usindikaji wa faili, shughuli za kawaida za pembejeo na pato.

Utekelezaji wa lugha maalum ya programu ya shell.

    Kwa mifumo ya uendeshaji ya familia ya Unix / Linux, inawezekana kutumia makombora kadhaa tofauti ambayo hutofautiana katika sifa na mbinu za mwingiliano na mfumo. Magamba ya kawaida ni

sh- shell Bourne, ganda la kawaida la Unix OS

bash ganda Bourne Tena(GNU Bourne-Again Shell). Labda shell ya kawaida kwa sasa katika mazingira ya Linux OS.

ksh- shell Korn, iliyoundwa kama ukuzaji wa ganda Bourne na historia ya mstari wa amri na uwezo wa kuhariri amri.

csh- shell C, kwa kutumia sintaksia ya lugha maarufu ya programu C

tcsh- toleo la shell C na uhariri wa mstari wa amri unaoingiliana.

Makombora kadhaa tofauti yanaweza kusakinishwa kwenye mfumo, na kila mtumiaji anaweza kutumia ganda lao la chaguo-msingi. Yote hii, bila shaka, inafanywa moja kwa moja wakati wa mchakato wa kupakua na usajili wa mtumiaji.

    Wakati wa mchakato wa upakiaji wa mifumo ya uendeshaji ya familia ya Linux, baada ya kupakia kernel ya mfumo, mfumo hubadilika hadi hali ya mwingiliano - hali ya mwingiliano kati ya mtumiaji na mfumo wa uendeshaji. Kwenye Linux, mchakato wa kwanza uliozinduliwa wakati wa buti ni programu ya init. ndani yake, ambayo inasoma yaliyomo kwenye faili ya usanidi /etc/inittab, huamua orodha na sifa za vituo vinavyopatikana kwenye mfumo, na huita programu ya kuingiliana ya kuingia Getty, ambayo hukuhimiza kuingiza jina lako la mtumiaji. Baada ya kuingia jina la mtumiaji na nenosiri, programu Getty inaita programu Ingia, ambayo huthibitisha uhalali wa akaunti, husogea hadi kwenye saraka ya nyumbani ya mtumiaji, na kupitisha udhibiti kwa programu ya kuanzisha kipindi, ambayo kwa kawaida ni programu ya ganda la mtumiaji, ladha yake mahususi huamuliwa na yaliyomo kwenye faili. /etc/passwd kwa akaunti hii. Kwa mfano:

user1:x:508:511::/home/user1:/bin/sh
interbase:x:510:511::/home/interbase:/bin/csh
apb:x:511:513:apb:/home/apb:/bin/bash

Kama inavyoweza kuonekana kutoka kwa yaliyomo kwenye faili /etc/passwd, kwa mtumiaji mtumiaji1 ganda litazinduliwa sh(Bourne shell), kwa mtumiaji interbase- shell csh(C shell) na kwa mtumiaji apb- shell bash(Bourne Tena) Baada ya ganda kuanza, haraka ya amri huonyeshwa kwenye skrini (kawaida katika mfumo wa ishara ya dola. $ ikiwa kazi inafanywa katika muktadha wa akaunti ya kawaida ya mtumiaji, au pauni # , ikiwa ganda linatumika chini ya akaunti ya mtumiaji wa mizizi ( mzizi).

Wakati wa kutoka kwa ganda, kernel ya mfumo inarudisha udhibiti kwenye programu ndani yake, ambayo huanza tena mchakato wa kuingia na kuonyesha jina la mtumiaji kwenye terminal. Kuondoa ganda kunaweza kufanywa kwa moja ya njia mbili:

Kupitia timu Utgång kufanywa na mtumiaji

Wakati mchakato wa shell unapokea ishara kuua, iliyotumwa na kernel, kwa mfano wakati mfumo umewekwa upya.

Tafsiri ya mstari wa amri.

    Ingizo la mtumiaji katika kujibu swali la shell kawaida huitwa mstari wa amri au timu. Amri ya Linux ni safu ya herufi ya jina la amri na hoja, ikitenganishwa na nafasi. Hoja hutoa amri na vigezo vya ziada vinavyoamua tabia yake. Mara nyingi hutumika kama hoja chaguzi Na majina faili na saraka. Kwa mfano, mstari wa amri

ls -l faili01 faili02

Ina ls amri, chaguo la -l, na majina mawili ya faili file01 file02.

Wakati wa kutumia chaguzi kadhaa, zinaweza kuunganishwa. Kwa mfano, chaguo zifuatazo za amri ni sawa:

Ls -l -d
ls -ld

Amri ambazo ni sehemu ya ganda huitwa iliyojengwa ndani. Amri hizo ni pamoja na, kwa mfano, cd, kama, kesi, nk Kwa kawaida, amri zilizojengwa zinaweza kutofautiana kwa chaguzi tofauti za shell. Mbali na amri zilizojengwa ndani, inawezekana kutumia moduli za programu, ambazo ni faili tofauti zinazoweza kutekelezwa, au faili. maandishi au matukio- faili za maandishi za kawaida zilizo na mistari iliyotekelezwa kwa mpangilio na amri za ganda. Baadhi ya hati (hati) zinaweza kutekelezwa na michakato ya Linux, kama vile kipanga ratiba cron. Kipanga ratiba cha kazi kwa kawaida kimeundwa kutekeleza kiotomati kazi za usimamizi wa mfumo kwa ratiba. Kazi cron ni amri au hati na hutekelezwa kiotomatiki, bila uingiliaji kati wa kibinadamu, na inaweza kutekelezwa katika muktadha wa akaunti tofauti za watumiaji. Katika kesi ambapo kazi ya mpangilio inajumuisha kutekeleza hati, shida inatokea ya kuchagua ganda ambalo linapaswa kuzinduliwa kama mchakato wa mtoto. cron kusindika maagizo kutoka kwa faili ya hati - baada ya yote, ganda linaweza kuwa yoyote, na syntax ya hati, kama sheria, inahitaji matumizi ya ganda maalum ambalo limeandikwa. Ili kuondoa tatizo hili, katika mifumo ya uendeshaji ya Linux ni desturi ya kuonyesha katika mstari wa kwanza wa hati aina ya shell inayohitajika kwa utekelezaji wake, kwa fomu:

#!/bin/bash- kwa shell bash

#!/bin/sh- kwa shell sh

Ishara # ni ishara ya maoni na wahusika wanaoifuata hawafasiriwi kama amri. Mbinu hii hukuruhusu kutaja kwa uwazi ni ganda lipi linafaa kutumika kuchakata yaliyomo kwenye faili inayofuata. Ikiwa hati haina ingizo ambalo linafafanua kwa uwazi shell inayohitajika, basi mipangilio kutoka kwa akaunti katika muktadha ambao hati inatekelezwa itatumika. Katika kesi hii, inawezekana kwamba hati iliyoandikwa kwa ganda, kwa mfano, tch itapitishwa kwa ganda kwa utekelezaji bash, ambayo itafanya kuwa haiwezekani kutekeleza.

Wakati wa kutekeleza amri au hati, tumia vigezo vya mazingira(kwa Kingereza - mazingira, maadili ambayo yanaashiria mazingira ya programu ambayo amri hutekelezwa. Vigezo kama hivyo vinaweza kuwa na mipangilio ya jumla ya mfumo, vigezo vya ganda la picha au amri, njia za faili zinazoweza kutekelezwa, nk. Thamani za kutofautisha za mazingira zimewekwa katika kiwango cha mfumo (kwa watumiaji wote) na kwa kiwango maalum cha mtumiaji. Kuweka vigezo vya mazingira katika kiwango cha mfumo, yaliyomo kwenye faili hutumiwa:

/etc/profile- huweka vigezo tu kwa makombora ya amri. Inaweza kuendesha maandishi yoyote kwenye makombora yanayolingana na ganda la Bourne.

/etc/bash.bashrc- huweka vigezo tu kwa shells zinazoingiliana. Pia inaendesha maandishi ya bash.

/etc/mazingira- inayotumiwa na moduli ya PAM-env. Jozi pekee ndizo zinaweza kubainishwa katika faili hii jina=thamani.

Kila moja ya faili hizi ina programu yake mwenyewe, kwa hivyo unapaswa kuchagua kwa uangalifu ile inayofaa madhumuni yako. Kwa mfano, ikiwa unahitaji kuongeza saraka maalum ~/bin katika kutofautiana NJIA kwa watumiaji wote, weka msimbo ufuatao katika mojawapo ya faili za uanzishaji mazingira ya mfumo (/etc/profile au /etc/bash.bashrc):

# Ikiwa kitambulisho cha mtumiaji ni kikubwa kuliko au sawa na 1000 na kuna ~/bin saraka nayo

#haijaongezwa hapo awali kwa utofauti wa PATH,

# hamisha ~/bin hadi $PATH.

Ikiwa [[ $UID -ge 1000 && -d $HOME/bin && -z $(echo $PATH | grep -o $HOME/bin)

Hamisha PATH=$HOME/bin:$(PATH)

Kwa kawaida, kwenye mifumo ya uendeshaji ya Linux, kitambulisho cha mtumiaji chini ya 1000 au chini ya 500 hutumiwa kwa akaunti za huduma. Katika mfano huu, utofauti wa mazingira utawekwa kwa watumiaji wote wa ndani kwenye mfumo wenye kitambulisho cha 1000 au zaidi.

Ikiwa unahitaji kubadilisha mazingira kwa mtumiaji maalum, rekebisha yaliyomo kwenye mazingira ya mtumiaji:

- ~/.bash_profile, ~/.bash_login Nakadhalika. - faili za uanzishaji wa ganda kutoka kwa saraka ya nyumbani ya mtumiaji.

- ~/.wasifu- faili ya uanzishaji wa wasifu wa mtumiaji. Inatumiwa na makombora mengi kufafanua anuwai za mazingira.

~/.pam_mazingira- analog maalum ya faili /etc/environment, ambayo hutumiwa na moduli ya PAM-env.

Kwa mfano, kuongeza saraka ya mtumiaji ~/bin kwenye njia ya utafutaji ya faili zinazoweza kutekelezeka zilizobainishwa na kutofautisha NJIA, kwa mfano, kwa faili ~/.wasifu weka mstari:

export PATH="$(PATH):/home/user/bin"

Ili kuweka vigeu vya mazingira kwa programu za picha, yaliyomo kwenye faili za mipangilio ya mazingira ya picha ya mtumiaji hutumiwa. ~/.xinitrc

Mara nyingi zaidi, maadili ya mazingira huwekwa kwa kipindi cha sasa cha mtumiaji. Kwa mfano, kuongeza saraka maalum ~/bin katika njia ya utaftaji wa faili zinazoweza kutekelezwa:

export PATH=~/bin:$PATH

Thamani mpya ya kutofautisha NJIA itaendelea tu hadi kipindi cha sasa cha mtumiaji kumalizika.

Kuangalia thamani ya kutofautiana, unaweza kutumia amri echo $variable, Kwa mfano:

mwangwi $PATH

Hivi sasa, ganda la kawaida, kama ilivyoelezwa hapo juu, ni bash. Hii inasababishwa hasa na ukweli kwamba shell bash ni sh- ganda la amri linalolingana, ambalo linaongeza huduma muhimu kutoka kwa ganda la Korn ( ksh) na ganda la C ( csh) Shell bash inaweza kuendesha maandishi mengi yaliyoandikwa chini ya lugha ya programu ya ganda bila marekebisho yoyote sh na inajaribu kupata karibu na kiwango iwezekanavyo POSIX, ambayo ilisababisha maboresho mengi, kwa programu na matumizi ya mwingiliano. Katika utekelezaji wa kisasa bash kuna hali ya uhariri wa mstari wa amri, saizi ya historia ya amri isiyo na kikomo, zana za usimamizi wa kazi, uwezo wa kutumia lakabu, orodha kubwa ya amri zilizojengwa, kazi za ganda la amri, nk. Kwa ujumla, bash inafaa zaidi mahitaji ya mtumiaji wa kawaida, ambayo imeifanya itumike zaidi katika mazingira ya Linux.

Wakati wa kuanza bash bila vigezo vya mstari wa amri, shell huanza katika hali ya maingiliano, kuonyesha amri ya amri kwenye skrini. Ganda wasilianifu kwa kawaida husoma data kutoka kwa terminal ya mtumiaji na huandika data kwenye terminal sawa, kifaa cha kawaida cha kuingiza kikiwa kibodi na kifaa cha kawaida cha kutoa kikiwa onyesho. Mtumiaji huingiza amri kwenye kibodi, na matokeo ya utekelezaji wao yanaonyeshwa kwenye maonyesho.

  • Mafunzo

Kwa nini na kwa nani makala hiyo?

Hapo awali, hii ilikuwa ukumbusho kwa wanafunzi ambao wanaanza kufanya kazi na mifumo kama Unix. Kwa maneno mengine, makala hiyo inalenga kwa wale ambao hawana uzoefu wa awali wa kufanya kazi na mstari wa amri ya Unix, lakini kwa sababu moja au nyingine wanataka au wanahitaji kujifunza jinsi ya kuingiliana kwa ufanisi nayo.

Hakutakuwa na kusimuliwa tena kwa mana (hati), na kifungu hakighairi au kuchukua nafasi ya kuzisoma. Badala yake, nitazungumzia juu ya mambo makuu (amri, mbinu na kanuni) ambazo unahitaji kuelewa tangu mwanzo wa kufanya kazi katika shell ya unix ili kazi iwe yenye ufanisi na ya kufurahisha.

Makala haya yanahusu mazingira kamili yanayofanana na unix, yenye ganda linalofanya kazi kikamilifu (ikiwezekana zsh au bash) na anuwai ya programu za kawaida.

Shell ni nini

Shell (shell, aka "mstari wa amri", aka CLI, aka "console", aka "terminal", aka "dirisha nyeusi na herufi nyeupe") ni kiolesura cha maandishi cha kuwasiliana na mfumo wa uendeshaji (vizuri, madhubuti ninamaanisha, hii. ni programu, ambayo hutoa kiolesura kama hicho, lakini sasa tofauti hii haina maana).

Kwa ujumla, fanya kazi kupitia ganda inaonekana kama hii: mtumiaji (yaani wewe) huingiza amri kutoka kwa kibodi, bonyeza Enter, mfumo hutoa amri, huandika matokeo ya utekelezaji kwenye skrini, na tena subiri amri inayofuata. ya kuingizwa.

Aina ya kawaida ya ganda:

Ganda ndio njia kuu ya kuingiliana na mifumo yote ya seva kama Unix.

Mifumo ya mstari wa amri inapatikana wapi?

Ambapo ganda la unix linaweza kuwa linakungoja, chaguzi maarufu:
  • MacOS (bash);
  • ufikiaji wa mbali kwa seva kwa kazi au mradi wa kibinafsi wa wavuti;
  • seva ya faili ya nyumbani na ufikiaji wa mbali;
  • Ubuntu, PC-BSD kwenye kompyuta ndogo/desktop - mifumo inayofanana na unix leo ni rahisi kusakinisha na kutumia.

Ni shida gani zinazofaa kusuluhisha na ganda?

Kazi za asili ambazo ganda linafaa, muhimu na la lazima:
  • kazi ya maingiliano katika terminal:
    • kufanya mkusanyiko, kuendesha kazi kupitia make;
    • kulinganisha faili za maandishi;
    • uchambuzi wa haraka wa data ya matangazo (idadi ya IP za kipekee kwenye logi, usambazaji wa rekodi kwa saa/dakika, n.k.);
    • vitendo vya wingi wa wakati mmoja (kuua michakato mingi; ikiwa unafanya kazi na mfumo wa udhibiti wa toleo, pindua au suluhisha kundi la faili);
    • utambuzi wa kile kinachotokea katika mfumo (semaphores, kufuli, michakato, maelezo, nafasi ya diski, nk);
  • uandishi:
    • maandishi ya ufungaji, ambayo huwezi kutegemea uwepo wa wakalimani wengine - hii sio kwa Kompyuta;
    • kazi za kubinafsisha shell inayoingiliana (inayoathiri mwaliko, kubadilisha saraka, kuweka vigezo vya mazingira) pia sio hasa kwa Kompyuta;
    • hati za wakati mmoja kama vile kuweka upya faili nyingi;
    • makefiles.

Hatua za kwanza kabisa

Hebu tuanze: ingia na uondoke

Hakikisha unajua jinsi ya kuanza ganda na jinsi ya kuiondoa.

Ikiwa unafanya kazi kwenye mashine iliyo na Ubuntu imewekwa, unahitaji kuzindua programu ya Terminal. Baada ya kumaliza, unaweza tu kufunga dirisha.

Kwenye MacOS - pia uzindua terminal.

Ili kufikia seva ya mbali, tumia ssh (ikiwa unayo MacOS, Ubuntu au mfumo mwingine kama unix ndani ya nchi) au putty (ikiwa unayo Windows).

Mimi ni nani, niko wapi?

Endesha amri zifuatazo:
  • jina la mwenyeji - huonyesha jina la mashine (seva) uliyonayo sasa;
  • whoami - inaonyesha kuingia kwako (jina lako kwenye mfumo);
  • mti -d / | chini - uwakilishi wa pseudo-graphic wa mti wa saraka kwenye mashine; toka kutoka kwa kusonga - q ;
  • pwd - inaonyesha saraka uliyopo sasa; kwenye safu ya amri huwezi kuwa "vivyo hivyo", lazima uwe kwenye saraka fulani (=saraka ya sasa, saraka ya kufanya kazi). Saraka ya sasa ya kufanya kazi labda itaonyeshwa kwenye kidokezo chako.
  • ls - orodha ya faili kwenye saraka ya sasa; ls / nyumbani - orodha ya faili kwenye saraka maalum;

Historia ya amri (historia)

Sifa muhimu ya safu kamili ya amri ni historia ya amri.

Tekeleza amri kadhaa: jina la mwenyeji, ls, pwd, whoami. Sasa bonyeza kitufe cha juu. Amri ya awali inaonekana kwenye mstari wa pembejeo. Unaweza kutumia vitufe vya juu na chini kusonga mbele na nyuma kupitia historia. Unapofika kwa jina la mwenyeji, bonyeza Enter - amri itatekelezwa tena.

Amri kutoka kwa historia haziwezi tu kutekelezwa mara kwa mara, lakini pia kuhaririwa. Tembea kupitia historia hadi ls amri, ongeza -l kubadili kwake (inageuka ls -l , kuna nafasi kabla ya minus, lakini sio baada). Bonyeza Ingiza - amri iliyobadilishwa itatekelezwa.

Kupitia historia, kuhariri na kutekeleza tena amri ni vitendo vya kawaida wakati wa kufanya kazi kwenye mstari wa amri, kwa hiyo izoea.

Nakili-bandika

Mstari wa amri ni wa maandishi sana: amri ni maandishi, data ya pembejeo kwa programu nyingi za kawaida ni maandishi, na matokeo mara nyingi ni maandishi.

Jambo kuu juu ya maandishi ni kwamba inaweza kunakiliwa na kubandikwa, na hii ni kweli kwenye safu ya amri pia.

Jaribu tarehe ya amri +"%y-%m-%d, %A"
Je, uliiingiza kabisa kwa mkono au umeinakili kutoka kwa makala? Hakikisha unaweza kuinakili, kuibandika kwenye terminal na kuitekeleza.

Mara tu unapojifunza jinsi ya kutumia man, hakikisha unaweza kunakili na kutekeleza amri za mfano kutoka kwa usaidizi.Kuangalia, tafuta sehemu ya MIFANO katika usaidizi wa programu ya tarehe, nakili na utekeleze mfano wa kwanza uliotolewa (ikiwa tu: the ishara ya dola sio sehemu ya amri , hii ni picha ya ishara ya haraka ya kuingiza).

Jinsi ya kunakili maandishi kutoka kwa terminal na kuiweka kwenye terminal inategemea mfumo wako na mipangilio yake, kwa hivyo, kwa bahati mbaya, haitawezekana kutoa maagizo ya ulimwengu wote. Kwenye Ubuntu, jaribu hii: nakala - chagua tu na panya, bandika - kitufe cha kati cha panya. Ikiwa haifanyi kazi, au ikiwa una mfumo tofauti, angalia kwenye mtandao au uulize marafiki wenye ujuzi zaidi.

Vifunguo na chaguzi

Unapochunguza historia ya amri, tayari umekutana na kwamba amri ya ls ina angalau chaguzi mbili. Ikiwa utaiita kama hivyo, hutoa orodha rahisi:

Akira@latitude-e7240: ~/shell-survival-quide> ls Makefile shell-first-steps.md shell-first-steps.pdf shell-survival-quide.md shell-survival-quide.pdf
Ukiongeza -l swichi, maelezo ya kina yanaonyeshwa kwa kila faili:

Akira@latitude-e7240: ~/shell-survival-quide> ls -l jumla 332 -rw-rw-r-- 1 akira akira 198 Feb 13 11:48 Makefile -rw-rw-r-- 1 akira akira 15107 Feb 14 22:26 shell-first-steps.md -rw-rw-r-- 1 akira akira 146226 Feb 13 11:49 shell-first-hatua.pdf -rw-rw-r-- 1 akira akira 16626 Feb 13 11 :45 shell-survival-quide.md -rw-rw-r-- 1 akira akira 146203 Feb 13 11:35 shell-survival-quide.pdf
Hii ni hali ya kawaida sana: ikiwa unaongeza modifiers maalum (funguo, chaguzi, vigezo) kwa wito wa amri, tabia ya mabadiliko ya amri. Linganisha: mti / na mti -d / , jina la mwenyeji na jina la mwenyeji -f .

Kwa kuongeza, amri zinaweza kuchukua majina ya faili, majina ya saraka, au tu kamba za maandishi kama vigezo. Jaribu:

Ls -ld /home ls -l /home grep mzizi /etc/passwd

mtu

man - Msaada kwa amri na programu zinazopatikana kwenye mashine yako, pamoja na simu za mfumo na maktaba ya kawaida ya C.

Jaribu: man grep , man atoi , man chdir , man man .

Kusogeza mbele na nyuma kunafanywa kwa vitufe vya "juu", "chini", "PageUp", "PageDown", kutoka kwa mtazamo wa usaidizi hufanywa na kitufe cha q. Tafuta maandishi mahususi katika nakala ya usaidizi: bonyeza / (sogeza mbele), weka maandishi ili kutafuta, bonyeza Enter. Nenda kwa matukio yanayofuata - ufunguo n.

Makala yote ya usaidizi yamegawanywa katika kategoria. Muhimu zaidi:

  • 1 - mipango inayoweza kutekelezwa na amri za shell (wc, ls, pwd, nk);
  • 2 - simu za mfumo (uma, dup2, nk)
  • 3 - kazi za maktaba (printf, scanf, cos, exec).
Ni muhimu kuonyesha kutoka kwa jamii ambayo cheti inapaswa kuonyeshwa katika matukio ya bahati mbaya ya majina. Kwa mfano, man 3 printf inaelezea kazi kutoka kwa maktaba ya kawaida ya C, na man 1 printf inaelezea programu ya console yenye jina sawa.

Unaweza kutazama orodha ya nakala zote za usaidizi zinazopatikana kwenye mashine yako kwa kutumia man -k amri. (kitone pia ni sehemu ya komada).

kidogo

Wakati unahitaji kutazama maandishi marefu sana kwenye dirisha ndogo la terminal (yaliyomo kwenye faili, mtu mrefu, nk), programu maalum za "pager" hutumiwa (kutoka kwa ukurasa wa neno, ambayo ni, vipeperushi vya ukurasa). Kisogeza kinachojulikana zaidi ni kidogo, na ndicho kinachokupa usogezaji unaposoma kurasa za watu.

Jaribu na kulinganisha tabia:

Paka /etc/bash.bashrc paka /etc/bash.bashrc |less

Unaweza kuhamisha faili kwa paja moja kwa moja katika vigezo:

Chini /etc/bash.bashrc

Kusogeza juu na chini - vifungo "juu", "chini", "PageUp", "PageDown", toka - kifungo q. Tafuta maandishi maalum: bonyeza / (songa mbele), ingiza maandishi ili kutafuta, bonyeza Enter. Nenda kwa matukio yanayofuata - ufunguo n. (Je, unatambua maagizo kuhusu mwanadamu? Si ajabu, kidogo pia hutumiwa kuonyesha usaidizi.)

Haki

Faili au saraka yoyote inahusishwa na seti ya "haki": haki ya kusoma faili, haki ya kuandika faili, haki ya kutekeleza faili. Watumiaji wote wamegawanywa katika makundi matatu: mmiliki wa faili, kikundi cha wamiliki wa faili, na watumiaji wengine wote.

Unaweza kutazama ruhusa za faili kwa kutumia ls -l . Kwa mfano:

> ls -l Makefile -rw-r--r-- 1 akira wanafunzi 198 Feb 13 11:48 Makefile
Pato hili linamaanisha kuwa mmiliki (akira) anaweza kusoma na kuandika faili, kikundi (wanafunzi) wanaweza kusoma tu, na watumiaji wengine wote wanaweza kusoma tu.

Ukipokea ujumbe ulionyimwa ruhusa unapofanya kazi, hii inamaanisha kuwa huna haki za kutosha kwa kitu ulichotaka kufanya kazi nacho.

Soma zaidi katika man chmod.

STDIN, STDOUT, conveyors (mabomba)

Kuna mitiririko 3 ya kawaida ya data inayohusishwa na kila programu inayotekelezwa: mtiririko wa data wa ingizo STDIN, mtiririko wa data ya pato STDOUT, mtiririko wa matokeo wa makosa STDERR.

Endesha programu ya wc, ingiza maandishi Siku njema leo, bonyeza Enter, ingiza maandishi siku njema, bonyeza Enter, bonyeza Ctrl + d. Programu ya wc itaonyesha takwimu za idadi ya herufi, maneno na mistari katika maandishi yako na mwisho:

> wc siku njema leo siku njema 2 5 24
Katika hali hii, ulitoa maandishi ya mistari miwili kwa STDIN ya programu, na ukapokea nambari tatu katika STDOUT.

Sasa endesha amri head -n3 /etc/passwd , inapaswa kuonekana kama hii:

> kichwa -n3 /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x: 2:2:bin:/bin:/usr/sbin/nologin
Katika kesi hii, programu ya kichwa haikusoma chochote kutoka kwa STDIN, lakini iliandika mistari mitatu kwa STDOUT.

Unaweza kufikiria kwa njia hii: mpango ni bomba ambalo STDIN inapita na STDOUT inapita nje.

Sifa muhimu zaidi ya mstari wa amri ya Unix ni kwamba programu za "bomba" zinaweza kuunganishwa kwa kila mmoja: matokeo (STDOUT) ya programu moja yanaweza kupitishwa kama data ya pembejeo (STDIN) kwa programu nyingine.

Ujenzi huo wa mipango iliyounganishwa inaitwa bomba kwa Kiingereza, au conveyor au bomba kwa Kirusi.

Kuchanganya programu kwenye bomba hufanywa na ishara | (bar wima)

Endesha amri head -n3 /etc/passwd |wc , itaonekana kitu kama hiki:

> kichwa -n3 /etc/passwd |wc 3 3 117
Hapa ndivyo ilivyotokea: mpango wa kichwa hutoa mistari mitatu ya maandishi katika STDOUT, ambayo mara moja ilikwenda kwenye pembejeo ya programu ya wc, ambayo kwa upande wake ilihesabu idadi ya wahusika, maneno na mistari katika maandishi yaliyotokana.

Unaweza kuchanganya programu nyingi kama unavyopenda kwenye bomba. Kwa mfano, unaweza kuongeza programu nyingine ya wc kwenye bomba la awali, ambalo litahesabu maneno na herufi ngapi zilikuwa kwenye matokeo ya wc ya kwanza:

> kichwa -n3 /etc/passwd |wc |wc 1 3 24

Kujenga mabomba (mabomba) ni kazi ya kawaida sana wakati wa kufanya kazi kwenye mstari wa amri. Kwa mfano wa jinsi hii inafanywa kwa mazoezi, soma sehemu "Kuunda bomba la mjengo mmoja."

Uelekezaji kwingine wa I/O

Pato (STDOUT) ya programu haiwezi tu kuhamishiwa kwenye programu nyingine kupitia bomba, lakini pia imeandikwa tu kwa faili. Uelekezaji huu unafanywa kwa kutumia > (kubwa kuliko ishara):

Tarehe > /tmp/today.txt
Kama matokeo ya kutekeleza amri hii, faili /tmp/today.txt itaonekana kwenye diski. Tazama yaliyomo kwa kutumia cat /tmp/today.txt

Ikiwa faili iliyo na jina sawa tayari ilikuwepo, yaliyomo yake ya zamani yataharibiwa. Ikiwa faili haikuwepo, itaundwa. Saraka ambayo faili imeundwa lazima iwepo kabla ya amri kutekelezwa.

Ikiwa hutaki kubatilisha faili, lakini badala yake ongeza matokeo hadi mwisho wake, tumia >> :

Tarehe >> /tmp/today.txt
Angalia kile kilichoandikwa kwenye faili sasa.

Kwa kuongeza, unaweza kupitisha faili yoyote kwenye programu badala ya STDIN. Jaribu:

Wc

Nini cha kufanya wakati kitu haijulikani

Ikiwa unakutana na tabia ya mfumo ambayo hauelewi, au unataka kufikia matokeo fulani, lakini haujui jinsi gani, nakushauri uendelee kwa utaratibu ufuatao (kwa njia, hii inatumika si tu kwa shells):
  • Kwa uwazi iwezekanavyo, tengeneza swali au kazi - hakuna kitu ngumu zaidi kuliko kutatua "kitu ambacho sijui nini";
  • kumbuka ikiwa tayari umekutana na shida sawa au sawa - katika kesi hii, inafaa kujaribu suluhisho ambalo lilifanya kazi mara ya mwisho;
  • soma kurasa za mtu zinazofaa (ikiwa unaelewa ni kurasa gani za mtu zinafaa katika kesi yako) - labda utapata mifano inayofaa ya kutumia amri, chaguo muhimu au viungo kwa amri nyingine;
  • fikiria: inawezekana kubadilisha kazi kidogo? - labda, kwa kubadilisha hali kidogo, utapata shida ambayo tayari unajua jinsi ya kutatua;
  • uliza swali lako lililoundwa kwa uwazi katika injini ya utafutaji - labda jibu linaweza kupatikana kwenye Stack Overflow au tovuti zingine;
Ikiwa hakuna yoyote ya hapo juu inayosaidia, tafuta ushauri kutoka kwa mwalimu, mwenzako mwenye ujuzi au rafiki. Na usiogope kuuliza maswali "ya kijinga" - sio aibu kutojua, ni aibu kutouliza.

Ikiwa unatatua shida ngumu (peke yako, kwa msaada wa Mtandao au watu wengine), andika suluhisho lako ikiwa shida kama hiyo itatokea tena kwako au kwa marafiki zako. Unaweza kurekodi katika faili rahisi ya maandishi, katika Evernote, au kuchapisha kwenye mitandao ya kijamii.

Mbinu za kazi

Nakili na ubandike- kutoka kurasa za watu, kutoka kwa makala kwenye StackOverflow, n.k. Mstari wa amri una maandishi, tumia fursa hii: nakala na tumia amri za mifano, andika matokeo yaliyofaulu kama kumbukumbu, yachapishe kwenye Twitter na blogu.

Vuta amri ya awali kutoka kwa historia, ongeza amri nyingine kwenye bomba, kukimbia, kurudia.Sentimita. Tazama pia sehemu ya "Kuunda bomba la mjengo mmoja."

Amri za msingi

  • badilisha kwa saraka nyingine: cd ;
  • kutazama yaliyomo kwenye faili: paka, chini, kichwa, mkia;
  • kudanganywa kwa faili: cp, mv, rm;
  • kutazama yaliyomo kwenye saraka: ls , ls -l , ls -lS ;
  • muundo wa saraka: mti , mti -d (saraka inaweza kupitishwa kama kigezo);
  • tafuta faili: find . -jina ...;

Uchanganuzi

  • wc, wc -l;
  • panga -k - panga kwa shamba maalum;
  • aina -n - kupanga nambari;
  • diff - kulinganisha faili;
  • grep , grep -v , grep -w , grep "\ " , grep -E - tafuta maandishi;
  • uniq , uniq -c - upekee wa kamba;
  • awk - katika awk "(chapisha $ 1)" chaguo, kuondoka tu shamba la kwanza kutoka kwa kila mstari, $ 1 inaweza kubadilishwa hadi $ 2, $ 3, nk;

Utambuzi wa mfumo

  • ps axuww - habari kuhusu michakato (programu zinazoendesha) zinazoendesha kwenye mashine;
  • juu - kutazama maingiliano ya michakato inayotumia rasilimali nyingi zaidi;
  • df - kutumika na nafasi ya bure ya disk;
  • du - saizi ya jumla ya faili kwenye saraka (kwa kurudia na subdirectories);
  • strace , ktrace - mfumo unaita mchakato gani;
  • lsof - ni faili gani mchakato hutumia;
  • netstat -na, netstat -nap - ambayo bandari na soketi zimefunguliwa kwenye mfumo.

Huenda usiwe na baadhi ya programu; zinahitaji kusakinishwa kwa kuongeza. Kwa kuongeza, baadhi ya chaguzi za programu hizi zinapatikana tu kwa watumiaji wenye upendeleo (mizizi).

Utekelezaji wa wingi na nusu otomatiki

Mara ya kwanza, ruka sehemu hii; utahitaji amri hizi na miundo unapofikia uandishi rahisi wa shell.
  • mtihani - kuangalia hali;
  • wakati wa kusoma - kitanzi mstari kwa mstari STDIN;
  • xargs - uingizwaji wa masharti kutoka kwa STDIN kwenye vigezo vya programu maalum;
  • seq - kizazi cha mlolongo wa nambari za asili;
  • () - kuchanganya pato la amri kadhaa;
  • ; - fanya jambo moja baada ya jingine;
  • && - tekeleza ikiwa amri ya kwanza imekamilika kwa mafanikio;
  • | - kutekeleza ikiwa amri ya kwanza inashindwa;
  • tee - duplicate pato la programu kwa STDOUT na faili kwenye diski.

Mbalimbali

  • tarehe - tarehe ya sasa;
  • curl - kupakua hati kutoka kwa url maalum na kuandika matokeo kwa STDOUT;
  • kugusa - sasisha tarehe ya kurekebisha faili;
  • kuua - tuma ishara kwa mchakato;
  • kweli - haifanyi chochote, inarudi kweli, muhimu kwa kuandaa vitanzi vya milele;
  • sudo - toa amri kama mzizi "a.

Kuunda bomba la mjengo mmoja

Wacha tuangalie mfano wa kazi halisi: tunahitaji kuua michakato yote ya seva-6 inayoendesha kama mtumiaji wa sasa.

Hatua ya 1.
Kuelewa ni programu gani hutoa takriban data muhimu, hata ikiwa sio katika hali yake safi. Kwa kazi yetu, inafaa kupata orodha ya michakato yote kwenye mfumo: ps sawa. Uzinduzi.

Hatua ya 2.
Angalia data iliyopokelewa kwa macho yako, njoo na kichungi ambacho kitatupa data isiyo ya lazima. Hii mara nyingi ni grep au grep -v . Tumia kitufe cha "Juu" kutoa amri iliyotangulia kutoka kwa historia, ikabidhi kichujio kilichobuniwa, na uikimbie.

Ps axuww |grep `whoami`
- michakato tu ya mtumiaji wa sasa.

Hatua ya 3.
Rudia hatua ya 2 hadi upate data safi unayohitaji.

"
- michakato yote iliyo na jina linalohitajika (pamoja, labda, zile za ziada kama vim task-6-server.c, nk),

Ps axuww |grep `whoami` | grep "\ " | grep -v vim ps axuww |grep `whoami` | grep "\ " | grep -v vim |grep -v less
- michakato tu na jina linalohitajika

Ps axuww |grep `whoami` | grep "\ " | grep -v vim |grep -v less |awk "(chapisha $2)"

Pids ya michakato inayohitajika, hatua ya 3 imekamilika

Hatua ya 4.
Tumia kidhibiti cha mwisho kinachofaa. Kutumia kitufe cha "Juu", tunatoa amri iliyotangulia kutoka kwa historia na kuongeza usindikaji ambao utakamilisha suluhisho la shida:

  • |wc -l kuhesabu idadi ya michakato;
  • > pids kuandika pids kwenye faili;
  • |xargs kuua -9 michakato ya kuua.

Kazi za mafunzo

Unataka kufanya mazoezi ya ujuzi mpya? Jaribu kazi zifuatazo:
  • pata orodha ya faili zote na saraka kwenye saraka yako ya nyumbani;
  • pata orodha ya vifungu vyote vya mtu kutoka kwa kitengo cha 2 (simu za mfumo);
  • hesabu ni mara ngapi neno grep linaonekana kwenye ukurasa wa mtu wa programu ya grep;
  • hesabu ni michakato ngapi inayoendesha kwa sasa kama mzizi;
  • pata amri gani inayoonekana katika idadi ya juu ya kategoria za usaidizi (mtu);
  • hesabu mara ngapi neno var linaonekana kwenye ukurasa wa ya.ru.
Kidokezo: utahitaji find , grep -o , awk "(print $1)" , misemo ya kawaida katika grep , curl -s .

Nini cha kujifunza baadaye?

Ukianza kupenda mstari wa amri, usisimame, endelea kuboresha ujuzi wako.

Hapa kuna programu ambazo hakika zitakuja kwa manufaa ikiwa unaishi kwenye mstari wa amri:

  • pata na chaguzi ngumu
  • apropos
  • tafuta
  • telnet
  • netcat
  • tcpdump
  • rsync
  • skrini
  • zgrep, bila
  • visudo
  • crontab -e
  • barua pepe
Kwa kuongezea, baada ya muda inafaa kujua aina fulani ya lugha ya uandishi, kama vile perl au python, au hata zote mbili.

Nani anahitaji hii?

Inafaa hata kujifunza safu ya amri na uandishi wa ganda leo? Hakika thamani yake. Nitatoa mifano michache tu ya mahitaji ya Facebook kwa watahiniwa wanaotaka kupata kazi katika FB.

Hakika karibu wasomaji wote wa Habr wanajua magamba ya sh na bash. Pia, wengi wetu tumesikia kitu kuhusu zsh na tcsh. Walakini, orodha ya makombora yaliyopo haiishii hapo. Wanaweza kugawanywa katika vikundi vitatu:

  • Nguzo za ganda la Bourne (bash, zsh)
  • C shell (csh, tcsh)
  • Kulingana na lugha maarufu za programu (psh, ipython, scsh)
  • Kigeni, maalum na wengine wote
Ya kuvutia zaidi yao yatajadiliwa.

Madhumuni ya kuandika nakala hii haikuwa kukagua au kuainisha makombora yote ya amri yaliyopo. Ninataka tu kuzungumza juu ya bidhaa zinazovutia katika eneo hili na kupanua upeo wa msomaji. nitafurahi. Ikiwa hii itahimiza mtu kusoma mada kwa undani zaidi au hata kuendelea na mada nyingine.
Kwanza, kwa ufupi ni nini. Gamba la amri au mkalimani wa amri ni programu ambayo humpa mtumiaji kiolesura cha mstari wa amri ambapo mtumiaji huingiza amri kibinafsi au huendesha hati zinazojumuisha orodha ya amri. Kwa mdomo na kwa maandishi yasiyo rasmi mara nyingi huitwa "ganda", kutoka kwa ganda la Kiingereza - ganda.

Magamba yanayotumika sana ya POSIX yanatoka kwa ganda la Bourne, kwa hivyo tutaanza na hilo.

Bourne shell na clones zake

Bourne shell, faili inayoweza kutekelezwa: sh. Kamba ya amri iliyopewa jina la muundaji wake, Stephen Bourne. Wengi wa waendeshaji walikopwa kutoka kwa lugha ya ALGOL 68. Ilitolewa katika toleo la 7 la mfumo wa uendeshaji wa UNIX, ambapo ilikuwa shell ya default. Hadi leo, idadi kubwa ya mifumo kama Unix ina /bin/sh - kiunganishi cha ishara au ngumu kwa ganda linalolingana na sh.

Bourne shell tena, faili inayoweza kutekelezwa: bash. Kichwa kinaweza kutafsiriwa kama "Matembezi ya Kuzaliwa Upya ya Bourne." Uwezekano mkubwa zaidi shell maarufu zaidi leo. De facto kiwango kwa ajili ya Linux. Sitakaa juu yake, kwa sababu ... Kuna nakala nyingi nzuri kuhusu bash kwenye mtandao. Kwa mfano hapa na hapa.

Z shell, faili inayoweza kutekelezwa: zsh. Ganda lisilolipishwa la kisasa linalooana na SH. Ina idadi ya faida juu ya bash, hasa kuhusiana na kufanya kazi katika hali ya maingiliano. Waliandika juu yake kwenye Habre na
Kwa kuongeza, kuna shells chache ambazo huanguka katika kundi hili: shell ya Korn (ksh) na shell ya Almquist (ash) nk, lakini hatutakaa juu yao kwa undani.

C shell

C shell, faili inayoweza kutekelezwa: csh Amri shell iliyoandaliwa na vi mwandishi Bill Joy. Msingi wa lugha ya uandishi wa csh ulikuwa, kama jina linamaanisha, lugha ya C. wakati huo, mnamo 1978, ilikuwa lugha maarufu zaidi ya programu kati ya watengenezaji na watumiaji wa BSD UNIX. Hivi sasa, utekelezaji maarufu zaidi wa bure wa csh ni tcsh.

Shell ya TENEX C, faili inayoweza kutekelezwa: tcsh. Ilikuwa katika tcsh kwamba kukamilisha kiotomatiki kulionekana kwanza. Hili ndilo ganda chaguo-msingi kwenye FreeBSD. Unaweza kusoma zaidi juu yake.
Ili kuonyesha wazi tofauti katika syntax, nitatoa mifano kadhaa ya maandishi ambayo hufanya kitu kimoja kwa csh na mkalimani wa amri inayolingana na sh.

Ujenzi wa masharti:

Kitanzi kinachohesabu nguvu 10 za kwanza kati ya mbili:

#!/bin/sh i=2 j=1 huku [ $j -le 10]; fanya mwangwi "2 **" $j = $i i=`expr $i "*" 2` j=`expr $j + 1` imekamilika #!/bin/csh seti i = 2 seti j = 1 huku ($j<= 10) echo "2 **" $j = $i @ i *= 2 @ j++ end

Hata hivyo, orodha ya vipengele vinavyoungwa mkono na matoleo ya hivi karibuni ya bash, zsh na tcsh ni sawa sana na uchaguzi wa shell maalum ni suala la ladha. Kwa makombora machache ya kawaida hali ni tofauti. Hapa tofauti ni muhimu zaidi.

Amri shells kulingana na lugha maarufu za programu.

Perl Shell, faili inayoweza kutekelezwa: psh. Gamba linalochanganya vipengele vya makombora yaliyo hapo juu na nguvu ya lugha ya Perl. Kwa sababu psh imeandikwa kwa perl na inaweza hata kukimbia kwenye Windows. Baadhi ya mifano ya kutumia psh:
ls | s/y/k/ # Ubadilishaji kwa kutumia misemo ya kawaida ls | ( chapisha ++$i, ": $_"; )q # Kichujio cha haraka. Ndani ya brashi zilizopinda kuna usemi wa Perl ambapo $_ ina safu moja ya matokeo. mtandao | ( $_>2; )g # vichujio vya grep. Ni mistari ile tu ambayo usemi katika mabano hurejesha kuwa kweli ndio amri iliyochapishwa >[=FOO] # Elekeza upya kwa amri ya maelezo ya faili iliyo wazi > faili # Sawa na amri 2> faili katika bash. Inaelekeza pato na utiririshaji wa makosa kwa faili grep foo lib/**/*.pm # Tumia **, ambayo inamaanisha saraka ya sasa na saraka zote ndogo.

Scsh, faili inayoweza kutekelezwa scsh. Mkalimani wa amri ya chanzo huria anayetumia Mpango wa 48 kama lugha ya uandishi. Haitumii viwango vya utendakazi vya makombora mengine (historia ya amri, uhariri wa maandishi kwenye safu ya amri, njia/kuongeza amri). Maandishi yanapendekezwa, lakini si kwa kazi shirikishi. Inaweza kukata rufaa kwa mashabiki wa programu zinazofanya kazi. Ifuatayo ni mfano wa hati inayoonyesha majina ya faili zote zinazoweza kutekelezwa ziko katika saraka kutoka kwa utofauti wa mazingira wa PATH.
#!/usr/local/bin/scsh -s !# (fafanua (inayoweza kutekelezwa) (na-cwd dir (kichujio cha faili-kinachoweza kutekelezwa? (saraka-faili dir #t))))) (fafanua (andika x) (onyesha x) (mstari mpya)) (kwa-kila uandishi (utekelezaji wa ramani-ambatanisha ((infix-splitter ":") (getenv "PATH"))))

IPython. Ni shell inayoingiliana kwa lugha ya programu ya Python ambayo ina idadi ya vipengele vya ziada. IPython ina wasifu maalum wa kukimbia kama ganda la mfumo. Njia ya kuzindua hali hii inategemea, kama ninavyoielewa, kwenye toleo, lakini kwenye mashine yangu inaonekana kama hii:
ipython3 --profile=pysh

Mengi tayari yameandikwa juu ya IPython, pamoja na kwa Kirusi (viungo mwishoni mwa kifungu). Nitajaribu kuorodhesha huduma zake kuu kutoka kwa mtazamo wa kuitumia kama ganda la amri:

  • Msalaba-jukwaa. Kuna hata toleo la Windows
  • Matoleo ya chatu 2.x au 3.x kama lugha ya uandishi, uwezo wa ukaguzi ulioimarishwa
  • Kukamilisha kiotomatiki kwa nambari ya Python na majina ya faili na amri za mfumo.
  • Amri historia na macros kulingana na hilo
  • Utaratibu unaoharakisha urambazaji kupitia katalogi, alamisho na mengi zaidi
Kama unaweza kuona, kwa suala la uwezo wake wa maingiliano, IPython ni nzuri kama bash. Kama ilivyo kwa maandishi, IPython itakuwa rahisi kwa wale wanaojua python bora kuliko bash. Kwa kweli, maandishi ya IPython yatatofautiana na Python safi tu katika wito uliorahisishwa wa amri za mfumo. Hapa kuna mifano kadhaa ya ujumuishaji wa amri za python na mfumo:
# Tuseme tulitaka kukokotoa saizi ya jumla ya faili za kumbukumbu za dpkg: Katika : cd /var/log/ /var/log In : log_files = !ls -l dpkg.log* In : log_files Out: "-rw-r- -r-- 1 mzizi 1824 Nov 3 16:41 dpkg.log" Katika : kwa laini katika log_files: ....: size += int(line.split()) ....: Katika : size Out: 1330009 # ...
Pumzika
Kwa kweli, hii sio orodha kamili ya makombora maarufu. Mbali na kategoria hizo hapo juu, pia zipo zinazotumia sintaksia zao, ambazo hazioani na sh na hazinakili lugha iliyopo. Mfano itakuwa ganda la maingiliano la kirafiki (samaki). Lakini mwisho, ningependa kuzungumza sio juu yake, lakini kuhusu usingizi maalum zaidi.

Kulala Dummy Shell, faili inayoweza kutekelezwa: ganda la usingizi. Kwa kusema kabisa, ganda la kulala haliwezi kuitwa processor ya amri, kwa sababu haiwezi kuchakata amri. Na kwa ujumla haiwezi kufanya chochote isipokuwa mara kwa mara kuandika nyota "*" kwa pato la kawaida. Walakini, inatumika haswa kama ganda la amri na kwa sababu hii: Wacha tuseme tunataka kumpa mtu fursa ya kutengeneza vichuguu vya ssh kupitia seva yetu inayoendesha Linux au Unix. Soma zaidi kuhusu ssh tunnel. Lakini hatuhitaji mtu kupata mstari wa amri na mfumo wa faili wa seva yetu. Sleepshell imeundwa kwa kesi kama hiyo. Tunaunda akaunti kwenye seva kama ganda na kuisakinisha. Mmiliki wa akaunti ataweza kuunganisha na kusambaza milango, lakini hataweza kutekeleza amri.

Ni hayo tu. Natumaini ilikuwa ya kuvutia. Nitafurahi kupokea maoni na ushauri wowote juu ya maandishi ya kifungu hicho.

Viungo vinavyohusiana
www.faqs.org/faqs/unix-faq/shell/shell-differences - jedwali la muhtasari wa tofauti za ganda na kufanana
www.mariovaldez.net/software/sleepshell - Sleep Dummy Shell
ipython.org/ipython-doc/dev/interactive/shell.html - IPython kama ganda la mfumo
www.opennet.ru/base/dev/ipython_sysadmin.txt.html - shell ya IPython kama zana ya msimamizi wa mfumo