I dag skal vi lære om basal filhåndtering. Hvordan man kopierer
filer, sletter dem og giver dem nye navne (flytter dem eller omdøber
dem). Vi skal desuden se lidt på links. Til alt dette bruges
kommandoerne cp , rm , mv og
ln .
Da disse kommandoer udfører lignende opgaver kaldes de også på næsten
samme måde og har nogle flag til fælles. Kommandoerne kaldes først med
eventuelle flag, så en kilde der skal kopieres fra, flyttes fra eller
linkes fra, og endelig en destination. Hvis destinationen er et
katalog kan kilden være flere filer på en gang og de vil da få de
samme navne bare i det nye katalog.
De fælles flag for kommandoerne er:
-f
- Hvis kommandoen skal overskrive nogle filer fjernes disse uden
spørgsmål (force)
-i
- Spørg altid inden kommandoen overskriver filer
--target-directory=katalog
- Giver mulighed for at flytte destinationen op foran. Kan være
nyttigt i forbindelse med
xargs (1). Virker selvfølgelig
ikke for rm .
cp
cp bruges til at kopierer filer. Skal man have en kopi af
/tmp/sushi der hedder /tmp/sake skriver man:
$ cp /tmp/sushi /tmp/sake
Har man en masse filer liggende i et katalog man ønsker at slette
skriver man bare flere filer som kilde og et katalog som destination:
$ cp /tmp/sushi /tmp/basmatiris /tmp/suppe /home/makholm/mad
Hvor mad selvfølgelig er et katalog der ligger i mit
hjemkatalog.
Man kan kopiere en hel katalogstruktur ved at sætte flager
-R . Følgende vil kopiere kataloget
/home/makholm/mad ned som et underkatalog til /tmp
$ cp -R /home/makholm/mad /tmp
Da /tmp er et katalog vil dette lave kataloget
/tmp/mad/
Hvis man bruger cp som en simpel backup-metode, kan
man bruge flaget -a . Dette vil blandt andet sørge for at
kopierer rekursivt og beholde rettighederne fra de originale
filer:
$ cp -a /home/makholm/mad /home/makholm/backup
En sidste mulighed, der skal nævnes her er flaget
-u . Bruges dette vil cp prøve at opdaterer
filer i stedet for bare at kopierer filer over. Det vil sige at hvis
kildefilen allerede eksisterer og er nyere vil der ikke blive kopieret
noget.
mv
mv flytter eller omdøber filer. Hvis destinationen er
et katalog bliver alle filer bare flyttet dertil, ellers bliver filen
omdøbt. mv har standardflagene og flaget -u
mv er egentligt ligeglad om den arbejder på filer
eller kataloger. Den skal bare ændre navnet på tingen. Derfor er der
ikke noget flag til at få mv til at virke rekursivt
rm
rm bruges til at slette filer. Ud over standardflagene
understøtter rm kun flaget -R , der lader
rm rekursivt slette underkataloger
Der er ingen let måde at genskabe slettede filer på, så huske lige
at se hvad I sletter.
ln
ln bruges til at lave links. Links er en
slags aliaser for samme fil, altså at samme fil kan tilgås med flere
forskellige navne.
Der findes to forskellige slags links, gårde links og symbolske
links. Hårde links peger på den fysiske fil på disken mens symbolske
links peger på et filnavn. Det er ikke muligt at skelne den originale
fil fra et hårdt link (det originale filnavn er også bare et hårdt
link). Først når alle hårde link til en fil bliver slettet bliver
filen rent fysisk slettet. Med symbolske links kan man opnå links, der
peger ingen steder hen, da filen ikke selv ved at der bliver linket
til den.
Følgende laver et hårdt link fra filen /tmp/peter til
/tmp/makholm
$ ln /tmp/peter /tmp/makholm
Jeg kan nu slette /tmp/peter og stadigvæk tilgå indholdet
via /tmp/makholm.
I det følgende laver jeg et symbolsk link, der hedder
/tmp/pelle, til /tmp/makholm:
$ ln -s /tmp/makholm /tmp/pelle
Hvis jeg så kommer til at slette /tmp/makholm vil
/tmp/pelle give en fejl, hvis jeg prøver at læse indholdet af
den.
Symbolske links kan laves til alle filer på ens system, mens hårde
links kun kan laves til filer der ligger på samme filsystem. Skal man
bruge et link til et katalog skal man også bruge symbolske links.
Derudover har ln de samme flag som de andre kommandoer
nævnt her.
|