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ő

time stopper

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

A time paranccsal egy program futási idejét tudjuk megmérni. Pl. ha a egy tömörítés idejére vagyunk kíváncsiak:

time gzip nagy.txt

A time-ot akár (egy igen egyszerű) stopperként is használhatjuk:

time cat

A stopperórát CTRL-D segítségével állíthatjuk le.

Címkék: time stopper

Több matroska összefűzése

2010.04.02. 10:00 | sala | 2 komment

Több matroska fájlt (azonos felbontás, kódolás, ...) egymás után kapcsolhatunk az mkvmerge paranccsal:

mkvmerge -o teljes.mkv resz1.mkv +resz2.mkv

Ne felejtsük el a + jelet a második input fájl neve elött, ezzel jelezzük, hogy egymás után szeretnénk a resz1.mkv resz2.mkv fájlokat kapcsolni!

Címkék: mkv mkvmerge mkvtoolnix

avi konvertálás matroskába feliratokkal

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

Az avi konténerformátum egyik nagy hiányossága, hogy (legalábbis eredeti formájában) nem támogatja a feliratok beágyazását. A matroska tervezésekor erre már figyeltek, így ha avi fájlt konvertálunk matroskába MKVToolnix segítségével, akkor a feliratokat is kezelhetjük.

Tegyük fel van egy film.avi fájlunk (videó + angol hang), ezen kívül  film_en.srt az angol, film_hu.srt a magyar feliratokat tartalmazó fájl. Utóbbi  utf-8 kódolású. A következő paranccsal készíthetjük el a film.mkv fájlt:

mkvmerge -o film.mkv --language 1:eng film.avi --language 0:eng film_en.srt --language 0:hun film_hu.srt

A --language kapcsoló segítségével először a hangsáv, majd a feliratok nyelvét határozzuk meg.

Címkék: felirat avi matroska mkvmerge mkvtoolnix

recode

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

Bár az UTF-8 egyre inkább elterjedőben van, valószínűleg még elég sokáig elő fog fordulni, hogy belebotlunk egy olyan szövegfájlba ami nem a számunkra megfelelő karakterkódolással készült. (Érdemes lehet elolvasni Joel nagyszerű cikkét a témáról).

Ha egy fájl karakterkódolását szeretnénk megváltoztatni, a recode programmal tehetjük meg. Ha egy latin2 kódolású fájl helyett utf-8-ra van szükség:

recode latin2..utf-8 < eredeti.txt > ujrakodolt.txt

A recode program számtalan karakterkódolást ismer, a listát a

recode -l

segítségével kaphatjuk meg.

 

 

Címkék: karakterkódolás recode utf 8

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

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

A korábban már említett imagemagick segítségével egyetlen utasítással pdf-et készíthetünk különálló képekből:

convert *.jpg kepek.pdf

Ha kisebb méretű pdf-et szeretnénk (a képek minőségének romlása árán), használjuk a -quality kapcsolót:

convert *.jpg -quality 50 kepek.pdf

Címkék: pdf convert imagemagick

dump

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

Ha egy bináris fájlba szeretnénk belenézni, akkor gyakran fontos, hogy a fájl nyers tartalmát lássuk, ne pedig valamilyen megjelenítőprogram által konvertált értéket. Még az olyan egyszerű programok mint a less is végeznek némi konverziót, ami néha zavaró.

Ha a fájl "igazi" tartalmára vagyunk kíváncsiak jól jöhet az od program. Vegyünk egy igen egyszerű szövegfájlt ( ekezet.txt ):

Ez egy teszt áé.

Ennek a fájlnak a tartalmát szeretnénk megnézni (pl. mert érdekel, milyen karakterkódolást is használ a fájl)

Ha lefuttatjuk az

od ekezet.txt

parancsot, a következő eredményt kapjuk:

0000000 075105 062440 074547 072040 071545 072172 141440 141641
0000020 027251 000012
0000023

