Voit suorittaa komentotulkissa yhden komennon toisen komennon sisällä. Tässä on yksinkertainen esimerkki:
grep `date +%b` apache_error_log
Tarkemerkki (`) on yleensä samassa näppäimessä kuin tilde (´).
Komento tarkemerkkien "``" sisällä suoritetaan ensin. Ulostulo laitetaan sen jälkeen isomman komennon sisään. Niinpä komentotulkki suorittaa ensin komennon:
date +%b
Tämä on komento "date
" parametrillä, joka alkaa plus-merkillä "+", jolla osoitetaan ulostuloon haluttu formaatti. Formaatti "+%b
" on melko outo tapa pyytää "date"
-komentoa tulostamaan vain kolmen kirjaimen lyhenne nykyisestä kuukaudesta. Jos esimerkiksi ajamme tämän komennon maaliskuussa, se tulostaa:
Mar
Kolmikirjaiminen lyhenne nykyisestä kuukaudesta siis asetetaan ympäröivän "grep
" -komennon sisään. Maaliskuussa tämä komento on siis muodossa:
grep Mar apache_error_log
Lokitiedosto "apache_error_log" tallentaa viestit päivämäärillä ja päivämäärä sisältää kuukauden kolmikirjaimisen lyhenteen:
[Mon Mar 09 14:44:23 2009] [notice] Apache/2.0.59 (Ubuntu) PHP/5.2.6 DAV/2 configured
Mitä tämä komento siis tekee? Se näyttää kaikki nykyisen kuukauden aikana kirjatut lokiviestit tiedostosta "apache_error_log". Tietenkin lokitiedostossa voi olla useamman vuoden viestit, jolloin saat myös edellisen vuoden saman kuukauden viestit. Laittamalla komennon "date"
komennon "grep"
sisään olemme luoneet komennon, jonka voimme tallentaa ja suorittaa milloin tahansa määrittelemättä oikeaa kuukautta. Voimme esimerkiksi tallentaa tämän aloitustiedostoon ".bashrc":
alias monthlog="grep `date +%b` apache_error_log"
Nyt meillä on oma komentomme, "monthlog
", joka näyttää nykyiset Apachen lokitiedostot.
Bashissa voit tehdä saman asian syntaksilla, joka on monista yksinkertaisempi:
grep $(date +%b) apache_error_log
Tarkemerkkien sijasta voit laittaa dollarimerkin ja pistää komennon sulkujen sisään.
Komennon korvaus on kuin putki (merkki "|"). Komennon korvaus on kuitenkin joustavampi kuin putki, sillä voit laittaa yhden komennon mihin tahansa toisen komennon sisälle. On olemassa yksi ero: putki antaa molempien komentojen toimia samaan aikaan. Jos komennon sisään laitettu komento kestää kauan, ulompi komento ei toimi ennen kuin sisempi komento on suoritettu.
Jos sisempi komento voi tuottaa ulostuloa, joka on enemmän kuin yksi sana (kuten "Mar 09"), voit lähettää sen yhtenä argumenttina laittamalla komennon lainausmerkkeihin. Komento "grep"
tässä osassa vaatii merkkijonon lähettämistä yhtenä parametrinä.
There has been error in communication with Booktype server. Not sure right now where is the problem.
You should refresh this page.