Hjälp med skript som kopierar eller mergar textfiler... [LÖST]

Här diskuteras programmering och utveckling
Användarvisningsbild
HenrikAn
Inlägg: 1436
Blev medlem: 17 jun 2006, 21:39
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Hägersten

Hjälp med skript som kopierar eller mergar textfiler... [LÖST]

Inlägg av HenrikAn »

Jag har fixat en xml-fil med svenska internetradiokanaler för Amarok.
För att undvika att någon raderar sin egna fil som kanske redan innehåller några mödosamt inlagda kanaler funderar jag på att skicka med ett skript som lägger till kanalerna...

Packa upp bifogad tarboll för att se hur jag tänkt mig det hela...
Skriptet kan kanske se ut något i den här stilen:

Kod: Markera allt

#!/bin/sh
#
#Script to install swedish internet radio channels for Amarok
#
#
f_pause()
{
    key=""
    echo -n "Tryck Enter för att avsluta."
    stty -icanon
    key=`dd count=1 2>/dev/null`
    stty icanon
}

if [ -s $HOME/.kde/share/apps/amarok/streambrowser_save.xml ]
then
    cp $HOME/.kde/share/apps/amarok/streambrowser_save.xml $HOME/.kde/share/apps/amarok/streambrowser_save.xml.$(date +'%F')
        echo "En backup av den existerande filen har gjorts och återfinns här: $HOME/.kde/share/apps/amarok/streambrowser_save.xml.$(date +'%F')\n"
	echo "Lägger till de svenska internetradiokanalerna i den befintliga filen"
	sed '$d' $HOME/.kde/share/apps/amarok/streambrowser_save.xml.$(date +'%F') > $HOME/.kde/share/apps/amarok/streambrowser_save.xml
	sed '1d' streambrowser_save.xml |sed '1d'| cat >> $HOME/.kde/share/apps/amarok/streambrowser_save.xml
else
    echo "Ingen fil hittades, kopierar...\n"
    cp streambrowser_save.xml $HOME/.kde/share/apps/amarok/.
fi

echo "Nu ska allt vara klart.\n"
echo "Starta Amarok och titta så allt ser okey ut."
echo "Skulle något vara fel tar du bort streambrowser_save.xml och döper om backuppen streambrowser_save.xml.$(date +'%F') till samma namn.\n\n"

f_pause
echo "..."
sleep 2

exit 0
Vad kan gå fel?
Ska jag kontrollera fler saker?
Är det dumt att ha "fort och fel" som ordspråk?
Senast redigerad av 1 DrMegahertz, redigerad totalt 20 gånger.
The Net interprets censorship as damage and routes around it.
- John Gilmore
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Hjälp med skript som kopierar eller mergar textfiler...

Inlägg av Konservburk »

HenrikAn skrev: Packa upp bifogad tarboll för att se hur jag tänkt mig det hela...
Var hittar jag "bifogad tarboll"?
Användarvisningsbild
HenrikAn
Inlägg: 1436
Blev medlem: 17 jun 2006, 21:39
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Hägersten

SV: Hjälp med skript som kopierar eller mergar textfiler...

Inlägg av HenrikAn »

Räcker det inte att jag TÄNKER bifoga en fil. Ska det vara så petigt!? :)
Bilagor
swe-radio_amarok.tar.gz
(1.68 KiB) Nerladdad 281 gånger
The Net interprets censorship as damage and routes around it.
- John Gilmore
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Hjälp med skript som kopierar eller mergar textfiler...

Inlägg av Konservburk »

HenrikAn skrev: Vad kan gå fel?
Ska jag kontrollera fler saker?
* Din tarboll är en tarbomb: http://en.wikipedia.org/wiki/Tarbomb

* Använd variabler.  Det kan till och med hända att klockan slår om och att
"$(date +'%F')" helt plötsligt ger ett annat värde halvägs genom skriptet.

* Du borde se till att det verkligen finns en ~/.kde

* Använd mv istället för cp när du skapar backup-filen.  Då behålls tstamp,
vilket är bra om man vill veta när man senast ändrade på filen själv.

