Command Line

Linux parancssor. Ismert és kevésbé ismert parancsok. Bash tippek, trükkök. Rövid scriptek.

Címkék

&& (1) A4 (1) ac3 (1) ack (1) acpi (2) AES (1) afzcamCreator (1) agrep (1) aha (1) ajánló (1) alias (2) alkönyvtár (4) android (1) animgif (2) apropos (1) audio (2) avi (6) awk (1) backup (5) badblocks (1) basename (3) bash (20) bash completion (1) battery (1) bc (1) blkid (1) boot (3) brew (1) brute force (1) bug (1) bzip2 (2) cab (1) cal (1) calibre (4) calibredb (1) camera (1) capability (1) cat (2) cd (4) cdialog (2) checkinstall (2) cikkajánló (2) ciklus (1) címke (2) cksum (1) clipboard (1) cmdtools (1) color (1) colordiff (1) column (1) commandlinefu (1) convert (8) corel aftershot pro (1) cp (1) cr (1) crop (1) csplit (1) curl (1) date (1) dátum (1) dd (8) ddrescue (1) deb (1) decimális (1) default value (1) defrag (1) df (1) dia (1) dialog (2) diff (6) digitális fénykép (14) dircolors (1) dirty cow (1) dlna (1) dmidecode (1) dng (2) dos (2) dos2unix (1) dropbear (1) dropbox (1) dt3 (1) du (3) dump (2) dv (1) dvd (10) dvdauthor (2) dvd rw tools (1) e2freefrag (1) e2fsprogs (4) ebook (2) editor (2) eh (1) eject (1) emacs (4) encfs (2) energiagazdálkodás (1) enfuse (2) Enigma (1) epub (2) ESC (1) espeak (1) exa (1) exe (1) exif (6) exiftool (12) exit (1) ext2 (1) ext3 (1) ext4 (1) f3 (1) fájl (1) fallocate (1) fdisk (3) fdupes (1) feh (2) felhő (1) felirat (1) ffmpeg (12) filefrag (1) find (6) for (3) format (1) fortune (1) fred weinhaus (1) fuck (1) fuse (4) fuse-lgefs (1) fzf (1) gdatafs (1) genisoimage (3) getcap (1) getfacl (1) getmail (1) ghostscript (1) gif (1) gifsicle (1) glances (1) gnumeric (1) gnuplot (1) gömb (1) google (1) google drive (1) gotty (1) GPAC (1) gparted (2) gpg (3) gpg-zip (1) gplaycli (1) gps (3) gpsbabel (1) graphviz (1) grep (3) grive (1) grive2 (1) groff (1) growisofs (1) gs (1) gtk (1) gunzip (1) gzip (2) h264 (2) hálózat (1) handbrake (1) hangosítás (1) hardver (1) hard link (1) hash (2) hashcat (1) haszontalan (1) hdd (6) head (1) helyettesítés (1) hexadecimális (2) hibernate (1) homebrew (2) hp (1) hp-levels (1) html (1) http (1) hugin (1) icewm (1) icewm-light (1) identify (1) if (1) ifconfig (2) ifs (1) igo (1) imagemagick (12) imap (1) index (1) install (1) installer (1) iotop (1) iperf (1) iso (3) java (2) jelszó (6) jhead (1) jnettop (2) jogosultság (1) jpeg (4) jpg (2) jre (1) kapcsos zárójel (1) karakterkódolás (1) kdenlive (1) képméretezés (1) képnézegető (1) kernel (1) kétmenetes (1) keystore (1) keytool (1) kiegészítés (1) kindle (1) kódolás (1) könyv (1) kriptográfia (1) k x (2) lbzip2 (1) less (5) Levenshtein (1) lf (1) lg (1) linux (2) linuxbrew (1) linuxvilág (1) lm sensors (1) ln (1) log (1) losetup (1) ls (4) lsof (1) LS COLORS (1) lzw (1) mac (1) macos (2) mac address (2) mad (1) mail (1) mailbox (1) man (2) markdown (1) matroska (4) md5 (1) md5sum (2) mediainfo (1) melt (1) mencoder (5) merevlemez (5) meta (1) mikmod (1) minidlna (1) mjpegtools (1) mkv (6) mkvmerge (3) mkvtoolnix (4) mlt (1) mms (1) mogrify (1) monitor (1) montage (1) mount (3) mp3 (2) mp4 (1) MP4Box (1) mpg123 (1) mpg321 (1) mplayer (6) mplex (1) named (1) naptár (1) ncurses (2) nethogs (1) ng (1) nice (1) niceload (1) nl (1) nosztalgia (1) ntfsresize (1) numfmt (1) nyomtató (1) od (2) ogg (1) oktális (1) openssh (1) openwrt (1) óra (1) panoráma (1) parallel (3) parancsbehelyettesítés (1) parted (1) pass (1) paste (1) patch (2) pbcopy (1) pbpaste (1) pbzip2 (3) pdf (8) pdfcrack (1) pdfjam (1) pdfnup (1) pdftk (2) pendrive (2) pentax (6) perl (1) pgp (1) pgrep (1) PhotoRec (1) pi (1) picasa (1) picasaweb (1) pid (1) pigz (1) pipe (7) pktriggercord (1) play store (1) pm-utils (1) pop3 (1) popd (2) port (1) process (4) pushd (2) pv (3) pwgen (1) python (1) qimport (1) qpd (1) qr (2) qrencode (2) quotedprintable (1) random (1) randr (1) rdfind (1) readlink (1) recode (2) regiókód (1) reguláris kifejezés (2) rejtjelezés (2) renice (1) rfkill (1) rip (1) rm (1) rpm (5) rsa (1) rsync (2) sane (1) scanimage (1) screenshot (1) script (1) sebesség (1) sed (2) seq (4) setcap (1) setfacl (1) sha256sum (1) sha512sum (1) shellshock (1) shred (2) SIGINT (1) smp (3) sorszámozás (1) sort (2) sourse-highlight (1) space (1) sparse (1) split (2) ssconvert (2) ssd (1) ssh (3) sshfs (1) sshtron (1) startx (1) stat (1) stopper (1) suspend (1) symlink (1) sync (1) sysrq (1) systemd-analyze (1) systems (1) számológép (1) szenzor (1) szerver (1) szimbolikus link (1) szimbolikus lunk (1) szín (1) szkennelés (1) tail (2) tar (3) tee (3) testdisk (1) text (2) thefuck (1) tiff (1) time (1) timeout (1) tinta (1) titkosítás (3) tömörítés (4) top (2) töredezettségmentesítés (1) touch (2) tput (1) tr (1) transcode (5) trap (1) TRE (1) tree (2) tutorial (1) ufraw (2) ufraw batch (1) újság (1) unbuffer (1) uniq (1) unix (2) upower (1) urandom (1) user (1) utf 8 (1) változó (2) VBoxManage (1) véletlenszám (2) verem (1) vertical video syndrome (1) VHS (1) vi (4) vid.stab (1) video (2) vim (1) virtualbox (1) vob (1) vobcopy (1) wake on lan (1) watch (1) webkamera (1) webszerver (2) wget (1) which (2) whitespace (2) who (1) wifi (1) windows (3) woeusb (1) wol (1) X (1) x264 (1) xargs (4) xbacklight (1) xclip (2) Xdialog (1) xml (1) xmllint (1) xrandr (2) xxd (3) yes (1) youtube (1) youtube-dl (1) zárójeles (1) zbar (1) zene (1) zenity (2) zip (1) Címkefelhő

