Linux

Kako napraviti scriptu u Linuxu?

BackboNet sub 1.4.2017 08:44

Ovisi koji OS imaš, ako imaš neki koji ima GUI:

1) pozicioniraš se gdje želiš da ti skripta stoji (Desktop/neki folder ...) -> desni klik -> new file -> utipkaš što trebaš -> "File -> Save as -> moja_skripta.sh/py/... ovisi u kojem jeziku si pisao skriptu" -> "ctrl+F5" i skripta se izvršava

 

Ako nemaš vizualni Desktop nego samo terminal na nekoj inačici Linuxa, moraš imati instaliran neki od editora tipa vi, nano, gedit (dosta inačica već ima predinstalirano neki od tih editora):

1) pozicioniraš se gdje želiš sa cd -> upišeš npr. nano ime_skripte.py/sh.. ili nešto drugo -> upišeš kod -> "ctrl+X" -> pita te želiš li save-at pa stisneš "yes" -> "pita te potvrdu imena skripte, stisneš "Enter"

 

i to ti je to, izašao si iz file-a, piozicioniran si gdje ti je skripta, pokretanje skripte ti je npr za python "python moja_skripta.py" i u terminalu ti se prikazuje output, ako želiš da ti se skripta vrti u pozadini opališ komandu "nohup python moja_skripta.py &" i skripta ti se vrti u pozadini a ti možeš dalje nastaviti raditi u istom terminalu ... "ps -ef" je naredba za provjeriti aktivne procese i ako želiš provjeriti da li tvoja skripta radi možeš je grep-ati (pretražiti ispis po ključnoj riječi "ps -ef | grep moja_skripta.py")

 

Bla, bla..satra sam te sritno! Za sve dodatne informacije stackoverflow najbrže

Airlive96 sub 1.4.2017 09:20
bocasa kaže...

Otvori neki text editor, gedit, vi, sta god. Preporučujem da radiš u terminalu, dakle:

 

vi skripta.sh

 

#!/bin/bash
echo 'Ovo je naredba 1'

 

 

Moraš pokrenuti naredbu chmod +x skripta.sh da bi postala executable (izvršna? :D) te je nakon toga možeš pokrenuti.

 

Da ne idem u detalje, izvoli koristan link pa prouči: https://linuxconfig.org/bash-scripting-tutorial

 E kako se sprema ta scripta.sh kada ju napravim ispisem sve sta sam htjeo i neznam kako spremiti ?

Djuro von Prekoplotovich sub 1.4.2017 14:36
Airlive96 kaže...
bocasa kaže...

Otvori neki text editor, gedit, vi, sta god. Preporučujem da radiš u terminalu, dakle:

 

vi skripta.sh

 

#!/bin/bash
echo 'Ovo je naredba 1'

 

 

Moraš pokrenuti naredbu chmod +x skripta.sh da bi postala executable (izvršna? :D) te je nakon toga možeš pokrenuti.

 

Da ne idem u detalje, izvoli koristan link pa prouči: https://linuxconfig.org/bash-scripting-tutorial

 E kako se sprema ta scripta.sh kada ju napravim ispisem sve sta sam htjeo i neznam kako spremiti ?

 

Ne slušaj linuksaše, oni ti vole tu svoju konzolu, jer si onda izgledaju kao nekakvi hakeri.

 

Ako koristiš neku distribuciju baziranu na Gnomeu, tada koristi "gedit". Obično u start menijima bude negdje pod tim imenom ili pod "Text editor".

Ako koristiš KDE, tada će to biti "Kate".

Koristiš ih kao i bilo koji drugi normalni tekstualni editor napravljen u zadnjih 25 godina na bilo kojem drugom normalnom operativnom sustavu.

 

"vi" je alat za fanove pamćenja bespotrebnih i kompliciranih pravila.

Iz editora izlaziš tako da utipkaš :q

Da, to je prva stvar koja mi pada na pamet dok koristim tekstualni editor u 2017. godini.

 

Pokretanje skripte iz grafičkog sučelja ovisiti će o distribuciji koju koristiš i tipu "shella", jer tu je nekoliko različitih stvari u igri.

No, uvijek možeš pokušati ili dvoklik, ili ako to ne radi - desni klik, pa provjeri ima li negdje opcija "Run in terminal".

Pošto nećeš pokretati iz konzole, tada možeš na kraj skripte staviti komandu koja će pauzirati izvršavanje dok ne pritisneš neku tipku.

Tako ćeš moći vidjeti rezultat izvršavanja i je li nešto otišlo kvragu.

 

read -p "Pritisni bilo koju tipku za kraj..." biloKojaTipka

 

