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ő

gpg -c

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

Bár a gpg kapcsán legtöbbször a nyilvános kulcsú rejtjelezést említik, használhatjuk "hagyományos" ( szimmetrikus kulcsú ) rejtjelezésre is.

Tételezzük fel, hogy teszt.txt fájlunkat szeretnénk titkosítani:

gpg -c --cipher-algo AES256 teszt.txt

A parancs kétszer rákérdez a jelszóra, az eredmény a titkosított teszt.txt.gpg fájl. A titkosításnál meg lehet adni, milyen algoritmust szeretnénk használni, a példában 256-bites AES-t választottam. Hasznos kapcsoló lehet még a -z 0, ami kikapcsolja a tömörítést, erre leginkább akkor van szükségünk, ha tömörített fájlt szeretnénk titkosítani.

Az eredeti fájl tartalmát a következő paranccsal kaphatjuk vissza:

gpg -o teszt2.txt -d teszt.txt.gpg

Alapesetben a standard outputra írja ki gpg az eredményt, a -o kapcsolóval adhatjuk meg az output fájl nevét. Nem túl meglepő módon a parancs rákérdez a jelszóra is.


Címkék: titkosítás pgp rejtjelezés gpg AES

gunzip -l

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

Egy elég bosszantó hibába futottam bele nemrég. Egy nagy file tömörítése után gunzip -l paranccsal megnéztem mennyire sikerült a tömörítés, és a következő furcsa eredményt kaptam:

$ gunzip -l nagy.gz
         compressed        uncompressed  ratio uncompressed_name
         4403498359           207437312 -2022.8% nagy

Vagyis gunzip szerint egy 200MB-s fájlt tömörítettem össze 4.4GB-ra, ami nyilván nem igaz. Némi utánaolvasás ( értsd: jó sok időt elszúrtam vele ) után a következő részt találtam gzip man oldalán:

The  gzip  format  represents  the  input size modulo 2^32, so the --list option reports incorrect uncompressed sizes and compression ratios for uncompressed files 4 GB and larger.  To work around this problem, you can use the following command to discover a large uncompressed file's true size:

             zcat file.gz | wc -c

Ami szabad fordításban annyit tesz, hogy 4GB-nál nagyobb tömörítetlen fájloknál hülyeséget ír ki gunzip, és nem is valószínű, hogy hamarosan megjavítják.

A javasolt megoldás valóban működik, bár érthető módon igen lassú:

$ zcat nagy.gz | wc -c
4502404608

 A megoldásból az is látszik, hogy csak a méret kiírásával van gondja gzip-nek, valójában képes a nagy fájlokat kicsomagolni.

Címkék: bug gzip gunzip

cmdtools

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

Nagy Attila alkalmazáshalmazára szeretném felhívni a figyelmet. A standard linuxos eszközök mintájára készített egy csomagot:

  • A parancsok teljesen egyformán működnek Linux és Windows alatt.
  • A csomag Linux és Windows alatt is natív.
  • A parancsok kompatibilitásak a standard eszközökkel.
  • Reguláris kifejezések helyett saját paraméterezési lehetőségek.

A csomag letölthető a weboldalról, ahol elég sok példát is találhatunk.

Címkék: cmdtools

pdftk

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

A pdftk programcsomag segítségével parancssorból módosíthatjuk a pdf fájlokat.

Kivághatunk bizonyos oldalakat egy pdf-ből:

pdftk input.pdf cat 2-3 8-10 output out.pdf

Összeragaszthatunk pdf fájlokat (erről a feladatról korábban már írtam):

pdftk input1.pdf input2.pdf cat output output.pdf

A két lépést akár ötvözhetjük is:

pdftk A=input1.pdf B=input2.pdf cat A1 B3-4 output output.pdf

Címkék: pdf pdftk

Bash parancssori kiegészítés

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

A Linux operációs rendszer alatt leggyakrabban használt shell program a bash, az összetett program tudásának azonban többnyire csak töredékét használjuk.

