Ero sivun ”Komentorivivinkkejä” versioiden välillä

Siirry navigaatioon Siirry hakuun
5 607 merkkiä lisätty ,  14. joulukuuta 2018
(pikkuparantelua)
 
(73 välissä olevaa versiota 34 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
Valtaosa vinkeistä on testattu melko tavanomaisessa [[Red Hat]] 8.0 -asennuksessa. Pääosa näistä toiminee muissakin jakeluissa, osa soveltaen myös muissa Unix-tyyppisissä järjestelmissä. Kaikki vinkit eivät välttämättä toimi kaikissa [[komentotulkki|komentotulkeissa]].
Seuraavassa on esitetty lukuisia vinkkejä komentorivin tehokäyttöön. Vinkit on jaoteltu eri kategorioihin. Eri järjestelmissä on eroja, joten kaikki vinkit eivät välttämättä toimi kaikissa [[jakelu]]issa tai kaikissa [[komentotulkki|komentotulkeissa]]. Valtaosa vinkeistä kuitenkin toimii useimpien jakeluiden mukana tulevassa ja oletuksena käytössä olevassa [[bash]]-yhteensopivassa komentotulkissa. Joissakin järjestelmissä oletuskomentotulkkina on tosin [[tcsh]], jonka syntaksi on monelta osin erilainen.  


Eri komentorivikomentoja on listattu käyttötarkoituksen mukaan artikkelissa [[komentorivikomennot]]. Komentorivin perusteista kerrotaan artikkelissa [[komentorivin perusteet]]. Komentorivikomennoista voi tehdä myös erilaisia käteviä komentojonoja, joista kerrotaan artikkelissa [[bash-skriptaus]].
==Peruskäyttö==
# {{Näppäin|TAB}} näppäimellä voi antaa komentotulkin täydentää loput komennosta tai tiedostonimestä. Mikäli vaihtoehtoja on useampia, ne saa näkyviin toisella painalluksella. Osassa komentotulkkeja voi TABilla täydentää myös mm. etäkoneiden ja käyttäjien nimiä sekä komentojen valitsimia (bashissa tämän ominaisuuden saa käyttöön ajamalla skriptin /etc/bash_completion rivit, sopiva komento löytyy usein deaktivoituna bashin alustusskripteissä). Jos listaus on pitkä näppäimellä {{Näppäin|q}} voit lopettaa listauksen.
# Jos kaverisi pyytää auttamaan Linuxin käytössä, kerro hänelle [[Man-sivut|man-sivuista]]. <tt>man [[tar]]</tt> ja <tt>man [[mkisofs]]</tt> ovat esimerkkeinä parhaita. Myös [[info]]-sivut voivat olla hyviä tiedonlähteitä.
# <tt>man -k printer</tt> kertoo kaikki ne komennot, joiden yksirivinen kuvaus sisältää merkkijonon "printer".
# [[alias|Aliakset]] ovat käteviä. Komennon <tt>alias l="ls -lda"</tt> jälkeen pelkkä l riittää komennoksi.
# Jos olet tehnyt aliaksen, jolla on sama nimi kuin komennolla (<tt>alias ls='ls --color=tty'</tt>, esimerkiksi), mutta haluat suorittaa poikkeuksellisesti sen alkuperäisen, kirjoita komento muodossa <tt>\ls</tt>.
# Paina {{Näppäin|Ctrl|R}} komentokehotteessa ja kirjoita vaikka "ls", niin löydät viimeisimmän kirjoittamasi komennon jossa esiintyy kirjaimet "ls". Paina {{Näppäin|Ctrl|R}} uudelleen hakeaksesi kauempaa komentohistoriasta.
# {{Näppäin|Ctrl|A}} vie rivin alkuun komentokehotteessa, {{Näppäin|Ctrl|E}} rivin loppuun. {{Näppäin|Ctrl|F}}, {{Näppäin|Ctrl|B}}, {{Näppäin|Ctrl|P}} ja {{Näppäin|Ctrl|N}} (forward/backward/previous/next) korvaa nuolinäppäimet. {{Näppäin|ESC|F}} ja {{Näppäin|ESC|B}} liikuttaa sanoittain. {{Näppäin|Ctrl|D}}, {{Näppäin|ESC|D}}, {{Näppäin|Ctrl|K}} ja {{Näppäin|Ctrl|U}} poistaa tekstiä, {{Näppäin|Ctrl|Y}} palauttaa viimeksi poistetut merkit nykyiseen kohtaan.
# Komentoja voi yhdistellä && ja || -operaattoreilla. <tt>[[tar]] cf paketti.tar /joku/hakemisto && rm -rf /joku/hakemisto</tt> suorittaa ensin tar-komennon, ja jos se onnistuu ongelmitta, suoritetaan [[rm]]-komento. || toimii toisinpäin, toinen komento suoritetaan vain jos ensimmäinen epäonnistui.
# Komentokehotetta voi muuttaa. Esimerkiksi [[bash]]-komentotulkissa <tt>[[export]] PS1='[\u@\h \w]\$ '</tt> laittaa komentokehotteeseen käyttäjätunnuksen, koneen ja työhakemiston. Artikkelista [[zsh]] voi lukea kuinka tämä onnistuu zsh-komentotulkissa.
# Koneelle kirjauduttaessa ajetaan kotihakemistosta tiedosto jonka nimi on ".bash_profile" (muissa kuin [[bash]]-[[komentotulkki|komentotulkissa]] nimi on toinen, usein .profile tai .login). Sen loppuun voit kirjoittaa vaikka echo "Muista katsoa www.khdrive.fi/linkku/"
# [[Virtuaalikonsoli]]ssa voi {{Näppäin|Shift|Page Up}}-näppäilyllä siirtyä pari ruudullista taaksepäin. Huomioi kuitenkin, että esimerkiksi [[X Window System|X]]:ssä käynti yleensä nollaa tämän ruutuhistorian. Sama näppäily toimii monessa [[terminaaliemulaattori]]ssa ([[xterm]] tms.), joissa taas ikkunan leveyden vaihto tuhoaa historiaa.
# [[which]]-komennolla näkee mistä polussa oleva ohjelmatiedosto löytyy. Kokeile esim. <tt>which [[ldd]]</tt>
# Komento <tt>[[history]]</tt> tulostaa komentohistorian, <tt>history 5</tt> viisi viimeistä komentoa. Jos käyttää historiatoimintoa (esimerkiksi muodossa {{Näppäin|Ctrl|R}}) kannattaa asentaa isompi puskuri, esimerkiksi <tt>HISTSIZE=5000</tt>.
# Komennolla <tt>[[pwd]] -P</tt> saat selville missä hakemistossa "oikeasti" olet, eli symbolisten linkkien kautta kuljettu polku jätetään huomiotta.
# <tt>[[clear]]</tt> tyhjentää kuvaruudun. Kätevä joissakin skripteissä. Normaalikäytössä on helpompi painaa {{Näppäin|Ctrl|L}}. Jos näppäimistö tai ruutu käyttäytyy sekavasti, esimerkiksi binääritiedoston katsomisen tuloksena, myös <tt>[[stty]] sane</tt> tai <tt>[[reset]]</tt> voi olla kohdallaan.
# Voit uudelleen käyttää komennoille antamiasi parametrejä <tt>"ESC ."</tt>-näppäinyhdistelmällä. Esim. jos luit pitkää <tt>/home/pena/file</tt>-tiedostoa komennolla <tt>"[[cat]] /home/pena/file"</tt>, niin kokeile <tt>"[[less]] ESC ."</tt>.
# Jos siirryt <tt>cd</tt>-komennolla uuteen hakemistoon ja haluat jostakin syystä palata takaisin siihen aikaisempaan, voit tehdä sen komennolla <tt>cd -</tt>.
# <tt>cd ~ </tt>-komennolla pääset suoraan kotihakemistoosi.
==Tiedostonhallinta==
# Komennolla <tt>[[df]] -h</tt> saat siistin esityksen levyosioiden täyttöasteesta.
# Komennolla <tt>[[df]] -h</tt> saat siistin esityksen levyosioiden täyttöasteesta.
# Sano roottina <tt>[[du]] -s /home/* | [[sort]] -n | [[tail]]</tt> ja löydät levyrohmut.
# Sano roottina <tt>[[du]] -s /home/* | [[sort]] -n -r | [[head]]</tt> ja löydät levyrohmut.
# Komennolla <tt>[[find]] . -type f -name "*koira*" -print0 | xargs -0 [[grep]] -l "kissa"</tt> löydät kaikki ne tiedostot työhakemiston alla, joiden nimessä on sana "koira" ja joissa esiintyy sana "kissa".
# Komennolla <tt>[[find]] . -type f -name "*koira*" -print0 | [[xargs]] -0 [[grep]] -l "kissa"</tt> löydät kaikki ne tiedostot työhakemiston alla, joiden nimessä on sana "koira" ja joissa esiintyy sana "kissa". Käyttämällä -name:n sijasta valitsinta -iname löydät myös eri kirjainkoolla kirjoitetut merkkijonot. Saman tuloksen saat myös jos korvaat osion <tt>| [[xargs]] -0 [[grep]] -l "kissa"</tt> osiolla <tt><nowiki>-exec grep -l kissa '{}' ';'</nowiki></tt>
# [[mail]]-komento toimii myös komentorivillä. Voit vaikka suorittaa komennon ja ohjata tulostuksen meiliin: <tt>pwd | mail -s "Komennon pwd tulos" oma.osoite@domain.example</tt>
# MS-DOS -levykkeiden käsittely onnistuu [[mtools]] -paketilla. Kokeile mitä tekevät <tt>mdir a:</tt> ja <tt>mcopy tiedosto a:</tt>.
# Haluatko kuluvan päivän esim. varmuuskopion nimeen? Kokeile tätä: <tt>[[tar]] cf /root/varmistus-home`date +%Y-%m-%d`</tt> Tuo aakkostuukin oikein.
# Haluatko kaikki työhakemiston tiedostonimet pienille kirjaimille? Sano <tt>for i in *; do mv -i $i `echo $i | [[tr]] A-Z a-z`; done</tt>
# [[zcat]]-komennolla voit tulostaa gzip-ohjelmalla tehdyn tekstitiedoston suoraan konsolille ilman purkamista välissä. zless toimii samalla tavoin gzip- ja less-komentojen yhdistäjänä.
# Hakemiston saa pakattua näin: <tt>[[tar]] cvzf paketti.tar.gz /joku/hakemisto</tt> . Purku onnistuu komennolla <tt>tar xvzf paketti.tar.gz</tt>. Korvaa komennon z-kirjaimet j:lla jos haluat käyttää [[gzip]]-pakkauksen sijasta tehokkaampaa [[bzip2]]-pakkausta.
# Kokeile tätä: <tt>echo "echo \"Vie kukkia\" | mail -s Hääpäivä oma.osoite@jossain.com" | at 09:00 06.04.02</tt>
# [[locate]] on nopeampi kuin find. Kokeile esim. <tt>locate foobar</tt> löytääksesi tiedostot joiden nimissä on merkkijono "foobar". Locate käyttää tiedostojen nimistä kerättyä tietokantaa, joka päivittyy oletuksena joka yö ([[cron]]).
# <tt>[[ls]] -S</tt> listaa tiedostot kokojärjestyksessä, <tt>ls -t</tt> muokkausajan mukaan järjestettynä, <tt>ls -tu</tt> käyttöajan mukaan (kunhan [[atime]] on käytössä). "-r" kääntää järjestyksen.
# <tt>[[file]] tiedostonnimi</tt> yrittää arvailla mitä tyyppiä tiedosto on. Roottina voit jopa sanoa <tt>file -s /dev/hda1</tt> ja näet sisältääkö laitetiedosto jotain joka näyttää tiedostojärjestelmältä.
# [[symbolinen linkki|Symboliset linkit]] ovat joskus käteviä. Jos /var/www on liian täynnä ja /home melkein tyhjä, sano <tt>mv -i /var/www /home</tt> ja <tt>ln -s /home/www /var/www</tt>
# [[mkdir]]-komennolla voit luoda hakemistorakenteenkin kerralla. Kokeile esim. <tt>mkdir -p eka/toka/kolmas.</tt> Sanomalla <tt>mkdir -p abc/def0{1..9}</tt> luot abc-kansion alle numeroidut alikansiot def01,def02..def09.
# <tt>ls -F</tt> näyttää tiedostolistauksen niin, että nimen perässä on merkki joka kuvaa tiedoston tyyppiä.
# Jos haluat ls:n tekevän saman värien avulla, anna komento <tt>ls --color=auto</tt> (tämä on oletus monessa jakelussa).
# Komento <tt>find . -type f -mmin -30 -print</tt> hakee työhakemistosta alaspäin kaikki tiedostot, joita on muokattu viimeisen puolen tunnin sisään.
# Kaikki Microsoft Office -dokumentit löydät komennolla <tt>find . -iname '*.doc*' -type f -exec sh -c "file \"{}\" | grep -q \"Microsoft Office Document\" && echo \"{}\"" \;</tt> (jos tiedosto on satettu siirtää eri nimelle, poista "iname ... doc*'", tiedostonimen käyttö karkeaan karsintaan kuitenkin nopeuttaa operaatiota huomattavasti)
# Komennolla <tt>ls -l | [[colrm]] 10 30</tt> saat tiedostolistauksesta pois tiedoston omistajan ja ryhmän. GNU ls:llä <tt>ls -lgG</tt> tekee saman.
# Ellet tiedä mitä /etc:n alla olevaa tiedostoa säätää, voit hakea jonkin sanan sisältäviä tiedostoja: <tt>grep --recursive "localdomain" /etc</tt>
# <tt>[[dirname]] /joku/polku/tiedosto</tt> palauttaa arvon "/joku/polku". <tt>[[basename]] /joku/polku/tiedosto</tt> palauttaa arvon "tiedosto".
# Jos [[locale]]-asetus on kunnossa (eli olet mm. sanonut export LANG=fi_FI.UTF-8 , voit katsoa koska tiedostoa teksti.txt on viimeksi muutettu sanomalla <tt>[[date]] --reference=teksti.txt "+%Ana %Bn %e. päivä"</tt>
# Komento <tt>[[touch]] tiedostonnimi</tt> on helpoin tapa luoda tyhjä tiedosto. Samalla touch-komennolla voi myös muuttaa tiedostojen muokkauspäivämääriä, kokeile esim. <tt>touch --date 2002-04-01 aprillia</tt>
# Jos haluat poistaa tiedoston jonka nimi on -f, se onnistuu kätevimmin komennolla <tt>rm -- -f</tt> tai <tt>rm ./-f</tt>
# Myös tiedostoihin voi tehdä tiedostojärjestelmän.
# Levyille voi tehdä tiedostojärjestelmän myös ilman partitiointia
# <tt>find</tt>-komento antaa helposti pitkän listan permission denied -virheilmoituksia. Nämä voi suodattaa pois [[standardivirrat|ohjaamalla]] virheet [[laitetiedostot|/dev/nulliin]]: <tt> find / -name "saxon" 2> /dev/null</tt>
 
==Verkko==
# [[mail]]-komento toimii myös komentorivillä. Voit vaikka suorittaa komennon ja ohjata tulostuksen meiliin: <tt>[[pwd]] | mail -s "Komennon pwd tulos" oma.osoite@domain.example</tt>
# Kokeile tätä: <tt>[[echo]] "echo \"Vie kukkia\" | mail -s Hääpäivä oma.osoite@jossain.com" | at 09:00 06.04.02</tt>
# Jos kokeilet edellistä, muista oikea päivämäärä. Sillä tavalla ei tule perheriitaa, ja aikaa säästyy esim. Linuxin säätämiseen.
# Jos kokeilet edellistä, muista oikea päivämäärä. Sillä tavalla ei tule perheriitaa, ja aikaa säästyy esim. Linuxin säätämiseen.
# Aliakset ovat käteviä. Komennon <tt>alias l="ls -lda"</tt> jälkeen pelkkä l riittää komennoksi.
# Komento <tt>ypchfn</tt>, jolla vaihdetaan erillisellä käyttäjätunnuspalvelimella olevia käyttäjätietoja, tulee sanoista "Yellow Pages CHange FiNger". Yellow Pages oli nykyisen [[NIS]]-palvelimen ensimmäinen nimi, mutta se vaihdettiin kun British Telecom omisti siihen tavaramerkin. Tiedolla ei varsinaisesti tee mitään, mutta käyttämällä sitä sopivassa tilanteessa osoitat olevasi nörtti.
# Paina Ctrl-R komentokehotteessa ja kirjoita vaikka "ls", niin löydät viimeisimmän kirjoittamasi komennon jossa esiintyy kirjaimet "ls". Paina Ctrl-R uudelleen hakeaksesi kauempaa komentohistoriasta.
# Kokeile tätä: <tt>[[lynx]] --dump http://www.khdrive.fi/linkku/ | grep --after-context=5 "Seuraavat kokoontumiset"</tt>
# Ctrl-A vie rivin alkuun komentokehotteessa, Ctrl-E rivin loppuun.
# <tt>[[wget]] --recursive http://www.flug.fi/</tt> imuroi koko Flug ry:n WWW-sivuston omalle koneelle.
# Komennolla [[bc]] -l saat pienen laskimen. Käytettävissä on normaalit laskutoimitukset ja lisäksi voit sijoittaa arvoja muuttujiin basic-kielen tapaan.
# Testaa latausnopeutesi: <tt>wget -O /dev/null ftp://ftp.funet.fi/dev/100Mnull > /dev/null</tt> (tämä testi saattaa olla hitaampi kuin nopeat liittymät)
# bc käyttää samaa [[readline]]-kirjastoa kuin komentotulkki, joten samat Ctrl-R, Ctrl-A ja Ctrl-E toimivat siinäkin. Samalla tavoin toimii myös mm. matriisilaskennan ohjelma [[Octave]].
# Jaa kansio nopeasti verkkoon väliaikaista käyttöä varten: <tt>python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"</tt>
# MS-DOS -levykkeiden käsittely onnistuu mtools -paketilla. Kokeile mitä tekevät <tt>mdir a:</tt> ja <tt>mcopy tiedosto a:</tt>.
 
# <tt>tr</tt> -komennolla voit muuttaa merkkejä, kokeile vaikka: <tt>echo kanalassa | tr a b</tt>.
==Prosessit==
# Haluatko kaikki työhakemiston tiedostonimet pienille kirjaimille? Sano <tt>for i in *; do mv $i `echo $i | tr A-Z a-z`; done</tt>
# [[locate]]-komennon tietokanta muodostuu [[updatedb]] -ohjelmalla, jonka ajo kestää aika kauan. Miten kauan, sen saa selville komennolla <tt>[[time]] updatedb</tt>
# Komennolla <tt>[[ps]] afx</tt> näet siistin puuesityksen ajossa olevista prosesseista.
# Komennolla <tt>[[ps]] aufx</tt> näet puuesityksen ajossa olevista prosesseista.
# tr-komennolla voi poistaa merkkejä. Sano vaikka <tt>cat tiedosto | tr -d " "</tt>
# Komennolla <tt>[[nohup]] jokukomento >& lokitiedosto &</tt> saat komennon jäämään tausta-ajoon niin, että voit itse lopettaa yhteyden ja komento jää suoritettavaksi. Sama onnistuu myös [[screen]]in avulla.
# Hakemiston saa pakattua näin <tt>tar cvzf paketti.tar.gz /joku/hakemisto</tt> . Purku onnistuu komennolla <tt>tar xvzf paketti.tar.gz</tt>
# <tt>[[killall]] [[vi]]</tt> lopettaa kaikki ajossa olevat vi-ohjelmat.
# Kuviakin voi käsitellä komentoriviltä. Kokeile vaikka <tt>identify jokukuva.gif</tt>
# Komento <tt>[[kill]] `[[pidof]] [[vi]]`</tt> toimii samoin.
# <tt>[[ls]] -S</tt> listaa tiedostot kokojärjestyksessä, <tt>ls -t</tt> muokkausajan mukaan järjestettynä. "-r" kääntää järjestyksen.
# <tt>[[top]]</tt> näyttää jatkuvasti päivittyvän listan ajossa olevista ohjelmista. Painamalla h-kirjainta saat ohjeen käytössä olevista komennoista. q-kirjaimella pääset pois ohjelmasta.
# <tt>[[file]] tiedostonnimi</tt> yrittää arvailla mitä tyyppiä tiedosto on. Roottina voit jopa sanoa <tt>file -s /dev/hda1</tt> ja näet sisältääkö laitetiedosto jotain joka näyttää tiedostojärjestelmältä.
 
==Järjestelmänhallinta==
# Hakemiston /etc/skel sisällöstä tehdään kopio kotihakemistoon, kun luodaan uusi käyttäjä.
# Hakemiston /etc/skel sisällöstä tehdään kopio kotihakemistoon, kun luodaan uusi käyttäjä.
# Hakemiston /proc sisältä löytyy tietoa koneesta. Katso vaikka mitä cat /proc/cpuinfo tulostaa.
# Hakemiston /proc sisältä löytyy tietoa koneesta. Katso vaikka mitä cat /proc/cpuinfo tulostaa.
# Jos kaverisi pyytää auttamaan Linuxin käytössä, kerro hänelle [[Man-sivut|man-sivuista]]. <tt>man tar</tt> ja <tt>man mkisofs</tt> ovat esimerkkeinä parhaita.
# Jos hakemistoon /etc/[[cron]].weekly luo tiedoston, jossa on vain komento <tt>[[cp]] -R /home/ville /root</tt>, saa joka viikko varmuuskopion Villen kotihakemistosta rootin kotihakemistoon.
# [[locate]] on nopeampi kuin find. Kokeile esim. <tt>locate condom</tt> löytääksesi tiedostot joiden nimissä on merkkijono "condom". Locate käyttää tiedostojen nimistä kerättyä tietokantaa, joka päivittyy joka yö.
# locate-komennon tietokanta muodostuu [[updatedb]] -ohjelmalla, jonka ajo kestää aika kauan. Miten kauan, sen saa selville komennolla <tt>time updatedb</tt>
# Rikoit rivinvaihdot kun siirsit tekstiä Dos- tai Mac-koneelta Linuxiin? <tt>dos2unix</tt> ja <tt>mac2unix</tt> -komennot auttavat.
# Komento <tt>ypchfn</tt>, jolla vaihdetaan erillisellä käyttäjätunnuspalvelimella olevia käyttäjätietoja, tulee sanoista "Yellow Pages CHange FiNger". Yellow Pages oli nykyisen NIS-palvelimen ensimmäinen nimi, mutta se vaihdettiin kun British Telecom omisti siihen tavaramerkin. Tiedolla ei varsinaisesti tee mitään, mutta käyttämällä sitä sopivassa tilanteessa osoitat olevasi nörtti.
# <tt>man -k printer</tt> kertoo kaikki ne komennot, joiden yksirivinen kuvaus sisältää merkkijonon "printer".
# Symboliset linkit ovat joskus käteviä. Jos /var/www on liian täynnä ja /home melkein tyhjä, sano <tt>mv /var/www /home</tt> ja <tt>ln -s /home/www /var/www</tt>
# Komentoja voi yhdistellä && ja || -operaattoreilla. <tt>tar cf paketti.tar /joku/hakemisto && rm -rf /joku/hakemisto</tt> suorittaa ensin tar-komennon, ja jos se onnistuu ongelmitta, suoritetaan rm-komento. || toimii toisinpäin, toinen komento suoritetaan vain jos ensimmäinen epäonnistui.
# PostScript-tiedostoja voi käsitellä komentorivillä. Esim. <tt>psnup -2 dokumentti.ps tiivis.ps</tt> tekee tulostusta varten version jossa kaksi sivua on laitettu yhdelle sivulle.
# Komentokehotetta voi muuttaa. Esim. <tt>export PS1='[\u@\h \w]\$ '</tt> laittaa komentokehotteeseen käyttäjätunnuksen, koneen ja työhakemiston.
# [[mkdir]]-komennolla voit luoda hakemistorakenteenkin kerralla. Kokeile esim. <tt>mkdir -p eka/toka/kolmas</tt>
# Jos hakemistoon /etc/cron.weekly luo tiedoston, jossa on vain komento <tt>cp --recursive /home/ville /root</tt>, saa joka viikko varmuuskopion Villen kotihakemistosta rootin kotihakemistoon.
# Koneelle kirjauduttaessa ajetaan kotihakemistosta tiedosto jonka nimi on ".bash_profile". Sen loppuun voit kirjoittaa vaikka echo "Muista katsoa www.khdrive.fi/linkku/"
# Kokeile tätä: <tt>[[lynx]] --dump http://www.khdrive.fi/linkku/ | grep --after-context=5 "Seuraavat kokoontumiset"</tt>
# Kaikki ne tiedoston rivit, joissa ei esiinny merkkijonoa "kissa" löydät komennolla <tt>grep -v kissa tiedostonnimi</tt> . Jos taas haluat poistaa vain sanan "kissa" etkä esim. sanaa "takissani" sisältävät rivit, sano <tt>grep -v -w kissa tiedostonnimi</tt> .
# <tt>tail -f /var/log/messages</tt> näyttää ensin tiedoston lopun ja sitten jatkuvasti tiedostoon tulevat uudet rivit.
# <tt>ls -F</tt> näyttää tiedostolistauksen niin, että nimen perässä on merkki joka kuvaa tiedoston tyyppiä.
# Tiedosto /etc/motd tulostetataan ruudulle joka kerta kun käyttäjä kirjautuu sisään. Siihen voi kirjoittaa vaikka joulutervehdyksen kaikille käyttäjille.
# Tiedosto /etc/motd tulostetataan ruudulle joka kerta kun käyttäjä kirjautuu sisään. Siihen voi kirjoittaa vaikka joulutervehdyksen kaikille käyttäjille.
# Tiedosto /etc/issue tulostetaan ruudulle ennen "login:"-kehotetta.
# Tiedosto /etc/issue tulostetaan ruudulle ennen "login:"-kehotetta.
# Komento <tt>find . -type f -mmin -30 -print</tt> hakee työhakemistosta alaspäin kaikki tiedostot, joita on muokattu viimeisen puolen tunnin sisään.
# Levypinnan saa pyyhittyä tyhjäksi komennolla <tt>[[dd]] if=/dev/zero of=/dev/fd0</tt>. Esimerkki tyhjentää levykkeen, samalla tavalla voi pyyhkiä kiintolevyjä, esim. /dev/hda on IDE0-väylän master-levy. Usein suositellaan /dev/zero -laitteen sijasta /dev/urandom -laitetta, mutta silloin pyyhintä hidastuu mateluksi. Myös astetta parempaa satunnaislukua tuottavan /dev/random-laitteen käyttö on mahdollista, mutta tällöin toimenpiteen suoritus hidastuu edelleen.
# Levypinnan saa pyyhittyä tyhjäksi komennolla <tt>dd if=/dev/zero of=/dev/fd0</tt>. Esimerkki tyhjentää levykkeen, samalla tavalla voi pyyhkiä kiintolevyjä, esim. /dev/hda on IDE0-väylän master-levy. Usein suositellaan /dev/zero -laitteen sijasta /dev/urandom -laitetta, mutta silloin pyyhintä hidastuu mateluksi. Myös astetta parempaa satunnaislukua tuottavan /dev/random-laitteen käyttö on mahdollista, mutta tällöin toimenpiteen suoritus hidastuu edelleen.
# <tt>[[uname]]</tt> on joskus kätevä, erityisesti komento <tt>uname -a</tt> kertoo ytimen version ym. mahdollisesti kiinnostavaa.
# <tt>head -5 tiedostonnimi</tt> tulostaa tiedoston viisi ensimmäistä riviä. <tt>head -c 5 tiedostonnimi</tt> tulostaa viisi ensimmäistä merkkiä. <tt>tail -5 tiedostonnimi</tt> ja <tt>tail -c 5 tiedostonnimi</tt> toimivat vastaavasti.
 
# <tt>[[wc]] *.txt</tt> antaa listan hakemiston sisältämistä .txt -päätteisistä tiedostoista ja jokaisesta rivien, sanojen ja merkkien lukumäärän.
==Käyttäjät ja ryhmät==
# <tt>[[cat]] --number tiedostonnimi</tt> tulostaa tiedoston rivit numeroituna.
# <tt>[[su]]</tt> -komennolla voit vaihtaa lennosta toiseksi käyttäjäksi. <tt>su -</tt> vaihtaa rootiksi ja root voi sanoa <tt>su - ville</tt> päästääkseen kokeilemaan Villen tunnusta ilman salasanaa. Valitsin "-" aiheuttaa pelkkien oikeusmuutosten ohella myös käyttäjän omien sisäänkirjautumisskriptien ajamisen.
# [[strings]] -komennolla voit hakea merkkijonoja binäärimössöstä. Esim. <tt>strings jokudoku.doc</tt> näyttää yleensä Word-documentin sisältämän tekstin jotenkin luettavassa muodossa.
# Kaikki Microsoft Office -dokumentit löydät komennolla <tt>find . -type f -exec sh -c "file \"{}\" | grep -q \"Microsoft Office Document\" && echo \"{}\"" \;</tt>
# Normaalissa konsolissa voi Shift+Page Up -näppäilyllä siirtyä pari ruudullista taaksepäin. Huomioi kuitenkin, että esimerkiksi X:ssä käynti nollaa tämän ruutuhistorian.
# Komennolla <tt>ls -l | colrm 10 30</tt> saat tiedostolistauksesta pois tiedoston omistajan ja ryhmän.
# Komennolla <tt>cut -d ' ' -f 2</tt> tiedostonnimi voit tulostaa tiedoston jokaisen rivin toisen sanan.
# Kaikkiin html-tiedostoihin saat LANG-attribuutin seuraavasti: <tt>find . -name "*.html" -print | xargs perl -e 's/<HTML>/<HTML LANG="fi">/gi' -p -i.bak</tt>
# Virheilmoituksetkin (STDERR) saa ohjattua tiedostoon. Kokeile esim. <tt>find hakemistojotaeiole >& find-tuloste.txt</tt>
# which-komennolla näkee mistä polussa oleva ohjelmatiedosto löytyy. Kokeile esim. <tt>which ldd</tt>
# Haluatko varmasti hyvän salasanan? Sano <tt>[[head]] -c 6 /dev/random | mimencode</tt>
# Ellet tiedä mitä /etc:n alla olevaa tiedostoa säätää, voit hakea jonkin sanan sisältäviä tiedostoja: <tt>grep --recursive "localdomain" /etc</tt>
# Komennoilla <tt>[[who]]</tt> ja <tt>w</tt> saat tietoa järjestelmää parhaillaan käyttävistä. Esimerkiksi <tt>w -s</tt> näyttää kätevässä muodossa kuka tekee mitäkin.
# Komennoilla <tt>[[who]]</tt> ja <tt>w</tt> saat tietoa järjestelmää parhaillaan käyttävistä. Esimerkiksi <tt>w -s</tt> näyttää kätevässä muodossa kuka tekee mitäkin.
# Komennolla <tt>[[wall]] 'Linux on cool!'</tt> voit lähettää viestisi kaikkien koneen käyttäjien ruudulle.
# Komennolla <tt>[[wall]] 'Linux on cool!'</tt> voit lähettää viestisi kaikkien koneen käyttäjien ruudulle.
# <tt>echo 'Linux on cool!' | write maija</tt> taas kertoo saman viestin ainoastaan Maijalle.
# <tt>echo 'Linux on cool!' | write maija</tt> taas kertoo saman viestin ainoastaan Maijalle.
# Komennolla <tt>nohup jokukomento >& lokitiedosto &</tt> saat komennon jäämään tausta-ajoon niin, että voit itse lopettaa yhteyden ja komento jää suoritettavaksi.
# <tt>[[who]] mom loves</tt> tulostaa käyttäjätunnuksesi, käyttämäsi konsolin ja sisäänkirjautumisajan.
# Komennolla <tt>[[ed]] tiedostonnimi</tt> saat avattua tehokkaan ja monipuolisen, mutta resursseja säästeliäästi käyttävän editorin. Lisätietoa edistä
# <tt>who | [[cut]] -d ' ' -f 1 | [[sort]] | [[uniq]] | tr -d ' ' | [[finger]] -s -m | cut -c 11-27 | sort | uniq</tt> kertoo keitä koneelle on kirjautunut. Sama paikallista /etc/passwd -tiedostoa käyttäen on monimutkaisempi: <tt>who | cut -d ' ' -f 1 | sort | uniq | [[tr]] -d ' ' | [[xargs]] -n 1 [[echo]] "^" | [[colrm]] 2 2 | [[grep]] -f - /etc/passwd | cut -d ':' -f 5</tt>
# <tt>eject</tt> poistaa CD-levyn asemasta. <tt>eject -t</tt> vetää levyn sisään.
# Komento <tt>[[users]]|[[tr]] ' ' '\n'|[[uniq]]|[[wc]] -l</tt> kertoo kuinka monta erinimistä käyttäjää koneelle on kirjautunut.  
# Komento history tulostaa komentohistorian.
# Haluatko varmasti hyvän salasanan? Sano <tt>[[head]] -c 6 /dev/random | mimencode</tt> tai <tt>[[head]] -c 6 /dev/random | base64</tt>
# Musa soi komentoriviltäkin. <tt>playmidi</tt> soittaa midejä, <tt>play</tt> soittaa monenlaisia ääniformaatteja. <tt>mpg123</tt> soittaa MP3-tiedostoja.
 
# <tt>[[killall]] vi</tt> lopettaa kaikki ajossa olevat vi-ohjelmat.
==Laitteisto==
# <tt>[[sort]] tiedosto | uniq</tt> aakkostaa tiedoston rivit ja poistaa moneen kertaan esiintyvät rivit. <tt>sort tiedosto | uniq -d</tt> näyttää vain kahteen tai useampaan kertaan esiintyvät rivit.
# <tt>[[eject]]</tt> poistaa CD-levyn asemasta. <tt>eject -t</tt> vetää levyn sisään.
# <tt>dirname /joku/polku/tiedosto</tt> palauttaa arvon "/joku/polku". <tt>basename /joku/polku/tiedosto</tt> palauttaa arvon "tiedosto".
# Tulostuskin onnistuu komentoriviltä, kokeile vaikka <tt>[[lpr]] jokudoku.txt tai [[cal]] -my | lpr</tt>
# <tt>[[tac]] tiedostonnimi</tt> tulostaa tiedoston rivi kerrallaan alusta loppuun. <tt>rev tiedostonnimi</tt> tulostaa jokaisen rivin väärinpäin, ja <tt>rev tiedostonnimi | tac</tt> tulostaa koko tiedoston väärinpäin.
#<tt>[[gphoto]]2 -P</tt> kopioi kaikki digikamerasi kuvat nykyiseen työhakemistoon. Toiminto edellyttää, että GPhoto-ajuri tukee kameraasi (eli että kamera ei esimerkiksi toimi [[Usb-muisti|USB-massamuisti]]na)
# <tt>[[top]]</tt> näyttää jatkuvasti päivittyvän listan ajossa olevista ohjelmista. Painamalla h-kirjainta saat ohjeen käytössä olevista komennoista. q-kirjaimella pääset pois ohjelmasta.
# <tt>[[volname]]</tt> kertoo CD-asemassa olevan levyn nimen.
# <tt>[[volname]]</tt> kertoo CD-asemassa olevan levyn nimen.
# <tt>[[cat]] tiedostonnimi | while read; do echo $REPLY; sleep 5; done</tt> tulostaa tiedoston rivi kerrallaan viiden sekunnin välein.
 
# Tervehdyksen pienellä viiveellä saa näin: <tt>temp=$IFS; IFS=$''; echo "Hei kaikki" | while read -n 1; do echo -n $REPLY; usleep 100000; done; IFS=$temp</tt>
==Tiedostojen ja syötteiden muokkaus==
# Komennolla <tt>yes</tt> voit tulostaa y-kirjaimia esim. putkessa ohjelmalle, joka kyselee liikaa "Oletko aivan varma?". <tt>yes n</tt> tulostaa n-kirjaimia ja <tt>yes moro</tt> tervehtii käyttäjää ad infinitum.
# Kaikkiin html-tiedostoihin saat LANG-attribuutin seuraavasti: <tt>find . -name "*.html" -print | [[xargs]] [[perl]] -e 's/<HTML>/<HTML LANG="fi">/gi' -p -i.bak</tt>
# Tulostuskin onnistuu komentoriviltä, kokeile vaikka <tt>lpr jokudoku.txt tai [[cal]] | lpr</tt>
# Komennolla <tt>[[ed]] tiedostonnimi</tt> saat avattua tehokkaan ja monipuolisen, mutta resursseja säästeliäästi käyttävän editorin.
# Kun tehdään, niin tehdään kunnolla. Kun tehdään kalenteri kunnolla, niin huomioidaan juliaanisen kalenterin vaihtuminen gregoriaaniseen. Kokeile: <tt>[[cal]] 9 1752</tt>
# <tt>[[tr]]</tt> -komennolla voit muuttaa merkkejä, kokeile vaikka: <tt>echo kanalassa | tr a b</tt>.
# tr:llä voi myös poistaa merkkejä. Sano vaikka <tt>cat tiedosto | tr -d " "</tt>
# <tt>[[sort]] tiedosto | [[uniq]]</tt> aakkostaa tiedoston rivit ja poistaa moneen kertaan esiintyvät rivit. <tt>[[sort]] tiedosto | uniq -d</tt> näyttää vain kahteen tai useampaan kertaan esiintyvät rivit.
# Rikoit rivinvaihdot kun siirsit tekstiä Windows/DOS- tai Mac-koneelta Linuxiin? <tt>dos2unix</tt> ja <tt>mac2unix</tt> -komennot auttavat.
# Komennolla <tt>[[cut]] -d ' ' -f 2</tt> tiedostonnimi voit tulostaa tiedoston jokaisen rivin toisen sanan.
# <tt>[[tac]] tiedostonnimi</tt> tulostaa tiedoston rivi kerrallaan lopusta alkuun. <tt>[[rev]] tiedostonnimi</tt> tulostaa jokaisen rivin väärinpäin, ja <tt>rev tiedostonnimi | tac</tt> tulostaa koko tiedoston väärinpäin.
#<nowiki>WWW-sivuston kaikkien .html -sivujen META KEYWORDS -tageista saa helposti sivulistan tällä komennolla
#<nowiki>WWW-sivuston kaikkien .html -sivujen META KEYWORDS -tageista saa helposti sivulistan tällä komennolla
       find . -type f -name "*.html" | while read a; do grep --ignore-case "<META NAME=\"keywords\" CONTENT=\".*\">" $a | cut -f 4 -d "\"" | dd conv=lcase | tr "," "\n" | while read; do echo $a >> $REPLY.hakusana; done; done && ls *.hakusana | while read a; do h=`echo $a | cut -f 1 -d "."`; echo "<H2>$h</H2>"; cat $a | cut -b 3- | while read; do echo "<A HREF=\"$REPLY\">`grep --ignore-case "<title>.*</title>" $REPLY | cut -f 2 -d ">" | cut -f 1 -d "<"`</A>"; done; done && rm *.hakusana
       find . -type f -name "*.html" | while read a; do grep --ignore-case "<META NAME=\"keywords\" CONTENT=\".*\">" $a | cut -f 4 -d "\"" | dd conv=lcase | tr "," "\n" | while read; do echo $a >> $REPLY.hakusana; done; done && ls *.hakusana | while read a; do h=`echo $a | cut -f 1 -d "."`; echo "<H2>$h</H2>"; cat $a | cut -b 3- | while read; do echo "<A HREF=\"$REPLY\">`grep --ignore-case "<title>.*</title>" $REPLY | cut -f 2 -d ">" | cut -f 1 -d "<"`</A>"; done; done && rm *.hakusana
</nowiki>
</nowiki>
# Tiedoston voi jakaa osiin [[split]]-komennolla. Kokeile esim. <tt>split -b 10k jokutiedosto</tt>
# Kaikki ne tiedoston rivit, joissa ei esiinny merkkijonoa "kissa" löydät komennolla <tt>grep -v kissa tiedostonnimi</tt> . Jos taas haluat poistaa vain sanan "kissa" etkä esim. sanaa "takissani" sisältävät rivit, sano <tt>grep -v -w kissa tiedostonnimi</tt>
# <tt>tail -f /var/log/messages</tt> näyttää ensin tiedoston lopun ja sitten jatkuvasti tiedostoon tulevat uudet rivit.
# <tt>head -5 tiedostonnimi</tt> tulostaa tiedoston viisi ensimmäistä riviä. <tt>head -c 5 tiedostonnimi</tt> tulostaa viisi ensimmäistä merkkiä. <tt>tail -5 tiedostonnimi</tt> ja <tt>tail -c 5 tiedostonnimi</tt> toimivat vastaavasti.
# <tt>[[cat]] --number tiedostonnimi</tt> tulostaa tiedoston rivit numeroituna.
# Virheilmoituksetkin (STDERR) saa ohjattua tiedostoon. Kokeile esim. <tt>find hakemistojotaeiole >& find-tuloste.txt</tt>
# [[cmp]] tulostaa tiedostojen eroavan kohdan. Käyttökelpoinen myös skripteissä, esim. <tt>cmp -s tiedosto1 tiedosto2 || echo "Tiedostot eroavat"</tt>
# Jos tiedostossa on niin pitkät rivit että ne menevät ruudun ulkopuolelle oikeasta laidasta esim. <tt>less tiedosto</tt> niin voit käyttää [[fmt]]-komentoa <tt>fmt tiedosto | less</tt>.
# [[strings]] -komennolla voit hakea merkkijonoja binäärimössöstä. Esim. <tt>strings jokudoku.doc</tt> näyttää yleensä Word-documentin sisältämän tekstin jotenkin luettavassa muodossa.
# <tt>[[pdftotext]] tiedosto.pdf</tt> tekee tiedoston tiedosto.txt, joka hyvällä onnella sisältää PDF:n sisältämän tekstin.
# [[bzcat]] ja [[zcat]]-komennoilla voit tulostaa pakatun tiedoston sisällön näytölle tai tiedostoon pakettia purkamatta. bzcat ~/patch.bz2 | [[patch]] -p1 on hyvä esimerkki tästä. Myös esimerkiksi [[zless]] ja [[zgrep]] toimivat.
# Tietyn numeron omaavan rivin saa tulostettua syötteeestä tai tiedostosta [[awk]]-ohjelman avulla: <tt>cat tiedosto | awk "FNR == 45"</tt> (tässä rivi 45).
==Kuvat ja multimedia==
# Musa soi komentoriviltäkin. <tt>[[playmidi]]</tt> soittaa midejä, <tt>[[play]]</tt> soittaa monenlaisia ääniformaatteja. <tt>[[mpg123]]</tt> soittaa [[MP3]]-tiedostoja.
# Kuviakin voi käsitellä komentoriviltä. Kokeile vaikka <tt>identify jokukuva.gif</tt> (Identify kuuluu [[ImageMagick]]-pakettiin)
# [[Mplayer|Mplayerilla]] voit helposti kopioda Realplayer-streamia koneellesi tiedostoon. Tämä onnistuu komennolla <tt>mplayer -dumpstream URL_LÄHTEESEEN -dumpfile KOHDETIEDOSTO_LEVYLLÄ</tt>. Real-koodekit on tietysti oltava asennettuna.
#Antamalla komennon <tt>mplayer filmi.ogg</tt> tekstikonsolissa voit katsella videota filmi.ogg
==Skriptaus==
''Pääartikkeli [[Bash-skriptaus]]''
# Eräs tapa kokeilla koneen ja komentotulkin nopeutta on laskea Fibonaccin lukuja: tee tiedosto fib.sh, jossa on vain rivi <tt>if (($1 < 2)); then echo 1; else a=`./fib.sh $1-1`; b=`./fib.sh $1-2`; echo $((a+b)); fi</tt>
# Eräs tapa kokeilla koneen ja komentotulkin nopeutta on laskea Fibonaccin lukuja: tee tiedosto fib.sh, jossa on vain rivi <tt>if (($1 < 2)); then echo 1; else a=`./fib.sh $1-1`; b=`./fib.sh $1-2`; echo $((a+b)); fi</tt>
# Komennolla <tt>[[pwd]] -P</tt> saat selville missä hakemistossa "oikeasti" olet, eli symbolisten linkkien kautta kuljettu polku jätetään huomiotta.
# Yksinkertainen valikko on helppo tehdä: <tt>valinta=3; echo "1=[[pwd]] 2=[[ls]] 3=[[lynx]]"; [[read]] -t 5 valinta; case $valinta in 1) pwd;; 2) ls;; 3) lynx;; esac</tt> Jos käyttäjä ei viidessä sekunnissa valitse mitään, käynnistetään lynx.
# Yksinkertainen valikko on helppo tehdä: <tt>valinta=3; echo "1=pwd 2=ls 3=lynx"; read -t 5 valinta; case $valinta in 1) pwd;; 2) ls;; 3) lynx;; esac</tt> Jos käyttäjä ei viidessä sekunnissa valitse mitään, käynnistetään lynx.
# Tällaisenkin valikon voi tehdä: <tt>sivut=("evl.fi" "vapaa-ajattelijat.fi" "dilbert.com"); echo "0=evl, 1=vaparit, 2=dilbert"; read valinta; lynx <nowiki>http://www.${sivut[$valinta]}</nowiki></tt>
# Tällaisenkin valikon voi tehdä: <tt>sivut=("evl.fi" "vapaa-ajattelijat.fi" "dilbert.com"); echo "0=evl, 1=vaparit, 2=dilbert"; read valinta; lynx http://www.${sivut[$valinta]}</tt>
# <tt>[[cat]] tiedostonnimi | while read; do echo $REPLY; sleep 5; done</tt> tulostaa tiedoston rivi kerrallaan viiden sekunnin välein.
# Tervehdyksen pienellä viiveellä saa näin: <tt>temp=$IFS; IFS=$''; echo "Hei kaikki" | while read -n 1; do echo -n $REPLY; [[usleep]] 100000; done; IFS=$temp</tt>
# Näissä vinkeissä on kerrottu miten case ja if toimivat, miten komentoja putkitetaan ym. Sanomalla <tt>man bash</tt> saat pitkän ohjesivun näistä ja monesta muustakin asiasta.
# Näissä vinkeissä on kerrottu miten case ja if toimivat, miten komentoja putkitetaan ym. Sanomalla <tt>man bash</tt> saat pitkän ohjesivun näistä ja monesta muustakin asiasta.
# Jos locale-asetus on kunnossa (eli olet mm. sanonut export LANG=fi_FI , voit katsoa koska tiedostoa teksti.txt on viimeksi muutettu sanomalla <tt>date --reference=teksti.txt "+%Ana %Bn %e. päivä"</tt>
# Jos teet kotihakemistosi alle hakemiston nimeltä bin , voit siirtää sinne tekemäsi skriptit ym. ja käyttää niitä antamatta koko polkua, ts. aivan kuten koneessasi valmiina olevia ohjelmiakin. Jos tämä ei näytä toimivan, lisää rivi <tt>[[export]] [[PATH]]="$PATH:$HOME/bin"</tt> [[komentotulkki]]si käynnistystiedostoon (esim. .[[bash]]rc tai .[[zsh]]rc)
# Jos tiedosto nimikunta sisältää rivit Jori TAB Tampere, Laura TAB Tampere ja Åke TAB Tukholma, ja tiedosto kuntamaa rivit Tampere TAB Suomi ja Tukholma TAB Ruotsi, voit katsoa missä maassa ihmiset asuvat komennolla <tt>join -o 1.1,2.2 -1 2 nimikunta kuntamaa</tt>
# Jos laitat skriptit hakemistoon /usr/local/bin , niitä voivat käyttää kaikki koneen käyttäjät.
# Komento <tt>[[touch]] tiedostonnimi</tt> on helpoin tapa luoda tyhjä tiedosto. Samalla touch-komennolla voi myös muuttaa tiedostojen muokkauspäivämääriä, kokeile esim. <tt>touch --date 2002-04-01 aprillia</tt>
 
# <tt>[[uname]]</tt> on joskus kätevä, erityisesti komento <tt>uname -a</tt> kertoo ytimen version ym. mahdollisesti kiinnostavaa.
==Muuta hyödyllistä==
# Tiedoston voi jakaa osiin split-komennolla. Kokeile esim. <tt>split -b 10k jokutiedosto</tt>
# Komennolla [[bc]] -l saat pienen laskimen. Käytettävissä on normaalit laskutoimitukset ja lisäksi voit sijoittaa arvoja muuttujiin basic-kielen tapaan.
# Komennolla <tt>seq 10 -3 1</tt> voit tulostaa luvut 10, 7, 4 ja 1.
# bc käyttää samaa [[readline]]-kirjastoa kuin esimerkiksi bash-komentotulkki, joten samat Ctrl-R, Ctrl-A ja Ctrl-E toimivat siinäkin. Samalla tavoin toimii myös mm. matriisilaskennan ohjelma [[Octave]].
# <tt>[[clear]]</tt> tyhjentää kuvaruudun. Kätevä joissakin skripteissä.
# PostScript-tiedostoja voi käsitellä komentorivillä. Esim. <tt>psnup -2 dokumentti.ps tiivis.ps</tt> tekee tulostusta varten version jossa kaksi sivua on laitettu yhdelle sivulle.
# <tt>[[pdftotext]] tiedosto.pdf</tt> tekee tiedoston tiedosto.txt, joka hyvällä onnella sisältää PDF:n sisältämän tekstin.
# <tt>[[wc]] *.txt</tt> antaa listan hakemiston sisältämistä .txt -päätteisistä tiedostoista ja jokaisesta rivien, sanojen ja merkkien lukumäärän.
# <tt>[[su]]</tt> -komennolla voit vaihtaa lennosta toiseksi käyttäjäksi. <tt>su -</tt> vaihtaa rootiksi ja root voi sanoa <tt>su - ville</tt> päästääkseen kokeilemaan Villen tunnusta ilman salasanaa.
# Komennolla <tt>[[yes]]</tt> voit tulostaa y-kirjaimia esim. putkessa ohjelmalle, joka kyselee liikaa "Oletko aivan varma?". <tt>yes n</tt> tulostaa n-kirjaimia ja <tt>yes moro</tt> tervehtii käyttäjää ad infinitum.
# <tt>[[wget]] --recursive http://www.flug.fi/</tt> imuroi koko Flug ry:n WWW-sivuston omalle koneelle.
# Kun tehdään, niin tehdään kunnolla. Kun tehdään kalenteri kunnolla, niin huomioidaan juliaanisen kalenterin vaihtuminen gregoriaaniseen. Kokeile: <tt>[[cal]] 9 1752</tt>
# Jos tiedosto nimikunta sisältää rivit Jori TAB Tampere, Laura TAB Tampere ja Åke TAB Tukholma, ja tiedosto kuntamaa rivit Tampere TAB Suomi ja Tukholma TAB Ruotsi, voit katsoa missä maassa ihmiset asuvat komennolla <tt>[[join]] -o 1.1,2.2 -1 2 nimikunta kuntamaa</tt>
# Komennolla <tt>[[seq]] 10 -3 1</tt> voit tulostaa luvut 10, 7, 4 ja 1.
# <tt>[[Cowsay]]n</tt> avulla saat aikaan hienoja tulostuksia konsoliin. Kokeile vaikka <tt>[[uname]] -a | cowsay -f daemon</tt>.
# <tt>[[watch]] -n 60 --differences ls /tmp</tt> tulostaa minuutin välein listauksen /tmp -hakemistosta ja näyttää korostettuna muuttuneet tiedot.
# <tt>[[watch]] -n 60 --differences ls /tmp</tt> tulostaa minuutin välein listauksen /tmp -hakemistosta ja näyttää korostettuna muuttuneet tiedot.
# Jos teet kotihakemistosi alle hakemiston nimeltä bin , voit siirtää sinne tekemäsi skriptit ym. ja käyttää niitä antamatta koko polkua, ts. aivan kuten koneessasi valmiina olevia ohjelmiakin.
# <tt>[[history]] | [[awk]] '{print $2}' | awk 'BEGIN {FS="|"} {print $1}' | [[sort]] | [[uniq]] -c | sort -nr | [[head]] -n 10</tt> listaa 10 useimmiten käyttämääsi komentoa [[bash]]-komentotulkissa. [[Zsh]]:ssa sama toimii kirjoittamalla komento <tt>history</tt> muodossa <tt>history 1</tt>.
# Jos laitat skriptit hakemistoon /usr/local/bin , niitä voivat käyttää kaikki koneen käyttäjät.
# Haluatko kuluvan päivän esim. varmuuskopion nimeen? Kokeile tätä: <tt>[[tar]] cf /root/varmistus-home`date +%Y-%m-%d`</tt> Tuo aakkostuukin oikein.
# cmp tulostaa tiedostojen eroavan kohdan. Käyttökelpoinen myös skripteissä, esim. <tt>cmp -s tiedosto1 tiedosto2 || echo "Tiedostot eroavat"</tt>
# <tt>[[who]] mom loves</tt> tulostaa käyttäjätunnuksesi, käyttämäsi konsolin ja sisäänkirjautumisajan.
# <tt>who | cut -d ' ' -f 1 | sort | uniq | tr -d ' ' | finger -s -m | cut -c 11-27 | sort | uniq</tt> kertoo keitä koneelle on kirjautunut. Sama paikallista /etc/passwd -tiedostoa käyttäen on monimutkaisempi: <tt>who | cut -d ' ' -f 1 | sort | uniq | tr -d ' ' | xargs -n 1 echo "^" | colrm 2 2 | grep -f - /etc/passwd | cut -d ':' -f 5</tt>
# Jos olet tehnyt aliaksen, jolla on sama nimi kuin komennolla (<tt>alias ls='ls --color=tty'</tt>, esimerkiksi), mutta haluat suorittaa poikkeuksellisesti sen alkuperäisen, kirjoita komento muodossa <tt>\ls</tt>.
# Jos tiedostossa on niin pitkät rivit että ne menevät ruudun ulkopuolelle oikeasta laidasta esim. <tt>less tiedosto</tt> niin voit käyttää fmt-komentoa <tt>fmt tiedosto | less</tt>.
# Jos haluat poistaa tiedoston jonka nimi on -f, se onnistuu kätevimmin rm -- -f komennolla.
# Myös tiedostoihin voi tehdä tiedostojärjestelmän.
# Levyille voi tehdä tiedostojärjestelmän myös ilman partitiointia.
# bzcat ja zcat-komennoilla voit katsoa pakattua tiedostoa, sitä purkamatta. bzcat ~/patch.bz2 | patch -p1 on hyvä esimerkki tästä.
# Jos siirryt <tt>cd</tt>-komennolla uuteen hakemistoon ja haluat jostakin syystä palata takaisin siihen aikaisempaan, voit tehdä sen komennolla <tt>cd -</tt>.
# Voit uudelleenkäyttää komennoille antamiasi parametrejä <tt>"ESC ."</tt>-näppäinyhdistelmällä. Esim. jos luit pitkää <tt>/home/pena/file</tt>-tiedostoa komennolla <tt>"cat /home/pena/file"</tt>, niin kokeile <tt>"less ESC ."</tt>.
# [[Mplayer|Mplayerilla]] voit helposti kopioda Realplayer-streamia koneellesi tiedostoon. Tämä onnistuu komennolla <tt>mplayer -dumpstream URL_LÄHTEESEEN -dumpfile KOHDETIEDOSTO_LEVYLLÄ</tt>. Real-koodekit on tietysti oltava asennettuna.
# Komennolla <tt>kill `pidof mplayer`</tt> voit kätevästi tappaa mplayerin selvittämättä pid:iä.
# <tt>Cowsayn</tt> avulla saat aikaan hienoja tulostuksia konsoliin. Kokeile vaikka <tt>uname -a | cowsay -f daemon</tt>.
# TABilla voi antaa komentotulkin täydentää loput komennosta tai tiedostonimestä. Mikäli vaihtoehtoja on useampia, ne saa näkyviin toisella painalluksella.


[[Luokka:Vinkit]]
[[Luokka:Vinkit]]
[[Luokka:Komentorivi]]
[[Luokka:Komentorivi]]
Rekisteröitymätön käyttäjä

Navigointivalikko