Vinkkejä komentoriveille

Pärsereikä

Ajattelin että jospa kouliintuneet käyttäjät antaisivat hieman vinkkejä meille vähemmän osaaville miten komentorivityötä voi helpottaa. Aloitan itse ketjun näin;

1. Kaikkea ei tarvitse kirjoittaa aina uudestaan sillä komentorivihistorian saa näkyviin komennolla " history ". Komennot on numeroitu suoritusjärjestyksessä ja jos haluat ajaa jonkun pitkän komennon menneisyydestä katso sen numero ja kirjoita se huutomerkin kera esim. " !213 " jolloin ko. komento ajetaan uudestaan. Ja esim. " !make " ajaa komentohistoriassa viimeksi käytetyn make-alkuisen komennon uudestaan.

2. Opettele käyttämään aliaksia, alias luodaan näin " alias imuri='cd /home/koti/lataus | ls' jolloin komentoriville syöte " imuri " siirtää sinut hakemistoon lataus ja tulostaa sisällön näytölle. Itselläni firefox siis lataa netistä tuon nimiseen kansioon. Pelkkä " alias " tulostaa käytössä olevat aliakset näytölle. Kotihakemistossa joutuu kuitenkin hieman muokkaamaan .bashrc -tiedostoa ja luomaan .bash_aliases -nimisen tekstitiedoston ellei sitä ole, muutoin aliakset ovat voimassa vain kunnes komentorivi-istunto päättyy. Huomaa aliaksen luomislauseessa sanojen välit tai niiden puute!

Tässä pari esimerkkiä miten töitä voi keventää, esitelkääpä lisää miten hoidatte hommia.

17