Valószínűleg mindannyian használjuk a parancsok és filenevek kiegészítésének lehetőségét. Elég a parancs első betűit beírnunk és a TAB billentyűt leütnünk, és a shell megpróbálja kiegészíteni a parancsot. Ha csak egy parancs kezdődik a beírt betűkkel, akkor automatikusan kiegészítődik, ha több lehetséges kiegészítés is van, akkor a TAB újbóli lenyomása után megkapjuk a lehetséges parancsok listáját.

Ha a parancsot már beírtuk, akkor a TAB a filenevek kiegészítését segíti. Mivel parancssorban gyakran adunk filenevet paraméternek, ez a kiegészítési mód nagyon hasznos.

Vannak esetek, amikor nem szerencsés, hogy az összes file nevét figyelembe veszi a shell a kiegészítéskor. Ha az acroread vagy xpdf parancsokkal egy pdf dokumentumot szeretnénk megnézni, akkor sokkal jobb lenne, ha a kiegészítés csak a pdf kiterjesztéssel rendelkező file-okat venné figyelembe.

Szerencsére elég régóta (bash 2.04 béta verziójától kezdve) lehetőségünk van a kiegészítés átprogramozására a beépített complete utasítás segítségével.

complete -f -X '!*.pdf' acroread

Az utasítás hatására az acroread parancs után csak a pdf kiterjesztéssel rendelkező file-okat veszi figyelembe a shell. A -f opció jelöli, hogy a kiegészítésben a fileneveket kell figyelembe venni, a -X opció után azt kell megadnunk (egy mintával), melyeket nem akarunk a kiegészítés során használni. Ezért kellett a példában a negálást jelző felkiáltójelet használnunk, hiszen mi csak a *.pdf mintára illeszkedő fileneveket szeretnénk használni. Ha több kiterjesztést is szeretnénk engedélyezni, vagy több programhoz is ugyanazokat a kiterjesztéseket használni, akkor ezt is könnyen megtehetjük:

complete -f -X '!*.@(dvi|DVI)' dvips dviselect dvitype

Az utasítás hatására a dvips, dviselect és dvitype parancsok után csak a .dvi vagy .DVI kiterjesztéssel rendelkező file-okat veszi figyelembe a bash. A példában a kiegészítés során a filenevek listájából választhattunk. Vannak olyan esetek is, amikor nem file-okra van szükségünk, hanem például a felhasználók nevére. Ilyenkor a -f helyett más opciót kell használnunk. A következő táblázat a legfontosabb opciókat tartalmazza, a teljes listát a man bash segítségével ismerhetjük meg.

OpcióKiegészítés során figyelembe vett dolgok
-d Alkönyvtárak
-f Filenevek
-g Csoportok
-u Felhasználók nevei
-v Shell változók
-W Az opció után felsorolt szavak

 

Ha a finger, su, usermod, userdel, passwd parancsok után csak a felhasználók nevét szeretnénk használni, könnyen megtehetjük a következő paranccsal:

complete -u finger su usermod userdel passwd

Bár a fentiek alapján mindenki saját maga tudja programozni az automatikus kiegészítést, egyszerűbb letölteni egy olyan programot, ami megteszi ezt helyettünk. A bash-completion csomag több mint száz parancs (pl. man, cvs, rpm, find, apt-get, ...) automatikus kiegészítését programozza át. A fenti egyszerű példákat mind a csomagból vettem, a csomag természetesen sokkal bonyolultabb példákat is tartalmaz, olyanokat például, ahol a parancs korábbi paraméterétől is függ a kiegészítés.

Ha szeretnénk megnézni, miként működik a csomag, vagy szeretnénk esetleg kiegészíteni, akkor a /etc/bash_completion file-t illetve a /etc/bash_completion.d alkönyvtárat kell megnéznünk.

Címkék: bash bash completion

qrencode

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

Parancssorból gyárthatunk QR-kódokat qrencode segítségével:

qrencode -o cli.png "http://commandline.blog.hu"

Az eredményül kapott cli.png fájl:

cli.png

Egy QR-kód olvasóval beolvasva a fenti képet, a blog főoldalára jutunk.

Címkék: qr qrencode

pgrep

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

Process-ek közti keresésnél hasznos a pgrep ( procps csomag része ) parancs:

$ pgrep gzip
23891
$ pgrep -l gzip
23891 gzip
$ pgrep -lf gzip
23891 gzip hdd_20070910.dmp

