Windows cmd фильтрация вывода

Sometime we need to filter out a console command output and display only the portion that we want to show to the user. This could be based on any specific term or string that we want to include or exclude based on our requirement.

Today, here in this post, we are going to discuss on this and learn how to extract/filter the said information from the console command output.

How to filter Console output using findstr command? (www.kunal-chowdhury.com)

There is a command named “findstr” which you can use by combining with the ‘|’ (pipe) symbol to extract or filter only the portion of the console command output, based on the included terms and excluded terms that you pass as an argument.

The command file is an executable named “findstr.exe” and can be located at system directory (generally, at “C:\Windows\System32” folder).

When you want to find and display only the records that includes a specific term or terms, you have to pass the following command switch parameters: “/r /c”. To pass a single term, use /c:”TERM”. To pass multiple terms, use /c:”TERM1” /c:”TERM2” … /c:”TERMn” …  and so on. The parameter “/r” uses search strings/terms as regular expressions, whereas “/c” followed by the string/term uses it as a literal search string.

For example, the following command filters out only the command output of “dir” that has a term “Music”:

dir   |   C:\Windows\System32\findstr.exe /r /c:”Music”

The below command filters out only the command output of “dir” that has either one of the following terms “Music”, “Documents” or “Down”:

dir   |   C:\Windows\System32\findstr.exe /r /c:”Music” /c:”Documents” /c:”Down”

Here is a screenshot of the above mentioned commands:

How to filter console output using the findstr command (www.kunal-chowdhury.com)

If you want to exclude a line that has a specific string/term, you can use the switch “/v” followed by the words under “/c” as discussed above. To exclude a single term, use /c:”TERM”. To exclude multiple terms, use /c:”TERM1” /c:”TERM2” … /c:”TERMn” …  and so on.

For example, the below command filters out the command output of “dir” and prints only those lines which doesn’t have the term “Music” or “Documents”:

dir   |   C:\Windows\System32\findstr.exe /r /v /c:”Music” /c:”Documents”

Here you can find a screenshot of the same command and it’s associated output:

How to filter (exclude) console output using the findstr command (www.kunal-chowdhury.com)

I hope that the point is clear to you now and you would be able to filter out a specific console command output based on a term to include or exclude in or from the result. You can also use the “findstr” command and the following switches to search inside a file from the command prompt.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file] [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]] strings [[drive:][path]filename[ …]]

  /B                        Matches pattern if at the beginning of a line.

  /E                         Matches pattern if at the end of a line.

  /L                         Uses search strings literally.

  /R                        Uses search strings as regular expressions.

  /S                         Searches for matching files in the current directory and all subdirectories.

  /I                          Specifies that the search is not to be case-sensitive.

  /X                        Prints lines that match exactly.

  /V                        Prints only lines that do not contain a match.

  /N                        Prints the line number before each line that matches.

  /M                       Prints only the filename if a file contains a match.

  /O                        Prints character offset before each matching line.

  /P                        Skip files with non-printable characters.

  /OFF[LINE]          Do not skip files with offline attribute set.

  /A:attr                Specifies color attribute with two hex digits. See «color /?»

  /F:file                  Reads file list from the specified file(/ stands for console).

  /C:string             Uses specified string as a literal search string.

  /G:file                 Gets search strings from the specified file(/ stands for console).

  /D:dir                  Search a semicolon delimited list of directories

  strings                Text to be searched for.

Regular expression quick reference:

  .                            Wildcard: any character

  *                          Repeat: zero or more occurrences of previous character or class

  ^                          Line position: beginning of line

  $                           Line position: end of line

  [class]                 Character class: any one character in set

  [^class]               Inverse class: any one character not in set

  [x-y]                    Range: any characters within the specified range

              \x                         Escape: literal use of meta character x

              \<xyz                   Word position: beginning of word

              xyz\>                   Word position: end of word

Stay tuned for more articles on this topic and learn the power of console commands. See you then. Have a nice day ahead. If you liked the post, don’t forget to check out my others articles available in this blog.

Использование фильтров в командной строке

  • Содержание статьи
    • Использование команды more
    • Использование команды find
    • Использование команды sort
    • Добавить комментарий

Фильтр команды используется с символом перенаправления канала команды (|) и является командой внутри команды, которая считывает ввод команды, преобразовывает ввод, а затем записывает выход. Команды-фильтры дают возможность сортировать, просматривать и отбирать часть выходной информации других команд.

Фильтры делят, переупорядочивают или выделяют отдельные части из проходящей через них информации. В приведенной ниже таблице перечислены команды-фильтры, доступные в Microsoft Windows XP и выше.

Команда Описание
more Отображает содержимое файла или вывода команды в одном окне командной строки за раз.
find Поиск указанных символов в файлах и выходе команды.
sort Сортировка файлов и выхода команды по алфавиту.

Для направления данных из файла на вход фильтра используется символ «меньше» (<). Для направления на вход фильтра выхода другой команды используется канал (|).

Использование команды more

Команда more выводит содержимое файла или выхода команды в одном окне командной строки за раз. Например, чтобы отобразить содержимое файла List.txt в одном окне командной строки за раз, введите следующую команду:

more < list.txt

Отображается одно окно командной строки со сведениями, а затем в нижней части окна командной строки отображается строка — More —. Для перехода к следующему окну командной строки, нажмите любую клавишу на клавиатуре, кроме клавиши PAUSE. Для остановки просмотра следует ввести комбинацию CTRL+C.

