Pár CLI "trükk"

Ma pár olyan kiegészítő információt beszélünk meg, melyekkel a parancssorban vagy a scriptekben láncolhatunk össze több parancsot. Ezeket érdemes ismerni, mert gyakran kényelemesebben dolgozhatunk velük és gyorsíthatja a munkánkat.

Az első a & (AltGr + C). Ezt már használtuk, hiszen az autostart-ba így rakosgattuk be a parancsokat. Ez nem tesz mást, csak a háttérbe küldi az adott parancsot.
Elindítjuk a programot, ami szépen fut, de nem adja vissza a promtot, mert teszi a dolgát. De mi nem akarjuk kivárni, amíg végez, dolgozni akarunk tovább. Ha háttérbe küldjük, akkor már visszakapjuk a promtot, és írhatjuk be a következő parancsot.
A háttérbe küldött parancsokat a

jobs

paranccsal listázhatjuk és a

fg feladatszáma

paranccsal hozhatjuk előtérbe, ha kell. Ha csak egy feladat fut, akkor nem kell beírni a számát, ennyire intelligens az fg. Nagyon jól lehet próbálgatni ezeket a

sleep 10

nagyon egyszerű parancs begépelésével. Nem csinál ez mást, mint a megadott számú másodpercig vár.

sleep 100 &

begépelése után már egyértelmű lesz minden :) Így nem ronthatunk el semmit és a fenti háttérbe küldés, előrehozást is gyakoroljuk.

Én előszeretettel használom például a

apt-get update &

megoldást, hiszen nem akarom végignézni, hogy letölti az adatbázist.

A következő kevésbé hasznos megoldás a ; (pontosvessző: AltGr + ?). Ez lehetővé teszi egymás utáni parancs végrehajtást.

apt-get update ; apt-get upgrade ; apt-get autoremove

Így megadott parancsok egymás után lefutnak, ha az első kész, akkor a második stb. következik.

Miért „kevésbé” hasznos? Mert nem ellenőrzi az előző parancs végrehajtását. Azaz ott nem használható, ahol fontos az előző parancs kifogástalan lefutása, hiba nélkülisége. A fenti példa akkor jó, ha 100%ig biztosak vagyunk abban, hogy az adatbázis frissítés korrektül végrehajtható. Ha nem, akkor is lefut a upgrade, vagy legalábbis megpróbálja a csomagokat frissíteni. Így, ha azt szeretnénk, hogy csak akkor fusson a második, ha az előző hiba nélkül fut le, akkor ez nem lesz megfelelő. Ilyen esetben a && kell használni. Csak akkor hajtja végre a következőt, ha az előző rendben volt:

apt-get update && apt-get -y upgrade && apt-get autoremove

Így jobb lesz, hiszen nem próbál csomagot frissíteni, ha nem lett az adatbázis frissítve. A fenti sokszor ismétlődő feladatot gyorsítja, ha nem kell megvárni az első lefutását, hanem automatikusan belép a második, ha az első jó. Persze akkor fut le korrektül, ha root joggal futtatod, de indítsd el sima felhasználóként is, hogy lásd: mivel nincs jogod, a következő parancs nem fut le, így kilép.

De ez is egy jó megoldás:

ping -c3 http://minta.org && wget -c -r --no-parent -A .mp3 http://minta.org/mp3s/

Csak akkor kezdi leszedni a fájlokat, ha elérhető az oldal.

Az || (két darab AltGr+W) operátor lehetővé teszi, hogy csak akkor hajtsa végre a második parancsot, ha az első parancs végrehajtása sikertelen, vagyis az első parancs kilépési állapota "1".

Azaz egy „vagy” kötést kap a két parancs. Ha az első nem jó, akkor jöhet a második.

A kipróbáláshoz sima felhasználóként:

apt-get update || echo „Te nem vagy ROOT!!!”

sort használhatod. Nyilván nem fut le az első, így a második lép érvénybe: kiírja a „Te nem vagy ROOT!!!”-ot. Ugyanezt add ki rootként, máris lefut az első rendben és nem ír ki semmit.

