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ő

timeout

2013.03.13. 10:00 | sala | 1 komment

Nemrég hívták fel a figyelmemet a timeout parancsra, valamiért eddig nem találkoztam vele. Használatával meghatározhatunk egy maximális időt ameddig egy program futhat, ha az idő letelt akkor timeout megöli a programot.


Ha egy scriptben használjuk, akkor a visszatérési értéket is figyelni illik, a 124-es érték jelzi a timeoutot:

$ timeout 5 sleep 3
$ echo $?
0
$ timeout 5 sleep 8
$ echo $?
124

Címkék: timeout

iperf

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

Egy hálózati kapcsolat sebességét mérhetjük az iperf program használatával. Az egyik gépen ( 192.168.1.220) szerver üzemmódban kell a programot elindítani:

$ iperf -s
--------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
--------------------------------------------------------

Ezután a másik gépen ( 192.168.1.192) kliens üzemmódban elindítva a programot csatlakozhatunk a szerverhez, és mérhetjük a sebességet:

$ iperf -c 192.168.1.220
--------------------------------------------------------
Client connecting to 192.168.1.220, TCP port 5001
TCP window size: 22.9 KByte (default)
---------------------------------------------------------
[  3] local 192.168.1.192 port 34125 connected with 192.168.1.220 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  11.4 MBytes  9.51 Mbits/sec

A program elérhető Android alatt is.

Címkék: hálózat sebesség iperf

Linuxvilág

2013.03.07. 10:00 | sala | 4 komment

A 2000-es évek elején jelent meg néhány évig a Linuxvilág nevű magazin, ami Linux Journal cikkek fordításait és magyar cikkeket közölt vegyesen.

Nemrég vettem észre, hogy az újság jogtisztán elérhető online a http://www.linuxvilag.hu/ oldalon. A cikkeket egyenként lehet letölteni pdf formátumban. Mivel keresni is lehet a cikkek között, elég könnyen ki lehet mazsolázni a parancssorral foglalkozó cikkeket.

Frissítés 2017. február: Mint a kommentekből is látszik, az eredeti weboldal már nem érhető el. Találtam viszont mentést itt: http://epa.oszk.hu/html/vgi/kardexlap.phtml?id=2894

Címkék: újság linuxvilág

gdatafs

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

Webes szolgáltatásoknál visszatérő gondom, hogy bár az esetek többségében a webes felület használata könnyű, nehezen integrálható a saját munkafolyamatomba. Például PicasaWebet használok, ami nagyon kényelmes, ha weben szeretnék képeket felölteni, akkor is nagyon jó, ha olyan kliensprogramot használok ami támogatja PicasaWebet ( pl. Picasa ), de nagyon kényelmetlen a használata minden más programból.

Egy igen kényelmes és egyszerű megoldást nyújt a gdatafs, aminek használatával PicasaWeb albumainkat egy külön alkönyvtárba mountolhatjuk fel.

gdatafs /mnt/picasawebalbums akarki@gmail.com jelszo

Albumaink a /mnt/picasawebalbums/GPhoto/ alkönyvtárban külön-külön alkönyvtárként jelennek meg, a képek pedig az albumnak megfelelő alkönyvtárakban lesznek elérhetőek. Nemcsak olvasásra van lehetőségünk, új alkönyvtár létrehozásával új albumot is létrehozhatunk, fájlok másolásával hozzáadhatunk, törölhetünk képeket az albumokból.

Bár a programcsomag neve arra utal, hogy más google adatainkhoz is hozzáférhetünk vele, nekem a YouTube adatok elérése, vagy a google docs tartalmának elérése nem sikerült ezzel a programmal.

Címkék: picasa fuse picasaweb gdatafs

Enigma

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

Elég sok Enigma szimulátort próbálhatunk ki, van webes, androidos, papíralapú, de olyan flashes is, ahol a tárcsák működését is láthatjuk.

Szerencsére van parancssorban használható szimulátor is ami többféle géptípust, többféle beállítást is tud szimulálni.

Első tesztnek ne foglalkozzunk a beállításokkal, próbáljuk egyszerűen elkódolni a 'commandline' sztringet a CLI üzenetkulccsal:

$ echo 'commandline' | enigma -m CLI

qwftcasjxbr

Könnyen tesztelhetjük a dekódolást is:

$ echo 'qwftcasjxbr' |  enigma -m CLI

commandline

Észrevehető, hogy nincs külön kódoló és dekódoló parancs, az Enigmánál a két lépés teljesen egyformán történt.

