Как да използвате командата ls за изброяване на файлове и директории в Linux

Ние използваме командата ls на Linux всеки ден, без да мислим за това. Това е жалко. Обърнете малко внимание и ще намерите много полезни опции – включително някои, които трябва да добавите към своя арсенал на командния ред.

ls изброява файлове и директории

Командата ls е може би първата команда, която повечето потребители на Linux срещат. Тези от нас, които се мотаят около командния ред, го използват ден след ден, без дори да се замислят. Това може да обясни защо тази команда съдържа повече, отколкото повечето потребители осъзнават. Ние изброяваме файлове с него, за да видим какво има в дадена директория. Изброяваме файловете в дълъг формат, когато искаме да разгледаме разрешенията на файл. Отвъд това не се обръща малко внимание.

Командата ls е една от тези команди с множество опции. Може би това е част от проблема. Има толкова много опции, как да ги отсеете, за да намерите полезните? И след като ги намерихте, как ги помните?

Полезните пермутации на командата ls с техните низове от опции и параметри са идеалните кандидати за псевдоними. Всъщност в повечето дистрибуции това, което смятате за „гола“ команда ls, всъщност е псевдоним. Наред с други неща, може да се използва командата type показват основната дефиниция на псевдоними. Нека да разгледаме дефиницията на ls:

тип ls

Параметрите –color=auto се включват автоматично всеки път, когато използвате командата ls. Това е, което осигурява различните цветове за различните типове файлове в списъците.

Прости ls обяви

Всеки, който е прекарал известно време в Linux терминала, знае, че по подразбиране ls изброява файловете и директориите в текущата директория.

ls

Ако искате вашата обява да се произвежда в една колона, използвайте опцията -1 (един файл на ред):

ls -1

Ще обсъдим това странно изглеждащо име на файл в горната част на списъка след минута.

Използване на ls в различни директории

За да накарате ls да изброи файловете в директория, различна от текущата, предайте пътя до директорията на ls в командния ред. Можете също да предадете повече от една директория на ls и да ги изброите една след друга. Тук молим ls да изброи файловете в две директории, едната, наречена „Help“, а другата, наречена „gc_help“.

ls Help gc_help

Когато ls е изброил съдържанието на първата директория, той изброява съдържанието на втората. Той отпечатва името на всяка директория, докато ги обработва:

  Как да записвате Screencast GIF файлове на Linux

Използване на файлови шаблони

За да изброите селективно набор от файлове, използвайте съвпадение на шаблони. Въпросителният знак „?“ ще представлява всеки единичен знак, а звездичката „*“ ще представлява всеки низ от знаци. За да изброите всички файлове или директории, които имат имена, започващи с „ip_“, използвайте този формат:

ls ip_*

За да изброите файлове, които имат разширения „.c“, използвайте този формат:

ls *.c

Можете също да използвате ls с grep и да използвате grep възможности за съвпадение на шаблони. Нека да потърсим всички файлове, които имат низа „_pin_“ в името си:

ls | grep _pin_

Това е почти същото като използването на ls самостоятелно, с два заместващи знака:

ls | grep _pin_
ls *_pin_*

Защо почти същото? Обърнете внимание на различните оформления. grep принуждава изхода към едно име на файл на формат на ред.

Непечатни знаци

Възможно е да се озовете с име на файл, което има a непечатни или контролни символи в името на файла му. Обикновено това може да се случи, когато разширите архив, който сте изтеглили от мрежата или извлечете git хранилище, и оригиналният автор е направил грешка при създаването на файл, но не го е забелязал.

Нашият странен файл е един от тези:

Ако го погледнем във файловия браузър и натиснете “F2”, за да го преименувате, непечатащите се знаци са представени със странен символ.

Можете да използвате опцията -b (escape), за да видите какво всъщност съдържа името на файла. Тази опция кара ls да използва escape последователностите на Език за програмиране C за представяне на контролните символи.

ls -b a*

Разкрива се, че мистериозният символ е символ на нов ред, представен в C като „n“.

Игнориране на файлове

За да пропуснете определени файлове от списък, използвайте опцията –hide. Да предположим, че не искате да виждате архивните „.bak“ файлове в списъка. Можете да използвате тази команда:

ls
ls --hide=*.bak

Файловете “.bak” не са включени във втория списък.

Дългият формат на списъка

Опцията -l (дълъг списък) кара ls да предоставя подробна информация за всеки файл.

ls -l

Тук има много информация, така че нека преминем през нея.

Първото нещо, което ls показва, е общият размер на всички файлове в списъка. След това всеки файл или директория се показва на ред самостоятелно.

Първият набор от десет букви и тирета са типа на файла и разрешенията на собственика, групата и други файлове.

Първият знак представлява типа на файла. Ще бъде един от:

–: Обикновен файл.
b: Блоков специален файл.
c: файл със специален символ.
d: Директория.
л: Символична връзка.
n: Мрежов файл.
p: Именувана тръба.
s: гнездо.

Следващите девет знака са три групи от по три знака, показвани последователно. Всяка група от три представлява разрешенията за четене, запис и изпълнение в този ред. Ако разрешението е дадено, ще има r, w или x. Ако разрешението не е дадено, се показва тире –.

  Как да изтриете потребител в Linux (и да премахнете всяка следа)

Първият набор от три знака са разрешенията за собственика на файла. Вторият набор от три разрешения е за членове на групата, а последният набор от три разрешения е за други.

