Ls

**ls** (dir, vdir) — утыліта Unix, якая друкуе ў стандартны вывад змест каталогаў.

## Сінтаксіс 
```bash
ls [опцыі] [файл…]
dir [файл…]
vdir [файл…]
```

## Апісанне 
Каманда `ls` спачатку друкуе спіс усіх файлаў (не каталогаў), пералічаных у камандным радку, а потым друкуе спіс усіх файлаў, якія знаходзяцца ў каталогах, пералічаных у камандным радку. Калі не ўказана ніводнага файла, то па замоўчванню аргументам прызначаецца . (бягучы каталог). Опцыя `-d` прымушае `ls` не лічыць аргументы-каталогі каталогамі. Будуць адлюстроўвацца толькі файлы, якія не пачынаюцца з . ці ўсе файлы, калі зададзена опцыя `-a`.

Кожны спіс файлаў (для файлаў, якія не з’яўляюцца каталогамі і для кожнага каталога, які змяшчае спіс файлаў) сартуецца асобна ў алфавітнай паслядоўнасці бягучых рэгіянальных наладак (locale). Калі ўказана опцыя `-l`, то перад кожным спісам друкуецца выніковы радок з агульным памерам усіх файлаў у спісе, які вымяраецца ў блоках (памер блока па замоўчванню складае 1024 байты, і можа быць зменены з дапамогай опцыі `--block-size`).

Вынік друкуецца на стандартны вывад, па аднаму файлу на радок, калі з дапамогай опцыі `-C` не зададзены шматкалонкавы вывад. Аднак пры вывадзе на тэрмінал не вызначана, ці будзе вывад ажыццяўляцца ў адну калонку ці ў некалькі. Для задання аднакалонкавага ці шматкалонкавага рэжыму друку можна ўжыць опцыі `-1` і `-C`, адпаведна.

Атрымаць спіс каталогаў у бягучым каталозе можна з дапамогай каманды:

```bash
ls -F | grep / | sed 's/\///g'
```

## Ключы POSIX 
-C — надрукаваць спіс файлаў у калонках з вертыкальным упарадкаваннем.

-F — для кожнага імя каталога дадаць суфікс '/', для кожнага імя FIFO — '|' і для кожнага імя выканальнага файла '*'.

-R — уключыць рэкурсіўны вывад спіса каталогаў.

-a — дадаваць у спіс файлы з імёнамі, што пачынаюцца з кропкі (паказваць схаваныя файлы).

-c — ужываць пры сартаванні (пры заданні опцыі -t ці -l) час вымярэння стану файла замест часу апошняй мадыфікацыі файла.

-d — друкаваць імёны каталогаў, нібыта яны звычайныя файлы, замест таго, каб паказваць іх змест.

-i — друкаваць перад імем файла яго серыйны нумар (нумар inode).

-l — друкаваць (у аднакалонкавым фармаце) тып файла, правы доступу да файла, колькасць спасылак на файл, імя уладальніка, імя групы, памер файла (у байтах), штамп часу і імя файла.

Тыпы файлаў могуць прымаць наступныя значэнні:  для звычайнага файла, d для каталога, b для блокавай прылады, c для сімвальнай прылады, l для сімвалічнай спасылкі, p для FIFO і s для сокета(socket).

Па замоўчванню, часовы штамп з’яўляецца часам апошняй мадыфікацыі; опцыі -c і -u дазваляюць выбіраць два іншых часовых штампа. Для файлаў прылад, поле памеру звычайна замяняецца на старэйшы і малодшы нумары прылады.

-q — замест недрукавальных сімвалаў у імені файла пры вывадзе будуць ставіцца знакі пытання. (Гэтая опцыя уключана па замоўчванню пры вывадзе на тэрмінал.)

-r — ажыццяўляць сартоўку ў адваротным парадку.

-t — сартаваць па абранаму часоваму штампу.

-u — ужываць пры сартоўцы (опцыя -t) ці пералічэнні (опцыя -l) час апошняга доступу да файла замест часу апошняй мадыфікацыі файла.

 — друкаваць у аднакалонкавым фармаце.

— завяршае спіс ключоў.

## Падрабязнасці  версіі GNU 
Калі стандартны вывад з’яўляецца тэрміналам, то вывад ажыццяўляецца ў шматкалонкавым фармаце (з вертыкальнай сартоўкай).

Праграма dir (таксама ўсталяваная пад імем d) з’яўляецца эквівалентам `ls -C -b'; такім чынам, файлы па замоўчванню друкуюцца ў шматкалонкавым фармаце (з вертыкальнай сартоўкай). Праграма vdir (таксама ўсталяваная пад імем v) эквівалентная `ls -l -b'; такім чынам, файлы па замоўчванню друкуюцца ў доўгім фармаце.

### Ключы GNU 
`-1`, --format=single-column — друкаваць адзін файл на радок. Гэтая опцыя ўключана па змоўчванню, калі стандартны вывад не з'яўляецца тэрміналам.

-a, --all — выдаваць усе файлы ў каталогах, разам з схаванымі файламі, якія пачынаюцца з кропкі.

-b, --escape, --quoting-style=escape — Замяняць неграфічныя сімвалы ў імёнах файлаў, ужываючы літарна-лічбавыя паслядоўнасці, а таксама паслядоўнасці віду -Q, за выключэннем таго, што імёны файлаў не заключаюць у двукоссе.

-c, --time=ctime, --time=status — сартаваць змест каталога ў адпаведнасці з часам змены стану файла (поле `ctime' у inode). Калі з дапамогай опцыі -l зададзены доўгі фармат, то выдаваць час змены стану файла замест часу яго мадыфікацыі.

-d, --directory — друкаваць імёны каталогаў, нібыта яны звычайныя файлы, замест таго, каб паказваць іх змест.

-f — не сартаваць змест каталога; друкаваць файлы ў тым парадку, у якім яны запісаны на дыск. Гэтая опцыя таксама дазваляе -a і -U і забараняе -l, --color, -s, і -t, калі яны былі зададзены перад -f.

-g — ігнаруецца; патрэбна для сумяшчальнасці з Unix.

-h, --human-readable — дадаваць да кожнага памеру файла літару памеру, напрыклад, M для двайковых мегабайт (`мебібайт'). (Новае ў fileutils-4.0.)

-i, --inode — друкаваць нумар inode (таксама завецца серыйным нумарам файла і нумарам індэкса) кожнага файла, злева ад яго імя. (Гэты нумар адназначна ідэнтыфікуе кожны файл у кожнай файлавай сістэме)

-k, --kilobytes — калі выдаюцца памеры файлаў, то выдаваць іх у кілабайтах.

-l, --format=long, --format=verbose — у дадатак да імя кожнага файла друкуецца тып файла, правы доступу да файла, колькасць спасылак на файл, імя уладальніка, імя групы, памер файла ў байтах і штамп часу (час апошняй мадыфікацыі файла, калі не зададзена іншае). Для файлаў з часам больш за 6 месяцаў таму назад ці больш, чым 1 гадзіна ў будучыню, часовы штамп утрымлівае год замест часу дня.

Кожны каталог са спісам зместу папярэднічаецца радком `total blocks', дзе blocks — гэта агульная дыскавая прастора, якая ужываецца усімі файламі ў бягучым каталозе. Па замоўчванні памер блока змяшчае 1024 байты; калі ўсталявана пераменная асяроддзя POSIXLY_CORRECT , то ужываецца памер блока 512 байтаў (калі не зададзена опцыя -k). blocks лічыць кожную жорсткую спасылку асобна; задаць па-іншаму праз аргументы немагчыма.
Правы доступу адлюстроўваюцца ў практычна звычайным сімвальным выглядзе, але ls камбінуе некалькі бітаў у трэці сімвал кожнага набору праў доступу:

* s — setuid ці setgid біт усталяваны разам з адпаведным бітам правоў на выкананне.
* S — setuid ці setgid біт усталяваны, але адпаведны біт правоў на выкананне не ўсталяваны.
* t — sticky-біт усталяваны разам з бітам правоў на выкананне іншымі.
* T — sticky-біт усталяваны, але біт правоў на выкананне іншымі няма.
* x — біт правоў на выкананне ўсталяваны, і не выконваецца ні адна з вышэйпаказаных умоў.
*  — Ва ўсіх іншых выпадках.
 
-m, --format=commas — друкаваць спіс файлаў у радок з максімальна магчымай колькасцю імён файлаў на радок, падзяляючы імёны коскай і прабелам.

-n, --numeric-uid-gid — друкаваць лікавыя UID і GID замест імён уладальніка і групы.

-o — ужываць доўгі фармат, але не паказваць інфармацыю аб групе. Дадзеная опцыя эквівалентная—format=long—no-group і неабходная для сумяшчальнасці з іншымі версіямі ls.

-p, --file-type, --indicator-style=file-type — дадаваць сімвал, які паказвае тып файла, да кожнага імя файла. Дадзеная опцыя падобная на -F, за выключэннем таго, што выканальная файлы не пазначаюцца. (Фактычна ў fileutils-4.0 опцыя—file- type эквівалентная—classify.)

-q, --hide-control-chars — друкаваць знакі пытання замест неграфічных сімвалаў ў імя файла. Гэтая опцыя уключана па замоўчванню.

-r, --reverse — сартаваць змест каталога ў адваротным парадку.

-s, --size — друкаваць памер кожнага файла ў блоках па 1024 байты злева ад імя файла. Калі усталявана зменная асяроддзя POSIXLY_CORRECT, то ўжываецца памер блока 512, калі не зададзена опцыя -k .

-t, --sort=time — сартаваць па часу апошняй мадыфікацыі (поле `mtime' у inode) замест таго, каб ажыццяўляць сартоўку па алфавіце. Самыя свежыя файлы будуць адлюстроўвацца першымі.

-u, --time=atime, --time=access, --time=use — сартаваць па часе апошняга доступу да файла, замест часу апошняй мадыфікацыі (поле `atime' у inode). Калі зададзены доўгі фармат вываду, выдаваць час апошняга доступу замест часу апошняй мадыфікацыі.

-v — ажыццяўляць сартоўку ў адпаведнасці з нумарам версіі файлаў. Пры гэтым улічваецца, што імёны файлаў часта утрымліваюць нумары версій ці чарговыя нумары. Стандартныя функцыі сартоўкі звычайна не ажыццяўляюць сартоўку, якую мог бы чакаць чалавек, так як сартоўка ажыццяўляецца на аснове штосімвальнага параўнання. Сартаванне па версіях вырашае гэтую праблему і асабліва карысна, калі ажыццяўляецца прагляд каталогаў, якія ўтрымліваюць шмат файлаў, у якіх у назве ёсць нумар версіі. Напрыклад:

```text
> ls -1            > ls -1v
           foo.zml-1.gz       foo.zml-1.gz
           foo.zml-100.gz     foo.zml-12.gz
           foo.zml-12.gz      foo.zml-25.gz
           foo.zml-25.gz      foo.zml-100.gz
```

Лічбавыя часткі з лідзіруючымі нулямі вызначаюцца як больш малыя:

```text
> ls -1            > ls -1v
            abc-1.007.tgz      abc-1.007.tgz
            abc-1.012b.tgz     abc-1.01a.tgz
            abc-1.01a.tgz      abc-1.012b.tgz
```

-w, --width cols — прызначае вывад на экран у cols калонак. Па змоўчванню, калі гэта магчыма, дадзенае значэнне выведваецца праз драйвер тэрмінала; у адваротным выпадку ужываецца значэнне зменнай асяроддзя COLUMNS, калі яна ўсталявана; у адваротным выпадку, па змоўчванню, усталёўваецца 80.

-x, --format=across, --format=horizontal — друкаваць спіс файлаў у шматкалонкавым рэжыме, з сартоўкай па гарызанталі.

-A, --almost-all — выдаваць усе файлы, акрамя `.' і `..'.

-B, --ignore-backups — не паказваць файлы, якія канчаюцца на `~', калі яны не зададзены ў камандным радку.

-C, --format=vertical — друкаваць файлы ў шматкалонкавым рэжыме, з сартоўкай па вертыкалі. Опцыя усталявана па змоўчванню, калі стандартны вывад з’яўляецца тэрміналам. Дадзеная опцыя заўсёды ўсталёўваецца па змоўчванню для праграм **dir** і **d**.

-D, --dired — пры доўгім фармаце (-l), пасля асноўнага вывада, друкаваць дадатковы радок выгляду: //DIRED// BEG1 END1 BEG2 END2 …

Тут BEGn і ENDn — гэта цэлыя бяззнакавыя лікі, якія для кожнага запісу паказваюць байтавую пазіцыю пачатка і канца кожнай назвы файла. Такім чынам, Emacs можа лёгка знайсці імёны, нават калі яны ўтрымліваюць незвычайныя сімвалы, такія як прабелы ці сімвалы новага радка.

Калі каталогі адлюстроўваюцца рэкурсіўна (-R), то падобны радок выводзіцца пасля кожнага падкаталога: //SUBDIRED// BEG1 END1 …

-F, --classify, --indicator-style=classify — дадаваць да кожнай назвы файла сімвал, які б паказваў яго тып. Для звычайных выканальных файлаў гэта `*'. Для каталога дадаецца `/', для FIFO — `|', для сімвалічных спасылак `@', для сокетаў `=', для звычайных файлаў нічога не дадаецца.

-G, --no-group — не адлюстроўваць інфармацыю аб групе ў доўгім фармаце вываду.

-H, --si — робіць тое ж, што і опцыя -h, але ўжывае афіцыйныя адзінкі вымярэння СІ (дзе для разлікаў выкарыстоўваецца 1000 замест 1024 і, такім чынам, M — гэта 1000000 замест 10485576). (Новае ў fileutils-4.0.)

-I, --ignore=шаблон — не паказваць файлы, імёны якіх супадаюць з зададзеным шаблонам (шаблон — гэта не рэгулярны выраз), калі толькі яны не зададзены ў камандным радку. Як і ў shell, пачатковая `.' у назве файла не супадае з сімвалам `*', зададзеным у пачатку шаблона.

-L, --dereference — друкаваць інфармацыю аб файлах, на якія указваюць сімвалічныя спасылкі, замест інфармацыі аб саміх сімвалічных спасылках.

-N, --literal — не змяшчаць у двукоссі імёны файлаў.

-Q, --quote-name, --quoting-style=c — змяшчаць імёны файлаў у двайныя двукоссі і паказваць неграфічныя сімвалы як у мове Сі.

-R, --recursive — рэкурсіўна друкаваць спіс зместу ўсіх каталогаў.

-S, --sort=size — ажыццяўляць сартоўку па памеру файла, замест сартоўкі па алфавіту. Такім чынам, найвялікшыя файлы будуць паказаны спачатку.

-T, --tabsize cols — пазначыць шырыню табуляцыі ў cols калонак. Па змоўчванню 8, таксама можа быць зададзена з дапамогай зменнай асяроддзя TABSIZE, калі пры гэтым не ўсталявана зменная асяроддзя POSIXLY_CORRECT. ls ужывае табуляцыю для выраўноўвання вывада, калі гэта магчыма. Калі cols роўна нулю, то табуляцыя не ўжываецца.
-U, --sort=none — Не ажыццяўляць сартоўку; спіс файлаў будзе друкавацца ў тым парадку, у якім файлы запісаны на дыск. (адрозненні паміж опцыямі -U і -f палягае ў тым, што дадзеная опцыя не забараняе і не дазваляе іншыя опцыі). Гэтая опцыя можа быць асабліва карысна, калі выдаюцца спісы зместу буйных каталогаў, пры гэтым сартоўка не пажадана, каб працэс у цэлым праходзіў хутчэй).

-X, --sort=extension — праводзіць сартоўку ў алфавітным парадку па пашырэннях файлаў (сімвалы пасля апошняй `.'); файлы без пашырэнняў будуць паказаны першымі.

--block-size=size — выдае памеры ў блоках па size байтаў. (Новае ў fileutils-4.0.)

--color[=when] — вызначае колер для адрознівання тыпаў файлаў. Колеры вызначаюцца з ужываннем зменнай асяроддзя LS_COLORS. Інфармацыю аб тым, як трэба вызначаць значэнне гэтай зменнай, можна знайсці на старонцы дапаможніка [1]dircolors(1). Параметр when можа быць прапушчаны ці прымаць адно з наступных значэнняў:
* none — ніяк не ўжываць колер. вызначана па змоўчванню.
* auto — ужываць колер, толькі калі стандартны вывад з’яўляецца тэрміналам.
* always — заўсёды ужываць колер. Заданне—color без параметра when эквівалентна—color=always.

--full-time — выводзіць час у поўным, а не ў стандартным скарочаным варыянце. Дадзены фармат выглядае так жа, як і ў камандзе date па змоўчванню; яго немагчыма змяніць, але вы можаце атрымаць радок з датай праз каманду cut і прапусціць вынік праз `date -d'. Гэта можа быць вельмі карысна, таму што час у такім фармаце змяшчае секунды. (Файлавыя сістэмы Unix запісваюць часавы штамп файла з акругленнем да секунды, так што дадзеная опцыя паказвае поўную інфармацыю аб часовым штампе). Напрыклад, гэта можа дапамагчы, калі вы разбіраецеся, чаму нейкі Makefile памылкова перагенеруе файлы.

--quoting-style=word — выкарыстоўвайце стыль word для выбару рэжыму квотынга імён файлаў. Стыль word можа прымаць наступныя значэнні:
* literal — вывад імён файлаў як ёсць. Гэта паводзіны *ls* па змоўчванню.
* shell — змяшчае імёны файлаў у адзіночныя двукоссі для shell, калі яны ўтрымліваюць метасімвалы ці могуць прывесці да неадназначнага выніку.
* shell-always — змяшчае імёны файлаў у адзіночныя двукоссі для shell, нават калі гэтага не патрабуецца.
* c — змяшчае імёны файлаў у падвойныя двукоссі, як у мове C; гэта раўнаважна опцыі -Q.
* escape — як і для c, за выключэннем таго, што імя не змяшчаецца ў двайныя двукоссі; эквівалентна опцыі -b .

Значэнне па змоўчванню для дадзенай опцыі можа быць зададзена ў зменнай асяроддзя QUOTING_STYLE.

* --show-control-chars — друкаваць неграфічныя сімвалы ў назвах файлаў як ёсць. Так зададзена па змоўчванню, калі вывад ажыццяўляецца на тэрмінал, а праграма завецца *ls*.

## Стандартныя ключы GNU 
`--help` — выдаць падказку на стандартны вывад і паспяхова завершыцца.

`--version` — выдаць інфармацыю аб версіі на стандартны вывад і паспяхова завершыцца.

`--` — пазначае канец спіса ключоў.

## Асяроддзе 
Зменная POSIXLY_CORRECT вызначае памер блока. Зменная TABSIZE Задае шырыню табуляцыі, калі не ўсталявана зменная POSIXLY_CORRECT. Зменная COLUMNS (Калі яна змяшчае цэлы лік) вызначае шырыню вываду у калонках (для ужывання з опцыяй `-C`). Імёны файлаў не павінны абразацца, каб змясціць іх у шматкалонкавым вывадзе.

Пры рабоце звычайным чынам ужываюцца значэнні зменных LANG, LC_ALL, LC_CTYPE и LC_MESSAGES. Зменная TZ задае часовую зону для часовых метак, якія выдае `ls`. Зменная LS_COLORS ужываецца для задання колераў.

Зменная QUOTING_STYLE Ужываецца для задання значэння па змоўчванню для опцыі `--quoting-style`. Дадзеная опцыя па змоўчванню ўсталявана ў literal, але аўтары папярэджваюць, што гэта змоўчванне можа калі-небудзь у наступнай версіі змяніцца на shell.

## Памылкі рэалізацыі 
У BSD сістэмах `ls` выдае памеры, якія з’яўляюцца напалову менш правільных, для файлаў, якія змантаваны па NFS з HP-UX-сістэм. У HP-UX-сістэмах `ls` выдае памеры, якія у два разы больш правільных для файлаў, якія змантаваны па NFS з BSD-сістэм. Гэта недахоп сістэм HP-UX; ён таксама ёсць і ў праграме `ls` з HP-UX.

## Сумяшчальнасць 
POSIX 1003.3

Катэгорыя:Утыліты UNIX