Debian, egen funktion[LÖST]

Allt om t.ex. *BSD och OpenSolaris
Raxor
Inlägg: 12
Blev medlem: 20 jan 2008, 12:32

Debian, egen funktion[LÖST]

Inlägg av Raxor »

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.
Senast redigerad av 2 Raxor, redigerad totalt 18 gång.
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Debian, egen funktion

Inlägg av dmz »

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?
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Debian, egen funktion

Inlägg av David Andersson »

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 ?
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.

#!

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
Nu kan du starta scriptet utan att skriva "sh". Du skrivar bara "/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
Du kan lägga till "/script" i path med

Kod: Markera allt

PATH=$PATH:/script
Nu kan du starta backup-scriptet med bara "backup".
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
(Om du egentligen har katalogerna "delat", "backup" och "script" som underkataloger i din hemkatalog, byt ut alla "/script" ovan mot "~/script", (och "/script/backup" mot "~/script/backup").)

(När jag skriver "katalog" så menar jag det vanliga människor :) kallar "mapp".)

EDIT: stavfel och highlight "vanliga människor"
Raxor
Inlägg: 12
Blev medlem: 20 jan 2008, 12:32

Re: Debian, egen funktion

Inlägg av Raxor »

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?
Användarvisningsbild
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

Inlägg av micke_nordin »

Raxor 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?
Om du lägger detta i en fil som du t.ex. kallar test.sh

Kod: Markera allt

#!/bin/bash
echo $1
och test.sh ligger i en katalog som finns i din PATH kallar du skriptet genom

Kod: Markera allt

test.sh blahonga
Det kommer att resultera i att "blahonga" skrivs ut i terminalen.

/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.
Raxor
Inlägg: 12
Blev medlem: 20 jan 2008, 12:32

Re: Debian, egen funktion

Inlägg av Raxor »

Tackar!
Märkte dock att det fungerade även om man skippade din kod och fixade "exekverings-bit" på filen :P
En lite fråga. hur fungerar filändelser egentligen. Vad jag vet så har jag ingen på mitt script ???
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Debian, egen funktion

Inlägg av David Andersson »

Raxor skrev:Tackar!
En lite fråga. hur fungerar filändelser egentligen. Vad jag vet så har jag ingen på mitt script ???
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.

(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.)
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Debian, egen funktion

Inlägg av dmz »

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?
AJxn
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

Inlägg av AJxn »

Raxor skrev:Tackar!
Märkte dock att det fungerade även om man skippade din kod och fixade "exekverings-bit" på filen :P
En lite fråga. hur fungerar filändelser egentligen. Vad jag vet så har jag ingen på mitt script ???
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ärna

Kod: Markera allt

#!/bin/sh -v
om du vill i ett testprogram.

För att se effekten, så kan du prova med

Kod: Markera allt

tchs ./script/backup
Som skrivet, Unix/Linux ignorerar filändelser. Punkt '.' är som vilket annat tecken som helst. Det är bara det att vi människor tenderar att vilja ha dem för att enklare se vilka filer som är vad. Unix/Linux tittar bara på x-rättigheten på filen. Är den satt, så försöker OS:et att använda filen som ett program och exekvera det.
Användarvisningsbild
webaake
Inlägg: 3962
Blev medlem: 09 maj 2007, 09:46
OS: Xubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

Re: Debian, egen funktion[LÖST]

Inlägg av webaake »

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.
Xubuntu på flera maskiner. Men inte Unity!
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.
Skriv svar

Återgå till "Andra öppna och fria operativsystem"