Az első oszlop mutatja a fájlon belüli pozíciót, a többi a fájl tartalmát.

Az eredmény megértéséhez segít, ha tudjuk, hogy od=octal dump, vagyis alapértelmezésben oktális (nyolcas) számrendszerben kapjuk az eredményt. A valóságban sokkal gyakrabban van szükségünk decimális (tízes) vagy hexadecimális (tizenhatos) számrendszerre. A hexadecimálishoz a következő utasítást kell végrehajtanunk:

od -tx1 ekezet.txt

A -t kapcsoló jelenti azt, hogy formátummeghatározás következik, x jelenti a hexadecimálisat, az 1 azt, hogy 1 bájtos egységekben:

0000000 45 7a 20 65 67 79 20 74 65 73 7a 74 20 c3 a1 c3
0000020 a9 2e 0a
0000023

 Ha egyidejűleg szeretnénk látni a decimálisat is:

od -tx1d1 ekezet.txt

Az eredmény:

0000000   45   7a   20   65   67   79   20   74   65   73   7a   74   20   c3   a1   c3
          69  122   32  101  103  121   32  116  101  115  122  116   32  -61  -95  -61
0000020   a9   2e   0a
         -87   46   10
0000023

Végül ha a decimális és hexadecimális mellett szeretnénk látni a karaktereket is:

od -atx1d1 ekezet.txt

Az eredmény:

0000000    E    z   sp    e    g    y   sp    t    e    s    z    t   sp    C    !    C
          45   7a   20   65   67   79   20   74   65   73   7a   74   20   c3   a1   c3
          69  122   32  101  103  121   32  116  101  115  122  116   32  -61  -95  -61
0000020    )    .   nl
          a9   2e   0a
         -87   46   10
0000023

Címkék: dump od decimális hexadecimális oktális

Process helyettesítés

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

 A named pipe bemutatásakor a következő példát:

tcextract -i mozi.vob -t vob -x mpeg2 > mozi.m2v
tcextract -i mozi.vob -t vob -x ac3 > mozi.ac3
mplex -f 8 -o mozi.mpg mozi.m2v mozi.ac3

 átírtam erre az új, hatékonyabb verzióra:

mkfifo aud.fifo
mkfifo vid.fifo
tcextract -i vid.fifo -t vob -x mpeg2 > mozi.m2v &
tcextract -i aud.fifo -t vob -x ac3 > mozi.ac3 &
cat mozi.vob | tee vid1.fifo aud1.fifo > /dev/null
mplex -f 8 -o mozi.mpg mozi.m2v mozi.ac3
rm aud.fifo vid.fifo

Bár ez az új verzió hatékonyabb, hiszen csak egyszer olvassa végig a mozi.vob fájlt, semmiképpen sem nevezhető túl szépnek. Kétszer olyan hosszú mint az előző, és a name pipe létrehozás majd törlés elég feleslegesnek tűnik.

Szerencsére valóban van egy sokkal tisztább megoldás, a csövek helyett process helyettesítést kell alkalmazni:

cat mozi.vob | tee >(tcextract -t vob -x mpeg2 > mozi.m2v) >(tcextract -t vob -x ac3 > mozi.ac3) > /dev/null
mplex -f 8 -o mozi.mpg mozi.m2v mozi.ac3

A >() segítségével (nem kell szóköz a zárójel elé!) ügyesen össze tudjuk kötni a tee parancsot és a tcextract parancsokat (a -i kapcsolóra azért nincsen szükség, mert tcextract nem fájlból, hanem standard inputról olvas).

Érdemes még megjegyezni, hogy a process helyettesítés (process substitution) nem összekeverendő a parancsbehelyettesítéssel (command substitution).

Címkék: helyettesítés process pipe tee

parancsbehelyettesítés

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

