Sida 1 av 2

bash script?

Postat: 03 jan 2008, 22:30
av Lulle
Tjenare!
Jag håller på att göra ett bash script och jag undrar hur man skriver för att få scriptet att flytta/kopiera en fil från en mapp till en annan?

SV: bash script?

Postat: 03 jan 2008, 22:37
av Rasmus
cp /från/mapp/ett /till/mapp/två <-kopiera, Läggtill flaggan -R för att flytta mappar.
mv /från/mapp/ett /till/mapp/två <-flytta

SV: bash script?

Postat: 03 jan 2008, 22:57
av Lulle
Rasmus skrev: cp /från/mapp/ett /till/mapp/två <-kopiera, Läggtill flaggan -R för att flytta mappar.
mv /från/mapp/ett /till/mapp/två <-flytta
Jag skrev:
#!/bin/bash
mkdir /home/robin/scripts3
cp /home/robin/tinicorp/files/ /home/robin/scripts3/
exit


men den flyttar inte filerna från files mappen till min scripts3 mapp.

Vad skrev jag för fel?

Edit:
Hur gör jag så att scriptet känner av vad användarmappen heter?
Jag hade tänkt att lägga upp scriptet för dom som är intresserade av det.
Men då kna ju inte sökvägen vara text: /home/robin/tinicorp/.
Så hur gör jag så att scriptet känner av vad användaren heter?

SV: bash script?

Postat: 03 jan 2008, 23:25
av maths57
Det ser inte ut som om du  kopierar några filer. Jag är inte så hemma på det här, men jag skulle försöka så här.

Kod: Markera allt

