programmera.net -> linux -> normal     för utskrift      info@programmera.net

Kommandon på filer

  Kommando    Exempel  Beskrivning
  cd  cd /home/olle/foo/  Byter arbetskatalog till /home/olle/foo/.
  pwd  pwd  Skriver ut arbetskatalogens sökväg.
  ls  ls  Skriver ut innehållet i arbetskatalogen.
  ln  ln -s a.txt my_link  Skapar en mjuk länk till filen a.txt.
  touch  touch a.txt  Gör så att filen a.txt får modifieringstid satt till systemtiden.
  Kommando    Exempel  Beskrivning
  cp  cp a.txt /home/olle/foo/  Kopierar filen a.txt till katalogen /home/olle/foo/.
  scp  scp a.txt root@10.0.0.4:/home/olle/foo/  Kopierar filen a.txt till maskinen 10.0.0.4 in i mappen /home/olle/foo/.
  mv  mv a.txt /home/olle/foo/  Flyttar filen a.txt till katalogen /home/olle/foo/.
  rm  rm a.txt  Raderar filen a.txt.
  Kommando    Exempel  Beskrivning
  mkdir  mkdir /home/olle/foo/  Skapar katalogen foo/.
  rmdir  rmdir /home/olle/foo/  Raderar katalogen foo/.
  Kommando    Exempel  Beskrivning
  tar  tar -xvf a.tar  Packar upp filen a.tar och skriver ut namnet på alla filer som packas upp.
  gzip  gzip a.txt  Komprimerar filen a.txt till a.txt.gz.
  gunzip  gunzip a.txt.gz  Packar upp den komprimerade filen a.txt.gz till a.txt.
  zip  zip -r a.zip a/  Komprimerar mappen a/ till a.zip.
  unzip  unzip -a a.zip  Detta kommando fungerar på zip-filer från Windows! Packar upp den komprimerade filen a.zip till a.txt och översätter Windowsformatet till Unixformat.
  bunzip2  bunzip2 a.txt.bz2  Packar upp den komprimerade filen a.txt.bz2 till a.txt.

På denna sida beskrivs hur man kopierar, flyttar och tar bort filer. Med kommandona cp, mv, och rm är det lätt hänt att man blir av med filer utan att det finns någon möjlighet att få tillbaka dem.

Jag kommer att avsluta alla namn som syftar på en katalog med / (slash), detta för att öka läsbarheten. Tecknet / är inte en del av katalogens namn utan bara en markör som visar att det rör sig om en katalog. Vi skapar en katalog för att visa principen:
[olle@dev1]$ mkdir newdir/
[olle@dev1]$ ls
a.txt  b.txt  c.txt  newdir


cd

Flagga  Betydelse  Beskrivning
cd     Byter arbetskatalog till din hemkatalogen.
cd ~david     Byter arbetskatalog till användaren davids hemkatalog.
cd -     Byter arbetskatalog till den förra arbetskatalogen.
cd dir1     Byter arbetskatalog till dir1 (som ligger i arbetskatalog).

Detta kommando står för change directory och byter arbetskatalog. Genom att ställa sig i en viss arbetskatalog kan man förkorta skrivandet när du vill komma åt en fil. Tänk dig att du vill titta på innehållet i filen /home/david/hej.txt. Det första sättet är:
[olle@dev1]$ cat /home/david/hej.txt
Hej, välkommen till min katalog.
Det andra sättet är att man byter arbetskatalog till /home/david/ och sedan tittar i filen:
[olle@dev1]$ cd /home/david/
[olle@dev1]$ cat hej.txt
Hej, välkommen till min katalog.

pwd

Detta kommando står för print working directory och skriver ut namnet på arbetskatalogen. Det kan vara bra om man har tappat bort sig i filstrukturen.
[olle@dev1]$ cd /home/olle/foo/
[olle@dev1]$ pwd
/home/olle/foo

ls

