Sada je: 05 svi 2024, 23:29.
C, C++, Java, PHP, Ruby...

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Pa možeš i sam snaći kod takvih stvari. Umjesto dijela
Kod: Označi sve
>> /etc/sysctl.conf

stavi
Kod: Označi sve
>> testfajl.txt
pa pogledaj kako je upisalo u taj .txt fajl (cat testfajl.txt, gedit testfajl.txt...). Ponoviš li komandu, nadodat će opet na postojeći tekst.
Za pisanje u /etc/nešto će ti trebati i sudo.
U stvari, najbolje uvijek provjeriti na test fajlu kod takvih stvari, prije nego nešto pišeš u sistemske datoteke.
Avatar
Postovi: 1907
Postovi: 1907
Pridružen/a: 16 tra 2011, 08:34
Lokacija: i grupa Film
Podijelio/la zahvalu: 45 puta
Primio/la zahvalu: 342 puta
Spol: M
OS: Mint 10 LXDE itd...
Sorry, zaboravio sam napisati. Isprobao sam na test fajlu i tamo radi kako treba, ali me zanima da li će na ovom fajlu, pošto je ipak "sistemski" fajl.

Fun fact : sa sudo me odbija, moram prije toga prijeći u root i onda radi. Sa sudo mi baci ovo : "bash: /etc/sysctl.conf: Pristup odbijen"

Makar to mi nebi trebalo ni predstavljati problem, pošto sam stavio uvjet za pokretanje skripte da bude root korisnik.
Postovi: 42
Postovi: 42
Pridružen/a: 08 svi 2014, 02:17
Podijelio/la zahvalu: 2 puta
Primio/la zahvalu: 2 puta
Spol: M
OS: Ubuntu 14.04
Tekst fajl k'o tekst fajl. A onaj sudo sam pogledao na internetu. Izgleda da ne ide zato što bash to interpretira kao (sudo echo "tralala") >> sistemski fajl a ne sudo (echo "tralala" >> sistemski fajl). Tako da >> nema sudo ovlasti jer bash iz kojega ide redirekcija nema sudo ovlasti.

Rješenje je onda sa sudo automatski pozvati root ljusku (sudo -s) i staviti komande unutar ' '. Onda bi to radilo ovako:
sudo -s 'echo "tralala" >> sistem_fajl'
ili obični (ne-root) echo "pajpati" u neki program koji upisuje u datoteku i koji je pokrenut sa sudo (npr. tee):
echo "tralala" | sudo tee -a root_sistemski_fajl

Čovjek nauči nešto svaki dan. :dajpet
Avatar
Postovi: 1907
Postovi: 1907
Pridružen/a: 16 tra 2011, 08:34
Lokacija: i grupa Film
Podijelio/la zahvalu: 45 puta
Primio/la zahvalu: 342 puta
Spol: M
OS: Mint 10 LXDE itd...
Bome da. Nikad ne prestajemo učiti ;)

Evo, uz vašu pomoć, uspio sam privesti skriptu kraju (barem kako sam ju ja zamislio). Jedino što mi je sada preostalo je popuniti skriptu sa programima za instalaciju (za deinstalaciju sam dobar dio programa za koje ja smatram da su nepotrebni uvrstio).

Skripta je poprilično dugačka, pa ću ju uploadati ovdje

Ako nekoga zanima, navalite i pregledajte ju. Zanimaju me reakcije (pogotovo jer sam tek krenuo). Svaki komentar je dobrodošao :).

Secirajte ovaj početnički kod ili (ako ste ludi i razuzdani) riskirajte pa ju pokrenite. I dare you :P

Par napomena

1.) Zasad su polja manje više prazna (nema na popisima previše programa za instalaciju/deinstalaciju)

2.) U funkciji za deinstalaciju, mislio sam varijablu kreirati ovako : deinstalacija+=" ${popis_programa_uninstall[k],,}*"