A korábban már gyakran használt pipe-ok mellett más mód is van rá, hogy egy parancs eredményét egy másik parancsnak átadjuk. A ` karakter segítségével tudjuk a parancsbehelyettesítést (command substitution) használni. Az

mkdir backup_`date +%Y%m%d`

hatására lefut a date parancs és visszaadja az aktuális nap dátumát yyyymmdd formátumban, így a bejegyzés élesítésekor a fenti utasítás az

mkdir backup_20100314

parancsnak felel meg.

Bár eredetileg a fent is használt ` karakterrel lehetett csak a parancsbehelyettesítést használni, egy ideje inkább a $() használata javasolt (pl. a könnyebb egymásbaágyazhatóság miatt). Vagyis a

mkdir backup_$(date +%Y%m%d)

forma is használható.

Címkék: date pipe parancsbehelyettesítés

split + cat

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

Bár szerencsére elmúltak azok az idők, amikor floppy méretűre (fiatalabbaknak: 1.2MB, 1.44MB) kellett a nagyobb fájlokat szétvagdosni, most is előfordul, hogy egy fájlt muszáj szétdarabolnunk. Például ha egy DVD iso fájlt szeretnénk FAT32 fájlrendszerre másolni, könnyen beleütközhetünk a 4GB-os korlátba.

Fájlokat legegyszerűbben a split paranccsal darabolhatunk. A következő parancs a nagy.iso fájlt (kb. 4.5 GB) darabolja 1 gigabyte-os részekre:

split -b 1G nagy.iso

A parancs határása xaa, xab, xac, xad, xae elnevezésű fájlok jönnek létre, melyekből az első 4 darab 1 GB-os, az utolsó pedig kb. 0.5 GB. Fontos megjegyezni, hogy a fájlok semmilyen fejléccel nem rendelkeznek ami a darabolásra utalna (milyen fájl darabolásakor jöttek létre, hány darabra daraboltuk a fájl, hányadik darabról van szó,...).

Ha újra szeretnénk összeragasztania  darabokat, akkor a cat paranccsal tehetjük meg:

cat xa* > nagy2.iso

Ha a split eredeti elnevezési módszere nem tetszik (az xaa, xab,... tényleg nem túl bőbeszédű), akkor kérhetünk az "x" helyett más prefixet, és numerikus sorszámozást is:

split -b 1G -d nagy.iso nagy_

Így nagy_01, nagy_02, nagy_03, nagy_04, nagy_05 fájlok jönnek létre, jelentősen növelve az esélyét, hogy később megtaláljuk ezeket a fájlokat, akkor eszünkbe jut, mit daraboltunk szét.

 

 

 

 

 

Címkék: cat split

named pipe

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

A dvdauthor parancssoros használatát bemutató bejegyzésben szerepelt az alábbi kódrészlet:

tcextract -i mozi.vob -t vob -x mpeg2 > mozi.m2v
tcextract -i mozi.vob -t vob -x ac3 > mozi.ac3
mplex -f 8 -o mozi.mpg mozi.m2v mozi.ac3

 Ha jobban megnézzük, akkor észrevehető, hogy mozi.vob fájlt kétszer olvassuk végig. Ez nyilván nem túl hatékony, a mostani bejegyzés célja egy olyan megoldás bemutatása, ahol elég egyszer végigolvasni a fájl. (Ha csak egyszer olvassuk végig, akkor nem is feltétlenül kell a DVD-ről a vob fájlt átmásolni a merevlemezre).

Korábban már többször használtunk pipe-okat (csöveket), most is ezt fogjuk tenni, de a korábbi példákkal ellentétben most named pipe-okra ( másnéven FIFO, magyarul talán elnevezett vagy nevesített cső ) lesz szükségünk:

mkfifo aud.fifo
mkfifo vid.fifo
tcextract -i vid.fifo -t vob -x mpeg2 > mozi.m2v &
tcextract -i aud.fifo -t vob -x ac3 > mozi.ac3 &
cat mozi.vob | tee vid1.fifo aud1.fifo > /dev/null
mplex -f 8 -o mozi.mpg mozi.m2v mozi.ac3
rm aud.fifo vid.fifo