Valódi üzenetekkel is kipróbálhatjuk a gépet, de akkor pontosan kell a paramétereket beállítanunk:

echo 'GCDSEAHUGWTQGRKVLFGXUCALXVYMIGMMNMFDXTGNVHVRMMEVOUYFZSLRHDRRXFJWCFHUHMUNZEFRDISIKBGPMYVXUZ' | enigma -M H -w 213 -r xmv -u A -s amfinvpstuwz -m ABL

Vagyis a hadsereg gépét ( -M H ) használjuk, sorrendben a kettes, egyes és hármas tárcsákat ( -w 213 ). A tárcsák gyűrűit x (24) , m (13) , v (22) pozíciókba állítjuk ( -r xmv ),  az "A" fordítót ( -u A ) használjuk, a kapocstáblánál pedig az AM, FI, NV, PS, TU, WZ összeköttetésekkel ( -s amfinvpstuwz ). A konkrét üzenetet az ABL kulccsal kódoljuk el.

Eredményül a következőt kapjuk:

feindliqeinfanteriekolonnebeobaqtetxanfangsuedausgangbaerwaldexendedreikmostwaertsneustadt

ami elsőre nem túl érthető, de ha a speciális karaktereket visszaállítjuk és a hiányzó szóközöket pótoljuk, akkor megvan az eredeti üzenet:

Feindliche Infanterie Kolonne beobachtet. Anfang Südausgang Bärwalde. Ende 3km ostwärts Neustadt.

Címkék: rejtjelezés Enigma

tree --du

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

A tree-t bemutató bejegyzéssel kapcsolatban jelezte egy olvasó, hogy még hasznosabb lenne a parancs, ha a kilistázott alkönyvtárak méretét is kiírná.

A -s kapcsoló hatására kiírja tree a méretet:

$ tree -s ~/rpmbuild
/home/user/rpmbuild
├── [       4096]  BUILD
│   ├── [       4096]  digikam-3.0.0-rc
│   │   ├── [       1100]  bootstrap.linux
│   │   ├── [       1727]  bootstrap.local
│   │   ├── [       1986]  bootstrap.macports
│   │   ├── [       1348]  bootstrap.mingw.bat
│   │   ├── [       1322]  bootstrap.msvc.bat
│   │   ├── [       4096]  build
│   │   │   ├── [      79361]  CMakeCache.txt
...


Látszik rögtön, ha valójában nem összegzi az alkönyvtárak méreteit. Ha a du-hoz hasonló működést szeretnénk, akkor a --du kapcsoló hasznosabbnak tűnik:

$ tree --du ~/rpmbuild
/home/user/rpmbuild
├── [  204259367]  BUILD
│   ├── [  170682407]  digikam-3.0.0-rc
│   │   ├── [       1100]  bootstrap.linux
│   │   ├── [       1727]  bootstrap.local
│   │   ├── [       1986]  bootstrap.macports
│   │   ├── [       1348]  bootstrap.mingw.bat
│   │   ├── [       1322]  bootstrap.msvc.bat
│   │   ├── [     389406]  build
│   │   │   ├── [      79361]  CMakeCache.txt
...

Meglepetés akkor ért, amikor ezt a -L kapcsolóval akartam együtt használni, hogy csak 2 mélységig írja ki tree a faszerkezetet:

$ tree --du -L 2 ~/rpmbuild
/home/user/rpmbuild
├── [      20480]  BUILD
│   ├── [       4096]  digikam-3.0.0-rc
│   ├── [       4096]  pktriggercord-0.79.01
│   ├── [       4096]  ufraw-0.18
│   └── [       4096]  xvba-video-0.8.0
├── [       4096]  BUILDROOT
├── [       8192]  RPMS
│   └── [       4096]  x86_64
├── [   62852655]  SOURCES

Láthatóan megváltoztak a számok. Nemcsak a kiírásból maradnak ki a 2 szintél mélyebben lévő alkönyvtárak és fájlok, hanem sajnos már az összesítésből is.

Kisebb trükközéssel azért elérhető a rendes működés ( -L n helyett grep kell 4*n+1-es ismétlődési limittel ), de túlzás lenne kényelmesnek nevezni a használatot:

$ tree --du ~/rpmbuild | grep -v '^.\{9,\}\['
/home/user/rpmbuild
├── [  204259367]  BUILD
│   ├── [  170682407]  digikam-3.0.0-rc
│   ├── [    6749629]  pktriggercord-0.79.01
│   ├── [   24081554]  ufraw-0.18
│   └── [    2741681]  xvba-video-0.8.0
├── [       4096]  BUILDROOT
├── [    2252497]  RPMS
│   └── [    2248401]  x86_64
├── [   62852655]  SOURCES