Команда more полезна при работе с командами, создающими выход более одного окна командной строки. Например, при выводе дерева каталогов жесткого диска. Если на диске содержится больше каталогов, чем может быть одновременно выведено в окне командной строки, можно использовать команду tree с каналом (|) и команду more.

tree c:\ | more

На экран будет выведен первое окно командной строки с выходом команды tree, а затем отобразится строка — More —. Выход будет ожидать нажатия любой клавиши для продолжения (кроме клавиши PAUSE).

Использование команды find

Команда find проводит поиск заданной строки или текста в файлах. Команда Cmd.exe отображает каждую строку, которая совпадает со строкой или текстом, указанным в окне коммандной строки. Команда find может быть использована как команда-фильтр и как обычная команда Microsoft Windows XP. Дополнительные сведения об использовании команды find в качестве стандартной команды см. в разделе Find.

Чтобы использовать команду find в качестве команды-фильтра, необходимо включить символ «меньше» (<) и строку или текст, в котором требуется выполнить поиск. По умолчанию при поиске команда find учитывает регистр. Например, следующая команда будет искать строку «Pacific Rim» в файле Trade.txt:

find "Pacific Rim" < trade.txt

Выход не включает вхождение строки «pacific rim». Встречается вхождение строки «Pacific Rim» с прописными буквами.

Для сохранения результатов работы команды find (вместо отображения их в окне командной строки), введите символ «больше» (>) и имя файла, в котором требуется хранить выход. Например, следующая команда ищет строку «Pacific Rim» в файле Trade.txt с сохранением результата в файле Nwtrade.txt:

find "Pacific Rim" < trade.txt > nwtrade.txt 

Использование команды sort

Команда sort выполняет сортировку по алфавиту текстового файла или выхода команды. Например, следующая команда сортирует содержимое файла List.txt и отображает результаты в окне командной строки:

sort < list.txt

В этом примере команда sort сортирует строки файла List.txt в алфавитном порядке и выводит результат на экран без изменения файла. Для сохранения результатов работы команды sort (вместо их отображения) введите символ «больше» (>) и имя файла. Например, следующую команду можно использовать для алфавитной сортировки строк файла List.txt и сохранения результатов в файле Alphlist.txt:

sort < list.txt > alphlist.txt

Для сортировки вывода команды следует ввести команду, затем символ канала (|) и команду sort (команда | sort). Например, следующая команда сортирует в алфавитном порядке строки, которые содержат слово «Jones» (вывод команды find):

find "Jones" maillst.txt | sort 

Всем, доброго.

В предыдущей статье, мы с вами, познакомились со способами объединения команд, а также с шаблонами имен файлов. В этой статье, мы с вами познакомимся, с таким моментом в Баш, который именуется каналом ввода и каналом вывода. А также, познакомимся с командами-фильтрами, которые получая поток вывода к себе в поток ввода могут его фильтровать и прочее, перед конечной выдачей информации.

Однако, познакомимся с этими командами-фильтрами кратко, т.к. в интернете можно найти множество примеров по их применению. Но, без начальных знаний, которые будут в этой статье, вам, бесполезно будет читать такие «интересности». Также, не стану, уверять или убеждать в практичности моей статьи, т.к. она сделана для Начинающих, Начинающих Линуксоидов, в том числе для тех, кто хочет познакомиться с командной строкой, заодно обозреть ее в простом применении в духе Линукса (наголо, то, что есть), чтобы определиться с ответами на свои вопросы.

Также, напомню, что после завершения азов, будет завершен цикл статей для начинающих, т.к. нечего будет рассказывать на этом уровне участия. В дальнейшем, будут статьи на уровне Линуксоида-Любителя, а это значит, что будет углубление в тематику применения направленных команд с востребованностью изложения определенного материала по теме изложения перед рассмотрением самих команд. Понятное дело, такой цикл будет отличаться от данного цикла, в котором рассматриваются общие команды и знания, которые являются основами и азами в командной строке, через интерфейс командной строки Баш, в ОС Линукс.

Так что, теперь полагаю, у вас, больше не будет вопросов о таком интересном подходе к данному циклу статей, в котором вы получаете возможно не то, что ожидали с завышенными требованиями и ослабленными возможностями после перехода на ОС Линукс. Однако, это нормальная ситуация, где любая нормальная личность ищет ознакомление с новой ОС, доселе незнакомой. Так что, данный цикл статей, в этом также помогает, проходя по основам и азам, без заострения внимания на углубленные знания об ОС Линукс и ее командной строке.

Введение.