Flagga  Betydelse  Beskrivning
ls -a  all  Listar alla filer och kataloger, även dolda.
ls -c  change  Listar filer och kataloger sorterade efter när de senast modifierades.
ls -d  directory  Listar bara kataloger.
ls -F  full  Listar filer och kataloger med ett / efter katalognamn och ett * efter körbara filer.
ls -Gl  group  Som -l men utan att visa grupp.
ls -hl  human  Som -l men visar storlek mer läsbart, t. ex. 4.8k.
ls -i  inode  Listar filer och kataloger med inodens nummer framför varje namn.
ls -l  long  Visar en detaljerad lista av filer och kataloger med rättigheter, ägare, grupp, storlek, modifieringstid och namn.
ls -nl  number  Som -l men visar ägarens UID och gruppens GID istället för namn.
ls -o     Samma som -Gl.
ls -r  reverse  Listar filer och kataloger sorterade i omvänd ordning.
ls -R  recursive  Listar filer och kataloger och allt som katalogerna innehåller rekursivt.
ls -S  size  Listar filer och kataloger sorterade efter storlek.
ls -t  time  Listar filer och kataloger sorterade efter när de senast ändrades.
ls -u  used  Listar filer och kataloger sorterade efter när de senast användes.
ls -ul  used  Som -l men åtkomsttid visas istället för modifieringstid.
ls -w20  width  Listar filer och kataloger med en bredd på 20 tecken.
ls -x     Listar filer och kataloger i rader istället för kolumner.
ls -X  extension  Listar filer och kataloger sorterade efter ändelse.

Detta kommando står för list och radar upp de filer och kataloger som finns i en katalog. Om man inte ger något argument till ls kommer de filer som ligger i arbetskatalogen visas:
[olle@dev1]$ ls /home/olle/foo/
a.txt  b.txt  c.txt  dir1
[olle@dev1]$ cd /home/olle/foo/
[olle@dev1]$ ls
a.txt  b.txt  c.txt  dir1
Ofta vill man se en detaljerad lista över katalogers innehåll. Då kan man använda flaggan l (long). Denna flagga används så ofta att det finns ett alias för ls -l som heter ll.
[olle@dev1]$ ls -l
-rw-rw-r--   1 olle    olle         9 aug  7 13:00 a.txt
-rw-rw-r--   1 olle    olle        61 aug  7 13:06 b.txt
-rw-rw-r--   1 olle    olle        22 aug  7 13:19 c.txt
drwxrwxr-x   2 olle    olle	 4096 aug  7 13:25 dir1
De olika kolumnerna beskrivs i följande tabell:

Kolumner Beskrivning
1. Rättigheter  Denna kolumn beskriver vem som får läsa, skriva och köra filen. Om bokstaven längst till vänster är ett d betyder det att det rör sig om en katalog. Om bokstaven är ett l är det en symbolisk länk. (Rättigheter diskuteras under webbsidan användare.)
2. Länkar  Följande siffra berättar hur många hårda länkar som refererar till filen. Siffran kan minst vara 1, som står för filnamnet självt. Om det rör sig om en katalog berättar siffran istället hur många filer som katalogen innehåller.
3. Användare  Vilken användare som äger filen.
4. Grupp  Vilken grupp som har tillgång till filen.
5. Storlek  Hur många Byte filen tar upp.
6. Modifikationsdatum  När filen senast ändrades.
7. Namn  Filens namn.

Ett filnamn som börjar med punkt gör filen osynlig. Många konfigurationsfiler är osynliga och kan visas men flaggan a (all):
[olle@dev1]$ cat > .hemlis.txt
Detta är en hemlig fil.
[olle@dev1]$ ls
a.txt  b.txt  c.txt  dir1
[olle@dev1]$ ls -a
a.txt  b.txt  c.txt  dir1  .hemlis.txt
Ofta är det praktiskt om vi kan se de filer som modifierades senast, här använder vi long, time, reversed:
[olle@dev1]$ ls -ltr
Med detta kommando visas den senast ändrade filen underst i listningen.
ln

Flagga  Betydelse  Beskrivning
ln a.txt a_link     Skapar en hård länk till a.txt.
ls -s a.txt a_link  soft  Skapar en mjuk länk till a.txt.

Detta kommando står för link och skapar en länk. Det finns två sorters länkar; hårda och mjuka.

En hård länk är ett nytt namn på filen. Efter att man skapat en hård länk går det inte att veta vilken av de två namnen som är det "äkta" namnet på filen. För att den riktiga filen ska försvinna måste båda namnen tas bort. Båda namnen är nämligen kopplade till samma inod som unikt pekar ut filen. Nu ska jag testa att skapa en hård länk:
[olle@dev1]$ ln a.txt a_link
[olle@dev1]$ ls -l
-rw-rw-r--   2 olle    olle         9 aug  7 13:00 a_link
-rw-rw-r--   2 olle    olle         9 aug  7 13:00 a.txt
-rw-rw-r--   1 olle    olle        61 aug  7 13:06 b.txt
-rw-rw-r--   1 olle    olle        22 aug  7 13:19 c.txt
drwxrwxr-x   2 olle    olle	 4096 aug  7 13:25 dir1
Här ser vi att den hårda länken a_link ser ut som vilken fil som helst, och har samma modifieringstid som a.txt (eftersom det är samma fil). Både a.txt och a_link har siffran 2 i andra kolumnen, vilket betyder att det finns 2 namn som refererar till den filen. Hur kan vi då bevisa att det är samma fil? Jo genom att jämföra inodernas nummer:
[olle@dev1]$ ls -i
500048 a_link   500049 b.txt   634619 dir1
500048 a.txt    500050 c.txt   

En mjuk länk är en egen liten fil som pekar ut en annan fil. Om du tar bort den utpekade filen kommer den att försvinna och den mjuka länken ligger kvar men är bruten. Jag skapar en mjuk länk:
[olle@dev1]$ ln -s a.txt a_soft
[olle@dev1]$ ls -l
lrwxrwxrwx   1 olle    olle         5 aug  7 13:47 a_soft -> a.txt
-rw-rw-r--   1 olle    olle         9 aug  7 13:00 a.txt
-rw-rw-r--   1 olle    olle        61 aug  7 13:06 b.txt
-rw-rw-r--   1 olle    olle        22 aug  7 13:19 c.txt
drwxrwxr-x   2 olle    olle	 4096 aug  7 13:25 dir1
Vi ser att det är mycket som skiljer den mjuka länken från den utpekade filen. Rättigheterna börjar med l, storleken är bara 5, modifikationstiden är satt till då länken skapades och i namnet ser man en pil som visar vilken fil som refereras. I mitt tycke är mjuka länkar att föredra framför hårda, eftersom man inte blir lika förvirrad.


touch

Flagga  Betydelse  Beskrivning
touch -a a.txt  access  Ändrar åtkomsttiden till nu.
touch -m a.txt  modification  Ändrar modifikationstiden till nu.
touch a.txt -r b.txt  reference  Ändrar modifikationstiden och åtkomsttiden på a.txt till samma som b.txt.

Detta kommando ändrar åtkomsttiden och modifikationstiden på en fil till den tid som klockan står på när kommandot körs. Om filen inte finns så skapas filen. Detta är alltså det snabbaste sättet att skapa en tom fil.
[olle@dev1]$ ls -l
-rw-rw-r--   1 olle    olle         9 aug  7 13:00 a.txt
-rw-rw-r--   1 olle    olle        61 aug  7 13:06 b.txt
-rw-rw-r--   1 olle    olle        22 aug  7 13:19 c.txt
drwxrwxr-x   2 olle    olle	 4096 aug  7 13:25 dir1
[olle@dev1]$ touch b.txt
[olle@dev1]$ ls -l
-rw-rw-r--   1 olle    olle         9 aug  7 13:00 a.txt
-rw-rw-r--   1 olle    olle        61 aug  8 17:11 b.txt
-rw-rw-r--   1 olle    olle        22 aug  7 13:19 c.txt
drwxrwxr-x   2 olle    olle	 4096 aug  7 13:25 dir1

cp

Flagga  Betydelse  Beskrivning
cp -f a.txt foo/  force  Kopierar a.txt till foo/ utan att fråga innan en existerande fil skrivs över (default).
cp -i a.txt foo/  interactive  Kopierar a.txt till foo/ men frågar innan en existerande fil skrivs över.
cp -p a.txt foo/  preserve  Kopierar a.txt till foo/ men bevarar modifikationstid från a.txt.
cp -P src/a.txt foo/  path  Kopierar src/a.txt till foo/, alltså både a.txt och katalogen src/.
cp -r src/ foo/  recursive  Kopierar katalogen src/ och allt innehåll till foo/.
cp -u a.txt foo/  updated  Kopierar a.txt till foo/ då a.txt är nyare än foo/a.txt (om den redan finns).
cp -v a.txt foo/  verbose  Kopierar a.txt till foo/ och skriver ut en kommentar.

Kommandot står för copy och kopierar en eller flera filer. OBS: Om man inte använder flaggan i raderas destinationsfilen om den redan existerar. Man bör alltså vara försiktig med kopieringar ty om en fil skrivs över finns det inget sätt att få tillbaka den. Med flaggan r (recursive) kan man kopeiera hela strukturer i ett svep:
[olle@dev1]$ ls
src
[olle@dev1]$ ls foo/
a.txt  b.txt  c.txt  dir1
[olle@dev1]$ cp -r foo/ foo_copy/
[olle@dev1]$ ls
foo  foo_copy
[olle@dev1]$ ls foo_copy/
a.txt  b.txt  c.txt  dir1
Som exemplet ovan visar skapas alltså katalogen foo_copy/ och fylls med samma innehåll som finns i foo/. När man kopierar inom samma katalog så skriver man det nya namnet som andra parameter:
[olle@dev1]$ cp a.txt a_copy.txt
[olle@dev1]$ ls
a.txt  a_copy.txt

scp

Flagga  Betydelse  Beskrivning
scp -r src/ root@10.0.0.4:/home/olle/foo/  recursive  Kopierar katalogen src/ och allt innehåll till maskinen 10.0.0.4 in i mappen /home/olle/foo/. Användaren loggar in som root på 10.0.0.4.
scp -v a.txt root@10.0.0.4:/home/olle/foo/  verbose  Kopierar a.txt till maskinen 10.0.0.4 in i mappen /home/olle/foo/ och skriver ut en kommentar. Användaren loggar in som root på 10.0.0.4.

Kommandot står för secure copy och kopierar en eller flera filer över nätverket. scp använder ssh (secure shell) för dataöverföringen, och användaren måste skriva in lösenord i samband med kopieringen. För att kopiering mellan datorer ska vara möjlig krävs alltså dessa saker:
  • Den avlägsna datorn har en ssh-server rullande.
  • Om datorerna inte har utbytt nycklar (som krävs för RSA-krypteringen) måste de göra detta i samband med kopieringen.
  • Användaren känner till en användare och ett lösenord på den avlägsna datorn eftersom en inloggning ofta krävs.
Med flaggan r (recursive) kan man kopeiera hela strukturer i ett svep.
mv

Flagga  Betydelse  Beskrivning
mv -b a.txt foo/  backup  Flyttar a.txt till katalogen foo och gör en backup (a.txt~) om det redan finns en a.txt i foo.
mv -f a.txt foo/  force  Flyttar a.txt till katalogen foo och skriver över a.txt om det finns en sådan fil finns i foo.
mv -i a.txt foo/  interactive  Flyttar a.txt till katalogen foo men frågar innan den skriver över någon fil.
mv -u a.txt foo/  updated  Flyttar a.txt till katalogen foo men bara om a.txt inte existerar i foo eller är äldre än den filen som flyttas.
mv -v a.txt foo/  verbose  Flyttar a.txt till katalogen foo och skriver ut en kommentar.

Kommandot står för move och flyttar mycket riktigt en fil eller katalog. OBS: Om man inte använder flaggan i (interactive) raderas destinationsfilen om den redan existerar. Förutom att man kan råka radera en existerande fil med mv, så förändras ingenting förutom sökvägen till filen/katalogen. Under ytan så flyttar inte Linux på en fil när man gör mv, endast sökvägen till filen ändras. Filen behåller sin gamla inod. Om man flyttar en fil/katalog innom en katalog byter man egentligen bara namn på filen/katalogen:
[olle@dev1]$ ls -l
-rw-rw-r--   1 olle    olle         9 aug  7 13:00 a.txt
-rw-rw-r--   1 olle    olle        61 aug  7 13:06 b.txt
-rw-rw-r--   1 olle    olle        22 aug  7 13:19 c.txt
drwxrwxr-x   2 olle    olle	 4096 aug  7 13:25 dir1
[olle@dev1]$ mv a.txt aa.txt
[olle@dev1]$ ls -l
-rw-rw-r--   1 olle    olle         9 aug  7 13:00 aa.txt
-rw-rw-r--   1 olle    olle        61 aug  7 13:06 b.txt
-rw-rw-r--   1 olle    olle        22 aug  7 13:19 c.txt
drwxrwxr-x   2 olle    olle	 4096 aug  7 13:25 dir1
Som vi ser förändras inget förutom namnet på filen a.txt.
rm

Flagga  Betydelse  Beskrivning
rm -f a.txt  force  Raderar a.txt utan att fråga.
rm -i a.txt  interactive  Frågar om man vill radera a.txt, om man svarar y raderas a.txt.
rm -r foo/  recursive  Raderar katalogen foo med allt innehåll.
rm -v a.txt  verbose  Raderar a.txt och skriver ut en kommentar om hur det gick.

Kommandot raderar en eller flerar filer. Med flaggan r (recursive) kan man radera en katalog med allt innehåll. OBS: När du raderat en fil finns det inget sätt att ångra detta. Linux har ingen papperskorg som man brukar finna i andra operativsystem. Nu ska vi testa att radera lite filer interaktivt:
[olle@dev1]$ ls /home/olle/foo/
a.txt  b.txt  c.txt  dir1
[olle@dev1]$ rm -ir /home/olle/foo/
rm: descend into directory `/home/olle/foo`? y
rm: descend into directory `/home/olle/foo/dir1`? n
rm: remove `/home/olle/foo/a.txt`? y
rm: remove `/home/olle/foo/b.txt`? y
rm: remove `/home/olle/foo/c.txt`? y
rm: remove directory `/home/olle/foo/` (might be nonempty)? n
[olle@dev1]$ ls /home/olle/foo/
dir1
I exemplet ovan valde vi att radera alla filer i foo/ men inte katalogen själv och inte heller katalogen foo/dir1/. Vill man ta bort rubbet utan att behöva svara på en massa frågor gör man såhär:
[olle@dev1]$ rm -r /home/olle/foo/
[olle@dev1]$ ls /home/olle/
jox  tester
Nu försvann katalogen foo/ med allt innehåll.
mkdir

Flagga  Betydelse  Beskrivning
mkdir -m 744 foo/  permission mode  Skapar katalogen foo/ där alla förutom ägaren bara har läsrättigheter (läs mer om rättigheter under användare).
mkdir -p foo/foo2/  parent  Skapar katalogerna foo/ och foo2/ där foo/ innehåller foo2/.

Detta kommando står för make directory och skapar en katalog. Vi kan välja vilka rättigheter vi vill att andra användare ska ha i katalogen genom flaggan m:
[olle@dev1]$ mkdir -m 700 mydir/
[olle@dev1]$ ls -l
-rw-rw-r--   1 olle    olle         9 aug  7 13:00 aa.txt
-rw-rw-r--   1 olle    olle        61 aug  7 13:06 b.txt
-rw-rw-r--   1 olle    olle        22 aug  7 13:19 c.txt
drwxrwxr-x   2 olle    olle	 4096 aug  7 13:25 dir1
drwx------   2 olle    olle	 4096 aug  8 18:45 mydir
I exemplet ovan skapades en katalog (mydir/) som bara kan läsas och skrivas i av ägaren.
rmdir

Flagga  Betydelse  Beskrivning
rmdir -p foo/  parent  Raderar katalogen foo/ och alla underkataloger om ingen av dessa innehåller någon fil.

Detta kommando står för remove directory och radera tomma kataloger. Med flaggan p (parent) så raderas även tomma underkataloger.
tar

Flagga  Betydelse  Beskrivning
tar -xvf a.tar  eXtract  Packar upp filen a.tar och skriver ut namnet på alla filer som packas upp.
tar -xzvf a.tar.gz  zip  Packar upp filen a.tar.gz (som är komprimerad med gzip) och skriver ut namnet på alla filer som packas upp.
tar -cvf a.tar *  create  Packar ihop alla filer i den aktuella mappen till filen a.tar och skriver ut namnet på alla filer som packas ihop.
tar -czvf a.tar.gz *  zip  Packar ihop alla filer i den aktuella mappen och komprimerar arkivet med gzip.
tar -tvf a.tar  table  Listar allt innehåll i filen a.tar.

Med detta kommando kan man packa ihop flera filer till en akrivfil ( en så kallad tar-fil ). I normala fall komprimeras inte filerna i arkivfilen. Vill man att filerna ska komprimeras kan man göra på två sätt:
  • Du skapar först arkivfilen okomprimerad, och komprimerar den sedan med "compress" eller "gzip".
  • Du skapar akrivfilen och komprimerar den på samma gång med flaggan "z". Komprimeringen du får nu är "gzip".

gzip

Flagga  Betydelse  Beskrivning
gzip a.tar  (ingen)  Packar filen a.tar till a.tar.gz.

Med gzip komprimerar du en fil så att den tar mindre plats. Man packar sedan upp filen med gunzip.
gunzip

Flagga  Betydelse  Beskrivning
gunzip a.tar.gz  (ingen)  Packar upp den komprimerade filen a.tar.gz till a.tar.

Med gunzip packar du upp en fil som har komprimerats med gzip.
zip

Flagga  Betydelse  Beskrivning
zip a.zip a.txt b.txt  (ingen)  Komprimerar filen a.txt och b.txt till filen a.zip.
zip -r a.zip a/  recursive  Komprimerar mappen a/ och allt innehåll till filen a.zip.

Med zip komprimerar du en fil så att den kan packas upp av någon som sitter på Windows. Om den ska packas upp kan du använda unzip.
unzip

Flagga  Betydelse  Beskrivning
unzip -a a.zip  ascii  Packar upp den komprimerade filen a.zip till a.txt.

Om man får en fil som har packats med zip i Windows, hur gör man då? Med unzip packar du upp en eller flera filer som har komprimerats med zip. Den största fördelen med detta kommando är att du kan köra med flaggan -a som automatiskt konverterar textfiler från Windows textformat till Unix textformat.
bunzip2

Flagga  Betydelse  Beskrivning
bunzip2 a.tar.gz  (ingen)  Packar upp den komprimerade filen a.tar.gz till a.tar.

Med bunzip2 packar du upp en fil som har komprimerats med bzip2.