Hyödyllisiä vinkkejä, osa bash

Jatkan tällä vinkkisarjaa, tällä kertaa vuorossa bash. Samoja ideoita voi koittaa soveltaa muihinkin shelleihin.

Ehkä tärkeimpiä shellin asetuksia on EDITOR-muuttuja:

export EDITOR='mate -w'

EDITOR-asetusta käyttävät muun muassa subversion ja git odottaessaan commit-viestiä tms.

export HISTCONTROL=erasedups
export HISTSIZE=10000
shopt -s histappend cdspell cmdhist histverify hostcomplete
bind Space:magic-space

Asetus erasedups kertoo bashille, että komentohistoriasta tulee säilyttää kutakin käskyä vain yksi kopio tallennetussa komentohistoriatiedostossa. Ainakaan itse en tule kaipaamaan tietoa montako kertaa ajoin ls joskus kauan sitten.

HISTSIZE kasvattaa historian koon oletuksesta 500 riviä 10 000 riviin. Levytila on halpaa ja jopa 10 000 rivillä tiedosto on tuskin juuri suurempi kuin 500 kt.

GNU readlinen käyttämään .inputrc-tiedostoon kannattaa lisätä seuraavat rivit:

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

Niiden avulla voi hakea komentohistoriasta kirjoittamalla käskyn alun ja painamalla nuolta ylöspäin tai alaspäin. Haku käyttää kirjoitettua alkua etuliitteenä.

Nämä Textmate-editorin blogikirjoituksen kommenteista apinoidut rivit tuovat käyttöön ylöspäin ja alaspäin nuolinäppäimille historiahaun. Näiden kanssa on mahdollista hakea komentohistoriasta kirjoittamalla käskyn alku ja käyttämällä ylös ja alas nuolinäppäimiä. Erittäin kätevä! Suosittelen erittäin lämpimästi.

Historian järkevät hakutoiminnot hyötyvät suunnattomasti, jos historiaa tallennetaan oletusta pidemmästi ja säilytetään paremmin (lisääminen ylikirjoituksen sijaan, duplikaattirivien poistaminen).

Kaikki esimerkkirivit voi kopioida shellin suorittamiin käynnistystiedostoihin. OS X:ssä olen käyttänyt tiedostoa .profile, Linuxeissa olen käyttänyt .bashrc-tiedostoa. Kommentoikaa viisaammat, mikä on oikea paikka asetuksille ja millä perusteella? En jaksanut tutkia kun nämäkin toimivat :)