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) acpi (2) AES (1) agrep (1) ajánló (1) alias (2) alkönyvtár (4) android (1) animgif (1) apropos (1) audio (2) avi (6) awk (1) backup (4) badblocks (1) basename (3) bash (17) bash completion (1) battery (1) bc (1) blkid (1) boot (3) brute force (1) bug (1) bzip2 (2) cab (1) cal (1) calibre (4) calibredb (1) capability (1) cat (2) cd (4) cdialog (2) checkinstall (2) ciklus (1) címke (2) cksum (1) clipboard (1) cmdtools (1) colordiff (1) column (1) commandlinefu (1) convert (8) 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) df (1) dia (1) dialog (2) diff (6) digitális fénykép (13) dircolors (1) dirty cow (1) dlna (1) dmidecode (1) dng (2) dos (2) dos2unix (1) dropbear (1) dropbox (1) dt3 (1) du (2) 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) exe (1) exif (6) exiftool (10) 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 (11) filefrag (1) find (6) for (3) format (1) fortune (1) fred weinhaus (1) fuse (4) fuse-lgefs (1) fzf (1) gdatafs (1) genisoimage (3) getcap (1) getfacl (1) getmail (1) ghostscript (1) gif (1) gnumeric (1) gnuplot (1) gömb (1) google (1) google drive (1) GPAC (1) gparted (2) gpg (3) gpg-zip (1) gplaycli (1) gps (2) gpsbabel (1) graphviz (1) grep (2) 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) hash (1) haszontalan (1) hdd (5) head (1) helyettesítés (1) hexadecimális (2) hp (1) hp-levels (1) http (1) hugin (1) icewm (1) icewm-light (1) identify (1) ifconfig (2) ifs (1) igo (1) imagemagick (12) imap (1) index (1) install (1) iotop (1) iperf (1) iso (3) java (2) jelszó (5) 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) linuxvilág (1) lm sensors (1) log (1) losetup (1) ls (3) lsof (1) LS COLORS (1) lzw (1) mac address (2) mad (1) mail (1) man (2) markdown (1) matroska (4) md5sum (1) 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) 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) patch (2) pbzip2 (3) pdf (8) pdfcrack (1) pdfjam (1) pdfnup (1) pdftk (2) pendrive (1) pentax (6) pgp (1) pgrep (1) PhotoRec (1) pi (1) picasa (1) picasaweb (1) pid (1) pigz (1) pipe (6) pktriggercord (1) play store (1) pop3 (1) popd (2) port (1) process (4) pushd (2) pv (3) pwgen (1) python (1) qimport (1) qr (2) qrencode (2) random (1) randr (1) recode (1) 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) 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 (2) sshfs (1) startx (1) stat (1) stopper (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) szkennelés (1) tail (2) tar (3) tee (3) text (2) tiff (1) time (1) timeout (1) tinta (1) titkosítás (3) tömörítés (4) top (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) uniq (1) unix (2) upower (1) urandom (1) user (1) utf 8 (1) változó (1) 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 (1) wget (1) which (2) whitespace (2) who (1) wifi (1) windows (1) wol (1) X (1) x264 (1) xargs (4) xbacklight (1) xclip (1) 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ő

Kiterjesztés levágása

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

Valójában csak azért írtam pár napja a basename-ról, hogy egy hiányosságára felhívjam a figyelmet. Ha egy scriptünk jpg fájlokkal dolgozik, akkor könnyen levághatjuk a kiterjesztést:

$ basename alma.jpg .jpg
alma

Ha viszont egy olyan scriptet írunk ami többféle formátummal is dolgozhat, akkor a basename-et nem tudjuk használni, mert nincs olyan paraméterezése (legalábbis nem tudok róla) ami az összes kiterjesztést levágja.

Ha csak kétféle kiterjesztést kell kezelni, akkor néha 2 basename-mel oldom ezt meg, de erre nem vagyok büszke. A következő módon a jpg és png kiterjesztést is le lehet vágni:

$ basename $(basename alma.jpg .jpg) .png
alma
$ basename $(basename alma.png .jpg) .png
alma

Ha univerzálisan akarjuk a kiterjesztést levágni, akkor a bash beépített lehetőségeit használhatjuk:

$ s=input.jpg
$ echo ${s%.*}
input

