Hvordan bruke ls-kommandoen til å liste filer og kataloger på Linux

Vi bruker Linux ls-kommandoen hver dag uten å tenke på det. Det er synd. Vær litt oppmerksom på det, og du vil finne mange nyttige alternativer – inkludert noen du bør legge til i kommandolinjearsenalet ditt.

ls Viser filer og kataloger

Kommandoen ls er sannsynligvis den første kommandoen de fleste Linux-brukere møter. De av oss som henger rundt kommandolinjen bruker den dag ut og dag inn uten å tenke på det. Det kan forklare hvorfor denne kommandoen har mer enn de fleste brukere er klar over. Vi viser filer med den for å se hva som er i en katalog. Vi viser filer i langt format når vi ønsker å se på tillatelsene på en fil. Utover det tar det lite hensyn.

ls-kommandoen er en av disse kommandoene med et vell av alternativer. Kanskje dette er en del av problemet. Det er så mange alternativer, hvordan siler du gjennom dem for å finne de nyttige? Og etter å ha funnet dem, hvordan husker du dem?

Nyttige permutasjoner av ls-kommandoen med deres strenger av alternativer og parametere er de perfekte kandidatene for aliaser. Faktisk, i de fleste distribusjoner, er det du tenker på som «naken» ls-kommandoen faktisk et alias. Type-kommandoen kan blant annet brukes til vis den underliggende definisjonen av aliaser. La oss se på definisjonen av ls:

type ls

–color=auto-parametrene inkluderes automatisk hver gang du bruker ls-kommandoen. Det er dette som gir de forskjellige fargene for de forskjellige filtypene i oppføringene.

Enkle lister

Alle som har brukt litt tid på Linux-terminalen vet at ls som standard viser filene og katalogene i gjeldende katalog.

ls

Hvis du vil ha oppføringen din produsert i én enkelt kolonne, bruk alternativet -1 (én fil per linje):

ls -1

Vi vil diskutere det merkelige filnavnet øverst på listen om et minutt.

Bruke ls på forskjellige kataloger

For å få ls til å liste filene i en annen katalog enn den gjeldende katalogen, send stien til katalogen til ls på kommandolinjen. Du kan også sende mer enn én katalog til ls, og få dem oppført etter hverandre. Her ber vi ls om å liste filene i to kataloger, en kalt «Hjelp» og den andre kalt «gc_help.»

ls Help gc_help

Når ls har listet innholdet i den første katalogen, viser den innholdet i den andre. Den skriver ut navnet på hver katalog mens den behandler dem:

  Hvordan spille Super Flight på Linux

Bruke filmønstre

For å selektivt liste et sett med filer, bruk mønstertilpasning. Spørsmålstegnet «?» vil representere et enkelt tegn og stjernen «*» vil representere en hvilken som helst streng med tegn. For å liste opp filer eller kataloger som har navn som begynner med «ip_», bruk dette formatet:

ls ip_*

For å vise filer som har «.c»-utvidelser, bruk dette formatet:

ls *.c

Du kan også bruke ls med grep , og bruke greps mønstertilpasningsmuligheter. La oss se 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? Legg merke til de forskjellige oppsettene. grep tvinger utdataene til et enkelt filnavn per linjeformat.

Tegn som ikke skrives ut

Det er mulig å finne deg selv med et filnavn som har en ikke-utskrift eller kontroll-karakter i filnavnet. Vanligvis kan dette skje når du utvider et arkiv du har lastet ned fra nettet eller hentet et git-depot, og den opprinnelige forfatteren gjorde en feil ved å lage en fil, men oppdaget den ikke.

Vår rare fil er en av disse:

Hvis vi ser på det i filleseren og trykker «F2» for å gi det nytt navn, er tegnene som ikke skrives ut, representert med et merkelig symbol.

Du kan bruke alternativet -b (escape) for å la deg se hva filnavnet faktisk inneholder. Dette alternativet får ls til å bruke escape-sekvensene til C programmeringsspråk å representere kontrollkarakterene.

ls -b a*

Den mystiske karakteren blir avslørt for å være en nylinjekarakter, representert i C som «n.»

Ignorerer filer

For å få visse filer utelatt fra en oppføring, bruk –hide-alternativet. Anta at du ikke vil se sikkerhetskopien av «.bak»-filene i listen. Du kan bruke denne kommandoen:

ls
ls --hide=*.bak

«.bak»-filene er ikke inkludert i den andre oppføringen.

Langformatoppføringen

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 det.

Det første som vises er den totale størrelsen på alle filene i oppføringen. Deretter vises hver fil eller katalog på en linje for seg selv.

Det første settet med ti bokstaver og bindestreker er filtypen og eier-, gruppe- og andre filtillatelser.

Det aller første tegnet representerer filtypen. Det vil være en av:

–: En vanlig fil.
b: En blokk spesialfil.
c: En spesialfil med tegn.
d: En katalog.
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øringstillatelsene, i den rekkefølgen. Hvis tillatelsen gis, vil det være en r, w eller x til stede. Hvis tillatelsen ikke gis, vises en bindestrek.

  Slik bruker du chroot-kommandoen på Linux

Det første settet med tre tegn er tillatelsene for fileieren. Det andre settet med tre tillatelser er for gruppemedlemmer, og det siste settet med tre tillatelser er for andre.

Noen ganger er utførelsestillatelsen for eieren representert ved en s. Dette er setuid bit. Hvis den er til stede, betyr det at filen kjøres med privilegiene til fileieren, ikke brukeren som kjører filen.