Címkék: tree du

niceload

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

A már többször említett GNU parallel fejlesztése során egy-két olyan segédprogram is elkészült, melyek önállóan is használhatóak. Ezek közül a niceloadot mutatnám be.

A program célja, hogy az erőforrásokat figyelve futtasson egy parancsot, szükség szerint leállítva/újraindítva. Vegyük a következő ( niceload dokumentációjából származó ) példát:

A következő perl parancs 50 másodpercig fut, másodpercenként kirajzol egy pontot, és közben alaposan leterheli a processzort:

perl -e '$|=1;do{$l==$r or print "."; $l=$r}until(($r=time-$^T)>50)'

Ha niceloaddal indítjuk el a fenti parancsot egy olyan gépen ahol alacsony a terhelés ( load kisebb mint 1.0 ), akkor a perl program addig rendesen fut ameddig a load 1 alatt van, de ha az érték 1 fölé emelkedik, akkor niceload felfüggeszti a futást. Kis idő után újra futtatja, majd megint felfüggeszti...

$ niceload -v -q perl -e '$|=1;do{$l==$r or print "."; $l=$r}until(($r=time-$^T)>50)'
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Running 1s
.Sleeping 0.5s
Running 1s
.Sleeping 0.5s
.Running 1s
.Sleeping 0.5s
Running 1s
.Sleeping 0.5s
Running 1s
..Sleeping 0.5s
Running 1s

A -q ( quote ) kapcsoló azért kell mert a parancssorban mindenféle furcsa karaktereket írtunk, amiket a perlnek kell értelmeznie és nem a bash-nak. A -v kapcsoló hatására íródnak ki a Running..., Sleeping... sorok, ez megkönnyíti a megértést.

Ha egy másik terminálon elindított toppal ellenőrizzük a load értékeit, akkor feltűnik, hogy egy idő után 1 felett van folyamatosan. Ennek oka, hogy alapesetben a limit "puha" vagyis az előre meghatározott idejű felfüggesztés után mindenképpen fut kicsit a perl program. Ha szigorúbban szeretnénk lenni, akkor a -H ( hard ) kapcsolóval "kemény" limitet is meghatározhatunk, ekkor a felfüggesztés után újra ellenőrzi a terhelést a niceload, és csak akkor futtatja újra a programot, ha van szabad erőforrás.

Természetesen nemcsak az 1.0 load érték lehet a limit, megadhatunk eltérő load értéket is ( -L ), de akár a szabad memóriat, swappolást, IO terhelést is tudja figyelni a program.

Címkék: parallel niceload

touch

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

Bevallom, a touch parancsot én nagyon sokáig csak arra használtam, hogy létrehozzak egy üres fájlt:

touch alma.txt

Párszáz alkalom után azért csak megnéztem a man-t, és feltűnt, hogy a touch alapvetően a fájl dátumainak manipulálására szolgál.

Beállíthatunk egy konkrét dátumot:

touch -t 200111161756 file.txt

, de használhatjuk egy másik referenciafájl dátumát is:

touch -r referenciafile.txt file.txt

Címkék: touch dátum

agrep

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

Bár a grep az egyik leggyakrabban használt eszköz, amit én is több példában használtam már, időnként érdemes az eredeti grep helyett egy továbbfejlesztett változatot is kipróbálni.

A következő ( nem túlzottan életszerű ) példában egy alkönyvtárban 4 fájl van, de a kutya szót kétszer is hibásan sikerült leírnunk:


$ ls
kuta_3  kutttya_4  kutya_1  kutya_2

Nem túl meglepő módon, ha a kutyákra keresünk, akkor csak a pontosan leírt nevű fájlokat találjuk meg:

$ ls | grep kutya
kutya_1
kutya_2

Ha grep helyett agrepet ( agrep = approximate grep ) használunk, és 1 betű eltérést engedélyezünk, akkor már három, ha 2 betű eltérést engedélyezünk, akkor mind a 4 fájlt megkapjuk:

$ ls | agrep -1 kutya
kuta_3
kutya_1
kutya_2
$ ls | agrep -2 kutya
kuta_3
kutttya_4
kutya_1
kutya_2

Betűeltérésen 1 betű törlését, 1 betű beillesztését, illetve 1 betű másik betűre cserélését értjük, vagyis tulajdonképpen a Levenshtein-távolságot vizsgálja agrep.

