Bestem en filtype ved å bruke "fil" Linux-kommandoen

De fleste ser på utvidelse av en fil og gjett deretter filtypen fra den utvidelsen. For eksempel, når du ser en fil med filtypen gif, jpg, bmp eller png, tenker du på en bildefil, og når du ser en fil med filtypen zip, antar du at filen har blitt komprimert med en zip-komprimeringsverktøy.

En fil kan bruke én filtype, men være noe helt annet. Linux bruker ikke filutvidelser; snarere er filtypen en del av filnavnet. For å finne ut den sanne filtypen, bruk fil kommando.

Linux-filkommando

Hvordan "fil"-kommandoen fungerer

Filkommandoen kjører tre sett med tester mot en fil:

  • Filsystemtester
  • Magiske tester
  • Språkprøver

Det første settet med tester som returnerer et gyldig svar ber om filtypen som skal skrives ut.

Filsystemtester undersøker returen fra et statistisk systemkall. Programmet sjekker om filen er tom og om det er en spesiell fil. Hvis filtypen finnes i systemoverskriftsfilen, returneres den som den gyldige filtypen.

De magiske testene sjekker innholdet i en fil og spesifikt noen få byte i begynnelsen som hjelper til med å bestemme filtypen. Ulike filer brukes til å matche en fil med filtypen, og disse lagres i:

  • /etc/magic
  • /usr/share/misc/magic.mgc
  • /usr/share/misc/magic

Overstyr disse filene ved å plassere en fil i hjemmemappen som heter $HOME/.magic.mgc eller $HOME/.magic.

De avsluttende prøvene er språkprøver. Filen sjekkes for å se om det er en tekstfil. Ved å teste de første par bytene av en fil, utleder testen om filen er en ASCII, UTF-8, UTF-16 eller et annet format som identifiserer filen som en tekstfil. Når tegnsettet er utledet, testes filen mot forskjellige språk.

Hvordan bruke 'fil'-kommandoen

De fil kommandoen har følgende form:

fil filnavn. 

For eksempel for å sjekke typen til en filtittel touch.svg, utfør følgende kommando:

fil touch.svg. 

Utgangen er omtrent slik:

  • touch.svg: SVG Scalable Vector Graphics-bilde

Ulike filtyper gir forskjellige resultater, for eksempel:

  • ODS filtype: OpenDocument-regneark
  • PDF-filtype: PDF-dokument, versjon 1.4
  • CSV-filtype: ASCII-tekst, med svært lange linjer, med CRLF-linjeindikatorer

Håndtere flere filer

Som standard fungerer filkommandoen med en enkelt fil. Du kan imidlertid spesifisere et filnavn som inneholder en liste over filer som skal behandles av fil kommando.

Åpne for eksempel en fil som heter testfiler bruker nano redaktør og legg til disse linjene:

  • /etc/passwd
  • /etc/pam.conf
  • /etc/opt

Lagre filen og kjør følgende filkommando:

fil -f testfiler. 

Utgangen vil være noe slikt:

  • /etc/passwd: ASCII-tekst
  • /etc/pam.conf: ASCII-tekst
  • /etc/opt: katalog

En annen metode er å kjøre fil kommando én gang, men spesifiserer flere mål. For eksempel:

filen /etc/passwd /etc/pam.conf /etc/opt

Utgangen vil være noe slikt:

  • /etc/passwd: ASCII-tekst
  • /etc/pam.conf: ASCII-tekst
  • /etc/opt: katalog

Standard jokertegn fungerer også. For å teste alle filene i den nåværende arbeidskatalogen, bruk for eksempel:

fil *

For å teste for kataloger som starter med bokstaven D (skiller mellom store og små bokstaver), prøv dette:

arkivert*

Resultatene kan for eksempel være skrivebord, dokumenter og nedlastinger.

Komprimerte filer

Når du kjører fil kommando mot en komprimert fil ser du utdata noe som dette:

  • file.zip: ZIP-arkivdata, minst V2.0 for å pakke ut

Selv om dette resultatet forteller deg at filen er en arkivfil, vet du ikke innholdet i filen. Se inne i zip-filen for å se filtypene til filene i den komprimerte filen. Følgende kommando kjører filkommandoen mot filene i en ZIP-fil:

fil -z filnavn. 

Utdataene viser nå filtypene av filer i arkivet.