Hur man använder kommandot ls för att lista filer och kataloger på Linux

Vi använder kommandot Linux ls varje dag utan att tänka på det. Vad synd. Var uppmärksam på det, och du kommer att hitta många användbara alternativ – inklusive några som du bör lägga till i din kommandoradsarsenal.

ls Listar filer och kataloger

Kommandot ls är förmodligen det första kommandot som de flesta Linux-användare stöter på. De av oss som hänger runt kommandoraden använder den dag ut och dag in utan att ens tänka på det. Det kan förklara varför det finns mer i detta kommando än de flesta användare inser. Vi listar filer med den för att se vad som finns i en katalog. Vi listar filer i långformat när vi vill titta på behörigheterna på en fil. Utöver det tar det lite hänsyn.

Kommandot ls är ett av dessa kommandon med en mängd alternativ. Kanske är detta en del av problemet. Det finns så många alternativ, hur sållar du igenom dem för att hitta de användbara? Och efter att ha hittat dem, hur minns du dem?

Användbara permutationer av kommandot ls med deras strängar av alternativ och parametrar är de perfekta kandidaterna för alias. I de flesta distributioner är det du tänker på som kommandot ”naken” ls faktiskt ett alias. Typkommandot kan bland annat användas för att visa den underliggande definitionen av alias. Låt oss titta på definitionen av ls:

typ ls

Parametrarna –color=auto inkluderas automatiskt varje gång du använder kommandot ls. Det är detta som ger de olika färgerna för de olika filtyperna i listorna.

Enkla listor

Alla som har tillbringat lite tid med Linux-terminalen vet att ls som standard listar filerna och katalogerna i den aktuella katalogen.

ls

Om du vill ha din lista producerad i en enda kolumn, använd alternativet -1 (en fil per rad):

ls -1

Vi kommer att diskutera det konstiga filnamnet högst upp i listan om en minut.

Använda ls på olika kataloger

För att få ls att lista filerna i en annan katalog än den aktuella katalogen, skicka sökvägen till katalogen till ls på kommandoraden. Du kan också skicka mer än en katalog till ls och få dem listade efter varandra. Här ber vi ls att lista filerna i två kataloger, en som heter ”Hjälp” och den andra heter ”gc_help.”

ls Help gc_help

När ls har listat innehållet i den första katalogen listar det innehållet i den andra. Den skriver ut namnet på varje katalog när den bearbetar dem:

Använda filmönster

Använd mönstermatchning för att selektivt lista en uppsättning filer. Frågetecknet ”?” kommer att representera vilket enstaka tecken som helst och asterisken ”*” kommer att representera alla teckensträngar. För att lista alla filer eller kataloger som har namn som börjar med ”ip_” använd detta format:

ls ip_*

För att lista filer som har filtillägget ”.c” använder du det här formatet:

ls *.c

Du kan också använda ls med grep , och använda greps mönstermatchningsmöjligheter. Låt oss leta efter alla filer som har strängen ”_pin_” i sitt namn:

ls | grep _pin_

Detta är nästan samma sak som att använda ls på egen hand, med två jokertecken:

ls | grep _pin_
ls *_pin_*

Varför nästan samma? Notera de olika layouterna. grep tvingar utdata till ett enda filnamn per rad-format.

Tecken som inte skrivs ut

Det är möjligt att hitta dig själv med ett filnamn som har en icke-utskrift eller kontrolltecken i sitt filnamn. Vanligtvis kan detta hända när du expanderar ett arkiv som du har laddat ner från webben eller hämtat ett git-förråd, och den ursprungliga författaren gjorde ett misstag när han skapade en fil men inte upptäckte den.

Vår konstiga fil är en av dessa:

Om vi ​​tittar på den i filläsaren och trycker på ”F2” för att byta namn på den, representeras de icke-utskrivna tecknen av en konstig symbol.

Du kan använda alternativet -b (escape) för att låta dig se vad filnamnet faktiskt innehåller. Detta alternativ gör att ls använder escape-sekvenserna för C programmeringsspråk för att representera kontrolltecken.

ls -b a*

Den mystiska karaktären avslöjas för att vara en nylinjekaraktär, representerad i C som ”n.”

Ignorerar filer

För att få vissa filer utelämnade från en lista, använd alternativet –hide. Anta att du inte vill se säkerhetskopiorna ”.bak” i listan. Du kan använda detta kommando:

ls
ls --hide=*.bak

”.bak”-filerna ingår inte i den andra listan.

Långformatslistan

Alternativet -l (lång lista) gör att ls tillhandahåller detaljerad information om varje fil.

ls -l

Det finns mycket information här, så låt oss gå igenom den.

Det första som visas är den totala storleken på alla filer i listan. Sedan visas varje fil eller katalog på en rad för sig.

Den första uppsättningen av tio bokstäver och bindestreck är filtypen och ägaren, gruppen och andra filbehörigheter.

Det allra första tecknet representerar filtypen. Det kommer att vara en av:

–: En vanlig fil.
b: En specialfil för block.
c: En specialfil för tecken.
d: En katalog.
l: En symbolisk länk.
n: En nätverksfil.
p: En namngiven pipa.
s: Ett uttag.

De följande nio tecknen är tre grupper om tre tecken som visas kontinuerligt. Varje grupp om tre representerar läs-, skriv- och exekveringsbehörigheterna, i den ordningen. Om tillståndet beviljas kommer det att finnas ett r, w eller x närvarande. Om tillståndet inte beviljas visas ett bindestreck –.

Den första uppsättningen av tre tecken är behörigheterna för filägaren. Den andra uppsättningen av tre behörigheter är för gruppmedlemmar, och den sista uppsättningen av tre behörigheter är för andra.