Többféle agrep implementációval is találkozhatunk, én a TRE nevűt használtam ( egyszerűen azért, mert ez van a Linux disztribúciómban ).

Címkék: grep agrep TRE Levenshtein

PIM DIA e-könyv

2012.12.24. 10:00 | sala | 18 komment

A DIA ( Digitális Irodalmi Akadémia ) oldalán kortárs magyar írók műveit érhetjük el ingyen. Számomra nem teljesen érthető módon ezeket a műveket a weben elolvashatjuk, de arra már nincs mód ( legalábbis én nem találtam ), hogy valami e-könyv formátumban letölthessük őket.

Persze egy-két kattintással átkonvertálhatjuk a könyveket, a Kindlevarázs írt egy elég részletes leírást erről. A leírás óta van már hivatalos send to kindle alkalmazás is, inkább azt érdemes használni.

A leírt nagyon egyszerű konverzió hátránya, hogy elvesznek a lábjegyzetek, és a könyv tele lesz szórva felesleges oldalszámokkal. Nem is beszélve arról, hogy az összes metaadat elveszik.

Mivel bosszantott a dolog, készítettem egy scriptet, ami elvégzi a konvertálást, és elfogadhatóbb eredményt ad. Tisztában vagyok vele, hogy a script egyértelműen a legrondább kódrészlet amit valaha a blogon írtam, és azzal is, hogy a reguláris kifejezések használatára nincsen mentség, viszont arra a pár könyvre amire kipróbáltam elég jól működött.

