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ő

Blogköltözés

2020.04.10. 12:00 | sala | 3 komment

Elköltöztettem a blogot. Új cím: https://commandlineblog.melda.info/

Nincs különösebb oka, de egy saját github repóba commitálni az új posztokat markdown formátumban sokkal inkább illik egy parancssorról szóló bloghoz mint a blog.hu admin felületén szerencsétlenkedni. Újabban nekem amúgy is nagyon lassan jön be a blog.hu

Vannak persze még gondok:

  • Kommenteket még nem vittem át (de úgyis alig vannak).
  • RSS-t még nem próbáltam (ezt sem használja már szinte senki).
  • Keresés még nincs.
  • Régi posztokat átvittem, de nyilván lehet, hogy valamelyik kissé olvashatatlan lesz.

Ha valaki hasonlót szeretne csinálni, annak itt a github repó: https://github.com/asalamon74/commandlineblog/

numfmt

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

A legtöbb programban ami fájlméretet ír ki, lehetőség van arra, hogy a nyers szám helyett valami emberek számára emészhetőbb formában kapjuk az eredményt (többnyire -h, -H kapcsolókkal). Ha egy program nem támogatja ezt, numfmt-vel formázhatjuk a számokat.

A következő példa elég jól bemutatja mit is csinál a program:

$ for i in $(seq 1 6); do x=$((1024**$i)); echo -ne $x '\t'; echo $x | numfmt --to=iec; done | column -t --table-right=1
               1024 1.0K
            1048576 1.0M
         1073741824 1.0G
      1099511627776 1.0T
   1125899906842624 1.0P
1152921504606846976 1.0E

 

Címkék: numfmt

testdisk

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

Írtam már párszor (gparted live, losetup, HDD lecserélése SSD-re) olyan eszközökről, amelyek partíciók és fájlrendszerek rendberakásánál hasznosak. Nemrég egy elrontott MBR-t kellett a kollégámnak rendberakni, végül a TestDisk segített. Bár azt a funckióját nem próbáltuk, elveszett partíciók visszaállításához is használható,

Címkék: hdd testdisk

readlink

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

Szeretem a symlinkeket, de amikor 5 lépésen át kell követnem, hogy hol is van a linklánc vége, az elég kényelmetlen, ilyenkor hasznos a readlink.

Vegyük a következő egyszerű láncot:

a -> x
x -> y
y -> z
z

A readlink parancs alapesetben nem sokkal jobb mint az ls, de a -f kapcsolóval az egész láncot végigköveti és kiírja (teljes útvonallal) a fájl valódi helyét:

$ readlink a
x
$ readlink -f a
/tmp/links/z

Címkék: symlink ln readlink

rdfind

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

Rengetegen backupolnak úgy, hogy időnként kimásolják a fontos alkönyvtárak tartalmát egy külső drive-ra egy új alkönyvtárba. A módszer nagy hátránya, hogy ha egy fájl nem változott az előző mentés óta, akkor az kétszer is ott lesz a külső drive-on, feleslegesen foglalva a helyet.

Az ilyen fájlokat persze megtalálhatjuk pl. fdupes segítségével, de ezután kézzel kell törölnünk ezeket, ráadásul akkor az egyik mentésünk hiányos lesz. Hasznosabb ilyen esetekben az rdfind.

Nézzünk két alkönyvárat:

$ ls -l *
1:
total 15980
-rw-rw-rw- 1 user live 3223592 Oct 9 1998 track11.mp3
-rw-rw-rw- 1 user live 5819536 Oct 9 1998 track13.mp3
-rw-rw-rw- 1 user live 4800970 Oct 9 1998 track15.mp3
-rw-rw-rw- 1 user live 2507210 Oct 9 1998 track1.mp3
2:
total 23036
-rw-rw-rw- 1 user live 5819536 Oct 9 1998 song13.mp3
-rw-rw-rw- 1 user live 4800970 Oct 9 1998 song15.mp3
-rw-rw-rw- 1 user live 4693238 Oct 9 1998 song3.mp3
-rw-rw-rw- 1 user live 5647437 Oct 9 1998 song4.mp3
-rw-rw-rw- 1 user live 1272140 Oct 9 1998 song5.mp3
-rw-rw-rw- 1 user live 1343611 Oct 9 1998 song7.mp3

 Bár a fájlnevek eltérnek, a fájlhosszból látszik, hogy pl. track15.mp3 és song15.mp3 ugyanazok a fájlok.

Az alkönyvárak helyfoglalása:

$ du -bs *
16355404 1
23581028 2

Kerestessük meg az azonos fájlokat rdfinddal, és cseréljük le ezeket hard linkre:

$ rdfind -makehardlinks true 1 2
Now scanning "1", found 4 files.
Now scanning "2", found 6 files.
Now have 10 files in total.
Removed 0 files due to nonunique device and inode.
Now removing files with zero size from list...removed 0 files
Total size is 39928240 bytes or 38 MiB
Now sorting on size:removed 6 files due to unique sizes from list.4 files left.
Now eliminating candidates based on first bytes:removed 0 files from list.4 files left.
Now eliminating candidates based on last bytes:removed 0 files from list.4 files left.
Now eliminating candidates based on md5 checksum:removed 0 files from list.4 files left.
It seems like you have 4 files that are not unique
Totally, 10 MiB can be reduced.
Now making results file results.txt
Now making hard links.
Making 2 links.

A listázásál sok változást nem látunk, de a linkszámlálóból látszik, hogy már hard linkjeink vannak:

1:
total 15980
-rw-rw-rw- 1 user live 3223592 Oct 9 1998 track11.mp3
-rw-rw-rw- 2 user live 5819536 Oct 9 1998 track13.mp3
-rw-rw-rw- 2 user live 4800970 Oct 9 1998 track15.mp3
-rw-rw-rw- 1 user live 2507210 Oct 9 1998 track1.mp3
2:
total 23036
-rw-rw-rw- 2 user live 5819536 Oct 9 1998 song13.mp3
-rw-rw-rw- 2 user live 4800970 Oct 9 1998 song15.mp3
-rw-rw-rw- 1 user live 4693238 Oct 9 1998 song3.mp3
-rw-rw-rw- 1 user live 5647437 Oct 9 1998 song4.mp3
-rw-rw-rw- 1 user live 1272140 Oct 9 1998 song5.mp3
-rw-rw-rw- 1 user live 1343611 Oct 9 1998 song7.mp3

Ha külön-külön nézzük a helyfoglalást, akkor nincs változás:

$ du -bs 1
16355404 1
$ du -bs 2
23581028 2

de ha egyben, akkor látszik, hogy sok helyet megspóroltunk:

$ du -bs *
16355404 1
12960522 2

 Azt azért érdemes tudni, hogy sok fájl tartalmazó alkönyvtáraknál rdfind elég lassú.

Címkék: backup hard link rdfind

WoeUSB

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

A WoeUSB-vel Windows installer iso fájlokat írhatunk pendrive-ra, hogy onnan installáljuk a Windows-t.

woeusb --device Win10_1803_Hungarian_x64.iso /dev/sdX

 a /dev/sdX helyett persze a pendrive drive-ja kell

 Azt igazából nem tudom miért nem elég egy sima dd, de annyira nem is érdekel.

Címkék: windows pendrive installer woeusb

comm

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

Szövegfájlok sorait hasonlíthatjuk össze a comm paranncsal. Vegyünk két fájlt, ahol a sorok rendezve vannak:

$ cat file1.txt
aaa
bbb
ddd
eee
$ cat file2.txt
bbb
ccc
eee

A comm három oszlopba rendezi  sorokat. Az elsőbe azok kerülnek, amelyek csak az első fájlban vannak, a másodikba azok amelyek csak a másodikban, a harmadikba pedig azok amelyeket mindkét fájlban megtalálhatunk:

$ comm file1.txt file2.txt
aaa
                bbb
        ccc
ddd
                eee

Lehetőségünk van az egyes oszlopok elrejtésére a -1, -2, -3 kapcsolókkal. Az első két oszlopot pl. így rejthetjük el:

$ comm -12 file1.txt file2.txt
bbb
eee

linuxbrew

2018.11.24. 09:00 | sala | Szólj hozzá!

A Mac OS-en elérhető homebrew linuxos forkja a Linuxbrew. Használatával Linuxra is pont úgy installálhatunk fel programokat mint Mac OS-re. Elsőre kevésbé tűnik hasznosnak, hiszen minden Linux disztribúciónak van saját csomagkezelője, de elég sokszor előfordul, hogy egy csomag kimarad a gyári csomagok közül és linuxbrew-val egyszerűen installálható.

Például Mageia disztróra elég nehéz feltenni shellcheck-et, de linuxbrew-val ez csak egy mozdulat:

$ brew install shellcheck

Címkék: homebrew linuxbrew

shellcheck

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

