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

Értékelés: 

0
Még nincs értékelve

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.