Ako zaglaviš, imaš "Linux pitanja i odgovori" temu, to prati više ljudi.

peroko ned 2.4.2017 13:40

Na edxu ima besplatan tečaj za osnove linuxa LFS101 koji preporučam ljudima koji žele uči dublje u Linux, dolje citiram jedan dio vezan za za kreiranje bash skripti.

 

Let's write a simple bash script that displays a one line message on the screen. Either type

$ cat > hello.sh
  #!/bin/bash
  echo "Hello Linux Foundation Student"

and press ENTER and CTRL-D to save the file, or just create hello.sh in your favorite text editor. Then, type chmod +x hello.sh to make the file executable by all users.

You can then run the script by  typing ./hello.sh or by doing:

$ bash hello.sh
  Hello Linux Foundation Student

Note if you use the second form, you do not have to make the file executable.

crazywarrior čet 22.6.2017 20:50

Pozdrav forumaši, zezam se sa jednom skriptom već satima i trebam pomoć.
Napravio sam malu skriptu koja restarta GUI od OS-a, Konkretno sadržaj skripte (bez putanje bash interpretera) je  systemctl restart lighdm. Skipta radi točno ono što i treba raditi kad ju pokrećem u terminalu sa sudo narebom (sudo ./pokretanje.sh). Ono što ja želim jest da se skipta pokreće automatski kod logina. Premjestio sam tu skriptu u svoj korisnički direktorij (~), i u datoteci .profile na putanji ~/.profile sam na kraju dodao  ./pokretanje.sh. Naravno čijela stvar nije radila jer da bi se systemctl pokrenuo treba ga pokrenuti sa naredbom sudo.  E sad, moje pitanje je kako to napraviti. Ako u sadržaj skripte stavim sudo systemctl restart light, kod pokretanja mi se pojavi crni ekran sa bijelim kursorom u gornjem lijevom uglu (treperi). Ista stvar se događa ako u datoteci .profile umjesto .pokretanje.sh stavim sudo ~/pokretanje.sh (ili sudo /home/pi/pokretanje.sh). Ako i u .profile i u skipti koristim sudo, rezultat je opet isti. Ovo mi izgleda kao se skripta nikako nemože dobiti root ovasti da se pokrene i zato se pojavljuje taj crni ekran s bijelim kursorom. U čemu je točno problem, ne znam.

 

Inače, ovo koristim na raspberrry pi-u na Debianu jer imam instaliran emulationstation (RetroPie) "na" tom OS-u. GUI i emulationstation nemogu u isto vrijeme raditi. Zato je konfigurirano da se sustav boota u CLI, automatski se prijavi kao user i iz njega pokrećem GUI ili emulationstation. Ali to mi je počelo ići na  živce pa sam složio da pod menu bar>games imam ikonu naziva RetroPie i kad na nju kliknem GUI se zatvara i otvara se emulationstation, a kad izađem iz emulation stationa opet se pokreće GUI.

 

 

[Desktop Entry]
Type=Application
Name=RetroPie
Comment=Retro video game emulators
Exec=sudo su -c "systemctl stop lightdm ; ttyecho -n /dev/tty1 \"emulationstation ; sudo systemctl start lightdm\""
Icon=/home/pi/Downloads/retropie_logo.png
Terminal=false
Categories=Application;Game;

 

Jedino što još želim je da mi se kod logina automatski pokrene skripta koja će pokrenuti GUI (mora ga zatvoriti jer se na kratko pokrene prije nego se pojavi terminal i opet pokrenuti pa ga zato resetiram) da nemoram to tipkati u terminal. Stvar bi naizgled bila jednostavna sa odabirom automatskog bootanja u Desktop nacin rada, ali kad se to odabere, cijela ova stvar sa pokretanje RetroPie-a iz menu bara ne funkcionira (tj. pojavi se isti efekt kao kad GUI pokrećem pomoću naredbe startx, međutim kad ga pokrećem sa sudo systemctl (re)start lighdm stvar funckionira).

 

Update: Problem riješen, ali ne sa skriptom jer ju nisam uspio natjerati da ispravno radi kod prijave korisnika u OS. Dakle, kod logina u Raspbian prvo se  na trenutak pokretnuo GUI koji je u TTY7, a zatim se prebacilo na TTY1. Da se to prebacivanje spriječi trebalo je editirati fajl na lokaciji /etc/init.d/asplashscreen na način da se tekst "fbi -T 2" zamijeni s "fbi -T 1". Znam da rješenje ovog problema ne spada pod ovu temu, ali možda će nekome biti od pomoći.