Nyligen stötte jag på några linuxkommandon när jag loggade in på min kundwebbplats för att hämta loggfilen, och jag studerade också några av linux filtyperna och ett enkelt kommando för att veta vilka filtyper som finns i Linux operativsystem.

Linux använder fyra grundläggande filtyper:

  • ordinarie filer
  • kataloger
  • symboliska länkar
  • block- och teckenenhetsfiler

Du bestämmer en filtyp genom att använda kommandot ls -l och läsa det första tecknet i varje rad i utdata.
Den typiska utgången av kommandot ls ser ut på följande sätt:

$ ls -l
total 8
-rw-r-r- 1 root root 22 Oct 6 15:33 anormalfile
brw-rw– 2 root disk 41, 0 May 5 1998 blockdev
crw-rw-rw-rw- 2 root root 5, 0 May 5 1998 characterdev
drwxr-xr-x 2 root 4096 Oct 6 15:33 subdir
lrwxrwxrwx 1 root root 11 Oct 6 15:35 symbolic -> anormalfile

Ordinära filer börjar med ett bindestreck (-), kataloger börjar med d, symboliska länkar börjar med bokstaven l, blockenheter börjar med bokstaven b och teckenenheter börjar med bokstaven c.

Ordinära filer
En vanlig fil kan bestå av alla typer av data, inklusive körbara program. De flesta filer i Linux filsystem är av den här typen.

Kataloger
En katalog är en fil som innehåller andra filer och kataloger och tillhandahåller pekare till dem.
Den fyller en liknande funktion som en mapp i ett arkivskåp, eftersom den gör det möjligt att gruppera relaterade filer på ett organiserat sätt. Medan mappar normalt sett bara kan innehålla filer kan kataloger dock innehålla ytterligare kataloger, ofta kallade underkataloger.

Symboliska länkar
En symbolisk – eller mjuk – länk pekar på namn och plats för en helt separat fil. Så när du öppnar, kopierar, flyttar eller på annat sätt hänvisar till länken utförs åtgärden i själva verket på den refererade filen. Denna skillnad är vanligtvis osynlig för användaren. Om den refererade filen tas bort eller byter namn bryts länken och ett fel uppstår om du försöker öppna den.

Du kan också skapa hårda länkar. En hårdlänk pekar på de faktiska uppgifterna i en fil på exakt samma sätt som en vanlig fil gör. Förutom namnet finns det därför ingen skillnad mellan originalfilen och en hårdlänk som pekar på samma data, och båda kan betraktas som vanliga filer. Du kan skilja en hårdlänk från någon annan vanlig fil endast genom antalet länkar som var och en har. Antalet länkar visas i det andra fältet i en ls -l-lista. Om detta antal är större än ett vet du att det finns ytterligare hårda länkar till data.

Enhetsfiler
Alla fysiska enheter som Linux använder representeras av enhetsfiler.
Enhetsfiler kan klassificeras som tecken- eller blockspecifika. Teckenspecialfiler representerar enheter som interagerar med Linux tecken för tecken, eller seriellt. Skrivare och terminaler är exempel på denna typ av enheter. Blockspecifika filer representerar enheter som hårddiskar, disketter och cd-roms som interagerar med Linux med hjälp av datablock.

Alla enhetsfiler finns i katalogen /dev – till exempel är filen som är associerad med systemets första diskettenhet /dev/fd0.

Enhetsfiler är extremt kraftfulla eftersom de gör det möjligt för användarna att komma åt hårdvaruenheter som diskettstationer, modem och skrivare som om de vore datafiler. Därför kan du enkelt flytta, kopiera och överföra data mellan sådana enheter, ofta utan att behöva använda speciella kommandon eller syntax.

Filnamn och sökvägar

Alla filer tilldelas ett filnamn, som kan vara upp till 256 tecken långt. Namnet kan bestå av en blandning av stora och små bokstäver, siffror och vissa skiljetecken som punkt, bindestreck eller understrykning.

Vissa tecken kan inte användas i filnamn. Du kan till exempel inte använda tecken som representerar en fältseparator – till exempel ett kommatecken – eller andra specialtecken som har särskild betydelse för skalet. De specialtecken som du inte kan använda är

! @ # $ % ^ & * ( ) { } ’ ” \ / | | ; < > ’

Pathnames
Du kan navigera mellan kataloger på kommandoraden med hjälp av pathnames. För att kunna använda sökvägar måste du förstå katalogstrukturen i Linux filsystem. Den högsta katalogen i Linux filsystem är rotkatalogen, som representeras av ett snedstreck (/). Under rotkatalogen finns de översta katalogerna, följt av en eller flera underkatalognivåer.

Filstruktur i ett Linux-filsystem
Du kan förflytta dig mellan kataloger med hjälp av relativa eller absoluta sökvägar.

Ett relativt sökvägsnamn börjar med din aktuella katalog. Om du till exempel vill byta till katalogen expenses från din hemkatalog skriver du

cd expenses

Relativa sökvägar kan börja med namnet på en fil eller katalog, eller med symboliska referenser till den aktuella katalogen (.) eller dess överordnade katalog (..), men aldrig med ett snedstreck framåt.

Ett enkelt exempel på ett Linux-filsystem
Ett absolut sökvägsnamn visar det fullständiga sökvägen från rotkatalogen (/). Med följande kommando kan du till exempel flytta från din nuvarande katalog direkt till underkatalogen applic i katalogen usr som ligger under rotkatalogen:

cd /usr/applic

Inoder, block och specialfiler

Inoder
Varje fil tilldelas ett unikt inodnummer. En inode är en struktur som definierar filens plats och attribut. Du kan kontrollera om en fil har ett inodnummer med hjälp av alternativet -i i kommandot ls. Du kan visa den information som en fils inode innehåller med hjälp av syntaxen stat filename. Den här kommandoutgången (stat results) visar den information som är relaterad till ”results”-filens inode.

$ stat results
Fil: ”results”
Storlek: 8
Filtyp: Regular file
Mode: (0644/-rw-r–r–)
Uid: ( 0/ root)
Gid: ( 0/ root)
Gid: ( 0/ root)
( 0/ root)
Device: 3,7 Inode: 123256 Länkar: 1
Access: ti jul 25 16:45:00 2000 (00072.18:31:07)
Modifiera: Tok Jul 20 12:35:20 2000 (00077.22:40:47)
Förändring: I det här exemplet är några av de attribut som visas filtyp, filstorlek, ägarens användar-ID (UID), antalet hårdlänkar som är associerade med filen och filens skapelse-, åtkomst- och modifieringstider.

En inod lagrar inte en fils namn. Filnamn lagras i kataloger med tillhörande inodnummer. I exemplet med kommandot stat fås filens namn från parametern filnamn som du angett.

Block
I Linux filsystem lagras filer i block, som är identiskt stora segment av diskutrymme. Generellt sett varierar storleken på ett block från 512 byte till 32 KB, beroende på Linuxinstallation. Den maximala storleken på en fil beror på den blockstorlek som används i filsystemet. Till exempel är den maximala filstorleken för ett ext2-filsystem 2 GB om det använder block på 512 byte.

Disksystem hämtar data i blockstora delar, så ju större blockstorlek desto effektivare åtkomst. Problemet med att skapa stora block är att det kan slösa diskutrymme. Om blockstorleken till exempel är 4 KB och de flesta filer endast innehåller några få byte data, slösas större delen av det 4096 byte stora diskutrymmet bort för varje fil. Men om du gör blockstorlekarna små blir diskåtkomsten relativt sett mindre effektiv.

Vissa kommandon, till exempel df, ger ut diskinformation i block på 1 KB, även om installationen lagrar filer i en annan blockstorlek. Ett enkelt sätt att kontrollera systemets blockstorlek är att använda kommandot du för att visa diskanvändningen. I det här exemplet visas diskanvändningen för alla filer som börjar med ”m”.

$ du -h m*
36k mail
4.0k mail.rc
12k mailcap
12k mailcap.vga
4.0k man.config
4.0k mc.global
148k midi
40k mime-magic
104k mime-magic.dat
8.0k mime.types
4.0k minicom.users
0 motd
4.0k mtab

I det här exemplet visar du-kommandots utdata filstorlekarna på disken i steg av blockstorleken, som i det här fallet är 4,0 KB. Ett undantag från den här regeln är när noll visas, vilket indikerar att filen är helt tom.

Speciella filer
Inom andra filtyper använder sig Linux av speciella filer, som är systemdefinierade filer som utför unika funktioner när de nås.

Speciella filer och deras funktioner

Om du till exempel behöver bli av med oönskad utdata från ett kommando kan du omdirigera utdata till filen /dev/null. I det här exemplet omdirigeras eventuella fel som genereras av kommandot find från stderr till /dev/null.

$ find / -n myfile 2> /dev/null

Lämna ett svar

Din e-postadress kommer inte publiceras.