Látható, hogy alapértelmezés szerint csak a process azonosítóját írja ki, de -l kapcsoló hatására kiírja a nevet, -lf hatására pedig a parancs argumentumait is.

Természetesen a pontos parancsnév helyett használhatunk reguláris kifejezéseket is:

$ pgrep -l h.*d$
2 kthreadd
19 khungtaskd
40 khubd
1165 hald
2256 sshd
2285 httpd
2318 httpd
2324 httpd
2325 httpd
4696 sshd

Címkék: process grep pgrep

HDD lecserélése SSD-re

2011.11.25. 10:00 | sala | 3 komment

A korábbi bejegyzésekkel ellentétben itt nem egy parancsot mutatok be, hanem egy valódi probléma megoldását. Egy elég öreg Windows XP-s laptopban cseréltem ki a HDD-t (merevlemezt) SSD-re. A feladat során a következő céljaim voltak:

  • Windows XP újrainstall nélkül megoldani az egészet,
  • miközben a HDD-nél kisebb SSD-t szerelek be,
  • az egyészet linuxos parancssorral oldom meg (különben hogyan írnék róla ide?),
  • az egész folyamat során nem írok a HDD-re (vagyis baj esetén sem történhet nagy baj).  

Eszközök

Egy pendrive-ról bootoltam Linuxot, így nem volt szükség külön linuxos gépre. A következő eszközökre fogok hivatkozni a leírásban:

  • /dev/sda:  Az eredeti 80GB-os HDD.
  • /dev/sdb: A pendrive (ezt nem fogom használni).
  • /dev/sdc: Egy kellően nagy háttértár.
  • /dev/sdd: Az új 64GB-os SSD.

Ha valaki a leírást szeretné követni, akkor persze ellenőrizze, hogy nála milyen névvel kell hivatkozni az eszközökre. 

HDD tartalmának lementése

Első lépésként a régi merevlemez teljes tartalmát elmentettem egy nagy fájlba:

mkdir /mnt/diskc
mount /dev/sdc1 /mnt/diskc
dd if=/dev/sda of=/mnt/diskc/sda.img

NTFS partíció átméretezése

Az így elmentett sda.img fájl partícióit ellenőriztem fdisk segítségével:

$ fdisk -l /mnt/diskc/sda.img
Disk /mnt/diskc/sda.img: 80.0 GB, 80026361856 bytes
240 heads, 63 sectors/track, 10337 cylinders, total 156301488 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x94e494c4

             Device Boot      Start         End      Blocks   Id  System
/mnt/diskc/sda.img1   *          63   138907439    69453688+   7  HPFS/NTFS/exFAT
/mnt/diskc/sda.img2       138907440   156295439     8694000    c  W95 FAT32 (LBA)

A 2. partíció a Windows XP install anyagát tartalmazza, ezt nem fogom átmásolni az SSD-re, a továbbiakban csak az 1. partícióval foglalkozok. Az első partíciót losetup segítségével érhetjük el:

losetup -o $((63*512)) /dev/loop1 /mnt/diskc/sda.img
mkdir /mnt/diska1
mount /dev/loop1 /mnt/diska1
umount /mnt/diska1

A partíció átméretezéséhez az ntfsresize programot használtam:

$ ntfsresize --info /dev/loop1
ntfsresize v2011.4.12AR.7 (libntfs-3g)
Device name        : /dev/loop1
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 71120577024 bytes (71121 MB)
Current device size: 80026329600 bytes (80027 MB)
Checking filesystem consistency ...
Accounting clusters ...
Space in use       : 59315 MB (83.4%)
Collecting resizing constraints ...
You might resize at 59314573312 bytes or 59315 MB (freeing 11806 MB).
Please make a test run using both the -n and -s options before real resizing!
$ ntfsresize -n -s 63500 /dev/loop1
$ ntfsresize -s 63500 /dev/loop1

Az első parancs alapvető információkat ír ki a partícióról, a legfontosabb az, hogy mi az a legkisebb méret amire át lehet méretezni (59315 MB). A második paranccsal szimulálom a 63.5GB-re méretezést. Ennek eredményeként azt írta a program, hogy minden menni fog. Az utolsó parancs végzi a tényleges munkát.

