Bashin peruskomennot

Tämä huijausarkki kattaa seuraavat aiheet: Johdatus kuoreen, navigointiin, peruskäskyihin, ympäristömuuttujiin, liittimiin, putkiin, I/O-uudelleenohjaukseen, käyttöoikeuksiin ja pikanäppäimiin.

Bash Shellin esittely

Shell tai shell on ohjelma, meidän tapauksessamme nimeltä "bash", joka on lyhenne sanoista Bourne Again Shell. Shell ottaa komentosi ja välittää ne käyttöjärjestelmälle. Päätteitä, kuten gnome-terminal , eterm , nxterm jne. käytetään vuorovaikutukseen järjestelmän kanssa.

Navigointi

SISÄÄN linux tiedostot ja hakemistoilla on hierarkkinen organisaatio, eli on jokin alkuhakemisto, jota kutsutaan juuriksi. Se sisältää tiedostoja ja alihakemistoja, jotka puolestaan ​​sisältävät tiedostoja ja niiden alihakemistoja.

pwd

pwd-komento, lyhenne sanoista tulostaa työhakemistoa, näyttää tämänhetkinen olinpaikka hakemistorakenteessa.

CD

cd-komennolla voit vaihtaa uuteen hakemistoon.

mkdir

mkdir-komento luo uuden hakemiston nykyiseen hakemistoon.

Peruskomennot

mies

Man-komento näyttää komentooppaat. Esimerkiksi seuraava komento antaa sinulle kaikki tiedot cat-komennosta:

$ mies kissa

kissa

Cat-komento lukee argumenttina annetun tiedoston ja tulostaa sen sisällön vakiotulosteeseen. Useiden tiedostojen välittäminen argumenttina tulostaa kaikkien tiedostojen ketjutetun sisällön.

kaiku

Kaiku-komento tulostaa argumenttinsa vakiotulosteeseen.

$ echo Hello World Hello World

Jos kutsut echoa ilman argumentteja, tulostetaan tyhjä merkkijono.

pää

Head-komento lukee minkä tahansa tekstin ensimmäiset 10 riviä ja tulostaa ne vakioputkeen. Lähtörivien määrää voidaan muuttaa:

$ head -50 test.txt

häntää

Tail-komento toimii kuten head-komento, mutta lukee rivit lopusta:

$ tail -50 test.txt

Voit myös tarkastella tiedostoon lisättyjä rivejä reaaliajassa -f-lipulla:

$ häntä -f testi.txt

Vähemmän

Komennolla less voit selata siirrettyä tiedostoa tai tekstiä molempiin suuntiin.

$ vähemmän test.txt $ ps aux | Vähemmän

Lisätietoja symbolin tarkoituksesta | käsitellään alla historiakomentoosiossa.

Yleiset pikanäppäimetKuvaus
GSiirtyy tiedoston loppuun
gSiirtyy tiedoston alkuun
:50 Siirtyy tiedoston riville 50
qPoistu vähemmän
/hakusanaHakumerkkijono, joka vastaa hakutermiä alla nykyinen linja
/
?hakusanaHae riviä, joka vastaa sanaa "hakutermi" nykyisen rivin yläpuolelta
? Siirtyy seuraavaan vastaavaan hakutulokseen
ylösSiirtää yhden rivin ylöspäin
alasSiirtyy yhden rivin alaspäin
sivu ylösSiirtyy yhden sivun ylöspäin
sivu alasSiirtää yhden sivun alaspäin

totta

Tosi-komento palauttaa aina nollan poistumistilana osoituksena onnistumisesta.

väärä

Epätosi-komento palauttaa aina nollasta poikkeavan poistumistilan ilmoittaen epäonnistumisesta.

$?

$? on muuttuja, joka sisältää viimeisen komennon poistumistilan. Tila ymmärretään yleensä ohjelman palautuskoodiksi. 0 tarkoittaa ohjelman onnistunutta suorittamista, mikä tahansa arvo, joka on suurempi kuin 0, kuvastaa sitä, että suorituksen aikana tapahtui joitain virheitä. Muuten, tästä syystä bashissa tosi (true) pidetään 0:na ja kaikki mikä ei ole 0 on epätosi (false):

$ totta $ kaiku $? 0 $false $echo $? 1

grep

Grep-komento etsii annettua merkkijonoa määritetty tiedosto:

$ kissa käyttäjät.txt käyttäjä:opiskelijan salasana:123 käyttäjä:opettajan salasana:321 $ grep "opiskelija" tiedosto1.txt käyttäjä:opiskelijan salasana:123

grep voi myös hyväksyä useita tiedostoja ja säännöllisiä lausekkeita selventääksesi tekstin muotoa.

historia

Historia-komento näyttää komentorivin historian. Sitä käytetään yleensä yhdessä grep-komennon kanssa tietyn komennon etsimiseen. Esimerkiksi seuraava koodi löytää kaikki komennot, jotka sisältävät merkkijonon g++:

$ historia | grep g++ 155 g++ tiedosto1.txt 159 g++ tiedosto2.txt

Tässä käytetään myös |-symbolia. - tämä on niin kutsuttu kuljetin (putki). Sen ansiosta voit ohjata yhden komennon lähdön toisen syötteeseen - siis yllä olevassa esimerkissä koko tarina, joka normaalitila Historia-komennon tulos suoraan päätteen ulostulo ohjataan syötteeksi grep:iin. Emme näe historiakomennon tulosta, mutta näemme grep-komennon tulosteen.

Tätä voi olla melko vaikea ymmärtää ilman harjoittelua, joten kokeile itse esimerkiksi ls , history , ps-komennoilla (kuvattu alla) ohjaamalla niiden tuloste esimerkiksi grep , sed tai less .

viedä

Vientikomento asettaa ympäristömuuttujat välitettäväksi lapsiprosesseille. Esimerkiksi näin voit välittää muuttujan nimen opiskelija-arvon kanssa:

$ vientinimi=opiskelija

ps

ps-komento näyttää tietoja käynnissä olevat prosessit.

$ ps PID TTY TIME CMD 35346 pts/2 00:00:00 bash

Näytössä näkyy neljä kohdetta:

  • Prosessitunnus (PID),
  • päätetyyppi (TTY),
  • käsittelyaika (TIME),
  • prosessin aloittaneen komennon nimi (CMD).

awk

awk-komento etsii ja korvaa tekstin tiedostoista tietyllä kuviolla: awk "pattern (toiminto)" test.txt

wget

wget-komento lataa tiedostot verkosta ja sijoittaa ne nykyiseen hakemistoon.

$ wget https://github.com/mikeizbicki/ucr-cs100

nc

ping

Ping-komento testaa verkkoyhteyden.

$ ping google.com PING google.com (74.125.224.34) 56(84) tavua tietoa. 64 tavua lax17s01-in-f2.1e100.net (74.125.224.34): icmp_req=1 ttl=57 time=7.82 ms --- google.com ping-tilastot --- 1 paketti lähetetty, 1 vastaanotettu, 0 % pakettihäviö , aika 8 ms rtt min/avg/max/mdev = 7,794/8,422/10,792/0,699 ms

Lopussa olevat tilastot osoittavat ennen komennon suorittamista tehtyjen yhteyksien määrän ja niiden valmistumiseen kuluneen ajan.

git

Ympäristömuuttujat

Ympäristömuuttujat ovat nimettyjä muuttujia, jotka sisältävät yhden tai useamman sovelluksen käyttämiä arvoja.

PATH-muuttuja sisältää luettelon hakemistoista, joista järjestelmä etsii suoritettavia tiedostoja.

HOME-muuttuja sisältää polun nykyisen käyttäjän kotihakemistoon.

Liittimet

Liitinten avulla voit suorittaa useita komentoja samanaikaisesti.

$ true && echo Hei Hei $ false || echo Hello Hei $ echo Hei ; ls Hei testi.txt tiedosto1.txt tiedosto2.txt

Kuljettimet

Putket tai putket mahdollistavat eri komentojen tulo- ja lähtökanavien yhdistämisen. Seuraavassa esimerkissä ls-komennon tulos putoaa head , jolloin vain ensimmäiset 10 kohdetta tulostetaan.

$ ls -l | pää

I/O-uudelleenohjaus

Tulostuksen uudelleenohjaus

Normaali lähdön uudelleenohjaus käyttää symboleja > ja >> .

Tämä koodi esimerkiksi ohjaa ls:n tulosteen tiedostoon näytön sijaan:

$ ls > tiedostot.txt $ kissa tiedostot.txt tiedosto1.cpp näyte.txt

Jos tiedostoa ei ole olemassa, se luodaan, ja jos on, se korvataan. Ylikirjoituksen välttämiseksi sinun tulee käyttää >>-komentoa - se liittää tiedot tiedoston loppuun.

Tulon uudelleenohjaus

Normaali lähdön uudelleenohjaus käyttää symbolia< . В следующем примере sort берет входные данные из файла, а не с клавиатуры:

$ cat files.txt c b $lajittele< files.txt b c

Lajittelukomento tulostaa tiedoston sisällön näytölle, koska emme ole ohjanneet tulosta. Tämä voidaan tehdä näin:

$lajittele< files.txt >files_sorted.txt

Edistynyt uudelleenohjaus

Lisääminen & kohteeseen > aiheuttaa sekä normaalin poistumisen että virheen uudelleenohjauksen. Esimerkiksi tiedosto test.cpp tulostaa merkkijonon stdout arvoon cout ja merkkijonon stderr muotoon cerr .

$ g++ test.cpp $ ./a.out >& testi.txt $ cat test.txt stdout stderr

Jos haluat näyttää tietyn tiedostokuvaaja, voit määrittää sen numeron > .

NimiKuvaajaKuvaus
stdin0 Vakiotulo
stdout1 vakiolähtö
stderr2 Normaali virhelähtö

Jos haluat esimerkiksi ohjata stderr-tiedoston test.txt-tiedostoon, toimi seuraavasti:

$ g++ test.cpp $ ./a.out 2> test.txt stdout $ cat test.txt stderr

Käyttöoikeudet

Komento ls -l tulostaa paljon tietoa kunkin tiedoston käyttöoikeuksista:

chmod

Chmod-komento muuttaa tiedoston käyttöoikeuksia. Tässä on tyypillisiä lippuyhdistelmiä tiettyjen käyttäjien oikeuksien muuttamiseksi:

Voit kutsua chmodia kuvauksella siitä, mitä tehdä tietylle tiedostolle. Symboli - tarkoittaa oikeuksien poistamista, symboli + - lisäystä. Seuraava esimerkki tekee tiedostosta omistajan ja ryhmän luettavissa ja kirjoitettavissa:

$ chmod ug+rw testi.txt $ ls -l testi.txt -rw-rw---- 1 käyttäjäryhmä 1097374 26. tammikuuta 2:48 test.txt

Myös chmodia voidaan käyttää oktaaliluvut, jossa 1 on oikeuksien olemassaolo ja 0 poissaolo:

Rwx=111=7 rw-=110=6 r-x=101=5 r--=100=4

Seuraava komento toimii kuten edellinen.

Moskovan valtion elektroniikkainstituutti

(teknillinen korkeakoulu)

Integroidun elektroniikan ja mikrojärjestelmien laitos

LABORATORIO TYÖPAJA

KURSSI:

KÄYTTÖJÄRJESTELMÄLinux

Kokoanut: apulaisosasto. IEMS Kozlov A.V.

Moskova, 2007

Laboratorio on tarkoitettu ensisijaisesti tekniikan ja teknologian maisteriopiskelijoille suunnan 210100.68 ensimmäisen vuoden Synopsys-opiskelijoille Red Hat Enterprise Linux (RHEL) 4.0 -käyttöjärjestelmän hallitsemiseksi. Se on tarkoitettu myös FreeScale-opiskelijoille ja kaikille käyttäjille, joilla on aloittelija tai ei Linux-taustaa ja jotka haluavat oppia Linux-komentoympäristön ja sen ydinsovellukset, joita käyttäjä tarvitsee työskennelläkseen tietokoneavusteisten suunnittelujärjestelmien kanssa.

Tämä työpaja koostuu kahdeksasta laboratoriotyöstä, joiden avulla käyttäjä voi hallita tehokkaasti komentotulkin komentoja sekä asteittain oppia kirjoittamaan tiedostoja - Shell-, Gawk-, Perl- ja Tcl-skriptejä. Jokainen laboratoriotyö sisältää seuraavat osat: työn nimi, tehtävä ja tarkoitus; teoreettista tietoa ohjauskysymyksillä; esimerkki laboratoriotyöstä; laboratoriotyön suorittamismenettely; laboratoriotehtävä ja työraporttilomake. Komentotulkin komentojen kirjoittamisen syntaksi vaihtoehtojen, parametrien, toimintojen, lausekkeiden ja polkujen kanssa on suunniteltu BASH-komentoympäristöön. Laboratoriotyöpajan lopussa on luettelo referensseistä.

Moskovan osavaltion elektroniikkatekniikan instituutti (TEKNINEN YLIOPISTO)

LAB #1

KURSSILLA "LINUX-KÄYTTÖJÄRJESTELMÄ"

Bash shell -komentojen oppiminen Linuxissa

KUVAUS TEKIJÄ:

A. V. KOZLOV

MOSKVA 2007

Lab #1 Bash shell -komentojen oppiminen Linux-käyttöjärjestelmässä

Työn tavoite : perustuu BASH-komentotulkkiin hallitsemaan taidot työskennellä komentojen kanssa Red Hat Enterprise Linux 4.0 -käyttöjärjestelmässä.

Työaika - 4 tuntia

Teoreettista tietoa

