Debian, egen funktion[LÖST]
Debian, egen funktion[LÖST]
Hej!
Håller på och lär oss i skolan Debian 4.xx (osäker).
Men iaf vi gör i CLI gränssnittet och jag skulle nu vilja göra min egna funktion.
Har skapat tre mappar delat, backup och script
I script mappen har jag ett script som förvandlar allt i delat till en tar fil i backup
För tillfället skriver jag "sh /script/backup" för att köra igång det (om nått är dåligt säg till). Men iaf så skulle jag vilja att man bara behövde skriva t.ex "backup" finns det något bra sätt att göra det ? Kanske om man kunde modifiera scriptet lite så man kan skriva "backup /shared2" ifall man vill backa upp någon annan mapp.
Sänd mig gärna någon länk att läsa, har självklart sökt en hel del men ändå.
Tackar på förhand.
PS!
Kommer inom kort installera Ubuntu på min primära maskin.
Håller på och lär oss i skolan Debian 4.xx (osäker).
Men iaf vi gör i CLI gränssnittet och jag skulle nu vilja göra min egna funktion.
Har skapat tre mappar delat, backup och script
I script mappen har jag ett script som förvandlar allt i delat till en tar fil i backup
För tillfället skriver jag "sh /script/backup" för att köra igång det (om nått är dåligt säg till). Men iaf så skulle jag vilja att man bara behövde skriva t.ex "backup" finns det något bra sätt att göra det ? Kanske om man kunde modifiera scriptet lite så man kan skriva "backup /shared2" ifall man vill backa upp någon annan mapp.
Sänd mig gärna någon länk att läsa, har självklart sökt en hel del men ändå.
Tackar på förhand.
PS!
Kommer inom kort installera Ubuntu på min primära maskin.
Senast redigerad av 2 Raxor, redigerad totalt 18 gång.
Re: Debian, egen funktion
Se till att du har ~/bin i din PATH , och flytta scriptet dit, döp om det till "backup". Nu kan du köra "backup". För att kunna skicka argument till scriptet (backup minfinamapp) så lär du implementera det i det aktuella scriptet.
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
ǁ Q: Why is top posting so bad?
-
- Inlägg: 1269
- Blev medlem: 15 dec 2007, 03:20
- OS: Xubuntu
Re: Debian, egen funktion
Att skriva "sh /script/backup" är inte dåligt och det finns ett bra sätt att göra så du bara behöver skriva "backup". Det görs i två steg. Först lite bakgrund.Raxor skrev: För tillfället skriver jag "sh /script/backup" för att köra igång det (om nått är dåligt säg till). Men iaf så skulle jag vilja att man bara behövde skriva t.ex "backup" finns det något bra sätt att göra det ?
#!
En shell-script kan man starta med "sh filnamn" eller "bash filnamn", på samma sätt som ett python-script kan startas med "python filnamn" och ett perl-script med "perl filnamn". Genom att sätta scriptets filrättigheten till executable och lägga till en första rad i scriptet som börjar "#!" följt av pathen till sh, bash, python eller perl, så kan man starta scriptet med bara "filnamn". (wikipedia)
I ditt fall, lägg till "#!/bin/sh" först i backup-scriptet och gör den executable med
Kod: Markera allt
chmod a+x /script/backup
PATH
För att starta scriptet med "backup" i st f "/script/backup" så måste systemet veta i vilken katalog den ska leta efter script med det namnet. Den kan leta i flera kataloger och vilka kataloger den letar i anges av variabeln PATH (wikipedia).
Du kan titta vad som finns i PATH med
Kod: Markera allt
echo $PATH
Kod: Markera allt
PATH=$PATH:/script
Om du automatiskt vill ha /script i pathen nästa gång du loggar in, öppna filen ".profile" i din hemkatalog och lägg till samma kommando nånstans i den:
Kod: Markera allt
PATH=$PATH:/script
(När jag skriver "katalog" så menar jag det vanliga människor

EDIT: stavfel och highlight "vanliga människor"
Re: Debian, egen funktion
Tackar för alla svar!!!
Men kollade lite till på hur man lägger till argument, men fick det inte att fungera korrekt.
Förstod det som att $1 var första arg och $2 var andra men fungerade inte men ett test script med "echo $1"
Någon som vet hur jag skulle gjort?
Men kollade lite till på hur man lägger till argument, men fick det inte att fungera korrekt.
Förstod det som att $1 var första arg och $2 var andra men fungerade inte men ett test script med "echo $1"
Någon som vet hur jag skulle gjort?
- micke_nordin
- Inlägg: 1539
- Blev medlem: 21 aug 2008, 17:03
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Kontakt:
Re: Debian, egen funktion
Om du lägger detta i en fil som du t.ex. kallar test.shRaxor skrev:Tackar för alla svar!!!
Men kollade lite till på hur man lägger till argument, men fick det inte att fungera korrekt.
Förstod det som att $1 var första arg och $2 var andra men fungerade inte men ett test script med "echo $1"
Någon som vet hur jag skulle gjort?
Kod: Markera allt
#!/bin/bash
echo $1
Kod: Markera allt
test.sh blahonga
/Micke
Edit: Du måste också se till att test.sh är körbar genom chmod +x test.sh (som root)
Edit 2: Du behöver nog inte vara root eftersom du äger skriptet
Senast redigerad av 1 micke_nordin, redigerad totalt 17 gånger.

Re: Debian, egen funktion
Tackar!
Märkte dock att det fungerade även om man skippade din kod och fixade "exekverings-bit" på filen
En lite fråga. hur fungerar filändelser egentligen. Vad jag vet så har jag ingen på mitt script
Märkte dock att det fungerade även om man skippade din kod och fixade "exekverings-bit" på filen

En lite fråga. hur fungerar filändelser egentligen. Vad jag vet så har jag ingen på mitt script

-
- Inlägg: 1269
- Blev medlem: 15 dec 2007, 03:20
- OS: Xubuntu
Re: Debian, egen funktion
Om man ska hårddra det lite så kan man säga att, filändelser spelar ingen roll i Unix. Du kan kalla ditt script "backup", "backup.sh", "backup.mp3" eller "backup.doc", det spelar ingen roll. Märkligt men sant. Om det innehåller shell-instruktioner eller börjar med #!/bin/sh och är exekverbart så är det ett shell-script.Raxor skrev:Tackar!
En lite fråga. hur fungerar filändelser egentligen. Vad jag vet så har jag ingen på mitt script
(Egentligen borde du kunna döpa om dina .mp3-filer till .sh, men Audacious och Totem verkar fördummade av influenser från Microsoft, så de vägrar spela filerna. Rhythmbox och Vlc spelar dem i alla fall.)
Re: Debian, egen funktion
Nu kan du starta scriptet utan att skriva "sh". Du skrivar bara "/script/backup".
Kod: Markera allt
./script/backup
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
ǁ Q: Why is top posting so bad?
-
- Inlägg: 118
- Blev medlem: 07 jan 2007, 22:13
- OS: Debian
- Utgåva: 23.10 Mantic Minotaur
- Ort: Gävle
Re: Debian, egen funktion
Men för att vara säker att det fungerar för andra användare som inte har bash som inloggningsskal, så skall du ange #! (shebang även kallat) med angivet kommando först i filen. Annars kommer du att få "roliga" fel om någon kör med exempelvis tcsh som inloggningsskal. Prova gärnaRaxor skrev:Tackar!
Märkte dock att det fungerade även om man skippade din kod och fixade "exekverings-bit" på filen
En lite fråga. hur fungerar filändelser egentligen. Vad jag vet så har jag ingen på mitt script
Kod: Markera allt
#!/bin/sh -v
För att se effekten, så kan du prova med
Kod: Markera allt
tchs ./script/backup
Re: Debian, egen funktion[LÖST]
Normalt är väl att lägga sina script i mappen (katalogen) /usr/local/bin/.
Gör man det och chmod +x på dem, så funkar de direkt.
Gör man det och chmod +x på dem, så funkar de direkt.
Xubuntu på flera maskiner. Men inte Unity!
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.