Если задаться вопросом конкретного количества команд-фильтров, то их окажется достаточно много (около 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@Linuxoidkomp ~ $ mkdir test; cd test

andryuhan@Linuxoidkomp ~/test $ touch text1

andryuhan@Linuxoidkomp ~/test $ echo 1 > text1

andryuhan@Linuxoidkomp ~/test $ cat text1

1

andryuhan@Linuxoidkomp ~/test $ echo 2 | cat > text2

andryuhan@Linuxoidkomp ~/test $ cat text2

2

andryuhan@Linuxoidkomp ~/test $ cat text1 text2

1

2

andryuhan@Linuxoidkomp ~/test $ cat text1 text2 > text3

andryuhan@Linuxoidkomp ~/test $ cat text3

1

2

andryuhan@Linuxoidkomp ~/test $ rm rf * && cd .. && rmdir test

andryuhan@Linuxoidkomp ~ $ ls test

ls: невозможно получить доступ к ‘test’: Нет такого файла или каталога

andryuhan@Linuxoidkomp ~ $

Команда «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@Linuxoidkomp ~/test $ mkdir test; cd test

andryuhan@Linuxoidkomp ~/test/test $ echo 1 | cat > text1 | tee jurnal

andryuhan@Linuxoidkomp ~/test/test $ cat jurnal

andryuhan@Linuxoidkomp ~/test/test $ ls

jurnal  text1

andryuhan@Linuxoidkomp ~/test/test $ cat text1

1

andryuhan@Linuxoidkomp ~/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

Идентификатор диска: 54CCE901BD9B47DA8BBEF52A60660C98

Устрво         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@Linuxoidkomp ~/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

Идентификатор диска: 54CCE901BD9B47DA8BBEF52A60660C98

Устрво         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@Linuxoidkomp ~/test/test $ rm rf * && cd .. && rmdir test

andryuhan@Linuxoidkomp ~/test $ ls test

ls: невозможно получить доступ к ‘test’: Нет такого файла или каталога

andryuhan@Linuxoidkomp ~/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@Linuxoidkomp ~ $ tee help

Использование: tee [КЛЮЧ] [ФАЙЛ]

Копирует стандартный ввод в каждый ФАЙЛ, а также в стандартный вывод.

  a, append              дописать в заданные ФАЙЛЫ

  i, ignoreinterrupts   игнорировать сигналы прерывания

  p                          обнаруживать ошибки записи в не каналы

     outputerror[=РЕЖИМ]   поведение при ошибке. Описание РЕЖИМов далее

      help     показать эту справку и выйти

      version  показать информацию о версии и выйти

В РЕЖИМе задаётся поведение при ошибках записи в вывод:

  «warn»         диагностические ошибки записи в любой вывод

  «warnnopipe»  диагностические ошибки записи в любой вывод кроме канала

  «exit»         завершать работу при ошибках записи в любой вывод

  «exitnopipe»  завершать работу при ошибках записи в любой вывод кроме канала

По умолчанию значение РЕЖИМа для параметра p равно «warnnopipe».

Если outputerror не указан, то по умолчанию выполняет немедленное

прекращение работы при ошибке записи в канал, или диагностические

ошибки записи в любой не канальный вывод.

Оперативная справка GNU coreutils: <http://www.gnu.org/software/coreutils/>

Об ошибках в переводе сообщений «tee» сообщайте по адресу <gnu@mx.ru>

Полная документация: <http://www.gnu.org/software/coreutils/tee>

или доступная локально: info ‘(coreutils) tee invocation’

andryuhan@Linuxoidkomp ~ $

 Фильтрация входного потока перед выдачей его на экран или в другой выходной поток.

Ранее команда «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@Linuxoidkomp ~ $ grep help

Использование: grep [ПАРАМЕТР] ШАБЛОН [ФАЙЛ]

Поиск ШАБЛОНА в каждом ФАЙЛЕ или в стандартном вводе.

По умолчанию, ШАБЛОН представляет собой простое регулярное выражение (BRE).

Пример: grep i ‘hello world’ menu.h main.c

Выбор типа регулярного выражения и его интерпретация:

  E, extendedregexp     ШАБЛОН расширенное регулярное выражение (ERE)

  F, fixedregexp        ШАБЛОН строки, разделённые символом новой строки

  G, basicregexp        ШАБЛОН простое регулярное выражение (BRE)

  P, perlregexp         ШАБЛОН регулярное выражения языка Perl

  e, regexp=ШАБЛОН       использовать ШАБЛОН для поиска

  f, file=ФАЙЛ           брать ШАБЛОН из ФАЙЛа

  i, ignorecase         игнорировать различие регистра

  w, wordregexp         ШАБЛОН должен подходить ко всем словам

  x, lineregexp         ШАБЛОН должен подходить ко всей строке

  z, nulldata           строки разделяются байтом с нулевым значением, а не

                            символом конца строки

Разное:

  s, nomessages         не показывать сообщения об ошибках

  v, invertmatch        выбирать не подходящие строки

  V, version             показать информацию о версии и закончить работу

      help                показать эту справку и закончить работу

Управление выводом:

  m, maxcount=ЧИСЛО     остановиться после указанного ЧИСЛА совпадений

  b, byteoffset         печатать вместе с выходными строками смещение в

                            байтах

  n, linenumber         печатать номер строки вместе с выходными строками

      linebuffered       сбрасывать буфер после каждой строки

  H, withfilename       печатать имя файла для каждого совпадения

  h, nofilename         не начинать вывод с имени файла

      label=МЕТКА         использовать МЕТКУ в качестве имени файла для

                            стандартного ввода

  o, onlymatching       показывать только часть строки, совпадающей с ШАБЛОНОМ

  q, quiet, silent     подавлять весь обычный вывод

      binaryfiles=ТИП    считать, что двоичный файл имеет ТИП:

                            «binary», «text» или «withoutmatch».

  a, text                то же что и binaryfiles=text

  I                        то же, что и binaryfiles=withoutmatch

  d, directories=ДЕЙСТВ  как обрабатывать каталоги

                            ДЕЙСТВИЕ может быть «read» (читать),

                            «recurse» (рекурсивно) или «skip» (пропускать).

  D, devices=ДЕЙСТВ      как обрабатывать устройства, FIFO и сокеты

                            ДЕЙСТВИЕ может быть «read» или «skip»

  r, recursive           то же, что и directories=recurse

  R, dereferencerecursive                             тоже, но с переходом по всем символьным ссылкам

      include=Ф_ШАБЛОН    обработать только файлы, подпадающие под Ф_ШАБЛОН

      exclude=Ф_ШАБЛОН    пропустить файлы и каталоги,

                            подпадающие под Ф_ШАБЛОН

      excludefrom=ФАЙЛ   пропустить файлы, подпадающие под шаблон

                            файлов из ФАЙЛА

      excludedir=ШАБЛОН  каталоги, подпадающие под ШАБЛОН,

                            будут пропущены

  L, fileswithoutmatch печатать только имена ФАЙЛОВ без совпадений

  l, fileswithmatches  печатать только имена ФАЙЛОВ с совпадениями

  c, count               печатать только количество совпадающих

                            строк на ФАЙЛ

  T, initialtab         выравнивать табуляцией (если нужно)

  Z, null                печатать байт 0 после имени ФАЙЛА

Управление контекстом:

  B, beforecontext=ЧИС  печатать ЧИСЛО строк предшествующего контекста

  A, aftercontext=ЧИС   печатать ЧИСЛО строк последующего контекста

  C, context[=ЧИС]       печатать ЧИСЛО строк контекста

  ЧИСЛО                    то же, что и context=ЧИСЛО

      color[=КОГДА],

      colour[=КОГДА]      использовать маркеры для различия совпадающих

                            строк; КОГДА может быть «always» (всегда),

                            «never» (никогда) или «auto» (автоматически)

  U, binary              не удалять символы CR в конце строки

                            (MSDOS/Windows)

  u, unixbyteoffsets   выдавать смещения без учёта CRов (MSDOS/Windows)

Вместо «egrep» предполагается запуск «grep E». Вместо «fgrep» предполагается

«grep F». Запуск под именами «egrep» или «fgrep» лучше не выполнять.

Если в качестве ФАЙЛА указан символ , то читается стандартный ввод.

Если ФАЙЛ не указан и задан параметр командной строки r, то читается

текущий каталог (.). Если указано менее двух ФАЙЛОВ, то предполагает h.

При нахождении совпадений любой строки, кодом завершения программы будет

0, и 1, если ничего не совпало. При возникновении ошибок и если не указан

параметр q, кодом завершения будет 2.

Об ошибках сообщайте по адресу <buggrep@gnu.org>

Об ошибках в переводе сообщайте по адресу <gnu@mx.ru>

Домашняя страница GNU grep: <http://www.gnu.org/software/grep/>

Справка по работе с программами GNU: <http://www.gnu.org/gethelp/>

andryuhan@Linuxoidkomp ~ $

А теперь, пример ее применения на практике в качестве команды фильтра:

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@Linuxoidkomp ~ $ 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@Linuxoidkomp ~ $ echo TTggUUiiLLkkGluPost > text

andryuhan@Linuxoidkomp ~ $ echo glupost >> text

andryuhan@Linuxoidkomp ~ $ cat text

TTggUUiiLLkkGluPost

glupost

andryuhan@Linuxoidkomp ~ $ cat text | grep glupost

glupost

andryuhan@Linuxoidkomp ~ $ cat text | grep i glupost

TTggUUiiLLkkGluPost

glupost

andryuhan@Linuxoidkomp ~ $ cat text | grep w glupost

glupost

andryuhan@Linuxoidkomp ~ $ cat text | grep iw glupost

glupost

andryuhan@Linuxoidkomp ~ $ cat text | grep c glupost

1

andryuhan@Linuxoidkomp ~ $ cat text | grep v glupost

TTggUUiiLLkkGluPost

andryuhan@Linuxoidkomp ~ $ rm text

andryuhan@Linuxoidkomp ~ $

Команда «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@Linuxoidkomp ~ $ 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@Linuxoidkomp ~/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@Linuxoidkomp ~/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@Linuxoidkomp ~/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@Linuxoidkomp ~/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@Linuxoidkomp ~/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@Linuxoidkomp ~/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@Linuxoidkomp ~/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@Linuxoidkomp ~/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@Linuxoidkomp ~/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@Linuxoidkomp ~/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@Linuxoidkomp ~/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@Linuxoidkomp ~/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@Linuxoidkomp ~/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@Linuxoidkomp ~/dosgames $ cat /etc/apt/aptfile.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 = diffindexdownload i «<uri>/dists/<dist>/Contents-<arch>.gz» <cache>/<dest>

https = diffindexdownload i «<uri>/dists/<dist>/Contents-<arch>.gz» <cache>/<dest>

ftp = diffindexdownload 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 = diffindexdownload 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@Linuxoidkomp ~/dosgames $ cat /etc/apt/aptfile.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 = diffindexdownload 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 = diffindexdownload i «<uri>/dists/<dist>/Contents-<arch>.gz» <cache>/<dest>

# host => remote hostname

http = diffindexdownload i «<uri>/dists/<dist>/Contents-<arch>.gz» <cache>/<dest>

https = diffindexdownload 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@Linuxoidkomp ~/dosgames $ cat /etc/apt/aptfile.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 = diffindexdownload 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 = diffindexdownload i «<uri>/dists/<dist>/Contents-<arch>.gz» <cache>/<dest>

# host => remote hostname

http = diffindexdownload i «<uri>/dists/<dist>/Contents-<arch>.gz» <cache>/<dest>

https = diffindexdownload 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@Linuxoidkomp ~/dosgames $ cat /etc/apt/aptfile.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 = diffindexdownload 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 = diffindexdownload i «<uri>/dists/<dist>/Contents-<arch>.gz» <cache>/<dest>

# host => remote hostname

http = diffindexdownload i «<uri>/dists/<dist>/Contents-<arch>.gz» <cache>/<dest>

https = diffindexdownload 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@Linuxoidkomp ~/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@Linuxoidkomp ~ $ mkdir test && cd test && pwd

/home/andryuhan/test

andryuhan@Linuxoidkomp ~/test $ echo 1 >> t

andryuhan@Linuxoidkomp ~/test $ echo 2 >> t

andryuhan@Linuxoidkomp ~/test $ echo 3 >> t

andryuhan@Linuxoidkomp ~/test $ cat t

1

2

3

andryuhan@Linuxoidkomp ~/test $ echo 1 >> t

andryuhan@Linuxoidkomp ~/test $ echo 5 >> t

andryuhan@Linuxoidkomp ~/test $ echo 4 >> t

andryuhan@Linuxoidkomp ~/test $ cat t

1

2

3

1

5

4

andryuhan@Linuxoidkomp ~/test $ cat t | sort u

1

2

3

4

5

andryuhan@Linuxoidkomp ~/test $ echo » 4″ >> t

andryuhan@Linuxoidkomp ~/test $ cat t | sort u

1

2

3

4

4

5

andryuhan@Linuxoidkomp ~/test $ cat t | sort u

1

2

3

4

4

5

andryuhan@Linuxoidkomp ~/test $ cat t | sort b

1

1

2

3

4

4

5

andryuhan@Linuxoidkomp ~/test $ cat t | sort bu

1

2

3

4

5

andryuhan@Linuxoidkomp ~/test $ cat t | sort i

1

1

2

3

4

4

5

andryuhan@Linuxoidkomp ~/test $ cat t

1

2

3

1

5

4

4

andryuhan@Linuxoidkomp ~/test $ echo ббб  >> tt

andryuhan@Linuxoidkomp ~/test $ echo ггг  >> tt

andryuhan@Linuxoidkomp ~/test $ echo ррр  >> tt

andryuhan@Linuxoidkomp ~/test $ echo рар  >> tt

andryuhan@Linuxoidkomp ~/test $ cat tt

ббб

ггг

ррр

рар

andryuhan@Linuxoidkomp ~/test $ cat tt | sort

ббб

ггг

рар

ррр

andryuhan@Linuxoidkomp ~/test $ cat tt | sort ott

andryuhan@Linuxoidkomp ~/test $ cat tt

ббб

ггг

рар

ррр

andryuhan@Linuxoidkomp ~/test $ cd .. && rm rf test && ls l test

ls: невозможно получить доступ к ‘test’: Нет такого файла или каталога

andryuhan@Linuxoidkomp ~ $

Что ж, наглядно и понятно в достаточной мере на примерах, мною проявлена и выражена работа команды сортировки, чтобы это смог понять неопытный, разобравшись в результатах выполнения. Однако, рекомендую, спокойно, прочитать, не пытаясь делать это с лупой. Заодно, попробовать повторить самим у себя, т.к. эти примеры не влияют на работу вашего компьютера. Единственное, что стоит учесть, так это имя директории «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@Linuxoidkomp ~ $ wc help

Использование: wc [КЛЮЧ] [ФАЙЛ]

       или:    wc [КЛЮЧ] files0from=Ф

Печатает число символов новой строки, слов и байт для каждого ФАЙЛА и

итоговую строку, если было задано несколько ФАЙЛОВ. Словом считается

последовательность символов ненулевой длины, отделённая пробельным символом.

Если ФАЙЛ не задан или задан как , читает стандартный ввод.

Для выбора выводимых счётчиков используются следующие параметры

(счётчики всегда выводятся в таком порядке: символы новой строки,

слова, символы, байты, максимальная длина строки):

  c, bytes            напечатать количество байт

  m, chars            напечатать количество символов

  l, lines            напечатать количество новых строк

      files0from=Ф    читать ввод из файлов, имена которых

                         (завершённые нулем) перечислены в файле Ф;

                         Если Ф равно , то читать имена файлов из

                         стандартного ввода

  L, maxlinelength  напечатать максимальной число строк по ширине экрана

  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@Linuxoidkomp ~ $ cat /etc/apt/aptfile.conf | wc

     40     283    2144

andryuhan@Linuxoidkomp ~ $ cat /etc/apt/aptfile.conf | wc c

2144

andryuhan@Linuxoidkomp ~ $ cat /etc/apt/aptfile.conf | wc m

2144

andryuhan@Linuxoidkomp ~ $ cat /etc/apt/aptfile.conf | wc l

40

andryuhan@Linuxoidkomp ~ $ cat /etc/apt/aptfile.conf | wc w

283

andryuhan@Linuxoidkomp ~ $ cat /etc/apt/aptfile.conf | wc L

204

andryuhan@Linuxoidkomp ~ $

Команда «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@Linuxoidkomp ~ $ comm help

Использование: comm [КЛЮЧ] ФАЙЛ1 ФАЙЛ2

Сравнивает сортированные файлы ФАЙЛ1 и ФАЙЛ2 построчно.

Если ФАЙЛ1 или ФАЙЛ2 (но не оба) задан как , читается стандартный ввод.

При запуске без ключей выдает результат в три столбца. Первый столбец

содержит строки, уникальные для ФАЙЛА1, второй уникальные для

ФАЙЛА2, а третий общие для обоих файлов строки.

  1                      не показывать столбец 1 (строки, уникальные

                          для ФАЙЛА1)

  2                      не показывать столбец 2 (строки, уникальные

                          для ФАЙЛА2)

  3                      не показывать столбец 3 (строки, встреченные

                          в обоих файлах)

  checkorder           проверить правильность сортировки ввода, даже

                          если все входные строки имеют пару

  nocheckorder         не проверять правильность сортировки ввода

  outputdelimiter=РАЗ  отделять столбцы с помощью РАЗделителя

  z, zeroterminated        разделитель строк 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@Linuxoidkomp ~ $ mkdir test && cd test && pwd

/home/andryuhan/test

andryuhan@Linuxoidkomp ~/test $ echo 1 2 3 4 >> text1

andryuhan@Linuxoidkomp ~/test $ echo 1 2 3 4 >> text1

andryuhan@Linuxoidkomp ~/test $ echo 1 2 5 3 4 >> text1

andryuhan@Linuxoidkomp ~/test $ echo 1 2 5 3 4 6 >> text1

andryuhan@Linuxoidkomp ~/test $ echo 1 2 3 4 >> text2

andryuhan@Linuxoidkomp ~/test $ echo 1 2 3 4 6 >> text2

andryuhan@Linuxoidkomp ~/test $ echo 1 2 5 3 4 6 >> text2

andryuhan@Linuxoidkomp ~/test $ cat text1

1 2 3 4

1 2 3 4

1 2 5 3 4

1 2 5 3 4 6

andryuhan@Linuxoidkomp ~/test $ cat text2

1 2 3 4

1 2 3 4 6

1 2 5 3 4 6

andryuhan@Linuxoidkomp ~/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@Linuxoidkomp ~/test $ comm 12 text1 text2

1 2 3 4

1 2 5 3 4 6

andryuhan@Linuxoidkomp ~/test $ cd && rm rf test && ls l test

ls: невозможно получить доступ к ‘test’: Нет такого файла или каталога

andryuhan@Linuxoidkomp ~/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@Linuxoidkomp ~ $ mkdir test && cd test && pwd

/home/andryuhan/test

andryuhan@Linuxoidkomp ~/test $ echo Как делали раньше

Как делали раньше

andryuhan@Linuxoidkomp ~/test $ touch text

andryuhan@Linuxoidkomp ~/test $ nano text

andryuhan@Linuxoidkomp ~/test $ echo После записи ранее выведенного текста через ПГИП редактор, посмотрим, что у нас в файле.

После записи ранее выведенного текста через ПГИП редактор, посмотрим, что у нас в файле.

andryuhan@Linuxoidkomp ~/test $ cat text

Как делали раньше

andryuhan@Linuxoidkomp ~/test $ echo Теперь удалим его и запишем новым способом

Теперь удалим его и запишем новым способом

andryuhan@Linuxoidkomp ~/test $ rm text

andryuhan@Linuxoidkomp ~/test $ ls

andryuhan@Linuxoidkomp ~/test $ echo Как делали раньше > text

andryuhan@Linuxoidkomp ~/test $ ls

text

andryuhan@Linuxoidkomp ~/test $ cat text

Как делали раньше

andryuhan@Linuxoidkomp ~/test $ echo Теперь, дополним запись с конца файла без его стирания.

Теперь, дополним запись с конца файла без его стирания.

andryuhan@Linuxoidkomp ~/test $ echo Теперь, дополним запись с конца файла без его стирания. >> text

andryuhan@Linuxoidkomp ~/test $ cat text

Как делали раньше

Теперь, дополним запись с конца файла без его стирания.

andryuhan@Linuxoidkomp ~/test $ cd && rm rf test && ls l test

ls: невозможно получить доступ к ‘test’: Нет такого файла или каталога

andryuhan@Linuxoidkomp ~ $

Для Начинающего в командной строке, такого применения полностью хватает. Однако, стоит понимать, что для опытного применения (посложнее), требуется почитать справочную литературу на тему «Линукс каналы ввода и вывод команд». Так что, теперь вы можете смело записывать результаты вывода в файл, что бы потом их прочитать позднее. Или также, вести свой «маленький журнал». Посредством одной командой «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@Linuxoidkomp ~ $ mkdir test && cd test && pwd

/home/andryuhan/test

andryuhan@Linuxoidkomp ~/test $ echo 1 2 3 4 5 6 7 8 9 10 > sozidat

andryuhan@Linuxoidkomp ~/test $ ls

sozidat

andryuhan@Linuxoidkomp ~/test $ touch <sozidat

touch: пропущен операнд, задающий файл

По команде «touch help» можно получить дополнительную информацию.

andryuhan@Linuxoidkomp ~/test $ touch `<sozidat`

andryuhan@Linuxoidkomp ~/test $ ls

1  10  2  3  4  5  6  7  8  9  sozidat

andryuhan@Linuxoidkomp ~/test $ echo `<sozidat`

1 2 3 4 5 6 7 8 9 10

andryuhan@Linuxoidkomp ~/test $ wc w < sozidat

10

andryuhan@Linuxoidkomp ~/test $ cat sozidat | wc w

10

andryuhan@Linuxoidkomp ~/test $ wc w sozidat

10 sozidat

andryuhan@Linuxoidkomp ~/test $ cd && rm rf test && ls l test

ls: невозможно получить доступ к ‘test’: Нет такого файла или каталога

andryuhan@Linuxoidkomp ~ $

Помимо ранее указанного, в примере (в конце) приводится применение оператора так, как оно полагается изначально. Однако, стоит понимать, что для этого команда обязана сама быть направленной на получение входящего файла. Наглядный этому пример с командой «wc«, где было получен один и тот же результат тремя различными способами, что явно дает понять, насколько в ОС Линукс, легко и просто многое делать командами через командную строку, а не щелкать мышкой по экрану. Также отмечу, что команды, где этого было недоступно, все равно получилось добиться желаемого без уловок, применив оператор подстановки, который объяснялся в статьях ранее в этом цикле статей.

Это основные операторы перенаправления потока ввода и вывода. Однако, помимо них есть еще два оператора, которые значительно облегчат применение командной строки, благодаря чему достаточно применять все в одном терминале, пока не возникнет необходимость делать по старинке.

Первый из них это, «&«, который позволяет параллельно запустить выполнение команды и не занимать командную строку ожиданием его выполнения, до тех пор пока команда не будет выполнена или ее выполнения не прервут, о чем будет сообщено в том же месте, где был сделан запуск.

andryuhan@Linuxoidkomp ~ $ nano &

[2] 27402

andryuhan@Linuxoidkomp ~ $ echo редактор запущен, однако это не мешает вывести данный текст здесь, а не в редакторе

редактор запущен, однако это не мешает вывести данный текст здесь, а не в редакторе

[2]+  Остановлено  nano

andryuhan@Linuxoidkomp ~ $

Следующий оператор, это тот, который вы с большей вероятностью будете применять чаще всего, его символ такой: «|«. Он просто объединяет вход следующей команды с выходом предыдущей и может объединять множество команд между собой, например см. ниже.

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@Linuxoidkomp ~ $ cd dosgames

andryuhan@Linuxoidkomp ~/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@Linuxoidkomp ~/dosgames $ ls | sort d | cat

Another World

Arkanoid_2

Balda

BChess

BSTONE

CROWRUS

DAV2

Digger

dirtext

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@Linuxoidkomp ~/dosgames $ cd

/home/andryuhan

andryuhan@Linuxoidkomp ~ $

Как видите, нет ничего сложного в простом и элементарном понимании и применении каналов ввода и вывода. Для ознакомления и обучения на уровне Начинающего в командной строке ОС Линукс, этого, достаточно знать и уметь применять, чтобы грамотно применять основные возможности командной строки.

В заключение.

На данном этапе, мы с вами, научили все основным возможностям командной строки. Однако, не стоит забывать, что это не все команды, которые доступны для применения. А также, не стоит забывать, что для грамотного применения некоторых команд или целых групп, требуются знания, по части применяемого направления или касательно самой ОС Линукс. Так что, следующей статьей мы закончим с вами ознакомление с командной строкой ОС Линукс и подведем итоги обучения и ознакомления для Начинающих в ОС Линукс.

Благодарю, за участие, мне приятно знать, что вы чему-то научились за время прочтения этой статьи.

  • SS64
  • CMD
  • How-to

FC.exe

Compare the contents of two files or sets of files. Display any lines which do NOT match.

Syntax
      FC [options] [drive1:][path1] filename1 [drive2:][path2] filename2

Options
   /A    Abbreviate the output of an ASCII comparison, display only first and last lines
         for each set of differences.

   /B    Perform a binary comparison. FC compares the two files byte by byte and does not attempt
         to resynchronize the files after finding a mismatch.
         This is the default mode for comparing files that have the following file extensions:
          .exe, .com, .sys, .obj, .lib, or .bin. 

   /C    Do a case insensitive string comparison

   /L    Compare the files in ASCII mode. Fc compares the two files line by line and attempts to resynchronize
         the files after finding a mismatch.
         This is the default mode for comparing non binary files, see /B. 

   /LBn  Set the n number of lines for the internal line buffer. The default length of the line buffer is 100 lines.
         If the files being compared have more than this number of consecutive differing lines, FC cancels the comparison. 

   /N    Display line numbers during an ASCII comparison.

   /T    Prevent FC from converting tabs to spaces.
         The default behavior is to treat tabs as spaces, with stops at each eighth character position.

   /U    Compares files as Unicode text files.

   /W    Compress white space (that is, tabs and spaces) during the comparison.
         If a line contains many consecutive spaces or tabs, /w treats these characters as a single space.
         When used with the /W command-line option, FC ignores (and does not compare) white space at the beginning and end of a line. 

   /nnnn   The a number of consecutive lines that must match before FC considers the files to be resynchronized.
           If the number of matching lines in the files is less than nnnn, FC displays the matching lines as differences.
           The default value is 2.

 [ drive1 : ][ path1 ] filename1   The location and name of the first file you want to compare.
                                   Filename1 is required.

 [ drive2 : ][ path2 ] filename2   The location and name of the second file you want to compare.
                                   Filename2 is required.

 Wildcards ( * and ? ) may be used with filename1 or filename2, FC will then compare all the matching files.

PowerShell also has an Alias FC for the Format-Custom cmdlet, therefore to run the ‘old’ FC under PowerShell you can explicitly run C:\windows\system32\fc.exe

Errorlevels

FC will set an ErrorLevel as follows:

-1 Invalid syntax (e.g. only one file passed)
0 The files are identical.
1 The files are different.
2 Cannot find at least one of the files.
For an invalid switch (with two passed files) an error message is printed but the errorlevel is not changed.

The messages returned by FC are language/locale dependent, so to reliably identify 2 identical files use redirection syntax:

   FC File1.txt File2.txt >NUL && Echo Same || Echo Different or error

Comparison order

When FC is used for an ASCII comparison, it will display differences between two files in the following order:

  1. Name of the first file
  2. Lines from filename1 that differ between the files
  3. First line to match in both files
  4. Name of the second file
  5. Lines from filename2 that differ
  6. First line to match

Binary Comparisons

/B displays mismatches found during a binary comparison as follows: xxxxxxxx: yy zz

The value of xxxxxxxx specifies the relative hexadecimal address for the pair of bytes, measured from the beginning of the file. Addresses start at 00000000.
The hexadecimal values for yy and zz represent the mismatched bytes from filename1 and filename2, respectively.

When comparing binary files that are larger than available memory, FC compares both files completely, overlaying the portions in memory with the next portions from the disk.

PowerShell

Like every other external command FC can be run under PowerShell instead of CMD, however there is one extra complication for FC and that is the standard PowerShell alias FC which redirects to the
Format-Custom cmdlet.

To avoid that, use the call operator to run FC.exe:

& fc.exe

Examples

Make a binary comparison of two DLL files:

FC /b new.dll old.dll

Compare two files and report if they are identical:

(FC /B "new.dll" "old.dll" | Find "FC: no differences encountered") > nul && (Echo The Files match.)

Make an ASCII comparison of two text files and display the result in abbreviated format:

FC /a C:\demo\input.txt H:\work\output.txt

# Oh lord won’t you buy me a Mercedes Benz, my friends all drive Porsches, I must make amends # ~ Janice Joplin

Related commands

COMP — Compare two files and display any characters which do NOT match.
FIND — Search for a text string in a file.
FINDSTR — Search for strings in files.
WinDiff — GUI to compare files.
Equivalent PowerShell: Compare-Object — Compare the properties of objects, e.g. compare content of files.
Equivalent bash command (Linux):cmp — Compare two files.


Copyright © 1999-2025 SS64.com
Some rights reserved

For example, I want to check whether PHP has the zip extension installed. Under normal circumstances, we run the following commands directly, but the results are relatively large. Although the order has been arranged by the first letter, it still looks messy. Similar to the grep method filtering under Linux? The answer is yes.


C:\Users\Administrator>php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
fileinfo
filter

Use find filtering under windows:

C:\Users\Administrator>php -m |find /i "zip"
zip

The way to view the help is also special:

find /?

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] “string” [[drive:][path]filename[ …]]
/V Display all lines that do not contain the specified string.
/C Only display the number of lines containing strings.
/N Display line number.
/I Ignore case when searching for strings.
/OFF[LINE] Don’t skip files with offline attribute set.
«string» specifies the text string to be searched.
[drive:][path]filename
Specify the file to be searched.
If the path is not specified, FIND will search and type at the prompt
text or text generated by another command.