#!/bin/bash
mkdir /home/robin/script3
cp /home/robin/tinicorp/files/* /home/robin/scripts3

SV: bash script?

Postat: 03 jan 2008, 23:55
av Lulle
maths57 skrev: Det ser inte ut som om du  kopierar några filer. Jag är inte så hemma på det här, men jag skulle försöka så här.

Kod: Markera allt

#!/bin/bash
mkdir /home/robin/script3
cp /home/robin/tinicorp/files/* /home/robin/scripts3
Det fungerade galant :) Tackar.

Är det någon som vet vad jag ska skriva för att sessions rutan ska komma upp via bash?
Hur gör man så att bash skapar samt skriver en till filen en gång?
Det jag tänkte är att slänga in följande som ni kan hitta på denna länk:
http://ubuntu-se.org/smf/index.php/topic,3694.0.html
så det blir automatiskt i mitt script.

Tanken är att jag ska slippa göra om allt dom gånger jag installerar om datorn eller installerar ubuntu åt någon polare.
Min start .sh fil länkar till dom andra .sh filarna och ser ut på detta sätt (ser ni några problem med den?):

Kod: Markera allt

#!/bin/bash
gedit ~/tinicorp/txt/start
~/tinicorp/scripts/files.sh
gedit ~/tinicorp/txt/host
sudo gedit /etc/hosts
gedit ~/tinicorp/txt/gstreamer
gstreamer-properties
~/tinicorp/scripts/remove.sh
~/tinicorp/scripts/install.sh
~/tinicorp/scripts/flash9.sh
~/tinicorp/scripts/java.sh
gedit ~/tinicorp/txt/sources
sudo gedit /etc/apt/sources.list
~/tinicorp/scripts/update.sh
gedit ~/tinicorp/txt/prelink
sudo gedit /etc/default/prelink
~/tinicorp/scripts/clean.sh
gedit ~/tinicorp/txt/end
~/tinicorp/scripts/reboot.sh
exit

SV: bash script?

Postat: 04 jan 2008, 00:29
av maths57
Sessionsrutan är programmet gnome-session-properties, så du får ange det.

För att skriva till en fil använder du > tecknet. Så här

Kod: Markera allt

echo Hej, världen! > hej.txt
Titta sedan i filen med följande

Kod: Markera allt

cat hej.txt
Vill du lägga till mer i slutet på filen, då skriver du dubbla > tecken.

Kod: Markera allt

echo Hej, igen >> hej.txt

SV: bash script?

Postat: 04 jan 2008, 09:18
av Lulle
Går det inte att göra så att bash scriptet lägger till nya sessioner som ska starta varje gång datorn startar?
Kan man inte göra så att ett script körs var 4h te.x?


Edit1: Kan man göra så att scriptet ändrar något på te.x 34 raden i ett .txt dokument?

Edit2:
Hur kör man "Språkstöds" update i terminalen?

När man kör sudo apt-get update/upgrade så är det ju för uppdateringar, men inte för språkstöd

SV: bash script?

Postat: 04 jan 2008, 09:36
av Lulle
maths57 skrev: Sessionsrutan är programmet gnome-session-properties, så du får ange det.

För att skriva till en fil använder du > tecknet. Så här

Kod: Markera allt

echo Hej, världen! > hej.txt
Titta sedan i filen med följande

Kod: Markera allt

cat hej.txt
Vill du lägga till mer i slutet på filen, då skriver du dubbla > tecken.

Kod: Markera allt

echo Hej, igen >> hej.txt
hmm den där fungerade inte så bra för mig =/
Jag ska skriva följande till en ny fil, och dom där commandona fungerar inte för mig då :s

Kod: Markera allt

#!/bin/bash
#
# nautilus-mount-iso

gksudo -u root -k /bin/echo "got r00t?"

sudo mkdir /media/"$*"

if sudo mount -o loop -t iso9660 "$*" /media/"$*"
then
        if zenity --question --title "ISO Mounter" --text "$* Successfully Mounted.
        
        Open Volume?"
        then
                nautilus /media/"$*" --no-desktop
        fi
        exit 0
else
        sudo rmdir /media/"$*"
        zenity --error --title "ISO Mounter" --text "Cannot mount $*!"
        exit 1
fi

SV: bash script?

Postat: 04 jan 2008, 10:49
av Konservburk
Lulle skrev: Hur gör jag så att scriptet känner av vad användarmappen heter?
Jag hade tänkt att lägga upp scriptet för dom som är intresserade av det.
Men då kna ju inte sökvägen vara text: /home/robin/tinicorp/.
Så hur gör jag så att scriptet känner av vad användaren heter?
Byt ut alla /home/robin/ mot ~/ så blir det bra.

Lulle skrev:
maths57 skrev: Det ser inte ut som om du  kopierar några filer. Jag är inte så hemma på det här, men jag skulle försöka så här.

Kod: Markera allt

#!/bin/bash
mkdir /home/robin/script3
cp /home/robin/tinicorp/files/* /home/robin/scripts3
Det fungerade galant :) Tackar.
Tänk på att det där inte kopierar dålda filer som börjar med en punkt.

Lulle skrev: Går det inte att göra så att bash scriptet lägger till nya sessioner som ska starta varje gång datorn startar?
Kan man inte göra så att ett script körs var 4h te.x?
Ja, det kallas cronjob.

Lulle skrev: Edit1: Kan man göra så att scriptet ändrar något på te.x 34 raden i ett .txt dokument?
T.ex...

Kod: Markera allt

sed -i '34s/från/till/' fil.txt
Lulle skrev: Jag ska skriva följande till en ny fil, och dom där commandona fungerar inte för mig då :s
Jag tror du vill använda något som kallas "here-document" ...

Kod: Markera allt

cat <<\EOF >ny_fil.txt
#!/bin/bash
#
# nautilus-mount-iso

gksudo -u root -k /bin/echo "got r00t?"

sudo mkdir /media/"$*"

if sudo mount -o loop -t iso9660 "$*" /media/"$*"
then
        if zenity --question --title "ISO Mounter" --text "$* Successfully Mounted.
        
        Open Volume?"
        then
                nautilus /media/"$*" --no-desktop
        fi
        exit 0
else
        sudo rmdir /media/"$*"
        zenity --error --title "ISO Mounter" --text "Cannot mount $*!"
        exit 1
fi
EOF

SV: bash script?

Postat: 04 jan 2008, 11:10
av Lulle
Byt ut alla /home/robin/ mot ~/ så blir det bra.
Fungerade klockrennt tackar :)



Ja, det kallas cronjob.
Kan du förklara hur cronjob fungerar?

T.ex...

Kod: Markera allt

sed -i '34s/från/till/' fil.txt
Har du lust att förklara lite mer hur detta fungerar?
Jag tror du vill använda något som kallas "here-document" ...

Kod: Markera allt

cat <<\EOF >ny_fil.txt
#!/bin/bash
#
# nautilus-mount-iso

gksudo -u root -k /bin/echo "got r00t?"

sudo mkdir /media/"$*"

if sudo mount -o loop -t iso9660 "$*" /media/"$*"
then
        if zenity --question --title "ISO Mounter" --text "$* Successfully Mounted.
        
        Open Volume?"
        then
                nautilus /media/"$*" --no-desktop
        fi
        exit 0
else
        sudo rmdir /media/"$*"
        zenity --error --title "ISO Mounter" --text "Cannot mount $*!"
        exit 1
fi
EOF
Fungerade klcokrent tackar :)

SV: bash script?

Postat: 04 jan 2008, 13:32
av Lulle
Följande fattas i mitt script sedan postar jag det:
1. Ta bort en rad ur ett dokument/fil.
2. lägga till en rad i ett dokument/fil.
(Det är i source.list jag ska ta bort och ändra en rad.
Sedan ska jag göra lika i hosts filen.)


3. Lägga till något i sessioner via terminalen.
4. uppdatera "Språkstöd" och installera nya om det behövs via terminalen

SV: bash script?

Postat: 04 jan 2008, 14:34
av Konservburk
Lulle skrev: Kan du förklara hur cronjob fungerar?
Jag antar att du vill veta hur du använder det och inte hur det fungerar.

Börja med att köra:

Kod: Markera allt

crontab -e
...eller om du vill välja någon speciell texteditor:

Kod: Markera allt

EDITOR=nano crontab -e
Skriv sedan en rad (glöm inte att spara):

Kod: Markera allt

* * * * *  /usr/local/bin/mitt_skript.sh
Då kommer /usr/local/bin/mitt_skript.sh att köras varje minut.

Så här blir det om du t.ex. vill köra skriptet 7 och 19 minuter över var
fjärde timme mellan den 3:e och 8:e februari:

Kod: Markera allt

7,19 */4 3-8 2 *  /usr/local/bin/mitt_skript.sh
Det som gäller är:
minut(0-59) timme(0-23) dag(1-31) månad(1-12) veckodag(0-6,0=söndag)