1093

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 654654

      toinen näppärä juttu on kun näppäilee "uparrow" eli nuoli ylös -näppäintä, jolla saa edellisen komennon, ja taas uusiksi näpäyttämällä sitä edellisen, jne.

    • Pärsereikä

      Että jos oikeasti tulee mieleen joitakin pikku vinkkejä joita itsekin käytätte, jotka nopeuttavat/yksinkertaistavat tavallisia puuhia. Manuaaleja lukemalla tietysti oppii mutta hain niinkun käyttäjien omia mielipiteitä siitä mitä oikopolkuja tulee käytettyä.

      Tietysti ongelma on se että ne jotka osaavat hyödyntää tehokkaasti ominaisuuksia eivät sitä itse tajua tai toisinpäin, eivät ymmärrä miten työlästä komentorivieditointi on aloittelijoille.

      Yhdistäen/soveltaen aloitussäiettä, luo alias " alias h='history' jolloin saat komentohistorian näytölle pelkästään iskemällä " h " . Kunhan historia alkaa olemaan 500 rivin pituinen niin vanhempien pitkien komentojen kaiveleminen on taatusti nopeampaa kuin nuolinäppäilemällä hakeminen.

      • niksi

        Pistäppä seuraavat kaksi bind-riviä .bashrc-tiedostoosi:

        bind '"\e[A": history-search-backward'
        bind '"\e[B": history-search-forward'

        Ota nuo muutokset käyttöön vaikkapa uudella komentorivi-ikkunalla.

        Huomaat, että nuolinäppäimillä löytää aiemmat komennot tosi nopeasti! Kokeile vaikka seuraavaa: kirjoita komentoriville vanhan komennon pari ekaa merkkiä ja sitten nuoli ylös tai alas...


      • Pärsereikä
        niksi kirjoitti:

        Pistäppä seuraavat kaksi bind-riviä .bashrc-tiedostoosi:

        bind '"\e[A": history-search-backward'
        bind '"\e[B": history-search-forward'

        Ota nuo muutokset käyttöön vaikkapa uudella komentorivi-ikkunalla.

        Huomaat, että nuolinäppäimillä löytää aiemmat komennot tosi nopeasti! Kokeile vaikka seuraavaa: kirjoita komentoriville vanhan komennon pari ekaa merkkiä ja sitten nuoli ylös tai alas...

        Hienoa, juuri tällaistä mä odottelin. Kokeilen hyvinkin pian, tätä ominaisuutta en edes muistanut.

        Entäpä tämä; Lyö mikä tahansa kirjain tai kirjainyhdistelmä ja paina TAB (tai 2xTAB) niin saat tulosteen kaikista kirjainyhdistelmän edellyttämistä komennoista jotka ovat käytettävissä.


    • bash-funktio

      .bashrc-tiedostoon voit kirjoittaa myös funktioita aliasten lisäksi. Funktiot ovat vähän monipuolisempia kuin aliakset.

      Kokeile esim. seuraavaa:

      em()
      {
      emacs $* &
      }

      Tuolla saat emacsin käynnistymään uuteen ikkunaan vaikkapa:

      em teksti.txt

      • Pärsereikä

        Jos teillä on lisää tällaisia yksinkertaisia funktioita niin antaakapa palaa, näistä on monelle lukijalle varmasti paljon hyötyä! Komentoeditoriahan oppii käyttämään oikeasti vain juuri näiden kautta ja kynnys kokeilemiseen on taatusti matalampi kun saa vähän esimerkkiä alkuun. Helppoja tietysti, ei mitään sivun pituisia skriptejä heh. Kunhan pääsee alkuun niin tunnetusti nälkä kasvaa syödessä ja kun motivoituu niin jaksaa jo itsekin tutkia manuskoja tarkemmin, lisäksi kaikki esimerkit luovat kokemuspohjaa joita voi käyttää apuna.


      • tässä hei
        Pärsereikä kirjoitti:

        Jos teillä on lisää tällaisia yksinkertaisia funktioita niin antaakapa palaa, näistä on monelle lukijalle varmasti paljon hyötyä! Komentoeditoriahan oppii käyttämään oikeasti vain juuri näiden kautta ja kynnys kokeilemiseen on taatusti matalampi kun saa vähän esimerkkiä alkuun. Helppoja tietysti, ei mitään sivun pituisia skriptejä heh. Kunhan pääsee alkuun niin tunnetusti nälkä kasvaa syödessä ja kun motivoituu niin jaksaa jo itsekin tutkia manuskoja tarkemmin, lisäksi kaikki esimerkit luovat kokemuspohjaa joita voi käyttää apuna.

        Pärsereiälle terveisiä, tuo on perhanan hyvä homma minkä alotit ei tuollaisia kikkakolmosia tietäis olevan olemassakaan ellei niitä täältä lukisi.


      • Pärsereikä

        >>Funktiot ovat vähän monipuolisempia kuin aliakset.

        Todellakin, funtiot vastaavat jonkin asteista ohjelmointia ja rajana on vain mielikuvitus. Tarkoitus on kuitenkin hyödyttää "tavallisia" käyttäjiä joilla ei yleensä ole valmiuksia/haluja opetella "c-ohjelmointia" joten aliakset ovat yksinkertaisempina parempia. Tietenkin YKSINKERTAISET funktiot käyvät yhtä hyvin.

        Kuitenkin, tässä yksi alias vaikkapa varmuuskopiointiin eli tämä luo toiselle levyosiolle pakatun arkiston omasta kotihakemistosta; alias varmistakoti='echo "VARMUUSKOPIOINTI KÄYNNISSÄ!!" && sudo tar czf /omalevy2/kotikopio.tar.gz /home/koti && echo "VALMIS!"'

        Tämän toimii vain manuaalisesti sillä se pyytää root-salasanaa eli ei voi ajaa cronilla ajastettuna. Tai siis mä en osaa sulloa sitä salasanaa tuohon sekaan.


      • Pärsereikä
        Pärsereikä kirjoitti:

        >>Funktiot ovat vähän monipuolisempia kuin aliakset.

        Todellakin, funtiot vastaavat jonkin asteista ohjelmointia ja rajana on vain mielikuvitus. Tarkoitus on kuitenkin hyödyttää "tavallisia" käyttäjiä joilla ei yleensä ole valmiuksia/haluja opetella "c-ohjelmointia" joten aliakset ovat yksinkertaisempina parempia. Tietenkin YKSINKERTAISET funktiot käyvät yhtä hyvin.

        Kuitenkin, tässä yksi alias vaikkapa varmuuskopiointiin eli tämä luo toiselle levyosiolle pakatun arkiston omasta kotihakemistosta; alias varmistakoti='echo "VARMUUSKOPIOINTI KÄYNNISSÄ!!" && sudo tar czf /omalevy2/kotikopio.tar.gz /home/koti && echo "VALMIS!"'

        Tämän toimii vain manuaalisesti sillä se pyytää root-salasanaa eli ei voi ajaa cronilla ajastettuna. Tai siis mä en osaa sulloa sitä salasanaa tuohon sekaan.

        Niin mitä se oikein tekikään.. echo eli kaiuta = näyttää tekstin "VARMUUSKOPIOINTI KÄYNNISSÄ!" ja sen jälkeen rootina (sudo) tar-apuohjelma arkistoi tiedostoksi /omalevy2/kotikopio.tar.gz oman kotihakemiston /home/koti. tar käyttää parametreja czf eli -c luo tiedosto -z käytä gzip-pakkausta ja -f arkistoi ja lopuksi kaiuttaa (echo) että homma on "VALMIS". && tarkoittaa siis loogista "JA" sanaa.


      • Pärsereikä
        tässä hei kirjoitti:

        Pärsereiälle terveisiä, tuo on perhanan hyvä homma minkä alotit ei tuollaisia kikkakolmosia tietäis olevan olemassakaan ellei niitä täältä lukisi.

        Kiitän. Juuri tämän vuoksi halusin tämän aloittaa.. että joku saisi ideoita ja oppia miten edetä linuxin kanssa. Komentoeditori on oikeasti aivan äärettömän tehokas työkalu jos sitä osaa käyttää. Sen takia olisi suotavaa/mukavaa että tehokäyttäjät kertoisivat näitä vinkkejä miten homma hoidetaan oikein. Ei kai ihan kaikea tarvi itse opiskella? Sen takia kai tämä palstakin on olemassa että saadaan apuja? Hyödyttää linuxia ja linux-käyttäjiä?


      • hoitaa seuraavasti
        Pärsereikä kirjoitti:

        >>Funktiot ovat vähän monipuolisempia kuin aliakset.

        Todellakin, funtiot vastaavat jonkin asteista ohjelmointia ja rajana on vain mielikuvitus. Tarkoitus on kuitenkin hyödyttää "tavallisia" käyttäjiä joilla ei yleensä ole valmiuksia/haluja opetella "c-ohjelmointia" joten aliakset ovat yksinkertaisempina parempia. Tietenkin YKSINKERTAISET funktiot käyvät yhtä hyvin.

        Kuitenkin, tässä yksi alias vaikkapa varmuuskopiointiin eli tämä luo toiselle levyosiolle pakatun arkiston omasta kotihakemistosta; alias varmistakoti='echo "VARMUUSKOPIOINTI KÄYNNISSÄ!!" && sudo tar czf /omalevy2/kotikopio.tar.gz /home/koti && echo "VALMIS!"'

        Tämän toimii vain manuaalisesti sillä se pyytää root-salasanaa eli ei voi ajaa cronilla ajastettuna. Tai siis mä en osaa sulloa sitä salasanaa tuohon sekaan.

        1) kirjoita tiedosto esim. /root/bu.bash, jonka sisältönä on aliaksesi sisältö ilman sudo-sanaa

        2) katso man 5 crontab:sta apuja. Komenna roottina

        crontab -e

        ja kirjoita editoriin jotain seuraavaa:

        # run five minutes after midnight, every day
        5 0 * * * /root/bu.bash >> /root/bu.log 2>&1

        ja sulje editori.

        3) huomaa kuinka varmuuskopiosi tulevat siististi joka yö.


    • jepjee

      Tabulaattorin käyttö täydentämään on myös mainio juttu. Siis kirjoita pari ensimmäistä kirjainta ja tarjoa tabulaattoria, jos herjaa eli on useita vaihtoehtoja, kirjain lisää ja taas tab jne jne.

    • tipsejä taivaasta

      .bashrc-tiedostoon:

      alias mv='mv -i'
      alias cp='cp -i'
      alias rm='rm -i'

      tarvittaessa nuo oletukset voi ohittaa komentorivillä:

      rm -f *

      • sana.

        Tuota rm -f * ei aloittelijoiden pidä mennä kokeilemaan jos ei tiedä mitä on tekemässä.

        En ymmärrä mitä liikkuu tällaisten kieroilujen postaajien korvien välissä.


      • mitä ymmärrät
        sana. kirjoitti:

        Tuota rm -f * ei aloittelijoiden pidä mennä kokeilemaan jos ei tiedä mitä on tekemässä.

        En ymmärrä mitä liikkuu tällaisten kieroilujen postaajien korvien välissä.

        se lienee paljon helpompaa.


    • Bash-shellissä on oletuksena sidottu ctrl-r aiempien komentojen hakemiseen:

      Esim. jos tyypillinen sessio menisi näin:

      @host 20:17:43 ~>man ls
      ...

      ...

      Ja sitten jossain vaiheessa haluat hakea viimeisimmän man-komennon, niin painaa ctrl-r ja alkaa kirjoittamaan osaa siitä aiemmasta komentorivistä, esim. kun alkaa kirjoittamaan "man ", niin todennäköisesti ensin löytynyt rivi on tuo "man ls".

      (reverse-i-search)`man': man ls

      Returnilla löytynyt rivi ajetaan. Jos haettu rivi ei ollut se, mitä haluttiin, niin voi painaa ctrl-r uudelleen tai kirjoittaa enemmän haettavasta rivistä.

      Aiemmin mainitut aliakset on myös kannattavaa opetella. Ne voi tietysti lisätä tiedostoon ~/.bashrc (joka siis käynnistetään ajettaessa aina bash, ks. man bash), mutta sen ylläpitäminen voi ajanmittaan käydä työlääksi. Itse tein tiedoston ~/.aliases (jonka jokaisella rivillä on samanlaiset aliakset kuin mitä lisättäisiin .bashrc:een, ali alias joku=jotain), jonka luen .bashrc:stä bashin komennolla source (source ~/.aliases). Source-komennolla on myös saman asian tekevä alias ".", eli ". ~/.aliases".

      Aliaksen käytön voi myös estää väliaikaisesti laittamalla rivin alkuun \:n, ja aliaksen voi poistaa käynnissä olevan komentotulkin ympäristöstä komennolla unalias, eli "unalias jokualias".

      Myös aiemmin mainitut funktiot ovat käteviä. Itse käytän toistuvasti bash-funktiota, joka kutsuu grepiä tietyillä optioilla ja annetulla parametrilla:

      ga ()
      {
      if [ -z "$1" ]; then
      echo "no args";
      return;
      fi;
      grep "$1" -ri --exclude=*.o --exclude=*.ko --exclude=*~ .
      }

      ga on funktio, joka etsii nykyisestä hakemistosta ja sen alihakemistoista (rekursiivisesti, -r) annettua merkkijonoa välittämättä isojen ja pienten kirjaimien rosta (-i). Niitä tiedostoja, jotka ovat muotoa *.o, *.ko tai *~ ei oteta mukaan hakuun. Käyttö on siis tyyliin "ga hakusana".

      Tästä päästäänkin toiseen asiaan, eli putkitusten käyttöön. Joskus tulostetta on niin paljon, ettei kaikki mahdu näytölle. "ga hakusana | less" pelastaa.
      Muutenkin putkitusten luovalla käytöllä saa tehtyä kaikkea hämärää tehokkasti ja helposti.

      Seuraava projekti tästä on opetella usein käytettyjä komentoja esim. mitä nyt hakemistojen /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin yms. varrelta löytyykään. Sitten vielä todo-listalle shelliskriptien tekeminen, niin sitten selviää jo aika pitkälle.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Miksi jollain jää "talvi päälle"

      Huvittaa kastoa ullkona jotain vahempaa äijää joka pukeutuu edelleen kun olisi +5 astetta lämmittä vaikka on helle keli
      Maailman menoa
      263
      2583
    2. Mitä et hyväksy miehessä/naisessa josta olet kiinnostunut?

      Itse en halua, että miehellä olisi lapsia!
      Ikävä
      192
      1652
    3. Se katse silloin

      Oli hetki, jolloin katseemme kohtasivat. Oli talvi vielä. Kerta toisensa jälkeen palaan tuohon jaettuun katseeseen. Tunt
      Ikävä
      59
      1434
    4. Tiesitkö? Farmi Suomi Kirsikka Simberg on tämän julkkisnaisen tytär - Katso tyrmäävät mallikuvat!

      Oho, aikamoinen ylläri. Tiesitkö?! Kirsikka Simberg on yksi tämän kauden Farmi Suomi -kisaajista. Hänellä ei ole tuttu t
      Suomalaiset julkkikset
      3
      1159
    5. Kaipaaville

      Kerro sun tunteesi ja ajatukset tähän jos et uskalla irl!
      Ikävä
      79
      1156
    6. Tuhdit oluet kauppoihin. Miksi vastustaa?

      8% oluet kauppoihin mutta mikä siinä on että osa politikoista vstustaa ? Kauppa kuitenkin hinnoittelee vahvan oluen ni
      Maailman menoa
      223
      1022
    7. Miten haluaisit

      Että reagoisin jos näkisin sinut nyt?
      Ikävä
      78
      990
    8. Sinua tulen kyllä ikävöimään pitkään nainen

      mutta oli pakko tehdä päätös oman mielenrauhan vuoksi. Toivottavasti saat elämältä kaiken mitä haluat.
      Ikävä
      45
      895
    9. Kohta me ei enää nähdä :(

      En pääse enää uppoutumaan silmiisi enkä kuunnella ihanaa ääntäsi. Elämä on pstä.
      Ikävä
      39
      729
    10. Kärsämäki rosvojen ja tuhopolttajien kylä?

      Poliisi ampui uhkaava miestä Kärsämäellä. Ja vasta joku poltti rivitalon. Mikä riivaa Kärsämäkisiä? Joko tuulimyllyjen
      Kärsämäki
      15
      720
    Aihe