Még a Shell Scripts Matter cikk ajánlotta a shellchecket, de önmagában is megér egy bejegyzést.

Készítsünk egy nagyon egyszerű scriptet (test1.sh):

#!/bin/bash
echo hello $1

Ha elkezdjük használni, elég sokáig úgy viselkedik ahogy elvárjuk, de azért az utolsó két parancs közti különbség elsőre meglepő:

$ ./test1.sh a
hello a
$ ./test1.sh a b
hello a
$ ./test1.sh "a b"
hello a b
$ ./test1.sh "a* b"
hello a* b
$ ./test1.sh "t* b"
hello test1.sh test2.sh b

Egy ilyen rövid scriptben persze könnyen megtalálhatjuk a hibát, de sokkal egyszerűbb a scriptjeinket shellcheckkel ellenőriztetni:

$ shellcheck test1.sh

In test1.sh line 2:
echo hello $1
           ^-- SC2086: Double quote to prevent globbing and word splitting.

Ezután már egyértelmű  a javítás (test2.sh):

#!/bin/bash
echo hello "$1"

A script úgy működik, ahogy elvárható:

$ ./test2.sh a
hello a
$ ./test2.sh a b
hello a
$ ./test2.sh "a b"
hello a b
$ ./test2.sh "a* b"
hello a* b
$ ./test2.sh "t* b"
hello t* b

 

homebrew

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

Ha Linux után MacOS-t kezdünk használni, akkor az nagyon jó hogy a shell a már jól megszokott bash, beépített editornak ott van az emacs (vi, nano, ...), de azért több jól megszokott linuxos program hiányzik. Legegyszerűben ezeket homebrew segítségével installálhatjuk.

A parallel installálása pl.ilyen egyszerű:

$ brew install parallel

Címkék: macos homebrew brew

pbcopy pbpaste

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

Korábban írtam már az xclip parancsról, amivel parancssorból kezelhetjük a clipboardot, ha Mac OS alatt van szükségünk erre, akkor a pbcopy pbpaste párost használhatjuk:

$ echo 'alma' | pbcopy
$ echo $(pbpaste)
alma

Címkék: mac macos xclip pbcopy pbpaste

hashcat: pdf jelszó feltörése

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

Gyártsunk egy jelszóvédett pdf-et:

$ echo -n titok > titok.txt
$ enscript -p titok.{ps,txt}
$ ps2pdf titok.{ps,pdf}
$ pdftk titok.pdf output titok_jelszo.pdf user_pw 987654321

Ahhoz, hogy a titkosított pdf-et hashcattel feltörhessük, két dologra lesz szükségünk. Először is tudnunk kell, milyen hash-et használ a pdf titkosítás. A pdf fájl elején látszik, hogy ez egy PDF 1.4-es fájl, hashcat --help alapján ez a 10500-as hash mód. Másrészt ki kell vágnunk a pdf fájlból a hash-t. Ezt a JohnTheRipper program pdf2john.pl scriptjével tehetjük meg:

$ pdf2john.pl titok_jelszo.pdf | sed "s/^.*://" > hash_pdf.txt

Ezután hashcat már képes feltörni a jelszót brute-force módszerrel:

$ hashcat -m 10500 -a 3 -i hash_pdf.txt ?d?d?d?d?d?d?d?d?d?d?d
...
$pdf$2*3*128*-3904*1*16*35b780a117d0e708d9a5bc500c94dc31*32*5ec779d797699b837f97b6f33418f45400000000000000000000000000000000*32*240ab525f81f9d2851d51f167d556bb19f5bae85a6ca52e8c98a90fa98c2b65c:987654321

Session..........: hashcat
Status...........: Cracked
Hash.Type........: PDF 1.4 - 1.6 (Acrobat 5 - 8)
Hash.Target......: $pdf$2*3*128*-3904*1*16*35b780a117d0e708d9a5bc500c9...c2b65c
Time.Started.....: Sat Jul 28 11:29:47 2018 (1 min, 14 secs)
Time.Estimated...: Sat Jul 28 11:31:01 2018 (0 secs)
Guess.Mask.......: ?d?d?d?d?d?d?d?d?d [9]
Guess.Queue......: 9/11 (81.82%)
Speed.Dev.#2.....: 94665 H/s (28.31ms) @ Accel:16 Loops:8 Thr:64 Vec:1
Speed.Dev.#3.....: 1357.0 kH/s (68.98ms) @ Accel:640 Loops:17 Thr:64 Vec:1
Speed.Dev.#*.....: 1451.7 kH/s
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 107274240/1000000000 (10.73%)
Rejected.........: 0/107274240 (0.00%)
Restore.Point....: 10493952/100000000 (10.49%)
Candidates.#2....: 963454321 -> 999592321
Candidates.#3....: 962478232 -> 935512321

