#006 Linux Mint. Команды для определения типа файлов и их просмотра (ls, file, cat, head, tail, less, more, wc)

Привет, посетитель сайта ZametkiNaPolyah.ru! В рубрике, посвященной системе Linux мы уже разобрались с несколькими полезными командами, которые дают нам возможность изучать систему и передвигаться по лабиринту каталогов. Теперь я предлагаю поговорить о командах, которые дают нам возможность более тесно познакомиться с системой, а именно о командах Linux, которые позволяют просматривать файлы и определять тип их содержимого.

Команды для определения типа файлов и их просмотра (ls, file, cat, head, tail, less, more, wc)

Команды для определения типа файлов и их просмотра (ls, file, cat, head, tail, less, more, wc)

Всего мы рассмотрим восемь команд: ls, file, cat, head, tail, less, more, wc. Давайте во вступлении коротко расскажу о их назначении. Команда ls в Unix-подобных операционных системах позволяет просматривать содержимое каталогов, мы уже о ней упоминали ранее. Команда file в Linux позволяет определить тип файла, в прошлой публикации я уже подробно описал эту команду, но приходится повторяться, иначе эта публикация будет не полной. Команда cat в самом простом своем варианте позволяет просмотреть содержимое файла, выводя его на экран эмулятора терминала, что не всегда бывает удобно. Команда head выводит первых 10 строк файла на экран эмулятора терминала хотя ее поведение можно изменить при помощи параметров. Команда tail в своем стандартном режиме работы выводит последних 10 строк файл на экран, ее поведение также меняется параметрами. Команда less в Linux используется для просмотра больших файлов, использовать ее удобнее, чем команду cat, поскольку она разбивает содержимое файла на страницы и дает возможность осуществлять поиск по файлу. Команда more не рекомендована к использованию, так как есть команда less, ее я упоминаю лишь потому, что есть некоторые дистрибутивы Linux, в которых есть more, но нет less.  И наконец команда wc используется в системах Linux для определения размера файлов, причем команда wc может выводить размер файла в попугаях, удавах и мартышках, вернее в байтах, строках, символах и других единицах измерения.


Немного о файлах в Linux

Перед тем как мы начнем рассматривать команды оболочки, которые дают возможность просматривать файлы и получать о них информацию, давайте немного поговорим о самих файлах. Буквально в прошлой публикации я отмечал два очень важных момента, касающихся файлов в Linux: все сущее в Unix-подобных операционных системах есть файл и для определения типа файлов операционным системам типа Linux вовсе не требуется расширения, хотя в Linux есть приложения, которые определяют тип файла по его расширению.

Также стоит заметить, что в Linux, в том числе и в дистрибутиве Linux Mint, есть специальные файлы, имена которых начинаются с точки, эти файлы считаются скрытыми и, например, когда мы пользуемся командной ls без дополнительных параметров, мы эти файлы не увидим. Чуть позже мы посмотрим мой домашний каталог и обнаружим несколько скрытых файлов, которые хранят в себе различные параметры учетной записи пользователя, такие файлы называются конфигурационным, пользуясь Linux, вам придется часто работать с такими файлами: просматривать и редактировать их.

Также стоит заметить, что операционные системы подобные Unix различают регистр символов в именах файлов, например: file1, File1 и FILE1 – это три разных файла, хотя содержимое у них может быть одинаковым.

Обычно любой дистрибутив Linux сможет работать с файлами, имена которых содержат пробелы, кириллицу и знаки пунктуации, но использовать пробелы, кириллицу и знаки пунктуации (кроме точки, дефиса и нижнего подчеркивания) не стоит для своего удобства. Рекомендация: если имя вашего файла состоит из двух слов, то вместо пробелов используйте нижнее подчеркивание, подобная практика даст вам повод в будущем любить себя прошлого так, как будто вы нашли деньги в куртке, которую давно не носили.

Тут нам стоит отметить, что не только файлы, но и каталоги в Linux могут быть с точкой, например, каталог .ssh. Что же, на данном этапе нам достаточно полученной информации, чтобы начать знакомство с некоторыми полезными и часто используемыми командами.

Если у вас еще не установлена копия дистрибутива Linux и вы не знаете как это сделать, то рекомендую вам ознакомиться с несколькими публикациями, где я последовательно рассказываю про виртуальную машину Oracle VirtualBox и ее установку на Windows 10, затем перейдите к публикации про установку дистрибутива Linux Mint на виртуальную машину, а чтобы быстрее разобраться с интерфейсом VirtualBox ознакомьтесь с небольшой инструкцией.

ls – команда для получения информации о файлах в каталоге Linux

Мы уже видели возможности команды ls, когда говорили про навигацию в Linux, но ее возможности куда шире благодаря дополнительным параметра, некоторые из них мы сейчас и рассмотрим. Так выглядит результат работы команды ls без параметров для моего домашнего каталога:

А вот так с параметром -l, который выводит дополнительную информацию о объектах, находящихся в каталоге:

Как видите, мы получили довольно много информации о файлах и каталогах одной простой командной, если вы пока не понимаете, что здесь к чему, не пугайтесь, буквально через две публикации все встанет на свои места. На самом деле в домашнем каталоге папок и файлов куда больше, давайте передадим ей еще и параметр -a команде ls:

Их можно комбинировать и вот таким образом:

А еще команда ls может показывать содержимое каталогов, отличных от текущего рабочего каталога, для этого ей нужно передать в качестве аргумента путь к каталогу, который вы хотите посмотреть:

Параметры в этом случае также можно использовать:

Мы рассмотрели несколько полезных примеров использования команды ls, но это далеко не всё.

file – команда для определения типа файлов в Linux

С командой file мы уже знакомы, но данная часть была бы не совсем полной, если бы ее не упомянули здесь. Команды file помогает определить тип файла, ведь в операционных системах с ядром Linux у файлов необязательно будет расширение, а тип файла нам иногда требуется определить. Давайте сперва посмотрим на содержимое уже знакомого нам каталога dir2:

А теперь давайте определим тип всех объектов файловой системы, находящихся в этом каталоге при помощи команды file:

Здесь мы передали только один файл команде file и она определила, что это обычный текстовый файл и указала его кодировку. Но еще команде file можно указать сразу несколько имен файлов, разделяя их пробелом:

Теперь мы видим, что в каталоге dir2 является изображением, что текстом, а где здесь вообще пустой файл. Давайте попробуем перейти в домашний каталог (cd ~) и оттуда определить тип файла, который находится в каталоге dir2:

Как видим, команда file, как и многие другие команды Linux может работать не только с объектами текущего рабочего каталога, но и проверять файлы по указанному пути, в данном случае мы, находясь в своем домашнем каталоге проверили файл, который находится в каталоге dir2, указав полный путь до этого файла.

 

cat – команда для вывода содержимого файлов в Linux

Команда cat в Linux выполняет две функции в зависимости от количества переданных аргументов. Первая функция: данная команда позволяет просмотреть содержимое файла. Вот так мы можем посмотреть содержимое файла, вернее вывести его на экран терминала:

kirill@AsusPC ~/Рабочий стол/dir1/dir2 $ cat file6
Второй текст
kirill@AsusPC ~/Рабочий стол/dir1/dir2 $

 

Но содержимое может быть довольно-таки большим и вывод команды cat будет не очень читабельным:

Команда cat выводит содержимое файла непосредственно на экран эмулятора терминала

Команда cat выводит содержимое файла непосредственно на экран эмулятора терминала

Команда cat выводит содержимое файла непосредственно на экран эмулятора терминала, что не очень удобно если содержимое файла достаточно велико, для его просмотра придется пользоваться прокруткой, а о том, чтобы что-то быстро найти не может быть и речи. Если команде cat передать два и более аргумента, то она объединить содержимое нескольких файлов и выведет нам на экран:

Обратите внимание: сперва было выведено содержимое файла pict1.jpg, а затем к нему добавилось содержимое файла с именем file6. Теоретически команде cat можно передавать неограниченное число аргументов и таким образом объединять их содержимое на экране вывода терминала. А если cat в качестве аргумента передать имя каталога, то она нам сообщит, что это не файл, а каталог и больше ничего не выведет.

Польза от команды cat для нас пока не очень очевидна и будет не очевидна до тех пор, пока мы не разберемся с перенаправлением и стандартным ввод-выводом в Linux. Замечу, что команду cat можно использовать не только в текущем рабочем каталоге, но и передавать ей в качестве аргумента путь до файла, лежащего в другой папке, но это вы можете попробовать самостоятельно.

head – команда для вывода первых 10 строка файла в Linux

Иногда вам требуется просмотр не весь файл целиком, а только первых несколько строк, для этого есть команда head, которая без дополнительных параметров выводит первых 10 строк файла на экран:

Данная команда не нумерует строки, это сделал я непосредственно в текстовом файле. У команды head есть параметр -n, который позволяет задать количество строк, которые вы хотите увидеть, это довольно просто (после параметра -n нужно указать количество строк, которое вы хотите увидеть):

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

Вместо строк команда head может выводить первых n байт, за это отвечает параметр -c:

Обратите внимание: для параметра -с нужно обязательно указывать количество выводимых на экран байт. Можно пропустить последних n байт и вывести оставшееся содержимое файла, для этого поставьте знак минус перед числом.

Собственно, это всё, что стоит знать о команде head. Хотя у этой команды есть еще несколько параметров, воспользуйтесь командой man, чтобы получить справку: man head.

tail – команда для вывода последних 10 строк файла в Linux

Команда tail похожа на head, но в отличие от предыдущей, данная команда выводит последних 10 строк из указанного файла, выглядит это примерно так:

Также команда tail обладает рядом параметров, которые несколько расширяют ее арсенал возможностей. Например, здесь точно также можно задать количество выводимых строк при помощи параметра -n:

Еще команда tail может напечатать строки, начиная с определенной строки при помощи параметра -n+390 (вместо 390 любое другое число), таким образом tail выведет весь файл, начиная со строки под номером 390:

Команда tail, как и head, может работать с байтами, здесь также используется параметр -c:

А если воспользоваться конструкцией -c+49, то tail напечатает весь файл, начиная с 49 байта. Есть еще одна важная особенность работы команды tail, ее можно использовать для динамического вывода данных или для отслеживания изменений в файле, для этих целей используется специальный параметр -F. Когда вы выполните команду tail -F для какого-либо файла, то командная оболочка не станет возвращать вам приглашение, а будет ждать добавление новых строк в указанный файл, чтобы затем вывести изменения вам на экран. К сожалению, скрином это показать не представляется возможным, но учтите, после того как вы выполните команду tail с параметром -F, вы не увидите на экране терминала приглашения.

Чтобы вернуть управление и получить приглашение от командной оболочки, воспользуйтесь сочетанием клавиш Ctrl+C. Мы еще попробуем поработать с командами tail и head, когда пойдет разговор о конвейерах и фильтрах.

less – команда для постраничного просмотра содержимого файла в Linux

Как мы уже видели ранее, использовать команду cat для больших файлов не очень удобно и более того – не очень-то и правильно, ведь в Unix-подобных операционных системах есть замечательная команда less, которая предназначена для постраничного просмотра текстовых файлов. Команду less используют многие пользователи Linux, что просматривать конфигурационные файлы и разбираться с тем, как работает та или иная штука или же команду less можно использовать, чтобы понять, как работает та или иная программа, ведь в Linux некоторые программы – это сценарии, написанные в текстовом файле. Откройте текстовый файл при помощи команду less.

Текстовый файл, открытый командой less

Текстовый файл, открытый командой less

Обратите внимание как изменилось окно эмулятора терминала: вместо всех предыдущих команд и выводов мы теперь видим содержимое файла, которое less разбил на страницы.

Файл можно прокручивать вверх и вниз при помощи клавиши «Пробел» вы можете листать файл вниз, а клавиша «b» позволяет листать вверх. Стрелки вверх и вниз дают нам возможность прокрутить файл вверх или вниз на одну строку. Кнопка «G» переместит вас в конец текстового файла, «g» отправит вас в начало файла. Клавиша «h» вызовет для вас справку по работе с командой less, а «q» закроет текстовый файл, и вы увидите приглашение.

Но при помощи команды less можно осуществлять поиск по файлу, когда вы открыли файл при помощи less, то можете воспользоваться вот такой конструкцией для поиска «вперед» по файлу:

Здесь после символа «/» вы вписываете слово, которое хотите найти в файле. Если less нашла вхождение, а вы хотите продолжить поиск, то нажмите клавишу «n», это продолжит поиск, продолжать можно до конца файла.

Поиск можно осуществлять и «назад», для этого воспользуйтесь вот такой конструкцией, естественно, файл должен быть открыт при помощи less:

Здесь точно также для продолжения поиска можно использовать клавишу «n». Но и в первом, и во втором случае можно воспользоваться клавишей «N», чтобы посмотреть предыдущее найденное вхождение.

Замечу, что это лишь те возможности команды less, которым вы будете пользоваться чаще всего, получите больше информации о команде, воспользовавшись: man less.

more – устаревший аналог команды less в Linux

Если вы используете достаточно древний дистрибутив Linux, то, возможно, что в нем не будет работать команда less, но в таком дистрибутиве есть команда more, которая имеет несколько более скромные возможности, чем less, если вам нужно больше информации по этой команде, то воспользуйтесь интерактивной справкой. Команду more применять в современных дистрибутивах не стоит.

Здесь мы отметим, что есть еще команда pg, которая предоставляет функционал аналогичный двум предыдущим, но о ней мы поговорим в дальнейшем.

wc – команда для определения размера файла в Linux

Про команду wc мы еще поговорим, но сейчас нам важно отметить, что команда wc дает нам возможность определить размер файла в системах Linux, да и имя команды wc (word count) можно перевести как счетчик слов и, как становится понятно из названия, эта команда позволяет нам подсчитать количество строк, слов и байтов в файлах:

Команде необязательно передавать аргументы, она может работать со стандартным вводом. Нам стоит отметить, что у wc есть несколько полезных параметров:

  • -l вывод количества новых строк;
  • -w вывод количества слов;
  • -m вывод общего количества символов;
  • -c вывод количества байт;
  • -L вывод длину самой длинной строки в заданном тексте.

Итак, мы рассмотрели самые востребованные команды оболочки, которые позволяют нам просматривать файлы и получать об этих самых файлах полезную информацию. Команда ls используется для просмотра содержимого каталогов. Команда file применяется тогда, когда есть необходимость точно знать тип файла. Команда cat вывод содержимое файла на экран терминала, если в качестве аргумента ей передать один файл, если два и больше, то она объединит содержимое файлов на экране. Команды head и tail используются для частичного вывода данных из файла, а вторую можно еще использовать для мониторинга логов. А команды less и more применяются для просмотра содержимого файлов.

Рекомендую посмотреть и почитать: