Najdulji redak
naredba:
wc -L
Naredba "wc -L" će ispisati najdulji redak u tekstualnoj datoteci:
$ wc -L /etc/passwd
110 /etc/passwd
Najveći redak je duljine 110 znakova (nažalost, nema opcije da se taj redak i prikaže). Ovo je zgodno za situacije kad trebate prenijeti preformatirani tekst na web ili slične primjene, gdje ne bi trebali ili smjeli prelamati retke u novi red.
Ispis paketa po veličini
naredba:
dpkg-query/aptitude show
Kad ponestane prostora na disku zgodno je moći saznati koliko pojedini paket zauzima prostora (zbog potencijalnog brisanja). Pronašli smo skriptu koja na čak četiri načina prikazuje koji paketi zauzimaju najviše mjesta (link: https://ubuntuforums.org/showthread.php?t=599424).
#!/bin/bash
if [ $# -ne 1 ]
then
echo "usage : $0 "
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
Grepanje stringa po paragrafu
naredba:
function grepar() { perl -00ne "print if /$1/i" < $2; }
Naredba grep će nam iz tekstualne datoteke ispisati sve retke koji sadržavaju traženi niz znakova. No, ako trebamo cijeli paragraf, možemo upotrijebiti perl. Kako ne bismo morali previše kucati, najlakše je ubaciti ovaj perl oneliner u BASH funkciju, koju smo nazvali "grepar". Funkciju možete upisati u svoj .bashrc. Evo razlike između grep-a i naše funkcije:
server$ grep "Linux Voice" datoteka.txt
Magazin Linux Voice nudi besplatno preuzimanje prvog broja
čija je glavna tematika Linux i softver otvorenog koda - Linux Voice. U
Osim danas neuobičajenog poteza kretanja s tiskanim izdanjem, Linux Voice
127 tisaća funti, od planiranih 90 tisuća. Linux Voice je mogao krenuti.
server$ grepar "Linux Voice" datoteka.txt
Magazin Linux Voice nudi besplatno preuzimanje prvog broja
Nekako nam je ispod radara prošla vijest o osnivanju novog tiskanog časopisa
čija je glavna tematika Linux i softver otvorenog koda - Linux Voice. U
vrijeme kada se drugi časopisi gase ili u potpunosti prelaze na digitalan
način distribucije, pojavio se ovaj časopis s novim idejama.
Osim danas neuobičajenog poteza kretanja s tiskanim izdanjem, Linux Voice
je i startao na neuobičajen način. Naime, magazin je pokrenut ne iz
privatnih sredstava, nego putem crowdfunding kampanje. Uspješno je skupljeno
127 tisaća funti, od planiranih 90 tisuća. Linux Voice je mogao krenuti.
Kako doznati koji su mail i DNS poslužitelji za neku domenu?
naredba:
host -t NS example.com
Naredba host dio je paketa bind9-host, a služi za slanje DNS upita. U navedenom primjeru naredba vraća DNS poslužitelje za domenu example.com.
Promjenom "-t" opcije moguće 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 možete koristiti u ovu svrhu je dig.
Kako brzo saznati vanjsku IP adresu iz naredbene linije?
naredba:
curl ifconfig.me
$ curl ifconfig.me
161.53.A.B
Ostale CLI opcije koje podržavaju možete saznati ukoliko odete na njihov web:
Mountanje direktorija putem ssh
naredba:
sshfs korisnik@stroj.example.com:/putanja/do/direktorija /home/korisnik/putanja/do/lokalnog/direktorija
Ukoliko želite direktno pristupati datotekama na udaljenom poslužitelju kao da su na lokalnom računalu, naredbom sshfs (Secure SHell FileSystem) možete mountati direktorij s udaljenog računala na lokalni mount point. SSHFS na udaljenom računalu koristi SFTP dio SSH servera, a na lokalnom računalu koristi FUSE (Filesystem in Userspace) kernel modul.
Kada završite s radom unmount možete uraditi naredbom:
fusermount -u /home/korisnik/putanja/do/lokalnog/direktorija
Enkripcija datoteke u vim editoru
naredba:
vim -x
Ukoliko imate potrebu "na brzinu" zaštititi pristup nekoj tekstualnoj datoteci, primjerice poslati sebi nekakav privremeni password mailom, a nemate pristup gpg ili nekom drugom enkripcijskom softweru, za početak će vam biti dostatan i vim editor.
Nakon što pokrenete navedenu naredbu, vim će vas pitati lozinku (dva puta). Nakon snimanja datoteka će biti ekriptirana VimCrypt algoritmom, istim koji se koristi i kod Pkzip programa. Kako biste vidjeli sadržaj takve datoteke potrebno ju je otvoriti vim editorom i unijeti točnu lozinku.
Za micanje enkripcije nakon otvaranja datoteke u vim editoru potrebno je unijeti:
:set key=
Iako se ne radi o super jakoj zaštiti - teoretski ju je moguće probiti ukoliko poznajete dio pohranjenog teksta - pripazite da ne izgubite lozinku jer biste u suprotnom mogli ostati bez podataka iz datoteke.
32 ili 64 bita?
naredba:
uname -m
Kad vam u ruke dođe nečije računalo s instaliranim Linuxom, jedna od stvari koja će vas zanimati jest kakav je procesor, da li je 32-bitni ili 64-bitni? Najbrži način da to saznate jest ovaj:
uname -m
gdje -m znači "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.
Brisanje linije iz bash history
naredba:
history -d
Dogodli li vam se ikad da greškom 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 rješenja je editiranje spomenute datoteke. Alternativa je gore navedena naredba koja će se daleko jednostavnije pobrinuti za ovakav problem.
Jednokratno prebacivanje datoeka
naredba:
nc -l -p 55555
Za prebacivanje datoteka s jednog računala u mreži na drugo obično se koriste servisi, ftp ili scp. No oni podrazumijevaju da na ciljnom računalu taj servis radi kao daemon, odnosno da je neprestno aktivan i očekuje konekciju. Ako se radi o serveru, to se na neki način podrazumijeva, iako nije teško zamisliti sever na kojem ni jedan od tih servisa nije potreban.
Postoji način da se jednokratno prebace datoteke, korištenjem programa netcat. Ako već nije instaliran, obavite to na obje strane:
$ apt-get install nc
Na ciljnom računalu pokenemo netcat na određenom portu (prije toga se pozicionirajte u direktorij u kojem želite primiti datoteke):
$ nc -l -p 55555 | tar xzvf -
U prijevodu, pokreni nc koji sluša (l - listen) na portu 55555. Broj porta je proizvoljan, pet petica smo napisali samo radi lakšeg pamćenja. No neka to ne bude port koji je već zauzeo neki drugi program.
Na računalu s kojeg šaljemo podatke, nc pokrenemo malo drugačije:
$ 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 ćemo usput komprimirati (parametar z) da ubrzamo prijenos, pa je šaljemo naredbi nc koju usmjerimo na adresu ciljnog računala i port na kojem sluša drugi nc. Prekidač -w (wait) je tu za svaki slučaj, ako se ciljni nc ne odazove odmah zadali smo period čekanja od tri sekunde. Taj prekidač ne bi imao učinak na ciljnom računalu, jer će tamo nc čekati dovijeka na uspostavljanje veze.
Kako promijeniti raspored tipkovnice na konzoli?
naredba:
loadkeys us
Kažu da se o ukusima ne raspravlja, pa to vrijedi i za raspored znakova na tipkovnici. Stariji sistemci nerijetko koriste američku tipkovnicu, jer su tako navikli. Mlađi kolege radije koriste lokaliziran, hrvatski raspored. Danas se i uz servere isporučuju lokalizirane tipkovnice, pa nije loše da raspored tipki odgovara onome što na tipkama piše.
Kada pomažete kolegi, odmah ćete primijetiti da je njegov raspored drugačiji od onog na koji ste navikli. To može uzrokovati probleme već pri ukucavanju zaporke. Da bi izbjegli pogreške i neprestano ispravljanje, što se događa 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 će raditi na konzoli, ali ne i ako radite iz daljine, u terminalu. U tom slučaju će, na Debianu, pomoći ovakva naredba:
dpkg-reconfigure keyboard-configuration
Trebat će odgovoriti na nekoliko pitanja, skrolajući po ponuđenim postavkama: kakvu tipkovincu koristite (obično onu s 105 tipaka), koji nacionalni raspored želite (croatian ili english us), koju tipku želite koristiti kao AltGr, a koju kao tipku Compose, te da li želite zaustavljati X-e kombinacijom Alt-Ctrl-Backspace.
Spajanje na poslužitelj preko drugog poslužitelja
naredba:
ssh -t ssh
U praksi se često susrećemo s potrebom SSH spajanja na poslužitelj iz mreže iz koje je pristup zabranjen vatrozidom. Tada se uobičajeno koristi nekakav poslužitelj posrednik s kojeg se moguće spojiti na ciljani poslužitelj.
Koristeći navedenu naredbu moguće je automatski pokrenuti spajanje preko pseudoterminala posrednog poslužitelja. O izvršavanju naredbi pokretanjem pseudoterminala pisali smo ovdje.
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 još jedan "neobičan" zadatak, koji nije dio opisa posla sistemskog inženjera, ali spada u poslove koje ne možeš odbiti: upload video zapisa na Youtube. Originalni filimić sadržavao je reklame i špicu emisije na početku i kraju, pa je uradak najprije trebalo editirati, odrezati suvišne dijelove.
Za Linux postoji nekoliko slobodnih programa za editiranje filmova, ali trebalo bi naučiti kako se njima služiti, a sistemac kronično nema vremena. Srećom, Ljubo Hrboka je nedavno spomenuo naredbu ffmpeg, pravi švicarski nožić za takve stvari. Uz malo čitanja man stranice i dva-tri pokušaja, rješenje je ispalo krajnje jednostavno:
fmpeg -i VTS_01_1.VOB -ss 00:01:00 -t 00:14:32 output.vob
U prijevodu: učitaj datoteku VTS_01_1.VOB i presnimi je u datoteku output.vob, počev od prve minute nakon početka, pa daljnjih četrnaest minuta i trideset dvije sekunde.
Naravno, filmić je trebalo prije toga pogledati i zabilježiti mjesta (odnosno vremena od početka) na kojima ga treba odrezati.
Jednostavno zar, ne?
PS. Budući da je sistemac savjestan i želi poštivati zakonsku regulativu, zatražio je i dozvolu autora TV priloga za objavljivanje filmića na Youtubeu. Treba li reći da je uradak objavio tek kad je tu dozvolu dobio? Treba li reći da se time zamjerio nestrpljivom korisniku? Ali ovaj post scriptum ionako ne spada u tehničku problematiku, pa zažmirite jednim okom na njega.
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 "čudnim" zahtjevima iz područja informatičkih tehnologija. Kako nove tehnologije budu dostupnije sve širem krugu ljudi vjerujem da će broj takvih zahtjeva samo rasti.
Neobičan zahtjev dobio je kolega s jedne ustanove. Korisnik je snimajući video zapis mobilnim uređajem "okrenuo" uređaj tako da je zapis ostao zarotiran pod kutem od 90o. Posljednje vrijeme često primjećujem takve slučajeve pa bih ovdje ponudio jedno jednostavno rješenje - ffmpeg. Kad god imate kakav problem s video zapisom sjetite se da ovaj program radi "sve što vam padne na pamet, a i više od toga".
Dakle, navedeni primjer učitat će vaš 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
Kratice u ljuski - velika i mala slova
naredba:
ALT+U / ALT+L
Zgodna naredba za prebacivanje riječi iz velikih u mala slova. Ukoliko ste kasno primjetili da ste, primjerice utipkavajući naredbu, neku varijablu umjesto velikim napisali malim slovima, možete uvijek kursorom doći na početak te riječi i otipkati kombinaciju tipaka ALT+U i pretvoriti tu riječ u "uppercase". ALT-L pretvorit će sva slova u riječi u mala.
Kako će ljuska interpretirati riječ?
naredba:
type -a ls
Ova naredba vam omogućava da na jednostavan način doznate kako će ljuska interpretirati neku unesenu naredbu ili (ključnu) riječ.
Primjerice, navedena naredba/riječ ls često sadrži predefinirane aliase u datoteci .bashrc poput:
alias ls='ls --color=auto'
Pokretanjem naredbe ls izvršit će se odgovarajući postavljeni alias.
Naredba type daje nam uvid u način interpretiranja naredbe ili riječi u smislu da naredba može biti alias, funkcija, file, ugrađena funkcija (builtin) ili rezervirana riječ.
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
Istovremeno uređivanje više datoteka s usporedbom razlika
naredba:
vim -d datoteka1 datoteka2
Prepravljate konfiguracijsku datoteku, program ili iz nekog drugog razloga želite uređivati više datoteka istovremeno i pratiti razlike među njima? Ovom naredbom pokrenute vim editor u diff modu pa uz bojanje sadržaja možete lakše pratiti razlike između datoteka koje uređujete.
Ova se naredba može pokrenuti na sljedeći način:
vimdiff datoteka1 datoteka2
Neke od opcija koje će vam trebati za snalaženje u editoru su:
- zo - prikaži skrivani dio sadržaja
- zc - sakrij dio sadržaja
- Ctrl-w Ctrl-w - prebaci se u sljedeći prozor
- :diffupdate - osvježi promijenjeni sadržaj
Provjera php konfiguracije na poslužitelju
naredba:
echo '' > /var/www/testinfo.php
Često korisnici ili web programeri imaju zahtjeve za podešavanje pojedinih parametara web poslužitelja. Ovo je najlakši/najelegantniji način za prikaz svih parametara php konfiguracije.
Navedenu naredbu je potrebno izvršiti tako da novokreirana datoteka testinfo.php bude dostupna putem web poslužitelja - u primjeru je direktorij /var/www koji je uobičajeno 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 loše ukloniti s poslužitelja jer potencijalnim malicioznim korisnicima može dati uvid u eventualne sigurnosne propuste na sustavu.
Nadzor procesa naredbom top po dijelu imena procesa
naredba:
top -p $(pgrep -d , dio_imena_procesa)
Ponekad se nadzirući procese želimo usredotočiti na nekoliko procesa po njihovom imenu ili dijelu imena. Ova će 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 (može ih se istovremenu nabrojati više, ako su odvojeni zarezima), a naredba
pgrep -d , dio_imena_procesa
nam vraća sve pidove svih procesa koji u svom imenu imaju tražene riječi odvojene zarezom.
Lista svih naredbi na sustavu
naredba:
compgen -c
Naredba compgen je ugrađena u bash i u osnovi služi za generiranje mogućih nastavaka riječi (autocomplete). Naredba je moćna, s razilčim parametrima dobija dodatne funkcije. Na primjer, s navedenom opcijom -c izlistat će se popis naredbi dostupnih na sustavu.
Ukoliko želite pregledniji, sortiran ispis, pokušajte ovako :
compgen -c | sort -u | less
Osim navedene opcije naredbe compgen zanimljive su i sljedeće:
- compgen -a - lista aliase na sustavu
- compgen -v - lista imena varijabli
- compgen -d /dir/ - izlistat će sve direktorije u trenutnom direktoriju
Podsjetnik u komandnoj liniji
naredba:
leave +30
Svi znaju da vrijeme brzo leti, a naročito dok rješavate kakav problem na poslužitelju ili u ljuski vašeg osobnog računala. Navedena naredba postavit će alarm koji će vas nekoliko minuta prije isteka tridesete minute obaviještavati da je vrijeme za odlazak. Nakon toga, svaku sljedeću minutu će u vašem terminalu izbacivati poruke:
Time to leave!
Time to leave!
Time to leave!
Program leave je moguće instalirati iz paketa naredbom:
#apt-get install leave
Here strings
naredba:
wc -c <<<$var
S "Here documents" smo vas upoznali u članku /sys-trek-objave/best-of-sys-help/#here-documents, a sada ćemo vas upoznati s manje poznatim oblikom. Radi se o "Here strings", a najlakše ih je prepoznati po uporabi znaka "<<<" umjesto "<<":
$ export var="Testna recenica"
$ wc -c <<<$var
16
Dakle, pomoću "Here strings" funkcije možemo preusmjeriti standardni ulaz (stdin) naredbe, te će se sadržaj varijable $var prihvatiti baš kao da ste je ukucali s tipkovnice. Isti reziultat ćete dobiti ako napravite:
$ wc -c
Testna recenica
16
Možemo zaključiti da su "Here strings" osiromašena inačica "Here documents", a primjenu možemo naći kada trebamo nekom programu isporučiti sadržaj varijable kao stdin. Primjer slanja maila iz jednog retka:
$ mailx -s "Tema" korisnik@domena.hr <<<$var
$
Popis paketa po datumu instaliranja
naredba:
ls -tl /var/lib/dpkg/info | grep list | less
Sortiranjem ispisa naredbe ls možemo dobiti datume instaliranja paketa, što je ponekad korisno, na primjer kad provjeravamo koji je paket izazvao nekakav problem. Ispis se može malo dotjerati uz pomoć 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
...
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 želite prijeći na dependency-based boot sustav u Squeezu, poželjno je obrisati stare konfiguracijske datoteke iz direktorija /etc/init.d. Da, i startup skripte mogu biti konfiguracijske...
Ukoliko imate instaliran aptitude, brisanje je još lakše:
aptitude purge "~c"
Uklanjanje starog ključa iz popisa poznatih ssh hostova
naredba:
ssh-keygen -R ime_hosta
Ukoliko je od posljednjeg spajanja na neko računalo promijenjen njegov ssh ključ, radi promjene IP adrese, zamjene računala ili instalacije novog operacijskog sustava, ssh klijent će onemogućiti 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 računalu, čiji je ključ promijenjen, najlakše rješenje problema je uklanjanje starog ključa navedenom naredbom. Nakon toga će 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" znači da će se novi ssh ključ spremiti u datoteku .ssh/known_hosts.
Grep i logički operator OR
naredba:
grep -E 'Recipient|Sender' syslog
Kopanje po logovima u potrazi za određenim detaljem bilo bi naporan posao kad ne bismo koristili alate za pretraživanje. U tome nam pomaže naredba grep koja u svom "extended" obliku (opcija -E) omogućava korištenje regularnih izraza.
U primjeru je prikazan oblik naredbe koji koristi logički operator OR. Kao rezultat ispisuje linije koje imaju riječ Recipient ili riječ Sender.
Ukoliko na ovaj izraz želimo nadovezati logički operator AND, možemo to uraditi proslijeđivanjem:
grep -E 'Recipient|Sender' syslog | grep 'reject'
Ovako bi kao rezultat bile vraćene sve linije koje obavezno imaju riječ reject te jednu od riječi Recipient ili Sender.
Pokretanje pseudoterminala pomoću ssh
naredba:
ssh -t korisnik@192.168.1.1 "top"
Ponekad želite na brzinu obaviti nešto na udaljenom računalu. Normalna procedura bila bi da se ulogirate pomoću ssh, pokrenete naredbu, pa se odlogirate. No postoji i kraći put.
Ukoliko naredbu napišete ovako:
ssh korisnik@192.168.1.1 "ls -al"
kao rezultat će vam se vratiti izlist korisnikovog direktorija na udaljenom računalu. Trenutna ssh sesija nije prekinuta, a nakon izvršenja navedene naredbe, udaljena ssh sesija se automatski završava.
Ukoliko, bez prekida trenutne sesije, na udaljenom računalu želite izvršiti program koji manipulira terminalom, primjerice top ili pine, morate u trenutnoj sesiji pokrenuti pseudoterminal. Opcija -t omogućava naredbi ssh izvršavanje 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:~$
Zaustavljanje izvršavanja programa nakon određenog vremena
naredba:
timeout 3s
Ukoliko imate nekakav program čije izvršavanje je potrebno zaustaviti nakon određenog proteklog vremena, možete 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 izvršava može poslati bilo koji signal (popis signala možete pogledati naredbom kill -l).
Navedeni primjer zaustavlja izvršavanje programa nakon 3 sekunde. Trajanje je moguće naznačiti sljedećim opcijama:
- s - sekunde
- m - minute
- h - sati
- d - dani
Pretvaranje ispisa komandnolinijske naredbe u sliku
naredba:
ls -al | convert label:@- izlist.png
Program "ImageMagick" već se spominjao u jednoj od prošlih naredbi tjedna. Ovom prilikom želim prikazati jednu od mogućnosti tog programa korištenjem naredbe convert. U ovom slučaju, naredba convert će konvertirati u sliku ispis naredbe "ls -al".
Oznaka "label:" služi da naredbi definiramo tekst koji će se konvertirati u sliku. Primjerice:
convert -background black -fill white -size 300x200 label:TeXt itext.png
generira sliku

Ukoliko želimo tekst čitati iz datoteke potrebno je dodati oznaku "@" (primjerice convert label:@/etc/motd motd.png), a za čitanje 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

Raspakiranje više rar datoteka odjednom
naredba:
find -name "*.rar" -exec unrar -e {} \;
Ukoliko u jednom direktoriju imate više rar datoteka ovom naredbom možete ih raspakirati sve odjednom. Ovakav način je zanimljiv zbog -exec opcije naredbe find koja se zgodno može uporabiti u mnogo slučajeva.
Alternativa ovakvom načinu je jednolinijska skripta
for i in *.rar;do unrar e $i;done
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 će uraditi upravo to.
Više informacija o iconv programu pomoću naredbe man ili na http://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.13/iconv.1.html.
Uređivanje datoteke na udaljenom računalu
naredba:
vim scp://korisnik@ime_domene//home/korisnik/test.txt
Potrebno je promijeniti nešto u datoteci na udaljenom računalu. Zgodna naredba s kojom možete to obaviti bez zasebnog spajanja na udaljeno računalo. Naravno, malo je nepraktična za duža uređivanja datoteka jer će vas pri svakom snimanju nanovo pitati da ukucate lozinku, ali vjerujem da ćete joj tu i tamo naći praktičnu svrhu.
Debugiranje web poslužitelja pomoću HTTP zaglavlja
naredba:
wget -S --spider http://web_site
Ponekad je pri otkrivanju problema s web poslužiteljem potrebno provjeriti HTTP zaglavlje koje se šalje klijentu. Više o poljima koja se nalaze u HTTP zaglavlju možete pročitati na wikipediji.
HTTP zaglavlje koje poslužitelj šalje klijentu možemo 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 poslužitelja.
Kako doznati više o procesoru (ili procesorima) u poslužitelju
naredba:
cat /proc/cpuinfo
Želite doznati više podataka o vrsti i mogućnostima procesora u vašem poslužitelju. Ova naredba ispisuje kako operacijski sustav vidi procesor (ili više njih). Primjerice, dio ispisa ove naredbe na jednom "starijem" poslužitelju:
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. Objašnjenja nekih od parametara:
stepping - napredak u dizajnu procesora od osnovnog modela 0 (više)
f00f_bug - bug u dizajnu više serija starijih Pentium procesora (više)
bogomips - "neznanstvena" mjera brzine procesora koju izračunava kernel pri bootanju (više)
flags - razni parametri koji opisuju mogućnosti procesora. Jedan od zanimljivijih je lm (long mode) - 64 bitna podrška. U navedenom primjeru vidljivo je da procesor nije 64 bitni.
Dodavanje rezultata izvršavanja naredbe u vi (ili vim) editoru
naredba:
:r! naredba
oristite li vi (ili vim) i želite pri uređivanju datoteke umetnuti izlist nekakvog direktorija ili primjerice današnji datum, dovoljno je da u komandnom modu navedete ovu naredbu. Primjerice
:r! ls -al /etc/apache2/
ili
:r! date
Spajanje više slika u jednu PDF datoteku
naredba:
/usr/bin/convert -compress jpeg *.jpg -adjoin datoteka.pdf
Program za pretvorbu grafičkih formata "ImageMagick" može mnogo toga, a jedna od stvari koje može je pravljenje PDF datoteka iz grafičkih datoteka, u ovom primjeru JPEG datoteka koje ste napravili skeniranjem ili slikanjem s digitalnim fotoaparatom.
ImageMagick može puno više, a kao što vidimo, radi i bez grafičkog sučelja, što je zgodno kod skripti ili cron jobova. Slike ne moraju biti u JPEG fomatu, a opcija "-compress jpeg" samo određuje koja će kompresija biti u završnoj datoteci. Opcija "-adjoin" određuje da se sve datoteke spoje u jednu, inače će sve grafičke datoteke postati zasebne PDF datoteke.
Više informacija na adresi http://www.imagemagick.org/.
Zanimljiva uporaba preusmjeravanja
naredba:
<datoteka grep pojam
Uobičajeni način uporabe grep naredbe je:
grep pojam datoteka.txt
No, ako trebate pretražiti više pojmova, svaki put morate editirati naredbenu liniju što može biti mukotrpno. Posao ćete si olakšati ako upotrijebite preusmjeravanje iz datoteke na ovakav način:
prompt$ <datoteka.txt grep pojam
prompt$ <datoteka.txt grep drugipojam
prompt$ <datoteka.txt grep trecipojam
Na ovaj način ćete imati manje posla oko editiranja naredbene linije, jer je pojam kojeg trebate promijeniti sasvim na kraju retka, da ne spominjemo coolness faktor koji ćete postići ukoliko vam netko gleda preko ramena....
Dodavanje vremena izvršavanja naredbi history
naredba:
history (HISTTIMEFORMAT)
Naredu history smo već spominjali, ali vrijedi spomenuti i mogućnost upisivanja vremena izvršavanja (timestampa), što jako dobro može doći kod forenzičkih ispitivanja. Sve što trebate napraviti je u .bash_profile ili .bashrc upisati sljedeću varijablu:
export HISTTIMEFORMAT='%F %T '
Nakon što se odjavite i ponovno prijavite na sustav, naredbe će biti bilježene uz vrijeme izvršavanja, pa će pokretanje naredbe history sada izgledati ovako:
499 2011-01-31 20:44:20 du
500 2011-01-31 20:44:23 df -h
501 2011-01-31 20:44:27 less .bash_history
502 2011-01-31 20:44:54 alpine
Pronalaženje datoteka po vremenu promjene
naredba:
find ~ -type f -mtime 0
Ova naredba će izlistati sve datoteke u korisnikovom direktoriju promjenjene tog dana. Opcije -mtime može se koristiti kao n*24 sata.
Postoje razne korisne inačice naredbe find opisane u ovom članku. Jedna od zanimljivih uporabi ove naredbe je oblik:
find ~ -type f -newer ime_datoteke
koja će pronači sve datoteke modificirane nakon posljednje promjene datoteke ime_datoteke.
Ispis pojedinih linija datoteke
naredba:
sed -n 7p ime_datoteke
Ova naredba će vam dobro doći ukoliko koliko želite ispisati točno određenu liniju neke datoteke - u ovom slučaju sedmu liniju.
Uz malu promjenu parametara naredba može ispisati sve linije od prvog do drugog parametra:
sed -n '10,20p' ime_datoteke
MTR - alternativa ping i traceroute programima
naredba:
mtr -c 10 --report
MTR je program koji kombinira funkcionalnost ping i traceroute programa. Prilikom pokretanja provjerava mrežni put između računala s kojeg je pokrenut i odredišnog računala. Nakon što je put određen, program šalje niz ICMP ECHO zahtjeva i ispisuje prikupljenu statistiku.
Na Debianu je program dostupan za instalaciju iz repozitorija i to u dvije inačice (mtr i mtr-tiny). Cjelovita inačica mtr dolazi s iskompajliranom podrškom za GTK, dok mtr-tiny verzija podržava samo ncurses. Instalacija:
apt-get install mtr-tiny
Pokretanjem u terminalu, primjerice:
mtr
pokrenuti će se terminalska aplikacija koja će uz brojanje paketa prikazivati statistike. Ukoliko ste se odlučili za instalaciju cjelovite inačice prethodna naredba će pokrenuti GUI prozor. Kako bi mtr natjerali u terminalski način rada potrebno je dodati opciju --curses.
Problem sa spremanjem i ispisom statistike je što se u radu rezultati konstantno ažuriraju. Kako bi dobili završeni izvještaj pokrenite naredbu iz naslova:
mtr -c 10 --report
Ova naredba će pokrenuti mtr, izvršiti 10 ciklusa provjere, zaustaviti se i ispisati izvještaj u terminal.
Prikaz trenutnog runlevela
naredba:
runlevel
Naredbom runlevel možete saznati u kojem ste trenutno načinu rada - runlevelu. Linux je od Unix System-V sustava preuzeo način pokretanja određenih dijelova sustava, kako bi uštedilo na vremenu i resursima. Naime, nema potrebe da se pokreće web poslužitelj ukoliko samo želimo napraviti administrativne poslove u single-user načinu rada.
Pokretanjem naredbe dobit ćete sljedeći ispis:
# runlevel
N 2
Prvi znak određuje runlevel u kojem je sustav bio prije ovoga (ovdje je to N, ili 0 - dakle ugašen). Drugi znak pokazuje u kojem smo trenutno runlevelu (ovdje je to 2, standardni višekorisnički način rada u Debianu).
Debian je znatno pojednostavio sustav, pa imamo ove runlevele:
| 0 ili N | sustav se gasi |
| 1 ili S | jednokorisnički način rada |
| 2 do 5 | višekorisnički način rada, mreža, GUI |
| 6 | sustav se restarta |
Drugi Linuxi imaju kompleksniju podjelu, pa je primjerice runlevel 2 višekorisnički način rada bez mreže, 3 uključuje i mrežnu podršku, dok runlevel 5 označava rad u grafičkom sučelju. Runlevel 4 je najčešće nedefiniran.
Mapiranje tipkovnice kroz .inputrc datoteku
naredba:
"\e[5~": history-search-backward
Funkcionalnosti CTRL+r možemo dobiti kroz konfiguraciju .inputrc datoteke u home direktoriju korisnika. Datoteka /etc/inputrc definira mapiranje tipkovnice, a koristi je readline, library za čitanje unosa, koji opet koriste ljuske poput basha. Ukoliko vas predefinirane postavke u /etc/inputrc ne zadovoljavaju, možete modificirati mapiranja postavljanjem datoteke ~/.inputrc.
Jednostavana demonstracija je sljedeća:
Kreirate datoteku .inputrc, u korisnikovom home direktoriju, sa sljedećim sadržajem:
"\e[5~": history-search-backward
"\e[6~": history-search-forward
Logout/login i pored CTRL+r imate postavljen i novi način pretraživanja bash povijesti. Unesete prvih par slova naredbe i pomoću PgUP/PgDown šetate po povijesti naredbi koje započinju unesenim slovima.
Naravno, prilikom editiranja datoteke preporuča se oprez, pogotovo ukoliko nemate fizički pristup računalu ili pristup kao drugi korisnik s root ovlastima, jer eventualno pogrešno mapiranje u .inputrc može korisniku onemogućiti normalan rad s tipkovnicom.
Izlist sadržaja komprimiranih datoteka
naredba:
tar -tvf datoteka.tar
Prilikom kreiranja backup datoteka ili seljenja podataka s poslužitelja na poslužitelj često je potrebno služiti se velikim tar datotekama. Ukoliko iz velikog tarballa želimo izvući samo jednu datoteku, možemo koristiti sljedeće naredbe.
Sadržaj tar datoteke možemo izlistati naredbom
tar -tvf datoteka.tar
Sadržaj gzip komprimirane tar datoteke možemo izlistati naredbom:
tar -tvzf datoteka.tar.gz
Sadržaj bzip2 komprimirane datoteke možemo 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 korišten je v - verbose način rada.
Postavka BASH ljuske za spriječavanje slučajnog prebrisivanja datoteke
naredba:
set -o noclobber
Ukoliko pri radu u bash ljuski koristite redirect naredbe poput:
ls -al > out.txt
može vam se dogoditi da slučajno prebrišete sadržaj već unesen u datoteku. Pogrešno upotrebljeni redirect (> umjesto >>) i sadržaj datoteke je prebrisan.
Ukoliko je aktivirana noclobber postavka, ljuska neće dozvoliti ovakvo prebrisivanje sadržaja datoteke.
ls -al > out.txt
bash: out.txt: cannot overwrite existing file
Ovu opciju možete postaviti trajno dodavanjem u .bashrc datoteku:
echo 'set -o noclobber' >> .bashrc
Opciju možete poništiti izvršavanjem naredbe:
set +o noclobber
ili privremenim korištenjem modificirane redirekcije:
ls -al >| out.txt
Unmount zauzetog uređaja
naredba:
lsof /device_name
Pri radu s mountanim vanjskim uređajima često se dogodi ovakva situacija:
~$ umount /dev/sdb1
Unmounting /dev/sdb1 failed: Volume.Busy: umount: /media/STICK1GB: device is busy
Pomoću 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 traženom resursu. Nakon pronalaska procesa možemo jednostavno ugasiti aplikaciju koja pristupa resursu i unmountati uređaj.
Generator slučajnih premutacija
naredba:
shuf
Potrebno vam je izgenerirati niz od 5 slučajnih brojeva od 100 do 200? Naredba shuf je pravo rješenje:
shuf -i 100-200 -n 5
Želite li dobiti neku od slučajnih permutacija brojeva (3,4,5,6)? Samo upotrijebite sljedeću sintaksu:
shuf -e 3 4 5 6
Naredba shuf sastavni je dio coreutils paketa. Iako gore navedena primjena možda nije svakome korisna. pomoću nje možete riješiti niz zanimljivih problema.
Primjerice generator slučajnih riječi:
shuf -n 10 /usr/share/dict/words
ili prikaz slike iz direktorija slučajnim odabirom:
eog "$(ls | shuf -n1)"
Kako obojiti log datoteku
naredba:
tail -f -n 20 datoteka | ccze
Uobičajeni posao praćenja logova iziskuje određeni napor pri raspoznavanju pojedinih dijelova linija. Paket ccze vam omogućava lakše snalaženje u log datotekama unošenjem boja u jednolične terminalske prikaze.
Paket je potrebno instalirati naredbom
apt-get install ccze
Prikaz plugina za pojedine vrste logova možete dobiti naredbom
ccze -l
Ukoliko umjesto praćenja promjena želite koristiti ccze za čitanje neke log datoteke možete to uraditi naredbom
ccze -A < ime_datoteke | less -R
Kratice za brži rad u bash ljuski
naredba:
ALT + .
Iznimno korisna kratica za dodavanje posljednjeg argumenta bash komandne linije u tekuću liniju. Primjerice u slučaju slijeda naredbi:
$ ls -al test.txt
$ mv test.txt test1.txt
u drugoj liniji nakon ukucavanja naredbe mv parametar test.txt moguće je dodati ukucavanjem ALT + . (istovremeni pritisak lijeve tipke ALT i točke).
Neprestanim pritiskom na točku moguće je pomicanje kroz argumente iz povijesti naredbi (bash history).
Detekcija linux distribucije
naredba:
cat /etc/issue
Na većini linux distribucija u ovoj datoteci je upisana verzija i distribucija linux operacijskog sustava instaliranog na računalu. Pojedinačno 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 možete pokušati naredbom
cat /etc/*-release
Primjerice, kod Ubuntu distribucije datoteka je /etc/lsb-release, a kod Fedore je /etc/fedora-release.
Naredba dig za pretraživanje DNS podataka
naredba:
dig ime_domene tip_upita
Dig je naredba koja na debianu dolazi s paketom dnsutils (apt-get install dnsutils), a služi za postavljanje upita DNS poslužiteljima. Popriličan broj opcija ove naredba omogućuje vam postavljanje raznih tipova upita.
Primjer - vrati podatke o posluzitelju www.carnet.hr:
dig www.carnet.hr
Primjer - vrati DNS poslužitelje za domenu carnet.hr
dig carnet.hr NS
Primjer - vrati mail poslužitelje za domenu carnet.hr
dig carnet.hr MX
Primjer - reverzni upit
dig -x IP_ADRESA
Primjer - upit na navedeni DNS poslužitelj (SERVER - adresa ili ime DNS poslužitelja)
dig @SERVER ime_domene
PDF toolkit
naredba:
pdftk
Ne baš najnoviji, ali jako moćan toolkit za spajanje i razdvajanje pdf dokumenata. Pdftk može spojiti dva ili više pdf dokumenata u jedan, razbiti jedinstveni pdf dokument na pojedinačne stranice ili jednostavno iz više pojedinačnih stranica raznih pdf dokumenata kreirati novi dokument.
Naredba dolazi s pdftk paketom koji je potrebno instalirati uobičajenom metodom:
apt-get install pdftk
Primjeri korištenja
Razbijanje pdf dokumenta na pojedinačne 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 pojedinačnih stranica više dokumenata. Dokument spojeni.pdf sastojat će se od prve i druge stranice dokumenta A, treće i četvrte 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
Dodavanje zadnjeg argumenta prethodne naredbe
naredba:
.
Ova naredba insertira zadnji argument prethodno izvršene naredbe u liniju. Primjerice, želite kopirati datoteku test.txt u direktorij /etc/konfiguracija, ali prije toga želite provjeriti što sve ima u tom direktoriju. Naredba:
ls -al /etc/konfiguracija
izlistat će sadržaj direktorija. Nakon toga možete ukucati cp test.txt i kombinaciju <ALT> .
Konačan izgled linije bit će
cp test.txt /etc/konfiguracija
Alternative ovoj naredbi su <ESC> . i !$, s tim da posljednja ne insertira argument u liniju nego ga uzima pri izvršavanju.
Pregled izvršenih naredbi
naredba:
history
Naredba history izlistava popis posljednjih izvršenih naredbi. Ovisno o korisnikovom shellu i postavkama, izvršene naredbe se uobičajeno zapisuju u .history datoteci u korisnikovom direktoriju. U slučaju pretpostavljene bash ljuske, ta datoteka je .bash_history, a pretpostavljena vrijednost maksimalnog broja linija je 500. Nakon što je zapisano više od 500 naredbi, starije naredbe bivaju izbrisane onako kako se nove zapisuju.
Ukoilko želite sačuvati više 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 povećani broj linija može primjetiti tek nakon sljedećeg izlaska iz ljuske.
Brisanje naredbi iz .history datoteke možete uraditi naredbom:
history -c
Informacije o poslužiteljskom hardware-u
naredba:
lshw
Postoji mnogo načina na koje možete doznati od kakvog se hardwarea sastoji vaše poslužiteljsko računalo, a korištenje naredbe lshw je zasigurno među najjednostavnijima. Naredba dolazi kroz paket lshw koji je potrebno instalirati standardnim putem:
apt-get install lshw
Naredba ispisuje detaljne informacije o hardwareu. Skraćena 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 može 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
Real-time praćenje promjena u log datoteci
naredba:
tail -f datoteka.log
Jedna od najkorištenijih naredbi pri analizi tekućih događaja na poslužitelju. Sama naredba tail ispisuje zadnjih 10 linija datoteke. Ukoliko datoteka "raste" - kao što je to slučaj s log datotekama - promjene u realnom vremenu možete pratiti opcijom -f (follow).
Kreiranje direktorija sa poddirektorijima iz jedne linije
naredba:
mkdir -p /ne/postoji/putanja/do/poddirektorija
Ukoliko pokušate kreirati poddirektorij u direktoriju koji ne postoji,
mkdir /parent/child
linux će uredno odgovoriti nečim poput
mkdir: cannot create directory '/parent/child': No such file or directory
Opcija -p omogućit će kreiranje poddirektorija i svih nepostojećih nadređenih direktorija.
Brisanje sadržaja terminala
naredba:
CTRL+L
Kratica CTRL+L (može i malo i veliko slovo L, op.a.) radi isto što i naredba clear - briše sadržaj terminala. Ne radi se o stvarnom brisanju, već o "čišćenju" sadržaja terminala. Povijesni sadržaj je dostupan putem kratica Shift+PageUp, Shift+PageDown.
Ispis csv datoteke u stupce
naredba:
column -t -s , datoteka.txt
Naredba column će sve što joj se proslijedi pokušati ispisati sortirano po stupcima. Predefinirano, koristeći samo atribut -t, naredba će formatirati ispis prema praznim razmacima. Alternativno, ukoliko, primjerice, želimo ispisati nekakvu csv datoteku, može se koristiti atribut -s uz navedeni karakter po kojem se želi razdvojiti stupce (u ovom slučaju - zarez).
datoteka.txt:
1,Rab,15,pretežno oblačno
2,Split,14,pretežno vedro
3,Zadar,15,umjereno oblačno
4,Zagreb,10,sumaglica
rezultat naredbe:
1 Rab 15 pretežno oblačno
2 Split 14 pretežno vedro
3 Zadar 15 umjereno oblačno
4 Zagreb 10 sumaglica
Prikaz rednog broja linija pri korištenju naredbe grep
naredba:
grep -n 'tekst' datoteka
Naredba grep pretražuje datoteke i ispisuje linije u kojima se nalazi traženi tekst. Uz korištenje opcije -n zajedno s pronađenim linijama ispisat će se i redni broj linije u datoteci.
Naredba time
naredba:
time ime_naredbe
Naredba time vraća vrijeme proteklo pri izvršenju pojedine naredbe. Primjerice
time ls
će kao rezultat ispisati sadržaj direktorija plus sljedeći dodatak:
real 0m0.008s
user 0m0.004s
sys 0m0.008s
što u stvari predstavlja realno vrijeme izvršavanja i procesorsko vrijeme podjeljeno na korisnički i sistemski dio.
Primjerice, pokretanjem naredbe
time cat
dobije se praktična simulacija štoperice (prekida se sa CTRL-C).
Prikaz procesa koji drže otvorene priključne točke
naredba:
ss -p
Naredba ss je koristan alat za prikaz aktivnosti TCP/IP priključnih točaka. U ovoj varijanti (opcija -p) izlistat će se svi trenutno aktivni socketi te procesi koji ih drže otvorenima.
Brza provjera ponavljanja u popisima
naredba:
cat datoteka.txt | sort | uniq -c | sort -nr
Ova naredba će vam pomoći pri otkrivanju višestrukih ponavljanja imena ili artikala u popisima. Primjerice, u datoteci imate sljedeći popis imena
Mate
Stipe
Frane
Mate
Ante
Frane
Frane
Naredba cat ispisuje datoteku, sort je abecedno sortira, naredbe uniq -c broji uzastopno ponavljajuće linije koje su onda nanovo proslijeđene numeričkoj (-n), reverznoj (-r) naredbi sort. U našem slučaju 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
Preimenovanje ekstenzija datoteka iz velikih u mala slova
naredba:
rename -v 's/\.JPG$/\.jpg/' *.JPG
Pojedini programi znaju praviti probleme s učitavanjem datoteka kojima su ekstenzije u uppercase formatu. Koristeći ovu naredbu jednostavno možete preimenovati sve datoteke iz nekoime.JPG u nekoime.jpg.
Za preimenovanje imena i ekstenzije iz velikih u mala slova možete koristiti naredbu:
rename -v 'y/A-Z/a-z/' *
Unmount busy particije
naredba:
fuser -km /mnt/hda2
Vrlo korisna naredba, kad nikako ne možemo odmontirati particiju jer je iz nekog razloga okupirana (busy).
Bojanje ispisa naredbe grep
naredba:
alias grep='grep --color=auto'
Izlaz naredbe grep često puta bude neprepoznatljiv zbog količine proizvedenih podataka. Korištenjem ovog aliasa ispis će postati dosta čitljiviji. Ukoliko koristite bash ljusku, dovoljno je ovu liniju dodati u .bashrc datoteku.
Prikaz non-printing karaktera naredbom cat
naredba:
cat -vet datoteka.txt
Česta pogreška pri radu sa skriptama (bash skripte, PHP, ...) događa se zbog korištenja različitih tipova editora i njihove podrške pri snimanju datoteka u ASCII, UTF-8 ili nekom drugom formatu.
Ukoliko vam PHP skripta prijavljuje pogrešku 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 možete pokušati ispisati problematičnu datoteku.
Ukoliko u ispisu vidite oznake tipa M-nešto, u skripti imate non-printable karaktere koji mogu biti uzrok pogreške. Tipičan primjer je BOM (Byte-Order-Mark) oznaka na početku 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.
Brisanje sadržaja datoteke u bash ljuski
naredba:
> datoteka.txt
Ukoliko na disku imate veliku datoteku kojoj želite izbrisati sadržaj, ali bez brisanja same datoteke, ova naredba je upravo ono što vam treba.
Korisna naredba za brže snalaženje u bash ljuski
naredba:
CTRL + r
Ovo je vjerovatno jedna od najkorisnijih naredbi za snalaženje u bash ljuski. Umjesto da pretražujete bash_history u potrazi za naredbom koju ste jednom davno ukucali, dovoljno je otipkati CTRL+r te ukucati bilo koji dio naredbe koju tražite. Rezultat ove akcije će vam vrlo brzo biti jasan. Ukoliko isprva niste pronašli odgovarajuću naredbu, jednostavno nastavite klikati CTRL+r i pratite kako se pomičete dublje u history.
Kratice za snalaženje u bash ljuski
naredba:
CTRL-x CTRL-e
Ukoliko morate editirati jako dugu naredbu u komandnoj liniji, ova kombinacija tipaka predstavlja veliku pomoć. Nakon pritiska na CTRL-x CTRL-e sve što ste do tada ukucali u komandnoj liniji otvorit će se u vašem pretpostavljenom editoru. Nakon editiranja i izlaska iz editora, editirana naredba će se odmah izvršiti.
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.
Kratice za brže snalaženje u bash-u
naredba:
CTRL+A, CTRL+E, ...
Ovog puta smo Vam umjesto uobičajene naredbe pripremili niz kratica za brže snalaženje u bash ljuski.
Za brže kretanje po komandnoj liniji koristi se CTRL+A za postavljanje pokazivača na početak linije, odnosno CTRL+E za postavljanje na kraj linije.
Kod ponovljenog unosa sličnih naredbi, dobro dođu kratice za brisanje dijela linije:
CTRL + K - briše dio linije iza pokazivača;
CTRL + U - briše dio linije ispred pokazivača;
CTRL + W - briše riječ ispred pokazivača.
Zanimljive kratice kojima možete mijenjati raspored karaktera ili riječi su:
CTRL + T - mijenja zadnja dva karaktera ispred pokazivača;
Esc + T - mijenja zadnje dvije riječi ispred pokazivača.
Od niza preostalih kratica mogu izdvojiti jednu, možda najkorisniju: CTRL + R. Nakon unosa ove kratice, nastavite s ukucavanjem dijela naredbe za koju mislite da postoji u bash history i odmah će vam sve postati jasno. Ukoliko do sada niste koristili ovu kraticu, vjerujem da će vam vrlo brzo postati nezamjenjiva.
Kreiranje direktorija s imenom tekućeg datuma
naredba:
mkdir `date --iso`
Navedena naredba kreira direktorij s imenom tekućeg datuma u iso 8601 formatu (YYYY-MM-DD). Naredba je posebno korisna za automatizirane backupe. Ukoliko je potrebna veća vremenska preciznost pri automatiziranom kreiranju backup direktorija, možete koristiti neke od mnogobrojnih parametara naredbe date, primjerice u sljedećem obliku:
mkdir `date +"%Y-%m-%dT%H:%M:%S"`
koja kao rezultat kreira direktorij 2009-06-01T10:07:33.
Čitanje log datoteka pomoću naredbe less
naredba:
less +F logdatoteka
Kada želite u realnom vremenu pratiti promjene na nekoj log datoteki uobičajeno se koristi naredba:
tail -f logdatoteka
Naredba less s argumentom F obavlja isti posao, ali vam istovremeno dozvoljava izlazak iz scrolla i korištenje svih prednosti preglednika datoteka.
Nakon pokretanja naredbe uključen je mod praćenja zadnje linije datoteke. Za prekid je potrebno poslati CTRL-C, i tada je omogućeno normalno čitanje datoteke. Ukoliko želite nastaviti praćenje zadnje linije, potrebno je odaslati SHIFT-F.
Ukoliko nemate naredbu less u vašoj distribuciji Debiana, potrebno ju je instalirati standardnim putem:
apt-get update
apt-get install less
Izlist svih priključnih točaka u stanju slušanja (listening sockets)
naredba:
sudo netstat -ntulp
Ovo je zgodna naredba koja će vam prikazati koji se sve programi na vašem računalu nalaze u stanju slušanja. Opcije su sljedeće:
- -n - izlistava numeričke adrese
- -t - izlist tcp socketa
- -u - izlist udp socketa
- -l - izlistava samo sockete koji slušaju
- -p - veza slušajućeg socketa i pid-a/imena programa
Od niza ostalih mogućih opcija možemo uzdvojiti opciju -a koja umjesto slušajućih 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 poslužiteljima morate koristiti root ovlasti. Zato je naredba ovdje odmah napisana sa sudo.
Kopiranje datoteka korištenjem bash proširenja
naredba:
cp filesdugimimenom{,_old}
Ova naredba će kopirati datoteku filesdugimimenom u filesdugimimenom_old.
Vitičaste zagrade nisu dio cp naredbe, već 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
možemo pisati kao
rm /dugi/path/do/direktorija/{datoteka1,datoteka2}
Deset najvećih direktorija sortiranih po veličini
naredba:
find . -type d -print0 | xargs -0 du -sm | sort -rn | head
Ovo je jedna od zgodnih naredbi kojom možete pronaći direktorije čije datoteke zauzimaju najviše mjesta na disku. Ukratko, naredba find proslijeđuje rezultat pretrage naredbi du koja sumarizira veličinu direktorija (-s), prikazanu u megabajtima (-m), a razultat proslijeđuje naredbi sort. Naredba head služi samo za ispis deset prvih vrijednosti.
Druga varijanta ove naredbe koja bi tražila najveće datoteke u trenutnom direktoriju bila bi:
find . -type f -print0 | xargs -0 du -sm | sort -rn | head
Inače, sumarni prikaz korištenja pojedinog direktorija može se dobiti naredbom
du -sm ./* | sort -nr
Problem s ovom naredbom je što ne prikazuje veličine skrivenih direktorija. Za prikaz skrivenih direktorija može se koristiti sljedeća naredba:
du -sm .[a-z0-9]* | sort -nr
pod pretpostavkom da ime direktorija započinje s točkom iza koje slijedi slovo ili broj.
Izlist otvorenih priključnih točaka
naredba:
lsof -i -r
Ova naredba će izlistati sve otvorene mrežne priključne točke uz ponavljanje (-r). Predefinirano vrijeme ponavljanja je 15 sekundi. Dodavanje parametra, primjerice
lsof -i tcp:80 -r
omogućuje filtriranje izlista po protokolu i portu. Uz korištenje opcije r naredba se izvršava do prekida (CTRL-c).
Prikazivanje prvih deset procesa po zauzeću memorije
naredba:
watch -d -n 1 'ps aux --sort -rss | head'
Naredba watch svaku sekundu (n = 1) izvršava naredbu ps s parametrima koji prikazuje deset memorijski najzahtjevnijih procesa sortiranih od većeg prema manjem. Opcija -d omogućava označavanje razlika kod svakog izvršenja. Naredba watch se izvršava do prekida (CTRL-c).
Rekurzivna zamjena niza znakova
naredba:
find /home/pero -type f -print0 | xargs -0 perl -pi -e 's/staro/novo/g'
Ova naredba će zamijeniti niz znakova "staro" u "novo" u svim datotekama u direktoriju "/home/pero" i svim direktorijima ispod njega. Pri tome će u obzir uzeti samo obične datoteke (ne direktorije itd.), a one mogu imati i razmak (whitespace) u imenu.
cd -
naredba:
cd -
Prebacujete se iz direktorija u direktorij, a zamorno vam je pisati duge putanje. Ova naredba vas vraća u direktorij u kojem ste prethodno bili.
sudo !!
naredba:
sudo !!
Pokrenuli ste naredbu u linux komandnoj liniji, ali ste shvatili da ste zaboravili uključiti sudo. Ova naredba vas spašava od ponovnog kucanja ponekad zaista dugih naredbi.
Sudo pokreće naredbu kao privilegirani korisnik, a "!!" jednostavno izvršava posljednju izvršenu naredbu.