Ha nemcsak a kiterjesztést, hanem az alkönyvtárat is le akarjuk vágni (hasonlóan basename-hez) akkor kicsit még bonyolultabb a használat:

$ s=/tmp/input.jpg
$ echo ${s%.*}
/tmp/input
$ s2=${s##*/}
$ echo ${s2%.*}
input

 

Címkék: bash basename

basename

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

Bár már többször használtam, még nem írtam külön a basename-ről.

Alapesetben egy teljes útvonallal megadott fájlnévből kivágja a fájl nevét:

$ basename /eleg/hosszu/path/alma.txt
alma.txt

Leggyakrabban viszont a kiterjesztés levágására használják:

$ basename alma.txt .txt
alma
$ basename /eleg/hosszu/path/alma.txt .txt
alma

Címkék: basename

bash script módosítása futtatás közben

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

Manapság elég lassú bash scripteket futtatok és többször előfordult, hogy már a futás közben láttam, hogy mit kell majd a scriptben módosítani. Jó ötletnek tűnt a futás közben módosítani a scriptet, hogy a script befejezésekor rögtön el tudjam indítani az új változatot. Teljesen furcsa és érthetetlen hibajelzéseket kaptam ezért utánanéztem, és sajnos úgy tűnik, hogy bash nem olvassa be az egész scriptet a végrehajtás elején, hanem mindig csak az a kis részét amivel foglalkozik. Itt most ne óriási scriptekre gondoljunk, néhány kilobájtos scripteknél is tapasztaltam ezt, amelyek kényelmesen elférnének a memóriában.

Úgy tűnik nemcsak én gondoltam azt, hogy bátran módosíthatjuk a scripteket, ennél a stackoverflows kérdésnél is látszik, hogy a logikusnak tűnő elfogadott válasz -12 ( már -13 ) szavazatnál jár.

Címkék: bash

calibredb

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

A calibre néhány parancssoros eszközéről már írtam korábban, de ha a könyvadatbázisom kellett karbantartani, akkor eddig mindig elindítottam a GUI-t. Ez elég kényelmetlen, ha egyetlen könyvet akartam csak az adatbázisba tenni.

Szerencsére ez parancssorból sokkal egyszerűbben megy calibredb használatával:

calibredb add konyv.epub

Sajnos a send to device parancsot nem lehet parancssorból elérni, legalábbis én nem találtam meg.

 

 

Címkék: calibre calibredb

imagemagick lánc

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

Elég sokszor írtam már az imagemagickről, ami az egyik legjobb parancssoros képszerkesztő eszköz.

Ha egy bonyolult imagemagick scriptet írok, akkor gyakran valami ilyen lesz a végeredmény:

#!/bin/bash
WIDTH=$(identify -ping -format "%w" $1)
HEIGHT=$(identify -ping -format "%h" $1)
convert -size ${WIDTH}x${HEIGHT} radial-gradient:black-white temp1.png
convert $1 -colorspace gray temp2.png
convert $1 temp1.png -compose Multiply -composite -normalize temp3.png
convert $1 temp2.png -compose Minus -composite temp4.png
convert temp4.png -auto-level -modulate 200 +dither -colors 2 -colorspace gray -contrast-stretch 0 temp5.png
convert temp5.png -blur 20x20 temp6.png
convert temp5.png -negate temp7.png
convert temp7.png -blur 20x20 temp8.png
convert temp8.png temp3.png -compose Multiply -composite temp9.png
convert temp6.png $1 -compose Multiply -composite temp10.png
convert temp9.png temp10.png -compose Plus -composite output.png

Az nem túl fontos, hogy mit csinál a script, de látszik, hogy 11 lépésből áll, közben rengeteg ideiglenes fájlt gyárt ( amit trap-pel illik a végét letakarítani ).

A fenti scriptet átírthatjuk úgy, hogy egyetlen egy parancs legyen:

#!/bin/bash
WIDTH=$(identify -ping -format "%w" $1)
HEIGHT=$(identify -ping -format "%h" $1)
convert $1 \
    \( -size ${WIDTH}x${HEIGHT} radial-gradient:black-white \) \
    \( -clone 0 -colorspace gray \) \
    \( -clone 0 -clone 1 -compose Multiply -composite -normalize \) \
    \( -clone 0 -clone 2 -compose Minus -composite \) \
    \( -clone 4 -auto-level -modulate 200 +dither -colors 2 -colorspace gray -contrast-stretch 0 \) \
    \( -clone 5 -blur 20x20 \) \
    \( -clone 5 -negate \) \
    \( -clone 7 -blur 20x20 \) \
    \( -clone 8 -clone 3 -compose Multiply -composite \) \
    \( -clone 6 -clone 0 -compose Multiply -composite \) \
    \( -clone 9 -clone 10 -compose Plus -composite \) \
    -delete 0-10 \
output.png

A következő módon működik a script:

  • convert: Egyetlen egyszer kell convert-et hívni.
  • $1: Először is felsorolom az input képeket, ezeket convert megszámozza 0-tól kezdve. Fenti példában egyetlen input kép ($1) van, ez lesz a 0. kép.
  • \( ... \): Ez egyes alparancsok \( és \) között szerepelnek. Illik új sorba törni őket, hogy legyen egy kis esélyünk megérteni a scriptet.
  • Látszik, hogy nem határozunk meg output fájlt az alparancsoknál. Imagemagick szépen tovább számozza az elkészült fájlokat. A radial-gradient lesz az 1. a gray a 2. ...
  • Ha hivatkoznunk kell a korábbi fájlokra, akkor -clone index segítségével tehetjük ezt meg.
  • -delete 0-10: A legvégén eldobhatjuk az ideiglenes fájlokat. A fenti script 12 fájlt ( 0. 1. .... 11. ) gyárt, ebből csak az utolsó kell nekünk, égy a 0. indextől a 10. indexig törölhetjük a felesleges fájlokat.
  • output.png: A végső eredményt ide írjuk ki.
  • Ha töröljük a -delete részt, akkor output-0.png, output-1.png ... néven elmenti a script a részeredményeket is, ez elég hasznos, ha debuggolunk.

A script gyorsabb mint az eredeti verzió, mert nem kell png-re konvertálással, fájlba mentéssel, fájlból olvasással, png dekódolással tölteni az időt.

Látszik, hogy az indexekre eléggé oda kell figyelni, ha a script elejét módosítjuk, akkor a későbbi indexeket módosítani kell. Ezen lehet kicsit segíteni, ha kicsit átírjuk a scriptet:

convert $1 \
    \( -size ${WIDTH}x${HEIGHT} radial-gradient:black-white \) \
    \( -clone 0 -colorspace gray \) \
    \( -clone 0 -clone 1 -compose Multiply -composite -normalize \) \
    \( -clone 0 -clone 2 -compose Minus -composite \) \
    \( +clone -auto-level -modulate 200 +dither -colors 2 -colorspace gray -contrast-stretch 0 \) \
    \( +clone -blur 20x20 \) \
    \( -clone 5 -negate \) \
    \( +clone -blur 20x20 \) \
    \( +clone -clone 3 -compose Multiply -composite \) \
    \( -clone 6 -clone 0 -compose Multiply -composite \) \
    \( -clone 9 +clone -compose Plus -composite \) \
    -delete 0--2 \
output.png

  • Az előző lépésben létrejött képre hivatkozhatunk +clone paranccsal.
  • Használhatnám +clone helyett az azzal ekvivalens -clone -1-et is.
  • Ha a kettővel korábbi képre akarunk hivatkozni, akkor -clone -2 kellene.
  • delete 0--2: A -2. index az utolsó előtti képet jelenti.0--2 valójában a 0. indextől a -2. indexig tartó intervallumot jelenti, vagyis ezzel lehet az utolsó kép kivételével az összeset törölni.

 

Címkék: imagemagick

trap

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

Ha egy olyan scriptet írunk ami sok-sok ideiglenes fájlt hoz létre, akkor illik ezeket eltakarítani a script futása után. Többnyire a script legvégén szoktam a takaritást elvégezni, de ez nyilván nem nagyon segít amikor a script időközben meghal, vagy leállítom CTRL-C-vel.

Sokkal szebben lehet a takarítást trap segítéségével végezni. A következő egyszerű script 2 fájlt is létrehoz, és a kettő között 5 másodpercet pihen:

#!/bin/bash

cleanup() {
  echo "Cleaning up..."
  rv=$?
  rm -f aaa.txt bbb.txt
  echo "Cleaning finished"
  exit $rv
}

trap cleanup EXIT

touch aaa.txt
sleep 5
touch bbb.txt

A takaritást végző kódrészletet a cleanup függvénybe tettem. Nem feltétenül kell külön eljárást létrehoznunk erre, de így azért szebb.

Ha lefuttatjuk a scriptet, akkor szépen eltakarít maga után:

$ ./trap_test.sh
Cleaning up...
Cleaning finished

Ha elindítjuk a scriptet, de CTRL-C-vel megállítjuk a sleep közben, akkor is rendesen elvégzi a takarítást:

$ ./trap_test.sh
^CCleaning up...
Cleaning finished

Az EXIT helyett részletesebben is szabályozhatjuk, hogy milyen signalra milyen parancs fusson le. Ha pl. a fenti példában EXIT-et SIGINT-re cserélem, akkor rendes futásnál nem nem fut le cleanup, csak CTRL-C-nél.

Címkék: exit trap SIGINT

nethogs

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

Korábban már írtam a jnettop-ról amivel a hálózatot lehet figyelni. Mivel kapcsolatonként írja ki a statisztikát, elég kényelmetlen, ha egy programunk több különböző szerverrel is kommunikál egyszerre.

Ha programonként szeretnénk inkább áttekinteni a hálózati forgalmat, akkor sokkal kényelmesebb a nethogs.

Címkék: jnettop nethogs

dos2unix

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

Az egyik igen bosszantó dolog abban ha az ember párhuzamosan használ UNIX és Windows rendszereket az, hogy már egy egyszerű szövegfájlnál is problémába ütközhetünk az első sortörésnél, mert a két rendszer eltérően kezeli a sortöréseket. Ha valakit jobban érdekel a dolog történelmi háttere, akkor Jeff Atwood cikkét érdemes elolvasni.

Ha konvertálni szeretnénk a 2 formátum között, akkor dos2unix használata a legegyszerűbb:

dos2unix a.txt

Visszafelé is működik:

unix2dos a.txt

Címkék: unix dos cr lf dos2unix

bash ESC dot

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

Könnyen felhasználhatjuk az előző parancs paramétereit bash-ban az ESC dot segítségével:

$ echo aaaa bbbb cccc dddd
aaaa bbbb cccc dddd

Ha egymás után lenyomjuk az ESC és a pont billentyűket, akkor bash automatikusan a parancssorra másolja az előző parancs utolsó paraméterét (dddd).

A korábbi paramétereket is elérhetjük. <ESC> 1 <ESC> . az első paramétert (aaaa), <ESC> 2 <ESC> . a második paramétert (bbbb) másolja...

Ha a billentyűkombinációt többször egymás után használjuk, akkor a korábbi parancsok paramétereit érjük el. Vagyis pl. <ESC> . <ESC> . az utolsó előtti parancs utolsó paraméterét adja vissza.

Több helyen ESC dot helyett META dot-ként hivatkoznak erre. Nekem Meta (vagyis Alt) billentyűvel ez nem igazán működik. Van olyan terminál ahol egyáltalán nem megy, van olyan ahol csak az Alt-. megy.

Címkék: meta bash ESC

startx

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

Szerencsére egyre ritkábban kell manuálisan indítanom az X-et, de néha azért szükség van erre:

startx

Egy igen hasznos funkciója startx-nek (mint azt nemrég sajnálatos módon pár óra bugkeresés után megtanultam) az, hogy megadhatjuk, hogy melyik ablakozót indítsa el. Ha valamiért nem indul el rendesen a bonyolultabb ablakozónk (Gnome, KDE, ...) akkor érdemesebb egy egyszerűbbel próbálkozni. Nálam ez (történelmi okokból) az icewm-light:

startx /usr/bin/icewm-light

Fontos, hogy a teljes elérési utat meg kell adni.

Címkék: icewm X startx icewm-light

systemd-analyze

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

Ha lassan bootol a számítógépünk, akkor systemd-analyze segítségével kaphatunk részletes információt. Lekérdezhetjük a bootolás hosszát:

$ systemd-analyze
Startup finished in 6.697s (kernel) + 20.050s (userspace) = 26.748s

Részletesen kilistázhatjuk, pontosan mi is indul lassan:

$ systemd-analyze blame
         12.849s network-up.service
          6.058s systemd-suspend.service
          2.023s mandriva-everytime.service
          1.909s shorewall6.service
          1.436s fedora-storage-init.service
          1.036s shorewall.service
          ...

Valójában persze a folyamatok részben párhuzamosan indulnak, így igazából akkor van csak gond, amikor egymásra épülő szolgáltatások tartják fel egymást:

$ systemd-analyze critical-chain
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.

graphical.target @20.049s
└─multi-user.target @20.048s
  └─shorewall6.service @18.139s +1.909s
    └─network.target @18.137s
      └─network-up.service @5.286s +12.849s
        └─basic.target @5.285s
          └─mandriva-everytime.service @3.262s +2.023s
            └─local-fs.target @3.261s
              └─run-user-500-gvfs.mount @19.243s
                └─local-fs-pre.target @555ms
                  └─systemd-remount-fs.service @291ms +263ms
                    └─systemd-readahead-replay.service @216ms +67ms

Ha grafikusan szeretnénk áttekinteni a bootolás folyamatát:

systemd-analyze plot > plot.svg

Címkék: boot systems systemd-analyze

pdf készítése képekből - A4

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

Jópár évvel ezelőtt írtam, hogy képekből így lehet pdf-et készíteni:

convert *.jpg kepek.pdf

A módszer egyik hátránya, hogy nem mondjuk meg, mekkora oldalak vannak a pdf-ben, ami néhány pdf megjelenítő vagy nyomtató programban gondot okozhat.

Ha egyértelművé akarjuk tenni, hogy A4-es oldalat szeretnék 150dpi-vel akkor kicsit bővebb parancsra van szükségünk:

 convert *.jpg -resize 1241x1756 -units PixelsPerInch -density 150x150 -repage 1241x1756 kepek.pdf

A webes példákban többnyire 1240x1754-es, 1240x1753-as felbontás szerepel, de amikor utánaszámoltam, nekem 1241x1756 jött ki.

 

Címkék: pdf jpeg imagemagick A4

mad

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

A szövegfájl egyszerűségével nehéz vetélkedni, de ha egy kicsit is összetettebb dokumentációt írunk, akkor azért hiányzik az, hogy kiemeljünk részeket, felsorolásokat szúrjunk be...

Rengeteg bonyolultabb formátum van ahol szabadon formázhatjuk a szöveget (pl. HTML), de ezek többnyire túl összetettek ahhoz, hogy nyersen editáljuk őket. Pláne nem várhatjuk el ezt egy egyszerű felhasználótól.

A markdown formátumról én a Stackoverflownál hallottam először, nagyon sokan a GitHub README.md fájloknál csodálkoznak erre rá.

Bár a markdown formátum lényege pont az, hogy nyersen is igen jól olvasható, azért hasznos egy parancsoros markdown viewer, a sok közül én a mad-et próbáltam ki:

$ mad README.md

Címkék: text mad markdown

checkinstall nagyon egyszerű projecteknél

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

Írtam már a checkinstallról, amivel rpm (deb, ...) csomagot készíthetünk egy olyan projectből ami make install segítségével települne fel, kikerülve a csomagkezelőt.

Vannak olyan egyszerű projectek, ahol még make install sincsen, jellemzően egyetlen futtatható fájl keletkezik, és azt kézzel kell átmásolni a /usr/local/bin (vagy ~/bin) alkönyvtárba.

Ezeknél a projecteknél is használható checkinstall. Példaként installáljuk a qimport fájlt a /usr/local/bin alkönyvtárba:

checkinstall install -m 0755 qimport /usr/local/bin

A parancs legyártja a /home/user/rpmbuild/RPMS/x86_64/qimport-20151128-1.x86_64.rpm csomagot, amit utána már könnyen installálhatunk.

Többnyire -s (strip) kapcsolót is szoktam használni install parancsnál, de valamiért checkinstall ezt nem szereti.

Címkék: checkinstall install rpm

DNG tömörítés

2015.11.29. 10:00 | sala | 1 komment

A Pentax elég régóta támogatja a DNG fájlformátumot, Többek között nyilván azért, mert a saját PEF formátumukat nem tudták eléggé elterjeszteni. Nagyon sok fényképezőgépük képest DNG-be menteni. Eleinte tömörítetlen DNG-t gyártottak, később már veszteségmentesen tömörítettet. Számomra kissé furcsa módon a Q sorozat gépei újra tömörítetlen DNG-be mentenek.

Ha helyet szeretnénk spórolni, akkor a qimport segítségével konvertálhatjuk a tömörítetlen DNG fájlokat tömörített DNG fájlokká. Ha szükséges, akkor a visszafelé konverziót is elvégezhetjük:

$ qimport imgp2584.dng imgp2584_compressed.dng
$ qimport --reverse imgp2584_compressed.dng imgp2584_uncompressed.dng

A program JPEG tömörítést használ, de nem kell kétségbeesni, veszteségmentes jpegről van itt szó, Huffman-kódolást használ a program.

Bár a program neve arra utal, hogy a Pentax Q sorozat DNG fájljait tudja kezelni, a kódot megnézve nekem úgy tűnik más (12 bites) DNG fájlokkal is boldogul.

Címkék: pentax dng qimport

pdf jelszó feltörése

2015.11.23. 10:00 | sala | 2 komment

Nemrég írtam arról, hogyan adhatunk jelszóvédelmet egy pdf fájlhoz, adódik a kérdés, hogyan törhetjük ezt fel. Az előző példában használt 1234 jelszót elég gyorsan (laptopomon 5 perc) feltörhetjuk pdfcrack segítségével:

$ pdfcrack titok_jelszo.pdf

PDF version 1.5
Security Handler: Standard
V: 2
R: 3
P: -3904
Length: 128
Encrypted Metadata: True
FileID: c2188884ae81630733b6fa0ad14ef5f2
U: d512a0db3b14300dcf3a97c585ca164e00000000000000000000000000000000
O: c48f001fdd79a030d718df6dbbdaad81d1f6fedec4a7b5cd980d64139edfcb7e
Average Speed: 47776.9 w/s. Current Word: '3I9c'
Average Speed: 47711.2 w/s. Current Word: 'LX9g'
Average Speed: 47709.5 w/s. Current Word: 'Vbal'
Average Speed: 47700.9 w/s. Current Word: 'knap'
Average Speed: 47222.0 w/s. Current Word: 'e47s'
Average Speed: 46564.5 w/s. Current Word: '2k2w'
Average Speed: 46664.3 w/s. Current Word: '27WA'
Average Speed: 47224.7 w/s. Current Word: 'OPUE'
Average Speed: 47014.5 w/s. Current Word: 'MrRI'
Average Speed: 47014.7 w/s. Current Word: 'N3NM'
Average Speed: 46364.2 w/s. Current Word: '0hHQ'
Average Speed: 46843.7 w/s. Current Word: 'S0CU'
Average Speed: 46919.4 w/s. Current Word: 'b8yY'
Average Speed: 46733.1 w/s. Current Word: 'mhu2'
found user-password: '1234'

5 perc nem hosszú idő, de azért a kb. 50000 jelszó/másodperc azt is mutatja, hogy egy kicsit hosszabb jelszót már nehezen törne fel a program. Kivéve, ha van valami plusz információnk. Igen gyakran védenek jelszóval pdf fájlt úgy, hogy csak számjegyeket használnak a jelszóban. Megadva ezt az információt pdfcracknek már gyorsabb a törés:

$ pdfcrack titok_jelszo_6.pdf -c 0123456789

PDF version 1.5
Security Handler: Standard
V: 2
R: 3
P: -3904
Length: 128
Encrypted Metadata: True
FileID: b36c321f38d07288f29b3a893a8133db
U: 90844e112863b7c974f5afaaf857107b00000000000000000000000000000000
O: c431fab9dc5ef7b59c244b61b745f71ac5bb427b1b9102da468e77127f1e69d6
found user-password: '123456'

16 másodperc elég az 123456 jelszó megtalálásához.

Megadhatjuk a programnak ezen kívül a jelszó minimális illetve maximális hosszát, képest szólista alapján (password, passw0rd, qwertz, abc123,...) dolgozni. Ha nagyon lassú a törés, akkor a részeredményeket elmenthetjük és később folytathatjuk a munkát. A program egyetlen hiányossága talán az, hogy nem támogatja a többmagos processzorokat.

Ha valaki látja a jelszavát ebben a bejegyzésben, sűrgősen változtassa meg!

Címkék: jelszó pdf pdfcrack

pdf jelszóvédelem

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

Jelszóval védhetjük pdf fájljainkat pdftk segítségével:

echo 'titok' > titok.txt
ssconvert titok.{txt,pdf}
pdftk titok.pdf output titok_jelszo.pdf user_pw 1234

A példában előszöt titok.pdf fájlt készítettem (ssconverttel), majd az 1234 jelszót állítottam be.

Címkék: jelszó pdf pdftk ssconvert

Bartók - Laufer: UNIX felhasználói ismeretek

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

A 90-es évek végén ebből a könyvből tanultam a UNIX alapokat. Miután már rég nem árulják a könyvet elérhető weben is. Kezdőknek valószínűleg sokkal jobb egy logikusabb felépítésű könyvvel kezdeni, össze-vissza csapongó blogok helyett.

Aki papíron szeretné olvasni, az persze megveheti aktikváriumban is a könyvet, nekem is van eladó példányom a zsibvásáron.

Címkék: unix

ACL

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

Valószínűleg mindenki ismerti Unixban a fájlok jogosultságkezelését (itt írnak erről lényegesen részletesebben):

$ ls -l
-rw-r--r-- 1 user live 0 Nov 14 07:31 a.txt

Három jogosultságot (r: read, w: write, x: execute) adhatunk három szinten (user, group, other).

Bár többnyire elegendő ez a három szint, időnként felmerül, hogy jobb lenne felhasználói szinten kezelni a jogosultságokat. Egy darabig ez megoldható újabb és újabb csoportok létrehozásával, de nem mindig.

A pontosabb kezeléshez file access control list (file ACL) beállítására (setfacl) illetve lekérdezésére (getfacl) van szükség.

$ setfacl -m u:user2:r a.txt
$ ls -l a.txt 
-rw-r--r--+ 1 user live 0 Nov 14 07:31 a.txt
$ getfacl a.txt
# file: a.txt
# owner: user
# group: live
user::rw-
user:user2:r--
group::r--
mask::r--
other::r--

Először user2 felhasználónak adtam olvasási jogot a fájlhoz, ezután ls -l egyetlen + jellel jelzi, hogy valami speciális jog is be van állítva (hasonlóan setcaphoz, ezt is nehéz észrevenni). A jogokat getfacl listázza ki részletesen, kiemeltem azt a sort ami jelzi a frissen beállított jogot.

Ahhoz, hogy használhassuk ezt, szükségünk van arra, hogy a fájlrendszer támogassa ACL-eket, és arra is, hogy megfelelő módon legyen felmountolva a fájlrendszer. Az esetek többségében ezzel nem kell törődnünk, a leggyakrabban előforduló fájrendszerek támogatják ezt.

Címkék: user jogosultság setfacl getfacl

emacs -nw

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

A GNU emacs editort kétféle üzemmódban használhatjuk, karakteres és grafikus felülete is van. Akár már az installáláskor is választhatunk közülük, de jellemzően indításkor automatikusan választ a két üzemmód közül. Néha sajnos akkor is az X-es felületet indítja el amikor nem kellene, a következő egyszerű módon lehet a klasszikus karakteres felületet indítani:

emacs -nw

Címkék: emacs

bash: alapértelmezett érték

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

Ha írunk egy bash scriptet elég gyakori, hogy paramétereket is átadhatunk a scriptünknek, melyekre $1 $2 ... néven hivatkozhatunk. Szintén elég gyakori, hogy a paraméterek egy része opcionális. A következő igen egyszerű példában három paramétert fogad el a scipt, melyek alapértelmezett értékei rendre 100, 200, 300:

#!/bin/bash
echo ${1-100} ${2-200} ${3-300}

A script tesztelése:

$ teszt.sh a b c
a b c
$ teszt.sh a b
a b 300
$ teszt.sh a
a 200 300
$ teszt.sh
100 200 300

Bár nem igazán szoktam a nyelvek szintaxisát kritizálni, azért azt meg kell jegyeznem, hogy nem kicsit félrevezető a ${1-100} forma. Ha az 5. paraméterünk alapértelmezett értéke 1, akkor ${5-1}-et kell írni, ami még véletlenül sem ${4}.

Címkék: bash default value

videó elforgatása

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

Vertikális videót készíteni rettentően értelmetlen ( vonatkozó szakirodalom: itt ) de sajnos mégis igen elterjedt. Az ilyen videókat (melyeket nem én készítek!) ffmpeggel szoktam visszaforgatni:

ffmpeg -i input.mp4 -vf "transpose=1" -vcodec libx264 -b:v 1000k output.mp4

A transpose=1 az óramutató járásával megegyező irányban forgat 90 fokot.

Címkék: ffmpeg vertical video syndrome

gplaycli

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

Android alkalmazásokat tölthetünk le Google Play Store-ból gplaycli programmal:

Keressünk rá a "ZTE FC"-re az alkalmazások között:

$ gplaycli.py -s "ZTE FC"
Title                        Creator                       Size    Downloads       Last Update    AppID                               Version    Rating  
ZTE FC                       NaviPro Richpoi               1.7MB   100+            29 avr. 2015   com.mynews1.ztefc                   3          4.67    
Битва Замков - Castle Clash  IGG.COM                       75.9MB  5 000 000+    24 août 2015  com.igg.castleclash_ru              1200290    4.75    
Star Rocket                  Andosoft                      5.4MB   50 000+        13 août 2013  com.andosoft.starocket              8          3.53    
Critical Strike Portable     Critical Force Entertainment  48.0MB  10 000 000+   15 déc. 2014  com.StudioOnMars.CSPortable         3589       4.22    
Avira Antivirus Security     AVIRA                         9.9MB   10 000 000+   1 sept. 2015   com.avira.android                   3734       4.39    
Synthèse vocale Google       Google Inc.                   18.9MB  1 000 000 000+17 juil. 2015  com.google.android.tts              210305063  4.01    
Viber                        Viber Media S.à r.l.          38.0MB  100 000 000+  1 sept. 2015   com.viber.voip                      104        4.32    
My BOLT! (Official)          PT INTERNUX                   11.1MB  500 000+       13 août 2015  com.boltsuper4g.ioda                18         3.88    
Radardroid Lite              Ventero Tel.                  7.8MB   5 000 000+    7 août 2015   com.ventel.android.radardroid.lite  332        4.20    
Navy Battle 3D               BitmapPiranha                 12.2MB  1 000 000+    31 août 2013  com.bp.navybattle                   12112      3.51 

A táblázat alapján letölthetjük a minket érdeklő alkalmazást:

$ gplaycli.py -d com.mynews1.ztefc

A letöltéshez szükségünk van persze egy google accountra és egy android_ID-ra, ezt a credential.conf fájlban állíthatjuk be. Az esetek többségében jó a program által használ alapértelmezett beállítás, de használhatjuk a saját accountunkat is.

 

Címkék: google android play store gplaycli

Hibás szimbolikus linkek

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

Nagyon hasznosnak tartom a szimbolikus linkeket, de ha letöröljük a fájlt amire mutatnak, akkor semmilyen hibajelzést nem kapunk, vagyis ha nem figyelünk egy idő után elszaporodnak a hibás szimbolikus linkek. Legegyszerűbb a következő módon kereshetjük meg a hibás linkeket:

$ find . -type l -xtype l

Ha valakit részletesebben érdekel, itt lehet bővebben olvasni a lehetséges keresési módszerek előnyeiről, hátrányairól.

Címkék: szimbolikus link

man

2015.09.05. 10:00 | sala | 4 komment

Valószínűleg a blog első bejegyzése lehetetett volna a man parancs leírása, de valamiért feltételeztem, hogy a blog összes olvasója jól ismeri a man-t.

A legutóbbi stat-ról szóló bejegyzés írásakor viszont újra beleszaladtam a man egyik számomra bosszantó jellemzőjébe. A man oldalak típus szerint csoportosítva vannak, és sajnos előfordul, hogy bizonyos eseteben nem a minket érdeklő típust mutatja meg a man.

Például a stat 3 csoportban is megtalálható a gépemen (apropos segítségével a legkönnyebb ezeket megtalálni):

$ apropos stat | grep '^stat '
stat (3p)            - get file status
stat (1)             - display file or file system status
stat (2)             - get file status

A különböző dokumentációkhoz a

$ man 1 stat
$ man 2 stat
$ man 3p stat

parancsokkal férhetünk hozzá.

Címkék: man