Először is létrehozunk 2 named pipe-ot az mkfifo paranccsal, és elindítjuk a háttérben ( & ) a két tcextract parancsot, ami az eredeti verzióval szemben nem a mozi.vob fájlt, hanem a csöveket olvassa. Adat is kell a csövekbe, ezért cat paranccsal olvassuk ki a vob fájlt, a tee segítségével pedig egyszerre öntjük bele a kiolvasott adatot a 2 csőbe. Az mplex parancs nem változott, a legvégén letöröljük a csöveket.

Címkék: pipe tee named mplex

dvdauthor

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

Ha Linux alatt DVD-t szeretnénk készíteni, akkor a dvdauthor program szinte megkerülhetetlen. Igen sok grafikus interfésszel rendelkező linuxos program is erre épül. Leginkább XML nyelven paraméterezhetjük dvdauthort, de az alapvetőbb dolgokat XML nélkül is megvalósíthatjuk. A következő példa is ilyen.

Adott mozi.vob fájl ( mondjuk egyik DVD-nkről ) és ebből szeretnénk DVD-t írni, menü nélkül. Az egyszerűség kedvéért feltételezzük, hogy a videó mpeg2 ( ez szinte mindig igaz ), az audió pedig ac3 ( ez is igen gyakori ).

tcextract -i mozi.vob -t vob -x mpeg2 > mozi.m2v
tcextract -i mozi.vob -t vob -x ac3 > mozi.ac3
mplex -f 8 -o mozi.mpg mozi.m2v mozi.ac3
dvdauthor -o dvddir -t mozi.mpg
dvdauthor -o dvddir -T
genisoimage -o mozi.iso -dvd-video dvddir/

Először tcextract-tal ( transcode csomag ) szétválasztjuk a vob videó és audió streamjét, majd mplex ( mjpegtools csomag ) segítségével újra összefűzzük. ( Ez elsőre feleslegesnek tűnik, de szükség van rá ).

Ezután a frissen gyártott mozi.mpg fájlt új title-ként hozzáadjuk a dvd-hez ( -t kapcsoló ). Ha van elég hely, akár több title-t is hozzáadhatunk. Miután hozzáadtuk az összeset, tartalomjegyzéket is kell generáltatnunk ( -T kapcsoló ).

Végül a dvdauthor által készített dvddir alkönyvtárból iso fájlt gyártunk, amit már kiírhatunk a lemezre.

Címkék: dvd transcode mjpegtools genisoimage dvdauthor

tee

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

A korábbi bejegyzésekben már többször használtam pipe-okat (csöveket) a különböző parancsok összekapcsolására. Könnyen belátható, hogy az eddig használt ( 1 bemenettel, 1 kimenettel rendelkező ) csövekkel túl összetett rendszert nem lehet összeállítani. Egy összetettebb csőhálózathoz igen hasznos egy elágazás ( vízvezetékszerelőül: t-idom ).

A tee parancs a standard inputon érkező adatot másolja a standard outputra és a paraméterben megadott fájlokba.

Legegyszerűbb eset az, amikor egy parancs eredményét egyszerre szeretnénk a képernyőn látni és egy fájlba menteni:

ls -l | tee lista.txt

 Ha szeretnénk, akkor persze tovább bonyolíthatjuk a dolgot:

ls -l  | tee lista.txt | less

Címkék: pipe tee

Több avi összefűzése

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

Több avi fájlt ( azonos felbontás, kódolás,... ) igen könnyen egymás után kapcsolhatunk újrakonvertálás nélkül az avimerge paranccsal ( a transcode programcsomag része ):

avimerge -o nagy.avi -i kis1.avi kis2.avi kis3.avi

Ha inkább mencodert szeretnénk használni, akkor a következő parancsot használhatjuk:

mencoder -ovc copy -oac copy -o nagy.avi kis1.avi kis2.avi kis3.avi

 

 

Címkék: avi mencoder transcode

pv -L

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

Egy korábbi bejegyzésben írtam a pipe viewerről ( pv ), aminek segítségével információt kaphatunk például arról, hogy egy nagy fájl tömörítése során milyen sebességgel olvassuk az inputfájlt:

pv nagy.pgn | gzip -c > nagy.gz

Mint a neve is utal rá, pv alapvető célja a megfigyelés, és nem módosítja az eredeti parancs (fenti példában gzip) működését.

Van azonban egy kapcsoló ( -L ), aminek segítségével limitálhatjuk az adatáramlás sebességét:

pv -L 1M nagy.pgn | gzip -c > nagy.gz

A példában 1 MB/s-ban korlátoztuk a nagy.pgn fájl olvasási sebességét. A kapcsoló sebességével egyrészt jobban beoszthatjuk az erőforrásokat, másrészt például tesztelhetjük scriptjeink működését lassú hálózati kapcsolaton.

Címkék: pipe pv

x264 többszálúság

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

Manapság az egyik leginkább időigényes feladat amit egy átlagszámítógép végez, a videókonvertálás. Különösen fontos, hogy többmagos processzorunk összes magja ki legyen használva ilyenkor. Az egyik legismertebb linuxos h264 kódoló, az x264 szerencsére támogatja a többszálúságot.

Attól függően, milyen módon használjuk, eltérő a többszálúság bekapcsolásának módja. Én transcode-ot használok ffmpeg export modullal ( itt egy példa ), ebben az esetben az ffmpeg.cfg fájlban adhatjuk meg a szálak számát:

[h264]
threads=2

Elvileg a threads=auto beállításával automatikusan választja ki x264 a processzor alapján a szálak számát, nekem ez nem működött.
 

Címkék: ffmpeg smp x264 transcode h264

pipe viewer

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

A parancsor használatának egyik hátránya, hogy gyakran nem kapunk visszajelzést arról, hogy az éppen elindított parancs várhatóan mennyi ideig fog futni. Néhány időigényesebb programban van természetesen visszajelzést, de ez nem általános.

Kihasználva azt, hogy a bonyolultabb parancsokat valószínűleg úgyis pipe-okkal kapcsoljuk össze, használhatjuk a pv ( pipe viewer ) programot, hogy vizuális visszajelzést kapjunk a futó programunkról.

Vegyünk egy egyszerű példát, tömörítsünk össze egy nagyméretű fájlt:

gzip nagy.pgn

Először is vegyük a fentivel megegyező ( leszámítva, hogy megmarad az eredeti tömörítetlen fájl is ) ám a pipe-okat jobban kiemelő formát:

cat nagy.pgn | gzip -c > nagy.gz

Ha a pv programnak egy fájlnevet adunk paraméternek, akkor a standard outputra másolja a fájl tartalmát, így könnyen lecserélhetjük a cat parancsot:

pv nagy.pgn | gzip -c > nagy.gz

A pipe viewer segítségével folyamatos információt kapunk arról, hol tartunk a tömörítésben:

 

 Egy bonyolultabb példában több pv-t is használhatunk. Az előző példát kibővíthetjük úgy, hogy necsak az input fájl olvasásának sebességéről kapjuk információt, hanem az output írási sebességéről is:

pv -cN pgn nagy.pgn | gzip -c | pv -cN gz > nagy.gz

Egyrészt kihasználtuk azt, hogy ha pv nem kap fájlnevet paraméterként akkor a standard inputot másolja a standard outputra, másrészt elneveztük ( -N kapcsoló ) a két pv-t. A -c kapcsoló a cursor pozícionálását befolyásolja, -N használatakor érdemes használni.