Lulle skrev:

Kod: Markera allt

sed -i '34s/från/till/' fil.txt
Har du lust att förklara lite mer hur detta fungerar?
Lulle skrev: Följande fattas i mitt script sedan postar jag det:
1. Ta bort en rad ur ett dokument/fil.
2. lägga till en rad i ett dokument/fil.
Leta reda på en nybörjarguide om sed.

Du tar bort rad 12 med:

Kod: Markera allt

sed -i '12d' fil.txt
Lägg till NÅGOT innan rad 12:

Kod: Markera allt

sed -i '12iNÅGOT' fil.txt
Lägg till NÅGOT efter rad 12:

Kod: Markera allt

sed -i '12aNÅGOT' fil.txt
Ersätt rad 12 med NÅGOT:

Kod: Markera allt

sed -i '12cNÅGOT' fil.txt
Ersätt NÅGOT på rad 12 med NÅGOT ANNAT:

Kod: Markera allt

sed -i '12s/NÅGOT/NÅGOT ANNAT/' fil.txt
Om du struntar i siffran i början så gäller det alla rader i filen.  Om du
byter ut siffran mot ett $ så är det den sista raden.  Det kan även skriva
t.ex. 5,9 för rad 5 till 9 eller 1~2 för alla udda rader.

SV: bash script?

Postat: 04 jan 2008, 17:40
av Lulle
Har 2 till saker som jag behöver hjälp med och det är:

1. Lägga till något i sessioner via terminalen.
2. uppdatera "Språkstöd" och installera nya om det behövs via terminalen

SV: bash script?

Postat: 04 jan 2008, 18:27
av Rasmus
Lulle skrev: Har 2 till saker som jag behöver hjälp med och det är:
2. uppdatera "Språkstöd" och installera nya om det behövs via terminalen

Kod: Markera allt

sudo apt-get install language-pack-sv language-pack-sv-base language-pack-gnome-sv language-pack-gnome-sv-base language-support-sv
Byt ut 'language-pack-gnome-sv' och 'language-pack-gnome-sv-base' mot 'language-pack-kde-sv' och 'language-pack-kde-sv-base' om du kör kde

SV: bash script?

Postat: 04 jan 2008, 18:46
av Lulle
Rasmus skrev:
Lulle skrev: Har 2 till saker som jag behöver hjälp med och det är:
2. uppdatera "Språkstöd" och installera nya om det behövs via terminalen

Kod: Markera allt