Понякога разрешението за изпълнение за собственика е представено от s. Това е сетуид малко. Ако е налице, това означава, че файлът се изпълнява с привилегиите на собственика на файла, а не на потребителя, изпълняващ файла.

Разрешението за изпълнение за групата може също да бъде s. Това е setgid малко. Когато това се приложи към файл, това означава, че файлът ще бъде изпълнен с привилегиите на групата на собственика. Когато се използват с директория, всички файлове, създадени в нея, ще вземат своите групови разрешения от директорията, в която се създават, а не от потребителя, който създава файла.

Разрешението за изпълнение за останалите понякога може да бъде представено с t. Това е лепкаво малко. Обикновено се прилага към директории. Ако това е зададено, независимо от привилегиите за запис и изпълнение, които са зададени за файловете в директорията, само собственикът на файла, собственикът на директорията или root потребителят могат да преименуват или изтриват файлове в директорията.

Често срещана употреба на лепкавия бит е в папки като “/tmp”. Това е достъпно за запис от всички потребители на компютъра. Залепващият бит в директорията гарантира, че потребителите – и процесите, стартирани от потребителите – могат само да преименуват или изтриват собствените си временни файлове.

Можем да видим лепкавия бит в директорията “/tmp”. Обърнете внимание на използването на опцията -d (директория). Това кара ls да докладва за подробностите в директорията. Без тази опция ls ще докладва за файловете в директорията.

ls -l -d /tmp

Числото след разрешенията е броят на твърдите връзки към файла или директорията. За файл това обикновено е един, но ако се създадат други твърди връзки, този брой ще се увеличи. Една директория обикновено има поне две твърди връзки. Едната е връзка към себе си, а другата е нейният запис в родителската директория.

След това се показват името на собственика и групата. Те са последвани от размера на файла и датата на последната модификация на файла. Накрая се дава името на файла.

Четими от човека размери на файлове

Размерите на файловете в байтове не винаги е удобно. За да видите размерите на файловете в най-подходящите единици (килобайти, мегабайти и т.н.), използвайте опцията -h (четим от човека):

ls -l -h

Показване на скрити файлове

За да видите скрити файлове, използвайте опцията -a (всички):

ls -l -a

Двата записа „.” и “..” представляват съответно текущата и родителската директория. Файл, наречен „.base_settings“, вече е видим за първи път.

Пропускане . и .. от обяви

Ако не искате вашата обява да е претрупана с „. и „..“ записи, но искате да видите скрити файлове, използвайте опцията -A (почти всички):

ls -l -A

Скритият файл все още е в списъка, но „.“ и “..” записите са потиснати.

  Как да изтриете сигурно файлове в Linux

Изброяване на директории рекурсивно

За да имате ls списък с файловете във всички поддиректории, използвайте опцията -R (рекурсивна).

ls -l -R

ls преминава през цялото дърво на директории под началната директория и изброява файловете във всяка поддиректория.

Показване на UID и GID

За да се показват потребителският идентификатор и идентификаторът на групата вместо потребителското име и името на групата, използвайте опцията -n (числов uid и gid).

ls -n

Сортиране на обявите

Можете да сортирате списъка по разширение, размер на файла или време за промяна. Тези опции не трябва да се използват с формата на дългия списък, но обикновено има смисъл да го направите. Ако сортирате по размер на файла, има смисъл да видите размерите на файловете в списъка. Когато сортирате по тип разширение, форматът на дългия списък не е толкова важен.

За да сортирате по разширение, използвайте опцията -X (сортиране по разширение).

ls -X -1

Директориите са изброени първо (изобщо без разширения), след това останалите следват по азбучен ред, според разширенията.

За да сортирате по размер на файла, използвайте опцията -S (сортиране по размер на файла).

ls -l -h -S

Редът на сортиране е най-голям към най-малък.

За да сортирате списъка по време на модификация, използвайте опцията -t (сортиране по време на модификация).

ls -l -t

Списъкът е сортиран по време на промяна.

Ако времето за промяна на файла е в рамките на текущата година, показваната информация е месец, ден и час. Ако датата на промяна не е била в текущата година, информацията, която се показва, е месецът, денят и годината.

Бърз начин да получите най-новите и най-старите файлове в директория е да използвате ls с командите head и tail.

За да получите най-новия файл или директория, използвайте тази команда:

ls -t | head -1

За да получите най-стария файл или директория, използвайте тази команда:

ls -t | tail -1

За да обърнете реда на сортиране

За да обърнете някой от редовете за сортиране, използвайте опцията -r (обратно).

ls -l -h -S -r

Списъкът вече е подреден от най-малкия файл до най-големия файл.

И има още

Разгледайте man страницата за ls, има още много опции. Някои от тях удовлетворяват донякъде неясни случаи на употреба, но от време на време ще се радвате, че знаете за тях.

Трябва ли да видите времевите марки на файла с максималната прецизност, която Linux може да осигури? Използвайте опцията за пълен работен ден:

ls --full-time

Може би искате да видите номера на inode на файловете? Използвайте опцията inode:

ls -i

Работите ли върху монохромен дисплей и искате да премахнете всички рискове от объркване на файлове за директории и връзки? Използвайте опцията за класифициране и ls ще добави едно от тях към всеки запис в списъка:

/: Директория.
@: символна връзка.
|: Именувана тръба.
=: гнездо.
*: Изпълними файлове

ls -F

Направете малко копаене. Ще откриете, че ls е богата вена и ще продължите да намирате скъпоценни камъни.