Boken Om Linux/Kapittel 6
6: Filhåndtering
[rediger]Linux-kommandoene jeg går igjennom i dette kapitlet, brukes for å håndtere filer. Felles for alle disse kommandoene er at de er lette å bruke.
Figur 6.1: KDE konqueror filemanager under OpenSuSE Linux
De fleste kommandoene i dette kapitlet kan også utføres fra grensesnittet Nautilus filemanager ([david@nittedal david]$ nautilus & ), GNOME filemanager GNU Midnight Commander ([david@nittedal david]$ gmc & eller fra KDEs filemanager kfm
([david@nittedal david]$ konqueror & ).
Linux-filnavn
[rediger]Et Linux-filnavn kan maksimalt bestå av 256 tegn. Men bare de første 64 tegnene er signifikante. Noen Unix-varianter håndterer bare 14 tegn. Har du tidligere brukt DOS eller Windows, er du vant til at de 3 siste tegnene i filnavnet beskriver filtype. I Linux er det mest vanlig å ha ett tegns haleheng, for eksempel program.c eller program.o. Det er tillatt å ha flere punktum i filnavnet.
Jeg understreker her at Linux ikke legger noen begrensning på filnavnene; navnene er helt opp til deg å bestemme. I motsetning til i Microsoft DOS eller Windows er ikke en fils kjørbarhet knyttet opp til filnfigavnet (exe, com og lignende), men om den er definert som kjørbar i filsystemet. Det er selvfølgelig også i Linux-miljøet vanlig å benytte seg av standard 3-4 tegns haleheng for filtyper som gif, jpg, pdf, html og lignende. (Se kapittel 7.)
Figur 6.2: Markering av fil fra Nautilus under GNOME Linux har følgende regler for filnavn:
Filnavn kan bestå av maksimalt 256 tegn.
Følgende spesialtegn kan benyttes i Linux-kommandoer og bør (dette er avhengige av tegnsettet som brukes) derfor ikke brukes i filnavn: ( ) æ å ? [ ] < > ; ø ' {{{`}}} " \ &
Mellomromstegnet og kontrolltegn bør heller ikke benyttes i filnavn. Har du definert et filnavn med mellomrom kan du bruke tegnet ' (det er også mulig å bruke «») som separator, for eksempel [david@nittedal david]$ cat 'Filnavn med mellomrom'). Du kan som alternativt bruke backslash \ som separator når du har mellomrom (# cd /windows/C/My\ \Music) Linux skiller mellom store og små bokstaver. Det er mest vanlig å bruke små bokstaver i filnavn. Det er viktig å bruke filnavn med mening, da er det lettere å finne igjen filene. Skriv for eksempel brev.elboth.jul i stedet for brev. Alle innloggingsfiler har filnavn som begynner med punktum: for eksempel .bash_profile, .bashrc, profile, .login, .cshrc, .tcshrc og .kshrc. Ønsker du å gjøre en fil «usynlig», kan du innlede navnet på filen med punktum, for eksempel .brevanne. At filen er usynlig, betyr at den vises bare hvis du tar med -a som opsjon i kommandoen ls.
Linux-filtyper
[rediger]Linux støtter flere forskjellige filtyper. Når du bruker GNOME Natutilus eller kommandoen ls, får du fram opplysninger om filen. Linux-kommandoen ls er mest omfattende og gir deg også informasjon om filens eier, hvilken gruppe filen tilhører og tilganger til filen eller katalogen. I listen fra «ls -l»-kommandoen angir første kolonneposisjonen filtype. De andre kolonneposisjonene gir tilgangskoder. Dette er en liste over forskjellige filtyper: - - standard Linux-fil d - katalog b - blokkdriver (device-driver) c - tegnbasertdriver (device-driver) For filtyper som gif, jpg, pdf, html og lignende, se kapittel 7.
Tilgang til filer og kataloger
[rediger]Den som oppretter en fil/katalog, blir automatisk eier av filen/katalogen. Eieren av en fil/katalog kan bestemme tilgangen til filen/katalogen for seg selv, medlemmene i sin brukergruppe og alle de andre. Når du oppretter en fil eller katalog, blir det satt på tilgangskoder som bestemmer hvem som kan lese, skrive eller utføre filen. Hele kapittel 8 handler om tilgangskoder: hvordan du setter dem, endrer dem, osv.
Bruk av jokertegn
[rediger]Linux bruker følgende spesialtegn som jokere (wildcharacters) i fil- eller katalognavn: ? [ ] Der du skriver et jokertegn, setter Linux inn andre tegn etter reglene under. Ved hjelp av jokertegnene kan du derfor navngi en fil/katalog eller en gruppe av filer/kataloger. Følgende regler gjelder for bruk av jokertegn: ? -et enkelt men vilkårlig tegn -null eller flere vilkårlige tegn [ ] -representerer tegn eller intervall (ved bruk av bindestrek) Jokertegnene kan kombineres med hverandre og med vanlige tegn.
Jokertegn | Beskrivelse |
* | alle filer i angitt katalog |
f* | alle filer med filnavn som starter på f |
*.o | alle filer med filnavn som ender på o |
???? | alle filer med filnavn som består av 4 tegn |
Linux? | alle filer med filnavn som starter med Linux og har ett tegn til, for eksempel Linuxa, Linuxb, Linux1 etc. |
Linux[1-4] | tilsvarende Linux1, Linux2, Linux3 etc. |
[LU]inux | enten Linux eller Unix |
Disse eksemplene på jokertegn kan benyttes til de fleste kommandoene som behandler filer i Linux. Kommandoene behandler da filer med filnavn som passer med det mønsteret som er angitt.
Bruk jokere med forsiktighet! Kommandoen rm * vil for eksempel fjerne alle filene i den aktuelle katalogen.
Eksempler på kommandoer med jokertegn: cat * ls -la t* cat /usr/u* rm 'øøøø' (fjerner filen øøøø) lp chap[1-20] ls -la chap??? ls -la .* rm del?.test ls ???S* ls f??g Hvis du bruker enkle apostrofer (' ') eller anførselstegn (" "), mister jokertegnene sin virkning. Jokertegnet oppfattes da som vanlig tekst.
Skrive fil til skjerm – cat
[rediger]Med cat-kommandoen kan du skrive tekstfilene dine til skjermen. cat er en forkortelse for "concatenate" og er opprinnelig konstruert for å kombinere flere filer til én fil. Skriver du cat uten parametere, forventer kommandoen data fra standard input-kanal, dvs. tastaturet. Du kan alltid avslutte med <Ctrl-d>.
Kommandoen cat | skriver innhold av fil til skjerm |
Kommando: | cat [-s] [-v] [argumenter ...] |
Funksjon: | Viser innholdet av en tekstfil på skjerm eller kopierer én eller flere filer til skjerm/fil |
Argumenter: | Fil, katalog og/eller jokere |
Opsjoner: | Se også Linux-man-sidene. |
-s | Ingen meldinger om ikke eksisterende filer |
-v | Kontrolltegn blir vist, for eksempel {{{}}}X, {{{{{{}}}}}}? |
Bruker du cat-kommandoen uten opsjoner, vil du bare få listet opp filen(e) på skjermen. Argument kan være én eller flere filer. Argument er ikke nødvendig. Med cat-kommandoen kan du også skrive direkte til skjermen. Eksempel:
[david@nittedal david]$ cat
Dette er et eksempel på en tekst som er skrevet ved hjelp
Dette er et eksempel på en tekst som er skrevet ved hjelp
av cat-kommandoen.
av cat-kommandoen.
Her avslutter du med Control d.
Her avslutter du med Control d.
<Ctrl-d>
Figur 6.3: Eksempel på bruk av Linux-kommandoen cat Hver linje kommer to ganger, dvs. først en gang når du skriver teksten, og så en gang som utdata fra cat. Eksempel:
[david@nittedal david]$ cat -v davidtekst Skriver tekstfilen davidtekst med alle kontrolltegn til skjermen. Se også kapittel 7 og 8.
Kopiere filer – cp
[rediger]Med cp kan du kopiere enkeltfiler eller grupper av filer innenfor en katalog eller fra/til en katalog. Vil du kopiere en fil, må du ha lesetilgang til filen og skrivetilgang til katalogen du vil kopiere filen til.
Kommandoen cp | kopiering av filer |
Kommando: | cp fil1 fil2 eller cp filer katalog |
Funksjon: | Kopiering av enkeltfiler og grupper av filer |
Argumenter: | Fil, katalog og/eller jokere |
Opsjoner: | Se også Linux-man-sidene. |
-f | Tvinger overskriving av målfil(er) |
-p | Bevarer de originale attributtene, for eksempel eier, rettigheter og tidspunktet filen sist ble endret. |
-r (-R) | Kopierer også de underliggende katalogene |
-v | Verbose modus=vise; skriver navnet på de enkelte filene som blir kopiert |
fil1: | Navn på filen som skal kopieres (originalen) |
fil2: | Navn på filen det kopieres til (kopien) |
Eksempler:
[david@nittedal david]$ cp rapport rapport1 Filen rapport blir kopiert til en ny fil som får navnet rapport1.
[david@nittedal david]$ cp *nrf tekst/ Alle filer som har endelsen nrf, blir kopiert til katalogen tekst/. De nye filene har samme filnavn, bruker-id, gruppe-id osv. Om kataloger, se kapittel 7.
[david@nittedal david]$ cp brev1 brev 2 /usr/brevkat Kopierer brevene brev1 og brev2 til katalogen /usr/brevkat. Se også: cpio, ln, mv, rm, chmod
Flytte/endre navn på filer – mv
[rediger]Med kommandoen mv kan du flytte en fil fra én katalog til en annen og samtidig gi filen et nytt navn. Er det en fil som har samme navn som målfilen, blir den slettet før filflyttingen skjer. Du kan også skifte navn på kataloger.
Kommandoen mv | navneskifte av filer/kataloger |
Kommando: | cmv [-f] fil1 fil2 eller mv [-f] katalog1 katalog2 eller mv [-f] fil ... katalog |
Funksjon: | Navneskifte og/eller flytting av filer; kataloger kan du bare skifte navn på. |
Argumenter: | Fil, katalog og/eller jokere |
Opsjoner: | Se også Linux-man-sidene. |
-f | Filflytting skjer selv om det eksisterer en fil med samme navn som kopifilen, og selv om denne er skrivebeskyttet. |
fil1: | Navn på filen som skal flyttes og/eller skifte navn (originalen) |
fil2: | Det nye navnet på filen |
Eksempler:
[david@nittedal david]$ mv smb.conf smb Her skifter filen smb.conf navn til smb.
[david@nittedal david]$ mv linux* linuxbok Alle filer som begynner på linux flyttes til katalogen linuxbok.
[david@nittedal david]$ mv /tmp/brev /home/david/brev-kopi Her flytter jeg filen brev i katalogen /tmp til katalogen /home/david. Filen skifter samtidig navn til brev-kopi.
[david@nittedal david]$ mv /home/david/wp /home/david/corel Her skifter jeg navn på katalogen fra wp til corel. Hvis fil1 og fil2 er plassert på et annet filsystem, må mv-kommandoen først kopiere og fjerne originalen. I dette tilfellet blir eieren av filen den som kopierer, og tidligere linkreferanser går tapt. Se også: cp, chmod
Slette filer og kataloger – rm
[rediger]Med kommandoen rm fjerner du enkeltfiler eller grupper av filer, Du kan slette én eller flere filer, eller en hel katalogstruktur. Sletting av filer krever at du har skrivetilgang til katalogen. Er du eier av filen, kreves ingen andre rettigheter.
Kommandoen rm | fjerne én eller flere filer/kataloger |
Kommando: | rm [-fri] [argument] |
Funksjon: | Fjerner én eller flere filer/kataloger |
Argumenter: | Fil, katalog og/eller jokere |
Opsjoner: | Se også Linux-man-sidene. |
-f | Sletter skrivebeskyttede filer uten advarsel |
-r | Sletter alle filer/kataloger og nedover (underkataloger); denne opsjonen må du bruke forsiktig. |
-i | Velger du interaktiv sletting, blir hvert filnavn som skal fjernes, vist på skjermen. Ønsker du å slette, må du svare bekreftende med y, i motsatt fall trykker du n. |
NB! Når du har overflødige filer som du kjenner opphavet til, bør de fjernes.
Figur 6.4: Eksempel på bruk av Linux-kommandoen rm Eksempler:
[david@nittedal david]$ rm linux.fil Fjerner filen linux.fil.
[david@nittedal david]$ rm /bin/test Fjerner filen test som er plassert i katalogen /bin.
[david@nittedal david]$ rm -f mess* Fjerner uten advarsel alle filene som begynner på mess.
[david@nittedal david]$ rm -i testdir Her får jeg spørsmål om jeg ønsker å fjerne filen testdir.
[david@nittedal david]$ rm -r /home/david Fjerner katalogen /home/david og alle tilhørende underkataloger.
[david@nittedal david]$ rm -r *
I det siste eksemplet fjernes alle filer i gjeldende katalog og alle underkataloger under gjeldende katalog.
r‑opsjonen kan være farlig å bruke. Bruker du r-opsjonen, vil den ikke fjerne mer enn 17 underkatalog-nivåer. (Om kataloger, se kapittel 7.) Se også: rmdir
Flere navn på én fil – ln
[rediger]Det kan av og til være nyttig å ha flere navn på én fil. Ett navn kan vise hvilket prosjekt filen tilhører, mens et annet sier noe om innholdet av filen. Man kaller dette å linke (knytte) flere referanser (filnavn) til den samme fysiske filen.
Kommandoen ln | lage en link til en fil/katalog |
Kommando: | ln [opsjon] fil1 fil2 eller ln [opsjon] fil1 ... katalog |
Funksjon: | Lager en link til en fil, dvs. gjør det mulig å ha flere navn på en fysisk fil; filen med navnet fil1 får også navnet fil2. Det som logisk skjer er at du definerer to filnavn som refererer til samme inodenummer. Det er mulig å linke filer over forskjellige filsystemer. Det samme kan gjøres med kataloger. |
Argumenter: | Fil, katalog og/eller jokere |
Opsjoner: | Se også Linux-man-sidene. |
-f | Lager en link selv om det nye filnavnet eksisterer |
-s | Lager en symbolsk link; en symbolsk link kan gå over forskjellige filsystemer. Som standard (default) har man hardlink. Hardlink går bare over ett og samme filsystem. |
Når du bruker rm-kommandoen, blir ikke filen fjernet før du fjerner den siste referansen (filnavn) til filen. Eksempler:
[david@nittedal david]$ ln sfjord tekstsf Nå refererer filene sfjord og tekstsf til samme inode. (Se kapittel 7 og 8.)
[david@nittedal david]$ ln .profile /home/anne/.profile
Her har to brukere tilgang til samme systemfil. Linken går her over en annen katalog. Kommandoen ln kan være nyttige hvis du bruker OpenOffice under Linux og har alle tekstfilene på en Windows-partisjon. I eksemplet under linker jeg opp min Windows-partisjon under Linux mot katalogen books (home/david/books)
[david@nittedal david]$ ln -s /windows/C/data-new/de/boker/linux books Drivere kan ha lange navn. Her definerer jeg et kort navn som er lett å huske. I eksemplet under bruker jeg driveren til diskettstasjonen.
[david@nittedal root]# ln /dev/fd0H1440 /dev/A I dette siste eksemplet må du være systemadministrator.
Figur 6.5: Eksempel på bruk av Linux-kommandoen ln Du fjerner en link med rm-kommandoen, dvs. du fjerner et av filnavnene.
[david@nittedal david']'$ rm sfjord Fjerner navnet sfjord på filen og dermed linken. Kommandoen ln har svært mange bruksområder som ikke alltid er like innlysende for en som er vant til å bruke Microsoft DOS eller Windows. La meg nevne to praktiske eksempler.
Alle nye programmer som er laget ved hjelp av gtk (et verktøy for å lage grafiske grensesnitt under Linux (http://www.gtk.org), benytter seg av en fil som heter gtkrc for å bestemme utseendet på programmet. (Se http://gnome-look.org/?xcontentmode=100). Denne filen blir vanligvis opprettet i en underkatalogen. Hvis du har flere slike programmer, så vil det være uhensiktsmessig å redigere oppsettet for hvert av dem når du skal bytte utseende. Løsningen er å bruke ln til å sørge for at det er den samme filen som ligger i alle mappene. Når du så oppdaterer filen et sted, blir den oppdatert over hele linjen.
Et annet eksempel som illustrerer hvordan ln kan benyttes, er følgende: Jeg skulle sette opp en bærbar maskin som ikke hadde CD-ROM med Linux. Det den derimot hadde, var en dokking-stasjon med innebygd ethernett-kort. Jeg koblet den bærbare maskinen sammen med min stasjonære maskin som hadde en FTP-server installert. Jeg lagde deretter en link fra CD-ROMen til FTP-katalogen ved hjelp av ln. Dermed ble hele CD-ROMen tilgjengelig via FTP uten at jeg måtte kopiere den inn på harddisken. Jeg kjørte deretter installering av Linux via FTP på den bærbare maskinen.
Se også: cp, rm, mv, inodenummer.
Oppgaver til kapittel 6
[rediger]Oppgave 6.1 Bruk kommandoen ls og jokertegn for å finne ut følgende om ditt system: a) Hvilke filnavn har akkurat 14 tegn? b) Hvilke filnavn har akkurat 5 tegn? c) Hvilke filnavn ender på sss? d) Hvilke filnavn på 4 tegn begynner med d og ender på e? e) Hvilke filnavn på 3 tegn ender med en bokstav i intervallet [e-k]? f) List alle filnavn som slutter på ?. g) List alle filnavn som begynner på *.
Oppgave 6.2 Klarer du å lage ulovlige filnavn? Hvordan kan du bruke disse filene senere?
Oppgave 6.3 Hva slags filtype er dine filer?
Oppgave 6.4 Hvordan kan du representere filene under med jokertegn? a) abc abd abe b) rapp1 rapp2 rapp3 c) x1s xes d) Alle filer som begynner på bokstavene s til d.
Oppgave 6.5 Skriv ut alle dine tekstfiler til skjermen med og uten kontrolltegn.
Oppgave 6.6 Lag sikkerhetskopier av alle systemfilene dine.
Oppgave 6.7 Skift navn på sikkerhetskopiene.
Oppgave 6.8 Prøv å fjerne en tekstfil med opsjonen -f.
Oppgave 6.9 Lag flere navn på sikkerhetskopiene dine.