! azaz mit ne csináljon! Így kivételeket adhattuk a parancshoz.

A kipróbáláshoz hozz létre egy csomó fájlt egy könyvtárba, ahol más nincs:

touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

ls paranccsal ellenőrizd, hogy létrejöttek.

Most töröld az összes fájlt, kivéve a " html " fájlt egyszerre, intelligens módon.

rm -r !(*. html)

Majd ellenőrizd le, hogy valóban ott vannak a html fájlok és semmi más.

Én például a youtube-ról töltök le lejátszási listákat (például. A pytonidomáros, vagy a vektorgrafika neked sorozatot) és a jdownloader-rel. Ok, tudom, hogy a profik nem ezt használják, de én igen :) Ez pedig mindent leszed, amire esetleg szükségem lehetne:

  • 110 - Útvonalak felturbózva - Sára, a supernő Inkscape-ben (192kbit_AAC).m4a
  • 110 - Útvonalak felturbózva - Sára, a supernő Inkscape-ben (720p_30fps_H264-192kbit_AAC).mp4
  • 110 - Útvonalak felturbózva - Sára, a supernő Inkscape-ben (BQ).jpg
  • 110 - Útvonalak felturbózva - Sára, a supernő Inkscape-ben (Leírás).txt

De most csak a videó kell, a parancs pedig így módosul: rm -r !(*. mp4).

AND – OR (&& – ||)
Ez nagyban analóg az „if-else” megoldással egyes program nyelvekben, bár aki már használt if-else ágat, az nem ezt a cikket olvassa :) . A || két darab AltGr+W karakter, már használtuk!

Azaz megadható két kimenet: ha rendben lefutott minden, akkor mit tegyen, és ha nem, akkor mit. Így egy elágazásszerűséget hozhatunk létre, különösebb programozói ismeret nélkül.

apt-get update && apt-get -y upgrade || echo „Nem sikerült az adatbázis frissítése!!!”

Azaz, ha lefut az adatbázis frissítés, akkor frissíti a csomagokat, de ha nem, akkor kiírja, hogy „Nem sikerült az adatbázis frissítése!!!”.

Csővezeték, pipe: |

Azaz egy darab AltGr+W karakter. Egymásnak adják át a kimenetet. Azaz az első kimenete lesz a másodiké. Így egymásba kapcsolhatunk sok parancsot.
Egy sok fájlt tartalmazó könyvtárba add ki:

 ls -l | less

Talán az egyik leggyakrabban használt operátor a |. Legalábbis én szeretem:) nem kell eltárolni sok kimenetet, egymásnak adogatják a programok.
Természetesen ezenkívül még nagyon sok operátor van, de mára ennyi elég. Mindet érdemes kipróbálni, majd ha kell használni olyan esetben, amikor arra szükségünk van.

Ennyi

Hozzászólások

kimarite képe

Upgrade

Csak megjegyzem (ismét, mert számtalanszor leírtam :)), hogy a Linux Mint biztonsági szinteket használ, amit csak a Frissítéskezelő alkalmazás vesz figyelembe, más csomagkezelő alkalmazás nem. Így például az APT vagy a Synaptic sem. Így tehát bármely upgrade parancs futtatása, azaz például a

sudo apt-get upgrade

vagy a

sudo apt-get dist-upgrade

netán a

sudo aptitude upgrade

vagy a

sudo aptitude full-upgrade

parancsok bármelyikének futtatása, netán a Synaptic alkalmazásban elvégzett frissítés alkalmazása kikerüli a szinteket! ;-)

A Frissítéskezelő Python scriptet használ a biztonsági szintekhez.

Bármely update parancs futtatása azonban semmilyen veszéllyel nem jár, ez csak lekéri a lehetséges és elérhető csomag információkat, amelyet az upgrade léptet életbe majd (más OS-ek alatt, Debian-alapú terjesztéseken). Az update parancsot például a PPA forrásoknál használjuk a rendszer információinak frissítésére, a források listájának szerkesztése után.

Értékelés: 

0
Még nincs értékelve