4.3. Oprette, kopiere, flytte og slette filer og kataloger

Du har allerede set, hvordan du kan kopiere filer og se indholdet af dem. Nu kan det tænkes, at du finder ud af, at en fil skal have et andet navn, dvs. den skal omdøbes. Til det formål har du kommandoen mv (eng. "move"):


[tyge@hven ~]$ cp passwd nyFil
[tyge@hven ~]$ mv nyFil megetNyFil
[tyge@hven ~]$ ls -l
-rw-rw-r--   1 tyge    tyge         652 Jul 14 22:32 passwd
-rw-rw-r--   1 tyge    tyge         652 Jul 14 22:34 megetNyFil
Først tager vi med cp en kopi af filen passwd som vi kalder nyFil. Bagefter omdøber vi nyFil til megetNyFil. Som kommandoens navn antyder, kan den mere end bare omdøbe filer; den kan flytte dem til andre steder i filsystemet.

Her flytter vi for eksempel filen megetNyFil til kataloget MitKatalog:


[tyge@hven ~]$ mkdir MitKatalog
[tyge@hven ~]$ mv megetNyFil MitKatalog
[tyge@hven ~]$ cd MitKatalog
[tyge@hven MitKatalog]$ ls -l
-rw-rw-r--   1 tyge    tyge         652 Jul 14 22:34 megetNyFil
[tyge@hven MitKatalog]$ cd ..
[tyge@hven ~]$ ls -l
drwxrwxr-x   2 tyge    tyge        1024 Jul 14 22:34 MitKatalog
-rw-rw-r--   1 tyge    tyge         652 Jul 14 22:32 passwd


Nu kan det tænkes, at du vil slette filen megetNyFil. Kommandoen rm er lige det, du mangler rm (eng. "remove"):


[tyge@hven ~]$ cd MitKatalog
[tyge@hven MitKatalog]$ ls -l
-rw-rw-r--   1 tyge    tyge         652 Jul 14 22:34 megetNyFil
[tyge@hven MitKatalog]$ rm megetNyFil
[tyge@hven MitKatalog]$ ls -l
[tyge@hven MitKatalog]$ 


Du skal være meget forsigtig med at bruge mv og rm, idet der ikke er nogen mulighed for at fortryde. Hvis du vil blive spurgt, om det er rigtigt, at du vil flytte/slette, kan du bruge tilvalget -i, så det ovenstående eksempel bliver til:


[tyge@hven MitKatalog]$ rm -i megetNyFil
rm: remove almindelig fil 'megetNyFil'? 
Her kan du så svare j for ja, og n for nej.

Bemærk Kommandogenveje
 

Det kan være praktisk at lave en genvej til en kommando med nogle bestemte tilvalg (et alias), så man ikke bliver nødt til at huske på tilvalgene hver gang man bruger kommandoen. Det er for eksempel en god idé at lave aliaser svarende til rm -i og mv -i som man lægger ind i stedet for rm og mv, så man altid bliver spurgt inden man kommer til at slette noget ved at skrive rm en_fil eller lignende.

alias rm='rm -i' gør for eksempel at når du senere skriver rm et-eller-andet, så laver kommandofortolkeren det om til rm -i et-eller-andet før det bliver udført.

Det kan også være rart at kunne køre ls med tilvalget -l let. Typisk laver man til det formål aliaset ll:


[tyge@hven MitKatalog]$ alias ls='ls -l'
[tyge@hven MitKatalog]$ ll
-rw-rw-r--   1 tyge    tyge         652 Jul 14 22:34 megetNyFil
[tyge@hven MitKatalog]$ ls
megetNyFil


Hvis du vil have Bash til at huske dine kommandogenveje fra gang til gang, bør du skrive dem ind i filen ~/.bashrc:


alias rm='rm -i'
alias mv='mv -i'
alias ll='ls -l'


I visse tilfælde opstår der filer med i havelåger (#), mellemrum og andre specielle tegn i. Hvis man vil slette dem, kan man med fordel skrive navnene i citationstegn:


[tyge@hven MitKatalog]$ rm -i '#en sær fil#'
rm: remove almindelig fil '#en sær fil#'? 


Du kan også oprette nye (tomme) filer med kommandoen touch, som tillige ændrer tidsstemplet på filen, hvis den allerede var der i forvejen:


[tyge@hven MitKatalog]$ touch myXYZoptioner.txt
[tyge@hven MitKatalog]$ ls -l
-rw-rw-r--   1 tyge    tyge           0 Jul 14 22:39 myXYZoptioner.txt
[tyge@hven MitKatalog]$ 


Hvis du så venter et par minutter og udfører touch igen, så vil du se, at tidsstemplet ændres:


[tyge@hven MitKatalog]$  touch myXYZoptioner.txt
[tyge@hven MitKatalog]$  ls -l
-rw-rw-r--   1 tyge    tyge           0 Jul 14 22:42 myXYZoptioner.txt
[tyge@hven MitKatalog]$ 


Endelig skal vi også se på hvordan man kan lave henvisninger (eng. "links"). Hvis du har brug for at en fil, for eksempel myXYZoptioner.txt også optræder med et andet navn, så kan du altid lave en symbolsk henvisning (eng. "symbolic link") til filen fra det andet navn:


[tyge@hven MitKatalog]$ ln -s myXYZoptioner.txt o.txt
Her satte vi o.txt til at være en symbolsk henvisning til myXYZoptioner.txt. Det betyder at hvis du nu giver et program besked om at gøre noget ved filen o.txt, så vil det i virkeligheden være filen myXYZoptioner.txt programmet arbejder med.

Med ls kan du se at o.txt er en symbolsk henvisning og ikke en rigtig fil:


[tyge@hven MitKatalog]$ ls -l o.txt
lrwxrwxrwx  1 tyge tyge  4 jul 15 20:35 o.txt -> myXYZoptioner.txt


Endelig kan det nævnes at man ud over symbolske henvisninger også kan laves direkte henvisninger (eng. "hard links"). Effekten er langt hen ad vejen den samme, men direkte henvisninger er begrænset til at fungere indenfor samme filsystem og er bundet til selve filerne og ikke til deres navne.