Utførelsestillatelsen for gruppen kan også være en s. Dette er setgid bit. Når dette brukes på en fil, betyr det at filen vil bli utført med privilegiene til eierens gruppe. Når de brukes med en katalog, vil alle filer som er opprettet i den, ta gruppetillatelsene fra katalogen de blir opprettet i, ikke fra brukeren som oppretter filen.

Utførelsestillatelsen for de andre kan noen ganger representeres av en t. Dette er klissete bit. Det brukes vanligvis på kataloger. Hvis dette er satt, uavhengig av skrive- og kjørbare rettigheter som er satt på filene i katalogen, er det bare fileieren, katalogeieren eller rotbrukeren som kan endre navn på eller slette filer i katalogen.

En vanlig bruk av sticky biten er på mapper som «/tmp». Dette kan skrives av alle brukere på datamaskinen. Den klebrige biten i katalogen sikrer at brukere – og prosesser som er lansert av brukerne – bare kan endre navn på eller slette sine egne midlertidige filer.

Vi kan se den klebrige biten i «/tmp»-katalogen. Legg merke til bruken av alternativet -d (katalog). Dette får ls til å rapportere om detaljene i katalogen. Uten dette alternativet vil ls rapportere om filene inne i katalogen.

ls -l -d /tmp

Tallet etter tillatelsene er antallet harde lenker til filen eller katalogen. For en fil er dette vanligvis én, men hvis det opprettes andre harde lenker, vil dette tallet øke. En katalog har vanligvis minst to harde lenker. Den ene er en lenke til seg selv, og den andre er oppføringen i dens overordnede katalog.

Navnet på eieren og gruppen vises deretter. De blir fulgt av filstørrelsen og datoen for siste endring av filen. Til slutt er filnavnet gitt.

Menneskelig lesbare filstørrelser

Det er ikke alltid praktisk å ha filstørrelsene i byte. For å se filstørrelsene i de mest passende enhetene (Kilobyte, Megabyte, etc.), bruk -h (lesbare mennesker) alternativet:

ls -l -h

Viser skjulte filer

For å se skjulte filer, bruk alternativet -a (alle):

ls -l -a

De to oppføringene «.» og «..» representerer henholdsvis gjeldende katalog og overordnet katalog. En fil kalt «.base_settings» er nå synlig for første gang.

  Hvordan spille Trine 3 på Linux

Utelater . og .. fra oppføringer

Hvis du ikke vil at oppføringen skal være rotete med «.» og «..»-oppføringer, men du vil se skjulte filer, bruk alternativet -A (nesten alle):

ls -l -A

Den skjulte filen er fortsatt oppført, men «.» og «..» oppføringer undertrykkes.

Listekataloger rekursivt

For å få en liste over filene i alle underkataloger, bruk alternativet -R (rekursivt).

ls -l -R

ls går gjennom hele katalogtreet under startkatalogen, og viser filene i hver underkatalog.

Viser UID og GID

For å få vist bruker-ID og gruppe-ID i stedet for brukernavn og gruppenavn, bruk alternativet -n (numerisk uid og gid).

ls -n

Sortering av oppføringene

Du kan sortere oppføringen etter utvidelse, filstørrelse eller endringstid. Disse alternativene trenger ikke å brukes med det lange noteringsformatet, men det er vanligvis fornuftig å gjøre det. Hvis du sorterer etter filstørrelse, er det fornuftig å se filstørrelsene i oppføringen. Når du sorterer etter utvidelsestype, er ikke det lange oppføringsformatet så viktig.

For å sortere etter utvidelse, bruk alternativet -X (sortér etter utvidelse).

ls -X -1

Katalogene er oppført først (ingen utvidelser i det hele tatt), deretter følger resten i alfabetisk rekkefølge, i henhold til utvidelsene.

For å sortere etter filstørrelse, bruk alternativet -S (sort etter filstørrelse).

ls -l -h -S

Sorteringsrekkefølgen er størst til minste.

For å sortere oppføringen etter endringstid, bruk alternativet -t (sortér etter endringstid).

ls -l -t

Oppføringen er sortert etter endringstiden.

Hvis filendringstiden 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åneden, dagen og året.

En rask måte å få de nyeste og eldste filene i en katalog på er å bruke ls med head- og tail-kommandoene.

For å få den nyeste filen eller katalogen, bruk denne kommandoen:

ls -t | head -1

For å få den eldste filen eller katalogen, bruk denne kommandoen:

ls -t | tail -1

For å snu sorteringsrekkefølgen

For å reversere en hvilken som helst av sorteringsrekkefølgene, bruk -r (revers)-alternativet.

ls -l -h -S -r

Listen er nå sortert fra den minste filen til den største filen.

Og det er mer

Sjekk ut man-siden for ls, det er mange flere alternativer. Noen av dem tilfredsstiller noe obskure brukstilfeller, men en gang i blant vil du være glad for at du vet om dem.

Trenger du å se filtidsstemplene med den maksimale presisjonen som Linux kan gi? Bruk heltidsalternativet:

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 forvirrende filer for kataloger og lenker? Bruk klassifiser-alternativet, og ls vil legge til en av disse til hver oppføring:

/: En katalog.
@: En symbolkobling.
|: En navngitt pipe.
=: En stikkontakt.
*: En kjørbar fil

ls -F

Gjør litt graving. Du vil oppdage at ls er en rik åre, og du vil fortsette å finne edelstener.