Automatikus képdarabolás

2011.01.27. 10:00 | sala | Szólj hozzá!

ImagaMagick kincsesbányába botlottam. Fred Weinhaus weboldalán számtalan imagemagickre épülő scriptet találhatunk.

Az egyik ilyen script segítségével egy régi problémámat sikerült megoldani. Ha egyszerre több képet ( könyvborítót, fényképet, ...) szkennelek be, akkor elég macerás egyenként kijelölni a képeket, és a kissé elfordult képeket visszaforgatni ( akár digitálisan, akár megigazítás után újraszkennelve ).

A multicrop script mindezt elvégzi helyettünk. A következő képet szkenneltem be, 2 könyvborítót láthatunk rajta:

 A következő parancs segítségével egyszerűen feldarabolhatjuk a képet:

multicrop egyben.tiff konyv.tiff

 Az eredmény 2 fájl, konyv-0.tiff és konyv-1.tiff:

 

A script akkor működik jól, ha a háttérszín eléggé homogén, és elüt a fényképektől. Bár ebben a példában nem volt rá szükség, automatikusan elforgatja a ferdén beszkennelt képeket.

Címkék: imagemagick fred weinhaus

Képek keresése címkék alapján

2011.01.24. 10:00 | sala | Szólj hozzá!

Ahogy egyre több digitális fényképet tárolunk, egyre nehezebb a fényképek rendszerezése. Segít (valamit) a káoszon, ha a képekhez címkéket rendelünk hozzá. A címkék az exif információk között tárolódnak, a Keywords tag alatt. Ha szorgalmasan felcímkéztük a képeket, akkor időnként keresni is kell a címkék között. A következő script segítségével ezt könnyen megtehetjük:

find . -name "*.jpg" -print0 | xargs -0 -n1 exiftool -m -p '$directory/$filename: $Keywords' | grep -i kutya

Címkék: címke exif exiftool

xargs szóköz

2011.01.21. 10:00 | sala | Szólj hozzá!

A fájlnevekben szereplő szóközökkel mindig csak baj van. Készítsünk egy scriptet, ami a jpeg fájlokban található exif információ alapján megnézi, hogy milyen ISO értékekkel fényképeztünk:

find . -name "*.jpg" | xargs -n1 exiftool -m -iso