Az eredmény a következő képen látszik:

 

 Látható, hogy mivel a második pv standard inputról olvassa az adatokat, nem tudhatja, hogy mennyi adat jön még, így ott nincs információ a várható befejezési időről.

Címkék: pipe pv

MJPEG konvertálása

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

Egyre több digitális tükörreflexes fényképezőgéppel lehet normális minőségű videófilmet készíteni. A fényképezőgépek többnyire MJPEG kodeket használnak, vagyis némileg leegszerűsítve minden egyes képkocka egy külön JPEG. Bár az MJPEG-nek vannak előnyei, nagy hátránya, hogy nem túl hatékony.

A következő példában a Pentax K-X által készített videót konvertáljuk át valami használhatóbb formátumba. A Pentax által készített videóról a következőket érdemes tudni:

  • felbontás: 1280x720
  • 24 fps
  • Bitráta kb. 40000 kbps (ez függ a beállított minőségtől, felvételtől)
  • hang: tömörítetlen pcm, 512 kbps
  • Weben többen panaszkodnak, hogy nem minden szoftver nyitja meg, ami elvileg támogatja az MJPEG kodeket. (mind később látjuk, nekem ilyen gondom nem volt)

A cél a következő:

  • Felbontást nem változtatjuk
  • 24 fps-hez sem nyúlunk (Ha PAL DVD-t készítenénk, akkor érdemes lenne 25 fps-re konvertálni, annak minden nyűgével együtt)
  • h264 kodeket használunk
  • hangot mp3-ba konvertáljuk (a default 128 kbps jó lesz).

Az egyik legjobb Linux alatt elérhető parancssoros konvertert ( transcode ) használva:

transcode -i input.avi -y ffmpeg,tcaud -F h264 -o output.avi

A paraméterek magyarázata:

  • -i input.avi
    Input fájl. Szerencsére transcode felismeri a formátumot, ffmpeg import modult használva fel is tudja dolgozni minden gond nélkül.
  • -y ffmpeg,tcaud
    Export modulok megadása. A videót ffmpeg export modullal, az audiót tcaud export modullal fogjuk elkészíteni.
  • -F h264
    kodek kiválasztása. ffmpeg számtalan kodeket ismer, ezek közül választjuk a h264-et.
  • -o output.avi
    output fájl.

Nyilván a finomhangolással még rengeteg időt el lehetne tölteni.

 

 

 

Címkék: avi ffmpeg pentax k x transcode h264

avi index javítás

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

Ha egy avi fájl indexe sérült vagy hiányzik, mplayer segítségével könnyen lejátszhatjuk:

mplayer -forceidx hibasindex.avi

Ha meg szeretnénk javítani az indexet, akkor mencoder-t (mplayer encoder) használhatjuk:

mencoder -forceidx hibasindex.avi -o joindex.avi -oac copy -ovc copy
 

Címkék: index avi mplayer mencoder

avi konvertálás matroskába

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

Egyre elterjedtebb a matroska konténerformátum, úgy néz ki lassan leváltja a jó öreg avi-t. Matroska fájlok kezelésében az MKVToolnix csomag segít. Az egyik legegyszerűbb feladat egy már létező avi átcsomagolása mkv formátumba (újrakódolás nélkül persze):

mkvmerge -o teszt.mkv teszt.avi

Címkék: avi mkv matroska

bash parancsok egymás után

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

Az egyik első dolog amit bash parancsokkal kapcsolatban a dokumentációk megemlítenek, az hogy nagyon egyszerű szekvenciálisan egymás után végrehajtani a parancsokat, elég pontosvesszővel elválasztani őket:

parancs1; parancs2; parancs3

A fenti módszerrel a három parancsot egymás után végrehajtjuk, függetlenül azok eredményétől. Az esetek többségében ez nem veszélyes, de egyszer egy ismerősöm a következő parancsot adta ki a / alkönyvtárban:

cd /itt/egy/nagyon/bonyolt/es/hosszu/alkonyvtar/volt; rm -rf *

