Hvad betyder alt er en fil betyder i Linux?
En af de grundlæggende funktioner i Linux og andre UNIX-lignende operativsystemer er, at "alt er en fil." Dette er en forenkling, men forståelse hvad det betyder hjælper dig med at forstå, hvordan Linux fungerer.
Mange ting på Linux vises i dit filsystem, men de er faktisk ikke filer. De er specielle filer, der repræsenterer hardwareenheder, systemoplysninger og andre ting - herunder en tilfældig talegenerator.
Disse særlige filer kan være placeret i pseudo- eller virtuelle filsystemer som / dev, som indeholder specielle filer, der repræsenterer enheder og / proc, som indeholder specielle filer, der repræsenterer system- og procesoplysninger.
/ proc
Lad os f.eks. Sige, at du vil finde oplysninger om din CPU. Kataloget / proc indeholder en speciel fil - / proc / cpuinfo - der indeholder disse oplysninger.
Du behøver ikke en speciel kommando, der fortæller dig din CPU info - du kan bare læse indholdet af denne fil ved hjælp af en standardkommando, der fungerer med plain-text filer. For eksempel kan du bruge kommandoen kat / proc / cpuinfo at udskrive denne fils indhold til terminalen - udskrivning af CPU-informationen til terminalen. Du kan endda åbne / proc / cpuinfo i et tekstredigeringsprogram for at se indholdet.
Husk, at / proc / cpuinfo ikke er en tekstfil, der indeholder disse oplysninger - Linux-kernen og proc-filsystemet udsætter disse oplysninger for os som en fil. Dette giver os mulighed for at bruge velkendte værktøjer til at se og arbejde med oplysningerne.
Kataloget / proc indeholder også andre lignende filer, for eksempel:
- / proc / uptime - Viser opetiden for din Linux-kerne - med andre ord, hvor længe dit system har været tændt uden at lukke ned.
- / proc / version - Viser versionen af din Linux-kerne.
/ dev
I / dev-mappen finder du filer, der repræsenterer enheder - samt filer, der repræsenterer andre specielle ting. For eksempel er / dev / cdrom dit cd-rom-drev. / dev / sda repræsenterer din første harddisk, mens / dev / sda1 repræsenterer den første partition på din første harddisk.
Vil du montere din cd-rom? Kør mount-kommandoen og specificer / dev / cdrom som den enhed, du vil montere. Vil du opdele din første harddisk? Kør et diskpartitioneringsværktøj og specificer / dev / sda som den harddisk, du vil redigere. Vil du formatere den første partition på din første harddisk? Kør en formateringskommando og fortæl det om at formatere / dev / sda1.
Som du kan se, har eksponering af disse enheder som en del af filsystemet sine fordele. Filsystemet giver en ensartet "navneplads", som alle applikationer kan bruge til at adressere og få adgang til enhederne.
/ dev / null, / dev / random, og / dev / zero
/ Dev-filsystemet indeholder ikke kun filer, der repræsenterer fysiske enheder. Her er tre af de mest bemærkelsesværdige specielle enheder, den indeholder:
- / dev / null - Slet alle data skrevet til det - tænk på det som en papirkurv eller et sort hul. Hvis du nogensinde ser en kommentar, der fortæller dig at sende klager til / dev / null - det er en geeky måde at sige "smide dem i skraldespanden."
- / dev / random - Producerer tilfældighed ved brug af miljøstøj. Det er en tilfældig talegenerator, du kan trykke på.
- / dev / zero - Producerer nuller - en konstant strøm af nuller.
Hvis du tænker på disse tre som filer, vil du ikke se en brug for dem. I stedet skal du tænke på dem som værktøjer.
For eksempel producerer Linux-kommandoer som standard fejlmeddelelser og andre output, som de udskriver til standardudgangen, normalt terminalen. Hvis du vil køre en kommando og ikke er ligeglad med dens output, kan du omdirigere den output til / dev / null. Omdirigering af en kommandos output til / dev / null kasserer straks det. I stedet for at have hver kommando implementere sin egen "stille tilstand", kan du bruge denne metode med en kommando.
kommando> / dev / null
Hvis du ville have en tilfældighedskilde - sig for at generere en krypteringsnøgle, behøver du ikke at skrive din egen tilfældige talgenerator - du kan bruge / dev / random.
For at slette indholdet af en harddisk ved at skrive 0'er til den behøver du ikke et særligt værktøj dedikeret til nul'ing af et drev - du kan bruge standardværktøjer og / dev / zero. F.eks dd Kommando læser fra et sted og skriver til et andet sted. Følgende kommando ville læse nuller fra / dev / zero og skrive dem direkte til den første harddiskpartition på dit system, fuldstændigt slette indholdet.
(Advarsel: Denne kommando sletter alle data på din første partition, hvis du kører den. Kør kun denne kommando, hvis du vil ødelægge data.)
dd if = / dev / zero of = / dev / sda1
Her bruger vi dd med specielle filer (/ dev / zero og / dev / sda1), men vi kunne også bruge dd til at læse fra og skrive til faktiske filer. Den samme kommando fungerer både til at manipulere enheder direkte og arbejde med filer.
Afklaring
I praksis er det mere præcist at sige at "alt er en strøm af bytes" end "alt er en fil." / Dev / random er ikke en fil, men det er bestemt en strøm af bytes. Og selv om disse ting teknisk set ikke er filer, er de tilgængelige i filsystemet - filsystemet er et universelt "navneområde", hvor alt er tilgængeligt. Vil du få adgang til en tilfældig talegenerator eller læse direkte fra en enhed? Du finder både i filsystemet; ingen anden form for adressering nødvendig.
Selvfølgelig er nogle ting ikke filer - processer, der kører på dit system, er ikke en del af filsystemet. "Alt er en fil" er unøjagtigt, men mange ting virker som filer.