Практикум 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 я тоже не понял