Vi bruker Linux-kommandoen «ls» daglig, ofte uten å reflektere over dens potensial. Det er synd, for ved å utforske den nærmere, vil du oppdage en mengde nyttige funksjoner – inkludert noen som absolutt bør være en del av ditt kommandolinjerepertoar.
«ls» viser filer og mapper
Kommandoen «ls» er sannsynligvis den første kommandoen de fleste som bruker Linux kommer i kontakt med. De av oss som tilbringer mye tid i kommandolinjen bruker den kontinuerlig, nesten automatisk. Dette kan forklare hvorfor denne kommandoen har flere funksjoner enn de fleste er klar over. Vi bruker den for å vise filer og se innholdet i en mappe. Vi bruker «ls -l» for å sjekke filrettigheter, men der stopper ofte utforskingen.
«ls» er en kommando med et rikt utvalg av alternativer. Kanskje det er en del av utfordringen. Med så mange alternativer, hvordan finner man de nyttige? Og når man har funnet dem, hvordan husker man dem?
Nyttige kombinasjoner av «ls»-kommandoen med dens ulike alternativer og parametere er ideelle kandidater for aliaser. Faktisk er det du tenker på som den «rene» «ls»-kommandoen i de fleste distribusjoner, et alias. Kommandoen «type» kan brukes for å vise den underliggende definisjonen av aliaser. La oss se på definisjonen av «ls»:
type ls
Parametrene «–color=auto» inkluderes automatisk hver gang du bruker «ls»-kommandoen. Dette gir de ulike fargene som indikerer ulike filtyper i listene.
Enkle lister
Alle som har brukt litt tid i Linux-terminalen vet at «ls» som standard viser filer og mapper i den nåværende mappen.
ls
Hvis du ønsker at oppføringen skal vises i én enkelt kolonne, bruk alternativet «-1» (én fil per linje):
ls -1
Vi kommer tilbake til det merkelige filnavnet øverst på listen om litt.
Bruke «ls» på forskjellige mapper
For å få «ls» til å vise filene i en annen mappe enn den gjeldende mappen, sender du banen til mappen til «ls» på kommandolinjen. Du kan også sende inn mer enn én mappe til «ls» og få dem listet etter hverandre. Her ber vi «ls» om å liste filene i to mapper, en kalt «Hjelp» og den andre kalt «gc_help.»
ls Help gc_help
Når «ls» har listet innholdet i den første mappen, viser den innholdet i den andre. Den skriver ut navnet på hver mappe mens den behandler dem:
Bruke filmønstre
For å selektivt liste et sett med filer, kan du bruke mønstermatching. Spørsmålstegnet «?» representerer et enkelt tegn, og stjernen «*» representerer en hvilken som helst streng av tegn. For å liste filer eller mapper som har navn som begynner med «ip_», bruker du dette formatet:
ls ip_*
For å vise filer som har «.c»-endelser, bruker du dette formatet:
ls *.c
Du kan også bruke «ls» sammen med «grep», og dra nytte av «grep’s mønstertilpasningsmuligheter. La oss søke etter filer som har strengen «_pin_» i navnet:
ls | grep _pin_
Dette er nesten det samme som å bruke «ls» alene, med to jokertegn:
ls | grep _pin_
ls *_pin_*
Hvorfor nesten det samme? Merk de ulike layoutene. «grep» tvinger utdataene til et enkelt filnavn per linjeformat.
Tegn som ikke skrives ut
Det er mulig å støte på filnavn som inneholder et ikke-utskrivbart tegn eller kontrolltegn. Dette kan ofte skje når du pakker ut en nedlastet arkivfil, eller kloner et git-repositorium der den opprinnelige skaperen har laget en fil med et uvanlig navn, uten å oppdage feilen.
Vår merkelige fil er et slikt tilfelle:
Hvis vi ser på det i filutforskeren og trykker «F2» for å gi det nytt navn, blir tegnene som ikke skrives ut, representert med et merkelig symbol.
Du kan bruke alternativet «-b» (escape) for å vise hva filnavnet faktisk inneholder. Dette alternativet tvinger «ls» til å bruke escape-sekvensene fra C-programmeringsspråket for å representere kontrolltegnene.
ls -b a*
Det mystiske tegnet viser seg å være et linjeskift-tegn, representert i C som «\n».
Ignorere filer
For å ekskludere visse filer fra en liste, bruk alternativet «–hide». La oss si at du ikke vil se sikkerhetskopifiler med endelsen «.bak» i listen. Du kan bruke denne kommandoen:
ls
ls --hide=*.bak
«.bak»-filene er ikke inkludert i den andre listen.
Lang formatvisning
Alternativet «-l» (lang liste) får «ls» til å gi detaljert informasjon om hver fil.
ls -l
Det er mye informasjon her, så la oss gå gjennom den.
Det første som vises er den totale størrelsen på alle filene i listen. Deretter vises hver fil eller mappe på en egen linje.
Den første delen med ti bokstaver og bindestreker er filtypen og filrettighetene for eier, gruppe og andre.
Det aller første tegnet representerer filtypen. Det vil være en av:
– | En vanlig fil. |
b | En blokk spesialfil. |
c | En tegn spesialfil. |
d | En mappe. |
l | En symbolsk lenke. |
n | En nettverksfil. |
p | En navngitt pipe. |
s | En stikkontakt. |
De neste ni tegnene er tre grupper med tre tegn som vises sammenhengende. Hver gruppe på tre representerer lese-, skrive- og utførelsesrettighetene, i den rekkefølgen. Hvis tillatelsen er gitt, vises en «r», «w» eller «x». Hvis tillatelsen ikke er gitt, vises en bindestrek.
Det første settet med tre tegn er rettighetene for filens eier. Det andre settet med tre tillatelser er for gruppemedlemmer, og det siste settet med tre tillatelser er for andre brukere.
Noen ganger er utførelsesrettigheten for eieren representert med en «s». Dette er setuid-biten. Hvis den er til stede, betyr det at filen kjøres med privilegiene til eieren, ikke brukeren som kjører filen.
Utførelsesrettigheten for gruppen kan også være en «s». Dette er setgid-biten. Når dette brukes på en fil, betyr det at filen vil bli utført med privilegiene til eierens gruppe. Når den brukes på en mappe, vil alle filer som opprettes i den, ta gruppetillatelsene fra mappen de blir opprettet i, ikke fra brukeren som oppretter filen.
Utførelsesrettigheten for andre kan noen ganger representeres av en «t». Dette er sticky bit. Det brukes vanligvis på mapper. Hvis dette er satt, er det bare fileieren, eieren av mappen eller rotbrukeren som kan endre navn eller slette filer i mappen, uavhengig av lese- og skrive rettigheter som er satt på filene i mappen.
En vanlig bruk av sticky bit er på mapper som «/tmp». Dette kan skrives av alle brukere på datamaskinen. Sticky biten i mappen sikrer at brukere – og prosesser startet av brukerne – bare kan endre navn eller slette sine egne midlertidige filer.
Vi kan se sticky biten i «/tmp»-mappen. Merk bruken av alternativet «-d» (katalog). Dette får «ls» til å rapportere om detaljene i mappen. Uten dette alternativet ville «ls» rapportere om filene inne i mappen.
ls -l -d /tmp
Tallet etter rettighetene er antall harde lenker til filen eller mappen. For en fil er dette vanligvis én, men hvis det er opprettet andre harde lenker, vil dette tallet øke. En mappe har vanligvis minst to harde lenker. Den ene er en lenke til seg selv, og den andre er oppføringen i dens overordnede mappe.
Navnet på eieren og gruppen vises deretter. De følges av filstørrelsen og datoen for siste endring av filen. Til slutt er filnavnet oppgitt.
Menneskelig lesbare filstørrelser
Det er ikke alltid praktisk å ha filstørrelsene i antall byte. For å se filstørrelsene i de mest passende enhetene (Kilobyte, Megabyte, etc.), bruk alternativet «-h» (human readable):
ls -l -h
Viser skjulte filer
For å se skjulte filer, bruk alternativet «-a» (all):
ls -l -a
De to oppføringene «.» og «..» representerer henholdsvis den gjeldende mappen og den overordnede mappen. En fil kalt «.base_settings» er nå synlig for første gang.
Utelater «.» og «..» fra oppføringer
Hvis du ikke vil at listen skal være rotete med «.» og «..» oppføringer, men du likevel vil se skjulte filer, bruk alternativet «-A» (almost all):
ls -l -A
Den skjulte filen vises fortsatt, men «.» og «..» oppføringene er utelatt.
Liste mapper rekursivt
For å få en liste over filene i alle undermapper, bruk alternativet «-R» (recursive):
ls -l -R
«ls» går gjennom hele mappestrukturen under startmappen, og viser filene i hver undermappe.
Viser UID og GID
For å vise bruker-ID og gruppe-ID i stedet for brukernavn og gruppenavn, bruk alternativet «-n» (numerical uid and gid):
ls -n
Sortering av listene
Du kan sortere listen etter filendelse, filstørrelse eller endringstidspunkt. Disse alternativene trenger ikke brukes med det lange listeformatet, men det er vanligvis fornuftig å gjøre det. Hvis du sorterer etter filstørrelse, er det fornuftig å se filstørrelsene i listen. Når du sorterer etter filtype, er ikke det lange listeformatet like viktig.
For å sortere etter filendelse, bruk alternativet «-X» (sort by extension):
ls -X -1
Mappene vises først (uten endelser), deretter følger resten i alfabetisk rekkefølge, i henhold til filendelsene.
For å sortere etter filstørrelse, bruk alternativet «-S» (sort by size):
ls -l -h -S
Sorteringsrekkefølgen er fra størst til minst.
For å sortere listen etter endringstidspunkt, bruk alternativet «-t» (sort by time):
ls -l -t
Listen er sortert etter endringstidspunkt.
Hvis filendringstidspunktet er innenfor gjeldende år, er informasjonen som vises, måned, dag og klokkeslett. Hvis endringsdatoen ikke var i gjeldende år, er informasjonen som vises, måned, dag og år.
En rask måte å finne de nyeste og eldste filene i en mappe på, er å bruke «ls» sammen med kommandoene «head» og «tail».
For å hente den nyeste filen eller mappen, bruk denne kommandoen:
ls -t | head -1
For å hente den eldste filen eller mappen, bruk denne kommandoen:
ls -t | tail -1
For å snu sorteringsrekkefølgen
For å reversere en hvilken som helst sorteringsrekkefølge, bruk alternativet «-r» (reverse):
ls -l -h -S -r
Listen er nå sortert fra den minste filen til den største filen.
Og det er mer
Sjekk ut manualsiden for «ls», det finnes mange flere alternativer. Noen av dem dekker temmelig spesifikke bruksområder, men av og til vil du være glad for at du kjenner til dem.
Trenger du å se filers tidsstempel med den maksimale presisjonen som Linux kan gi? Bruk alternativet «–full-time»:
ls --full-time
Kanskje du vil se inodenummeret til filene? Bruk inode-alternativet:
ls -i
Jobber du på en monokrom skjerm og ønsker å fjerne all risiko for å forveksle filer med mapper og lenker? Bruk klassifiseringsalternativet, og «ls» vil legge til en av disse til hver oppføring:
/ | En mappe. |
@ | En symbolkobling. |
| | En navngitt pipe. |
= | En stikkontakt. |
* | En kjørbar fil |
ls -F
Gjør litt undersøkelse. Du vil oppdage at «ls» er en rik kilde, og du vil fortsette å finne nyttige funksjoner.