”Hur många filtyper finns det i Linux/Unix och vilka är de?” Detta är en vanlig fråga för varje person som börjar lära sig Linux. O.K., varför är det så viktigt att känna till filtyper?
Svar: Det beror på att Linux betraktar allting som en fil. När du börjar arbeta på en Linux/Unix-box måste du hantera olika filtyper (linux/unix) för att effektivt hantera dem
Hur många filtyper finns det i Linux/Unix?
Som standard har Unix endast 3 filtyper. De är:
Regulära filer
-
Katalogfiler
-
Speciella filer (Denna kategori har 5 undertyper)
Så i praktiken har vi totalt 7 typer (1+1+5) av filer i Linux/Unix. Och i Solaris har vi 8 typer. Och du kan se filtypsangivelsen längst till vänster i kommandot ”ls -l”.
Här är dessa filtyper.
-
Regular file(-)
-
Katalogfiler(d)
Särskilda filer
- Blockfil(b)
- Karaktärsenhetsfil(c)
- Namnsatt pipefil eller bara en pipe. file(p)
- Symbolisk länk file(l)
- Socket file(s)
För din information finns det ytterligare en filtyp som heter door file(D) och som finns i Sun Solaris som tidigare nämnts. En door-fil är en särskild fil för kommunikation mellan processer mellan en klient och en server (totalt 8 typer i Unix-maskiner). Vi kommer att lära oss om olika typer av filer enligt nedanstående sekvens för varje filtyp:
Definition och information om filtypen
Hur man skapar en viss filtyp
Hur man listar/ser en viss filtyp
Reguljära filtyper förklarade i Linux
Dessa är de filer som anges med ”-” i ls -l kommandots utdata i början av raden. Och dessa filer är.
1. Läsbar fil eller
2. En binär fil eller
3. Bildfiler eller
4. Komprimerade filer etc.
Hur skapar man vanliga filer i Linux/Unix?
Ans: Använd touch/vi-kommandot och omdirigeringsoperatorer etc.
Hur kan vi lista reguljära filer?
ls -l | grep ^-
Exempel på listning av reguljära filer :
-rw-r--r-- 1 krishna krishna krishna 20986522 2010-01-31 13:48 test.wmv
-rw-r--r-- 1 krishna krishna krishna 173448 2010-01-30 21:20 Transformers-Teaser-Wallpaper-310.jpg
-r-xr-xr-xx 1 root root 135168 2009-12-12 19:14 VIDEO_TS.VOB
-rw-r--r--r-- 1 krishna krishna 2113536 2009-12-01 13:32 Aditya 365 - Janavule.mp3
-rwxrwxrwx 1 root root 168 2010-02-14 14:12 xyz.sh
Directory file type explained in Linux/Unix
Den här typen av filer innehåller vanliga filer/mappar/specialfiler som lagras på en fysisk enhet. Och denna typ av filer kommer att vara i blå färg med länk större än eller lika med 2.
Hur kan vi lista dem i min nuvarande arbetskatalog?
ls -l | grep ^d
Exempel på listning av kataloger.
drwxr-xr-x 2 surendra surendra 4096 2010-01-19 18:37 bin
drwxr-xr-x 5 surendra surendra 4096 2010-02-15 18:46 Desktop
drwxr-xr-x 2 surendra surendra 4096 2010-01-18 14:36 Documents
drwxr-xr-x 2 surendra surendra 4096 2010-02-13 17:45 Downloads
Hur skapar man dem?
Ans : Använd kommandot mkdir
Blockfiltyp i Linux
Dessa filer är hårdvarufiler de flesta av dem finns i /dev.
Hur skapar man dem?
Ans : Använd kommandot fdisk eller skapa en virtuell partition.
Hur kan vi lista dem i min nuvarande arbetskatalog?
ls -l | grep ^b
Exempel på en lista över blockfiler (för att du ska kunna se dessa filer finns de 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
Karaktärsinformationsfiler i Linux
Givar en seriell inmatnings- eller utmatningsström.Dina terminaler är klassiska exempel på denna typ av filer.
Hur kan vi lista teckenfiler i min nuvarande arbetskatalog?
ls -l | grep ^c
Exempel på listning av teckenfiler(ligger 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
Det andra namnet på pipe är en ”namngiven” pipe, som ibland kallas FIFO. FIFO står för ”First In, First Out” (första in, första ut) och syftar på egenskapen att ordningen på de bytes som går in är densamma som när de kommer ut. ”Namnet” på en namngiven pipe är egentligen ett filnamn i filsystemet.
Hur skapar man dem?
Ans: Använd kommandot mkfifo.
Hur kan vi lista teckenfiler i min nuvarande arbetskatalog?
ls -l | grep ^p
Exempel på listning av 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
symboliska länkfiler i Linux
Dessa är länkade filer till andra filer. De är antingen Directory/Regular File. Inodnumret för den här filen och dess överordnade filer är detsamma. Det finns två typer av länkfiler i Linux/Unix, nämligen mjuka och hårda länkar.
Hur skapar man dem?
Ans : använd kommandot ln
Hur kan vi lista länkade filer i min nuvarande arbetskatalog?
ls -l | grep ^l
Exempel på listning av länkade filer
lrwxrwxrwx 1 root root 24 2010-02-15 09:35 sndstat -> /proc/asound/oss/sndstat
lrwxrwxrwx 1 root root 15 2010-02-15 09:35 stderr -> /proc/self/fd/2
lrwxrwxrwx 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
Socketfiler i Linux
En socketfil används för att överföra information mellan program i kommunikationssyfte
Hur skapar man dem?
Ans : Du kan skapa en socket-fil med hjälp av systemanropet socket() som finns tillgängligt under
Exempel i C-programmering
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
Du kan hänvisa till denna socket-fil med sockfd. Detta är samma sak som filbeskrivningen, och du kan använda read(), write() systemanropen för att läsa och skriva från socket.
Hur kan vi lista socketfiler i min nuvarande arbetskatalog?
ls -l | grep ^s
Exempel på listning av 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
srwxrwxrwxrwx 1 mysql mysql 0 2010-02-15 09:35 /var/run/mysqld/mysqld.sock
Ett tips till er. Hur hittar man önskad typ av fil?
Ans : Använd kommandot find med alternativet -type. Om du till exempel vill hitta en socket-fil är det bara att använda nedanstående kommando. find / -type s Om du vill hitta en länkad fil, hur gör du då? Find / -type l
Thats it….