Érdemes megjegyezni, hogy egyáltalán nem biztos, hogy minden átméretezés sikerül ami --info alapján lehetségesnek tűnik. Teszt során nekem úgy tűnt, érdemes minél több helyet felszabadítani. Mások töredezettségmentesítésre esküsznek. Kétszer egymás után.

MBR átmásolása

 A HDD-ről át kell másolni az MBR-t az új SSD-re. Bár elvileg az első szektor tartalmazza az MBR-t, és a leírás alapján elegendő lenne az első 440 (vagy 446) byte átmásolása (hiszen utána a partíciós tábla található), egy NTFS boot rekordot bemutató leírás (amiből többet meg lehet tudni az NTFS bootról mint amennyit valaha szerettem volna megtudni) alapján az ezt követő szektorok is tartalmaznak hasznos információt. Az egyszerűség kedvéért átmásoltam mindent ami az első partíció előtt található a merevlemezen:

dd if=/mnt/diskc/sda.img of=/dev/sdd bs=512 count=62

Utólag írva a leírást már látom, hogy a fenti logika alapján valójában 63 szektort kellett volna átmásolni 62 helyett, de a gyakorlatban ez nem fontos.

Partíciós tábla módosítása

Az előző másolás során az eredeti partíciós tábla adatai is átmásolódtak, ami nyilván teljesen rossz. Először is fdisk segítségével töröltem a 2 eredeti partíciót, majd fdisk-et újraindítottam. Ezután létrehoztam egy új partíciót ami elfoglalja a teljes 64GB-ot. Típusa ugyanolyan ( 7 - HPFS/NTFS/exFAT ) mint az eredeti 1. partíció. Ezt a partíciót bootolhatóvá tettem. Az új partíciós tábla:

Disk /dev/sdd: 64.0 GB, 64023257088 bytes
22 heads, 16 sectors/track, 355242 cylinders, total 125045424 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x94e494c4

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   125045423    62521688    7  HPFS/NTFS/exFAT

Látszik az is, hogy itt már nem a 63. szektoron kezdődik a partíció, hanem a 2048. szektoron. Itt olvashatunk bővebben arról, hogy ez miért is jó. 

Partíció tartalmának átmásolása

A már korábban említett losetup segítségével létrehoztam egy eszközt ami a SSD 1. partíciójára mutat, és átmásoltam az átméretezett partíció tartalmát (63.5GB-ot).

losetup -o $((2048*512)) /dev/loop2 /dev/sdd
dd if=/dev/loop1 of=/dev/loop2 bs=512 count=$((63500000000/512))

NTFS boot rekord módosítása

Ahogy a már említett NTFS Boot leírás említi, illetve ahogy némileg érthetőbben itt is le van írva, mivel az SSD-n az 1. partíció nem ugyanazon a pozíción kezdődik mint ahogy a HDD-n kezdődőtt, ezért módosítanunk kell a partíció első szektorában a "Hidden Sector Count" értékét. A következő dump mutatja az 1. partíció tartalmának első 32 byte-ját:

0000000 eb 52 90 4e 54 46 53 20 20 20 20 00 02 08 00 00
0000020 00 00 00 00 00 f8 00 00 3f 00 f0 00 3f 00 00 00

A kijelölt rész a következő 3 számot tartalmazza (little endian byte-sorrendben):  63, 240, 63. Az első két számot nem módosítottam, de a 3. számot 2048-ra írtam át xxd segítségével:

echo 00: 3F 00 F0 00 00 08 | xxd -r > /mnt/diskc/ntfs_change.dat
dd if=/mnt/diskc/ntfs_change.dat of=/dev/sdd1 bs=1 count=6 seek=24

Felmerülhet e kérdés, minek írok 6 byte-ot, ha csak 2-t változtatok meg. Nos, a fenti dokumentációk alapján úgy tűnt, hogy a szektor/track és fejek száma mezőket is módosítani kell az fdisk által jelzett új értékekre. Így nem volt hajlandó bootolni az SSD, így végülis visszaírtam az eredeti értékeket.