és sajnos közben elírta a nagyon hosszú alkönyvtár címét...

Hacsak lehetséges kerüljük a ; használatát parancsok elválasztásakor, és használjuk helyette az && operátort, ami csak akkor hatja végre a második parancsot, ha az első sikeresen lefutott (vagyis nullát adott visszatérő értéknek). A fenti igen kellemetlen meglepetéseket így elkerülhetjük.

parancs1 && parancs2 && parancs3

 

 

Címkék: bash &&

Sorok számozása

2010.02.03. 10:00 | sala | 2 komment

Bár most nem jut eszembe mikor, de időnként hasznos ha egy fájl sorait megszámozzuk. Legegyszerűbben a cat paranccsal tehetjük ezt. Ha az összes sort meg szeretnénk számozni akkor a -n, ha csak a nem üres sorokat, akkor a -b kapcsolót használhatjuk.

# cat -n teszt.txt
     1    egy
     2    kettő
     3    három
     4   
     5    négy
     6    öt
     7    hat
     8   
     9    hét

# cat -b teszt.txt
     1    egy
     2    kettő
     3    három

     4    négy
     5    öt
     6    hat

     7    hét

Ha ennél bonyolultabb módon szeretnénk a sorokat megszámozni, akkor az nl parancs segíthet:

# nl -w 3 -i 2 -v 2 -nrz teszt.txt
002    egy
004    kettő
006    három
   
008    négy
010    öt
012    hat
   
014    hét

A fenti példában használat paraméterek jelentése:

-w 3: Három számjegy a sorszám,
-i 2: kettesével növekszik,
-v 2: kettővel kezdődik,
-nrz: jobbra igazítva, 0-k kiírva.

Címkék: cat nl sorszámozás

rename

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

Ha tömegesen kell fájlokat átneveznünk, kényelmesen megtehetjük a rename programmal. Használata igen egyszerű ( rename from to file... ), mint a következő példán is látszik:

[sala]$ ls -1
alma_1.txt
alma_2.txt
alma_3.txt
alma_4.doc
[sala]$ rename alma dinnye *.txt
[sala]$ ls -1
alma_4.doc
dinnye_1.txt
dinnye_2.txt
dinnye_3.txt

bash ctrl-r

2010.01.28. 10:00 | sala | 2 komment

Azt szinte mindenki tudja, hogy a bash megjegyzi a korábbi parancsokat ( alapesetben a ~/.bash_history fájlban ), és a korábbi parancsokat a felfele nyíllal érhetjük el. Ez kényelmes, ha egy nem túl régi parancsot keresünk, de elég kényelmetlen, ha egy olyan parancsot, amelyet néhány napja (hete) futtattunk. ( Gyakran látom, hogy többen ilyenkor 20-30 alkalommal lenyomják a felfele nyilat, hátha megtalálják a parancsot. Többnyire nem, vagy csak nagyon lassan sikerül. ).

Ennél sokkal egyszerűbb a ctrl-r használata. A billentyűkombinációt lenyomva (reverse-i-search) módba kerülünk, és a korábbi parancs egy tetszőleges részét beírva könnyen megtalálhatunk egy régi parancsot.

Címkék: bash

checkinstall

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

A Linux disztribúciók többsége rendelkezik valamilyen ( többnyire rpm vagy deb alapú ) csomagkezelő rendszerrel, amivel kényelmesen installálhatunk programokat. Bár a repository-k rengeteg programot tartalmaznak, időnként manuálisan ( forráskódot letöltve, majd a programot lefordítva ) kell programokat installálnunk. Az így telepített programok persze jól működnek, de zavaró lehet, hogy nem látszanak a csomagkezelőben. Ezen a problémán segít a checkinstall program, ami képes a manuális programinstallálást nyomon követni, és rpm ( vagy deb, vagy tgz ) csomagot készíteni.

