Всем, доброго.
В предыдущей статье, мы с вами, познакомились со способами объединения команд, а также с шаблонами имен файлов. В этой статье, мы с вами познакомимся, с таким моментом в Баш, который именуется каналом ввода и каналом вывода. А также, познакомимся с командами-фильтрами, которые получая поток вывода к себе в поток ввода могут его фильтровать и прочее, перед конечной выдачей информации.
Однако, познакомимся с этими командами-фильтрами кратко, т.к. в интернете можно найти множество примеров по их применению. Но, без начальных знаний, которые будут в этой статье, вам, бесполезно будет читать такие «интересности». Также, не стану, уверять или убеждать в практичности моей статьи, т.к. она сделана для Начинающих, Начинающих Линуксоидов, в том числе для тех, кто хочет познакомиться с командной строкой, заодно обозреть ее в простом применении в духе Линукса (наголо, то, что есть), чтобы определиться с ответами на свои вопросы.
Также, напомню, что после завершения азов, будет завершен цикл статей для начинающих, т.к. нечего будет рассказывать на этом уровне участия. В дальнейшем, будут статьи на уровне Линуксоида-Любителя, а это значит, что будет углубление в тематику применения направленных команд с востребованностью изложения определенного материала по теме изложения перед рассмотрением самих команд. Понятное дело, такой цикл будет отличаться от данного цикла, в котором рассматриваются общие команды и знания, которые являются основами и азами в командной строке, через интерфейс командной строки Баш, в ОС Линукс.
Так что, теперь полагаю, у вас, больше не будет вопросов о таком интересном подходе к данному циклу статей, в котором вы получаете возможно не то, что ожидали с завышенными требованиями и ослабленными возможностями после перехода на ОС Линукс. Однако, это нормальная ситуация, где любая нормальная личность ищет ознакомление с новой ОС, доселе незнакомой. Так что, данный цикл статей, в этом также помогает, проходя по основам и азам, без заострения внимания на углубленные знания об ОС Линукс и ее командной строке.
Введение.
Если задаться вопросом конкретного количества команд-фильтров, то их окажется достаточно много (около 15-20). Однако, когда начинаешь уточнять, в чем выражена суть применения смысла «фильтр», то приходишь к интересному выводу. Суть применения команд-фильтров выражается и проявляется в направлении применения их самих, например, чтение в отдельном ПГИП текстового потока или файла. Т.к. несмотря на такое различие между командами-фильтрами, где фильтрация это применение фильтрации входного потока, есть привычные в простом и распространенном понимании команды-фильтры, с которых стоит начинать свое знакомство с командами-фильтрами.
Поэтому, в данной статье, для ознакомления с командами-фильтрами мы познакомимся, со следующими командами: «cat«, «tee«, «grep«, «wc«, «sort«, «comm«. В этих командах также есть разные направления фильтрации входящего потока: в разветвлении входного потока в два выходных потока, в передачи потока на экран с фильтрацией и без нее перед выдачей информации на экран или в другой выходной поток, а также обработка входящего потока с выдачей результата обработки.
Фильтрация через направление входного потока.
Данная группа команд-фильтров направляет входной поток на выходной поток, либо в файл, либо на экран, либо в файл и на экран. При этом, при направлении на экран они могут вывести поток «наголо», а могут его передать через ПГИП, чтобы его смотреть через удобный инструмент просмотра.
Однако, стоит понимать, что сказанное в абзаце выше — нормальная ситуация, т.к. эти команды являются фильтрами, которые фильтруют направление потока, в том числе, когда внешне они выглядят просмоторщиками текстовых данных. Такой подход применения команд в Линуксе — обычное дело. Научитесь понимать этот момент заранее, тогда вам легче будет осваивать сам Линукс в общем и целом.
В данном направлении темы статьи, мы с вами, обратим своем внимание на команды «cat«, «tee«. Причем с первой командой вы уже познакомились в прошлых статьях — «cat«, при этом, команда может не только направлять входной поток на экран, она может направлять его в файл, который будет для нее входным потоком. А также, может принять два и более файла, направив их один выходной поток (в том числе в файл), поочередно открыв все входные файлы, указанные слева направо.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
andryuhan@Linuxoid-komp ~ $ mkdir test; cd test andryuhan@Linuxoid-komp ~/test $ touch text1 andryuhan@Linuxoid-komp ~/test $ echo 1 > text1 andryuhan@Linuxoid-komp ~/test $ cat text1 1 andryuhan@Linuxoid-komp ~/test $ echo 2 | cat > text2 andryuhan@Linuxoid-komp ~/test $ cat text2 2 andryuhan@Linuxoid-komp ~/test $ cat text1 text2 1 2 andryuhan@Linuxoid-komp ~/test $ cat text1 text2 > text3 andryuhan@Linuxoid-komp ~/test $ cat text3 1 2 andryuhan@Linuxoid-komp ~/test $ rm -rf * && cd .. && rmdir test andryuhan@Linuxoid-komp ~ $ ls test ls: невозможно получить доступ к 'test': Нет такого файла или каталога andryuhan@Linuxoid-komp ~ $ |
Команда «tee» создает ответвление потока, создавая его во время исполнения команды, подающий свой вывод на ввод данной. Эта команда, полезна для создания журналов и историй действий. Т.к. все это происходит во время исполнения команды идущей за ней через объединение «|«.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
andryuhan@Linuxoid-komp ~/test $ mkdir test; cd test andryuhan@Linuxoid-komp ~/test/test $ echo 1 | cat > text1 | tee jurnal andryuhan@Linuxoid-komp ~/test/test $ cat jurnal andryuhan@Linuxoid-komp ~/test/test $ ls jurnal text1 andryuhan@Linuxoid-komp ~/test/test $ cat text1 1 andryuhan@Linuxoid-komp ~/test/test $ sudo fdisk -l | tee jurnal [sudo] пароль для andryuhan: Диск /dev/sda: 1,8 TiB, 2000398934016 байтов, 3907029168 секторов Единицы измерения: секторов из 1 * 512 = 512 байтов Размер сектора (логический/физический): 512 байт / 4096 байт I/O size (minimum/optimal): 4096 bytes / 4096 bytes Тип метки диска: gpt Идентификатор диска: 54CCE901-BD9B-47DA-8BBE-F52A60660C98 Устр-во Start Конец Секторы Size Тип /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 3873615871 3872565248 1,8T Linux filesystem /dev/sda3 3873615872 3907028991 33413120 16G Linux своп Диск /dev/sdb: 1,8 TiB, 2000398933504 байтов, 3907029167 секторов Единицы измерения: секторов из 1 * 512 = 512 байтов Размер сектора (логический/физический): 512 байт / 512 байт I/O size (minimum/optimal): 512 bytes / 512 bytes Тип метки диска: dos Идентификатор диска: 0xd5ce54a6 Устр-во Загрузочный Start Конец Секторы Size Id Тип /dev/sdb1 2048 3907024895 3907022848 1,8T 7 HPFS/NTFS/exFAT andryuhan@Linuxoid-komp ~/test/test $ cat jurnal Диск /dev/sda: 1,8 TiB, 2000398934016 байтов, 3907029168 секторов Единицы измерения: секторов из 1 * 512 = 512 байтов Размер сектора (логический/физический): 512 байт / 4096 байт I/O size (minimum/optimal): 4096 bytes / 4096 bytes Тип метки диска: gpt Идентификатор диска: 54CCE901-BD9B-47DA-8BBE-F52A60660C98 Устр-во Start Конец Секторы Size Тип /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 3873615871 3872565248 1,8T Linux filesystem /dev/sda3 3873615872 3907028991 33413120 16G Linux своп Диск /dev/sdb: 1,8 TiB, 2000398933504 байтов, 3907029167 секторов Единицы измерения: секторов из 1 * 512 = 512 байтов Размер сектора (логический/физический): 512 байт / 512 байт I/O size (minimum/optimal): 512 bytes / 512 bytes Тип метки диска: dos Идентификатор диска: 0xd5ce54a6 Устр-во Загрузочный Start Конец Секторы Size Id Тип /dev/sdb1 2048 3907024895 3907022848 1,8T 7 HPFS/NTFS/exFAT andryuhan@Linuxoid-komp ~/test/test $ rm -rf * && cd .. && rmdir test andryuhan@Linuxoid-komp ~/test $ ls test ls: невозможно получить доступ к 'test': Нет такого файла или каталога andryuhan@Linuxoid-komp ~/test $ |
Также доступны параметры, которые не вижу смысла объяснять, т.к. они элементарны, просты и понятны. Поэтому, рекомендую попробовать их самостоятельно.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
andryuhan@Linuxoid-komp ~ $ tee --help Использование: tee [КЛЮЧ]… [ФАЙЛ]… Копирует стандартный ввод в каждый ФАЙЛ, а также в стандартный вывод. -a, --append дописать в заданные ФАЙЛЫ -i, --ignore-interrupts игнорировать сигналы прерывания -p обнаруживать ошибки записи в не каналы --output-error[=РЕЖИМ] поведение при ошибке. Описание РЕЖИМов далее --help показать эту справку и выйти --version показать информацию о версии и выйти В РЕЖИМе задаётся поведение при ошибках записи в вывод: «warn» диагностические ошибки записи в любой вывод «warn-nopipe» диагностические ошибки записи в любой вывод кроме канала «exit» завершать работу при ошибках записи в любой вывод «exit-nopipe» завершать работу при ошибках записи в любой вывод кроме канала По умолчанию значение РЕЖИМа для параметра -p равно «warn-nopipe». Если --output-error не указан, то по умолчанию выполняет немедленное прекращение работы при ошибке записи в канал, или диагностические ошибки записи в любой не канальный вывод. Оперативная справка GNU coreutils: <http://www.gnu.org/software/coreutils/> Об ошибках в переводе сообщений «tee» сообщайте по адресу <gnu@mx.ru> Полная документация: <http://www.gnu.org/software/coreutils/tee> или доступная локально: info '(coreutils) tee invocation' andryuhan@Linuxoid-komp ~ $ |
Фильтрация входного потока перед выдачей его на экран или в другой выходной поток.
Ранее команда «grep» была объяснена с позиции в одной из статей цикла про поиск файлов, где она применялась для поиска данных в словах, однако было упоминание про поиск данных в потоке. Т.к. большинство параметров по данной команде было указано, то не вижу смысла повторяться, обозначив их только вкратце. Скажу, что параметры одинаково работают с входным потоком и входными файлами, однако те параметры, что направленны на применение файлов, будут «идти в холостую», то бишь результат работы от их применения не изменится. А параметры, которые доступно применять, такие: -i, -w, -c, -v. Первый параметр задает игнорирование регистра символов ключевого слова, второй параметр ищет ключевое слово целиком, третий параметр вместо вывода найденных значений выводит их количество, а последний параметр наоборот выводит те места, где ключевого слова.
Это не все параметры, которые доступны для применения команды «grep» в качестве команды-фильтра, однако для ознакомления на уровне Начинающего этого достаточно. А остальное, легко узнать по ранее данным подсказкам, например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
andryuhan@Linuxoid-komp ~ $ grep --help Использование: grep [ПАРАМЕТР]… ШАБЛОН [ФАЙЛ]… Поиск ШАБЛОНА в каждом ФАЙЛЕ или в стандартном вводе. По умолчанию, ШАБЛОН представляет собой простое регулярное выражение (BRE). Пример: grep -i 'hello world' menu.h main.c Выбор типа регулярного выражения и его интерпретация: -E, --extended-regexp ШАБЛОН — расширенное регулярное выражение (ERE) -F, --fixed-regexp ШАБЛОН — строки, разделённые символом новой строки -G, --basic-regexp ШАБЛОН — простое регулярное выражение (BRE) -P, --perl-regexp ШАБЛОН — регулярное выражения языка Perl -e, --regexp=ШАБЛОН использовать ШАБЛОН для поиска -f, --file=ФАЙЛ брать ШАБЛОН из ФАЙЛа -i, --ignore-case игнорировать различие регистра -w, --word-regexp ШАБЛОН должен подходить ко всем словам -x, --line-regexp ШАБЛОН должен подходить ко всей строке -z, --null-data строки разделяются байтом с нулевым значением, а не символом конца строки Разное: -s, --no-messages не показывать сообщения об ошибках -v, --invert-match выбирать не подходящие строки -V, --version показать информацию о версии и закончить работу --help показать эту справку и закончить работу Управление выводом: -m, --max-count=ЧИСЛО остановиться после указанного ЧИСЛА совпадений -b, --byte-offset печатать вместе с выходными строками смещение в байтах -n, --line-number печатать номер строки вместе с выходными строками --line-buffered сбрасывать буфер после каждой строки -H, --with-filename печатать имя файла для каждого совпадения -h, --no-filename не начинать вывод с имени файла --label=МЕТКА использовать МЕТКУ в качестве имени файла для стандартного ввода -o, --only-matching показывать только часть строки, совпадающей с ШАБЛОНОМ -q, --quiet, --silent подавлять весь обычный вывод --binary-files=ТИП считать, что двоичный файл имеет ТИП: «binary», «text» или «without-match». -a, --text то же что и --binary-files=text -I то же, что и --binary-files=without-match -d, --directories=ДЕЙСТВ как обрабатывать каталоги ДЕЙСТВИЕ может быть «read» (читать), «recurse» (рекурсивно) или «skip» (пропускать). -D, --devices=ДЕЙСТВ как обрабатывать устройства, FIFO и сокеты ДЕЙСТВИЕ может быть «read» или «skip» -r, --recursive то же, что и --directories=recurse -R, --dereference-recursive тоже, но с переходом по всем символьным ссылкам --include=Ф_ШАБЛОН обработать только файлы, подпадающие под Ф_ШАБЛОН --exclude=Ф_ШАБЛОН пропустить файлы и каталоги, подпадающие под Ф_ШАБЛОН --exclude-from=ФАЙЛ пропустить файлы, подпадающие под шаблон файлов из ФАЙЛА --exclude-dir=ШАБЛОН каталоги, подпадающие под ШАБЛОН, будут пропущены -L, --files-without-match печатать только имена ФАЙЛОВ без совпадений -l, --files-with-matches печатать только имена ФАЙЛОВ с совпадениями -c, --count печатать только количество совпадающих строк на ФАЙЛ -T, --initial-tab выравнивать табуляцией (если нужно) -Z, --null печатать байт 0 после имени ФАЙЛА Управление контекстом: -B, --before-context=ЧИС печатать ЧИСЛО строк предшествующего контекста -A, --after-context=ЧИС печатать ЧИСЛО строк последующего контекста -C, --context[=ЧИС] печатать ЧИСЛО строк контекста -ЧИСЛО то же, что и --context=ЧИСЛО --color[=КОГДА], --colour[=КОГДА] использовать маркеры для различия совпадающих строк; КОГДА может быть «always» (всегда), «never» (никогда) или «auto» (автоматически) -U, --binary не удалять символы CR в конце строки (MSDOS/Windows) -u, --unix-byte-offsets выдавать смещения без учёта CR-ов (MSDOS/Windows) Вместо «egrep» предполагается запуск «grep -E». Вместо «fgrep» предполагается «grep -F». Запуск под именами «egrep» или «fgrep» лучше не выполнять. Если в качестве ФАЙЛА указан символ -, то читается стандартный ввод. Если ФАЙЛ не указан и задан параметр командной строки -r, то читается текущий каталог (.). Если указано менее двух ФАЙЛОВ, то предполагает -h. При нахождении совпадений любой строки, кодом завершения программы будет 0, и 1, если ничего не совпало. При возникновении ошибок и если не указан параметр -q, кодом завершения будет 2. Об ошибках сообщайте по адресу <bug-grep@gnu.org> Об ошибках в переводе сообщайте по адресу <gnu@mx.ru> Домашняя страница GNU grep: <http://www.gnu.org/software/grep/> Справка по работе с программами GNU: <http://www.gnu.org/gethelp/> andryuhan@Linuxoid-komp ~ $ |
А теперь, пример ее применения на практике в качестве команды фильтра:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
andryuhan@Linuxoid-komp ~ $ ls -al | grep wine lrwxrwxrwx 1 andryuhan andryuhan 41 мар 5 2017 PlayOnLinux's virtual drives -> /home/andryuhan/.PlayOnLinux//wineprefix/ drwxr-xr-x 4 andryuhan andryuhan 4096 апр 28 16:40 .wine drwxr-xr-x 4 andryuhan andryuhan 4096 фев 4 09:39 .wine32 andryuhan@Linuxoid-komp ~ $ ls -al /dev | grep video crw-rw---- 1 root video 29, 0 июл 20 05:21 fb0 crw-rw----+ 1 root video 81, 0 июл 20 05:21 video0 andryuhan@Linuxoid-komp ~ $ ls -al /dev/* | grep js lrwxrwxrwx 1 root root 12 июл 20 06:07 13:0 -> ../input/js0 crw-rw-r--+ 1 root input 13, 0 июл 20 06:07 js0 ls: невозможно открыть каталог '/dev/vboxusb': Отказано в доступе andryuhan@Linuxoid-komp ~ $ echo TTggUUiiLLkkGluPost > text andryuhan@Linuxoid-komp ~ $ echo glupost >> text andryuhan@Linuxoid-komp ~ $ cat text TTggUUiiLLkkGluPost glupost andryuhan@Linuxoid-komp ~ $ cat text | grep glupost glupost andryuhan@Linuxoid-komp ~ $ cat text | grep -i glupost TTggUUiiLLkkGluPost glupost andryuhan@Linuxoid-komp ~ $ cat text | grep -w glupost glupost andryuhan@Linuxoid-komp ~ $ cat text | grep -iw glupost glupost andryuhan@Linuxoid-komp ~ $ cat text | grep -c glupost 1 andryuhan@Linuxoid-komp ~ $ cat text | grep -v glupost TTggUUiiLLkkGluPost andryuhan@Linuxoid-komp ~ $ rm text andryuhan@Linuxoid-komp ~ $ |
Команда «sort» производит сортировку данных берущихся, либо с входного потока, либо с файла, который указан самой команде. Также стоит учитывать, что команда «sort» также имеет много своих параметров. Однако, для ознакомления и обучения начальным навыкам и умениям по применению, мы с вами рассмотрим только некоторые из них. Этого будет достаточно, чтобы вы смогли оперировать информацией, получаемой через консоль на уровне Начинающего в ОС Линукс. А теперь сами параметры, которые мы с вами рассмотрим:
- -b Игнорирование начальных пропусков;
- -d Обращать внимание только на пропуски, буквы и цифры;
- -f Игнорировать регистр букв;
- -i Обращать внимание только на печатные символы;
- -M Сравнивать по месяцам (сравнивает первые три буквы в соответствии с локализацией);
- -h Сравнивать числа в удобном для человека виде (например 1K, 1G);
- -n Сравнивать по числовым значениям строк;
- -r Обратить результаты сравнения;
- -v Сортировать по номерам (версии) в текстовом представлении
- -k Сортировать по ключу;
- -u Выводить только первое среди нескольких одинаковых;
- -o Вывести в файл результат сортировки.
Параметр «-k«, применяет такой ключ сортировки: номер_поля.позиция_в_поле или номер_поля. Более сложные варианты Начинающему в командной строке пока излишне.
Применение этих параметров сортировки, легче понять на примере работы вместе с командой «ls«.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 |
andryuhan@Linuxoid-komp ~ $ cd dosgames && ls -l итого 120 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms andryuhan@Linuxoid-komp ~/dosgames $ ls -l | sort drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms итого 120 andryuhan@Linuxoid-komp ~/dosgames $ ls -l | sort -r итого 120 drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus andryuhan@Linuxoid-komp ~/dosgames $ ls -l | sort -d итого 120 drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms andryuhan@Linuxoid-komp ~/dosgames $ ls -l | sort -f drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms итого 120 andryuhan@Linuxoid-komp ~/dosgames $ ls -l | sort -k7 итого 120 drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix andryuhan@Linuxoid-komp ~/dosgames $ ls -l | sort -k7 -r drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR итого 120 andryuhan@Linuxoid-komp ~/dosgames $ |
Разумеется примеры могли показать местами непонятны, т.к. параметры применялись ко всей строке, однако в самом последнем и предпоследнем примере был применен параметр «-k«, который задал сортировку по числам идущим после месяцев.
Теперь, повторим наш пример, с применением параметра «-k«, чтобы получить нормальную сортировку, а не просто пример работы параметров.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 |
andryuhan@Linuxoid-komp ~/dosgames $ ls -l | sort -k9 итого 120 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms andryuhan@Linuxoid-komp ~/dosgames $ ls -l | sort -k9 -r drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World итого 120 andryuhan@Linuxoid-komp ~/dosgames $ ls -l | sort -k9 -f итого 120 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms andryuhan@Linuxoid-komp ~/dosgames $ ls -l | sort -k9 -d итого 120 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms andryuhan@Linuxoid-komp ~/dosgames $ ls -l | sort -k6 -M итого 120 drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC andryuhan@Linuxoid-komp ~/dosgames $ ls -l | sort -k8 -n итого 120 drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms |
А теперь посмотрим, как сортировка работает с содержимым текстового файла.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
andryuhan@Linuxoid-komp ~/dosgames $ cat /etc/apt/apt-file.conf # Apt-file configuration file # Substitutions are made as follows: # host => remote hostname # port => remote port # uri => complete URI from sources.list # path => path from / # dist => the distribution name # cache => path to the local cache dir # dest => the destination file name inside the cache dir # cdrom => cdrom mount point # Where are located Packages destination = <host>_<path>_dists_<dist>_Contents-<arch>.gz # common code blocks can be defined as variables and be used as $check_cmd, etc. later check_cmd = ( ( gunzip -l "<cache>/<dest>_tmp" >/dev/null 2>&1 || (echo "File is not gzipped."; false) ) && mv "<cache>/<dest>_tmp" "<cache>/<dest>" 2>&1 ) error_cmd = ( rm -f "<cache>/<dest>_tmp"; echo "Can't get <uri>/dists/<dist>/Contents-<arch>.gz" ) post_dl_cmd = $check_cmd || $error_cmd # Fetch methods using diffindex-download: # -i : ignore missing files # -q : be quiet # -n <num> : download full file if more than <num> patches would be necessary http = diffindex-download -i "<uri>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> https = diffindex-download -i "<uri>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> ftp = diffindex-download -i "<uri>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> # In debtorrent URLs, we have to replace 'debtorrent' by 'http', and we always download the full file debtorrent = diffindex-download -i -n 0 "http://<host>:<port|9988><path>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> ssh = scp -P <port|22> "<user>@<host>:/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>_tmp" && $post_dl_cmd rsh = rcp -l <user> "<host>:/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>_tmp" && $post_dl_cmd file = cp "/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>" copy = cp "/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>" cdrom = echo "Put CDROM labeled <path> in the cdrom device and press [ENTER]" > /dev/stderr ; read DUMMY ; mount "<cdrom>"; cp "<cdrom>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>" ; umount "<cdrom>" # Schemes that might require user input on 'apt-file update' # These will be skipped if -N is given interactive = cdrom rsh ssh andryuhan@Linuxoid-komp ~/dosgames $ cat /etc/apt/apt-file.conf | sort # Apt-file configuration file # cache => path to the local cache dir # cdrom => cdrom mount point cdrom = echo "Put CDROM labeled <path> in the cdrom device and press [ENTER]" > /dev/stderr ; read DUMMY ; mount "<cdrom>"; cp "<cdrom>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>" ; umount "<cdrom>" check_cmd = ( ( gunzip -l "<cache>/<dest>_tmp" >/dev/null 2>&1 || (echo "File is not gzipped."; false) ) && mv "<cache>/<dest>_tmp" "<cache>/<dest>" 2>&1 ) # common code blocks can be defined as variables and be used as $check_cmd, etc. later copy = cp "/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>" debtorrent = diffindex-download -i -n 0 "http://<host>:<port|9988><path>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> destination = <host>_<path>_dists_<dist>_Contents-<arch>.gz # dest => the destination file name inside the cache dir # dist => the distribution name error_cmd = ( rm -f "<cache>/<dest>_tmp"; echo "Can't get <uri>/dists/<dist>/Contents-<arch>.gz" ) # Fetch methods using diffindex-download: file = cp "/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>" ftp = diffindex-download -i "<uri>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> # host => remote hostname http = diffindex-download -i "<uri>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> https = diffindex-download -i "<uri>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> # -i : ignore missing files # In debtorrent URLs, we have to replace 'debtorrent' by 'http', and we always download the full file interactive = cdrom rsh ssh # -n <num> : download full file if more than <num> patches would be necessary # path => path from / # port => remote port post_dl_cmd = $check_cmd || $error_cmd # -q : be quiet rsh = rcp -l <user> "<host>:/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>_tmp" && $post_dl_cmd # Schemes that might require user input on 'apt-file update' ssh = scp -P <port|22> "<user>@<host>:/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>_tmp" && $post_dl_cmd # Substitutions are made as follows: # These will be skipped if -N is given # uri => complete URI from sources.list # Where are located Packages andryuhan@Linuxoid-komp ~/dosgames $ cat /etc/apt/apt-file.conf | sort -b # Apt-file configuration file # cache => path to the local cache dir # cdrom => cdrom mount point cdrom = echo "Put CDROM labeled <path> in the cdrom device and press [ENTER]" > /dev/stderr ; read DUMMY ; mount "<cdrom>"; cp "<cdrom>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>" ; umount "<cdrom>" check_cmd = ( ( gunzip -l "<cache>/<dest>_tmp" >/dev/null 2>&1 || (echo "File is not gzipped."; false) ) && mv "<cache>/<dest>_tmp" "<cache>/<dest>" 2>&1 ) # common code blocks can be defined as variables and be used as $check_cmd, etc. later copy = cp "/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>" debtorrent = diffindex-download -i -n 0 "http://<host>:<port|9988><path>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> destination = <host>_<path>_dists_<dist>_Contents-<arch>.gz # dest => the destination file name inside the cache dir # dist => the distribution name error_cmd = ( rm -f "<cache>/<dest>_tmp"; echo "Can't get <uri>/dists/<dist>/Contents-<arch>.gz" ) # Fetch methods using diffindex-download: file = cp "/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>" ftp = diffindex-download -i "<uri>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> # host => remote hostname http = diffindex-download -i "<uri>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> https = diffindex-download -i "<uri>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> # -i : ignore missing files # In debtorrent URLs, we have to replace 'debtorrent' by 'http', and we always download the full file interactive = cdrom rsh ssh # -n <num> : download full file if more than <num> patches would be necessary # path => path from / # port => remote port post_dl_cmd = $check_cmd || $error_cmd # -q : be quiet rsh = rcp -l <user> "<host>:/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>_tmp" && $post_dl_cmd # Schemes that might require user input on 'apt-file update' ssh = scp -P <port|22> "<user>@<host>:/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>_tmp" && $post_dl_cmd # Substitutions are made as follows: # These will be skipped if -N is given # uri => complete URI from sources.list # Where are located Packages andryuhan@Linuxoid-komp ~/dosgames $ cat /etc/apt/apt-file.conf | sort -i # Apt-file configuration file # cache => path to the local cache dir # cdrom => cdrom mount point cdrom = echo "Put CDROM labeled <path> in the cdrom device and press [ENTER]" > /dev/stderr ; read DUMMY ; mount "<cdrom>"; cp "<cdrom>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>" ; umount "<cdrom>" check_cmd = ( ( gunzip -l "<cache>/<dest>_tmp" >/dev/null 2>&1 || (echo "File is not gzipped."; false) ) && mv "<cache>/<dest>_tmp" "<cache>/<dest>" 2>&1 ) # common code blocks can be defined as variables and be used as $check_cmd, etc. later copy = cp "/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>" debtorrent = diffindex-download -i -n 0 "http://<host>:<port|9988><path>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> destination = <host>_<path>_dists_<dist>_Contents-<arch>.gz # dest => the destination file name inside the cache dir # dist => the distribution name error_cmd = ( rm -f "<cache>/<dest>_tmp"; echo "Can't get <uri>/dists/<dist>/Contents-<arch>.gz" ) # Fetch methods using diffindex-download: file = cp "/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>" ftp = diffindex-download -i "<uri>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> # host => remote hostname http = diffindex-download -i "<uri>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> https = diffindex-download -i "<uri>/dists/<dist>/Contents-<arch>.gz" <cache>/<dest> # -i : ignore missing files # In debtorrent URLs, we have to replace 'debtorrent' by 'http', and we always download the full file interactive = cdrom rsh ssh # -n <num> : download full file if more than <num> patches would be necessary # path => path from / # port => remote port post_dl_cmd = $check_cmd || $error_cmd # -q : be quiet rsh = rcp -l <user> "<host>:/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>_tmp" && $post_dl_cmd # Schemes that might require user input on 'apt-file update' ssh = scp -P <port|22> "<user>@<host>:/<path>/dists/<dist>/Contents-<arch>.gz" "<cache>/<dest>_tmp" && $post_dl_cmd # Substitutions are made as follows: # These will be skipped if -N is given # uri => complete URI from sources.list # Where are located Packages andryuhan@Linuxoid-komp ~/dosgames $ |
И последний пример, где показано простое и наглядное применение команды сортировки и запись этой сортировки в файл.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
andryuhan@Linuxoid-komp ~ $ mkdir test && cd test && pwd /home/andryuhan/test andryuhan@Linuxoid-komp ~/test $ echo 1 >> t andryuhan@Linuxoid-komp ~/test $ echo 2 >> t andryuhan@Linuxoid-komp ~/test $ echo 3 >> t andryuhan@Linuxoid-komp ~/test $ cat t 1 2 3 andryuhan@Linuxoid-komp ~/test $ echo 1 >> t andryuhan@Linuxoid-komp ~/test $ echo 5 >> t andryuhan@Linuxoid-komp ~/test $ echo 4 >> t andryuhan@Linuxoid-komp ~/test $ cat t 1 2 3 1 5 4 andryuhan@Linuxoid-komp ~/test $ cat t | sort -u 1 2 3 4 5 andryuhan@Linuxoid-komp ~/test $ echo " 4" >> t andryuhan@Linuxoid-komp ~/test $ cat t | sort -u 1 2 3 4 4 5 andryuhan@Linuxoid-komp ~/test $ cat t | sort -u 1 2 3 4 4 5 andryuhan@Linuxoid-komp ~/test $ cat t | sort -b 1 1 2 3 4 4 5 andryuhan@Linuxoid-komp ~/test $ cat t | sort -bu 1 2 3 4 5 andryuhan@Linuxoid-komp ~/test $ cat t | sort -i 1 1 2 3 4 4 5 andryuhan@Linuxoid-komp ~/test $ cat t 1 2 3 1 5 4 4 andryuhan@Linuxoid-komp ~/test $ echo ббб >> tt andryuhan@Linuxoid-komp ~/test $ echo ггг >> tt andryuhan@Linuxoid-komp ~/test $ echo ррр >> tt andryuhan@Linuxoid-komp ~/test $ echo рар >> tt andryuhan@Linuxoid-komp ~/test $ cat tt ббб ггг ррр рар andryuhan@Linuxoid-komp ~/test $ cat tt | sort ббб ггг рар ррр andryuhan@Linuxoid-komp ~/test $ cat tt | sort -ott andryuhan@Linuxoid-komp ~/test $ cat tt ббб ггг рар ррр andryuhan@Linuxoid-komp ~/test $ cd .. && rm -rf test && ls -l test ls: невозможно получить доступ к 'test': Нет такого файла или каталога andryuhan@Linuxoid-komp ~ $ |
Что ж, наглядно и понятно в достаточной мере на примерах, мною проявлена и выражена работа команды сортировки, чтобы это смог понять неопытный, разобравшись в результатах выполнения. Однако, рекомендую, спокойно, прочитать, не пытаясь делать это с лупой. Заодно, попробовать повторить самим у себя, т.к. эти примеры не влияют на работу вашего компьютера. Единственное, что стоит учесть, так это имя директории «test«, чтобы попутно не удалить вашу директорию с таким же именем. А также напоминаю, что лично сам применяю «ctrl+a» и редактор у себя на компьютере, когда бывает много текста. Так читать на порядки легче, к тому же на моем блоге, это сделать не сложно.
Фильтрация через обработку входящего потока с выдачей результата обработки.
Команды данного направления, отличаются тем, что фильтрация входного потока является преобразованием его в результат обработки по заданным параметрам, в том числе без вывода входного потока или его части.
Команда «wc» полезна тем, что умеет обрабатывать входные данные и вести подсчет строк, слов, символов и байт. По умолчанию выводит в столбик три параметра: количество строк, количество слов, количество байт. Также доступно получить одно значений результата обработки, задав соответствующий параметр. А т.к. команда простая, то все приведено, в следующем примере.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
andryuhan@Linuxoid-komp ~ $ wc --help Использование: wc [КЛЮЧ]… [ФАЙЛ]… или: wc [КЛЮЧ]… --files0-from=Ф Печатает число символов новой строки, слов и байт для каждого ФАЙЛА и итоговую строку, если было задано несколько ФАЙЛОВ. Словом считается последовательность символов ненулевой длины, отделённая пробельным символом. Если ФАЙЛ не задан или задан как -, читает стандартный ввод. Для выбора выводимых счётчиков используются следующие параметры (счётчики всегда выводятся в таком порядке: символы новой строки, слова, символы, байты, максимальная длина строки): -c, --bytes напечатать количество байт -m, --chars напечатать количество символов -l, --lines напечатать количество новых строк --files0-from=Ф читать ввод из файлов, имена которых (завершённые нулем) перечислены в файле Ф; Если Ф равно -, то читать имена файлов из стандартного ввода -L, --max-line-length напечатать максимальной число строк по ширине экрана -w, --words напечатать количество слов --help показать эту справку и выйти --version показать информацию о версии и выйти Оперативная справка GNU coreutils: <http://www.gnu.org/software/coreutils/> Об ошибках в переводе сообщений «wc» сообщайте по адресу <gnu@mx.ru> Полная документация: <http://www.gnu.org/software/coreutils/wc> или доступная локально: info '(coreutils) wc invocation' andryuhan@Linuxoid-komp ~ $ cat /etc/apt/apt-file.conf | wc 40 283 2144 andryuhan@Linuxoid-komp ~ $ cat /etc/apt/apt-file.conf | wc -c 2144 andryuhan@Linuxoid-komp ~ $ cat /etc/apt/apt-file.conf | wc -m 2144 andryuhan@Linuxoid-komp ~ $ cat /etc/apt/apt-file.conf | wc -l 40 andryuhan@Linuxoid-komp ~ $ cat /etc/apt/apt-file.conf | wc -w 283 andryuhan@Linuxoid-komp ~ $ cat /etc/apt/apt-file.conf | wc -L 204 andryuhan@Linuxoid-komp ~ $ |
Команда «comm» сравнивает строки двух файлов, находя уникальные строки у каждого, а также встреченные в обоих. Все остальное, наглядно и понятно показано, в следующем примере.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
andryuhan@Linuxoid-komp ~ $ comm --help Использование: comm [КЛЮЧ]… ФАЙЛ1 ФАЙЛ2 Сравнивает сортированные файлы ФАЙЛ1 и ФАЙЛ2 построчно. Если ФАЙЛ1 или ФАЙЛ2 (но не оба) задан как -, читается стандартный ввод. При запуске без ключей выдает результат в три столбца. Первый столбец содержит строки, уникальные для ФАЙЛА1, второй -- уникальные для ФАЙЛА2, а третий -- общие для обоих файлов строки. -1 не показывать столбец 1 (строки, уникальные для ФАЙЛА1) -2 не показывать столбец 2 (строки, уникальные для ФАЙЛА2) -3 не показывать столбец 3 (строки, встреченные в обоих файлах) --check-order проверить правильность сортировки ввода, даже если все входные строки имеют пару --nocheck-order не проверять правильность сортировки ввода --output-delimiter=РАЗ отделять столбцы с помощью РАЗделителя -z, --zero-terminated разделитель строк NUL, а не символ новой строки --help показать эту справку и выйти --version показать информацию о версии и выйти Заметим, что при сравнении действуют правила, задаваемые «LC_COLLATE». Примеры: comm -12 файл1 файл2 вывести только строки, имеющиеся в файле1 и файле2. comm -3 файл1 файл2 вывести строки файла1, которых нет в файле2 и наоборот. Оперативная справка GNU coreutils: <http://www.gnu.org/software/coreutils/> Об ошибках в переводе сообщений «comm» сообщайте по адресу <gnu@mx.ru> Полная документация: <http://www.gnu.org/software/coreutils/comm> или доступная локально: info '(coreutils) comm invocation' andryuhan@Linuxoid-komp ~ $ mkdir test && cd test && pwd /home/andryuhan/test andryuhan@Linuxoid-komp ~/test $ echo 1 2 3 4 >> text1 andryuhan@Linuxoid-komp ~/test $ echo 1 2 3 4 >> text1 andryuhan@Linuxoid-komp ~/test $ echo 1 2 5 3 4 >> text1 andryuhan@Linuxoid-komp ~/test $ echo 1 2 5 3 4 6 >> text1 andryuhan@Linuxoid-komp ~/test $ echo 1 2 3 4 >> text2 andryuhan@Linuxoid-komp ~/test $ echo 1 2 3 4 6 >> text2 andryuhan@Linuxoid-komp ~/test $ echo 1 2 5 3 4 6 >> text2 andryuhan@Linuxoid-komp ~/test $ cat text1 1 2 3 4 1 2 3 4 1 2 5 3 4 1 2 5 3 4 6 andryuhan@Linuxoid-komp ~/test $ cat text2 1 2 3 4 1 2 3 4 6 1 2 5 3 4 6 andryuhan@Linuxoid-komp ~/test $ comm text1 text2 1 2 3 4 1 2 3 4 1 2 3 4 6 1 2 5 3 4 1 2 5 3 4 6 andryuhan@Linuxoid-komp ~/test $ comm -12 text1 text2 1 2 3 4 1 2 5 3 4 6 andryuhan@Linuxoid-komp ~/test $ cd && rm -rf test && ls -l test ls: невозможно получить доступ к 'test': Нет такого файла или каталога andryuhan@Linuxoid-komp ~/test $ |
Понимаю, ваше недовольство мною, однако пора учиться читать в консоли и пробовать самостоятельно, поэтому для разминки и тренировки, выдал вам две команды для изучения в вышеприведенном виде. Приучайте себя к самостоятельному изучению и применению справочных и прочих материалов, доступных в консоли или терминале. Это вам облегчит дальнейшее и самостоятельное изучение всех ранее приведенных команд и тех, что будут дальше, когда вы поймете эту востребованность в себе.
Каналы ввода и вывода.
В понимании каналов ввода и вывода нету ничего сложного на уровне Начинающего, достаточно знать что есть чтение, запись по отношению к файлу и передача выходного потока команды во входной поток следующей команды. Если вы читали примеры и разбирались в них, то наверняка уже сталкивались с операторами перенаправления потока.
Например, когда после выполнения команды стоит оператор «>«, «>>«, то в первом варианте идет перезапись файла с начала, а во втором идет запись с конца, без стирания содержимого. Благодаря этому не обязательно командам иметь возможность записи своего вывода в файл, когда это доступно через ранее указанные параметры. Например.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
andryuhan@Linuxoid-komp ~ $ mkdir test && cd test && pwd /home/andryuhan/test andryuhan@Linuxoid-komp ~/test $ echo Как делали раньше Как делали раньше andryuhan@Linuxoid-komp ~/test $ touch text andryuhan@Linuxoid-komp ~/test $ nano text andryuhan@Linuxoid-komp ~/test $ echo После записи ранее выведенного текста через ПГИП редактор, посмотрим, что у нас в файле. После записи ранее выведенного текста через ПГИП редактор, посмотрим, что у нас в файле. andryuhan@Linuxoid-komp ~/test $ cat text Как делали раньше andryuhan@Linuxoid-komp ~/test $ echo Теперь удалим его и запишем новым способом Теперь удалим его и запишем новым способом andryuhan@Linuxoid-komp ~/test $ rm text andryuhan@Linuxoid-komp ~/test $ ls andryuhan@Linuxoid-komp ~/test $ echo Как делали раньше > text andryuhan@Linuxoid-komp ~/test $ ls text andryuhan@Linuxoid-komp ~/test $ cat text Как делали раньше andryuhan@Linuxoid-komp ~/test $ echo Теперь, дополним запись с конца файла без его стирания. Теперь, дополним запись с конца файла без его стирания. andryuhan@Linuxoid-komp ~/test $ echo Теперь, дополним запись с конца файла без его стирания. >> text andryuhan@Linuxoid-komp ~/test $ cat text Как делали раньше Теперь, дополним запись с конца файла без его стирания. andryuhan@Linuxoid-komp ~/test $ cd && rm -rf test && ls -l test ls: невозможно получить доступ к 'test': Нет такого файла или каталога andryuhan@Linuxoid-komp ~ $ |
Для Начинающего в командной строке, такого применения полностью хватает. Однако, стоит понимать, что для опытного применения (посложнее), требуется почитать справочную литературу на тему «Линукс каналы ввода и вывод команд». Так что, теперь вы можете смело записывать результаты вывода в файл, что бы потом их прочитать позднее. Или также, вести свой «маленький журнал». Посредством одной командой «echo» и оператора «>>«.
Также можно производить чтение из файла, например можно создать десять файлов с числовым именем от 1 по 10, сделав это меньшим количеством команд. Для достаточно применить две команды и два оператора перенаправления, вместо того чтобы делать это вручную.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
andryuhan@Linuxoid-komp ~ $ mkdir test && cd test && pwd /home/andryuhan/test andryuhan@Linuxoid-komp ~/test $ echo 1 2 3 4 5 6 7 8 9 10 > sozidat andryuhan@Linuxoid-komp ~/test $ ls sozidat andryuhan@Linuxoid-komp ~/test $ touch <sozidat touch: пропущен операнд, задающий файл По команде «touch --help» можно получить дополнительную информацию. andryuhan@Linuxoid-komp ~/test $ touch `<sozidat` andryuhan@Linuxoid-komp ~/test $ ls 1 10 2 3 4 5 6 7 8 9 sozidat andryuhan@Linuxoid-komp ~/test $ echo `<sozidat` 1 2 3 4 5 6 7 8 9 10 andryuhan@Linuxoid-komp ~/test $ wc -w < sozidat 10 andryuhan@Linuxoid-komp ~/test $ cat sozidat | wc -w 10 andryuhan@Linuxoid-komp ~/test $ wc -w sozidat 10 sozidat andryuhan@Linuxoid-komp ~/test $ cd && rm -rf test && ls -l test ls: невозможно получить доступ к 'test': Нет такого файла или каталога andryuhan@Linuxoid-komp ~ $ |
Помимо ранее указанного, в примере (в конце) приводится применение оператора так, как оно полагается изначально. Однако, стоит понимать, что для этого команда обязана сама быть направленной на получение входящего файла. Наглядный этому пример с командой «wc«, где было получен один и тот же результат тремя различными способами, что явно дает понять, насколько в ОС Линукс, легко и просто многое делать командами через командную строку, а не щелкать мышкой по экрану. Также отмечу, что команды, где этого было недоступно, все равно получилось добиться желаемого без уловок, применив оператор подстановки, который объяснялся в статьях ранее в этом цикле статей.
Это основные операторы перенаправления потока ввода и вывода. Однако, помимо них есть еще два оператора, которые значительно облегчат применение командной строки, благодаря чему достаточно применять все в одном терминале, пока не возникнет необходимость делать по старинке.
Первый из них это, «&«, который позволяет параллельно запустить выполнение команды и не занимать командную строку ожиданием его выполнения, до тех пор пока команда не будет выполнена или ее выполнения не прервут, о чем будет сообщено в том же месте, где был сделан запуск.
1 2 3 4 5 6 7 |
andryuhan@Linuxoid-komp ~ $ nano & [2] 27402 andryuhan@Linuxoid-komp ~ $ echo редактор запущен, однако это не мешает вывести данный текст здесь, а не в редакторе редактор запущен, однако это не мешает вывести данный текст здесь, а не в редакторе [2]+ Остановлено nano andryuhan@Linuxoid-komp ~ $ |
Следующий оператор, это тот, который вы с большей вероятностью будете применять чаще всего, его символ такой: «|«. Он просто объединяет вход следующей команды с выходом предыдущей и может объединять множество команд между собой, например см. ниже.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
andryuhan@Linuxoid-komp ~ $ cd dosgames andryuhan@Linuxoid-komp ~/dosgames $ ls -l итого 120 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Another World drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Arkanoid_2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Balda drwxrwxrwx 2 andryuhan andryuhan 4096 мар 24 2010 BChess drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 BSTONE drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 CROWRUS drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 DAV2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Digger drwxrwxrwx 2 andryuhan andryuhan 4096 сен 20 2015 Doom drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Dune2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Durak drwxrwxrwx 2 andryuhan andryuhan 4096 авг 7 2016 EL_BODY drwxrwxrwx 2 andryuhan andryuhan 4096 апр 8 2015 grandprix drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 KB2 drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 KeyRus drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 Lotus drwxrwxrwx 2 andryuhan andryuhan 4096 дек 30 2016 NC drwxrwxrwx 2 andryuhan andryuhan 4096 фев 14 2013 Prince drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 Prince2 drwxrwxrwx 2 andryuhan andryuhan 4096 янв 12 2014 SOBOR drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 Star Goose drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 supaplex drwxrwxrwx 5 andryuhan andryuhan 4096 авг 7 2016 TALES drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 tim1 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 30 2016 tim2 drwxrwxrwx 2 andryuhan andryuhan 4096 окт 23 2016 Ugh drwxrwxrwx 2 andryuhan andryuhan 4096 авг 6 2016 Vetka drwxrwxrwx 3 andryuhan andryuhan 4096 окт 29 2016 WC drwxrwxrwx 2 andryuhan andryuhan 4096 окт 29 2016 WOLF3D drwxrwxrwx 6 andryuhan andryuhan 4096 окт 29 2016 worms andryuhan@Linuxoid-komp ~/dosgames $ ls | sort -d | cat Another World Arkanoid_2 Balda BChess BSTONE CROWRUS DAV2 Digger dir-text Doom Dune2 Durak EL_BODY grandprix KB2 KeyRus Lotus NC Prince Prince2 SOBOR Star Goose supaplex TALES tim1 tim2 Ugh Vetka WC WOLF3D worms andryuhan@Linuxoid-komp ~/dosgames $ cd - /home/andryuhan andryuhan@Linuxoid-komp ~ $ |
Как видите, нет ничего сложного в простом и элементарном понимании и применении каналов ввода и вывода. Для ознакомления и обучения на уровне Начинающего в командной строке ОС Линукс, этого, достаточно знать и уметь применять, чтобы грамотно применять основные возможности командной строки.
В заключение.
На данном этапе, мы с вами, научили все основным возможностям командной строки. Однако, не стоит забывать, что это не все команды, которые доступны для применения. А также, не стоит забывать, что для грамотного применения некоторых команд или целых групп, требуются знания, по части применяемого направления или касательно самой ОС Линукс. Так что, следующей статьей мы закончим с вами ознакомление с командной строкой ОС Линукс и подведем итоги обучения и ознакомления для Начинающих в ОС Линукс.
Благодарю, за участие, мне приятно знать, что вы чему-то научились за время прочтения этой статьи.