Started: Sat Jul 28 11:28:21 2018
Stopped: Sat Jul 28 11:31:02 2018

Itt is feltételeztem persze, hogy csupa számjegyből állt a jelszó, így pár perc alatt megtalálta a program a jelszót. Enélkül persze sokkal tovább tartott volna.

 

hashcat

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

A hashcat programmal jelszavak törhetünk fel, feltéve ha tudjuk, hogy milyen hash algoritmust használtunk a jelszó kódolásakor.

Tételezzük fel, hogy a már elavult md5-öt használjuk. A nem túl biztonságos (de nem is túl rövid) 98765432109 jelszó md5 hash-e e53420cce01df4edb9b01215f3733920

$ echo -n '98765432109' | md5 > hash_md5.txt
$ cat hash_md5.txt
e53420cce01df4edb9b01215f3733920

 Ezt hashcat használatával így törhetjük fel:

$ hashcat --potfile-disable -O -m 0 -a 3 -i hash_md5.txt ?d?d?d?d?d?d?d?d?d?d?d

  • --potfile-disable: Alapesetben a feltört hasheket hashcat eltárolja, és később újra felhasználja. Ezt a teszt kedvéért lekapcsoltam, hogy többször újra tudjam futtatni a tesztet.
  • -O: optimalizálás bekapcsolása
  • -m 0: md5 hash
  • -a 3: brute-force algoritmus
  • -i: A maszknál rövidebb jelszavakat is ellenőrzi.
  • hash_md5.txt: Ez a fájl tartalmazza a hasht.
  • ?d?d?d?d?d?d?d?d?d?d?d: Ez a maszk határozza meg, milyen formátumú lehet a jelszó, ez a 11 számjegyből álló jelszó maszkja.

A program kevesebb mint 1 perc alatt találja meg a jelszót:

...
e53420cce01df4edb9b01215f3733920:98765432109

Session..........: hashcat
Status...........: Cracked
Hash.Type........: MD5
Hash.Target......: e53420cce01df4edb9b01215f3733920
Time.Started.....: Sat Jul 28 10:26:02 2018 (30 secs)
Time.Estimated...: Sat Jul 28 10:26:32 2018 (0 secs)
Guess.Mask.......: ?d?d?d?d?d?d?d?d?d?d?d [11]
Guess.Queue......: 11/11 (100.00%)
Speed.Dev.#2.....: 145.3 MH/s (7.90ms) @ Accel:16 Loops:15 Thr:256 Vec:1
Speed.Dev.#3.....: 2185.2 MH/s (8.87ms) @ Accel:128 Loops:62 Thr:256 Vec:1
Speed.Dev.#*.....: 2330.5 MH/s
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 71073005568/100000000000 (71.07%)
Rejected.........: 0/71073005568 (0.00%)
Restore.Point....: 69697536/100000000 (69.70%)
Candidates.#2....: 16445128782 -> 68800372209
Candidates.#3....: 57136658459 -> 86274237109
Started: Sat Jul 28 10:25:50 2018
Stopped: Sat Jul 28 10:26:34 2018

Ha lehet, ne használjon senki se md5-öt, se csupa számjegyből álló jelszót.

Címkék: jelszó md5 hash md5sum hashcat

exa

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

Az ls az egyik legismertebb és legrégebbi unix parancs, az exa ennek egy modernebb változata. Ami rögtön feltűnik, hogy sokkal színesebb:

$ exa -l
.rw r--r-- 1.1k user 31 Mar 2017 COPYING .rw-r--r-- 6.2M user 8 Apr 2016 imgp8166.png .rw-r--r-- 8.0M user 11 Apr 2016 imgp8171.png .rw-r--r-- 7.2M user 9 Apr 2016 imgp8171_cuta.png .rw-r--r-- 8.8M user 9 Apr 2016 imgp8171_swa.png .rw-r--r-- 6.6M user 7 Apr 2016 imgp8171_swa_orig.png .rw-r--r-- 1.5k user 27 Jun 16:59 README.md .rwxr-xr-x 2.8k user 27 Jun 8:48 solarmiddle.sh .rwxr-xr-x 3.7k user 9 Apr 2016 solarmiddle.sh~ .rw-r--r-- 1.9k user 11 Apr 2016 solarmiddle_tutorial.md .rwxr-xr-x 3.4k user 21 Jul 9:22 solarwind.sh .rw-r--r-- 4.1k user 11 Apr 2016 solarwind_tutorial.md

