Nämä on esitetty koodina jotta tekstin muotoilu säilyisi
Linuxin haku on monipuolinen ja senvuoksi vaikea hallita. Sen käyttö helpottuu kun määrää ettei se tulkitse erikoismerkkejä. Hakea voi vaikka järjestelmätiedostoista
mutta etsintää kyllä helpottaa jos etsit omasta kotikansiostasi. Sen käyttö on seuraavanlaista kun etsitään jotakin tiedostoissa olevasta tekstistä:
grep -hrF etsittävä mistä_etsitään Antaa tuloksenaan niiden tiedostojen nimien joukon joista etsitty löytyy. Esimerkiksi kun haetaan merkkiryhmää: [[ $1 ]] niin
tämä etsintä määrätään yksinkertaisesti : grep -hrF '[[ $1 ]]' /home/käyttäjänimi . Rajoittamattomana hakuna sama on:
grep -hrE '\[\[\ \$1\ \]\]' /home/käyttäjänimi .
grep -lrF etsittävä mistä_etsitään Antaa tuloksenaan niiden lauseiden joukon joista etsitty löytyy
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Rajoittamatonta hakua on pakko käyttää kun tarvitaan joustavuutta; silloin hakusanoissa olevat erikoismerkkit tulkitaan kuten Linux ne tulkitsisi ellei niiden edessä ole merkkiä \ . Esimerkiksi $ on muuttujan edessä, * ja . tulkitaan jokerimerkeiksi jne. Kytkimestä poistetaan kytkin F, muuten toiminta on sama.
Hakusanan Määrittelyjä:
'viisi numeroa' kun etsittävässä on välilyöntejä laitetaan se heittomerkkien väliin
'. tr .' kun haluat painottaa että ennen etsittävää on välilyönti ja perässä myös; tässä etsitään käskyä tr
grep.*lr kun etsittävän osia erottaa tuntematon määrä merkkejä ( .* paikalla ei täydy välttämättä olla mitään. Etsittävien tulee olla samalla rivillä)
^grep kun halutaamn painottaa että etsittävä on rivin alussa
kolmio.$ kun halutaan painottaa että etsittävä on rivin lopussa ( siis ^$ on tyhjä rivi )
[abc]-ajokortti kun halutaan löytää kaikki paikat joissa puhutaan a-,b- tai c-ajokorteista, mutta e-ajokortit saa jäädä löytymättä
[a-e]-ajokortti kun halutaan löytää ne kaikki
\$dollari kun etsittävässä on erikois-merkityksen omaava merkki jolla kuitenkin on normaali aakkos-merkitys niin kun sen eteen kirjoitetaan \
'[0-9]\{5\}' kun etsitään sanaa jossa on viisi numeroa (numerossa on merkit 0-9; siis etumerkistä ei välitetä)
[\ e]grep kun halutaan löytää grep ja egrep, mutta muita grepejä ei
haettavien erikoismäärityksiä (merkkiluokkasyntaksi ?):
[:alnum:]->[A-Za-z0-9]. Yleensä nämä täytyy laittaa hakusanassa kaksinkertaisiin sulkuihin: grep [[:digit:]] test.file
[:alpha:]->[A-Za-z] [:blank:]->välilyönti tai TAB [:cntrl:]->jokin kontrollimerkki [:digit:]->[0-9] [:graph:]->ASCII 33 - 126.
[:lower:]->[a-z] [:print:]->ASCII 32 - 126 ja lisäksi välilyönti [:space:]->välilyönti ja 'pystysuora TAB' [:upper:]->[A-Z]
[:xdigit:]->[0-9A-Fa-f].
pilkku menettää erikoismerkityksensä hakusanan viimeisenä merkkinä.
^ menettää erikoismerkityksensä ellei se ole ensimmäinen merkki
useimmat erikoismerkit menettävät erikoismerkityksensä merkkien [] välissä.
grepin kytkimet:
-r etsitään rekursiivisesti -s ei anneta varoitusviestejä -c vain löytöjen lukumäärä tulostetaan
-h tulostaa sen tekstirivin jolta etsitty löytyy -w oleta etsittävän alkuun ja loppuun \< ja \> -v poista hakutuloksista ne joissa etsitty on osana
-l tulostaa sen tiedoston nimen josta etsitty löytyy -n tulostaa myös miltä riviltä etsitty löytyi -i etsittäessä ei huomioida kirjainkokoa
-F etsitään kirjaimiltaan juuri sellaista mikä etsittäväksi määrättiin
-E ota käyttöön laajennoksia, mm. \ ei tarvita; siis esimerkiksi kun etsit "placeholdereita" niin etsittävä on: grep -lrE {} mistä_etsittään
- jostain syystä kun etsii ilmaisua: -exec kirjoitetaan hakusana: \\-exec
jälkihuomautuksia:
- usein tuloksia tulee niin paljon että niistä olisi kiva poistaa turhia. Esimerkiksi ensimmäisen haun perään voi lisätä käskyn poistaa tuloksista binääri- ja piilotiedostot: | grep -vE '(binääri|.*)'
- haut ovat yleensä tosinopeita, mutta jotkut haut saattaa kestää pitkään kuten esimerkiksi haku: grep -hr '[0-9]\{24\}' hakupaikka
- kun etsit löytyykö joku ilmaisu skriptien nimistä niin käsky onkin: find mistä | grep "mikä sana löydetyissä pitäisi olla"
siis esimerkiksi: find /home | grep "haku"
- en näitä hakuja oikein hallitse ja keskenkin tämä on - ilmanmuuta ohjeessa on paranneltavaa monessakin asiassa