Ali nisam siguran da li bi se možda oštetio sustav kad bi sve programe išao deinstalirati i purgeati sa * (firefox* vlc* itd.)
Molio bih vas savjet po tom pitanju.

3.) Razmišljao sam u polju za egzekuciju, sakriti sve outpute naredbi (kada krene update, da ne vrti na ekranu kako on gađa repozitorije, već da samo stoji "Radim nadogradnju sustava..." dok ne završi. To bi izveo tako da bi stavio sve naredbe u {} zagrade i na kraju ih redirectao njihove outpute sa &> u dev/null ). Ne znam da li je to pametna ideja pa bih vas i tu molio savjet

Evo, to je to zasad od mene. Sad ću početi smišljati kako da unaprijedim skriptu (da se maknem sa v0.1 na v0.15 )
Privitak/ci
main_skripta.sh.tar.gz
(6.05 KiB) Preuzeto 167 put/a.
Postovi: 42
Postovi: 42
Pridružen/a: 08 svi 2014, 02:17
Podijelio/la zahvalu: 2 puta
Primio/la zahvalu: 2 puta
Spol: M
OS: Ubuntu 14.04
Evo ti jedne reakcije. Ja ti inače iskreno lupim šta mislim a moje mišljenje i nije bog zna šta.
Moja je reakcija bila:
Užas! Kad budeš imao 100< programa u izborniku i budeš morao održavati tu skriptu, doći će ti da si razneseš glavu kuburom i to višestruko.
Dobro, kao za učenje, kao drill za "if then else" i matrice je super. Opsežno komentiranje uglavnom spašava stvar. Ili maskira lošu koncepciju. Ali lijepo je na oko.

Ali nemoj tako raditi kad budeš pravio programe koji će se aktivno koristiti i održavati.
Nemoj se dovoditi u situaciju da budeš rob računalu. Ti ga moraš što lakše održavati a ono mora što više tog dosadnog posla napraviti a ne obratno.
Kad bi mi na pilani radili ovako, onda bi svaku bukvu tešku ko olovo devet puta prebacivali preko ruku. Ali težina je dobar feedback. Kad je feedback dobar onda se bolje i racionalnije razmišlja prije nego se nešto napravi. I muke oko održavanja programa i udovoljavanja korisnicima su isto tako dobar feedback.

Htio sam ti reći ovo: i u programiranju budi širokih pogleda i radi što racionalnije. U bashu možeš koristiti sve moguće programe i komande a ne samo ugrađene for-next petlje. Radi šta možeš da si olakšaš sada i kasnije.

Recimo, zašto imaš podatke kodirane unutar skripte? Stavi ih u neku datoteku, poput male baze podataka i onda parsiraj u skripti (možda sa komandom "cut"). Lakše za održavanje i manje mogućnosti da uneseš neki bug.

Četvrtina skripte ti je osiguranje od pogrešaka u ručnoj sinkronizaciji zbog pogrešnog pristupa problemu. Toga uopće tu ne treba. Računalo je tu da to odradi a ne ti.

"Apt-get dist-upgrade" nakon "apt-get upgrade" nema smisla. Uglavnom bi trebao dist-upgrade ali YMMV.
Ako koristiš apt-get purge, ne treba prije toga apt-get remove.
Ostalo mi izgleda lijepo.

Znam da ćeš reći da si početnik i ovo i ono ali mislim da to nema veze. Bio početnik u programiranju, u zidariji ili bonsaiju, moraš učiti po redu kako treba da bi kasnije nešto bilo od toga. U programiranju imaš nekoliko koraka i svaki mora biti što bolje odrađen inače nema dobrog posla.

Moraš prvo općenito shvatiti i definirati koji te problem u stvari muči. Ne miješaj nikakva računala i implementacije rješenja u to. Samo shvati problem.
Onda pokušaj općenito shvatiti kako bi riješio taj problem. Ne miješaj računala i dalje.
Onda pokušaj to rješenje generalno uobličiti u (apstraktne) računalne predmete i operacije. Nije bitan jezik niti for-next.
Onda počneš programirati. Normalno, dok radiš, shvatiš da nešto ne štima i onda sve ponovo. Što ranije pogriješiš, to će teže biti za ispravljanje. Ispravljanje je 80% programiranja.