käyttöjärjestelmä Linux kehitettiin alun perin ilmaiseksi, joustavaksi, monikäyttöiseksi, monen käyttäjän ja korkean suorituskyvyn alustaksi, joka on suunniteltu palvelemaan ja ratkaisemaan tutkijoiden ongelmia ympäri maailmaa. "Tieteellisen suuntautumisen" vuoksi sellaisella alustalla ei alun perin ollut laajennettua graafista käyttöliittymää, jota käytetään laajasti kotitehtävien - tietokonepelien, Internetin, interaktiivisten käyttäjien yhdistämisohjelmien - sekä toimisto-ongelmien ratkaisemiseen - työskentelyyn. tietokantajärjestelmillä, piirtokaavioilla ja histogrammeilla. Usein tutkijoiden työ Linux-käyttöjärjestelmän kanssa pelkistettiin yksinkertaisesti käyttäjän (tietokoneella työskentelevän henkilön) tavanomaiseen vuorovaikutukseen konsolin kanssa (pääteikkuna näytön näytöllä tekstitiedoilla). Ymmärtääksesi käyttäjän antamat komennot Linuxissa, kehitetty komentotulkit, jotka ovat ihmisille ymmärrettävien komentojen kääntäjiä käyttöjärjestelmän ytimelle ymmärrettäviksi ohjaussignaaleiksi. Käyttöjärjestelmän päätehtävänä on välittää komentojen siirtoa henkilöltä tietokoneelle. Ja huolimatta siitä, että nykyään Linux-käyttöjärjestelmää käytetään kaikkialla, ei vain instituuteissa, suunnittelukeskuksissa, tietokonekeskuksissa, vaan myös koti- ja toimistotarkoituksiin, konsolit (pääteikkunat) ovat edelleen laajalti käytössä, ja ne näyttävät monilta vielä enemmän. kätevämpää kuin hiiren ja kuvakkeiden (kuvakkeet Linuxissa) käyttäminen graafisessa ympäristössä.

komentojen tulkki on merkkijonointeraktiivinen käyttöliittymä, jossa on komentorivikehote käyttäjän ja käyttöjärjestelmän välillä. Käyttäjä syöttää komentoja komentoriville, komentotulkki "hyväksyy" ne ja lähettää ne ohjeina käyttöjärjestelmälle suoritettavaksi. Komentojen tulkin avulla voit paitsi syöttää komentoja, myös ohjata komentorivitietojen syöttöä ja ulostuloa sekä suorittaa toimintoja tausta, jolloin käyttäjä voi tehdä muita tehtäviä samanaikaisesti.

Linuxille on kehitetty useita kuoria: Bourne Again -kuori (BASH), Public Domain -kuori (PDKSH), TCSH-tulkki ja Z-kuori. Vaikka BASH on oletustulkki, mitä tahansa muuta ympäristöä voidaan käyttää. Jokapäiväisessä tilassa työskentelyn helpottamiseksi vain yksi komentotulkki riittää. Red Hal Linux sisältää kaikki tärkeimmät kuoret, mutta BASH-kuori on asennettu ja sitä käytetään oletuksena. Tämä tarkoittaa, että tämä käyttöjärjestelmä käyttää BASH:ia komentorivitoimintoihin, ellei toisin mainita.

Komentorivi. Linuxin komentorivikäyttöliittymä koostuu yhdestä rivistä, jolle syötät komentoja vaihtoehtoineen ja parametreineen. BASH-kuoressa komentorivin alku on yleensä merkitty kutsu dollarimerkkinä ($); muut Linux-järjestelmän kuoret voivat käyttää erilaista kehotetta. Kehotteen jälkeen käyttäjä voi syöttää joko yksittäisen komennon tai komennon vaihtoehtoineen ja parametreineen. Jos käyttäjällä ei ole tarpeeksi kokoa komentokehotteeseen, sitä voidaan rajoittaa "/"-merkillä. Komento kirjoitetaan näppäimistöltä ja syöttö tapahtuu näppäimellä. Esimerkiksi järjestelmän päivämäärän ja kellonajan näyttämiseksi käyttäjä voi käyttää komentoa Päivämäärä .

$ päivämäärä

pe 8. kesäkuuta 15:42:35 MSD 2007

Tai esimerkiksi, jos haluat näyttää nykyisen kuukauden kalenterin, käytä cal-komentoa.

$cal

kesäkuuta 2007

Su Ma Ti Ke To pe Sa

1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30 31

Shellin pääkäyttöliittymä on komentoriviliittymä, joka tulkitsee syötetyt komennot ja lähettää ne järjestelmään. Komentoriville annettujen komentojen on noudatettava tiettyjä syntaksisääntöjä. Yleissääntö komentojen syöttämisessä on, että ensimmäisen komentoriville kirjoitetun sanan on oltava komennon nimi; seuraavat sanat ovat komennon valinnat ja parametrit. Jokainen komentorivin sana on erotettu muista sanoista yhdellä tai useammalla välilyönnillä tai sarkaimella.

Vaihtoehto - on yhdysviivaa edeltävä yksi- tai monikirjaiminen koodi, joka muuttaa komennon suorittaman toiminnon tyyppiä. Tässä on esimerkki komennosta vaihtoehtoineen ls . Kun tätä komentoa käytetään ilman valintoja, se listaa kaikki nykyisen hakemiston tiedostot ja hakemistot. Tässä luettelossa ei ole mitään muuta kuin tiedostonimiä tunnisteella ja ilman. Esimerkiksi kun annat komennon ls vaihtoehdon kanssa - l tiimi ls tuottaa rivi riviltä tiedot jokaisesta tiedostosta, nimittäin sen koon, päivämäärän ja kellonajan viimeinen mahdollisuus. Seuraavassa esimerkissä käyttäjä antaa komennon ls vaihtoehdon kanssa - l. Tavuviiva ennen vaihtoehtoa on pakollinen. Näin Linux-järjestelmä erottaa vaihtoehdon parametrista.

$ ls - l

yhteensä 28

-a-valinnan avulla voit näyttää kaikki nykyisen hakemiston tiedostot, mukaan lukien ns piilotetut tiedostot. Asetustiedostot ovat usein piilossa. Piilotetut tiedostojen nimet alkavat aina pisteellä, joten niitä kutsutaan usein leikattutiedostot. Useimmissa tapauksissa vaihtoehdot yhdistetään. Tässä tapauksessa yksi yhteinen tavuviiva asetetaan vaihtoehtoryhmän eteen. Esimerkiksi -al-vaihtoehto antaa tietoja kaikista nykyisen hakemiston tiedostoista, mukaan lukien piilotetut tiedostot. Uusi ttt-tiedosto tulee näkyviin.

$ ls -al

yhteensä 40

Parametri on sana, joka kirjoitetaan komentoriville vaihtoehtojen jälkeen. Tiedostokomennot käyttävät yleensä tiedostonimiä parametreina. Jos esimerkiksi haluat tietoja vain yhdestä gauss.plx-tiedostosta, määritä sen nimi valitsimen -l jälkeen:

$ ls -l gauss.plx

Käyttäjän työ alkaa BASH-kuoriympäristössä, joka ladataan oletuksena. Se sisältää erityisiä komentorivin muokkausominaisuuksia, jotka voivat olla erittäin hyödyllisiä Linux-käyttöjärjestelmän oppimisessa. Ennen komentojen suorittamista ne voidaan korjata siirtämällä osoitinta komentorivillä ja lisäämällä tai poistamalla merkkejä. Tämä on erityisen hyödyllistä käytettäessä erittäin monimutkaisia ​​komentoja. Muokkaustoimintojen avulla voit korjata virheen komentoa kirjoitettaessa. Käyttämällä näppäintä |ylös| voit poistaa näytön juuri suoritetun komennon. Voit sitten suorittaa komennon uudelleen tai muokata sitä suorittaaksesi muokatun komennon. Tämä ominaisuus on erittäin kätevä toistettaessa joitain toimintoja useita kertoja, esimerkiksi kun muokkaat yhtä ja sama tiedosto.

Komentotulkin tarkoitus on työskennellä tiedostojen kanssa: tietojen luominen, kopioiminen, uudelleennimeäminen, siirtäminen, poistaminen ja muokkaaminen. Vaikka käyttäjä ei työskentele suoraan konsolin kanssa, vaan käyttää graafisia sovelluksia, nämä tiedostotoiminnot tapahtuvat hänestä riippumatta.

Luo tiedostoja ja hakemistoja. Linuxissa tiedostot ja hakemistot ovat kahdenlaisia ​​tietoja, joten ne luodaan käyttämällä eri joukkueita. Hakemiston (hakemisto, kansio) luomiseen käytetään Linuxissa varattu komento mkdir ("make directory" - luo hakemisto). Seuraavassa esimerkissä luomme uuden hakemiston nykyiseen hakemistoon. Käytä tätä varten komentoa mkdir ja välilyönnillä erotettuna uuden hakemiston nimeä.

$ mkdir Uusi

Hakemisto on luotu. Joskus on kuitenkin luotava kokonainen sisäkkäinen rakenne, kun jo luodun kansion sisällä pitäisi olla toinen ja sen sisällä toinen ja niin edelleen. Tätä tarkoitusta varten mkdir-komento käyttää -p sisäkkäisasetusta. Seuraava esimerkki luo alikansioita yhdellä komennolla: ensimmäinen kansio 1, kansion 2 sisällä ja kansion 3 sisällä.

$ mkdir -p 2.1.3

Voit luoda tiedostoja komennoilla sekä käyttämällä sisäänrakennettuja ja ulkoisia Linux-tekstieditoreja, kuten kedit, nedit, gedit ja niin edelleen. Kuitenkin luetellut editorit vaativat graafisen kuoren työtä ja siten graafisen järjestelmän työtä. Sen puuttuessa voit käyttää esimerkiksi tekstieditoria VIM tai analogeja, jotka eivät vaadi grafiikkajärjestelmän toimintaa. Voit myös luoda tiedostoja käyttämällä tekstipohjaisia ​​tiedostonhallintaohjelmia, kuten Midnight Commander (mc-komento). Käyttäjän (suunnittelijan) on usein tallennettava tekstitiedostoihin tekstitietoa, joka liittyy integroidun piirin tai esimerkiksi simuloidun puolijohdelaitteen sähköfysikaalisten parametrien laskentaan. Ja sitä tarvitaan myös vastaanotettujen tietojen käsittelyyn (poistamiseen, lisäämiseen, lajitteluun, jakamiseen). Tällaiset toiminnot suoritetaan myös Linux-komennoilla. Yksi yksinkertaisimmista komennoista tekstitiedoston luomiseen on komento kissa.

cat-komennolla ei ole omaa käyttöliittymää, joten syötettyäsi cat-komennon uudelleenohjaussymbolin (katso alla) ja uuden tiedoston nimen kanssa, voit kirjoittaa tekstitietoja välittömästi siirtymällä riviltä toiselle Enter-näppäimellä. Poistu kissaeditorista (suodattimesta) painamalla Ctrl-D. Seuraavassa on esimerkki tiedoston luomisesta cat-komennolla.

$ kissa > Uusi _ tiedosto

Vastaanotetun tiedoston katselu tapahtuu cat-komennolla ja tiedoston nimellä välilyönnillä erotettuna.

$ kissa Uusi _ tiedosto

Tai esimerkiksi tekstitietojen tallentaminen konsolista komentoa suoritettaessa ls-a-vaihtoehdolla tiedostoon r, voit käyttää tietojen uudelleenohjaustoimintoa (katso alla) ja komentoa tee-a-vaihtoehdolla.

$ ls -l | tee -a r

Tiedostojen ja hakemistojen kopiointi. Tiedostojen ja hakemistojen kopiointi suoritetaan cp-komennolla, jonka jälkeen kopioitava kohde osoitetaan suhteellisella tai absoluuttisella polulla välilyönnillä erotettuna, ja myös tämän objektin kopion uusi kohde erotetaan välilyönnillä. Seuraava esimerkki kopioi gauss.plx-tiedoston nykyisestä hakemistosta alihakemistoon 1, joka on nykyisessä hakemistossa.

$ cp Gauss . plx 1