Programozóként a --git kapcsoló tűnik nagyon hasznosnak, jelzi melyik fájl új, melyiket módosítottuk:


$ exa -l --git
.rw-r--r-- 1.1k user 31 Mar  2017 -- COPYING
.rw-r--r-- 6.2M user  8 Apr  2016 -N imgp8166.png
.rw-r--r-- 8.0M user 11 Apr  2016 -N imgp8171.png
.rw-r--r-- 7.2M user  9 Apr  2016 -N imgp8171_cuta.png
.rw-r--r-- 8.8M user  9 Apr  2016 -N imgp8171_swa.png
.rw-r--r-- 6.6M user  7 Apr  2016 -N imgp8171_swa_orig.png
.rw-r--r-- 1.5k user 27 Jun 16:59 -- README.md
.rwxr-xr-x 2.8k user 27 Jun  8:48 -- solarmiddle.sh
.rwxr-xr-x 3.7k user  9 Apr  2016 -N solarmiddle.sh~
.rw-r--r-- 1.9k user 11 Apr  2016 -- solarmiddle_tutorial.md
.rwxr-xr-x 3.4k user 21 Jul  9:22 -M solarwind.sh
.rw-r--r-- 4.1k user 11 Apr  2016 -- solarwind_tutorial.md

Arra azért érdemes odafigyelni, hogy elég sok kapcsoló más mint ls-nél volt.

Címkék: exa ls

aha

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

Ha a terminálom színes képernyőjét block-copyval idemásolom, akkor elvesznek a színek:

$ ls
alma dir/ korte ls.htm test.zip

Az aha (Ansi HTML Adapter) használatával HTML formátumba menthetjük az outputot, így beilleszthetjük HTML oldalba:

$ ls
dir/ korte ls.htm test.zip

A következő parancsot kellett használni a HTML részlet gyártásához:

$ ls --color=always | aha --no-header > ls.htm

Címkék: html color aha

animgif paletta

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

Írtam már egyszer korábban az animgif gyártásáról, de amikor legutóbb akartam használni az ott leírt módszert, igen csúnya lett az animgif. Egy animgifben csak 256 különböző lehet minden képben és ffmpeg alapesetben ugyanazt a palettát használja, függetlenül a videó színvilágától. Jobb eredményt lehet elérni, ha külön palettát készítünk a videó alapján:

ffmpeg -i input.mkv -vf "scale=320:-1:flags=lanczos,fps=25,palettegen" -y palette.png
ffmpeg -i input.mkv -i palette.png -lavfi "scale=320:-1:flags=lanczos,fps=25 [x]; [x][1:v]paletteuse" -y output.gif
gifsicle -i output.gif -O3 -o output_opt.gif

Az első parancsban (a többi filter mellett) a palettegen-t használjuk, ez egy 16x16 pixeles képet gyárt (palette.png) ami az optimális paletta színeit tartalmazza. Ezt használja fel a második parancs az animgif gyártásához a paletteuse filterrel. A harmadik parancs az animgifet optimalizálja gifsicle segítségével.

Címkék: animgif ffmpeg gifsicle

sshtron

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

Egyrészt természetesen teljesen értelmetlen, másrészt viszont nagyszerűen mutatja be az ssh lehetőségeit az sshtron nevű játék, ahol egy szerverre sshzva játszhatunk tronnal (ha éppen megy a szerver):

ssh sshtron.zachlatta.com

 sshtron.jpg

Címkék: ssh sshtron

paste

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

A paste paranccsal több fájl tartalmát olvaszthatjuk egybe.

Legyen a test_1.txt tartalma:

1
2
3
4
5
6

test_2.txt tartalma:

a
b
c
d
e
f

paste soronként illeszti össze a fájlokat, az általunk megadott szeparátorkarakterrel:

$ paste -d ';' test_1.txt test_2.txt
1;a
2;b
3;c
4;d
5;e
6;f

Használhatjuk a -s kapcsolóval is egyetlen input fájl sorainak oszlopokba rendezésére:

$ paste -s -d ';' test_1.txt
1;2;3;4;5;6

Ha több szeparátorkaraktert adunk meg, akkor elérhetjük, hogy minden sorba a test_1.txt három sora kerüljön:

$ paste -s -d ';;\n' test_1.txt
1;2;3
4;5;6

 

Címkék: paste

cikkajánló: How To Use Bash Parameter Substitution Like A Pro

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

Írtam már párszor bash változókról (egy, kettő, három), nemrégiben találtam egy nagyszerű cikket, ami még sokkal több trükköt bemutat: How To Use Bash Parameter Substitution Like A Pro .

 

Címkék: cikkajánló bash változó

ack

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

A grep parancsot szinte mindenki ismeri, több mint 40 éves, több új programot készítettek már a leváltására (én is írtam már pl. az agrep nevű változatról) az egyik ilyen próbálkozás az ack, ami a grephez hasonló, programozóknak szánt eszköz.

Használata végtelenül egyszerű, ha az aktuális könyvtárban (és rekurzívan az összes alkönyvtárban) szeretnénk rákeresni egy adott regexp mintára:

ack "A.*Task"

Ha nem akarunk az összes fájlban keresni, hanem csak a java források érdekelnek:

ack --java "A.*Task"

Hasznos, hogy automatikusan kihagyja .git, .svn, ... alkönyvtárakat.

 A weboldalukon (ahol az URL is már kissé furcsa) érdemes megnézni a többi érvet is amivel megpróbálnak győzni arról, hogy ezt használjuk inkább a grep helyett.

Címkék: grep ack

gotty

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

Ha parancssort használunk megoszthatjuk a terminálunkat egy weboldalon a gotty segítségével.

A

gotty top

parancs után a http://127.0.0.1:8080 oldalon megnézhetjük a top eredményét. Az oldal szépen folyamatosan frissül, ahogy top frissíti az eredményeket.

Alapesetben a weboldal csak megmutatja az eredményeket, de a -w kapcsolóval írási jogot is kapunk, vagyis a

gotty -w emacs -nw alma.txt

segítségével weboldalon keresztül editálhatjuk az alma.txt fájlt. (A -nw-ről itt írtam).

Sőt, a

gotty -w bash

hatására a weboldalon keresztül lényegében egy terminalt kapunk, ahová tetszőleges parancsot beírhatunk.

Mondanom sem kell, csodálatos biztosági réseket lehet ezzel az eszközzel nyitni, szóval csak óvatosan.

 

Címkék: bash webszerver gotty

pm-utils

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

Több módszerrel is lehet parancssorból hibernálni vagy készenléti állapotba tenni a gépet én pm-utils csomagot szoktam használni. A parancssor előnye, hogy egy este elindított hosszú folyamat után a gép magától "elalszik". Kissé mesterséges példa:

$ sleep 60 && pm-suspend

 

Címkék: hibernate suspend pm-utils

thefuck

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

Parancssor használata közben időnként hibázik az ember. Ilyenkor némi káromkodás után beírjuk a helyes parancsot. Ebben tud segíteni a szép nevű thefuck program ami az előző elrontott parancsot próbálja megjavítani.

Ha például véletlenül annyit írunk, hogy

git stats

akkor érhető módon git jelzi, hogy nem ismeri a stats parancsot. Ha ezután kiadjuk a

fuck

parancsot, akkor thefuck javasolja

git status

használatát. Ezt egy enterrel elfogadva le is fut a parancs.

A program github oldalán egy animált gif több példát is mutat.

 

Címkék: fuck thefuck

unbuffer

2017.08.19. 10:00 | sala | 2 komment

Elég sok olyan parancs van, ami (feltételezve, hogy egy modern terminált használunk) színeket használ. Ha viszont az eredményt less-szel nézzük, a színek elvesznek, mert a parancs érzékeli, hogy nem terminálra ír, hanem csak egy pipe-ba.

Vagyis például

git status

színes, de

git status | less

már nem színes.

Ha egyszerre szeretnénk less-t és színeket a következőképpen kell használnunk a parancsot:

unbuffer git status | less -r

Címkék: szín pipe unbuffer

afzcamCreator

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

Tisztában vagyok vele, hogy ez vélhetően még a többi bejegyzésnél is szűkebb réteget céloz meg, de ha valaki Corel AfterShot Pro 3-at szeretne használni, de az sajnos nem támogatja a fényképezőgépét, viszont támogat egy hasonló gépet (de nem beépítve, hanem letölthető camera profile-ként), akkor annak a valakinek érdemes lehet megnézni az afzcamCreator programom (bash script, szóval legalább nem offtopic).

Címkék: camera corel aftershot pro afzcamCreator

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