Why are there no wildcards?? The answer is yes!

C:\Users\Administrator>findstr /?
Find a string in the file.
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ …]]
/B Matching mode at the beginning of a line.
/E matches the pattern at the end of a line.
/L Use search string by word.
/R Use the search string as a general expression.
/S Search for matching files in the current directory and all subdirectories.
/I specifies that the search is not case sensitive.
/X Print the exact matching line.
/V Only print lines that do not contain a match.
/N Print the number of lines before each line that matches.
/M If the file contains matching items, only the file name is printed.
/O Print the character offset before each matching line.
/P Ignore files with unprintable characters.
/OFF[LINE] Do not skip files with offline attribute set.
/A:attr Specify the color attributes with hexadecimal numbers. See «color /?»
/F:file Read the file list from the specified file (/ represents the console).
/C:string Use the specified string as the text search string.
/G:file Get the search string from the specified file. (/ stands for console).
/D:dir Find a directory list separated by semicolons
strings The text to find.
[drive:][path]filename
Specify the file to be searched.
Unless the parameter has a /C prefix, use spaces to separate the search string.
For example: ‘FINDSTR “hello there” x.y’ Find “hello” in the file x.y or
«there». ’FINDSTR /C:”hello there” x.y’ file x.y find
“hello there”。
Quick reference for general expressions:
. Wildcard: any character
* Repeat: The previous character or class appears zero or more times
^ Line position: start of line
$ Line position: end of line
[class] Character class: any character in the character set
[^class] Complementary character class: any character not in the character set
[x-y] Range: any character in the specified range
\x Escape: Text usage of metacharacter x
\


C:\Users\Administrator>php -m |findstr /r "zi."
zip

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Video ui exe что это за процесс windows 10
  • Пропали файлы с рабочего стола windows 10 как вернуть
  • Программирование под windows 10 mobile
  • Windows 11 fresh install
  • Установка mac os high sierra с флешки с нуля windows