glaskoncILLa je napisao/la:a zasto lijepo ne arhivirati nekim gui alatom..

Nije stvar samo u arhiviranju ili u taru. Tar je samo primjer toga koliko se korisniku lako upucati u nogu.
Poanta je bila da u praksi alate treba često kombinirati i koristiti naizmjence, a onda nedosljednosti brzo postanu prepreka. GUI arhiver sigurno ima smisla, samo uvijek ostaje pitanje da li će imati napredne opcije (--exclude, arhiviranje po datumu...).
A možda i da li će imati kojekakve bugove, da li će biti nestabilni...
A CLI alati su svugdje dostupni, ima ih smisla naučiti. Jedino je pitanje da li stvarno moraju biti ovako teški za učenje.
glaskoncILLa je napisao/la:
terminal je super koristan, ali namijenjen je ljudima kojima mozak funkcionira na nacin da se mogu brzo snaci u slicnim situacijama, sto ne znaci da su doticni nesto pametiniji nego da vecina ljudi ne funcionira na taj nacin.
Ajmo baš pogledati kakav bi to način razmišljanja trebao biti da se netko može brzo snaći u sličnim situacijama.
Pogotovo kad se ista ili slična funkcionalnost poziva na toliko različite načine da ih ljudski mozak ne može s ničim povezati.
Evo recimo osnovne stvari: cp naredba. Netko recimo samo želi kopirati direktorij koji sadrži nekakve fajlove.
A direktoriji su obično takvi, sadrže fajlove i druge direktorije.
Ali, cp po defaultu ne kopira rekurzivno, nego mu za to treba switch
-R (u stvari možda je
-r, samo da pogledam... ok, izgleda da je u ovom slučaju potpuno svejedno). I sad, ako se kopira rekurzivno, dakle kopira se sve ono što taj dir sadrži, i pri tome se naleti na simbolički link, kopirat će se link kao link. Dobro. Ali, ako se kopira rekurzivno i želi se slijediti simboličke linkove (kopirati ono na što simbolički link pokazuje), treba mu opcija
--dereference ili
-L.
Hmm, ajde dobro. Uglavnom, poanta je da je cp-u svejedno da li pišem:
cp -rL ili
cp -RL
Zasad nije tako strašno. E, ali onda mi zatreba
grep. I kod grepa opet postoji opcija malo
-r, koja sad znači rekurzivno pretraživanje, ali s tim da je opcija veliko
-R ona koja znači "radi rekurzivno, i pri tome slijedi simboličke linkove".
Što sad pomaže bilo kakav način razmišljanja u slučaju kad treba naizmjence koristiti recimo cp i grep? Pomaže samo memoriranje opcija koje je zapravo jako teško memorirati. Ili konstantno otvaranje manuala.
Ili nešto još osnovnije: brisanje direktorija. Znam da imam
rm i
rmdir. Znam i da
rmdir briše prazne direktorije.
Ali ako samo malo duže koristim GUI, i vratim se u terminal, uvijek moram misliti da li mi treba možda
rmdir -r ime_direktorija, ili
rm -r ime_direktorija ako hoću brzo obrisati neki direktorij koji nije prazan.
Da, nije problem otvoriti man/info i vidjeti da rmdir uopće nema opciju -r. Ali poanta je da prečesto moram gledati što mi točno treba samim tim što *znam* da postoji i rmdir. Sam naziv te asocira na brisanje direktorija, ne na brisanje *praznog direktorija*. Mislim, čemu komplicirati s rmdir? file ili direktorij, iz korisničke perspektive je potpuno svejedno.
A nedosljednostima zapravo nema kraja: evo npr. regexi.
Meni su se regexi baš učinili i moćnim i interesantnim. Pogotovo kad pohvataš osnove.
Ali, kako izgleda kad različitim alatima samo treba reći da koriste isti oblik regexa?
Evo, kako npr. grepu reći da koristi extended regexe (ERE)?
Relativno jednostavno, grep ima switch -E ili
--extended-regexp.
Kako međutim sedu reći da koristi ERE? Pa, opet relativno jednostavno: ima switch -r ili
--regexp-extended.

Kakav to način razmišljanja ovdje pomaže da se brzo izvučem iz te situacije? Osim da svaki put pišem
info sed, lupim s za search, pišem
extended...i onda lupam još par puta "s" i Enter dok ne dođem do mjesta gdje se "extended" spominje upravo uz switch koji tražim, a za koji unaprijed ni ne znam kako bih ga drugačije tražio.
Kako awku reći da mi treba ERE? Ispada da ni ne treba, jer awk izgleda po defaultu koristi ERE. (Zanimljivo, ali trebalo mi je puno duže da iskopam ovu informaciju nego da vidim točan switch za sve ostale koji ne koriste ERE po defaultu
Kako naredbama find ili locate reći da koriste određeni oblik regexa?
Pa, find ima opciju --regextype, a locate ima -regextype (da, vrag je u detaljima)
Ili npr. ako naizmjence koristim find i grep, ako tražim fajlove/direktorije ili stringove, uvijek razmišljam otprilike ovako:
1. Što je to što tražim
2. Gdje to treba tražiti
Međutim, čak ni redoslijed ova 2 osnovna argumenta (što tražim i gdje tražim) nije isti.
Dobro, tu možda i ja puno tražim, ali s druge strane, ne sjećam se da sam ikada uspio pokrenuti bilo find bilo grep a da prvo nisam morao otvoriti manual i pogledati, u najboljem slučaju barem taj redoslijed. Ili sam kopao po historyju, to mi je još bilo najbrže...Jasno mi je da su ovo potpuno različiti alati, koji služe zapravo za različite stvari, ali ipak oba služe za svojevrsno pretraživanje.
I da je barem taj redoslijed isti, već tu bi svakodnevna upotreba bila lakša.
Posebno kad se alati naizmjence koriste. Osim toga, ako hoću da find ne uzima u obzir razliku između velikog i malog slova, tu je opcija "-iname", dok je kod grepa to samo "-i". Find je koliko znam po defaultu rekurzivan a grep nije.
Ono što nekako cijelo vrijeme hoću reći je da danas, kada često treba puno toga povezati u jednu cjelinu, za savladati ovakve alate treba strahovito puno truda. I moraš konstantno raditi, samo zato da ne izgubiš tu vještinu. A to se postiže isključivo konstantnim radom, odnosno, kad jednom uhvatiš više ne puštaš, a ne "drugačijim načinom razmišljanja".
Jednostavno - kad puno toga treba memorirati, čovjek prirodno traži zajedničke točke pomoću kojih može lakše povezivati stvari.
I ako tih točaka često nema, onda možda stvarno je problem u alatima, a ne u korisnicima.