Jos sinulla on käyttöoikeudet Linux-objekteihin (laboratoriotyö #2), voit myös kopioida tämän tiedoston käyttäjälle Alexille, jonka työhakemistossa on seuraava absoluuttinen polku /home/alex , käyttämällä seuraavaa komentoa.

$ cp Gauss . plx / Koti / Alex

Jos samanniminen tiedosto on jo olemassa kohteessa, kun tiedosto kopioidaan, se korvataan. Tämä voi johtaa tarvittavien tietojen menetykseen. Tämän välttämiseksi käytä cp-komentoa vaihtoehdon -i kanssa, jolloin Linux kysyy joka kerta käyttäjältä, haluaako hän todella korvata tiedoston. Viimeisen komennon uusi näkymä näyttää tältä.

$ cp -i gauss.plx /home/alex

Hakemistot kopioidaan samalla tavalla kuin tiedostot. Kuitenkin kopioitaessa hakemistoja, joissa on tiedostoja ja alihakemistoja, -R-vaihtoehtoa käytetään osana cp-komentoa. Kun olet hakemistossa /home/antonk/111, kopioidaan laba2-hakemisto korkeammalle tasolle, ts. hakemistoon /home/antonk. Kaksi pistettä osoittavat hierarkian tason yhden askeleen korkeammalle.

$ cp - R laba 2 ..

Nimeä ja siirrä tiedostoja ja hakemistoja uudelleen. Tiedostojen ja hakemistojen uudelleennimeäminen tapahtuu komennolla mv, jonka jälkeen nimetään uudelleennimettävä kohde välilyönnillä erotettuna ja objektin uusi nimi erotetaan toisella välilyönnillä. Hakemistojen uudelleennimeäminen on sama asia kuin tiedostojen uudelleennimeäminen. Nimetään gauss.plx-tiedosto uudelleen uudeksi tiedostoksi nimeltä gauss2.plx . Jos tässä hakemistossa on jo tiedosto, jolla on sama nimi kuin uudelleennimetyn tiedoston uusi nimi, uudelleennimetyn tiedoston sisältö korvaa sen. Tämän estämiseksi käytä myös vaihtoehtoa -i. Muuten, Linuxissa laajennuksien käyttöä ei vaadita. Niitä käytetään vain tiedostojen ja suoritettavien ohjelmien yhdistämiseen.

$ mv -i gauss.plx gauss2.plx

Tiedostojen ja hakemistojen poistaminen. Tiedostojen ja hakemistojen poistaminen Linuxissa tapahtuu rm-komennolla, jossa poistettavien tiedostojen nimet on eroteltu välilyönnillä. !!! Ole varovainen, kun työskentelet tämän komennon kanssa, voit poistaa tarvittavat tiedot. Käytä cp-komennon tapaan -i-vaihtoehtoa rm-komennon kanssa. Tällä valinnalla varustettu komento pyytää vahvistusta jokaisen tiedoston ja hakemiston poistamiseksi. Seuraavassa esimerkissä poistamme tiedoston Gauss 2. plx , pyytää vahvistusta poistamiselle .

rm –i gauss2.plx

ryhmän symbolit. Joskus komentotulkin kanssa työskennellessäsi sinun on löydettävä tai yhdistettävä tiedostoja kuvion mukaan. Tiedät esimerkiksi vain tiedostonimen ensimmäisen kirjaimen ja haluat löytää kaikki kyseisellä kirjaimella alkavat tiedostot työhakemistosta. Tai tiedät useiden kirjainten sekvenssin tiedoston nimessä tai tunnisteessa ja sinun on löydettävä se useiden satojen muiden tiedostojen joukosta. Tässä tapauksessa sinun on käytettävä Linuxin erikoismerkkejä. Komentojen tulkki käyttää sarjaa erikoismerkit, joita kutsutaan jokerimerkeiksi, joita voidaan käyttää tiedostonimien etsimiseen, yhdistämiseen ja luetteloimiseen. Nämä merkit ovat tähti, kysymysmerkki ja hakasulkeet (*, ?, ). Jos tiedostonimi on osittainen, komentotulkki käyttää näitä merkkejä mallina etsiäkseen ja luodakseen luettelon löydetyistä tiedostonimistä. Parametri, jolla on määrittelemätön tiedostonimi, korvataan vastaavien tiedostonimien luettelolla. Tätä nimiluetteloa voidaan käyttää parametrina komentoissa, jotka toimivat useilla tiedostoilla (esim. ls). Shellin yleismerkit on lueteltu taulukossa 1. 1.

Taulukko 1. Shell-erikoismerkit

Yleiset symbolit

Tarkoitus

Erottelee komennot samalla komentorivillä

"tiimi"

Komennon suoritus

Vertailu tiedostonimien mahdollisten merkkien luokkaan

Määritä seuraava hahmo erityiseksi. Käytetään osoittamaan ohjausmerkkejä

Liitä yhden komennon stdout toisen komennon syötteeksi

Komennon suorittaminen taustalla

Komento, jolla työskentelet aiemmin syötettyjen komentojen luettelon kanssa

Jokerimerkit

Hakemuksen tulos

Vastaa mitä tahansa tiedostonimien merkkijoukkoa

Vastaa mitä tahansa erillinen symboli tiedostonimissä

Uudelleenohjaussymbolit

Hakemuksen tulos

Ohjaa vakiotulosteen tiedostoon tai laitteeseen. Tässä tapauksessa, jos tiedostoa ei ole olemassa, se luodaan, jos tiedosto on olemassa, se korvataan.

Huutomerkki saa tiedoston päälle, jos se on olemassa. Tämä merkki ohittaa vaihtoehdon, joka estää korvaamisen olemassa olevia tiedostoja

Uudelleenohjaukset vakiotulo tiedostosta tai laitteesta ohjelmaan

Ohjaa vakiotulosteen tiedostoon tai laitteeseen liittämällä tulosteen tiedoston loppuun

Uudelleenohjaussymbolit

Tulos vakiovirhetulosteen soveltamisesta

Uudelleenohjaa ja lisää vakiovirhetulosteen tiedostoon tai laitteeseen

Uudelleenohjaa normaalin virheviestin lähdön vakiotuloon

Ohjaa vakiovirhetulosteen tiedostoon tai laitteeseen

Putket virheilmoitusten vakiotulostuksen toisen komennon tuloon

Esimerkiksi tähtimerkkiä (*) voidaan käyttää viittaamaan tiedostoihin, joiden nimet alkavat tai päättyvät tietyllä merkkiyhdistelmällä. Esimerkki näyttää, kuinka tähtimerkkiä (*) käytetään missä tahansa merkkiyhdistelmässä.

$ls

docl doc2 document docs mydoc maanantai tiistai

Näyttää täydellisen luettelon työhakemiston tiedostoista.

$ ls doc*

docl doc2 dokumenttiasiakirjat

Tässä esimerkissä näytettiin, kuinka "suodatimme pois" tiedostonimet tähtimerkillä, jotka eivät ala kirjainyhdistelmällä "doc". Vain tiedostonimet, jotka sisältävät yhdistelmän "doc", näytetään. Tässä tapauksessa jäljellä olevia tiedostoja ei poisteta, niitä ei yksinkertaisesti näytetä käyttäjälle.

$ ls *päivä

maanantai t tiistai

Täällä olemme näyttäneet tiedostonimet, jotka päättyvät yhdistelmään "päivä".

$ ls [ mt ] * d *

maanantai tiistai

Ja tässä olemme näyttäneet tiedostojen nimet, joissa ensimmäinen merkki on kirjain "m" tai "t", seuraavat merkit ovat mielivaltaisia, sitten kirjain "d" ja jälleen mielivaltaisia ​​merkkejä.

Ole varovainen, kun käytät tähteä yhdessä rm-komennon kanssa, koska tämä voi johtaa tietojesi menetykseen. Seuraava komento poistaa nykyisen kansion kaiken sisällön.

rm *

$ ls *päivä

docl doc2 asiakirjoja

Kysymysmerkki (?) tarkoittaa vain yhtä määrittelemätöntä merkkiä tiedostonimessä.

Tärkein käyttäjän prosesseista on komentotulkki (se on myös komentotulkki tai yksinkertaisesti komentotulkki). Hän tarjoaa käyttäjän vuorovaikutuksen järjestelmän kanssa tekstitilassa, jolloin voit kirjoittaa komentoja. Se toimii, kun kirjaudut sisään tekstikonsoliin, ja tarjoaa sinulle komentoriviliittymän.

Ei ole tarpeen aliarvioida komentoriviä graafisen käyttöliittymän mukavuuksien vuoksi. Ensinnäkin monet hallinnolliset tehtävät voidaan suorittaa vain sieltä; toiseksi komentorivi on kätevin tapa automatisoida rutiinitoimenpiteet. Linuxissa komento on kaikki mitä voidaan suorittaa: suoritettavat tiedostot, sisäänrakennetut komentotulkkikomennot, komentoaliakset, käyttäjän määrittämät funktiot, komentosarjatiedostot (skriptit) - valmiiksi valmistetut komentosarjat tekstimuodossa.

Täten, komentojen tulkki on ohjelma, jolla on omat sisäänrakennetut komennot, oma muuttuva ympäristö (ympäristö) ja jonka avulla voit myös suorittaa järjestelmässä olevia ulkoisia komentoja.

Shell hyväksyy käyttäjän toimittamat komennot, käsittelee tarvittaessa niiden argumentit, lähettää komennot suoritettaviksi, hyväksyy niiden palautusarvot ja suorittaa tiettyjä toimintoja näiden arvojen perusteella. Lisäksi kuoressa on sisäänrakennettu ohjelmointikieli (komentokieli), jonka avulla voit kirjoittaa monimutkaisia ​​haarautuneita komentosarjoja. Se on komentokieli, joka erottaa eri kuoret toisistaan, ja siitä käyttäjät aloittavat valitessaan komentotulkoja.

Linux on Unixin kaltainen käyttöjärjestelmä. Linuxin kehitti alun perin Linus Torvalds Helsingin yliopistossa (Suomi) pohjautuen Andry Tanenbaumin luomaan Minixiin, pieneen UNIX-järjestelmään. Aikaisin Linuxin kehitys johtui ensisijaisesti 80386 suojatun tilan tehtävänvaihto-ongelmasta. Ja Linus "alkoi vakavasti harkita maanista ajatusta kuinka tehdä Minixistä itseään parempi."

UNIX-järjestelmien komentotulkki oli jo olemassa, se oli "Bourne shell" (Bourne shell tai yksinkertaisesti shell). Hieman myöhemmin UNIX-järjestelmät kehittivät C-kuoren, joka käyttää erilaista syntaksia, joka muistuttaa hieman C-ohjelmointikielen syntaksia.

Monet kuoret on kehitetty Linuxille. Pääasiallinen oletusarvo on "Bash", joka on kehitetty kuoripohjainen ja nimeltään "New Shell of Bourne" (Bourne Again Shell). Siten Bash on vanhan kuoren evoluutio, joka lisää monia hyödyllisiä ominaisuuksia, jotka löytyvät osittain C-kuoresta. Koska Bashia voidaan pitää vanhan komentotulkkisyntaksin superjoukkona, minkä tahansa vanhalla hyvällä Bourne-kuorella kirjoitetun ohjelman pitäisi toimia Bashissa.

On kuitenkin huomattava, että Linux ei ole UNIX-järjestelmä, koska sen koodi kirjoitettiin kokonaan uudelleen, alun perin Linus, myöhemmin monien UNIX-ohjelmoijien ja Internetin harrastajien avulla, joilla on tarpeeksi taitoja ja kykyjä kehittää järjestelmää. .

Linux-ydin ei käytä UNIX-koodeja tai mitään muuta omaa lähdettä, ja useimmat Linux-ohjelmat kehitetty Free Software Foundationin GNU-projektissa Cambridgessa, Massachusettsissa. Mutta ohjelmoijat kaikkialta maailmasta myös osallistuivat siihen.

Tässä ovat yleisimmät Linux-komentotulkit:

  • Bourne-kuori - Bourne-kuori, vakiona monissa UNIX-tyyppisissä järjestelmissä;
  • bash - Bourne Again -kuori, "uusi Bourne-kuori" (käytetään oletuksena Linuxissa);
  • csh - C-kuori, C-kuori: sen komentokielen syntaksi on samanlainen kuin C-kielen;
  • tcsh - pieni C-kuori, minimaalinen C-kuori;
  • pdksh - julkinen Korn-kuori, julkinen Korn-kuori;
  • sash - erillinen kuori, voidaan käyttää, kun ohjelmistokirjastoja ei ole saatavilla.

Luettelo kaikista järjestelmään asennetuista shell-ohjelmista on /etc/shells-tiedostossa.

Jokaisen käyttäjän ensimmäinen komentotulkki, joka käynnistetään hänelle kirjautuessaan järjestelmään, on määritetty /etc/passwd-tiedostossa. Se ei välttämättä ole kauheaa. Ylläpitäjä voi yleensä estää tiettyjä käyttäjiä kirjautumasta järjestelmään määrittämällä /sbin/nologin rekisteröinnin jälkeen ladatuksi "shelliksi". Tai jopa määritä erityisesti suunniteltu komentosarja, jonka avulla voit tarkastella esimerkiksi toga-lokeja (lokeja).

/etc/passwd-tiedoston muokkaamiseen Linuxissa on erityinen komento vipw , joka tarkistaa muokkauksen oikeellisuuden (komento on vain järjestelmänvalvojan käytettävissä).

Jatkossa, kun työskentelet oletuskuoressa, voit muuttaa nykyisen kuoren mihin tahansa asennetuista (tarkemmin sanottuna syöttämällä alikuoren). Poistuaksesi siitä ja palataksesi pääkuoreen kirjoittamalla exit-komento. Alkukuoressa tämä komento päättää istunnon.

Missä tahansa komentotulkissa voit suorittaa komentosarjoja, jotka koostuvat toisen komentotulkin komennoista: kunkin komentosarjan ensimmäinen rivi määrittää, missä komentotulkissa se tulee suorittaa, ja nykyinen komentotulkki käynnistää sille aliprosessiksi määritetyn komentosarjan.

Kuten sanoin, oletuksena uudelle käyttäjälle on määritetty bash-kuori. Se on loistava kuori, joka sisältää monia parannuksia ja parhaita ominaisuuksia muista kuorista, enkä suosittele sen vaihtamista. Tulevaisuudessa, kun sanon "kuori", tarkoitan bashia.

2. Komentorivin jäsentäminen, bash-suosikit

Tulkki, saatuaan komentorivin, suorittaa siihen useita muunnoksia käyttämällä tehokkaita toimintojaan tähän, nimittäin:

  1. Laajentaa aliaksia (aliaksia), jotta pääset nopeasti käsiksi yleisimpiin komentoihin.
  2. Laajentaa jokerimerkit tai jokerimerkit (*, ?, [, ], ~, (, )) etsiäkseen tiedostoja nimimallien perusteella.
  3. Korvaa muuttujat, joita kuori voi käyttää.
  4. Uudelleenohjaa yhden komennon lähdön syötteenä toiseen komentoon putken avulla.
  5. Suorittaa komentojen yhdistämisen.
  6. Suorittaa komennon, jos se on tulkin sisäänrakennettu komento, tai käynnistää prosessin, jos komento on ulkoinen.
  7. Uudelleenohjaa vakiotulon/lähdön.

Kolme viimeistä toimintoa vaativat erikoisoperaattoreita. Katsotaanpa kaikkia näitä ominaisuuksia.

2.1. Aliakset

Komentoaliakset on suunniteltu tarjoamaan tehokkaampaa komentotulkkikomentojen kirjoittamista. Aliaksen avulla lähes minkä tahansa monimutkainen komento voidaan korvata mielivaltaisella merkkijonolla. Jos haluat tarkastella aliasluetteloa ja tarvittaessa lisätä siihen uuden aliaksen, käytä alias-komentoa.

Esimerkiksi:

$ export HELLO="Terve ympäristöstä!" # välilyönti tulee merkitä lainausmerkeillä

Ympäristömuuttujat

Ympäristö on joukko muuttujia, joiden arvot voivat muuttaa kuoren käyttäytymistä.

Kun komentotulkki käynnistyy, se asettaa itselleen useita ympäristömuuttujia. Heidän nimensä ovat vakioita. Ohjelmat ja komentosarjat voivat kysellä arvojaan sen sijaan, että yrittäisivät selvittää tarvitsemansa tiedot itse.

Siten kuori määrittää ympäristömuuttujat, joita käytetään nykyisessä istunnossa. Jokainen syötetty uusi komento suoritetaan itse asiassa pääprosessin aliprosessina, joka Tämä tapaus bash-komentojen tulkki. Ympäristömuuttujat ovat erilaisia vaihtelevia aiheita että ne ovat sekä vanhempien että lasten prosessien saatavilla. Ympäristömuuttujien automaattinen tunnistus tapahtuu käyttäjän todennuksen jälkeen järjestelmässä. Jos todennusprosessi on suoritettu onnistuneesti, kirjautumisohjelma määrittää /etc/passwd-tiedoston perusteella, mitä komentotulkkia käytetään tämän käyttäjän istunnossa. Kun komentotulkki on määritetty, istunto konfiguroidaan alla olevien asetustiedostojen mukaisesti.

AsetustiedostoKuvaus
/etc/profile

Määrittää ympäristömuuttujat kaikille järjestelmän käyttäjille. Tämä tiedosto suoritetaan ensimmäisen sisäänkirjautumisen yhteydessä ja sisältää tärkeimmät ympäristömuuttujat, kuten PATH-komennon sijaintihakumuuttujan, HOSTNAME hostname-muuttujan ja HISTSIZE-komentohistorian kokomuuttujan. Lisäksi tämä tiedosto luo ylimääräisiä ympäristömuuttujia /etc/profile.d-hakemistossa olevista asetustiedostoista.

/etc/bashrc

Suoritetaan kaikille käyttäjille aina kun bash-kuori käynnistetään. Tämä tiedosto määrittää PS1-muuttujan arvon sekä muut komentoaliakset (aliakset). Alias ​​on lyhennetty mielivaltaisesti annettu nimi komennosta tai komentosarjasta, jonka avulla voit suorittaa monimutkaisia ​​komentosarjoja kirjoittamatta niitä näppäimistöltä, vaan kutsumalla niitä kutsumalla vastaavaan aliakseen. Tässä tiedostossa määritellyt muuttujat "voidaan määrittää uudelleen samanlaisessa muodossa käyttäjätiedosto-/.bashrc, jolla on korkeampi prioriteetti.

-/.bash-profiili

Käytetään tiedostona, joka sisältää yksittäisiä käyttäjäasetuksia. Toimii vain kerran, kun käyttäjä kirjautuu sisään. Lisäksi tämä tiedosto käynnistää tiedoston -/.bashrc

~/.bashrc

Tämä tiedosto sisältää käyttäjän asettamia ympäristömuuttujia ja aliaksia. Se suoritetaan aina, kun käyttäjä kirjautuu sisään tai avaa uuden bash-istunnon. Tämä tiedosto sopii parhaiten mukautettujen muuttujien ja aliasten määrittämiseen.

~/.bash_logout

Tämä tiedosto suoritetaan aina, kun kirjaudut ulos tai poistut viimeisestä bash-istunnosta. Oletuksena tämä tiedosto sisältää komennon päätteen näytön tyhjentämiseksi.

/etc/inputrc

Tämä tiedosto sisältää kuvauksen eri näppäinyhdistelmien tulkinnasta ja sisältää myös erityisiä näppäinyhdistelmiä, joiden painaminen suorittaa määritettyjä komentoja.

Ympäristömuuttujat riittävät kätevä tapa sisällä usein käytetyn tiedon tallennus nykyinen istunto työskentele järjestelmän kanssa. Tarvittaessa käyttäjä voi luoda melkein mitä tahansa ympäristömuuttujia (yritä olla muuttamatta jo käytössä olevien ympäristömuuttujien arvoja) ja lukea niiden arvot koko kuoren keston ajan. Jos haluat luoda väliaikaisen ympäristömuuttujan, kirjoita sen nimi ja anna sille sopiva arvo. Esimerkiksi,

vienti AB=/usr/dog/contagious/ringbearer/grind

SISÄÄN tämä esimerkki tilapäinen ympäristömuuttuja AB asetetaan polulle hakemistoon, joka sijaitsee "riittävän syvällä" tiedostojärjestelmän hakemistohierarkiassa. Vientikomento määrittää, että muuttujan AB arvo tulee viedä komentotulkkiin, jotta se olisi muiden nykyisen järjestelmäistunnon aikana avattavien komentotulkkien käytettävissä. Yllä olevaan hakemistoon pääsee nyt suorittamalla cd $AB

Väliaikaisten ympäristömuuttujien ainoa haittapuoli on, että ne tuhoutuvat automaattisesti, kun nykyinen istunto järjestelmän kanssa päättyy. Pysyvän (tilapäisen) ympäristömuuttujan luomiseksi se on lisättävä .bashrc-komentotulkin määritystiedostoon.

Sinun on oltava pääkäyttäjä, jotta voit muokata /etc/profile- ja /etc/bashrc-määritystiedostoja.

Tavalliset käyttäjät voivat muokata kotihakemistoissaan olevia ~/.bash_profile-, ~/.bashrc- ja ~/.bash_Iogout-määritystiedostoja. Nämä määritystiedostot voivat sisältää muuttujiensa asettamisen ympäristössä export-komennolla ja käyttää niitä missä tahansa istunnossa.

Yksi useimmin vaihdetuista ympäristömuuttujista on PATH-muuttuja. Voit myös ohittaa PATH-ympäristömuuttujan tai lisätä siihen ~/.bashrc-määritystiedostossa.

tässä esimerkissä PATH-muuttuja sisältää sen nykyisen arvon sekä kotihakemiston suoritettavien tiedostojen hakupoluksi.

Jotta nämä muutokset voidaan ottaa käyttöön nykyisessä shell-ympäristössä, sinun on suoritettava lähdekoodi.bashrc-komento

Yleisimmät shell-ympäristömuuttujat ovat:

  • BASH - Sisältää koko polun bash-komentoon (yleensä /bin/bash).
  • BASH_VERSION - bash-versionumero.
  • DIRSTACK - Joukko, joka sisältää nykyisen hakemistopinon arvon.
  • TOIMITTAJA- tekstieditori oletuksena.
  • EUID – Nykyisen käyttäjän numeerinen voimassa oleva tunnus.
  • FUNCNAME - nimi nykyinen toiminto käsikirjoituksessa.
  • RYHMÄT - Matriisi, joka sisältää luettelon ryhmistä, joihin nykyinen käyttäjä kuuluu.
  • HISTFILE - komentohistoriatiedoston sijainti. Tyypillisesti komentohistoria tallennetaan ~/.bash_history-tiedostoon.
  • HISTFILESIZE - Historiatiedostoon tallennettavien komentorivien määrä. Kun tämä määrä on saavutettu, uudet komentorivit kirjataan historiaan poistamalla aikaisimmat komentorivit. Viimeksi käytettyjen komentojen oletusluettelo on 1000 riviä.
  • KOTI- kotihakemisto käyttäjä.
  • HOSTNAME - Tämän tietokoneen (isäntä) nimi.
  • HOSTTYPE - Tietokonetyyppi.
  • LANG – Nykyinen oletuskieli.
  • LC_CTYPE on sisäinen muuttuja, joka määrittää merkkikoodauksen.
  • MAIL - Postilaatikon tiedostojen sijainnit Sähköposti käyttäjä. Tyypillisesti tämä on /var/spool/mail-hakemistossa oleva tiedosto, jonka nimi on sama kuin rekisteröintinimi käyttäjä.
  • MAILCHECK - Postin tarkistusten välinen aika minuuteissa.
  • OLDPWD - Hakemisto, joka oli voimassa ennen hakemiston viimeistä muutosta.
  • OSTYPE - Nykyinen käyttöjärjestelmä.
  • PATH - Kaksoispisteillä eroteltu luettelo hakemistoista suoritettavien tiedostojen etsimiseksi. Järjestys, jossa hakemistojen nimet tutkitaan, on kriittinen. Kun komentoja suoritetaan, tässä muuttujassa luetellut hakemistot tarkistetaan peräkkäin vasemmalta oikealle. Siten /bin- ja /usr/bin-hakemistoissa olevan komennon foo suorittaminen suorittaa /bin-hakemistossa olevan komennon. Suorittaaksesi /usr/bin-hakemistossa olevan foo-komennon vastaavassa tilanteessa, sinun on joko määritettävä koko polku tähän komennossa tai muutettava hakemistojen nimien järjestystä PATH-ympäristömuuttujassa. Nykyinen hakuhakemisto on määritettävä eksplisiittisesti ("."), komentotulkki ei oletuksena etsi nykyisestä hakemistosta. Suoritettavien ohjelmien etsiminen nykyisestä hakemistosta on mahdollisesti vaarallista vaarallisen ohjelman tahattoman suorittamisen vuoksi, joten PATH-muuttuja alustetaan yleensä ilman "." Jos haluat lisätä polun omiin shell-komentoihin tai skripteihin PATH-muuttujaasi, sijoita ne kotihakemistosi /bin-alihakemistoon, joka lisätään automaattisesti PATH-muuttujaan. Kaikki suoritettavat komennot eivät sijaitse PATH-ympäristömuuttujan hakemistoissa. Jotkut komennot on rakennettu suoraan kuoreen. Muut komennot voidaan määritellä uudelleen aliaksilla, jolloin voit korvata komennot lähes minkä tahansa monimutkaisilla parametreilla (syntaksin suhteen) yhdellä yksinkertaisella nimellä. Lisäksi on mahdollista luoda toimintoja, jotka tallentavat koko sarjan komentoja.
  • PPID- Tunnusnumero prosessi, joka vastaa komentoa, joka käynnisti nykyisen komentotulkin (esimerkiksi prosessi, joka synnytti komentotulkin).
  • PS1, PS2, PS3, PS4 - Muuttujat, jotka määrittävät kuorikehotteen ulkoasun.

    Muuttujat PS1 ja PS2 asettavat ensisijaiset ja toissijaiset komentotulkkikehotteet.

    Toissijainen kehote (PS2) tulee näkyviin, jos painat Enter-näppäintä suorittamatta komentoa syntaktisesti loppuun.

    Tämä muuttuja sisältää pienen kehotteen, joka ilmenee monirivisen tekstin muokkauksen tai epätäydellisen komennon syöttämisen yhteydessä. Oletuksena se on merkitty >.

    PS3. Tämä muuttuja sisältää sisällä olevan kehotteen valitse lausunto, jota käytetään interaktiivisten konsolin valikkojen järjestämiseen. Oletusarvoisesti valintalausekkeen PS3-kehote on #?.

    PS4. Tätä muuttujaa käytetään ensisijaisesti shell-skriptien virheenkorjauksessa, ja se sisältää oletusarvoisesti merkkijonoarvon "++".

    Esimerkiksi get DNS info -komennon suorittaminen:

    #nslookup>

  • PWD - Käyttäjän nykyinen työhakemisto. Tämä arvo muuttuu aina, kun vaihdat hakemistoa cd-komennolla.
  • SECONDS - skriptin ajoaika (sekunteina).
  • SHELL - Nykyinen komentojen tulkki.
  • SHELLOPTS - Luettelo mukana olevista tulkkivaihtoehdoista.
  • SHLVL - komentotulkin uusien kopioiden käynnistysten määrä.
  • UID - Nykyisen käyttäjän numeerinen tunnus.
  • KÄYTTÄJÄ - Nykyisen käyttäjän nimi.
  • $# - Skriptille välitettyjen parametrien kokonaismäärä.
  • $* - Kaikki argumentit välitetään nyt komentosarjalle (näytetään merkkijonona).
  • $@ - Sama kuin edellinen, mutta parametrit näytetään sarakkeessa.
  • $! - Viimeisimmän taustalla käynnissä olevan prosessin PID.
  • $$ - itse skriptin PID.

Jos haluat tarkastella kaikkien nykyisen istunnon muuttujien, sekä määrittelemiesi muuttujien että ympäristömuuttujien arvoja, anna set-komento ilman valintoja tai env printenv .

Voit poistaa muuttujan unset-komennolla.

2.4. Korvaukset ja komentojen välisen vuorovaikutuksen organisointi

Ympäristömuuttujan korvaaminen nykyinen istunto järjestelmän kanssa voidaan tehdä käyttämällä dollarimerkin ($) metamerkkiä. Tämän seurauksena kuori korvaa muuttujan nimen automaattisesti arvollaan. Esimerkiksi,

Aritmeettisen lausekkeen laskennan tuloksen korvaaminen

Aritmeettisen lausekkeen arvioinnin tuloksen korvaamiseen on kaksi syntaktista muotoa: $[lauseke] ja $((lauseke)). Esimerkiksi,

echo "Olen $ vuotta vanha."

Komennon korvaaminen

Komentokorvaus antaa sinun käyttää yhden komennon tulostetta toisen komennon sisältävällä komentorivillä. Voit käyttää kahta vaihtoehtoinen muoto korvaukset: $(komento) tai `komento` (yksittäiset takalainausmerkit). Esimerkiksi,

Tilde-merkin laajentaminen

Aaltoviivamerkin (~) avulla voit syöttää nopeasti hakemistojen nimiä.

~ Käyttäjän kotihakemiston nimi ~/alihakemisto Yhden alihakemiston nimi käyttäjän kotihakemistossa ~+ Nykyisen hakemiston nimi ~- Edellisen hakemiston nimi

Ilmoitus aaltosulkeet

Aaltosulkeiden avulla voit syöttää yhden komennon useiden samantyyppisten komentojen sijaan. Suluissa tulee olla luettelo, jonka osat on erotettava pilkuilla. Tulkki lukee elementit yksitellen ja muodostaa jokaisesta niistä erillisen komennon, jonka se sitten suorittaa. Esimerkiksi komento

mkdir kulut/(tam, helmi, maaliskuu) vastaa mkdir kulut/tamm mkdir kulut/helmikuu mkdir kulut/maal

Kanavat

Putken metamerkki (|) ilmaisee tarpeen organisoida komentojen välinen vuorovaikutus käyttämällä toisen komennon suorituksen (tulosta) tulosta komennon syötteenä (syöte). Toisin sanoen kanavan (pipeline) avulla ensimmäisen komennon tulokset voidaan välittää syötteenä toiselle komennolle. Esimerkiksi,

cat /etc/passwd | lajitella | pää-3

Komentosarjat ja ryhmät

Sekvenssien ja komentoryhmien avulla voit syöttää useita komentoja yhdelle riville.

komento1;komento2 Suorita ensin komento 1, sitten komento 2 (komento1;komento2) Suorita erillinen kopio tulkki, jossa komennot 1 ja 2 suoritetaan peräkkäin ( komento1;komento2 ) Suorita komennot 1 ja 2 peräkkäin nykyisessä tulkin komento1 && komento2 Suorita komento 2 vain jos komento 1 komento1 || komento2 Suorita komento 2 vain, jos komento 1 epäonnistuu

Minkä tahansa komennon suorittamisen tulos (eli vastaavan prosessin lopettamisen tulos) on poistumiskoodi. Onnistuneen suorittamisen koodi on 0, epäonnistuneen koodi on 1. Onko suorituskoodin arvo määritetty ennalta määritetylle muuttujalle? (kysymysmerkki). Esimerkiksi echo $?

Suorita komentoja uudelleen

Shellissä on mahdollisuus kutsua aikaisempia komentoja ja muokata niitä. Historia (historia) shell-komennot on luettelo aiemmin käytetyistä komennoista. Tätä luetteloa voi tarkastella historiakomennolla.

Kun olet kirjoittanut komentorivin, komentotulkki sijoittaa sen komentohistoriaan. Aiemmin käytettyjen komentojen luettelo tallennetaan tiedostoon, jonka avulla voit milloin tahansa kutsua siitä mitä tahansa komentoriviä uudelleen suorittamista varten. Kun komentoriviä on kutsuttu uudelleen, sitä voidaan muokata. Komentohistoria tallennetaan .bash_history-tiedostoon, joka sijaitsee käyttäjän kotihakemistossa. Oletusarvoisesti komentotulkki pystyy "muistamaan" jopa 1000 komentoriviä.

Jos haluat nähdä luettelon aiemmin käytetyistä komennoista, suorita historiakomento. Sitä voidaan käyttää joko ilman parametreja tai parametrin kanssa, joka määrittää näytettävien komentojen määrän. Jokaisella komentorivillä on oma numeronsa komentohistoriassa.

Historian laajennussyntaksi: !n Suorita komento annetulla numerolla!! Suorita edellinen komento!merkkijono Suorita viimeisin komento alkaen annetusta merkkijonosta!?merkkijono? Suorita viimeisin komento, joka sisältää annetun merkkijonon

Sen sijaan, että komentohistoriassa oleva komentorivi suoritettaisiin suoraan, sitä voidaan kutsua myöhempää muokkausta varten. Käytä kohdistinnäppäimiä nuoli ylös ja alanuoli varten läpikäynti komentohistoria ja valitse tarvittava komentorivi.

3. Sisäänrakennetut bash-komennot

Luettelo sisäänrakennetuista bash-komentokomennoista löytyy help-komennosta tai man-sivulta SHELL BUILTIN COMMANDS -osiosta.

Tässä on joitain hyödyllisiä sisäänrakennettuja komentoja:

  • echo [argumentit] - Tuo argumentit näytölle.
  • enable - Saa komentotulkin suorittamaan samannimisen suoritettavan tiedoston sisäänrakennetun komennon sijaan. Hyödyllinen, jos sinulla on oma skripti nimeltä echo.
  • eval [argumentit] - Komennon muodostaminen lennossa määritetyistä argumenteista ja sen lähettäminen suoritettaviksi.
  • anna - Ilmaisun arviointi.
  • - Lue ja suorita tiedoston sisältämät komennot. Käytetään käyttäjän muuttujien määrittämiseen. ja toiminnot.
  • basename - Paikallisen nimen korostaminen.
  • expr - Lausekkeen arviointi.
  • read - Syötä muuttujan arvo.
  • shift - Vaihtoluettelo parametreista.
  • testi - kunnon tarkistaminen.
Muut sisäänrakennetut komennot toimivat ohjeina bash-komentokielelle.

Useimmissa Linux-käyttöjärjestelmissä bash on oletuskomentorivin tulkki. Määritä nykyinen tulkki antamalla seuraava komento:

$ echo $SHELL
/bin/bash

Tämä esimerkki käyttääkomentorivin tulkki lyödä. On monia muita komentotulkkeja. Aktivoidaksesi toisen tulkin, voit kirjoittaa sen nimen komentoriville (ksh, tcsh, csh, sh, bash jne.).

Useimmat täysin varustetut Linux-käyttöjärjestelmät tarjoavat kaikki tässä kuvatut komentotulkit. Mutta pienessä käyttöjärjestelmät yksi tai kaksi tulkkia voidaan tarjota.

Tarkastetaan kiinnostuneen henkilön saatavuustulkkikomentorivi

eniten yksinkertaisella tavalla tarkistaaksesi kiinnostavan komentotulkin saatavuuden kirjoittamalla sen nimi komentoriville. Jos tulkki on alkanut, se on käytettävissä.

Vaihtoehtoisten kuorien valitsemiseen on useita syitä.

  • Tapa tehdä työtä UNIX-järjestelmät System V (joista monet käyttävät oletuksena ksh-tulkkia) tai Sun Microsystemsin ja muiden Berkeley UNIX -pohjaisten järjestelmien järjestelmät (jotka käyttävät usein csh:ta). Tässä tapauksessa näiden tulkkien käyttökomentorivitulee olemaan kätevämpää.
  • Tarve suorittaa komentosarjat, jotka on luotu tietylle kuorelle.
  • Vaihtoehtoisia kuoriominaisuuksia voidaan suosia. Esimerkiksi yksi ryhmän jäsenistä Linuxin käyttäjiä käyttää mieluummin ksh:ta, koska hän ei pidä tavasta, jolla aliaksia luodaan bashissa.

Vaikka useimmat käyttäjät haluavat työskennellä yhdessä kuoressa, saadut taidot auttavat heitä oppimaan työskentelemään muissa.tulkit komentorivi katsomalla toisinaan käyttöopasta (esimerkiksi käyttämällä manbash-komentoa). Useimmat käyttävät bashia, koska ei ole mitään syytä vaihtaa toiseen tulkkiin.

Käyttämällä bashia ja ch

Nimi bash on lyhenne sanoista Bourne Again SHell. Tämä lyhenne osoittaa, että bash perii Bourneshell-tulkin (sh-komennon), jonka on luonut Steve Bourne AT&TBell Labsista. Brian Fox Free Software Foundationista loi bashin osana GNU-projektia. Jatkokehitys siirtyi Chet Rameyn käsiin Case Western Reserve -yliopistossa.

Bash-tulkki sisältää ominaisuuksia, jotka kehitettiin sh- ja ksh-tulkeille UNIXin varhaisten versioiden aikana, sekä joukon csh-tulkin ominaisuuksia.

Voit odottaa, että useimmissa Linux-järjestelmissä, lukuun ottamatta erikoistuneita (esimerkiksi upotettuja tai ulkoiselta levyltä käynnistettyjä), bash-tulkkia käytetään oletuksena. Erikoisjärjestelmät voivat vaatia pienemmän kuoren, mikä merkitsee rajoituksia.

Suurin osa esimerkeistä tässäartiklasuunniteltu bashiin.

Bash-tulkki voidaan ajaa sisään erilaisia ​​tiloja yhteensopivuus, jäljittelee muiden kuorien käyttäytymistä. Se voi jäljitellä Bourne-kuoren (sh) tai POSK-yhteensopivan komentotulkin (bash -posix).

Tämän seurauksena bash-tulkki pystyy todennäköisemmin lukemaan konfiguraatiotiedostoja ja suorittamaan erityisesti muille komentotulkeille kirjoitettuja komentosarjoja.

Kaikki toimitetut Linux-käyttöjärjestelmät käyttävät oletuksena bash-tulkkia, lukuun ottamatta käyttöjärjestelmiä, jotka on ladattu irrotettava tietoväline, joka on oletuksena tuhka tulkki.

tcsh:n (ja aikaisemman csh-tulkin) käyttäminen

Tcsh-komentotulkki on Cshell (csh) -tulkin avoimen lähdekoodin toteutus. Bill Joy loi csh-tulkin, ja sitä käytetään oletuksena melkein kaikissa Berkeley UNIX -järjestelmissä (sellaisia ​​järjestelmiä jakeli Sun Microsystems).

Monet csh:n ominaisuuksista, kuten komentorivimuokkaus ja komentohistorian hallintamenetelmät, on toteutettu tcsh-kuoressa ja muissa komentotulkeissa. Aivan kuten sh-komento käynnistää bash-tulkin sh-yhteensopivuustilassa, csh-komento käynnistää tcsh-tulkin csh-yhteensopivuustilassa.

Ash tulkin käyttö

Ash-tulkki on kevyt versio Berkeley UNIX sh -tulkista. Se ei sisällä monia perustoiminnot eikä tarjoa ominaisuuksia, kuten komentohistoriaa.

Tuhkatulkki soveltuu hyvin käytettäväksi sulautetuissa järjestelmissä, joissa on rajoitettu määrä järjestelmäresurssit. FedoraCore 4:ssä ash-tulkki on suuruusluokkaa pienempi kuin bash-tulkki.

Käyttämällä zsh

Zsh-tulkki on toinen sh-tulkin klooni. Se on POSIX-standardin mukainen (kuten bash), mutta siinä on muita ominaisuuksia, kuten oikeinkirjoituksen tarkistus ja erilainen lähestymistapa komentorivimuokkaukseen. Zsh-tulkkia käytettiin oletuksena varhaisissa MacOS X -käyttöjärjestelmissä, mutta bash on oletustulkki nykyaikaisissa järjestelmissä.

Tämä osio kattaa seuraavat aiheet:

  • Vuorovaikutus kuorien ja komentojen kanssa
  • Komennot ja komentosekvenssit
  • Ympäristömuuttujien määrittely, käyttö ja vienti
  • Komentohistoria ja muokkaustyökalut
  • Suoritetaan komentoja, jotka ovat PATH-ympäristömuuttujassa ja sen ulkopuolella
  • Komentojen korvaaminen
  • Komentojen käyttö rekursiivisesti hakemistopuuhun
  • Man-sivujen (ohje) käyttäminen tiedon etsimiseen komennoista

Tässä osiossa kuvataan joitain bash-kuoren perusominaisuuksia. Erityisesti korostetaan sertifioinnin edellyttämiä kykyjä. Kuori on rikas ympäristö, ja olemme tervetulleita tutkimaan sitä edelleen yksin. Komennolla UNIX-tulkit ja Linux, monia kirjoja on kirjoitettu, ja erityisesti bash.

bash-komentojen tulkki

Tulkki lyödä yksi useista Linuxissa saatavilla olevista tulkeista. Sitä kutsutaan myös B meidän- a saada sh no, luojan Stephen Bournen kunniaksi varhainen versio tulkki ( /bin/sh).Bash on olennaisesti yhteensopiva sh:n kanssa, mutta tuo mukanaan monia parannuksia sekä toiminnallisuuden että ohjelmointiominaisuuksien suhteen. Se sisältää Korn (ksh)- ja C (csh) -tulkkien ominaisuuksia, ja sitä kehitetään POSIX-yhteensopivaksi tulkiksi.

Muista se ennen kuin alamme oppia bashia tulkki on ohjelma, joka hyväksyy ja suorittaa komentoja. Se tukee myös ohjelmointiominaisuuksia, joiden avulla voit luoda monimutkaisia ​​rakenteita tavallisista komennoista. Nämä monimutkaiset rakenteet tai skenaarioita voidaan tallentaa tiedostoihin, jotka itsessään ovat uusia komentoja. Lisäksi monet komennot tyypillisellä Linux-järjestelmät Niitä ei ole toteutettu shell-skripteinä.

Tulkit sisältävät sisäänrakennettu komennot, kuten cd, break ja exec. Muut komennot ovat ulkoinen.

Tulkit käyttävät myös kolmea standardia virtaus I/O:

  • stdin Tämä tavallinen stream syöttö A, joka antaa syötteen komentoja varten.
  • stdout Tämä vakiolähtövirta, joka näyttää komennon suorituksen tulokset pääteikkunassa.
  • stderr Tämä normaali virhevirta, joka näyttää virheet, jotka tapahtuvat komentoja suoritettaessa.

Syöttövirrat syöttävät ohjelmia, jotka yleensä liittyvät päätteen näppäimistöön. Tulostusvirrat tulostavat tekstimerkkejä, yleensä päätteeseen. Pääte oli alun perin ASCII-kirjoituskone tai videopääte, mutta nykyään se on usein ikkuna graafisella työpöydällä. Tämän osion loppuosassa keskitytään korkean tason uudelleenohjaukseen.

Jos käytät Linux-järjestelmää ilman graafista käyttöliittymää tai jos olet avannut pääteikkunan grafiikkatila, näet komentokehotteen, kuten Listing 1.

Listaus 1. Esimerkkejä tyypillisistä käyttäjäkehotteista

$
[sähköposti suojattu]:~>
$

Jos kirjaudut sisään pääkäyttäjänä (tai pääkäyttäjänä), kehote saattaa näyttää listalta 2.

Listaus 2. Esimerkkikehotteet kohteelle pääkäyttäjä tai superkäyttäjä

#
lyyralintu:~ #
#

Pääkäyttäjällä on huomattava valta, joten käytä sitä varoen. Jos sinulla on pääkäyttäjän oikeudet, useimmat kehotteet alkavat puntamerkillä (#). Tavallinen käyttäjäkehote alkaa yleensä eri merkillä, yleensä dollarimerkillä ($). Kehottesi voi poiketa tämän oppaan esimerkeissä kirjoitetusta. Kehote voi sisältää käyttäjänimesi, koneen nimesi, nykyinen hakemisto, päivämäärä tai kellonaika, jolloin kehote tulostettiin ja niin edelleen.

Jotkut tämän oppaan käytännöt

LPI-kokeiden 101 ja 102 developerWorks-opetusohjelmat sisältävät esimerkkikoodia oikeista Linux-järjestelmistä käyttäen kyseisten järjestelmien oletuskehotteita. Meidän tapauksessamme pääkäyttäjän kehote alkaa #:llä, joten voit erottaa sen kehotteista tavallisia käyttäjiä, jotka alkavat $-merkillä. Tämä käytäntö on sama kuin aihetta käsittelevissä kirjoissa käytetty. Katso shell-kehotetta huolellisesti jokaisessa esimerkissä.

Komennot ja sekvenssit

Olet kuoressa, katsotaan mitä voit tehdä nyt. Shellin päätehtävä on, että se suorittaa komentojasi, joiden kautta olet vuorovaikutuksessa Linux-järjestelmän kanssa. Linux- (ja UNIX)-järjestelmissä komennot koostuvat komennon nimestä, valinnoista ja argumenteista. Joissakin komennoissa ei ole valitsimia tai parametreja, toisissa on valintoja, mutta ei parametreja, kun taas toisissa ei ole valintoja tai parametreja.

Jos merkkijono sisältää #-merkin, kaikki sen seuraavat merkit ohitetaan. Siten #-symboli voi tarkoittaa sekä kommentin alkua että käyttäjäkehotetta. Lisätulkinnat ovat ilmeisiä asiayhteydestä.

Kaiku komento

Kaikukomento tulostaa listan argumenteistaan ​​päätteelle, kuten Listauksessa 3 näkyy.

Listaus 3. Esimerkkejä kaikukomennosta

$ echo Word
Sana
$ kaiku JA lause
Ja tarjota
$ echo Mihin välilyönnit katosivat?
Mihin tilat katosivat?
$ echo "Tässä ovat tilat." # ja kommentoi
Ja tässä ovat aukot.

Listauksen 3 kolmannessa esimerkissä kaikista komennon tulosteen sanojen välisistä välilyönneistä tuli samankokoisia kuin yksi välilyönti. Tämän välttämiseksi sinun on lisättävä merkkijono lainausmerkkeihin käyttämällä joko lainausmerkkejä (“) tai lainausmerkkejä ('). Bash käyttää erottimia, kuten välilyöntejä, sarkaimia ja symboleja uusi rivi jakaaksesi syöttömerkkijonon tokeneiksi, jotka sitten välitetään komentoosi. Merkkijonon sulkeminen lainausmerkkeihin estää sen jakamisen ja siten se on yksi merkki. Yllä olevassa esimerkissä jokainen komennon nimen jälkeen oleva merkki on parametri, joten meillä on vastaavasti 1, 2, 4 ja 1 parametri.

Kaiku-komennolla on useita vaihtoehtoja. Yleensä echo lisää rivinvaihdon tulostuksensa jälkeen. Käytä -n-vaihtoehtoa, jotta se ei lisää rivinvaihtomerkkiä. Käytä valitsinta -e, jos haluat komennon tulkitsemaan estosekvenssit.

Pakojaksot ja rivinvaihdot

Käytettäessä kenoviivaa bashissa on pieni ongelma. Kun kenoviiva-merkkiä (\) ei lainata, se toimii itse bash-merkkijonon pakotussekvenssinä säilyttäen seuraavan merkin merkityksen. Tämä on tarpeen erityisille metahahmoille, joita tarkastellaan hieman myöhemmin. Tästä säännöstä on yksi poikkeus: kenoviiva jota seuraa rivinvaihto saa bashin nielemään molemmat merkit ja käsittelemään sekvenssiä rivin jatkopyynnönä. Tämä voi olla hyödyllistä hajotettaessa pitkiä rivejä, erityisesti skriptien kohdalla.

Jotta echo-komento tai jokin monista muista samankaltaisia ​​pakotusmerkkejä käyttävistä komennoista käsittelee yllä kuvatut sekvenssit oikein, sinun on suljettava estosekvenssit lainausmerkkeihin tai suljettava ne lainausmerkkijonoon tai käytettävä jotain muuta. kenoviiva symbolien tulkinnan vahvistamiseksi. Lista 4 sisältää esimerkkejä \:n erilaisista käyttötavoista.

Listaus 4. Esimerkkejä kaiun käytöstä

$ echo -n Ei rivinvaihtoa
Ei rivinvaihtoa $ echo -e "Ei rivinvaihtoa\c"
Ei rivinvaihtoa $ echo "Rivi, jota napsautettiin
> Anna avain
Linja, jota painettiin
Enter-näppäin
$ echo -e "merkkijono, jossa on pakomerkki\nuusi rivi"
Merkkijono, jossa on pakomerkki
uusi rivi
$ echo "Merkkijono \nuusirivi mutta ilman -e-vaihtoehtoa"
Merkkijono ohitettiin rivinvaihdolla\nmutta ilman -e-vaihtoehtoa
$ echo -e Double \\n\\ t kenoviiva metamerkkejä
Metahahmot tuplauksella
kenoviiva
$ echo kenoviiva \
> ja sen jälkeen Enter \
> toimii pyynnönä jatkaa linjaa.
Kenoviiva, jota seuraa Enter, toimii kehotteena jatkaa riviä.

Huomaa, että bash näyttää erityisen kehotteen (>), kun kirjoitat epätäydellisiä lainausmerkkejä sisältävän merkkijonon. Syöttömerkkijono rivittyy toiselle riville ja sisältää rivinvaihdon.

Bash-metamerkit ja ohjauslauseet

Bash sisältää useita merkkejä, jotka, kun niitä ei ole lainausmerkeissä, auttavat myös jakamaan syöttömerkkijonon sanoiksi. Välilyönnin lisäksi tällaisia ​​merkkejä ovat '|', '&', ';', '(', ')', '<’, и ‘>'. Keskustelemme joistakin näistä symboleista yksityiskohtaisemmin tämän oppaan muissa osissa. Huomioi toistaiseksi, että jos haluat sisällyttää metamerkin osaksi tekstiäsi, se tulee laittaa lainausmerkkeihin tai sitä edeltää kenoviiva (\), kuten listauksessa 4.

Uusi rivi ja vastaavat metamerkit tai metamerkkiparit toimivat myös ohjauslauseina. Tällaisia ​​merkkejä ovat '||', '&&', '&', ';', ';;', '| '(', ja ')'. Jotkin näistä ohjauskäskyistä antavat sinun luoda komentosarjoja tai -luetteloita.

Yksinkertaisin komentosarja koostuu kahdesta komennosta, jotka on erotettu puolipisteellä (;). Jokainen seuraava komento suoritetaan edellisen jälkeen. Kaikissa ohjelmointiympäristöissä komennot palauttavat koodin, joka ilmaisee ohjelman normaalin tai epäonnistuneen valmistumisen; Linux-komennot palauttavat yleensä 0:n onnistuessa ja nollasta poikkeavan arvon epäonnistuessa. Voit käsitellä ehdollisesti käyttämällä ohjausoperaattoreita && ja ||. Jos erotat nämä kaksi komentoa &&-ohjausoperaattorilla, toinen komento suoritetaan vain, jos ensimmäinen palauttaa nollan. Jos erotit komennot ||:lla, toinen komento suoritetaan vain, jos ensimmäinen palautti nollasta poikkeavan arvon. Listaus 5 sisältää joitain komentosarjoja, joissa käytetään echo-komentoa. Nämä esimerkit eivät ole kovin mielenkiintoisia, koska echo palauttaa 0, mutta katsomme lisää esimerkkejä, kun opimme lisää komentoja.

Listaus 5. Komentosarjat

$ kaikulinja 1; kaikulinja 2; kaikulinja 3
rivi 1
linja 2
rivi 3
$ echo line 1&&echo line 2&&echo line 3
rivi 1
linja 2
rivi 3
$ kaikulinja 1||kaikulinja 2; kaikulinja 3
rivi 1
rivi 3

Voit poistua komentotulkista exit-komennolla. Lisäksi voit määrittää parametriksi poistumiskoodin. Jos työskentelet komentotulkin kanssa pääteikkunassa graafisessa tilassa, se yksinkertaisesti sulkeutuu tässä tapauksessa. Vastaavasti, jos olet yhteydessä etäjärjestelmään käyttämällä ssh- tai telnet-yhteyttä (esimerkiksi), yhteys katkeaa. Bash-tulkkissa voit myös painaa Ctrl-näppäin ja d poistuaksesi.

Katsotaanpa toista valvontalauseketta. Jos kirjoitat komennon tai komentoluettelon sulkeisiin, komento tai komentosarja suoritetaan sen omassa kopiossa komentotulkista, joten exit-komento poistuu komentotulkin kopiosta, ei sillä hetkellä käyttämästäsi komentotulkista. Listaus 6 sisältää yksinkertaisia ​​esimerkkejä käyttämällä && ja ||.

Listaus 6. Komentotulkit ja komentosarjat

$ (echo Tulkin kopiossa; exit 0) && echo OK || echo Huono uloskäynti
Tulkin kopiossa
OK
$ (echo Tulkin kopiossa; exit 4) && echo OK || echo Huono uloskäynti
Tulkin kopiossa
huono lähtö

Pysy kuulolla ja opi muista tämän oppaan komennoista.

Ympäristömuuttujat

Kun työskentelet bashissa, sinua ympäröi joukko parametreja, jotka muodostavat ympäristösi, kuten kehotteen muoto, kotihakemistosi nimi, työhakemistosi, tulkkisi nimi, avoinna olevat tiedostot, määrittämäsi funktiot ja niin edelleen. Ympäristösi sisältää monia muuttujia, jotka sekä sinä että bash voit asettaa. Bashissa voit myös luoda komentotulkkimuuttujia, jotka voit viedä ympäristöösi käytettäväksi muissa tulkissa käynnissä olevissa prosesseissa tai muissa tulkeissa, jotka voit aloittaa nykyisestä tulkista.

Sekä ympäristömuuttujilla että kuorimuuttujilla on nimi. Voit viitata muuttujan arvoon lisäämällä muuttujan nimen eteen $-merkki. Jotkut yleisimmistä bash-ympäristömuuttujista on lueteltu taulukossa 4.

  • KÄYTTÄJÄ Kirjautuneen käyttäjän nimi
  • UID Kirjautuneen käyttäjän digitaalinen tunnus
  • KOTI Käyttäjän kotihakemisto
  • PWD Nykyinen työhakemisto
  • KUORI Kuoren nimi
  • $ Bash- (tai muun) prosessin prosessitunnus (tai PID).
  • PPID Poikineen prosessin tunnus Tämä prosessi(eli pääprosessin tunnus)
  • ? Viimeisen komennon poistumiskoodi

Lista 7 näyttää joitain bash-muuttujia.

Listaus 7. Ympäristömuuttujat ja kuori

$ echo $USER $UID
ian 500
$ echo $SHELL $HOME $PWD
/bin/bash /home/ian /home/ian
$(poistu 0);echo $?;(poistu 4);kaiku $?
0
4
$ echo $$ $PPID
30576 30575

Voit luoda tai asettaa kuorimuuttujan kirjoittamalla yhtäläisyysmerkin (=) välittömästi muuttujan nimen perään. Muuttujat ovat kirjainkoolla, joten var1 ja VAR1 ovat kaksi eri muuttujaa. Sopimuksen mukaan muuttujat, erityisesti viedyt muuttujat, kirjoitetaan sisään iso kirjain, mutta tämä ei ole vaatimus. Muodollisesti $$ ja $? ovat komentotulkkivaihtoehtoja, eivät muuttujia. Voit viitata niihin, mutta et määrittää arvoa.

Kun luot komentotulkkimuuttujan, haluat usein viedä sen ympäristöön, jotta se on muiden tulkista käynnistämiesi prosessien käytettävissä. Viemäsi muuttujat eivät ole ylätulkkien käytettävissä. Export-komentoa käytetään muuttujan viemiseen. Mukavuuden vuoksi voit määrittää arvon ja viedä muuttujan yhdessä vaiheessa.

Havainnollistaaksesi tehtävää ja vientiä, luodaan toinen bash nykyisestä bash-tulkista ja ajetaan sitten Korn-tulkki luodusta bashista (ksh). Käytämme ps-komentoa näyttämään tietoja käynnissä olevista prosesseista. Opimme lisää ps-komennosta, kun tutkimme prosessin tilan käsitettä myöhemmin tässä oppaassa.

Älä käytä bashia?

Bash-tulkki on oletusarvo monissa Linux-jakeluissa. Jos et työskentele bashin kanssa, sinun kannattaa harkita sitä seuraavilla tavoilla harjoitella bashia.

  • Käytä komentoa
    chsh -s /bin/bash
    vaihtaaksesi oletustulkin. Muutokset astuvat voimaan, kun seuraavan kerran kirjaudut sisään.
  • Tiimi
    su-$USER -s /bin/bash
    luo toisen prosessin, joka on nykyisen tulkkisi lapsi. Uusi prosessi aloittaa kirjautumisprosessin bash-kuorella.
  • Luo bash shell -käyttäjä valmistautuaksesi LPI-kokeeseen.

Listaus 8. Ympäristömuuttujat ja kuori

$ ps -p $$ -o "pid ppid cmd"
PID PPID CMD
30576 30575 -bash
$bash

PID PPID CMD
16353 30576 bash
$var1=muuttuja1
$var2=muuttuja2
$ vienti VAR2
$ vienti VAR3=muuttuja3
$VAR2 $VAR3
var1 var2 var3
$ echo $VAR1 $VAR2 $VAR3 $SHELL
var1 var2 var3 /bin/bash
$ksh
$ ps -p $$ -o "pid ppid cmd"
PID PPID CMD
16448 16353 ksh
$ vienti VAR4=var4
$ echo $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
var2 var3 var4 /bin/bash
$poistuminen
$ $ kaiku $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
var1 var2 var3 /bin/bash
$ ps -p $$ -o "pid ppid cmd"
PID PPID CMD
16353 30576 bash
$poistuminen
$ ps -p $$ -o "pid ppid cmd"
PID PPID CMD
30576 30575 -bash
$ echo $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
/bin/bash

Huomautus:

  1. Tämän sekvenssin alussa bash-tulkin PID 30576 oli.
  2. Toisen bash-tulkin PID on 16353 ja sen pää-PID on 30576, eli alkuperäinen bash.
  3. Loimme muuttujat VAR1, VAR2 ja VAR3 toisessa bash-instanssissa, mutta vietimme vain muuttujat VAR2 ja VAR3.
  4. Kornin tulkissa olemme luoneet VAR4:n. Kaikukomento näyttää vain muuttujien VAR2, VAR3 ja VAR4 arvot ja vahvistaa, että VAR1:tä ei viety. Etkö ollut yllättynyt, kun SHELL-muuttujan arvo ei muuttunut, vaikka kehote muuttui? Et voi aina luottaa SHELLiin tulkin määrittämiseksi Työn alla, mutta ps-komento kertoo tarkalleen, mikä on mitä. Huomaa, että ps laittaa viivan (-) ensimmäisen bashin esiintymän eteen kertoakseen meille, mikä se on. alkuperäinen komentokulkki.
  5. Toisessa bash-instanssissa voimme tarkastella VAR1, VAR2 ja VAR3.
  6. Lopuksi, kun palaamme alkuperäiseen tulkkiin, siinä ei ole yhtään muuttujaa.

Aiemmin keskustelimme mahdollisuudesta käyttää lainausmerkkejä sekä yksi- että kaksoislainauksina. Niiden välillä on merkittävä ero. Tulkki suorittaa shell-muuttujien korvaamisen lainausmerkkien ($) välissä, mutta ei suorita korvausta, jos käytetään lainausmerkkejä ('). Edellisessä esimerkissä loimme uuden tulkkiinstanssin toisesta ja saimme uuden prosessitunnuksen. Vaihtoehtoa käyttämällä -c voit välittää komennon toiselle tulkille, joka suorittaa komennon ja palaa. Jos annat merkkijonon komentona yksittäisissä lainausmerkeissä, tulkin toinen esiintymä poistaa ne ja käsittelee merkkijonon. Käyttämällä kaksoislainausmerkit muuttujakorvaus tapahtuu sitä ennen kuinka merkkijono välitetään, joten tulokset voivat poiketa odotuksistasi. Tulkki ja komento synnyttävät prosessin, jolla on oma PID. Luettelo 9 havainnollistaa näitä käsitteitä. Alkuperäisen bash-tulkin PID on eri fontilla.

Listaus 9. Lainausmerkit ja kuorimuuttujat

$ echo "$SHELL" "$SHELL" "$$" "$$"
/bin/bash $SHELL 19244 $$
$ bash -c "echo Laajenna ylätason $$ $PPID"
Laajenna yläosassa 19244 19243
$ bash -c "echo Laajenna lapsessa $$ $PPID"
Laajenna lapsi 19297 19244

Tähän asti kaikki muuttujamme päättyivät välilyöntiin, joten oli selvää, mihin muuttujan nimi päättyi. Itse asiassa muuttujan nimi voi koostua vain kirjaimista, numeroista tai alaviivamerkistä. Tulkki tietää, että muuttujan nimi päättyy heti, kun toinen merkki kohdataan. Joskus on tarpeen käyttää muuttujia lausekkeissa, joissa niiden merkitys voi olla moniselitteinen. Tällaisissa tapauksissa voit erottaa muuttujan nimen aaltosulkeilla, kuten Listauksessa 10 näkyy.

Listaus 10. Aaltosulkeiden käyttö muuttujien nimillä

$ echo "-$HOME/abc-"
-/home/ian/abc-
$ echo "-$HOME_abc-"
--
$ echo "-$(HOME)_abc-"
-/home/ian_abc-

env-komento

env-komento ilman valintoja tai parametreja näyttää nykyiset ympäristömuuttujat. Voit käyttää sitä myös komennon suorittamiseen ennalta määritetyssä ympäristössä. Vaihtoehto -i (tai vain -) tyhjentää nykyisen ympäristön ennen komennon suorittamista, kun taas -u-vaihtoehto tyhjentää ympäristömuuttujat, joita et halua välittää.

Luettelo 11 sisältää env-komennon osittaisen tulosteen ilman valintoja, ja sen jälkeen kolme esimerkkiä, jotka suorittavat erilaisia ​​tulkkeja ilman pääympäristöä. Tarkista ne huolellisesti ennen kuin keskustelemme niistä.

Listaus 11. env-komento

$env
HOSTNAME=echidna
TERM=xterm
SHELL=/bin/bash
HISTSIZE = 1000
SSH_CLIENT=9.27.89.137 4339 22
SSH_TTY=/dev/pts/2
KÄYTTÄJÄ=ian
...
_=/bin/env
OLDPWD=/usr/src
$ env -i bash -c "echo $SHELL; env"
/bin/bash
PWD=/home/ian
SHLVL=1
_=/bin/env
$ env -i ksh -c "echo $SHELL; env"
_=/bin/env
PATH=/bin:/usr/bin
$ env -i tcsh -c "echo $SHELL; env"
SHELL: Määrittelemätön muuttuja.

Huomaa, että bash asetti SHELL-muuttujan, mutta ei vienyt sitä ympäristöön, vaikka bash loi kolme muuta muuttujaa ympäristöön. Ksh-esimerkissä meillä on kaksi ympäristömuuttujaa, mutta yritys tulostaa SHELL-muuttujan arvo näytölle johtaa tyhjään merkkijonoon. Lopuksi tcsh ei luonut ympäristömuuttujia ja antoi virheilmoituksen, kun yritimme saada SHELL-muuttujan arvon.

Muuttujien asetus ja nollaus

Lista 11 näyttää kuinka tulkit käyttäytyvät käsitellessään muuttujia ja ympäristöjä. Vaikka tämä opas keskittyy bashiin, sinun tulee olla tietoinen siitä, että kaikki tulkit eivät toimi samalla tavalla. Lisäksi tulkit käyttäytyvät eri tavalla sen mukaan, ovatko he alkuperäisiä kuoria vai eivät. Toistaiseksi sanomme vain, että alkuperäinen kuori on komentotulkki, jonka saat kirjautuessasi sisään; Voit halutessasi käynnistää muita kuoria, jotta ne toimivat oletusarvojen tavoin. Yllä olevan esimerkin kolme tulkkia, jotka aloitettiin komennolla env -i, eivät ole alkuperäisiä tulkkeja. Yritä ohittaa vaihtoehto -l nähdäksesi eron, kun suoritat alkuperäistä komentotulkkia.

Katsotaanpa yritystämme näyttää SHELL-muuttujan arvo näissä kuorissa:

  • Kun bash käynnistyi, se asetti SHELL-muuttujan, mutta ei vienyt sitä automaattisesti ympäristöön.
  • Kun ksh käynnistyi, se ei asettanut SHELL-muuttujaa. Viittaus määrittelemättömään ympäristömuuttujaan vastaa kuitenkin tyhjään arvoon viittaamista.
  • Kun tcsh käynnistyi, se ei asettanut SHELL-muuttujan arvoa. Tässä tapauksessa oletuskäyttäytyminen eroaa ksh:sta (ja bashista) ja johti virheeseen, kun yritimme käyttää muuttujaa.

Unset-komennolla voit poistaa muuttujan asetukset ja poistaa sen komentotulkkimuuttujien luettelosta. Jos muuttuja vietiin ympäristöön, se poistetaan myös ympäristöstä. Voit käyttää set-komentoa hallitsemaan bashin (tai muiden tulkkien) toimintaa. Set on tulkin sisäänrakennettu komento, joten valinnat ovat tulkkikohtaisia. Bashissa optio -u käskee bashia olemaan antamatta virhettä viitattaessa määrittelemättömiin muuttujiin, vaan käsittelemään niitä tyhjinä arvoina. Voit lisätä useita vaihtoehtoja asetettaviksi -painikkeella ja poistaa ne käytöstä +. Voit näyttää nykyisen asetusluettelon echo $- -painikkeella.

Listaus 12. Poista ja aseta

$kaiku $-
häntäBH
$ echo $VAR1
$ set -u;echo $-
himuBH
$ echo $VAR1
bash: VAR1: sitomaton muuttuja
$ var1=v1
$VAR1=v1;kaiku $VAR1
v1
$unset VAR1;echo $VAR1
bash: VAR1: sitomaton muuttuja
$ set +u;echo $VAR1;echo $-
häntäBH

Voit käyttää set-komentoa ilman valintoja, mikä listaa kaikki shell-muuttujasi ja niiden arvot (jos sellaisia ​​on). On myös toinen komento, deklar, jolla voit luoda, viedä ja näyttää shell-muuttujien arvot. Katso man-sivuilta muita set- ja deklarointikomentojen asetuksia. Katsomme man-sivuja myöhemmin tässä osiossa.

exec-komento

Viimeinen komento, jota tarkastelemme tässä osiossa, on exec. Voit käyttää exec-komentoa toisen komennon suorittamiseen, joka korvaa nykyisen tulkin. Listaus 13 luo bash-ilmentymän ja korvaa sen sitten Korn-tulkin avulla execillä. Kun olet poistunut Korn-tulkista, palaat alkuperäiseen bash-tulkkiin (tässä esimerkissä PID 22985).

Listaus 13. Exec

$ kaiku $$
22985
$bash
$ kaiku $$
25063
$exec ksh
$ kaiku $$
25063
$poistuminen
$ kaiku $$
22985

Joukkueen historia

Jos olet kirjoittanut komentoja käsikirjaa lukiessasi, olet ehkä huomannut, että lähes samoja komentoja käytetään usein. Hyvä uutinen on, että bash voi pitää käskyjesi historiaa. Historia on oletuksena käytössä. Voit poistaa sen käytöstä komennolla set +o history ja ottaa sen käyttöön komennolla set -o history. HISTSIZE-ympäristömuuttuja kertoo bashille, kuinka monta riviä tallennetaan. Muut ominaisuudet määräävät tarinan käyttäytymisen ja toiminnan. Katso lisätietoja bash-man sivuilta.

Jos olet kirjoittanut komentoja käsikirjaa lukiessasi, olet ehkä huomannut, että lähes samoja komentoja käytetään usein. Hyvä uutinen on, että bash voi pitää käskyjesi historiaa. Historia on oletuksena käytössä. Voit poistaa sen käytöstä komennolla set +o history ja ottaa sen käyttöön komennolla set -o history. HISTSIZE-ympäristömuuttuja kertoo bashille, kuinka monta riviä tallennetaan. Muut ominaisuudet määräävät tarinan käyttäytymisen ja toiminnan. Katso lisätietoja bash-man sivuilta.

Tässä on joitain komentoja, joita voit käyttää historian käsittelyyn:

historia
Näyttää kaiken historian
historiaN
Näyttää historiasi viimeiset N riviä
historia -dN
Poistaa rivin N historiastasi; tätä voidaan käyttää, jos esimerkiksi haluat poistaa salasanan sisältävän rivin
!!
Viimeksi antamasi komento
!N
Historian tiimi
!-N
Joukkue, joka on N askeleen päässä nykyisestä historiassa (!-1 vastaa!!)
!#
Nykyinen komento, jota kirjoitat
!merkkijono
Viimeisin komento, joka alkaa merkkijonolla
!? merkkijono?
Viimeisin komento, joka sisältää merkkijonon

Voit käyttää kaksoispistettä (:) ja sen jälkeen tiettyä arvoa historian komennon käyttämiseen tai muuttamiseen. Luettelo 14 näyttää joitain historian mahdollisuuksia.

Listaus 14. Historian hallinta

$ kaiku $$
22985
$ env -i bash -c "echo $$"
1542
$ !!
env -i bash -c "echo $$"
1555
$!ec
echo $$
22985
$ !en:s/$$/$PPID/
env -i bash -c "echo $PPID"
22985
$ historia 6
1097 echo $$
1098 env -i bash -c "echo $$"
1099 env -i bash -c "echo $$"
1100 echo $$
1101 env -i bash -c "echo $PPID"
1102 historia 6
$ historia -d1100

Listauksen 14 komennot toimivat seuraavasti:

1. Anna nykyisen tulkin PID
2. Suorita echo-komento uudessa tulkin ilmentymässä ja tulosta sen PID
3. Suorita viimeinen komento
4. Käynnistä komento uudelleen 'ec':llä; suorittaa ensimmäisen komennon tässä esimerkissä
5. Suorita viimeinen komento, joka alkaa kirjaimella "en", mutta korvaa "$PPID" arvolla "$$", jotta se todella näyttää pää-PID:n.
6. Näytä viimeiset 6 komentohistoriaa
7. Poista komentonumero 1100, viimeinen kaikukomento

Voit muokata tarinoita interaktiivisesti. Bash-tulkki käyttää readline-kirjastoa komentojen ja historian muokkauksen hallintaan. Oletusarvoisesti näppäimet ja näppäinyhdistelmät, joita käytetään liikkumaan historia- tai muokkausriveillä, vastaavat niitä, joita käytetään GNU Emacs -editorissa. Emacsissa näppäinyhdistelmiä merkitään yleensä C-x tai M-x, missä x on tavallinen näppäin ja C ja M ovat Control- ja Meta-näppäimiä, vastaavasti. Tyypillisessä tietokoneessa Ctrl-näppäin vastaa Emacsin Control-näppäintä ja Alt-näppäin vastaa Meta-näppäintä. Man-sivuilta löytyy lisätoimintoja sekä mahdollisuus asettaa asetuksia readline-alustustiedoston avulla (yleensä inputrc kotihakemistossasi).

Jos haluat hallita historiaa vi-tilassa, käytä set -o vi -komentoa vaihtaaksesi vi-tilaan. Voit vaihtaa takaisin emacs-tilaan komennolla set -o emacs. Kun purat komennon vi-tilassa, olet aluksi vi lisäystilassa.

tapoja

Jotkut bash-komennot ovat sisäisiä, kun taas toiset ovat ulkoisia. Katsotaanpa nyt ulkoisia komentoja ja niiden suorittamista sekä sisäisen komennon erottamista.

Mistä tulkki etsii komentoja?

Ulkoiset komennot ovat tiedostojärjestelmän tiedostoja. Tämän oppaan Easy File Management -osiossa ja aiheen 104 oppaassa käsitellään tarkemmin. Linux- ja UNIX-järjestelmissä kaikki tiedostot ovat osa valtavaa puuta, jonka juuri on /. Yllä olevissa esimerkeissä nykyinen hakemistomme oli käyttäjän kotihakemisto. Tavallisten käyttäjien kotihakemistot ovat /home-hakemistossa, eli minun tapauksessani /home/ian. Rootin kotihakemisto on hakemistossa /root. Kun olet kirjoittanut komennon, bash etsii sitä oletushakuhakemistoluettelosta, joka on kaksoispisteellä eroteltu luettelo PATH-ympäristömuuttujaan tallennetuista hakemistoista.

Jos haluat tietää, mikä komento suoritetaan, jos tulostat tietyn merkkijonon, käytä which tai type -komentoa. Listauksessa 15 näkyy oletuspolkuni sekä muutamien komentojen sijainti.

Listaus 15. Komentojen sijainnin löytäminen

$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/ian/bin
$ joka bash env zip xclock echo set ls
alias ls="ls --color=tty"
/bin/ls
/bin/bash
/bin/env
/usr/bin/zip
/usr/X11R6/bin/xclock
/bin/echo
/usr/bin/which: no set in (/usr/local/bin:/bin:/usr/bin:/usr/X11R6/b
in:/home/ian/bin)
$ tyyppi bash env zip xclock echo set ls
bash on /bin/bash
env on /bin/env
zip on /usr/bin/zip
xclock on /usr/X11R6/bin/xclock
echo on sisäänrakennettu kuori
sarja on sisäänrakennettu kuori
ls on alias `ls --color=tty"

Huomaa, että kaikki polun hakemistot päättyvät /bin. Tämä on yleisesti hyväksytty sopimus, ei vaatimus. What-komento kertoi meille, että ls-komento oli alias ja että set-komentoa ei löytynyt. Tässä tapauksessa voidaan tulkita, että komentoa ei ole olemassa tai että se on sisäänrakennettu. Type-komento kertoi meille, että ls-komento oli itse asiassa alias, ja se myös määritti, että set-komento oli sisäänrakennettu tulkki; hän sanoi myös, että siellä on sisäänrakennettu kaikukomento, ja /bin-hakemistossa on myös sellainen komento, jonka löysimme komennon kanssa. Nämä kaksi komentoa suorittavat tulostensa eri tavalla.

Olemme nähneet, että ls-komento, jota käytetään luetteloimaan hakemistojen sisältö, on itse asiassa alias. Aliakset ovat kätevä tapa käyttää komentoja erilaisilla vaihtoehdoilla tai yksinkertaisesti antaa vaihtoehtoisia komentojen nimiä. Esimerkissämme vaihtoehto --color=tty saa hakemiston tiedostoluettelon korostettua tiedostojen ja hakemistojen tyypin mukaan. Kokeile suorittaa dircolors --print-database nähdäksesi värikoodit sekä tietyn tiedostotyypin värikoodit.

Jokaisella näistä komennoista on lisävaihtoehtoja. Riippuen tarpeistasi, voit käyttää jompaakumpaa komentoa. Käytän mieluummin kuta, kun olen varma, että löydän suoritettavan tiedoston ja tarvitsen vain täyden polun. Tyyppikomento antaa minulle enemmän tarkat tiedot, jota joskus tarvitsen skripteissä.

Muiden komentojen suorittaminen

Listauksessa 15 näimme, että suoritettavien tiedostojen koko polku alkaa / juurihakemistosta. Esimerkiksi xclock-ohjelma on itse asiassa /usr/X11R6/bin/xclock, tiedosto, joka sijaitsee /usr/X11R6/bin-hakemistossa. Jos ohjelma ei ole PATH-muuttujassa, voit ajaa sen määrittämällä koko ohjelman polun ja itse ohjelman. Voit käyttää kahdenlaisia ​​polkuja:

  • Absoluuttiset polut, jotka alkavat /, kuten näimme listassa 15 (/bin/bash, /bin/env ja niin edelleen).
  • Suhteelliset polut ovat suhteellisia nykyiseen työhakemistoosi, joka voidaan saada pwd-komennolla. Tällaiset komennot eivät ala /, mutta sisältävät vähintään yhden /-merkin.

Voit käyttää absoluuttisia polkuja riippumatta nykyisestä työhakemistostasi, mutta saatat haluta käyttää suhteellisia polkuja, kun komento on lähellä nykyistä hakemistoa. Oletetaan, että olet kehittämässä uutta versiota klassisesta Hello World! kotihakemistosi mytestbin-alihakemistossa. Haluat ehkä käyttää suhteellista polkua ja suorittaa komennon nimellä mytestbin/hello. Voit käyttää polussa kahta erityisnimeä; yksi piste (.) viittaa nykyiseen hakemistoon ja pistepari (..), jotka viittaavat nykyisen hakemiston päähakemistoon. Koska kotihakemistosi ei ole PATH-ympäristömuuttujassa (ja sen pitäisi olla), sinun on annettava selkeä polku tiedostoon, jonka haluat suorittaa kotihakemistostasi. Jos sinulla on esimerkiksi kopio hello-ohjelmasta kotihakemistossasi, voit käyttää ./hello-komentoa sen suorittamiseen. Voit käyttää tykkää. ja .. osana absoluuttista polkua, vaikka yksittäinen.. ei ole kovin hyödyllinen tässä tapauksessa. Voit käyttää aaltoviivaa (~) viittaamaan kotihakemistoosi ja ~käyttäjänimeä käyttäjänimen kotihakemistoon. Katso esimerkkejä listasta 16.

Listaus 16. Absoluuttiset ja suhteelliset polut

$ /bin/echo Käytä echo-komentoa sisäänrakennetun sijaan
Käytä echo-komentoa sisäänrakennetun sijaan
$ /usr/../bin/echo Sisällytä polkuun päähakemisto
Sisällytä polkuun vanhempi dir
$ /bin/././echo Lisää pari turhaa polkukomponenttia
Lisää pari turhaa polkukomponenttia
$ pwd # Katso missä olemme
/home/ian
$ ../../bin/echo Käytä suhteellista polkua kaikuun
Käytä suhteellista polkua kaikuun
$ myprogs/hello # Käytä suhteellista polkua ilman pisteitä
-bash: myprogs/hello: Ei tällaista tiedostoa tai hakemistoa
$ mytestbin/hello # Käytä suhteellista polkua ilman pisteitä
Hei maailma!
$ ./hello # Suorita ohjelma nykyisessä hakemistossa
Hei maailma!
$ ~/mytestbin/hello # suorita hello käyttämällä ~
Hei maailma!
$ ../hello # Kokeile lähettää tervehdys vanhemmalta
-bash: ../hello: Ei tällaista tiedostoa tai hakemistoa

Vaihda työhakemistoa

Aivan kuten voit suorittaa ohjelmia eri hakemistoista, voit muuttaa nykyistä työhakemistoasi cd-komennolla. Argumentin cd:n on oltava absoluuttinen tai suhteellinen polku hakemistoon. Voit myös käyttää ., .., ~ ja ~ username komennossa polkuja määritettäessä. Jos kirjoitat cd ilman valintoja, olet kotihakemistossasi. Yksittäisen (-) -merkin antaminen parametriksi tarkoittaa siirtymistä edelliseen työhakemistoon. Kotihakemisto tallennetaan HOME-ympäristömuuttujaan ja edellinen hakemisto OLDPWD-ympäristömuuttujaan, joten cd vastaa cd $HOME ja cd vastaa cd $OLDPWD. Yleensä puhumme lyhyesti hakemiston muuttamisesta sen sijaan, että muuttaisimme kokonaan nykyisen työhakemiston.

Komennoille on olemassa CDPATH-ympäristömuuttuja, joka sisältää kaksoispisteellä erotetun luettelon hakemistoista, joista tulee etsiä (nykyisen työhakemiston lisäksi) suhteellisia polkuja selvitettäessä. Jos ratkaisu käyttää CDPATH-polkua, cd tulostaa tulosteeksi löydetyn hakemiston koko polun. Yleensä onnistuneen hakemiston muutoksen mukana tulee uusi kehote tai hieman muokattu kehote. Joitakin esimerkkejä on listassa 17.

Listaus 17. Hakemistojen muuttaminen

$ cd /; pwd
$ cd /usr/X11R6;pwd
/usr/X11R6
$ cd ;pwd
/home/ian
$ cd -; pwd
/usr/X11R6
/usr/X11R6
$ cd ~ian/..;pwd
/Koti
$ cd ~;pwd
/home/ian
$ vienti CDPATH=~
$ cd /; pwd
$ cd mytestbin
/home/ian/mytestbin

Rekursiivinen komentojen soveltaminen

Monia Linux-komentoja voidaan soveltaa rekursiivisesti kaikkiin hakemistopuun tiedostoihin. Esimerkiksi ls-komennolla on -R-vaihtoehto hakemistojen luetteloimiseksi rekursiivisesti, ja cp-, mv-, rm- ja diff-komennoissa on -r-vaihtoehto, jota käytetään rekursiivisesti.

Komennon korvaaminen

bashilla on erittäin voimakas mahdollisuus yhden ohjelman tuloksen välittäminen toisen ohjelman syötteeseen; tätä kutsutaan komentojen korvaamiseksi. Voit tehdä tämän lisäämällä komennon, jonka tulokset haluat saada lainausmerkkeihin (`). Kun käytät useita sisäkkäisiä komentoja, voit sulkea komennon $(s) väliin.

Edellisessä opetusohjelmassa "LPI 101: Linux Installation and Package Management" näimme, että rpm-komento voi kertoa, mikä paketti omistaa minkä komennon; täällä oli kätevää käyttää komentojen korvaamista. Nyt tiedät, että teimme todella.

Komentojen korvaaminen on korvaamaton työkalu skriptien kirjoittamisessa sekä komentorivillä käytettäessä. Lista 18 näyttää esimerkin kuinka saada hakemiston absoluuttinen polku suhteellisesta hakemistosta, kuinka löytää paketti, joka tarjoaa /bin/echo-komennon, ja kuinka (root-käyttäjänä) tarkastella kolmen osion nimiä kiintolevyllä. ajaa. Jälkimmäinen käyttää seq-komentoa kokonaislukujen sarjan luomiseen.

Listaus 18. Komennon korvaaminen

$ echo "../../usr/bin" dir on $(cd ../../usr/bin;pwd)
../../usr/bin hakemisto on /usr/bin
$ joka kaiku
/bin/echo
$ rpm -qf `joka kaiku`
sh-utils-2.0.12-3
$su-
Salasana:
# n:lle $ (seq 7 9); do echo p$n `e2label /dev/hda$n`;tehty
p7 RH73
p8 SUSE81
p9 KUVIA

Man-sivut

Tämän oppaan tämän osion viimeisessä aiheessa tarkastellaan, kuinka saat apua Linux-komennot Man-sivujen ja muun dokumentaation kautta.

Man-sivut ja osiot

Pääasiallinen (ja perinteinen) dokumentaation lähde ovat man-sivut, joihin pääsee man-komennolla. Kuvassa 1 on man-komennon man-sivu. Käytä man man -komentoa saadaksesi nämä tiedot.

Kuvassa 1 on joitain tyypillisiä man-sivun merkintöjä:

* Otsikko, jossa on komennon nimi ja sen jälkeen osion numero suluissa
* Komennon nimi ja muut vastaavat komennot, joita käsitellään tällä man-sivulla
* Luettelo komentoon sovelletuista vaihtoehdoista ja parametreista
* Lyhyt kuvaus komennosta
* Yksityiskohtainen kuvaus jokaisesta vaihtoehdosta

Löydät myös osioita käytöstä, virheiden ilmoittamisesta, tietoja kirjoittajasta ja luettelon muista komennoista. Esimerkiksi man-sivulla mies sanoo, että niitä on lisäkomentoja(ja heidän oppaansa):

apropos(1), whatis(1), less(1), groff(1) ja man.conf(5).

Man-sivuilla on yleensä 8 yhteistä osiota. Useimmat sivut asennetaan yleensä paketin asennuksen yhteydessä, joten jos pakettia ei ole asennettu, sinulla ei läheskään varmasti ole sen man-sivuja. Myös jotkin sivujen osat voivat olla tyhjiä tai lähes tyhjiä. Suurin osa yleiset osiot man sivut ovat:

1. Käyttäjäkomennot (env, ls, echo, mkdir, tty)
2. Järjestelmäkutsut tai ytimen toiminnot (linkki, sethostname, mkdir)
3. Kirjastofunktiot (acosh, asctime, btree, locale, XML::Parser)
4. Laitteistotiedot (isdn_audio, hiiri, tty, nolla)
5. Tiedostomuodon kuvaus (keymaps, motd, wvdial.conf)
6. Pelit (huomaa, että monet pelit toimivat nyt graafisessa tilassa, joten niillä voi olla oma ohjejärjestelmä man-sivujen sijaan)
7. Muut (arp, boot, regex, unix utf8)
8. Järjestelmän hallinta(debugfs, fdisk, fsck, mount, renice, rpm)

Muissa osissa voi olla 9 dokumentaatiota varten Linux-ydin, n uusille asiakirjoille, o vanhalle dokumentaatiolle ja l paikalliselle dokumentaatiolle.

Jotkut merkinnät voivat näkyä useammassa kuin yhdessä osiossa. Esimerkkimme ovat osoittaneet, että mkdir on osioissa 1 ja 2 ja tty osioissa 1 ja 4. Voit määrittää tietyn osion, kuten man 4 tty tai man 2 mkdir, tai voit käyttää -a-vaihtoehtoa listataksesi. kaikki man -sivujen osat.

Huomaat kuvassa, että miehellä on paljon vaihtoehtoja, jotka näet itse. Katsotaanpa nyt nopeasti "Katso myös" -osio ihmisiin liittyvistä komennoista.

Katso myös

Kaksi tärkeintä ihmiseen liittyvää käskyä ovat whatis ja apropos. Whatis-komento etsii man-sivuilta määrittämääsi nimeä ja näyttää tietoja nimestä vastaavilta man-sivuilta. Apropos-komento etsii man-sivuilta avainsanoja ja palauttaa ne, jotka sisältävät sanasi. Lista 19 näyttää nämä komennot.

Listaus 19. Whatis ja apropos komentoesimerkkejä

$ mikä on mies
mies (1) - muotoile ja näytä online-käsikirjasivut
man (7) - makrot man-sivujen muotoiluun
mies (1) - muotoile ja näytä online-käsikirjasivut
man.conf (5) - konfigurointitiedot ihmiselle
$ mikä on mkdir
mkdir (1) - tee hakemistoja

$ apropos mkdir
mkdir (1) - tee hakemistoja
mkdir (2) - luo hakemisto
mkdirhier (1x) - muodostaa hakemistohierarkian

Muuten, jos et löydä man.conf-sivua, kokeile suorittaa man man.conf ig .

Man-komennon tulos on erikoisohjelma sivun tulos. Useimmissa Linux-järjestelmissä tämä ohjelma on pienempi. Toinen vaihtoehto voisi olla vanhempi ohjelma enemmän. Jos haluat tulostaa sivun, määritä -t-vaihtoehto muotoillaksesi sivun ja tulostaaksesi sen groff- tai troff-ohjelmalla.

Vähemmän tulostetussa ohjelmassa on useita komentoja, jotka helpottavat merkkijonojen löytämistä näytettävästä tekstistä. Käytä man less -komentoa saadaksesi lisätietoja komennoista /(haku eteenpäin), ?(haku taaksepäin) ja n (viimeisin suoritettu haku) sekä monet muut komennot.

Muut dokumentaatiolähteet

Komentoriviltä saatavien man-sivujen lisäksi Free Software Foundation on luonut iso luku tietotiedostot, joita käsitellään info-ohjelma. Siinä on erinomaiset navigointiominaisuudet, mukaan lukien mahdollisuus siirtyä toiseen osaan. Kirjoita miestiedot tai tiedot saadaksesi lisää tietoa. Kaikkia komentoja ei ole dokumentoitu infossa, joten voit käyttää sekä man-sivuja että infoa.

On useita graafiset käyttöliittymät man-sivuille, kuten xman (XFree86-projektista) ja yelp (Gnome 2.0:n ohjeselain).

Jos et löydä ohjeita komennolle, yritä suorittaa komento --help-valitsimen avulla. Voit siis saada selville, mitä haluat, tai saada vihjeen, mistä muualta etsiä.

Seuraava osa käsittelee tekstivirtojen käsittelyä suodattimilla.