Kihagyás

4. gyakorlat

Bemeneti és kimeneti eszközök

  • 0 (stdin)
    • bemenet (billentyűzet)
  • 1 (stdout)
    • Kimenet (monitor)
  • 2 (stderr)
    • Hiba-Kimenet (monitor)

Hivatkozás célként &egységszám

/dev/null -> "kuka"

Hibaüzenetek (stderr) és a kimenet (stdout) is ugyan arra a terminálra megy, megkülönböztethetetlen kinézetileg. DE átírányítással szétszedhető.

Kimenet átirányítása

<parancs> [kimenet]> [kimeneti állomány]

Példák


cp -v 1/* x 2> err.txt

Nem látszik a hibaüzenet. Bele lett irányítva az err.txt fájlba.


cp -v 1/* x 1> out.txt

CSAK a hibaüzenet látszik. A program kimenete (stdout) az out.txt fájlba került.

Bizonyos parancsok esetén, ha nem adunk meg forrás fájlnevet, akkor a standard inputról várja a bemenetet

Pl.

  • head
  • tail
  • cat

Az adatbevitelt a ctrl+d billentyűkombinációval fejezhetük be.

Input-output átirányítás

Jelölés Magyarázat
>cél A kimenetet a célba irányítja. Ha a fájl nem létezik, akkor létrehozza
>>cél A kimenetet hozzáfűzi a megadott állományhoz
<forrás Az állományt irányítja a bemenetre (stdin)
<<keyword Bemenetről olvas sorokat, keyword-ig

Here

cat <<EOF
Ez egy sor
Ez egy másik sor
EOF
Ez egy sor
Ez egy másik sor

Find

find [útvonal] [kapcsolók] [kifejezések]

A megadott kifejezéseknek megfelelő könyvtárbejegyzések rekurzív keresése.

  • A kapcsolók a viselkedést változtatják
  • A kifejezések a keresési kritériumokat változtatja

Kapcsolók

  • -maxdepth {szint} keresési mélység

Kifejezések

  • -name "{minta}" a mintának megfelelő bejegyzések. Kis- és nagybetűket megkülönbözteti
  • -iname "{minta}" a mintának megfelelő bejegyzések. Kis- és nagybetűket NEM különböztetni meg
  • -empty üres fájlok
  • -exec {parancs} \; minden találat esetén végrehajtja a parancsot úgy, hogy annak egyik paramétere a találat.
    • parancs: bármilyen parancs lehet, amit shell-be írhatunk
    • Ahová a parancsba a találatot szeretnénk illeszteni oda {} jelet kell írni
    • pl: find -empty -exec cp {} uresek \; - üres fájlokat bemásolja az "üresek" nevű könyvtárba
  • -size {méret} a méretnek megfelelő fájlok
    • méret: [{előjel}] {mennyiség} [{mértékegység}]
    • "It's a trap! Or it can be." Figyeljünk a mértékegységre!
    • előjel:
      • + (nagyobb, mint)
      • - (kisebb, mint)
    • mértékegység:
      • c (byte)
      • k (kilobyte)
      • M (Megabyte)
      • G (Gigabyte)
  • -type {típus} a típusnek megfelelő bejegyzések
    • típusok:
      • f - szabályos fájl
      • d - könyvtár
      • l - szimbolikus link
  • -mtime [{előjel}] {nap} az adott napon módosult bejegyzések
    • nap: aktuális időponttól számított 24 óra (nem naptári napra nézi)
    • Előjel:
      • Ha nincs megadva, akkor több mint nap*24 órája történt, kevesebb, mint (nap+1)*24 órája
      • +

Logikai kapcsolatok

A kritériumok mindig éssel kapcsolódnak, ha nem másképp adom meg

  • -o két kifejezés között: vagy kapcsolat
    • pl: find -type f -o -type d - könyvtár VAGY fájl
  • -not tagadás, a következő kifejezést megfordítja

Szűrők

Csővezeték (pipe)

parancs 1 | parancs 2

A parancs 1 kimenete a parancs 2 bemenete

Pl.: Írjuk ki a szotar.txt 5.-től 7. elemét

head szotar.txt -n7 | tail -n3

vagy

cat szotar.txt | head -n7 | tail -n3

echo

echo [kapcsolók] szöveg

Kapcsolók:

  • -n ne írjon sorvége jelet a szöveg után
  • -e escape szekvenciák használata

escape szekvenciák

  • \n - sorvége (new line)
  • \r - kurzor vissza a sor elejére (carriage return)
  • \t - tabulátor
  • \a csengő

Sorok manipulációja

sort

sort [kapcsolók] <fájlok>

Kapcsolók:

  • -r fordított sorrend (most nem rekurzió)
  • -u ismétlődő sorokat csak egyszer

wc

wc [kapcsolók] [fájl]

  • -l sorok száma
  • -m karakterek száma
  • -w szavak száma

tr

tr [kapcsolók] halmaz1 [halmaz2]

  • forrás halmaz pl.: 'abc'
  • cél halmaz pl.: 'xyz'

Karaktereket cserél, töröl, vagy tömörít a bemenet soraiban.

  • -d törlés
  • -s tömörítés (egyet meghagy)

Példa

$ cat gyumolcs.txt
alma
körte
barack
$ cat gyumolcs.txt | tr "a" "x"
xlmx
körte
bxrxck
$ cat gyumolcs.txt | tr "ae" "x*"
xlmx
kört*
bxrxck
$ # VIGYÁZAT!
$ cat gyumolcs.txt | tr "aek" "x*"
xlmx
*ört*
bxrxc*
$ cat gyumolcs.txt | tr -d "a"
lm
körte
brck
$ echo almaaaaafaaaaaaaaa | tr -s "a"
almafa