Kodomo

Пользователь

Практикум 3

Данная страница - отчет по второй части 3 практикума. Задачей было описать 3 опции программы ls в командной оболочке BASH.

По умолчанию ls выводит список файлов и поддиректорий, находящихся в активной директории:

palimpsest@kodomo:~$ ls
Desktop  Downloads  mail  public_html  term1 text.txt

Если задать путь до директории, то ls выводит список файлов и поддиректорий, находящихся в указанной директории:

palimpsest@kodomo:~$ ls ../
alexk.nsk           bratzveron      farni3101       kirtsova      marusyakovleva  sashasaparov  timonina
alicedol            brylanast       fedosovasophia  kmelnikova    maslovake       shelkov       timvey
alikhan             daria.shakhova  fufayevas       kmvmax        maxim           shirokov      ula0505
alisen              darurushka      geonosianin     kondratuk.ks  mikhael.popiv   simkv         vestator
ami-abzalimov       dazuev          goliro-1        krgaripova    miss-shults12   simonasmit    yafarova55
ankel               diatrimma192    gskripachev     ksenia.j      muravlev        slavik123     yiweitot
anton.vetrov        d.kushnareva    idfedorov       lev.g         nikitka1369     sofiya11      youriy
arina-smelnitskaya  d.ovch          igolkinia48     luv           palimpsest      sonydav       zvontsov
aristowi            dozorova        ilyaidk         makson753     ppa             stepanov05    zzzem1103
babakovskiy         dvhodov         juliasv         m-a-prokh     rasmunsen       tasyavdovina
bekkerd1203         eprosviriakov   katyach         maria.sava    salimakari      test23


Опция -m

Опция, с помощью которой можно вывести список содержимого директории через запятую.

По умолчанию имена файлов и поддиректорий выводятся без запятых:

palimpsest@kodomo:~$ ls
Desktop  Downloads  mail  public_html  term1

При использовании опции -m - через запятую:

palimpsest@kodomo:~$ ls -m
Desktop, Downloads, mail, public_html, term1

опция -R

ls -R или ls --recursive выводит полное содержание директории, то есть показывает для всех ее поддиректорий их содержание. Если в этих поддиректориях есть дочерние поддиректории, то раскрываются и они, и так далее. По сути, вызывает программу ls для каждой последующей дочерней папки (по принципу рекурсии). То есть, опция выводит полное 'дерево' всего содержимого директории.

Для примера возьмем папку ~/term1. Сначала просто ls:

palimpsest@kodomo:~/term1$ ls
credits  genome  pr3  temp

А теперь с опцией -R:

palimpsest@kodomo:~/term1$ ls -R
.:
credits  genome  pr3  temp

./credits:
file_1.py  file_2.fasta  file_3.csv  file_4.stk  file_5.stk

./genome:
GCF_903886475.1_Streptococcus_thermophilus_CIRM_65_feature_table.txt
GCF_903886475.1_Streptococcus_thermophilus_CIRM_65_genomic.fna

./pr3:
file_1.py  file_2.fasta

Как мы видим, ls -R выводит содержание всех поддиректорий term1.

Кстати, если применить ls -R в корневой папке, то получится очень красиво.

Опция -Q

Заключает выводимые имена в двойные кавычки:

без -Q:

palimpsest@kodomo:~$ ls
Desktop  Downloads  mail  public_html  term1

ls -Q:

palimpsest@kodomo:~$ palimpsest@kodomo:~$ ls -Q
"Desktop"  "Downloads"  "mail"  "public_html"  "term1"


P.S Сначала я очень долго сражался с опцией -s, но у меня ничего не получилось, так как я не нашел нигде адекватной информации о том, что такое 'blocks', поэтому я решил написать про опцию -sh, которая должна приводить размер файлов в более удобный формат, но я не понял, как в ней работает округление, и, видимо, она тоже как-то завязана на 'блоках'. Но я все равно хочу оставить здесь информацию про -s, так как достаточно долго с ней возился.

Опция -sh

Опция -s позволяет узнать размеры файлов, а также выводит суммарный размер файлов в директории

Можно проверить, как она работает на примере директории credits, где находятся файлы из 1 части практикума. ls без нее:

palimpsest@kodomo:~/term1/credits$ ls
file_1.py  file_2.fasta  file_3.csv  file_4.stk  file_5.stk

ls -s:

palimpsest@kodomo:~/term1/credits$ ls -s
total 68
 4 file_1.py   4 file_2.fasta   4 file_3.csv   8 file_4.stk  48 file_5.stk

Как можно заметить, перед именами файлов появились числа, а также total (суммарный размер файлов). Однако, не совсем понятно, в каких единицах представлен размер (в мануале это называется 'blocks'). Эту проблему решает опция -h (или --human-readable), которая выводит размер в более понятном виде:

palimpsest@kodomo:~/term1/credits$ ls -sh
total 68K
4.0K file_1.py  4.0K file_2.fasta  4.0K file_3.csv  8.0K file_4.stk   48K file_5.stk

Теперь размер в килобайтах, что более понятно (если файлы будут больше, то -sh будет выводить в других единицах - Мб, Гб и тд). Кстати, опцию -h можно применять также и с опцией -l, и тогда размер файлов в расширенном списке файлов тоже будет в удобном формате.

P.P.S. насколько я понял, размер блока для -s как-то сложно определяется в зависимости от первого файла, который дается программе, а, может, и не так, но я рассказываю про опцию -sh

P.P.P.S опцию -sh я тоже не понял

Users/palimpsest/pr3 (последним исправлял пользователь palimpsest 2023-09-26 23:43:54)