* Var försiktig med echo "\n", speciellt om du använder /bin/sh.  Om t.ex.
/bin/sh pekar på /bin/bash så kommer "\n" att skrivas ut som det är och
inte ge någon nyrad.  Det är bättre att använda ett extra echo om man
vill ha en extra nyrad.

* Vad är tanken med din andra sed-rad?  Om du vill ta bort de två första
raderna i filen så är det bättre att köra sed '1,2d'.

* Det kommer ett meddelande om hur man återställer backup-filen även
när ingen backup-fil finns.


Förbättringsförslag:

Kod: Markera allt

#!/bin/sh

DIR=~/.kde/share/apps/amarok
SOURCE_FILE=streambrowser_save.xml
FILE="$DIR/$SOURCE_FILE"

test -d "$DIR" || mkdir -p "$DIR" || exit

if test -s "$FILE"
then
   BACKUP_FILE="$FILE.$(date +'%F')"
   mv -i "$FILE" "$BACKUP_FILE"
   echo "En backup av den existerande filen har gjorts och återfinns här: $BACKUP_FILE"
   echo
   echo "Lägger till de svenska internetradiokanalerna i den befintliga filen"
   sed '$d' "$BACKUP_FILE" > "$FILE"
   sed '1,2d' "$SOURCE_FILE" >> "$FILE"
else
   echo "Ingen fil hittades, kopierar..."
   echo
   cp "$SOURCE_FILE" "$FILE"
fi

echo "Nu ska allt vara klart."
echo
echo "Starta Amarok och titta så allt ser okey ut."

if test -e "$BACKUP_FILE"
   echo "Skulle något vara fel tar du bort $FILE och döper om backuppen $BACKUP_FILE till samma namn."
   echo
   echo
fi
Användarvisningsbild
HenrikAn
Inlägg: 1436
Blev medlem: 17 jun 2006, 21:39
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Hägersten

SV: Hjälp med skript som kopierar eller mergar textfiler...

Inlägg av HenrikAn »

Tack!
Med så pedagogisk hjälp kanske det till och med kan bli ordning på mig! :)
(Och min konstiga sed-rad berodde på att jag i min referens litteratur google inte lyckades hitta vad jag letade efter... 1,2d  ::))
The Net interprets censorship as damage and routes around it.
- John Gilmore
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

SV: Hjälp med skript som kopierar eller mergar textfiler...

Inlägg av mcNisse »

* Använd mv istället för cp när du skapar backup-filen.  Då behålls tstamp,
vilket är bra om man vill veta när man senast ändrade på filen själv.
Du kan använda cp -p för att behålla tidsstämplar.
KDE 4.5 SC är ute i det fria!!! Tjoho

Stagnation is good for nobody - after all if you don't progress you end up with gnome
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Hjälp med skript som kopierar eller mergar textfiler...

Inlägg av Konservburk »

mcNisse skrev:
* Använd mv istället för cp när du skapar backup-filen.  Då behålls tstamp,
vilket är bra om man vill veta när man senast ändrade på filen själv.
Du kan använda cp -p för att behålla tidsstämplar.
Såklart du kan, men då kommer du skriva hela filen en extra gång.
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

SV: Hjälp med skript som kopierar eller mergar textfiler...

Inlägg av mcNisse »

Såklart du kan, men då kommer du skriva hela filen en extra gång.
Det beror väl på om de ligger på samma filsystem. Men visst jag kan se fördelar med bägge varianterna.
KDE 4.5 SC är ute i det fria!!! Tjoho

Stagnation is good for nobody - after all if you don't progress you end up with gnome
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Hjälp med skript som kopierar eller mergar textfiler...

Inlägg av Konservburk »

mcNisse skrev:
Såklart du kan, men då kommer du skriva hela filen en extra gång.
Det beror väl på om de ligger på samma filsystem.
Samma katalog brukar betyda samma filsystem :)
Skriv svar

Återgå till "Programmering och webbdesign"