Nem igazán világos, hogy mi értelme van egy partíció első szektorára felírni azt, hogy hol is kezdődik a partíció. Ezt az adatot csak akkor tudjuk beolvasni, ha már amúgy is tudjuk a partíció helyét.

Végső lépések

Ennél a pontnál kikapcsoltam a gépet és átszereltem a régi HDD helyére az SSD-t, majd bebootoltam Windows XP-t. Elsőre persze panaszkodott, hogy valami babrálta a merevlemezt ( ntfsresize állítja be a flaget ) ezért ellenőrzést futtatott. Ezután bootolt, majd jelezte hogy új hardvert talált. Ezután megint bootolt, és minden működött rendben.

Címkék: windows linux hdd ssd dd xxd fdisk

losetup

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

Egy korábbi bejegyzésben írtam arról, miként lehet egy image fájl adott részét felmountolni:

mount -o loop,offset=$((138907440*512)) hdd_image.img /mnt/test

A módszer egyik elég komoly hátránya ( a "rendes" device-ok használatával szemben), hogy feltételezi, hogy mount kezeli a loop device-okat, és az offsetet. Nem mindig van ilyen szerencsénk, előfordulhat, hogy olyan programot kell használnunk, ami nem támogatja ezt. Ilyenkor losetup segítségével hozhatunk létre olyan eszközt, amit már kényelmesebb használni. A fenti példa losetup használatával, amikor mount-nál már nincsen szükség semmi speciális kapcsolóra:

losetup -o $((138907440*512)) /dev/loop1 hdd_image.img
mount /dev/loop1 /mnt/test

Címkék: mount losetup

xxd

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

Elsőre úgy tűnik, az xxd az od-hez hasonló program, aminek segítségével egy fájl tartalmát dumpolhatjuk ki:

$ echo alma | xxd
0000000: 616c 6d61 0a                             alma.

Ezen kívül van viszont egy nagyon hasznos szolgáltatása xxd-nek, képes a fordított irányban is dolgozni, vagyis nagyon könnyen tudjuk a segítségével egy fájl tartalmát hexadecimális kódokkal feltölteni:

$ echo 00: 42 61 72 61 63 6b | xxd -r > test.txt
$ cat test.txt
Barack

Címkék: dump xxd od hexadecimális

dd (merevlemez backup)

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

A DVD-hez hasonló módon egy teljes merevlemezről is készíthetünk biztonsági mentést:

dd if=/dev/sda of=hdd_image.img

Ebben az esetben az adatok elérése kissé bonyolultabb, hiszen a mount parancs segítségével nem teljes merevlemezt, hanem partíciót érünk el, így ki kell számolnunk, hol is kezdődnek a partíciók. Az fdisk parancs segítségével kaphatunk információt:

# fdisk -lu hdd_image.img

Disk hdd_image.img: 80.0 GB, 80026361856 bytes
240 heads, 63 sectors/track, 10337 cylinders, total 156301488 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x92e474f4

        Device Boot      Start         End      Blocks   Id  System
hdd_image.img1   *          63   138907439    69453688+   7  HPFS/NTFS/exFAT
hdd_image.img2       138907440   156295439     8694000    c  W95 FAT32 (LBA)

 Mivel fdisk a fenti esetben 512 byte-os egységekben számol, ezért a 2. partíció a 138907440*512. byte-on kezdődik. Vagyis a következő paranccsal érhetjük el a 2. partíciót:

 mount -o loop,offset=$((138907440*512)) hdd_image.img /mnt/test

Az fdisk-et is tartalmazó util-linux-ng csomag 2.17-es verziójában nem működött rendesen a fenti módszer, 2.19-re kellett frissítenem.

Címkék: backup mount merevlemez dd fdisk

gparted live

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

Hiába a sok parancssoros program, ha egy olyan gépen kell rendet tennünk ahol nem indul el az operációs rendszer, vagy elindul, de nincs rajta a kedvenc programjaink gyűjteménye.

Tulajdonképpen bármilyen kicsi (pendrive-on elférő) Linux megfelel a célnak, hiszen pendrive-ról bootolva elérhetjük a merevlemezt és rendet tehetünk. Az általam éppen most használt gparted live-ot partíciókezelő programok ( parted, gparted ) köré építették, így ideális, ha merevlemezzel kapcsolatos teendőink vannak.