Ibland representeras utförandetillståndet för ägaren av en s. Det här är setuid bit. Om den finns betyder det att filen körs med filägarens rättigheter, inte användaren som kör filen.

Utförandetillståndet för gruppen kan också vara ett s. Det här är setgid bit. När detta tillämpas på en fil betyder det att filen kommer att köras med privilegierna för owergruppen. När de används med en katalog kommer alla filer som skapas i den att ta sina gruppbehörigheter från katalogen de skapas i, inte från användaren som skapar filen.

Utförandetillståndet för de övriga kan ibland representeras av ett t. Det här är klibbig bit. Det används vanligtvis på kataloger. Om detta är inställt, oavsett vilka skriv- och körbara rättigheter som är inställda på filerna i katalogen, kan endast filägaren, katalogägaren eller rotanvändaren byta namn på eller ta bort filer i katalogen.

En vanlig användning av sticky biten är på mappar som ”/tmp”. Detta är skrivbart av alla användare på datorn. Den klibbiga biten i katalogen säkerställer att användare – och processer som startats av användarna – bara kan byta namn på eller ta bort sina egna temporära filer.

Vi kan se den klibbiga biten i ”/tmp”-katalogen. Notera användningen av alternativet -d (katalog). Detta får ls att rapportera om detaljerna i katalogen. Utan detta alternativ kommer ls att rapportera om filerna i katalogen.

ls -l -d /tmp

Antalet efter behörigheterna är antalet hårda länkar till filen eller katalogen. För en fil är detta vanligtvis en, men om andra hårda länkar skapas kommer detta antal att öka. En katalog har vanligtvis minst två hårda länkar. Den ena är en länk till sig själv, och den andra är dess post i sin överordnade katalog.

Ägarens och gruppens namn visas härnäst. De följs av filstorleken och datumet för den senaste ändringen av filen. Slutligen ges filnamnet.

Mänskliga läsbara filstorlekar

Att ha filstorlekarna i byte är inte alltid bekvämt. För att se filstorlekarna i de mest lämpliga enheterna (Kilobyte, Megabyte, etc.) använd alternativet -h (läsbar för människor):

ls -l -h

Visar dolda filer

För att se dolda filer, använd alternativet -a (alla):

ls -l -a

De två posterna ”.” och ”..” representerar den aktuella katalogen respektive den överordnade katalogen. En fil som heter ”.base_settings” är nu synlig för första gången.

Utelämnande . och .. från Listings

Om du inte vill att ditt företag ska vara rörigt med ”.” och ”..”-poster, men du vill se dolda filer, använd alternativet -A (nästan alla):

ls -l -A

Den dolda filen är fortfarande listad, men ”.” och ”..”-poster är undertryckta.

Lista kataloger rekursivt

För att få en lista över filerna i alla underkataloger använd alternativet -R (rekursivt).

ls -l -R

ls går igenom hela katalogträdet under startkatalogen och listar filerna i varje underkatalog.

Visar UID och GID

För att visa användar-ID och grupp-ID istället för användarnamn och gruppnamn, använd alternativet -n (numerisk uid och gid).

ls -n

Sortering av listorna

Du kan sortera listan efter förlängning, filstorlek eller ändringstid. Dessa alternativ behöver inte användas med det långa listformatet, men det brukar vara vettigt att göra det. Om du sorterar efter filstorlek är det vettigt att se filstorlekarna i listan. När du sorterar efter tilläggstyp är det långa listformatet inte så viktigt.

För att sortera efter tillägg, använd alternativet -X (sortera efter tillägg).

ls -X -1

Katalogen listas först (inga tillägg alls) sedan följer resten i alfabetisk ordning, enligt tilläggen.

För att sortera efter filstorlek, använd alternativet -S (sortera efter filstorlek).

ls -l -h -S

Sorteringsordningen är störst till minst.

För att sortera listan efter ändringstid, använd alternativet -t (sortera efter ändringstid).

ls -l -t

Listan sorteras efter ändringstiden.

Om filändringstiden ligger inom det aktuella året är informationen som visas månad, dag och tid. Om ändringsdatumet inte var i det aktuella året, är informationen som visas månad, dag och år.

Ett snabbt sätt att få de nyaste och äldsta filerna i en katalog är att använda ls med head- och tail-kommandona.

För att få den senaste filen eller katalogen, använd detta kommando:

ls -t | head -1

För att få den äldsta filen eller katalogen, använd detta kommando:

ls -t | tail -1

För att vända sorteringsordningen

För att vända någon av sorteringsordningarna, använd alternativet -r (omvänd).

ls -l -h -S -r

Listan är nu ordnad från den minsta filen till den största filen.

Och det finns mer

Kolla in man-sidan för ls, det finns många fler alternativ. Vissa av dem uppfyller något obskyra användningsfall, men då och då kommer du att vara glad att du känner till dem.

Behöver du se filens tidsstämplar med den maximala precision som Linux kan ge? Använd heltidsalternativet:

ls --full-time

Du kanske vill se inodnumret på filerna? Använd alternativet inode:

ls -i

Arbetar du på en monokrom skärm och vill ta bort all risk för förvirring av filer för kataloger och länkar? Använd klassificeringsalternativet och ls kommer att lägga till en av dessa till varje post:

/: En katalog.
@: En symbollänk.
|: En namngiven pipa.
=: Ett uttag.
*: En körbar fil

ls -F

Gräva lite. Du kommer att upptäcka att ls är en rik ådra, och du kommer att fortsätta hitta ädelstenar.