U ovom slučaju, od početka si u apstraktno rješenje umiješao pojedinosti kodiranja, dva koraka prerano. Problemi jezika i kodiranja nisu isto što početni problem koji pokušavaš riješiti tim programom te ih i drži odvojenima.
Sad, ja piskaram šta mi padne na pamet a ti radi šta tebi padne na pamet. :)
Avatar
Postovi: 1907
Postovi: 1907
Pridružen/a: 16 tra 2011, 08:34
Lokacija: i grupa Film
Podijelio/la zahvalu: 45 puta
Primio/la zahvalu: 342 puta
Spol: M
OS: Mint 10 LXDE itd...
Ok, dio sa višestrukim opaljivanjem kubure u glavu je zabolio :P

Ali shvaćam što hoćeš reći. Očekivao sam da mi je pristup ovome u samom startu bio pogrešan, ali nisam znao bolje obraditi problem pa sam odlučio nastaviti smjerom kojim sam i krenuo pa da vidim dokle će me to dovesti. Dovelo me do kubure u glavu haha

Za 5 dana učenja sam zadovoljan njome. Sad idemo dalje.

Dosta me zaintrigirao ovaj dio o odvojenom fajlu sa podacima. To ću se večeras pozabaviti sa istraživanjem.

Pošto je skup svih tvojih misli bio (barem ja to tako shvatih), da je moj najveći problem bio pristupu problematici ovog pothvata. Poradit ću malo više da dobijem kvalitetniji način pristupanja problemu i rješavanju istoga. Čeka me puno posla kao što sam i očekivao :)

Tvoj zadnji odlomak me posebno zaintrigirao. Možeš li mi malo pojasniti na što si mislio da sam prerano umješao kodiranje u apstraktno rješenje ?
Postovi: 42
Postovi: 42
Pridružen/a: 08 svi 2014, 02:17
Podijelio/la zahvalu: 2 puta
Primio/la zahvalu: 2 puta
Spol: M
OS: Ubuntu 14.04
Moram i ja prokomentirati. Ne vidim zašto si išao na opciju korištenja if naredbe pri odgovorima, kad je case daleko bolja opcija. Pogledaj malo kod koji sam ti već napisao. Kod if naredbe odgovor ti mora biti da, dakle sve što nije da (dda, daa i slično) podložno je grešci. Koristeći case naredbu svejedno je hoćeš li napisat dddddddda, da, daaaaaaaaa i slično, bitno je samo da počinje slovom d. Uostalom, možeš dodati i odgovore koji počinju slovom a (npr. ad, aad, add) da su također potvrsni (ako se tko nabrzaka za*ebe napisat da), ali pri odgovoru koji počinje slovom a upitaš korisnika dali je htio prihvatiti ili odbiti ponudu. Razmisli malo o tome. ;)
Arch Linux Install Script (BIG update, BETA verzija)
Vl@do je napisao/la:Arch imaš upravo zato da uštediš na vremenu. Nemaš nikakvih problema s instalacijama, kompajliranjem i ostalim. Imaš jednostavno funkcionalan i stabilan, uvijek najsvježiji OS, a osim toga je sexy i cool do neba.

I've seen some idiots back in my time, but you man... you're special!
Avatar
Moderator
Postovi: 6768
Moderator
Postovi: 6768
Pridružen/a: 13 stu 2010, 21:12
Lokacija: /hrvatska/solin/.../4
Podijelio/la zahvalu: 356 puta
Primio/la zahvalu: 418 puta
Spol: M
OS: Arch Linux KDE
Mislio sam na ovo iz tvog prvog posta.
Razmišljaš li tako u varijablama i kad praviš čaj?

