INDEX preuzeto sa: https://sysportal.carnet.hr/ 01.Najdulji redak 02.Ispis paketa po velicini 03.Grepanje stringa po paragrafu 04.Kako doznati koji su mail i DNS posluzitelji za neku domenu? 05.Kako brzo saznati vanjsku IP adresu iz naredbene linije? 06.Mountanje direktorija putem ssh 07.Enkripcija datoteke u vim editoru 08.32 ili 64 bita? 09.Brisanje linije iz bash history 10.Jednokratno prebacivanje datoeka 11.Kako promijeniti raspored tipkovnice na konzoli? 12.Spajanje na posluzitelj preko drugog posluzitelja 13.Rezanje nepotrebnih dijelova video zapisa 14.Rotiranje video zapisa za 90 stupnjeva 15.Kratice u ljuski - velika i mala slova 16.Kako ce ljuska interpretirati rijec? 17.Istovremeno uredjivanje vise datoteka s usporedbom razlika 18.Provjera php konfiguracije na posluzitelju 19.Nadzor procesa naredbom top po dijelu imena procesa 20.Lista svih naredbi na sustavu 21.Podsjetnik u komandnoj liniji 22.Here strings 23.Popis paketa po datumu instaliranja 24.Brisanje svih konfiguracijskih datoteka obrisanih paketa (purge) 25.Uklanjanje starog kljuca iz popisa poznatih ssh hostova 26.Grep i logicki operator OR 27.Pokretanje pseudoterminala pomocu ssh 28.Zaustavljanje izvrsavanja programa nakon odredjenog vremena 29.Pretvaranje ispisa komandnolinijske naredbe u sliku 30.Raspakiranje vise rar datoteka odjednom 31.Prebacivanje karaktera u novi karakter set 32.Uredjivanje datoteke na udaljenom racunalu 33.Debugiranje web posluzitelja pomocu HTTP zaglavlja 34.Kako doznati vise o procesoru (ili procesorima) u posluzitelju 35.Dodavanje rezultata izvrsavanja naredbe u vi (ili vim) editoru 36.Spajanje vise slika u jednu PDF datoteku 37.Zanimljiva uporaba preusmjeravanja 38.Dodavanje vremena izvrsavanja naredbi history 39.Pronalazenje datoteka po vremenu promjene 40.Ispis pojedinih linija datoteke 41.MTR - alternativa ping i traceroute programima 42.Prikaz trenutnog runlevela 43.Mapiranje tipkovnice kroz .inputrc datoteku 44.Izlist sadrzaja komprimiranih datoteka 45.Postavka BASH ljuske za sprijecavanje slucajnog prebrisivanja datoteke 46.Unmount zauzetog uredjaja 47.Generator slucajnih premutacija 48.Kako obojiti log datoteku 49.Kratice za brzi rad u bash ljuski 50.Detekcija linux distribucije 51.Naredba dig za pretrazivanje DNS podataka 52.PDF toolkit 53.Dodavanje zadnjeg argumenta prethodne naredbe 54.Pregled izvrsenih naredbi 55.Informacije o posluziteljskom hardware-u 56.Real-time pracenje promjena u log datoteci 57.Kreiranje direktorija sa poddirektorijima iz jedne linije 58.Brisanje sadrzaja terminala 59.Ispis csv datoteke u stupce 60.Prikaz rednog broja linija pri koristenju naredbe grep 61.Naredba time 62.Prikaz procesa koji drze otvorene prikljucne tocke 63.Brza provjera ponavljanja u popisima 64.Preimenovanje ekstenzija datoteka iz velikih u mala slova 65.Unmount busy particije 66.Bojanje ispisa naredbe grep 67.Prikaz non-printing karaktera naredbom cat 68.Brisanje sadrzaja datoteke u bash ljuski 69.Korisna naredba za brze snalazenje u bash ljuski 70.Kratice za snalazenje u bash ljuski 71.Vrijeme zadnjeg reboota 72.Kratice za brze snalazenje u bash-u 73.Kreiranje direktorija s imenom tekuceg datuma 74.Čitanje log datoteka pomocu naredbe less 75.Izlist svih prikljucnih tocaka u stanju slusanja (listening sockets) 76.Kopiranje datoteka koristenjem bash prosirenja 77.Deset najvecih direktorija sortiranih po velicini 78.Izlist otvorenih prikljucnih tocaka 79.Prikazivanje prvih deset procesa po zauzecu memorije 80.Rekurzivna zamjena niza znakova 81.'cd -' vraca u direktorij u kojem ste prethodno bili 82.'sudo !!' ako ste zaboravili da prethodno ukljucite sudo TEXT 01.Najdulji redak naredba: wc -L Naredba "wc -L" ce ispisati najdulji redak u tekstualnoj datoteci: $ wc -L /etc/passwd 110 /etc/passwd Najveci redak je duljine 110 znakova (nazalost, nema opcije da se taj redak i prikaze). Ovo je zgodno za situacije kad trebate prenijeti preformatirani tekst na web ili slicne primjene, gdje ne bi trebali ili smjeli prelamati retke u novi red. 02.Ispis paketa po velicini naredba: dpkg-query/aptitude show Kad ponestane prostora na disku zgodno je moci saznati koliko pojedini paket zauzima prostora (zbog potencijalnog brisanja). Pronasli smo skriptu koja na cak cetiri nacina prikazuje koji paketi zauzimaju najvise mjesta (link: https://ubuntuforums.org/showthread.php?t=599424). #!/bin/bash if [ $# -ne 1 ] then echo "usage : $0 <0/1/2/3>" exit 0 fi if [ $1 -eq 0 ] then aptitude show '~n.*' | awk '\ /^Package:/ {p = $0};\ /^State:/ {s = $0};\ /^Uncompressed Size:/ {print p " " s " " $0};\ ' | grep 'State: installed' | sed 's/: /:/g' | sort -t: -n -k4 | more fi if [ $1 -eq 1 ] then dpkg-query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n fi if [ $1 -eq 2 ] then dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n fi if [ $1 -eq 3 ] then dpkg-query --show --showformat='${Package;-50}\t${Installed-Size} ${Status}\n' | sort -k 2 -n |grep -v deinstall fi 03.Grepanje stringa po paragrafu naredba: function grepar() { perl -00ne "print if /$1/i" < $2; } Naredba grep ce nam iz tekstualne datoteke ispisati sve retke koji sadrzavaju trazeni niz znakova. No, ako trebamo cijeli paragraf, mozemo upotrijebiti perl. Kako ne bismo morali previse kucati, najlakse je ubaciti ovaj perl oneliner u BASH funkciju, koju smo nazvali "grepar". Funkciju mozete upisati u svoj .bashrc. Evo razlike izmedju grep-a i nase funkcije: server$ grep "Linux Voice" datoteka.txt Magazin Linux Voice nudi besplatno preuzimanje prvog broja cija je glavna tematika Linux i softver otvorenog koda - Linux Voice. U Osim danas neuobicajenog poteza kretanja s tiskanim izdanjem, Linux Voice 127 tisaca funti, od planiranih 90 tisuca. Linux Voice je mogao krenuti. server$ grepar "Linux Voice" datoteka.txt Magazin Linux Voice nudi besplatno preuzimanje prvog broja Nekako nam je ispod radara prosla vijest o osnivanju novog tiskanog casopisa cija je glavna tematika Linux i softver otvorenog koda - Linux Voice. U vrijeme kada se drugi casopisi gase ili u potpunosti prelaze na digitalan nacin distribucije, pojavio se ovaj casopis s novim idejama. Osim danas neuobicajenog poteza kretanja s tiskanim izdanjem, Linux Voice je i startao na neuobicajen nacin. Naime, magazin je pokrenut ne iz privatnih sredstava, nego putem crowdfunding kampanje. Uspjesno je skupljeno 127 tisaca funti, od planiranih 90 tisuca. Linux Voice je mogao krenuti. 04.Kako doznati koji su mail i DNS posluzitelji za neku domenu? naredba: host -t NS example.com Naredba host dio je paketa bind9-host, a sluzi za slanje DNS upita. U navedenom primjeru naredba vraca DNS posluzitelje za domenu example.com. Promjenom "-t" opcije moguce je slanje raznih upita, primjerice pretraga aliasa: $ host -t CNAME www.example.com www.example.com has no CNAME record ili slanje upita za MX zapis: $ host -t MX example.com example.com has no MX record Alternativna naredba koju mozete koristiti u ovu svrhu je dig. 05.Kako brzo saznati vanjsku IP adresu iz naredbene linije? naredba: curl ifconfig.me $ curl ifconfig.me 161.53.A.B Ostale CLI opcije koje podrzavaju mozete saznati ukoliko odete na njihov web: http://ifconfig.me 06.Mountanje direktorija putem ssh naredba: sshfs korisnik@stroj.example.com:/putanja/do/direktorija /home/korisnik/putanja/do/lokalnog/direktorija Ukoliko zelite direktno pristupati datotekama na udaljenom posluzitelju kao da su na lokalnom racunalu, naredbom sshfs (Secure SHell FileSystem) mozete mountati direktorij s udaljenog racunala na lokalni mount point. SSHFS na udaljenom racunalu koristi SFTP dio SSH servera, a na lokalnom racunalu koristi FUSE (Filesystem in Userspace) kernel modul. Kada zavrsite s radom unmount mozete uraditi naredbom: fusermount -u /home/korisnik/putanja/do/lokalnog/direktorija 07.Enkripcija datoteke u vim editoru naredba: vim -x Ukoliko imate potrebu "na brzinu" zastititi pristup nekoj tekstualnoj datoteci, primjerice poslati sebi nekakav privremeni password mailom, a nemate pristup gpg ili nekom drugom enkripcijskom softweru, za pocetak ce vam biti dostatan i vim editor. Nakon sto pokrenete navedenu naredbu, vim ce vas pitati lozinku (dva puta). Nakon snimanja datoteka ce biti ekriptirana VimCrypt algoritmom, istim koji se koristi i kod Pkzip programa. Kako biste vidjeli sadrzaj takve datoteke potrebno ju je otvoriti vim editorom i unijeti tocnu lozinku. Za micanje enkripcije nakon otvaranja datoteke u vim editoru potrebno je unijeti: :set key= Iako se ne radi o super jakoj zastiti - teoretski ju je moguce probiti ukoliko poznajete dio pohranjenog teksta - pripazite da ne izgubite lozinku jer biste u suprotnom mogli ostati bez podataka iz datoteke. 08.32 ili 64 bita? naredba: uname -m Kad vam u ruke dodje necije racunalo s instaliranim Linuxom, jedna od stvari koja ce vas zanimati jest kakav je procesor, da li je 32-bitni ili 64-bitni? Najbrzi nacin da to saznate jest ovaj: uname -m gdje -m znaci "machine". Ako dobijete odgovor x86_64 onda je procesor 64-bitni. Ako je odgovor i686 onda je 32-bitni. Isto vrijedi i za odgovore i586 ili i486. 09.Brisanje linije iz bash history naredba: history -d Dogodli li vam se ikad da greskom umjesto naredbe u komandnoj liniji ukucate svoj password? Kako ne bi ostao snimljen u bash_history datoteci i tako dostupan jednom krugu korisnika, jedno od rjesenja je editiranje spomenute datoteke. Alternativa je gore navedena naredba koja ce se daleko jednostavnije pobrinuti za ovakav problem. 10.Jednokratno prebacivanje datoeka naredba: nc -l -p 55555 Za prebacivanje datoteka s jednog racunala u mrezi na drugo obicno se koriste servisi, ftp ili scp. No oni podrazumijevaju da na ciljnom racunalu taj servis radi kao daemon, odnosno da je neprestno aktivan i ocekuje konekciju. Ako se radi o serveru, to se na neki nacin podrazumijeva, iako nije tesko zamisliti sever na kojem ni jedan od tih servisa nije potreban. Postoji nacin da se jednokratno prebace datoteke, koristenjem programa netcat. Ako vec nije instaliran, obavite to na obje strane: $ apt-get install nc Na ciljnom racunalu pokenemo netcat na odredjenom portu (prije toga se pozicionirajte u direktorij u kojem zelite primiti datoteke): $ nc -l -p 55555 | tar xzvf - U prijevodu, pokreni nc koji slusa (l - listen) na portu 55555. Broj porta je proizvoljan, pet petica smo napisali samo radi lakseg pamcenja. No neka to ne bude port koji je vec zauzeo neki drugi program. Na racunalu s kojeg saljemo podatke, nc pokrenemo malo drugacije: $ tar czvf - /neki/direktorij | nc -w 3 192.168.22.22 55555 Tar koristimo da bi sve datoteke u nekom direktoriju spojili u jednu arhivu, koju cemo usput komprimirati (parametar z) da ubrzamo prijenos, pa je saljemo naredbi nc koju usmjerimo na adresu ciljnog racunala i port na kojem slusa drugi nc. Prekidac -w (wait) je tu za svaki slucaj, ako se ciljni nc ne odazove odmah zadali smo period cekanja od tri sekunde. Taj prekidac ne bi imao ucinak na ciljnom racunalu, jer ce tamo nc cekati dovijeka na uspostavljanje veze. 11.Kako promijeniti raspored tipkovnice na konzoli? naredba: loadkeys us Kazu da se o ukusima ne raspravlja, pa to vrijedi i za raspored znakova na tipkovnici. Stariji sistemci nerijetko koriste americku tipkovnicu, jer su tako navikli. Mladji kolege radije koriste lokaliziran, hrvatski raspored. Danas se i uz servere isporucuju lokalizirane tipkovnice, pa nije lose da raspored tipki odgovara onome sto na tipkama pise. Kada pomazete kolegi, odmah cete primijetiti da je njegov raspored drugaciji od onog na koji ste navikli. To moze uzrokovati probleme vec pri ukucavanju zaporke. Da bi izbjegli pogreske i neprestano ispravljanje, sto se dogadja kad brzo tipkate, bolje je privremeno promijeniti raspored na onakav na koji ste navikli. To se jednostavno napravi naredbom loadkeys: loadkeys us Kad obavite posao, vratite sve na staro: loadkeys hr Ovo ce raditi na konzoli, ali ne i ako radite iz daljine, u terminalu. U tom slucaju ce, na Debianu, pomoci ovakva naredba: dpkg-reconfigure keyboard-configuration Trebat ce odgovoriti na nekoliko pitanja, skrolajuci po ponudjenim postavkama: kakvu tipkovincu koristite (obicno onu s 105 tipaka), koji nacionalni raspored zelite (croatian ili english us), koju tipku zelite koristiti kao AltGr, a koju kao tipku Compose, te da li zelite zaustavljati X-e kombinacijom Alt-Ctrl-Backspace. 12.Spajanje na posluzitelj preko drugog posluzitelja naredba: ssh -t ssh U praksi se cesto susrecemo s potrebom SSH spajanja na posluzitelj iz mreze iz koje je pristup zabranjen vatrozidom. Tada se uobicajeno koristi nekakav posluzitelj posrednik s kojeg se moguce spojiti na ciljani posluzitelj. Koristeci navedenu naredbu moguce je automatski pokrenuti spajanje preko pseudoterminala posrednog posluzitelja. O izvrsavanju naredbi pokretanjem pseudoterminala pisali smo ovdje. https://sysportal.carnet.hr/node/907 13.Rezanje nepotrebnih dijelova video zapisa naredba: ffmpeg -i VTS_01_1.VOB -ss 00:01:00 -t 00:14:32 output.vob Sistemca je zapao jos jedan "neobican" zadatak, koji nije dio opisa posla sistemskog inzenjera, ali spada u poslove koje ne mozes odbiti: upload video zapisa na Youtube. Originalni filimic sadrzavao je reklame i spicu emisije na pocetku i kraju, pa je uradak najprije trebalo editirati, odrezati suvisne dijelove. Za Linux postoji nekoliko slobodnih programa za editiranje filmova, ali trebalo bi nauciti kako se njima sluziti, a sistemac kronicno nema vremena. Srecom, Ljubo Hrboka je nedavno spomenuo naredbu ffmpeg, pravi svicarski nozic za takve stvari. Uz malo citanja man stranice i dva-tri pokusaja, rjesenje je ispalo krajnje jednostavno: fmpeg -i VTS_01_1.VOB -ss 00:01:00 -t 00:14:32 output.vob U prijevodu: ucitaj datoteku VTS_01_1.VOB i presnimi je u datoteku output.vob, pocev od prve minute nakon pocetka, pa daljnjih cetrnaest minuta i trideset dvije sekunde. Naravno, filmic je trebalo prije toga pogledati i zabiljeziti mjesta (odnosno vremena od pocetka) na kojima ga treba odrezati. Jednostavno zar, ne? PS. Buduci da je sistemac savjestan i zeli postivati zakonsku regulativu, zatrazio je i dozvolu autora TV priloga za objavljivanje filmica na Youtubeu. Treba li reci da je uradak objavio tek kad je tu dozvolu dobio? Treba li reci da se time zamjerio nestrpljivom korisniku? Ali ovaj post scriptum ionako ne spada u tehnicku problematiku, pa zazmirite jednim okom na njega. 14.Rotiranje video zapisa za 90 stupnjeva naredba: ffmpeg -i in.mp4 -vf "transpose=1" out.mp4 S vremena na vrijeme svima se nama obrate korisnici s "cudnim" zahtjevima iz podrucja informatickih tehnologija. Kako nove tehnologije budu dostupnije sve sirem krugu ljudi vjerujem da ce broj takvih zahtjeva samo rasti. Neobican zahtjev dobio je kolega s jedne ustanove. Korisnik je snimajuci video zapis mobilnim uredjajem "okrenuo" uredjaj tako da je zapis ostao zarotiran pod kutem od 90o. Posljednje vrijeme cesto primjecujem takve slucajeve pa bih ovdje ponudio jedno jednostavno rjesenje - ffmpeg. Kad god imate kakav problem s video zapisom sjetite se da ovaj program radi "sve sto vam padne na pamet, a i vise od toga". Dakle, navedeni primjer ucitat ce vas video in.mp4 i snimiti ga u datoteku out.mp4 zarotiranog za 90o u smjeru kazaljke na satu. Ostale opcije rotiranja su: 0 = 90o suprotno od smjera kazaljke na satu i vertikalno zrcaljenje 1 = 90o u smjeru kazaljke na satu 2 = 90o suprotno od smjera kazaljke na satu 3 = 90o u smjeru kazaljke na satu i vertikalno zrcaljenje 15.Kratice u ljuski - velika i mala slova naredba: ALT+U / ALT+L Zgodna naredba za prebacivanje rijeci iz velikih u mala slova. Ukoliko ste kasno primjetili da ste, primjerice utipkavajuci naredbu, neku varijablu umjesto velikim napisali malim slovima, mozete uvijek kursorom doci na pocetak te rijeci i otipkati kombinaciju tipaka ALT+U i pretvoriti tu rijec u "uppercase". ALT-L pretvorit ce sva slova u rijeci u mala. 16.Kako ce ljuska interpretirati rijec? naredba: type -a ls Ova naredba vam omogucava da na jednostavan nacin doznate kako ce ljuska interpretirati neku unesenu naredbu ili (kljucnu) rijec. Primjerice, navedena naredba/rijec ls cesto sadrzi predefinirane aliase u datoteci .bashrc poput: alias ls='ls --color=auto' Pokretanjem naredbe ls izvrsit ce se odgovarajuci postavljeni alias. Naredba type daje nam uvid u nacin interpretiranja naredbe ili rijeci u smislu da naredba moze biti alias, funkcija, file, ugradjena funkcija (builtin) ili rezervirana rijec. Primjeri $type -a ls ls is aliased to `ls --color=auto' ls is /bin/ls $type else else is a shell keyword $type type type is a shell builtin 17.Istovremeno uredjivanje vise datoteka s usporedbom razlika naredba: vim -d datoteka1 datoteka2 Prepravljate konfiguracijsku datoteku, program ili iz nekog drugog razloga zelite uredjivati vise datoteka istovremeno i pratiti razlike medju njima? Ovom naredbom pokrenute vim editor u diff modu pa uz bojanje sadrzaja mozete lakse pratiti razlike izmedju datoteka koje uredjujete. Ova se naredba moze pokrenuti na sljedeci nacin: vimdiff datoteka1 datoteka2 Neke od opcija koje ce vam trebati za snalazenje u editoru su: zo - prikazi skrivani dio sadrzaja zc - sakrij dio sadrzaja Ctrl-w Ctrl-w - prebaci se u sljedeci prozor :diffupdate - osvjezi promijenjeni sadrzaj 18.Provjera php konfiguracije na posluzitelju naredba: echo '' > /var/www/testinfo.php Često korisnici ili web programeri imaju zahtjeve za podesavanje pojedinih parametara web posluzitelja. Ovo je najlaksi/najelegantniji nacin za prikaz svih parametara php konfiguracije. Navedenu naredbu je potrebno izvrsiti tako da novokreirana datoteka testinfo.php bude dostupna putem web posluzitelja - u primjeru je direktorij /var/www koji je uobicajeno dostupan preko weba. Nakon toga je potrebno web preglednikom pristupiti na adresu http://ime_posluzitelja/testinfo.php i dobije se stranica s tabelarnim prikazom svih php konfiguracijskih varijabli i njihovih vrijednosti. Naravno, nakon pregleda potrebnih parametara, kreiranu datoteku ne bi bilo lose ukloniti s posluzitelja jer potencijalnim malicioznim korisnicima moze dati uvid u eventualne sigurnosne propuste na sustavu. 19.Nadzor procesa naredbom top po dijelu imena procesa naredba: top -p $(pgrep -d , dio_imena_procesa) Ponekad se nadziruci procese zelimo usredotociti na nekoliko procesa po njihovom imenu ili dijelu imena. Ova ce naredba pokrenuti top s parametrima procesa koje smo naveli po dijelu imena. Primjerice: top -p $(pgrep -d , apache) kao rezultat daje: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1490 root 20 0 245m 11m 6052 S 0 0.3 0:00.43 apache2 1547 www-data 20 0 245m 6672 692 S 0 0.2 0:00.01 apache2 1548 www-data 20 0 245m 6668 688 S 0 0.2 0:00.00 apache2 1549 www-data 20 0 245m 6668 688 S 0 0.2 0:00.00 apache2 1550 www-data 20 0 245m 6668 688 S 0 0.2 0:00.00 apache2 1551 www-data 20 0 245m 6668 688 S 0 0.2 0:00.00 apache2 Top -p monitorira proces s navedenim pidom (moze ih se istovremenu nabrojati vise, ako su odvojeni zarezima), a naredba pgrep -d , dio_imena_procesa nam vraca sve pidove svih procesa koji u svom imenu imaju trazene rijeci odvojene zarezom 20.Lista svih naredbi na sustavu naredba: compgen -c Naredba compgen je ugradjena u bash i u osnovi sluzi za generiranje mogucih nastavaka rijeci (autocomplete). Naredba je mocna, s razilcim parametrima dobija dodatne funkcije. Na primjer, s navedenom opcijom -c izlistat ce se popis naredbi dostupnih na sustavu. Ukoliko zelite pregledniji, sortiran ispis, pokusajte ovako : compgen -c | sort -u | less Osim navedene opcije naredbe compgen zanimljive su i sljedece: compgen -a - lista aliase na sustavu compgen -v - lista imena varijabli compgen -d /dir/ - izlistat ce sve direktorije u trenutnom direktoriju 21.Podsjetnik u komandnoj liniji naredba: leave +30 Svi znaju da vrijeme brzo leti, a narocito dok rjesavate kakav problem na posluzitelju ili u ljuski vaseg osobnog racunala. Navedena naredba postavit ce alarm koji ce vas nekoliko minuta prije isteka tridesete minute obavijestavati da je vrijeme za odlazak. Nakon toga, svaku sljedecu minutu ce u vasem terminalu izbacivati poruke: Time to leave! Time to leave! Time to leave! Program leave je moguce instalirati iz paketa naredbom: #apt-get install leave 22.Here strings naredba: wc -c <<<$var S "Here documents" smo vas upoznali u clanku http://sistemac.carnet.hr/node/693, a sada cemo vas upoznati s manje poznatim oblikom. Radi se o "Here strings", a najlakse ih je prepoznati po uporabi znaka "<<<" umjesto "<<": $ export var="Testna recenica" $ wc -c <<<$var 16 Dakle, pomocu "Here strings" funkcije mozemo preusmjeriti standardni ulaz (stdin) naredbe, te ce se sadrzaj varijable $var prihvatiti bas kao da ste je ukucali s tipkovnice. Isti reziultat cete dobiti ako napravite: $ wc -c Testna recenica 16 Mozemo zakljuciti da su "Here strings" osiromasena inacica "Here documents", a primjenu mozemo naci kada trebamo nekom programu isporuciti sadrzaj varijable kao stdin. Primjer slanja maila iz jednog retka: $ mailx -s "Tema" korisnik@domena.hr <<<$var $ 23.Popis paketa po datumu instaliranja naredba: ls -tl /var/lib/dpkg/info | grep list | less Sortiranjem ispisa naredbe ls mozemo dobiti datume instaliranja paketa, sto je ponekad korisno, na primjer kad provjeravamo koji je paket izazvao nekakav problem. Ispis se moze malo dotjerati uz pomoc naredbe awk: ls -tl /var/lib/dpkg/info | awk '{print $6, $7, $8, $9}' | less 2012-02-27 19:38 python-pkg-resources.list 2012-02-27 19:38 python-httplib2.list 2012-02-25 09:25 openjdk-6-jre.list 2012-02-25 09:25 openjdk-6-jre-headless.list 2012-02-25 09:25 icedtea-6-jre-jamvm.list 2012-02-25 09:25 openjdk-6-jre-lib.list 2012-02-25 09:25 icedtea-6-jre-cacao.list 2012-02-23 19:49 jockey-common.list 2012-02-23 19:49 jockey-gtk.list ... 24.Brisanje svih konfiguracijskih datoteka obrisanih paketa (purge) naredba: dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs dpkg --purge Nakon brisanja paketa mogu zaostati konfiguracijske datoteke, koje nam nekad trebaju, a nekada ne. Ukoliko zelite prijeci na dependency-based boot sustav u Squeezu, pozeljno je obrisati stare konfiguracijske datoteke iz direktorija /etc/init.d. Da, i startup skripte mogu biti konfiguracijske... Ukoliko imate instaliran aptitude, brisanje je jos lakse: aptitude purge "~c" 25.Uklanjanje starog kljuca iz popisa poznatih ssh hostova naredba: ssh-keygen -R ime_hosta Ukoliko je od posljednjeg spajanja na neko racunalo promijenjen njegov ssh kljuc, radi promjene IP adrese, zamjene racunala ili instalacije novog operacijskog sustava, ssh klijent ce onemoguciti spajanje uz poruku: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed .... Ukoliko ste sigurni da se radi o pravom racunalu, ciji je kljuc promijenjen, najlakse rjesenje problema je uklanjanje starog kljuca navedenom naredbom. Nakon toga ce vas pri ponovnom spajanju ssh klijent pitati: The authenticity of host 'ime_hosta (ip_adresa)' can't be established. RSA key fingerprint is 06:3b:1d:3e:da:85:7d:2f:03:ee:ba:47:a3:90:e3:c7. Are you sure you want to continue connecting (yes/no)? Odgovor "yes" znaci da ce se novi ssh kljuc spremiti u datoteku .ssh/known_hosts. 26.Grep i logicki operator OR naredba: grep -E 'Recipient|Sender' syslog Kopanje po logovima u potrazi za odredjenim detaljem bilo bi naporan posao kad ne bismo koristili alate za pretrazivanje. U tome nam pomaze naredba grep koja u svom "extended" obliku (opcija -E) omogucava koristenje regularnih izraza. U primjeru je prikazan oblik naredbe koji koristi logicki operator OR. Kao rezultat ispisuje linije koje imaju rijec Recipient ili rijec Sender. Ukoliko na ovaj izraz zelimo nadovezati logicki operator AND, mozemo to uraditi proslijedjivanjem: grep -E 'Recipient|Sender' syslog | grep 'reject' Ovako bi kao rezultat bile vracene sve linije koje obavezno imaju rijec reject te jednu od rijeci Recipient ili Sender. 27.Pokretanje pseudoterminala pomocu ssh naredba: ssh -t korisnik@192.168.1.1 "top" Ponekad zelite na brzinu obaviti nesto na udaljenom racunalu. Normalna procedura bila bi da se ulogirate pomocu ssh, pokrenete naredbu, pa se odlogirate. No postoji i kraci put. Ukoliko naredbu napisete ovako: ssh korisnik@192.168.1.1 "ls -al" kao rezultat ce vam se vratiti izlist korisnikovog direktorija na udaljenom racunalu. Trenutna ssh sesija nije prekinuta, a nakon izvrsenja navedene naredbe, udaljena ssh sesija se automatski zavrsava. Ukoliko, bez prekida trenutne sesije, na udaljenom racunalu zelite izvrsiti program koji manipulira terminalom, primjerice top ili pine, morate u trenutnoj sesiji pokrenuti pseudoterminal. Opcija -t omogucava naredbi ssh izvrsavanje u pseudoterminalu unutar trenutne sesije. Primjerice, naredba pokrenuta bez opcije "-t": korisnik@192.168.1.100:~$ ssh korisnik@192.168.1.1 "top" korisnik@192.168.1.1's password: TERM environment variable not set. korisnik@192.168.1.100:~$ 28.Zaustavljanje izvrsavanja programa nakon odredjenog vremena naredba: timeout 3s Ukoliko imate nekakav program cije izvrsavanje je potrebno zaustaviti nakon odredjenog proteklog vremena, mozete koristiti naredbu timeout koja dolazi s paketom Coreutils (od verzije 8.5). Uz ovu naredbu dostupna je opcija -s (--signal) kojom se programu koji se izvrsava moze poslati bilo koji signal (popis signala mozete pogledati naredbom kill -l). Navedeni primjer zaustavlja izvrsavanje programa nakon 3 sekunde. Trajanje je moguce naznaciti sljedecim opcijama: s - sekunde m - minute h - sati d - dani 29.Pretvaranje ispisa komandnolinijske naredbe u sliku naredba: ls -al | convert label:@- izlist.png Program "ImageMagick" vec se spominjao u jednoj od proslih naredbi tjedna. Ovom prilikom zelim prikazati jednu od mogucnosti tog programa koristenjem naredbe convert. U ovom slucaju, naredba convert ce konvertirati u sliku ispis naredbe "ls -al". Oznaka "label:" sluzi da naredbi definiramo tekst koji ce se konvertirati u sliku. Primjerice: convert -background black -fill white -size 300x200 label:TeXt itext.png generira sliku convert output Ukoliko zelimo tekst citati iz datoteke potrebno je dodati oznaku "@" (primjerice convert label:@/etc/motd motd.png), a za citanje teksta iz standardnog inputa potrebno je dodati oznaku "-". Primjer iz originalne naredbe: total 8 drwxr-xr-x 2 root root 4096 Sep 23 10:50 . drwxr-xr-x 3 root root 4096 Sep 23 10:50 .. -rw-r--r-- 1 root root 0 Sep 23 10:50 a.txt -rw-r--r-- 1 root root 0 Sep 23 10:50 b.txt -rw-r--r-- 1 root root 0 Sep 23 10:50 c.txt convert output 1 30.Raspakiranje vise rar datoteka odjednom naredba: find -name "*.rar" -exec unrar -e {} \; Ukoliko u jednom direktoriju imate vise rar datoteka ovom naredbom mozete ih raspakirati sve odjednom. Ovakav nacin je zanimljiv zbog -exec opcije naredbe find koja se zgodno moze uporabiti u mnogo slucajeva. Alternativa ovakvom nacinu je jednolinijska skripta for i in *.rar;do unrar e $i;done 31.Prebacivanje karaktera u novi karakter set naredba: iconv -f windows-1250 -t utf-8 datoteka.txt > datoteka_utf8.txt Ponekad se dogodi da dobijemo tekstualnu datoteku s jednim karakter setom koju je potrebno prebaciti u drugi karakter set. Primjerice, dobijemo popis mjesta u windows-1250 karakter setu, koja je potrebno dodati u utf-8 tablicu u bazi podataka. Radi kompatibilnosti, potrebno je pretvoriti windows-1250 karakter set u UTF-8. Navedena naredba ce uraditi upravo to. Vise informacija o iconv programu pomocu naredbe man ili na http://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.13/iconv.1.html. 32.Uredjivanje datoteke na udaljenom racunalu naredba: vim scp://korisnik@ime_domene//home/korisnik/test.txt Potrebno je promijeniti nesto u datoteci na udaljenom racunalu. Zgodna naredba s kojom mozete to obaviti bez zasebnog spajanja na udaljeno racunalo. Naravno, malo je neprakticna za duza uredjivanja datoteka jer ce vas pri svakom snimanju nanovo pitati da ukucate lozinku, ali vjerujem da cete joj tu i tamo naci prakticnu svrhu. 33.Debugiranje web posluzitelja pomocu HTTP zaglavlja naredba: wget -S --spider http://web_site Ponekad je pri otkrivanju problema s web posluziteljem potrebno provjeriti HTTP zaglavlje koje se salje klijentu. Vise o poljima koja se nalaze u HTTP zaglavlju mozete procitati na wikipediji. HTTP zaglavlje koje posluzitelj salje klijentu mozemo dobiti naredbom wget kao u navedenom primjeru. Alternativna opcija wget naredbi je: curl -I http://web_site Osim komandnolinijskih naredbi mogu se koristiti i razne user-friendly opcije poput HttpFox plugina za Firefox kojim se elegantno mogu analizirati i upiti klijenta i odgovori posluzitelja. 34.Kako doznati vise o procesoru (ili procesorima) u posluzitelju naredba: cat /proc/cpuinfo Želite doznati vise podataka o vrsti i mogucnostima procesora u vasem posluzitelju. Ova naredba ispisuje kako operacijski sustav vidi procesor (ili vise njih). Primjerice, dio ispisa ove naredbe na jednom "starijem" posluzitelju: processor : 0 vendor_id : GenuineIntel cpu family : 15 model : 2 model name : Intel(R) Xeon(TM) CPU 2.80GHz stepping : 9 cpu MHz : 2790.752 cache size : 512 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pebs bts cid xtpr bogomips : 5587.23 Neki od parametara poput "cpu MHz" ili "model_name" jasni su sami po sebi. Objasnjenja nekih od parametara: stepping - napredak u dizajnu procesora od osnovnog modela 0 (vise) f00f_bug - bug u dizajnu vise serija starijih Pentium procesora (vise) bogomips - "neznanstvena" mjera brzine procesora koju izracunava kernel pri bootanju (vise) flags - razni parametri koji opisuju mogucnosti procesora. Jedan od zanimljivijih je lm (long mode) - 64 bitna podrska. U navedenom primjeru vidljivo je da procesor nije 64 bitni. 35.Dodavanje rezultata izvrsavanja naredbe u vi (ili vim) editoru naredba: :r! naredba Koristite li vi (ili vim) i zelite pri uredjivanju datoteke umetnuti izlist nekakvog direktorija ili primjerice danasnji datum, dovoljno je da u komandnom modu navedete ovu naredbu. Primjerice :r! ls -al /etc/apache2/ ili :r! date 36.Spajanje vise slika u jednu PDF datoteku naredba: /usr/bin/convert -compress jpeg *.jpg -adjoin datoteka.pdf Program za pretvorbu grafickih formata "ImageMagick" moze mnogo toga, a jedna od stvari koje moze je pravljenje PDF datoteka iz grafickih datoteka, u ovom primjeru JPEG datoteka koje ste napravili skeniranjem ili slikanjem s digitalnim fotoaparatom. ImageMagick moze puno vise, a kao sto vidimo, radi i bez grafickog sucelja, sto je zgodno kod skripti ili cron jobova. Slike ne moraju biti u JPEG fomatu, a opcija "-compress jpeg" samo odredjuje koja ce kompresija biti u zavrsnoj datoteci. Opcija "-adjoin" odredjuje da se sve datoteke spoje u jednu, inace ce sve graficke datoteke postati zasebne PDF datoteke. Vise informacija na adresi http://www.imagemagick.org/. 37.Zanimljiva uporaba preusmjeravanja naredba: MTR je program koji kombinira funkcionalnost ping i traceroute programa. Prilikom pokretanja provjerava mrezni put izmedju racunala s kojeg je pokrenut i odredisnog racunala. Nakon sto je put odredjen, program salje niz ICMP ECHO zahtjeva i ispisuje prikupljenu statistiku. Na Debianu je program dostupan za instalaciju iz repozitorija i to u dvije inacice (mtr i mtr-tiny). Cjelovita inacica mtr dolazi s iskompajliranom podrskom za GTK, dok mtr-tiny verzija podrzava samo ncurses. Instalacija: apt-get install mtr-tiny Pokretanjem u terminalu, primjerice: mtr pokrenuti ce se terminalska aplikacija koja ce uz brojanje paketa prikazivati statistike. Ukoliko ste se odlucili za instalaciju cjelovite inacice prethodna naredba ce pokrenuti GUI prozor. Kako bi mtr natjerali u terminalski nacin rada potrebno je dodati opciju --curses. Problem sa spremanjem i ispisom statistike je sto se u radu rezultati konstantno azuriraju. Kako bi dobili zavrseni izvjestaj pokrenite naredbu iz naslova: mtr -c 10 --report Ova naredba ce pokrenuti mtr, izvrsiti 10 ciklusa provjere, zaustaviti se i ispisati izvjestaj u terminal. 42.Prikaz trenutnog runlevela naredba: runlevel Naredbom runlevel mozete saznati u kojem ste trenutno nacinu rada - runlevelu. Linux je od Unix System-V sustava preuzeo nacin pokretanja odredjenih dijelova sustava, kako bi ustedilo na vremenu i resursima. Naime, nema potrebe da se pokrece web posluzitelj ukoliko samo zelimo napraviti administrativne poslove u single-user nacinu rada. Pokretanjem naredbe dobit cete sljedeci ispis: # runlevel N 2 Prvi znak odredjuje runlevel u kojem je sustav bio prije ovoga (ovdje je to N, ili 0 - dakle ugasen). Drugi znak pokazuje u kojem smo trenutno runlevelu (ovdje je to 2, standardni visekorisnicki nacin rada u Debianu). Debian je znatno pojednostavio sustav, pa imamo ove runlevele: 0 ili N sustav se gasi 1 ili S jednokorisnicki nacin rada 2 do 5 visekorisnicki nacin rada, mreza, GUI 6 sustav se restarta Drugi Linuxi imaju kompleksniju podjelu, pa je primjerice runlevel 2 visekorisnicki nacin rada bez mreze, 3 ukljucuje i mreznu podrsku, dok runlevel 5 oznacava rad u grafickom sucelju. Runlevel 4 je najcesce nedefiniran. 43.Mapiranje tipkovnice kroz .inputrc datoteku naredba: "\e[5~": history-search-backward Funkcionalnosti CTRL+r mozemo dobiti kroz konfiguraciju .inputrc datoteke u home direktoriju korisnika. Datoteka /etc/inputrc definira mapiranje tipkovnice, a koristi je readline, library za citanje unosa, koji opet koriste ljuske poput basha. Ukoliko vas predefinirane postavke u /etc/inputrc ne zadovoljavaju, mozete modificirati mapiranja postavljanjem datoteke ~/.inputrc. Jednostavana demonstracija je sljedeca: Kreirate datoteku .inputrc, u korisnikovom home direktoriju, sa sljedecim sadrzajem: "\e[5~": history-search-backward "\e[6~": history-search-forward Logout/login i pored CTRL+r imate postavljen i novi nacin pretrazivanja bash povijesti. Unesete prvih par slova naredbe i pomocu PgUP/PgDown setate po povijesti naredbi koje zapocinju unesenim slovima. Naravno, prilikom editiranja datoteke preporuca se oprez, pogotovo ukoliko nemate fizicki pristup racunalu ili pristup kao drugi korisnik s root ovlastima, jer eventualno pogresno mapiranje u .inputrc moze korisniku onemoguciti normalan rad s tipkovnicom. 44.Izlist sadrzaja komprimiranih datoteka naredba: tar -tvf datoteka.tar Prilikom kreiranja backup datoteka ili seljenja podataka s posluzitelja na posluzitelj cesto je potrebno sluziti se velikim tar datotekama. Ukoliko iz velikog tarballa zelimo izvuci samo jednu datoteku, mozemo koristiti sljedece naredbe. Sadrzaj tar datoteke mozemo izlistati naredbom tar -tvf datoteka.tar Sadrzaj gzip komprimirane tar datoteke mozemo izlistati naredbom: tar -tvzf datoteka.tar.gz Sadrzaj bzip2 komprimirane datoteke mozemo izlistati naredbom: tar -tvjf datoteka.tar.bz2 Jednu datoteku, ovisno o vrsti komprimiranja, ekstrahiramo naredbom: tar -xvf datoteka.tar putanja/do/datoteke tar -xvzf datoteka.tar.gz putanja/do/datoteke tar -xvjf datoteka.tar.bz2 putanja/do/datoteke Napomena: kod svih primjera koristen je v - verbose nacin rada. 45.Postavka BASH ljuske za sprijecavanje slucajnog prebrisivanja datoteke naredba: set -o noclobber Ukoliko pri radu u bash ljuski koristite redirect naredbe poput: ls -al > out.txt moze vam se dogoditi da slucajno prebrisete sadrzaj vec unesen u datoteku. Pogresno upotrebljeni redirect (> umjesto >>) i sadrzaj datoteke je prebrisan. Ukoliko je aktivirana noclobber postavka, ljuska nece dozvoliti ovakvo prebrisivanje sadrzaja datoteke. ls -al > out.txt bash: out.txt: cannot overwrite existing file Ovu opciju mozete postaviti trajno dodavanjem u .bashrc datoteku: echo 'set -o noclobber' >> .bashrc Opciju mozete ponistiti izvrsavanjem naredbe: set +o noclobber ili privremenim koristenjem modificirane redirekcije: ls -al >| out.txt 46.Unmount zauzetog uredjaja naredba: lsof /device_name Pri radu s mountanim vanjskim uredjajima cesto se dogodi ovakva situacija: ~$ umount /dev/sdb1 Unmounting /dev/sdb1 failed: Volume.Busy: umount: /media/STICK1GB: device is busy Pomocu naredbe ~$ lsof /dev/sdb1 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME evince 5029 user 14w REG 8,17 672376 215 /media/STICK1GB/test.pdf dobijemo ispis svih otvorenih procesa koji pristupaju trazenom resursu. Nakon pronalaska procesa mozemo jednostavno ugasiti aplikaciju koja pristupa resursu i unmountati uredjaj. 47.Generator slucajnih premutacija naredba: shuf Potrebno vam je izgenerirati niz od 5 slucajnih brojeva od 100 do 200? Naredba shuf je pravo rjesenje: shuf -i 100-200 -n 5 Želite li dobiti neku od slucajnih permutacija brojeva (3,4,5,6)? Samo upotrijebite sljedecu sintaksu: shuf -e 3 4 5 6 Naredba shuf sastavni je dio coreutils paketa. Iako gore navedena primjena mozda nije svakome korisna. pomocu nje mozete rijesiti niz zanimljivih problema. Primjerice generator slucajnih rijeci: shuf -n 10 /usr/share/dict/words ili prikaz slike iz direktorija slucajnim odabirom: eog "$(ls | shuf -n1)" 48.Kako obojiti log datoteku naredba: tail -f -n 20 datoteka | ccze Uobicajeni posao pracenja logova iziskuje odredjeni napor pri raspoznavanju pojedinih dijelova linija. Paket ccze vam omogucava lakse snalazenje u log datotekama unosenjem boja u jednolicne terminalske prikaze. Paket je potrebno instalirati naredbom apt-get install ccze Prikaz plugina za pojedine vrste logova mozete dobiti naredbom ccze -l Ukoliko umjesto pracenja promjena zelite koristiti ccze za citanje neke log datoteke mozete to uraditi naredbom ccze -A < ime_datoteke | less -R 49.Kratice za brzi rad u bash ljuski naredba: ALT + . Iznimno korisna kratica za dodavanje posljednjeg argumenta bash komandne linije u tekucu liniju. Primjerice u slucaju slijeda naredbi: $ ls -al test.txt $ mv test.txt test1.txt u drugoj liniji nakon ukucavanja naredbe mv parametar test.txt moguce je dodati ukucavanjem ALT + . (istovremeni pritisak lijeve tipke ALT i tocke). Neprestanim pritiskom na tocku moguce je pomicanje kroz argumente iz povijesti naredbi (bash history). 50.Detekcija linux distribucije naredba: cat /etc/issue Na vecini linux distribucija u ovoj datoteci je upisana verzija i distribucija linux operacijskog sustava instaliranog na racunalu. Pojedinacno po operacijskim sustavima postoje i druge datoteke s podacima korisnim za prepoznavanje distribucije. Debian: xyz:~$ cat /etc/issue Debian GNU/Linux 5.0 \n \l xyz:~$ cat /etc/debian_version 5.0.4 RHEL: xyz$ cat /etc/issue Red Hat Enterprise Linux Server release 5.4 (Tikanga) Kernel \r on an \m xyz$ cat /etc/redhat-release Red Hat Enterprise Linux Server release 5.4 (Tikanga) Ukoliko se radi o nekoj od ostalih distribucija linuxa mozete pokusati naredbom cat /etc/*-release Primjerice, kod Ubuntu distribucije datoteka je /etc/lsb-release, a kod Fedore je /etc/fedora-release. 51.Naredba dig za pretrazivanje DNS podataka naredba: dig ime_domene tip_upita Dig je naredba koja na debianu dolazi s paketom dnsutils (apt-get install dnsutils), a sluzi za postavljanje upita DNS posluziteljima. Poprilican broj opcija ove naredba omogucuje vam postavljanje raznih tipova upita. Primjer - vrati podatke o posluzitelju www.carnet.hr: dig www.carnet.hr Primjer - vrati DNS posluzitelje za domenu carnet.hr dig carnet.hr NS Primjer - vrati mail posluzitelje za domenu carnet.hr dig carnet.hr MX Primjer - reverzni upit dig -x IP_ADRESA Primjer - upit na navedeni DNS posluzitelj (SERVER - adresa ili ime DNS posluzitelja) dig @SERVER ime_domene 52.PDF toolkit naredba: pdftk Ne bas najnoviji, ali jako mocan toolkit za spajanje i razdvajanje pdf dokumenata. Pdftk moze spojiti dva ili vise pdf dokumenata u jedan, razbiti jedinstveni pdf dokument na pojedinacne stranice ili jednostavno iz vise pojedinacnih stranica raznih pdf dokumenata kreirati novi dokument. Naredba dolazi s pdftk paketom koji je potrebno instalirati uobicajenom metodom: apt-get install pdftk Primjeri koristenja Razbijanje pdf dokumenta na pojedinacne stranice (kreira se i datoteka doc_data.txt). pdftk dokument.pdf burst Spajanje dva pdf dokumenta u jedan. pdftk dokument1.pdf dokument2.pdf cat output spojeni.pdf Kreiranje dokumenta iz pojedinacnih stranica vise dokumenata. Dokument spojeni.pdf sastojat ce se od prve i druge stranice dokumenta A, trece i cetvrte dokumenta B i pete stranice dokumenta C. pdftk A=dokument1.pdf B=dokument2.pdf C=dokument3.pdf cat A1-2 B3-4 C5 output spojeni.pdf 53.Dodavanje zadnjeg argumenta prethodne naredbe naredba: . Ova naredba insertira zadnji argument prethodno izvrsene naredbe u liniju. Primjerice, zelite kopirati datoteku test.txt u direktorij /etc/konfiguracija, ali prije toga zelite provjeriti sto sve ima u tom direktoriju. Naredba: ls -al /etc/konfiguracija izlistat ce sadrzaj direktorija. Nakon toga mozete ukucati cp test.txt i kombinaciju . Konacan izgled linije bit ce cp test.txt /etc/konfiguracija Alternative ovoj naredbi su . i !$, s tim da posljednja ne insertira argument u liniju nego ga uzima pri izvrsavanju. 54.Pregled izvrsenih naredbi naredba: history Naredba history izlistava popis posljednjih izvrsenih naredbi. Ovisno o korisnikovom shellu i postavkama, izvrsene naredbe se uobicajeno zapisuju u .history datoteci u korisnikovom direktoriju. U slucaju pretpostavljene bash ljuske, ta datoteka je .bash_history, a pretpostavljena vrijednost maksimalnog broja linija je 500. Nakon sto je zapisano vise od 500 naredbi, starije naredbe bivaju izbrisane onako kako se nove zapisuju. Ukoilko zelite sacuvati vise od pretpostavljenih 500 linija naredbi, u datoteku .bashrc dodajte primjerice: HISTSIZE=5000 HISTFILESIZE=5000 Da bi primjetili promjenu, odlogirajte se i nanovo ulogirajte kako bi novi parametri bili postavljeni. Promjene u .bash_history zapisuju se tek prilikom izlaska iz ljuske, tako da se povecani broj linija moze primjetiti tek nakon sljedeceg izlaska iz ljuske. Brisanje naredbi iz .history datoteke mozete uraditi naredbom: history -c 55.Informacije o posluziteljskom hardware-u naredba: lshw Postoji mnogo nacina na koje mozete doznati od kakvog se hardwarea sastoji vase posluziteljsko racunalo, a koristenje naredbe lshw je zasigurno medju najjednostavnijima. Naredba dolazi kroz paket lshw koji je potrebno instalirati standardnim putem: apt-get install lshw Naredba ispisuje detaljne informacije o hardwareu. Skracena opcija daje ispis svih djelova po klasi (memorija, procesor, ...). lshw -short Dio ispisa: ... /0/100/f.1/1/0 /dev/hdc disk SAMSUNG DVD-ROM SD-616T /0/2/1.0.0 /dev/sda disk 36GB LD0 RAID0 34678R /0/2/1.1.0 /dev/sdb disk 36GB LD1 RAID0 34678R /0/2/1.2.0 /dev/sdc disk 36GB LD2 RAID0 34678R ... Ukoliko vas zanima samo neki segment ispisa, naredbi se moze dodati opcija, primjerice: lshw -C disk Dio ispisa: *-cdrom description: DVD reader product: SAMSUNG DVD-ROM SD-616T physical id: 0 bus info: ide@1.0 logical name: /dev/hdc version: F310 capabilities: packet atapi cdrom removable nonmagnetic dma lba iordy audio dvd configuration: mode=udma2 status=nodisc *-disk:0 description: SCSI Disk product: LD0 RAID0 34678R vendor: MegaRAID physical id: 1.0.0 bus info: scsi@0:1.0.0 logical name: /dev/sda version: 3.18 size: 33GiB (36GB) capabilities: partitioned partitioned:dos configuration: ansiversion=2 signature=000b1563 56.Real-time pracenje promjena u log datoteci naredba: tail -f datoteka.log Jedna od najkoristenijih naredbi pri analizi tekucih dogadjaja na posluzitelju. Sama naredba tail ispisuje zadnjih 10 linija datoteke. Ukoliko datoteka "raste" - kao sto je to slucaj s log datotekama - promjene u realnom vremenu mozete pratiti opcijom -f (follow). 57.Kreiranje direktorija sa poddirektorijima iz jedne linije naredba: mkdir -p /ne/postoji/putanja/do/poddirektorija Ukoliko pokusate kreirati poddirektorij u direktoriju koji ne postoji, mkdir /parent/child linux ce uredno odgovoriti necim poput mkdir: cannot create directory '/parent/child': No such file or directory Opcija -p omogucit ce kreiranje poddirektorija i svih nepostojecih nadredjenih direktorija. 58.Brisanje sadrzaja terminala naredba: CTRL+L Kratica CTRL+L (moze i malo i veliko slovo L, op.a.) radi isto sto i naredba clear - brise sadrzaj terminala. Ne radi se o stvarnom brisanju, vec o "ciscenju" sadrzaja terminala. Povijesni sadrzaj je dostupan putem kratica Shift+PageUp, Shift+PageDown. 59.Ispis csv datoteke u stupce naredba: column -t -s , datoteka.txt Naredba column ce sve sto joj se proslijedi pokusati ispisati sortirano po stupcima. Predefinirano, koristeci samo atribut -t, naredba ce formatirati ispis prema praznim razmacima. Alternativno, ukoliko, primjerice, zelimo ispisati nekakvu csv datoteku, moze se koristiti atribut -s uz navedeni karakter po kojem se zeli razdvojiti stupce (u ovom slucaju - zarez). datoteka.txt: 1,Rab,15,pretezno oblacno 2,Split,14,pretezno vedro 3,Zadar,15,umjereno oblacno 4,Zagreb,10,sumaglica rezultat naredbe: 1 Rab 15 pretezno oblacno 2 Split 14 pretezno vedro 3 Zadar 15 umjereno oblacno 4 Zagreb 10 sumaglica 60.Prikaz rednog broja linija pri koristenju naredbe grep naredba: grep -n 'tekst' datoteka Naredba grep pretrazuje datoteke i ispisuje linije u kojima se nalazi trazeni tekst. Uz koristenje opcije -n zajedno s pronadjenim linijama ispisat ce se i redni broj linije u datoteci. Za citljiviji ispis moguce je koristiti postavke za bojanje ispisa naredbe grep. 61.Naredba time naredba: time ime_naredbe Naredba time vraca vrijeme proteklo pri izvrsenju pojedine naredbe. Primjerice time ls ce kao rezultat ispisati sadrzaj direktorija plus sljedeci dodatak: real 0m0.008s user 0m0.004s sys 0m0.008s sto u stvari predstavlja realno vrijeme izvrsavanja i procesorsko vrijeme podjeljeno na korisnicki i sistemski dio. Primjerice, pokretanjem naredbe time cat dobije se prakticna simulacija stoperice (prekida se sa CTRL-C). 62.Prikaz procesa koji drze otvorene prikljucne tocke naredba: ss -p Naredba ss je koristan alat za prikaz aktivnosti TCP/IP prikljucnih tocaka. U ovoj varijanti (opcija -p) izlistat ce se svi trenutno aktivni socketi te procesi koji ih drze otvorenima. 63.Brza provjera ponavljanja u popisima naredba: cat datoteka.txt | sort | uniq -c | sort -nr Ova naredba ce vam pomoci pri otkrivanju visestrukih ponavljanja imena ili artikala u popisima. Primjerice, u datoteci imate sljedeci popis imena Mate Stipe Frane Mate Ante Frane Frane Naredba cat ispisuje datoteku, sort je abecedno sortira, naredbe uniq -c broji uzastopno ponavljajuce linije koje su onda nanovo proslijedjene numerickoj (-n), reverznoj (-r) naredbi sort. U nasem slucaju rezultat naredbe bi bio: 3 Frane 2 Mate 1 Stipe 1 Ante Vrlo korisna naredba pri pregledavanju logova. Primjer: grep 'Authentication failure for' /var/log/auth.log.0 | awk '{ print $NF }' | sort | uniq -c | sort -nr 64.Preimenovanje ekstenzija datoteka iz velikih u mala slova naredba: rename -v 's/\.JPG$/\.jpg/' *.JPG Pojedini programi znaju praviti probleme s ucitavanjem datoteka kojima su ekstenzije u uppercase formatu. Koristeci ovu naredbu jednostavno mozete preimenovati sve datoteke iz nekoime.JPG u nekoime.jpg. Za preimenovanje imena i ekstenzije iz velikih u mala slova mozete koristiti naredbu: rename -v 'y/A-Z/a-z/' * 65.Unmount busy particije naredba: fuser -km /mnt/hda2 Vrlo korisna naredba, kad nikako ne mozemo odmontirati particiju jer je iz nekog razloga okupirana (busy). 66.Bojanje ispisa naredbe grep naredba: alias grep='grep --color=auto' Izlaz naredbe grep cesto puta bude neprepoznatljiv zbog kolicine proizvedenih podataka. Koristenjem ovog aliasa ispis ce postati dosta citljiviji. Ukoliko koristite bash ljusku, dovoljno je ovu liniju dodati u .bashrc datoteku. 67.Prikaz non-printing karaktera naredbom cat naredba: cat -vet datoteka.txt Česta pogreska pri radu sa skriptama (bash skripte, PHP, ...) dogadja se zbog koristenja razlicitih tipova editora i njihove podrske pri snimanju datoteka u ASCII, UTF-8 ili nekom drugom formatu. Ukoliko vam PHP skripta prijavljuje pogresku tipa "Headers could not be modified as they had already been sent" ili neka perl skripta ne radi, a u editoru vam sve izgleda kako treba, ovom naredbom mozete pokusati ispisati problematicnu datoteku. Ukoliko u ispisu vidite oznake tipa M-nesto, u skripti imate non-printable karaktere koji mogu biti uzrok pogreske. Tipican primjer je BOM (Byte-Order-Mark) oznaka na pocetku datoteke snimljene u UTF-8 karakter setu. Napomena: Uglavnom samo M-nekiznak predstavljaju problem. ^M$ i ^I su uredne oznake za kraj linije i TAB. 68.Brisanje sadrzaja datoteke u bash ljuski naredba: > datoteka.txt Ukoliko na disku imate veliku datoteku kojoj zelite izbrisati sadrzaj, ali bez brisanja same datoteke, ova naredba je upravo ono sto vam treba. 69.Korisna naredba za brze snalazenje u bash ljuski naredba: CTRL + r Ovo je vjerovatno jedna od najkorisnijih naredbi za snalazenje u bash ljuski. Umjesto da pretrazujete bash_history u potrazi za naredbom koju ste jednom davno ukucali, dovoljno je otipkati CTRL+r te ukucati bilo koji dio naredbe koju trazite. Rezultat ove akcije ce vam vrlo brzo biti jasan. Ukoliko isprva niste pronasli odgovarajucu naredbu, jednostavno nastavite klikati CTRL+r i pratite kako se pomicete dublje u history. 70.Kratice za snalazenje u bash ljuski naredba: CTRL-x CTRL-e Ukoliko morate editirati jako dugu naredbu u komandnoj liniji, ova kombinacija tipaka predstavlja veliku pomoc. Nakon pritiska na CTRL-x CTRL-e sve sto ste do tada ukucali u komandnoj liniji otvorit ce se u vasem pretpostavljenom editoru. Nakon editiranja i izlaska iz editora, editirana naredba ce se odmah izvrsiti. 71.Vrijeme zadnjeg reboota naredba: who -b Ova jednostavna naredba prikazuje vrijeme zadnjeg reboota. Naredbom uptime mozete dobiti isti podatak ali u obliku vremena koje je proteklo od zadnjeg reboota. 72.Kratice za brze snalazenje u bash-u naredba: CTRL+A, CTRL+E, ... Ovog puta smo Vam umjesto uobicajene naredbe pripremili niz kratica za brze snalazenje u bash ljuski. Za brze kretanje po komandnoj liniji koristi se CTRL+A za postavljanje pokazivaca na pocetak linije, odnosno CTRL+E za postavljanje na kraj linije. Kod ponovljenog unosa slicnih naredbi, dobro dodju kratice za brisanje dijela linije: CTRL + K - brise dio linije iza pokazivaca; CTRL + U - brise dio linije ispred pokazivaca; CTRL + W - brise rijec ispred pokazivaca. Zanimljive kratice kojima mozete mijenjati raspored karaktera ili rijeci su: CTRL + T - mijenja zadnja dva karaktera ispred pokazivaca; Esc + T - mijenja zadnje dvije rijeci ispred pokazivaca. Od niza preostalih kratica mogu izdvojiti jednu, mozda najkorisniju: CTRL + R. Nakon unosa ove kratice, nastavite s ukucavanjem dijela naredbe za koju mislite da postoji u bash history i odmah ce vam sve postati jasno. Ukoliko do sada niste koristili ovu kraticu, vjerujem da ce vam vrlo brzo postati nezamjenjiva. 73.Kreiranje direktorija s imenom tekuceg datuma naredba: mkdir `date --iso` Navedena naredba kreira direktorij s imenom tekuceg datuma u iso 8601 formatu (YYYY-MM-DD). Naredba je posebno korisna za automatizirane backupe. Ukoliko je potrebna veca vremenska preciznost pri automatiziranom kreiranju backup direktorija, mozete koristiti neke od mnogobrojnih parametara naredbe date, primjerice u sljedecem obliku: mkdir `date +"%Y-%m-%dT%H:%M:%S"` koja kao rezultat kreira direktorij 2009-06-01T10:07:33. 74.Čitanje log datoteka pomocu naredbe less naredba: less +F logdatoteka Kada zelite u realnom vremenu pratiti promjene na nekoj log datoteki uobicajeno se koristi naredba: tail -f logdatoteka Naredba less s argumentom F obavlja isti posao, ali vam istovremeno dozvoljava izlazak iz scrolla i koristenje svih prednosti preglednika datoteka. Nakon pokretanja naredbe ukljucen je mod pracenja zadnje linije datoteke. Za prekid je potrebno poslati CTRL-C, i tada je omoguceno normalno citanje datoteke. Ukoliko zelite nastaviti pracenje zadnje linije, potrebno je odaslati SHIFT-F. Ukoliko nemate naredbu less u vasoj distribuciji Debiana, potrebno ju je instalirati standardnim putem: apt-get update apt-get install less 75.Izlist svih prikljucnih tocaka u stanju slusanja (listening sockets) naredba: sudo netstat -ntulp Ovo je zgodna naredba koja ce vam prikazati koji se sve programi na vasem racunalu nalaze u stanju slusanja. Opcije su sljedece: -n - izlistava numericke adrese -t - izlist tcp socketa -u - izlist udp socketa -l - izlistava samo sockete koji slusaju -p - veza slusajuceg socketa i pid-a/imena programa Od niza ostalih mogucih opcija mozemo uzdvojiti opciju -a koja umjesto slusajucih prikazuje sve sockete, te opciju -e koja daje dodatne informacije, primjerice korisnika pod kojim se vrti program. Napomena: Kako biste dobili izlist ove naredbe, na CARNetovim posluziteljima morate koristiti root ovlasti. Zato je naredba ovdje odmah napisana sa sudo. 76.Kopiranje datoteka koristenjem bash prosirenja naredba: cp filesdugimimenom{,_old} Ova naredba ce kopirati datoteku filesdugimimenom u filesdugimimenom_old. Viticaste zagrade nisu dio cp naredbe, vec su dio shella. Obratite pozornost na to da su napisane bez razmaka od imena datoteke. One ponavljaju dani string sa svakim parametrom u zagradama odvojenim zarezima. Primjerice: rm /dugi/path/do/direktorija/datoteka1 /dugi/path/do/direktorija/datoteka2 mozemo pisati kao rm /dugi/path/do/direktorija/{datoteka1,datoteka2} 77.Deset najvecih direktorija sortiranih po velicini naredba: find . -type d -print0 | xargs -0 du -sm | sort -rn | head Ovo je jedna od zgodnih naredbi kojom mozete pronaci direktorije cije datoteke zauzimaju najvise mjesta na disku. Ukratko, naredba find proslijedjuje rezultat pretrage naredbi du koja sumarizira velicinu direktorija (-s), prikazanu u megabajtima (-m), a razultat proslijedjuje naredbi sort. Naredba head sluzi samo za ispis deset prvih vrijednosti. Druga varijanta ove naredbe koja bi trazila najvece datoteke u trenutnom direktoriju bila bi: find . -type f -print0 | xargs -0 du -sm | sort -rn | head Inace, sumarni prikaz koristenja pojedinog direktorija moze se dobiti naredbom du -sm ./* | sort -nr Problem s ovom naredbom je sto ne prikazuje velicine skrivenih direktorija. Za prikaz skrivenih direktorija moze se koristiti sljedeca naredba: du -sm .[a-z0-9]* | sort -nr pod pretpostavkom da ime direktorija zapocinje s tockom iza koje slijedi slovo ili broj. 78.Izlist otvorenih prikljucnih tocaka naredba: lsof -i -r Ova naredba ce izlistati sve otvorene mrezne prikljucne tocke uz ponavljanje (-r). Predefinirano vrijeme ponavljanja je 15 sekundi. Dodavanje parametra, primjerice lsof -i tcp:80 -r omogucuje filtriranje izlista po protokolu i portu. Uz koristenje opcije r naredba se izvrsava do prekida (CTRL-c). 79.Prikazivanje prvih deset procesa po zauzecu memorije naredba: watch -d -n 1 'ps aux --sort -rss | head' Naredba watch svaku sekundu (n = 1) izvrsava naredbu ps s parametrima koji prikazuje deset memorijski najzahtjevnijih procesa sortiranih od veceg prema manjem. Opcija -d omogucava oznacavanje razlika kod svakog izvrsenja. Naredba watch se izvrsava do prekida (CTRL-c). 80.Rekurzivna zamjena niza znakova naredba: find /home/pero -type f -print0 | xargs -0 perl -pi -e 's/staro/novo/g' Ova naredba ce zamijeniti niz znakova "staro" u "novo" u svim datotekama u direktoriju "/home/pero" i svim direktorijima ispod njega. Pri tome ce u obzir uzeti samo obicne datoteke (ne direktorije itd.), a one mogu imati i razmak (whitespace) u imenu. 81.cd - Prebacujete se iz direktorija u direktorij, a zamorno vam je pisati duge putanje. Ova naredba vas vraca u direktorij u kojem ste prethodno bili. 82.sudo !! Pokrenuli ste naredbu u linux komandnoj liniji, ali ste shvatili da ste zaboravili ukljuciti sudo. Ova naredba vas spasava od ponovnog kucanja ponekad zaista dugih naredbi. Sudo pokrece naredbu kao privilegirani korisnik, a "!!" jednostavno izvrsava posljednju izvrsenu naredbu.