Címkék: merevlemez gparted parted

nice, renice

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

Ha nagyon hosszú ideig futó scripteket írunk, akkor nem túlzottan jó, ha a futás ideje alatt a gépünk nagyon belassul. Legegyszerűbb (és persze nem teljesen tökéletes) megoldás, ha alacsonyabb prioritással indítjuk el a scriptet:

nice -n 19 script.sh

Ha indítás után jövünk rá, hogy a prioritáson változtatni szeretnénk, akkor a renice parancs segíthet.

renice -n 19 11111

ahol 11111 a process azonosítója.

Címkék: nice process pid renice

cabextract

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

Bár Linux alatt nem feltétlenül szeretnénk használni, időnként találkozhatunk Microsoft Cabinet fájlformátummal. Én leginkább windowsos drivereknél botlok bele. Ha ki szeretnénk csomagolni, akkor a cabextract segítségével tehetjük meg. Ez nemcsak a .cab kiterjesztés esetén, hanem önkicsomagoló .exe esetében is működik.

Címkék: tömörítés cab exe

vi interaktív tutorial

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

Ha gyakran használunk parancssort, akkor a két legismertebb editor (vi, emacs) közül legalább az egyiket illik ismernünk. ( Abba a vitába most nem mennék bele, hogy melyik a jobb ).

Mindkét editorra igaz, hogy eleinte nagyon kényelmetlen a használatuk, kell egy kis idő míg megtanulja az ember az alapokat. Ebben a tanulásban segít egy interaktív vi ( pontosabban vim ) tutorial.

forrás: lifehacker.com

Címkék: tutorial vi emacs

pdfnup

2011.09.16. 00:00 | sala | Szólj hozzá!

Ha spórolni szeretnénk pdf nyomtatás során a papírral, éredemes egy oldalra több oldalnyi információt is összezsúfolni pdfnup (pdfjam csomag része) segítségével:

pdfnup UnixTextProcessing.pdf --nup 2x1

pdfnup UnixTextProcessing.pdf --nup 2x2

pdfnup UnixTextProcessing.pdf --nup 4x2

A --nup kapcsoló után az oldalak elrendezését kell megadni. A fenti 3 példa rendre 2, 4, 8 eredeti oldalból készít 1 új oldalt. Az eredmény ehhez hasonló (képekre kattintva nagyobb méretben is meg lehet nézni):

A teszthez használt könyvet innen lehet letölteni.

Címkék: pdf pdfnup pdfjam

fdupes

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

Ha rendet szeretnénk tartani a merevlemezünkön, akkor az egyik legfontosabb dolog, hogy feleslegesen ne tároljuk ugyanazt a fájlt többször. Ha át szeretnénk nézni a merevlemezt, hogy van-e rajta duplán tárolt fájl, akkor fdupes segíthet.

$ fdupes -rn photos
photos/alma/readme.txt
photos/aaa/readme.txt
photos/alma/readme.txt~

photos/sheaffer_snorkel/imgp1764.jpg
photos/sheaffer_snorkel/sac_protector.jpg

photos/process/kozgyuru/dof_kozgyuru.tif
photos/process/kozgyuru/dof_kozgyuru_4.tif
photos/process/kozgyuru/dof_kozgyuru_5.tif

A parancs photos alkönyvtárat és az alkönyvtárait (-r kapcsoló ) vizsgálja meg azonos fájlok után kutatva. Az eredményeket csoportosítva írja ki. Látható, hogy észreveszi azt is, amikor a fájl neve eltér, és azt is, amikor a fájlok nem ugyanabban az alkönyvtárban vannak. A -n kapcsoló hatására a teljesen üres fájlokat ignorálja.

Címkék: fdupes

diff + process helyettesítés

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

Ha a diff segítségével két fájlt szeretnénk összehasonlítani, akkor könnyű dolgunk van, de ha két parancs eredményét kell összehasonlítani akkor már nehezebb a helyzet. Én azt vettem észre, ilyenkor a többség két ideiglenes fájl készít, és azokat hasonlítja össze. Tegyünk fel, két fényképet készítettünk, és össze szeretnénk vetni exiftool segítségével a felvételek paramétereit:

exiftool virag-0000.dng > v0.txt
exiftool virag-0001.dng > v1.txt
diff v0.txt v1.txt

Ehelyett sokkal egyszerűbb process helyettesítést alkalmazni:

diff <(exiftool virag-0000.dng) <(exiftool virag-0001.dng)

Az eredmény mindkét esetben valami ehhez hasonló:

73c73
< Preview Image Length            : 13585
---
> Preview Image Length            : 13407
77c77
< Time                            : 09:09:56
---
> Time                            : 09:12:27
101c101
< Camera Temperature              : 26 C
---
> Camera Temperature              : 29 C

 

 

Címkék: process diff exiftool

diff

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

Két fájl tartalmát hasonlíthatjuk össze a diff parancs segítségével. Vegyünk két igen egyszerű szövegfájlt (a.txt illetve b.txt):

Ez egy
kicsit
meg fog válllltozni.
Persze a sorok
nagy
része
változatlan
marad.

 

Ez egy
kicsit
meg fog változni.
Persze a sorok
nagy
része
változatlan
marad.

Ezután a két fájlt összehasonlítva:

$ diff a.txt b.txt
3c3
< meg fog válllltozni.
---
> meg fog változni.

 Látható, hogy csak a megváltozott részeket mutatja a parancs.

Lehetőségünk van arra is, hogy egymás mellett lássuk a két fájlt, a különbségeket kiemelve:

$ diff -y a.txt b.txt
Ez egy                                Ez egy
kicsit                                kicsit
meg fog válllltozni.             |    meg fog változni.
Persze a sorok                        Persze a sorok
nagy                                  nagy
része                                 része
változatlan                           változatlan
marad.                                marad.

Végül az utolsó példa akkor lehet hasznos, ha csak arra vagyunk kíváncsiak, van-e különbség a 2 fájl között:

$ diff -q a.txt b.txt
Files a.txt and b.txt differ


 

Címkék: diff

Előző parancs újrafuttatása kis módosítással

2011.08.17. 10:00 | sala | 1 komment

Ha parancssort használunk, elég gyakran előfordul, hogy az előző parancsot szeretnénk újrafuttatni apróbb változtatásokkal.

Ha csak egy változtatásra van szükségünk, akkor a ^ segítségével végezhetjük el a cserét:

$ echo "ez egy teszt"
ez egy teszt
$ ^egy^ketto
echo "ez ketto teszt"
ez ketto teszt

A fenti módszer az "egy" első előfordulását cseréli csak át. Ha az összeset szeretnénk, akkor kicsit bonyolultabb parancsra van szükségünk:

$ echo "ez egy uj teszt. egy alma"
ez egy uj teszt. egy alma
$ !!:gs/egy/ketto
echo "ez ketto uj teszt. ketto alma"
ez ketto uj teszt. ketto alma


Mondanom sem kell, óvatosan érdemes bánni a lehetőséggel, igen könnyen adhatunk ki hibás parancsot.

Címkék: bash

pdf oldalak mentése jpegbe

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

Arról már írtam, miként tudunk sok jpg fájlból egy pdf fájlt készíteni, most az ellentétes irányt mutatom meg, amikor egy pdf oldalait mentjük el jpeg fájlokba:

convert input.pdf output_%02d.jpg

Az eredményt oldalanként 1 jpeg fájl: output_00.jpg, output_01.jpg, output_02.jpg...

Alapesetben 72dpi-nek megfelelő fájlok készülnek, de ezt módosíthatjuk, ha jobb minőségre van szükségünk:

convert -density 300 input.pdf output_%02d.jpg

A fenti esetben az összes oldalt konvertálja a parancs, ha erre nincsen szükségünk, megadhatjuk a konvertálandó oldalak sorszámát. Ha az 5. 6. 7. oldalt szeretnénk csak feldolgozni:

convert -density 300 input.pdf[5-7] output_%02d.jpg

Érdemes még megjegyezni, hogy egy bug miatt imagemagick 6.6-ban néha csak az első oldalt konvertálta a parancs, az újabb verzióban már javították a bugot.