Alapesetben a make install parancsot hajtja végre checkinstall, de ha kell megadhatjuk, hogy mit futtasson ( pl. checkinstall ./install.sh ).

A program elég ügyesen felismeri mit szeretnénk installálni, de persze lehetőségünk van a csomag paramétereinek módosítására:

1 -  Summary: [ Dvdwizard ]
2 -  Name:    [ dvdwizard ]
3 -  Version: [ 0.6.1 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ i586 ]
8 -  Source location: [ dvdwizard-0.6.1 ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ dvdwizard ]


Ha minden jól sikerült, akkor checkinstall elkészíti az rpm-et, de nem installálja, így ellenőrízhetjük minden rendben ment-e. Ha optimisták vagyunk, akkor persze kérhetünk automatikus installálást is. A fenti példában szereplő dvdwizard installálása során készített rpm a következő fájlokat tartalmazza:

[root@machine etc]# rpm -ql dvdwizard
/etc
/etc/dvdwizard.conf
/etc/dvdwizard.conf.old
/usr
/usr/local
/usr/local/bin
/usr/local/bin/chaptercheck
/usr/local/bin/dvdcpics
/usr/local/bin/dvdtguess
/usr/local/bin/dvdwizard
/usr/local/bin/mk_vmgm
/usr/local/bin/mk_vtsm
/usr/local/bin/mk_vtsm_info
/usr/local/bin/mk_vtsm_lang
/usr/local/bin/mpgprobe
/usr/local/bin/txt2png
/usr/local/share
/usr/local/share/dvdwizard
/usr/local/share/dvdwizard/dvdwizardrc
/usr/local/share/man
/usr/local/share/man/man1
/usr/local/share/man/man1/dvdwizard.1.lzma
/usr/local/share/man/man1/mk_vmgm.1.lzma
/usr/local/share/man/man1/mk_vtsm.1.lzma
/usr/local/share/man/man5
/usr/local/share/man/man5/dvdwizard.conf.5.lzma
/usr/share
/usr/share/doc
/usr/share/doc/dvdwizard
/usr/share/doc/dvdwizard/CHANGELOG
/usr/share/doc/dvdwizard/COPYING
/usr/share/doc/dvdwizard/README
/usr/share/doc/dvdwizard/TODO
/usr/share/doc/dvdwizard/doc
/usr/share/doc/dvdwizard/doc/dvdwizard.1
/usr/share/doc/dvdwizard/doc/dvdwizard.conf.5
/usr/share/doc/dvdwizard/doc/mk_vmgm.1
/usr/share/doc/dvdwizard/doc/mk_vtsm.1

 

Címkék: checkinstall deb rpm

imagemagick

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

Ha képekkel dolgozunk, akkor nyilván rengeteg olyan feladat van amit grafikus felülettel rendelkező programmal ( pl. gimp ) oldhatunk meg legegyszerűbben. Vannak azonban olyan esetek, amikor egyszerűbb a parancssor használata.

Az ImageMagick az egyik legelterjedtebb parancssorból használható képmanipuláló programcsomag, melynek összetettségéről sokat elárul, hogy több ( angol nyelvű ) könyvet vásárolhatunk, ha meg szeretnénk ismerni.

A következő ( convert programot használó ) egyszerű példa azt mutatja, miként tudunk egy png fájlt átméretezni (1000x1300) és jpeg formátumra ( minőség: 90% ) átkonvertálni (úgy hogy mindeközben az eredeti png is megmaradjon):

convert -resize 1000x1300 -quality 90% oldal_01.png oldal_01.jpg

A parancssor előnye persze akkor jelentkezik, ha nem egyetlen képet szeretnénk kezelni, hanem egyszerre többet. A következő paranccsal az összes oldal_*.png fájlon elvégezhetjük ugyanezt a műveletet:

for img in oldal_*.png; do convert -resize 1000x1300 -quality 90% $img `basename $img .png`.jpg; done

Címkék: convert imagemagick képméretezés

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