rkaracic je napisao/la:Želim napraviti skriptu koja će za svaki dio pitati korisnika što on želi.
Ideja je ovakva :
Za svako pitanje koje postavim korisniku, njegov bi odgovor (da ili ne) spremio u varijablu (0 ili 1). Mene zanima, da li je moguće napraviti polje koje se sastoji od varijabli ?
Znači, recimo imam rafal od 10 pitanja i tih 10 pitanja utječe na 10 varijabli (mijenja im stanja u 0 ili 1 ovisno o odgovoru) i onda nakon što prođe to pitanje i varijabla se promijeni, da se meni automatski u tom polju promjeni na toj poziciji vrijednost.
Zamislio sam si tako rješenje jer bi onda bilo full jednostavno izvrtiti pitanja i onda nakon pitanja tek pokrenuti instalacije i deinstalacije programa (zavrtim to polje u for petlji i uz pomoć još jednog if-a gledam da li se program treba instalirati ili ne treba ovisno o odgovoru).
Avatar
Postovi: 1907
Postovi: 1907
Pridružen/a: 16 tra 2011, 08:34
Lokacija: i grupa Film
Podijelio/la zahvalu: 45 puta
Primio/la zahvalu: 342 puta
Spol: M
OS: Mint 10 LXDE itd...
@Coolech

Nemam dobar odgovor. Nekako mi se više valjda if sviđao. Zar nebi u if mogao staviti if ( odgovor == "d*" ) i da onda prolaze svi odgovori koji počinju sa d ? Ili ako bih stavio if ( odgovor == "*d*" ); da li bi onda prolazili svi odgovori koji sadrže u sebi "d" ?

@jurastublic

Ahaa, sad kužim na što misliš. Čisto da nebi bilo zabune, kad sam ovdje postao tu prvu poruku, ja sam već počeo s laganim radom na skripti (u glavi sam si koncept kako bi to išlo i imao sam zamišljeno kako želim da funkcionira i izgleda), ali to ne znači da nisam u startu krenuo tako razmišljati (možda sam pretvrdoglav da si to priznam).

Malo ću još pokušati taj početni koncept doraditi i bolje to implementirati. Javljat ću se ja još ovdje da vidim da li su mi dijelovi koda za kuburu ili za palac gore ;)
Postovi: 42
Postovi: 42
Pridružen/a: 08 svi 2014, 02:17
Podijelio/la zahvalu: 2 puta
Primio/la zahvalu: 2 puta
Spol: M
OS: Ubuntu 14.04
rkaracic je napisao/la:@Coolech

rkaracic je napisao/la:@Coolech

rkaracic je napisao/la:@Coolech

CooleEch

Slovokradice! :hihi
rkaracic je napisao/la:Nemam dobar odgovor. Nekako mi se više valjda if sviđao. Zar nebi u if mogao staviti if ( odgovor == "d*" ) i da onda prolaze svi odgovori koji počinju sa d ? Ili ako bih stavio if ( odgovor == "*d*" ); da li bi onda prolazili svi odgovori koji sadrže u sebi "d" ?

Ne, ne možeš. Pogotovo ne s ovim "*d*", jer da i radi, odgovori da, možda, lud, udaren, smrdan i slični koji u sebi imaju slovo d, jednako bi radili. Provaj, uostalom. ;)
Arch Linux Install Script (BIG update, BETA verzija)
Vl@do je napisao/la:Arch imaš upravo zato da uštediš na vremenu. Nemaš nikakvih problema s instalacijama, kompajliranjem i ostalim. Imaš jednostavno funkcionalan i stabilan, uvijek najsvježiji OS, a osim toga je sexy i cool do neba.

I've seen some idiots back in my time, but you man... you're special!
Avatar
Moderator
Postovi: 6768
Moderator
Postovi: 6768
Pridružen/a: 13 stu 2010, 21:12
Lokacija: /hrvatska/solin/.../4
Podijelio/la zahvalu: 356 puta
Primio/la zahvalu: 418 puta
Spol: M
OS: Arch Linux KDE

Na mreži
Trenutno korisnika/ca: / i 2 gostiju.