Címkék: pdf convert jpg imagemagick

ebook-meta

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

Bár az elektronikus könyveket kezelő calibre alapvetően grafikus program, több funkciója parancssorból is használható. Az elektronikus könyvek metaadatait az ebook-meta programmal olvashatjuk ki, vagy módosíthatjuk.

Alapesetben kiírja a könyv metaadatait:

$ ebook-meta Doyle_Sherlock_Holmes_kalandjai.prc
Title               : Sherlock Holmes kalandjai
Author(s)           : Sir Arthur Conan Doyle
Publisher           : Kindlevarázs
Tags                : Classics
Language            : hu

A borító kiolvasásához a --get-cover kapcsolót használhatjuk:

ebook-meta Doyle_Sherlock_Holmes_kalandjai.prc --get-cover sherlock.jpg

A metaadatokat persze módosíthatjuk is. A borítót például a következő módon cserélhetjük le:

ebook-meta Doyle_Sherlock_Holmes_kalandjai.prc --cover újborító.jpg

 

Címkék: ebook calibre

pdf fájlok összefűzése

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

Bár vannak egyszerűbb módok is, ha pdf fájlokat kell összefűzni, legtöbbször a jó öreg ghostscriptet használom, ezzel van a legkevesebb probléma:

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOUTPUTFILE=egyben.pdf elso.pdf masodik.pdf

Címkék: pdf gs ghostscript

Fájlméretek összeadása

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

Egy korábbi bejegyzésben írtam a du parancsról, aminek segítségével az alkönyvtárak által elfoglalt lemezterületet tudjuk ellenőrizni. Az ott leírt módszer nem használható, ha nem az egész alkönyvtárra vagyunk kíváncsiak, csak az ott található fájlok egy részére.

Egy alkönyvtáramban vegyesen vannak tömörített és tömörítetlen log fájlok. A tömörítetlen logfájlok összméretére voltam kíváncsi:

find . -name "*.log" -printf "%s\n"|awk '{sum+=$0}END{print sum}'

Némi magyarázat:

  • A find paranccsal kerestem meg az engem érdeklő fájlokat. Itt elég egyszerű a szabály.
  • A -printf "%s\n" hatására find nem a talált fájlok neveit írja ki, hanem a fájlméreteket szépen külön sorban.
  • Az így kapott számokat awk segítségével adom össze.
  • A legvégén (END) pedig kiiratom az összeget.

 

Címkék: awk

Szimbolikus link módosítása

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

A szimbolikus linkek használata igen sokszor megkönnyíti az életünket. Tipikus példája a használatuknak amikor egy folyamatosan változó verziójú fájlnál egy link mutat a legutolsó verzióra:

 ls -l /lib/libz*
lrwxrwxrwx 1 root root    13 2010-10-29 15:56 /lib/libz.so.1 -> libz.so.1.2.3
-rwxr-xr-x 1 root root 74760 2010-01-06 15:05 /lib/libz.so.1.2.3

A programoknak elég annyit tudni, hogy a libz.so.1 fájlra van szükségük. Ha kijön az 1.2.4 verzió, akkor egyszerűen le lehet cserélni a linket, nem kell a programokat módosítani.

Eddig ha le kellett cserélnem egy szimbolikus linket, akkor 2 lépésben tettem meg. Tegyük fel alma.txt nevű linkünk alma-2.3.4.txt-re mutat, de alma-2.3.5.txt-re szeretnénk cserélni:

rm alma.txt
ln -s alma-2.3.5.txt alma.txt

A két parancsot persze && segítségével kötöttem össze.

Nemrég botlottam bele egy sokkal egyszerűbb megoldásba:

ln -sf alma-2.3.5.txt alma.txt

Ha pedig még kevesebbet szeretnénk gépelni:

ln -sf alma{-2.3.5,}.txt

 

Azt azért érdemes megjegyezni, hogy valójában ez sem atomi művelet, vagyis ha egy nagyon fontos fájlra mutató linket cserélünk így le, akkor van egy rövid időszak ameddig a link sehová sem mutat.

 

 

Címkék: szimbolikus lunk

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