A script nagyszerűen működik, egészen addig amíg bele nem szaladunk egy olyan alkönyvtárba, aminek a nevében szóköz van. A gondot az okozza, hogy ugyanaz a szóköz választja el a fájlok neveit, mint az ami az alkönyvtár nevében is szerepel. Ha a fájlneveket elválasztó karaktert lecseréljük ( null karakterre ), akkor már működik a scriptünk:

find . -name "*.jpg" -print0 | xargs -0 -n1 exiftool -m -iso

Látható, hogy egyrészt find-nak, másrészt xargs-nak is meg kell adni, hogy ne szóközökkel dolgozzon.

Címkék: find xargs whitespace

pkTriggerCord

2011.01.18. 10:00 | sala | Szólj hozzá!

Ezúttal egy saját programom reklámoznám. Nemrég tettem publikussá sourceforge-on a pkTriggerCord nevű programot, mellyel Pentax fényképezőgépeket ( K-x, K10D, K20D, istDs) lehet vezérelni USB kábelen keresztül. Linux alatt működik.

A program a PkRemote program továbbfejlesztése. Jelenleg még eléggé béta, elég sok hiba van benne, melyeket remélhetően idővel majd javítok.

Természetesen parancssorból is működik, különben nem írnék róla itt.

Címkék: pentax digitális fénykép pktriggercord

szkennelés

2011.01.15. 10:00 | sala | Szólj hozzá!

Bár a szkennelés nem az a feladat amit feltétlenül parancssorból szeretnénk elvégezni, ha szükségünk van rá, SANE támogatja ezt is.

Először is listázzuk ki az elérhető eszközöket:

[]$ scanimage -L
device `v4l:/dev/video0' is a Noname CNF8243 virtual device
device `gt68xx:libusb:002:004' is a Mustek ScanExpress 1200 UB Plus flatbed scanner

Az első eszköz a webkamera, amivel most nem foglalkozunk, a második egy valódi szkenner, amit használni szeretnénk.

Először is listázzuk ki, pontosan milyen beállításokat támogat az eszköz:

scanimage --help --device-name gt68xx:libusb:002:004

A --device-name kapcsolóra nincsen szükségünk abban az esetben ha az előző parancs csak egy eszközt listázott ki. Ha több eszközünk van, de az esetek többségében ugyanazt szeretnénk használni, akkor SANE_DEFAULT_DEVICE környezeti változóban beállíthatjuk az alapértelmezett eszközt.

Eredményül egy elég hosszú leírást kapunk, aminek a közepén egy ilyen részt kell látnunk:

Options specific to device `gt68xx:libusb:002:004':
  Scan Mode:
    --mode Color|Gray|Lineart [Gray]
        Selects the scan mode (e.g., lineart, monochrome, or color).
    --gray-mode-color Red|Green|Blue [Green]
        Selects which scan color is used gray mode (default: green).
    --source Flatbed|Transparency Adapter [inactive]
        Selects the scan source (such as a document-feeder).
    --preview[=(yes|no)] [no]
        Request a preview-quality scan.
    --depth 8|12 [8]
        Number of bits per sample, typical values are 1 for "line-art" and 8
        for multibit scans.
    --resolution 50|75|150|300|600|1200dpi [300]
        Sets the resolution of the scanned image.
...

Bár ezek az opciók eszköz-specifikusak az egyszerűbb kapcsolók megtalálhatóak szinte az összes szkennernél.

Ezután a következő paranccsal szkennelhetünk be egy képet:

scanimage --mode=color --resolution=300 --format=tiff --device-name gt68xx:libusb:002:004 > kep.tiff

Címkék: szkennelés sane scanimage

xargs -P

2011.01.12. 10:00 | sala | 1 komment

Korábban már írtam arról, hogy miként tudunk find és xargs segítségével egy műveletet szépen egymás után több fájlon is elvégezni. Ha elég sok fájlon akarjuk a műveletet elvégezni, akkor fontos hogy gépünk összes processzorát ( processzormagját ) kihasználjuk. Legegyszerűbb persze ha az xargs által meghívott parancs több magot kezel ( pl. pbzip2, x264 ), de ez nincs mindig így.

Eredeti parancsunk az összes jpg fájból egy monokróm png fájlt készít. Szép sorban indítja el a convert parancsokat, egyszerre csak egy fut:

find . -name '*.jpg' | xargs -n1 -i convert -monochrome {} {}_mono.png

A -P  kapcsoló segítségével megadhatjuk, hány szálat indítson el xargs, így könnyen elérhetjük, hogy minden ( a példában 2 ) processzorunk dolgozzon:

find . -name '*.jpg' | xargs -P 2 -n1 -i convert -monochrome {} {}_mono.png

 

 

Címkék: convert find smp xargs

DVD iso lemezre írása

2011.01.09. 10:00 | sala | Szólj hozzá!

Bár már többször írtam arról, miként tudunk dvdauthor és genisoimage segítségével iso fájlt gyártani, de valamiért azt elfelejtettem leírni, miként tudjuk ezt parancssorból lemezre írni. Én a következő parancsot használom: 

growisofs -dvd-compat -Z /dev/sr0=film.iso

A/dev/sr0 helyett értelemszerűen a saját DVD-író eszköz címét kell írni. A -dvd-compat kapcsoló nem feltétlenül kell, de nekem javította az asztali DVD lejátszóval való kompatibilitást.

Címkék: dvd iso genisoimage growisofs

xargs

2011.01.06. 10:00 | sala | Szólj hozzá!

A korábban már említett find parancs segítségével adott tulajdonságú fájlokat kereshetünk. Többnyire persze nemcsak megkeresni szeretnénk a fájlokat, hanem valami műveletet elvégezni velük. Ilyenkor az xargs parancsot használhatjuk, ami a standard inputról kapott paraméterek felhasználásával végrehajt egy előre meghatározott parancsot.

Nézzünk egy egyszerű példát.

Keressük meg az alkönyvtárban található txt kiterjesztésű fájlokat:

[]$ find . -name "*.txt"
./a.txt
./b.txt
./c.txt

Vizsgáljuk meg, hogy melyik txt fájlban található meg az alma sztring:

[]$ find . -name "*.txt" | xargs grep alma
./a.txt:alma

A fenti utasítás hatására xargs a következő parancsot futtatja:

[]$ grep alma ./a.txt ./b.txt ./c.txt
./a.txt:alma

Tegyük fel, hogy továbbra is a txt fájlokat keressük és a basename paranccsal le szeretnénk vágni az alkönyvtár nevét, mert csak a fájl nevére vagyunk kíváncsiak. Ha a fentieknek megfelelően a

find . -name "*.txt" | xargs basename

paranccsal próbálkozunk, akkor hibaüzenetet kapunk, hiszen basename nem tud mit kezdeni az egyszerre paraméterként megkapott három fájlnévvel. Ehelyett arra van szükségünk, hogy xargs a 3 fájlnevet egyenként adja át. Ezt a következőképpen érhetjük el:

find . -name "*.txt" | xargs -n1 basename
a.txt
b.txt
c.txt

A -n kapcsolóval azt állíthatjuk be, hogy a standard inputon érkezett argumentumokat hányasával használja fel xargs. Az esetek többségében ( ha egyáltalán szükségünk van a kapcsolóra ) azt szeretnénk, ha egyesével használnánk fel őket, ezért használtam itt is -n1-et.
 

 

Címkék: find xargs

dvd format

2011.01.03. 10:00 | sala | Szólj hozzá!

Bár a legtöbb DVD író program képes automatikusan letörölni írás előtt az újraírható DVD lemezeket, időnként szükség lehet arra, hogy egy újraírható lemezt formatáljunk:

dvd+rw-format -force=full /dev/sr0

Persze /dev/sr0  helyett mindenki a saját DVD-írójának megfelelő eszköz címét használja!

A parancs a dvd+rw-tools csomag része, a név ne zavarjon meg senkit, dvd-rw lemezeket is rendesen kezel.

Címkék: dvd format dvd rw tools

Screenshot

2010.12.31. 10:00 | sala | Szólj hozzá!

Ha egy videófájlból szeretnénk screenshotokat elmenteni, akkor mplayer segítségével könnyen megtehetjük:

mplayer -vf screenshot film.mpg

Ezután a megfelelő pillanatban az s billentyű lenyomásával készíthetjük el a screenshotokat, melyeket shot0001.png, shot0002.png,... néven ment el a program.

Címkék: screenshot mplayer

ifconfig.me

2010.12.28. 10:00 | sala | Szólj hozzá!

Rengeteg weboldal van, aminek segítségével lekérdezhetjük hálózati csatlakozásunk adatait, de a legtöbb nem sokra használható, ha parancssorból szeretnénk ezt megtenni. Az ifconfig.me oldalt viszont úgy tervezték, hogy parancssorból is könnyen elérhetőek legyenek az adatok:

IP lekérdezése:

curl ifconfig.me

vagy

curl ifconfig.me/ip

Hostnév lekérdezése:

curl ifconfig.me/host

Ezen kívül még sokmindent lekérdezhetünk, bővebb leírás ifconfig.me főoldalának alján található.

Ha curl helyett inkább wgetet szeretnénk használni, akkor kicsit bonyolultabb lesz a parancssor:

wget -q -O - ifconfig.me/host

Címkék: curl wget ifconfig

szöveg képpé alakítása

2010.12.09. 10:00 | sala | 2 komment

A már többször említett ImageMagick segítségével könnyen készíthetünk feliratot tartalmazó képeket.

convert -background none -geometry +0+0 -fill \#ffffff -pointsize 36 label:"alma őű" -set label '' felirat.png

A fenti utasítás hatására átlátszó háttér előtt fehér betűkkel az alma őű felirat jelenik meg. A következő képen látható, hogy a magyar ékezetes betűket is rendesen kezeli a program:

 

 

Ha több soros szöveget szeretnénk, akkor érdemes egy szövegfájlt készíteni, és a következő módon konvertálni:

convert -background none -geometry +0+0 -fill \#ffffff -pointsize 36 label:"`cat felirat.txt`" -set label '' felirat.png

· 1 trackback

Címkék: text convert imagemagick

watch

2010.12.04. 10:00 | sala | Szólj hozzá!

Velem már többször előfordult, hogy miközben egy hosszú ideig futó programot indítottam el, folyamatosan szerettem volna követni, hogy vajon pontosan milyen hatása van a programnak. Ha például az érdekelt, hogy a program által gyártott fájlok miatt betelik-e a partícióm, akkor folyamatosan ellenőriztem a df paranccsal.

Elég fárasztó és értelmetlen folyamatosan lefuttatni ugyanazt a parancsot, ebben segíthet a watch. Ez a parancs képes egy programot adott időközönként ( alapértelmezés szerint 2 másodpercenként ) lefuttatni, és az eredményt teljes képernyőn megmutatni. Az előbb említett példában a következő utasításra van szükségünk:

watch df

Ennek hatására könnyen ellenőrizhetjük, miként változik a helyfoglalás. Ha be szeretnénk fejezni, CTRL-C-vel léphetünk ki.

Ha túl sok információ jelenik meg a képernyőn, akkor nehéz észrevenni a változásokat, ilyenkor a -d kapcsoló segít, ami kiemeli ezeket:

watch -d df

Természetesen lehetőségünk van összetettem parancsok ellenőrzésére is. Ha például szebb formában szeretnénk a df eredményét látni:

watch -d 'df -m | column -t'

Ha egyszerre több parancsot szeretnénk figyelni, egyszerűen pontosvesszővel választhatjuk el őket:

watch -d 'df -m | column -t; ls -l /home'

 

Címkék: df watch ls

bash ctrl-r címke

2010.11.26. 10:00 | sala | Szólj hozzá!

Korábban írtam róla, miként tudunk ctrl-r segítségével könnyen megtalálni egy korábban kiadott parancsot. A módszer egyik nehézsége, hogy nem mindig tudunk olyan rövid könnyen megjegyezhető részletet megjegyezni a parancsból, aminek a használatával gyorsan előhozhatjuk a több napja kiadott utasítást. Egy apró trükk segítségével címkét ragaszthatunk ahhoz az utasításhoz amit később várhatóan még többször szeretnénk használni:

itt_egy_nagyon hosszú parancs van sok paraméterrel # alma

A # utáni rész ( alma ) nem befolyásolja a futást, de a ctrl-r kereséskor könnyen rákereshetünk.

Címkék: címke bash

bash változó kapcsos zárójelben

2010.11.23. 10:00 | sala | Szólj hozzá!

Viszonylag egyszerű bash scriptek írásakor is szükségünk van változókra. Nemrég beleszaladtam egy ezzel kapcsolatos problémába. Nézzük a következő példákat:

[gep]$ i=1; echo $i
1
[gep]$ i=1; echo alma_$i
alma_1
[gep]$ i=1; echo alma_$i.tgz
alma_1.tgz
[gep]$ i=1; echo alma_$i_02.tgz
alma_.tgz

Egészen az utolsó sorig minden rendben van és logikusnak tűnik, de ott kissé meglepett, hogy nem alma_1_02.tgz íródott ki. Rövid gondolkodás után persze rájöttem, hogy mivel nem jelzi semmi a változó nevének a végét, ezért bash nem tudja kitalálni, hogy a változó neve "i" és utána jön a _02 sztring, ehelyett azt hiszi, hogy "i_02" a változó neve.

Persze van mód arra, hogy pontosabban jelezzük mi is a változó neve, kapcsos zárójelet kell használni. Bár korábban lustaságból nem mindig használtam, ezután igyekszem:

[gep]$ i=1; echo alma_${i}_02.tgz
alma_1_02.tgz


 

Címkék: bash változó kapcsos zárójel

feh

2010.11.20. 10:00 | sala | Szólj hozzá!

A képnézegető programok talán nem tartoznak a klasszikus parancssoros programok közé, de szerintem gyakran van szükség arra, hogy parancsorból gyorsan elindítsunk egy programot, ami képfájlokat jelenít meg. Több olyan program is van amit szerencsére nem bonyolítottak el, így hatékonyan használhatóak maradtak.

Én ezek közül a programok közül a feh nevűt használom:

Egy kép megjelenítése:

feh alma.jpg

Egy kép megjelenítése teljes képernyőn. Ha a kép nagy, akkor lekicsinyíti a program, de a kis képeket nem nagyítja fel:

feh -F alma.jpg

Egy kép megjelenítése teljes képernyőn. Ha a kép nagy, akkor lekicsinyíti a program, ha túl kicsi, akkor felnagyítja:

feh -FZ alma.jpg

Több kép teljes képernyős megjelenítése, a fájlnév kiírásával. A képek között nyilakkal (balra, jobbra) lehet váltani:

feh -Fd *.jpg

 

 

 

Címkék: képnézegető feh

cd -

2010.11.17. 10:00 | sala | Szólj hozzá!

Bár korában írtam a pushd popd parancsokról, melyek segítségével könnyen válthatunk alkönyvtárak között oda-vissza, valójában én sem használtam ezeket a parancsokat. Úgy tűnik egyszerűen túlzottan megszoktam a cd parancsot.

Szerencsére ha nincsen szükségünk kettőnél több alkönyvtárra, akkor elég a következő parancs, ami visszavált az előzőleg használt alkönyvtárra:

cd -

Címkék: cd pushd popd alkönyvtár

find

2010.11.14. 10:00 | sala | 4 komment

A frappáns nevű find parancs segítségével fájlokat kereshetünk Linux alatt. A parancs szintaxisa a következő:

find holkeressen mitkeressen mitcsináljon

A keresés helyének megadásakor az alkönyvtárat adjuk meg ahol a fájlt keresni szeretnénk. Ha szükséges, több alkönyvtárat is megadhatunk szóközzel elválasztva. Alapértelmezésként az aktuális alkönyvtárban keres a parancs ( a példákban ezt fogom használni ).

Bár a mitcsináljon résznél többféle előre definiált utasítás közül választhatuk, a gyakorlatban szinte mindig a -printre van szükségünk, ami a talált fájlok neveit írja ki külön-külön sorba. Mivel ez az alapértelmezés, a példákban ezt sem írom ki külön.

A legérdekesebb rész annak megadása, milyen fájlokat keressen a parancs. Itt számtalan lehetőségünk van, néhány példa:

Az összes fájl keresése:

find

A png kiterjesztésű fájlok keresése

find -name "*.png"

Legalább 1 GB méretű fájlok:

find -size +1G

Legalább 700MB de legfeljebb 1GB méretű fájlok:

find -size 1G -size +700M

Legutóbbi 3 napban módosított fájlok:

find -mtime -3

Legutóbbi 3 napban nem módosított fájlok:

find -mtime +3

Két dátum között is lehet keresni (otegi tippje):

find -type f -newermt "20160101" -not -newermt "20161231"

Ha több feltételt használunk, azokat a fájlokat találjuk meg, amelyek minden feltételnek megfelelnek. Ha az és kapcsolat helyett inkább vagy kapcsolatra van szükségünk, a -o kapcsolót kell használnunk.

Az összes jpg és png kiterjesztésű fájl:

find -name "*.jpg" -o -name "*.png"

Ugyanerre a célra persze használhatunk reguláris kifejezéseket is:

find -regex ".*\.\(jpg\|png\)"

 

Címkék: touch find reguláris kifejezés

column -t

2010.11.10. 10:00 | sala | Szólj hozzá!

Míg egyes Linux parancsok az eredményeket szépen formázva  mutatják ( pl. ls -l ), addig más parancsok (pl. mount) nem törődnek ezzel és kissé olvashatatlanul kapjuk az eredményeket.

Ha olvashatóbb formát szeretnénk, akkor a column parancsot érdemes használnunk. Hasonlítsuk össze a két eredményt:

$ mount
/dev/sda2 on / type ext4 (rw,noatime)
none on /proc type proc (rw)
/dev/sda1 on /boot type ext4 (rw,noatime)
/dev/sda7 on /home type ext4 (rw,noatime)

$ mount | column -t
/dev/sda2         on  /                         type  ext4                   (rw,noatime)
none              on  /proc                     type  proc                   (rw)
/dev/sda1         on  /boot                     type  ext4                   (rw,noatime)
/dev/sda7         on  /home                     type  ext4                   (rw,noatime)

 Alapesetben a whitespace karaktereknél kezd új oszlopot ( ez zavaró lehet mountnál, ha szóköz is van az alkönyvtár nevében ), de eltérő szeparátorkaraktert is megadhatunk:

$ cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:

$ cat /etc/group | column -t -s ':'
root           x  0
bin            x  1
daemon         x  2
sys            x  3


 

 

 

Címkék: column whitespace

MAC address klónozása

2010.11.06. 10:00 | sala | Szólj hozzá!

Minden hálózati eszköznek saját (elvileg egyedi) címe van. Bár elvileg nagyon jó dolog az egyedi cím, számtalan esetben jól jöhet, ha ezt a címet átírhatjuk. Például az internetszolgáltatók gyakran a MAC addresshez kötik a szolgáltatást, és ha gépet ( alaplapot, hálózati kártyát ) cserélünk, akkor sokkal egyszerűbb az új gépünkön beállítani a régi gép címét mint a szolgáltatót megkérni, hogy írja át a címet az adatbázisában.

A címet a következőképpen tudjuk átírni ideiglenesen:

ifconfig eth0 down
ifconfig eth0 hw ether 01:23:45:67:89:ab up

eth0 helyett értelemszerűen a módosítandó interfész nevét kell megadnunk, 01:23:45:67:89:ab helyett pedig a kívánt MAC addresst.

Bár nem feltétlen kell, én többnyire a művelet előtt leállítom az egész hálózatot ( /etc/init.d/network stop ) utána pedig újraindítom ( /etc/init.d/network start ).

A fenti címmódosítás csak ideiglenes, a következő újraindítás során visszaáll a régi cím. Ha állandó módosítást szeretnénk, akkor /etc/sysconfig/network-scripts/ifcfg-eth0 fájlba ( feltéve, ha eth0 címét akarjuk módosítani ) kell a következő sor:

MACADDR=01:23:45:67:89:ab

Címkék: mac address ifconfig

Nagyon egyszerű webszerver

2010.10.31. 10:00 | sala | Szólj hozzá!

A következő paranccsal az aktuális alkönyvtár tartalmát érhetjük el egy nagyon egyszerű webszerveren keresztül:

python -m SimpleHTTPServer

Ideális, ha html oldalakat editálunk, de nem szeretnénk az igazi webszerverünkön keresztül elérhetővé tenni az éppen editált oldalakat, vagy nem szeretnénk a webszerver konfigurációval foglalkozni.

A webszervert a 8000-es porton keresztül érhetjük el:

http://$HOSTNAME:8000/

$HOSTNAME helyett a gépünk nevét kell írni, mondjuk én az egyszerűség kedvéért 127.0.0.1-et szoktam.

Címkék: python http webszerver

getmail

2010.10.10. 10:00 | sala | Szólj hozzá!

Ha leveleinket szeretnénk egy szerverről letölteni parancssor segítségével, akkor a getmail program segíthet. Támogatja a POP3, IMAP szabványokat, mindkettőnél akár SSL-lel is. Konfigurációs fájban ( alapértelmezett: ~/.getmail/getmailrc ) érdemes megadni a fiókok adatait, ezután getmail parancs segítségével letölthetjük a leveleinket.

A következő példában egy gmail account beállításait mutatom meg:

[options]
delete = true
verbose = 2

[retriever]
type = SimplePOP3SSLRetriever
server=pop.gmail.com
username = felhasznalonev@gmail.com
password = jelszo
port=995

[destination]
type = Mboxrd
path = ~/inbox
Ha gondunk lenne az alapértelmezett SimplePOP3SSLRetriever levélletöltővel, érdemes kipróbálni BrokenUIDLPOP3Retriever-t is. Ez utóbbi rendesen működik akkor is, ha a levelek egyértelmű azonosítása nem megfelelő a szerveren.

 

Címkék: mail pop3 imap getmail

Parancssor gyors szerkesztése editorban

2010.09.16. 10:00 | sala | Szólj hozzá!

Ha éppen valami igen bonyolult parancssort editálunk, akkor könnyen lehet, hogy a shell beépített egyszerű editora helyett szívesebben használnánk kedvenc editorunkat (emacs, vi, ...). Persze készíthetünk az éppen editált parancssor helyett egy 1 soros scriptet, amit külön editorban editálunk, de ha ez az editálás kellős-közepén jut eszünkbe (többnyire akkor szokott), akkor ez nem túl kényelmes.

Ehelyett sokkal egyszerűbb, ha az editálás közben lenyomjuk a következő billentyűkombinációt:

ctrl-x ctrl-e

Ennek hatására megnyílik kedvenc szövegszerkesztőnk (feltéve, hogy EDITOR környezeti változó rendesen be van állítva) az éppen editált parancssorral. Ha befejeztük az editálást, és becsukjuk az editort, akkor nyomban le is fut a parancs.

Címkék: editor vi bash emacs

cal

2010.09.13. 10:00 | sala | Szólj hozzá!

A mai bejegyzés az egyik legegyszerűbb naptárprogramot, a calt mutatja be példákon keresztül.

Az aktuális hónap naptárának megjelenítése ( a -m kapcsoló hatására az alapértelmezett vasárnap helyett hétfővel kezdődik a hét ):

[gep]$ cal -m
   September 2010  
Mo Tu We Th Fr Sa Su
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Az aktuális év naptárának megjelenítése:

[gep]$ cal -my
                               2010                              

       January               February                 March      
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su
             1  2  3    1  2  3  4  5  6  7    1  2  3  4  5  6  7
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    8  9 10 11 12 13 14
11 12 13 14 15 16 17   15 16 17 18 19 20 21   15 16 17 18 19 20 21
18 19 20 21 22 23 24   22 23 24 25 26 27 28   22 23 24 25 26 27 28
25 26 27 28 29 30 31                          29 30 31

        April                   May                   June       
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su
          1  2  3  4                   1  2       1  2  3  4  5  6
 5  6  7  8  9 10 11    3  4  5  6  7  8  9    7  8  9 10 11 12 13
12 13 14 15 16 17 18   10 11 12 13 14 15 16   14 15 16 17 18 19 20
19 20 21 22 23 24 25   17 18 19 20 21 22 23   21 22 23 24 25 26 27
26 27 28 29 30         24 25 26 27 28 29 30   28 29 30
                       31
        July                  August                September    
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su
          1  2  3  4                      1          1  2  3  4  5
 5  6  7  8  9 10 11    2  3  4  5  6  7  8    6  7  8  9 10 11 12
12 13 14 15 16 17 18    9 10 11 12 13 14 15   13 14 15 16 17 18 19
19 20 21 22 23 24 25   16 17 18 19 20 21 22   20 21 22 23 24 25 26
26 27 28 29 30 31      23 24 25 26 27 28 29   27 28 29 30
                       30 31
       October               November               December     
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su
             1  2  3    1  2  3  4  5  6  7          1  2  3  4  5
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    6  7  8  9 10 11 12
11 12 13 14 15 16 17   15 16 17 18 19 20 21   13 14 15 16 17 18 19
18 19 20 21 22 23 24   22 23 24 25 26 27 28   20 21 22 23 24 25 26
25 26 27 28 29 30 31   29 30                  27 28 29 30 31

Egy kijelölt (példában 1999. augusztus) hónap megjelenítése:

[gep]$ cal -m 8 1999
     August 1999   
Mo Tu We Th Fr Sa Su
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

 

Egy kijelölt (példában 2012) év:

[gep]$ cal -m 2012
                               2012                              

       January               February                 March      
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su
                   1          1  2  3  4  5             1  2  3  4
 2  3  4  5  6  7  8    6  7  8  9 10 11 12    5  6  7  8  9 10 11
 9 10 11 12 13 14 15   13 14 15 16 17 18 19   12 13 14 15 16 17 18
16 17 18 19 20 21 22   20 21 22 23 24 25 26   19 20 21 22 23 24 25
23 24 25 26 27 28 29   27 28 29               26 27 28 29 30 31
30 31
        April                   May                   June       
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su
                   1       1  2  3  4  5  6                1  2  3
 2  3  4  5  6  7  8    7  8  9 10 11 12 13    4  5  6  7  8  9 10
 9 10 11 12 13 14 15   14 15 16 17 18 19 20   11 12 13 14 15 16 17
16 17 18 19 20 21 22   21 22 23 24 25 26 27   18 19 20 21 22 23 24
23 24 25 26 27 28 29   28 29 30 31            25 26 27 28 29 30
30
        July                  August                September    
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su
                   1          1  2  3  4  5                   1  2
 2  3  4  5  6  7  8    6  7  8  9 10 11 12    3  4  5  6  7  8  9
 9 10 11 12 13 14 15   13 14 15 16 17 18 19   10 11 12 13 14 15 16
16 17 18 19 20 21 22   20 21 22 23 24 25 26   17 18 19 20 21 22 23
23 24 25 26 27 28 29   27 28 29 30 31         24 25 26 27 28 29 30
30 31
       October               November               December     
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7             1  2  3  4                   1  2
 8  9 10 11 12 13 14    5  6  7  8  9 10 11    3  4  5  6  7  8  9
15 16 17 18 19 20 21   12 13 14 15 16 17 18   10 11 12 13 14 15 16
22 23 24 25 26 27 28   19 20 21 22 23 24 25   17 18 19 20 21 22 23
29 30 31               26 27 28 29 30         24 25 26 27 28 29 30
                                              31

 

 

Címkék: naptár cal

IFS

2010.09.06. 10:00 | sala | Szólj hozzá!

Egy korábbi bejegyzésben mutattam egy scriptet, ami fájlokat nevez át kisbetűssé:

for i in *.JPG; do mv $i `echo $i | tr A-Z a-z`; done

Ha a scriptet lefuttatjuk egy alkönyvtárban, melyben a következő 2 jpg fájl található:

A.JPG
B C.JPG

akkor sajnos hibaüzenetet kapunk:

mv: target `c.jpg' is not a directory

A hibaüzenetből rájöhetünk, hogy a problémát a második fájl nevében található szóköz karakter okozza (személy szerint én mindig próbálom elkerülni a szóköz használatát a fájlnevekben). Az IFS (Internal Field Separator) környezeti változó alapján dönti el a bash, hogy milyen karaktereket tekintsen szeparáló karakternek. Mivel alapértelmezés szerint a szóköz is szeparáló karakter, ezért rossz helyen "törik el" a parancsunk.

Először is nézzük meg, mi az IFS környezeti változó alapértelmezése! Ha a szokásos módon echo paranccsal iratjuk ki a tartalmát, akkor nem leszünk okosabbak:

[gep]$ echo $IFS

[gep]$

Mivel IFS alapértelmezésben speciális karaktereket tartalmaz ( szóköz, tab, újsor ), nem látunk semmit. Ehelyett inkább a következő módon nézzük meg a változó tartalmát:

[gep]$ printf "%q\n" "$IFS"
$' \t\n'
[gep]$

Ha módosítjuk IFS értékét, hogy a szóközt ne tartalmazza:

IFS=$'\t\n'

, akkor már rendben lefut a scriptünk.

Címkék: space ifs

süti beállítások módosítása