sudo apt-get install language-pack-sv language-pack-sv-base language-pack-gnome-sv language-pack-gnome-sv-base language-support-sv
Byt ut 'language-pack-gnome-sv' och 'language-pack-gnome-sv-base' mot 'language-pack-kde-sv' och 'language-pack-kde-sv-base' om du kör kde
Tackar!
Men nu kommer en pinsam fråga....
Jag kör Ubuntu 7.10 jag antar att det är Gnome eller?

Edit:
Ingen som vet hur man lägger till saker i sessioner med terminalen?

SV: bash script?

Postat: 04 jan 2008, 22:13
av Rasmus
Lulle skrev: Men nu kommer en pinsam fråga....
Jag kör Ubuntu 7.10 jag antar att det är Gnome eller?
Ubuntu = gnome, Kubuntu = kde, Xubuntu = xfce ;)
Annars kan du ju kolla med:

Kod: Markera allt

echo $GDMSESSION
EDIT:
Såg nu att:

Kod: Markera allt

sudo apt-get install language-pack-$GDMSESSION-sv language-pack-$GDMSESSION-sv-base
Funkade :P dock bara om man kör kde eller gnome.

Lulle skrev: Ingen som vet hur man lägger till saker i sessioner med terminalen?
Tyvärr inte, menar du så program "autostartas"?

SV: bash script?

Postat: 05 jan 2008, 00:17
av Lulle
Lulle skrev: Ingen som vet hur man lägger till saker i sessioner med terminalen?
Tyvärr inte, menar du så program "autostartas"?

[/quote]

Jupp menar så att ett program läggstill i autostart.

SV: bash script?

Postat: 05 jan 2008, 12:35
av Rasmus
Jag lånar tråden lite.
  • Jag undrar hur man kan ta output från zenity --entry och sparar det i en varbal?(så jag senare kan nå det med $INPUT)
  • Räkna med bash, går det? i python kunda jag skriva 5+5 för att få ut 10, jag kunde även skriva 'hej'*7 för att skriva hej 7
    gånger. Hur gör man det i bash?
  • Vad var kommandot så man kan se vart i systemet man är?
  • När man kör chmod på en fil blir man tvungen att skriva rättigheterna med siffror, fins det en bra manual/guide som tar upp alla möjliga rättigheter tex. -wx, -w- och --x?

SV: bash script?

Postat: 05 jan 2008, 13:11
av KiviE
Rasmus skrev: Jag lånar tråden lite.
  • Jag undrar hur man kan ta output från zenity --entry och sparar det i en varbal?(så jag senare kan nå det med $INPUT)
  • Räkna med bash, går det? i python kunda jag skriva 5+5 för att få ut 10, jag kunde även skriva 'hej'*7 för att skriva hej 7
    gånger. Hur gör man det i bash?
  • Vad var kommandot så man kan se vart i systemet man är?
  • När man kör chmod på en fil blir man tvungen att skriva rättigheterna med siffror, fins det en bra manual/guide som tar upp alla möjliga rättigheter tex. -wx, -w- och --x?
Ett skript för att räkna 5+5 kan se ut så här

Kod: Markera allt

#!/bin/bash

let i=5+5

echo $i
Att skriva ut samma siffra X antal ggr kan se ut så här

Kod: Markera allt

#!/bin/bash
x=7

for i in `seq 1 $x`;
do
    echo $x
done
pwd visar var man är någonstans.

Ang. chmod
x = 1
w = 2
r = 4

Dessa kan man nu kombinera hur man vill. Tex 777 ger alla rättigheter att läsa, köra och läsa en fil. 333 ger alla rättigheter att köra och skriva till en fil. 744 ger bara ägaren till filen rätt att göra allt och de andra bara läs rättigheter.

Hoppas det klarnade lite iaf.

SV: bash script?

Postat: 05 jan 2008, 13:38
av Rasmus
KiviE skrev: [mycket text]
Tack.

Men for i in `seq 1 $x`; skriver på en ny rad, jag vill skriva dem på en rad, och vad jag förstog funkade den bara på siffror:

Kod: Markera allt

pajn@pajn-desktop:~$ x='hej'
pajn@pajn-desktop:~$ for i in `seq 1 $x`; do     echo $x; done
seq: felaktigt flyttalsargument: hej
Försök med "seq --help" för mer information.
Fixade även fråga ett, pwd gav mig ett nytt sätt att tänka :)