Vinkkejä komentoriveille

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.
171215
Äänestä

Muut lukivat myös

Vastaukset 17

Vanhimmat

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.

Äänestä

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.

Äänestä
  • 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...

    Äänestä

  • 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ä.

    Äänestä

.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

Äänestä
  • 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.

    Äänestä

  • 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.

    Äänestä

  • >>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.

    Äänestä

  • 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.

    Äänestä

  • 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ä?

    Äänestä

  • 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ö.

    Äänestä

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.

Äänestä

.bashrc-tiedostoon:

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

tarvittaessa nuo oletukset voi ohittaa komentorivillä:

rm -f *

Äänestä
  • 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ä.

    Äänestä

  • 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.

    Äänestä

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.

Äänestä

Kommentoi aloitusta


Pärsereikä kirjoitti:

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.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu