“Hvor mange filtyper er der i Linux/Unix, og hvad er de?” Dette er et almindeligt spørgsmål til enhver person, der begynder at lære Linux. O.K., hvorfor er det så vigtigt at kende filtyper?
Svar: Det skyldes, at Linux betragter alle ting som en fil. Når du begynder at arbejde på en Linux/Unix-boks, skal du håndtere forskellige filtyper (linux/unix) for effektivt at administrere dem
Hvor mange filtyper er der i Linux/Unix?
Som standard har Unix kun 3 filtyper. De er:
Regulære filer
-
Katalogfiler
-
Speciale filer(Denne kategori har 5 undertyper i sig.)
Så i praksis har vi i alt 7 typer (1+1+5) filer i Linux/Unix. Og i Solaris har vi 8 typer. Og du kan se filtypebetegnelsen længst til venstre i kommandoen “ls -l”.
Her er disse filtyper.
-
Regulær fil(-)
-
Katalogfiler(d)
Særlige filer
- Blockfil(b)
- Karakterenhedsfil(c)
- Navnet pipe-fil eller bare en pipe file(p)
- Symbolsk link file(l)
- Socket file(s)
Til din information er der endnu en filtype kaldet door file(D), som findes i Sun Solaris som tidligere nævnt. En dør er en særlig fil til kommunikation mellem processer mellem en klient og en server (i alt 8 typer i Unix-maskiner). Vi vil lære om forskellige filtyper som nedenstående sekvens for hver filtype.
Definition og oplysninger om filtypen
Sådan oprettes en bestemt filtype
Sådan liste/se en bestemt filtype
Regulær filtype forklaret i Linux
Dette er de filer, der er angivet med “-” i ls -l-kommandoens output i starten af linjen. Og disse filer er.
1. Læsbar fil eller
2. En binær fil eller
3. Billedfiler eller
4. Komprimerede filer osv.
Hvordan opretter man almindelige filer i Linux/Unix?
Ans: Brug touch/vi-kommandoen og omdirigeringsoperatorer osv.
Hvordan kan vi liste regulære filer?
ls -l | grep ^-
Eksempel på liste over regulære filer :
-rw-r--r-- 1 krishna krishna krishna 20986522 2010-01-31 13:48 test.wmv
-rw-r--r--r-- 1 krishna krishna krishna 173448 2010-01-30 21:20 Transformers-Teaser-Wallpaper-310.jpg
-r-xr-xr-xr-x 1 root root 135168 2009-12-12-12 19:14 VIDEO_TS.VOB
-rw-r-r--r--r-- 1 krishna krishna krishna 2113536 2009-12-01 13:32 Aditya 365 - Janavule.mp3
-rwxrwxrwxrwx 1 root root 168 2010-02-14 14:12 xyz.sh
Katalog filtype forklaret i Linux/Unix
Denne filtype indeholder almindelige filer/mapper/specielle filer, der er gemt på en fysisk enhed. Og denne type filer vil være i blå i farve med link større end eller lig med 2.
Hvordan kan vi liste dem i min nuværende arbejdsmappe?
ls -l | grep ^d
Eksempel på oplistning af mapper.
drwxr-xr-x 2 surendra surendra surendra 4096 2010-01-19 18:37 bin
drwxr-xr-xr-x 5 surendra surendra surendra 4096 2010-02-15 18:46 Desktop
drwxr-xr-xr-x 2 surendra surendra 4096 2010-01-18 14:36 Documents
drwxr-xr-xr-x 2 surendra surendra 4096 2010-02-13 17:45 Downloads
Hvordan opretter man dem?
Ans : Brug mkdir kommandoen
Block filtype i Linux
Disse filer er hardwarefiler de fleste af dem er til stede i /dev.
Hvordan opretter man dem?
Ans : Brug kommandoen fdisk eller opret virtuel partition.
Hvordan kan vi liste dem i min nuværende arbejdskatalog?
ls -l | grep ^b
Eksempel på liste over blokfiler (for at du kan se disse filer, er de placeret i /dev).
brw-rw---- 1 root disk 8, 1 2010-02-15 09:35 sda1
brw-rw---- 1 root disk 8, 2 2010-02-15 09:35 sda2
brw-rw---- 1 root disk 8, 5 2010-02-15 09:35 sda5
Karakterenhedsfiler i Linux
Giver en seriel strøm af input eller output.Dine terminaler er et klassisk eksempel på denne type filer.
Hvordan kan vi liste karakterfiler i min nuværende arbejdsmappe?
ls -l | grep ^c
Eksempel på liste over karakterfiler(placeret i /dev)
crw-rw-rw- 1 root tty 5, 0 2010-02-15 16:52 tty
crw--w---- 1 root root 4, 0 2010-02-15 09:35 tty0
crw------- 1 root root 4, 1 2010-02-15 09:35 tty1
Pipe-filer i Linux/Unix
Den anden betegnelse for pipe er en “navngiven” pipe, som nogle gange kaldes en FIFO. FIFO står for “First In, First Out” og henviser til den egenskab, at rækkefølgen af de bytes, der går ind, er den samme som de bytes, der kommer ud. “Navnet” på et navngivet pipe er faktisk et filnavn i filsystemet.
Hvordan oprettes de?
Ans: Brug kommandoen mkfifo.
Hvordan kan vi liste tegnfiler i min nuværende arbejdskatalog?
ls -l | grep ^p
Eksempel på liste over pipe-filer
prw-r----- 1 root root 0 2010-02-15 09:35 /dev/.initramfs/usplash_outfifo
prw-r----- 1 root root 0 2010-02-15 09:35 /dev/.initramfs/usplash_fifo
prw------- 1 syslog syslog 0 2010-02-15 15:38 /var/run/rsyslog/kmsg
symbolske linkfiler i Linux
Dette er linkfiler til andre filer. De er enten Directory/Regular File. Inode-nummeret for denne fil og dens overordnede filer er det samme. Der findes to typer linkfiler i Linux/Unix, nemlig soft- og hardlink.
Hvordan oprettes de?
Ans : brug kommandoen ln
Hvordan kan vi liste linkede filer i min nuværende arbejdsmappe?
ls -l | grep ^l
Eksempel på liste over linkede filer
lrwxrwxrwx 1 root root 24 2010-02-15 09:35 sndstat -> /proc/asound/oss/sndstat
lrwxrwxrwxrwx 1 root root 15 2010-02-15 09:35 stderr -> /proc/self/fd/2
lrwxrwxrwxrwx 1 root root 15 2010-02-15 09:35 stdin -> /proc/self/fd/0
lrwxrwxrwxrwx 1 root root 15 2010-02-15 09:35 stdout -> /proc/self/fd/1
Socket-filer i Linux
En socket-fil bruges til at overføre oplysninger mellem programmer til kommunikationsformål
Hvordan oprettes de?
Ans : Du kan oprette en socket-fil ved hjælp af socket() systemopkaldet, der er tilgængeligt under
Eksempel i C-programmering
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
Du kan henvise til denne socket-fil ved hjælp af sockfd. Dette er det samme som filbeskrivelsen, og du kan bruge read(), write() systemkald til at læse og skrive fra socket.
Hvordan kan vi liste socketfiler i min nuværende arbejdskatalog?
ls -l | grep ^s
Eksempel på liste over socketfiler.
srw-rw-rw- 1 root root 0 2010-02-15 09:35 /dev/log
srwxrwxrwxrwx 1 root root 0 2010-02-15 10:07 /var/run/cups/cups.sock
srwxrwxrwxrwx 1 root root 0 2010-02-15 09:35 /var/run/samba/winbindd_privileged/pipe
srwxrwxrwxrwxrwx 1 mysql mysql 0 2010-02-15 09:35 /var/run/mysqld/mysqld.sock
Et tip til jer. Hvordan finder du den ønskede filtype?
Ans : Brug find-kommandoen med -type-indstillingen. Hvis du f.eks. ønsker at finde socket-fil, skal du blot bruge nedenstående kommando. find / -type s Hvis du ønsker at finde linket fil, hvordan? Find / -type l
Det er….