#!/bin/bash
FILE=`basename $1 .xhtml`
echo ${FILE}_1.xhtml
cat $FILE.xhtml | sed s@\<span\ class=\"oldaltores\"\>.*\</span\>@@ |\
 sed '/<a name="DIAPage.*>/{ N; s/<a name="DIAPage.*>[\n]// }' | sed 's@<div class="cim">\(.*\)</div>@<h1>\1</h1>@' > ${FILE}_conv.xhtml
ebook-convert ${FILE}_conv.xhtml ${FILE}.fb2
CIM=`sed -n 's@[ ]*<div class="konyvcim">\(.*\)</div>@\1@p' < ${FILE}_conv.xhtml`
SZERZO=`sed -n 's@[ ]*<div class="szerzo">\(.*\)</div>@\1@p' < ${FILE}_conv.xhtml`
VEZETEKNEV=`echo $SZERZO | cut -f 1 -d ' '`
KERESZTNEV=`echo $SZERZO | cut -f 2- -d ' '`
rm ${FILE}_conv.xhtml
sed 's@<sup>\*\(.*\)</sup>@<a xlink:href="#calibre_link-\1">\1</a>@' < ${FILE}.fb2 |\
sed 's@\*\(.*\)</p>@<p id="calibre_link-\1">\1</p></p>@' |\
sed "s@<first-name>[^/]*</first-name>@<first-name>$KERESZTNEV</first-name>@g" |\
sed "s@<lang>[^/]*</lang>@<lang>hu</lang>@g" |\
sed "s@<empty-line[ ].*/>@@g" |\
sed "s@<last-name>[^/]*</last-name>@<last-name>$VEZETEKNEV</last-name>@g" > ${FILE}_conv.fb2
rm ${FILE}.fb2
ebook-meta --cover=$2 ${FILE}_conv.fb2
ebook-convert ${FILE}_conv.fb2 ${FILE}.mobi
rm ${FILE}_conv.fb2
ebook-meta -t "${CIM}" -l hu --isbn "$3" ${FILE}.mobi

A scriptet neve dia_convert.sh. Ha a DIA-ról letöltünk egy könyvet XHTML formátumban ( input.xhtml ), kikeressük a borítót ( input.jpg ), majd megkeressünk az ISBN-számot ( példában: 1111111111 ), akkor a következő módon gyárthatjuk le a mobi fájlt:

dia_convert.sh input.xhtml input.jpg 11111111111

A script a sed indokolatlan használata mellett calibre-re épül.

Címkék: ebook dia calibre sed

lm_sensors

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

A mai számítógépekben meglepően sok szenzor található, az ezek által kiolvasott ( többnyire hőmérséklet ) értékeket az lm_sensors használatával olvashatjuk ki.

Először is detektálnunk kell a szenzorokat:

sensors-detect

A program ( amit root joggal kell futtatni ) elég sok ijesztő kérdést tesz fel, mindegyikre igennel válaszoltam.

Ezután ( de az sem árt, ha bootolunk egyet) már kiolvashatjuk az adatokat:

$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +62.0°C  (crit = +108.0°C)
temp2:        +46.0°C  (crit = +100.0°C)
temp3:        +49.0°C  (crit = +103.0°C)
temp4:        +48.0°C  (crit = +105.0°C)
temp5:        +27.2°C  (crit = +103.0°C)
temp6:        +45.0°C  (crit = +110.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +49.0°C  (high = +100.0°C, crit = +100.0°C)
Core 1:       +49.0°C  (high = +100.0°C, crit = +100.0°C)

Láthatóan nem igazán sikerült nálam a detektálás, a legtöbb értéknél ( temp1, ..., temp6 ) igazából nem egyértelmű, hogy mihez is kapcsolódik a szenzor.

Címkék: szenzor lm sensors

tree

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

A tree parancs segítségével a könyvtárszerkezetet tekinthetjük át:

$ tree -d -L 1 ~/rpmbuild
/home/user/rpmbuild
├── BUILD
├── BUILDROOT
├── RPMS
├── SOURCES
├── SPECS
└── SRPMS

6 directories

$ tree -d -L 2 ~/rpmbuild
/home/user/rpmbuild
├── BUILD
│   ├── pktriggercord-0.79.01
│   └── xvba-video-0.8.0
├── BUILDROOT
├── RPMS
│   └── x86_64
├── SOURCES
├── SPECS
└── SRPMS

A parancs alapesetben nemcsak a könyvtárakat listázza, hanem a fájlokat is. Ez a legtöbb esetben felesleges, a -d kapcsolóval ezt ki lehet kapcsolni. Igen gyakran használom még a -L kapcsolót, amivel azt állíthatjuk be, hány szintet listázzon a parancs.

Címkék: tree

Norton Guide

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

Valószínűleg erre már kevesen emlékeznek, de a DOS-os korszakban elég népszerű volt a Norton Guide fájlformátum. Ha jól emlékszem, eredetileg a Norton cég ( akiknek a Norton Commandert is köszönhetjük ) adott ki útmutatókat, amit a saját programjukkal lehetett megnézni, de később alternatív programok is megjelentek ( az Expert Helpre még én is emlékszem, de itt egy egész szép gyűjtemény ), majd alternatív útmutatók is.

Nemrég ősrégi backup lemezek között turkálva találtam néhány .ng fájlt, és kíváncsi voltam, meg tudom-e nézni ezeket Linux alatt. Nem túl meglepő módon nincs nagy választék linuxos ng néző programokból, de az eg segítségével sikerült megnyitni a fájlokat.

eg.jpg

Az igazsághoz az is hozzátartozik, hogy nemcsak az ng formátum avult el, hanem a sokkal később készült eg felett is eljárt az idő, ahhoz, hogy lefordítsuk egy modernebb Linuxon, kissé bele kell nyúlni a forráskódba.

Címkék: nosztalgia ng dos eh

mkv fejezetek

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

Ha egy meglévő mkv fájlhoz szeretnénk beállítani a fejezethatárokat, akkor egy meglehetősen egyszerű szövegfájlban (chap.txt) kell megadnunk a fejezetek határait:

CHAPTER01=00:00:00.000
CHAPTER01NAME=Első
CHAPTER02=00:02:30.000
CHAPTER02NAME=Második
CHAPTER03=00:02:42.300
CHAPTER03NAME=Harmadik

eztán a következő paranccsal tudjuk az új mkv-t elkészíteni:

mkvmerge input.mkv --chapters chap.txt -o output.mkv

Címkék: mkv matroska mkvmerge mkvtoolnix

rfkill

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

Egy olvasó jelezte, hogy nem írtam az rfkillről.

A laptopomon van egy kis kapcsoló, amivel egy mozdulattal tudom kikapcsolni a wifi és bluetooth kapcsolatot. Bár ez is nagyon hasznos, időnként szerencsésebb ezt szoftveresen megtenni.

Alapesetben semmilyen vezetéknélküli kapcsolat sincs letiltva:

$ rfkill list
0: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
1: hp-wifi: Wireless LAN
    Soft blocked: no
    Hard blocked: no
2: hp-bluetooth: Bluetooth
    Soft blocked: no
    Hard blocked: no

A wifi letiltása:

$ rfkill block wifi
$ rfkill list
1: hp-wifi: Wireless LAN
    Soft blocked: yes
    Hard blocked: no
2: hp-bluetooth: Bluetooth
    Soft blocked: no
    Hard blocked: no
3: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no

Wifi újra engedélyezése:

$ rfkill unblock wifi

A listában a soft blocked jelzi a szoftveres letiltást, hard blocked a hardveres letiltást.

Címkék: wifi rfkill

tput óra

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

Az ncurses csomaggal én többnyire akkor találkoztam, amikor karakteres-alapú GUI felületeket használtam. A csomagban azonban van olyan parancs is, amivel a parancssorban is jópofa dolgokat lehet csinálni. A tput a terminál alapvető jellemzőinek lekérdezésére/módosítására képes, többek között a kurzor mozgatására is. Részletes leírás helyett mutatok egy példát. A következő parancs a terminál jobb felső sarkában folyamatosan firssíti a pontos időt:

while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done &

Kicsit részletesebben:

  • while sleep 1;do ... done &
    Ciklusban dolgozunk, másodpercenként egyszer futtatjuk a ciklus belsejét.

  • tput sc ... tput rc
    Az elején elmentjük a kurzor pozícióját ( sc = save cursor position ), a végén visszaállítjuk ( rc = restore cursor position )

  • $(($(tput cols)-29))
    Lekérdezzük a terminál oszlopainak számát, majd kiszámoljuk, hanyadik oszlop van 29 karakterrel balra

  • tput cup 0 n
    A 0. (legfelső) sor előző pontban kiszámolt oszlopához mozgatjuk a kurzort.

  • date
    Ez írja ki a pontos időt

Valójában persze nem ncurses találta ki a tput-ot, de a mai Linuxokban ncurses csomagban találjuk tput parancsot.

forrás: http://www.commandlinefu.com/commands/view/7916/put-a-console-clock-in-top-right-corner

Címkék: óra tput ncurses

e2freefrag

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

Írtam már arról, miként lehet a fájljaink töredezettségét ellenőrizni a filefrag segítségével. Hasznos lehet néha az üres terület vizsgálata is. Ehhez is nyújt támogatást e2fsprogs. Az e2freefrag összesíti, hogy az üres területek mekkora darabokban vannak szétszórva a merevlemezen:

$ e2freefrag /dev/sda10
Device: /dev/sda10
Blocksize: 4096 bytes
Total blocks: 51526471
Free blocks: 6758821 (13.1%)

Min. free extent: 4 KB
Max. free extent: 532480 KB
Avg. free extent: 2540 KB

HISTOGRAM OF FREE EXTENT SIZES:
Extent Size Range :  Free extents   Free Blocks  Percent
    4K...    8K-  :           380           380    0.01%
    8K...   16K-  :           502          1257    0.02%
   16K...   32K-  :          1118          6135    0.09%
   32K...   64K-  :          1959         22360    0.33%
   64K...  128K-  :          1114         25932    0.38%
  128K...  256K-  :           513         23581    0.35%
  256K...  512K-  :           636         59342    0.88%
  512K... 1024K-  :           914        173934    2.57%
    1M...    2M-  :          1045        386689    5.72%
    2M...    4M-  :           960        696173   10.30%
    4M...    8M-  :           868       1224015   18.11%
    8M...   16M-  :           287        727199   10.76%
   16M...   32M-  :           161        846289   12.52%
   32M...   64M-  :            88        953368   14.11%
   64M...  128M-  :            37        845192   12.51%
  128M...  256M-  :             7        278570    4.12%
  256M...  512M-  :             4        331554    4.91%
  512M... 1024M-  :             1        133120    1.97%

Címkék: e2fsprogs e2freefrag

colordiff

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

Nagyon sokszor használom a diff parancsot, de időnként nehéz értelmezni az eredményt, a kacsacsőrök miatt könnyű összekeverni a fájlokat. Másnak is feltűnt ez, így elkészítették a colordiff programot, ami színkódokkal jelzi, hogy melyik rész melyik fájlhoz tartozik:

$ diff file1.txt file2.txt
2c2
< bbb
---
> bbbb
3a4
> dd
$ colordiff file1.txt file2.txt
2c2
< bbb
---
> bbbb
3a4
> dd

Arra kell figyelni még, hogyha less-nek adjuk át az eredményt, akkor a -R kapcsoló is kell, ellenkező esetben less nem mutatja rendesen a színeket:

colordiff file1.txt file2.txt | less -R

Címkék: less diff colordiff

commandlinefu

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

Most kivételesen egy weboldalt ajánlanék mindenki figyelmébe. A commandlinefu oldalán lelkes parancssorkedvelők tölthetik fel hasznosnak ítélt parancsaikat, a többiek véleményezhetik, alternatívákat ajánlhatnak...

Persze a feltöltött kb. 10000 példa között rengeteg van amelyik nem túl érdekes, de időnként nagyszerű/elborult példákat lehet találni.

A saját önmeghatározásuk szerint:

commandlinefu.com is the place to record those command-line gems that you return to again and again.

Delete that bloated snippets file you've been using and share your personal repository with the world. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.

Címkék: ajánló commandlinefu

which

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

Azt vettem észre, hogy nagyon sokan mindig a find parancsot használják ha keresnek valamit a merevlemezen. Bár a find nagyszerű, van a keresésnek egy olyan speciális esete, amikor nem ezt érdemes használni.

Ha csak a PATH-on akarunk keresni, vagyis egy futtatható programnál arra vagyunk kíváncsiak, hogy honnan indul el, akkor a which sokkal egyszerűbb és gyorsabb:

$ which bc
/usr/bin/bc

Érdemes még megjegyezni, hogy a which olyan általános szó, amire nagyon reménytelen a weben rákeresni.

Címkék: find which

filefrag

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

Bevallom, Linux alatt igazából sosem foglalkoztam a fájlok töredezettségével, nagyon kényelmes volt elhinni, hogy DOS/Windows után ezzel nem kell törődni.

Persze az ember kíváncsi, így mégis érdekes lehet megnézni, hogy vajon ext3 mennyire töredezetten tárolja a fájljaimat. Az e2fsprogs csomag filefrag programja megmutatja, hány összefüggő darabban ( extent ) tárolja a fájlrendszer a kérdéses fájlt:

filefrag kicsi.txt
kicsi.txt:  1 extent found
filefrag nagy.mkv
nagy.mkv: 22 extents found

Címkék: ext3 e2fsprogs filefrag

RipIt

2012.10.30. 10:00 | sala | 1 komment

Ha CD-t szeretnénk rippelni, akkor ezt megtehetjük több parancssoros program használatával, de túlzás lenne azt állítani, hogy kényelmes lenne 4-5 különböző programot (cdparanoia, lame, oggvorbis, faac, fmpeg, ...) felparaméterezni. Ehelyett inkább a RipIt nevű programot szoktam használni, ami ezt elvégzi helyettünk:

ripit --nointeraction -b 192

A --nointeraction kapcsoló kell ahhoz, hogy a program semmilyen kérdést ne tegyen fel, a -b 192 pedig az alapértelmezett 128 kbit/s bitrátát állítja át 192 kbit/s-re.

Igen, ez a bejegyzés kb. 10 évet késett.

Címkék: mp3 cd rip ogg

mplayer -vf cropdetect

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

Kellően el nem ítélhető módon többször találkozhatunk olyan videóval, ahol a megfelelő képarányt a kép tetejére/aljára illesztett fekete csíkkal próbálják garantálni. Külön kellemes, amikor egy eredetileg 16:9 arányú videónál fekete csíkokkal érik el, hogy 4:3 arányú képernyőn arányos legyen, majd amikor ezt egy 16:9 arányú monitoron nézzük, akkor a videólejátszó program automatikusan a bal és jobb oldalra is fekete csíkot tesz, vagyis végeredményben a kép mind a 4 szélén fekete csíkot nézhetünk.

Az ilyen csíkok eltávolítása nem túl nehéz, de persze meg kell határozni, hogy pontosan milyen vastagok is az eltávolítandó csíkok. Az eltávolítandó csíkok automatikus felismeréséhez is ad támogatást mplayer:

mplayer file.mkv -vf cropdetect

Egy 384x288-as videón kipróbálva ehhez hasonló eredményt ír ki a program:

[CROP] Crop area: X: 0..383  Y: 37..250  (-vf crop=384:208:0:40)

A program külön ellenőrzi a képkockákat, de ha szerencsénk van, akkor azonos vastagságúak a csíkok.

Tesztelhetjük, hogy a javasolt crop paraméterezés megfelelő-e, mielőtt mencoder-rel átkonvertáljuk a fájlt:

mplayer file.mkv -vf crop=384:208:0:40

Címkék: mplayer crop mencoder

ssconvert

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

Ha egyszerű táblázatkezelőre van szükségem, többnyire gnumeric-et használok, leginkább azért, mert sokkal gyorsabbnak tűnik a többi hasonló programnál. Bár a táblázatkezelő nem parancssoros program, a mellécsomagolt konverter, az ssconvert igen. Nagyon egyszerűen lehet a különféle táblázatkezelők formátuma között konvertálni. Például egy gnumeric-kel készített fájl így konvertálhatunk excel formátumra:

ssconvert konyvek.gnumeric konyvek.xls

Ha tömörebben szeretnénk írni:

ssconvert konyvek.{gnumeric,xls}

Elég sok input és output formátumot ismer:

$ ssconvert --list-importers
ID                           | Description
Gnumeric_paradox:paradox     | Paradox database or primary index file (*.db, *.px)
Gnumeric_oleo:oleo           | GNU Oleo (*.oleo)
Gnumeric_xbase:xbase         | Xbase (*.dbf) file format
Gnumeric_psiconv:psiconv     | Psion (*.psisheet)
Gnumeric_QPro:qpro           | Quattro Pro (*.wb1, *.wb2, *.wb3)
Gnumeric_applix:applix       | Applix (*.as)
Gnumeric_Excel:excel         | MS Excel (tm) (*.xls)
Gnumeric_Excel:xlsx          | MS Excel (tm) 2007
Gnumeric_html:html           | HTML (*.html, *.htm)
Gnumeric_sc:sc               | SC/xspread
Gnumeric_XmlIO:sax           | Gnumeric XML (*.gnumeric)
Gnumeric_lotus:lotus         | Lotus 123 (*.wk1, *.wks, *.123)
Gnumeric_plan_perfect:pln    | Plan Perfect Format (PLN) import
Gnumeric_sylk:sylk           | MultiPlan (SYLK)
Gnumeric_OpenCalc:openoffice | Open Document Format (*.sxc, *.ods)
Gnumeric_dif:dif             | Data Interchange Format (*.dif)
Gnumeric_mps:mps             | Linear and integer program (*.mps) file format
Gnumeric_Excel:excel_xml     | MS Excel (tm) 2003 SpreadsheetML
Gnumeric_stf:stf_csvtab      | Comma or tab separated values (CSV/TSV)
Gnumeric_stf:stf_assistant   | Text import (configurable)

$ ssconvert --list-exporters
ID                           | Description
Gnumeric_lpsolve:lpsolve     | LPSolve Linear Program Solver
Gnumeric_html:roff           | TROFF (*.me)
Gnumeric_html:latex_table    | LaTeX 2e (*.tex) table fragment
Gnumeric_html:latex          | LaTeX 2e (*.tex)
Gnumeric_html:xhtml_range    | XHTML range - for export to clipboard
Gnumeric_html:xhtml          | XHTML (*.html)
Gnumeric_html:html40frag     | HTML (*.html) fragment
Gnumeric_html:html40         | HTML 4.0 (*.html)
Gnumeric_html:html32         | HTML 3.2 (*.html)
Gnumeric_Excel:xlsx          | MS Excel (tm) 2007
Gnumeric_Excel:excel_dsf     | MS Excel (tm) 97/2000/XP & 5.0/95
Gnumeric_Excel:excel_biff7   | MS Excel (tm) 5.0/95
Gnumeric_Excel:excel_biff8   | MS Excel (tm) 97/2000/XP
Gnumeric_dif:dif             | Data Interchange Format (*.dif)
Gnumeric_OpenCalc:odf        | ODF/OpenOffice with foreign elements (*.ods)
Gnumeric_OpenCalc:openoffice | ODF/OpenOffice without foreign elements (*.ods)
Gnumeric_GnomeGlossary:po    | Gnome Glossary PO file format
Gnumeric_sylk:sylk           | MultiPlan (SYLK)
Gnumeric_paradox:paradox     | Paradox database (*.db)
Gnumeric_glpk:glpk           | GLPK Linear Program Solver
Gnumeric_stf:stf_csv         | Comma separated values (CSV)
Gnumeric_stf:stf_assistant   | Text (configurable)
Gnumeric_XmlIO:sax           | Gnumeric XML (*.gnumeric)
Gnumeric_pdf:pdf_assistant   | PDF export

Címkék: gnumeric ssconvert

alias kikerülése

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

Nagyon kényelmes az aliasok használata ( egy feh-es példát én is mutattam már ), viszont időnként hasznos, ha a parancs eredeti változatát tudjuk futtatni az aliasolt helyett. Egyetlen plusz karakterre van szükségünk bash alatt:

\parancs

A linkelt példában

feh -Fd *.jpg

használja az alias-t,

\feh -Fd *.jpg

pedig nem.

Címkék: alias

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