Правила использования операторов grep и find в Linux

Что-то я ушёл от темы. Итак, обычно для того, чтобы сравнить два файла в Linux, я использую

Основные

Помощь

Забыли аргументы для cp? Какая опция у команды mkdir? Вот вам подсказка:

help nano # кратко о команде “nano” man nano # подробная информация о “nano”

Конвейер

Зачастую с его помощью перенаправляют вывод одной команды на ввод другой или приписывают команду к файлу:

a | b # конвейер: передать вывод команды a на ввод b a > # сохранить вывод команды a в (перезаписать) a >> # сохранить вывод команды a в (добавить) echo «Hello!» | xargs echo # направить вывод первой команды, как аргумент второй

Фильтрация вывода

Бывает, что команда выводится слишком долго. В этом случае вы либо разделите страницу с помощью команды more или less, либо выведите строки, которые содержат специальное слово или предложение с grep:

cat | more # постранично показывает содержимое cat | постранично показывает содержимое , и позволяет перемещаться по файлу cat | grep “I love you” # показывает строчку, где расположена строка “I love you”

Очистка экрана

Слишком много текста в терминале? Просто напишите clear и продолжайте работать.

clear # очистка терминала

Терминал

Основным способом управления в Linux, независимо от версии (Ubuntu, Mint и т.п.) является терминал. Он внешне очень схож с командной строкой Windows (или командная строка схожа с терминалом). Даже команды в каком-то смысле очень схожи (дело в том, что исходными являются одни и те же слова из английского языка). Чтобы открыть терминал нужно нажать сочетание клавиш «CTRL+ALT+T».

Удаление файлов и папок

Стирание документов при выполнении через терминал задача необратимая. Удалённые таким образом файлы и папки «пролетают мимо корзины» (аналог в Windows «Shift+Del») и восстановлению не подлежат. С помощью терминала файлы стираются с помощью команды «rm». Используется следующим образом:

Терминал

rm «%имя_файла»

Есть ещё вариант удаления директории — rm*, который полностью зачищает каталог.

Следует обратить внимание, что rm требует перехода в конкретный каталог, что делается с помощью «cd».

Примечание! есть команда «–rm –rf». Отличается этот вариант тем, что удаляется всё с жёсткого диска. Использовать эту команду действительно не стоит, потому что стираются файлы без подтверждения и рекурсивно (начинается всё с файла, а заканчивается каталогом верхнего уровня, а как следствие и содержимым локального диска).

Создание каталогов и документов

Терминал

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

  1. Touch. Утилита, которая служит для проверки наличия документов. При отсутствии таковых создаёт файл, поэтому с командой touch можно создавать простейшие текстовые документы. Используется команда следующим образом:
    • открыть в терминале путь к местонахождению будущего документа. В этом поможет «cd» — переход по каталогам. Увы, путь потребуется знать точно;
    • написать touch «%Имя_документа».
  2. Знак «>» . Перенаправление процесса. Эта команда используется довольно просто: ставится символ «>» и вписывается имя. Таким образом процесс не находит файла и создаёт его.
  3. Команда CP. Утилита для копирования элементов. Linux интересен тем, что его можно заставить выполнить копирование несуществующего объекта и приведёт это не к ошибке, а к созданию этого самого объекта. Таким образом, применение ключа «null» (указатель отсутствующего объекта) приводит к созданию пустого файла. «cp /dev/null %имя_файла», где через «/» указан путь к каталогу.

Многие источники по непонятным причинам предлагают для создания файлов и каталогов через терминал использовать сочетание команд Echo > «%имя_файла». Следует понимать, что echo – даже не утилита, а просто способ вывода указанного текста в терминале. Поэтому в терминале будет выводиться название документа. С другой стороны – создание указанной структурной единицы всё равно происходит, поэтому можно пользоваться и им. К этой же категории относится и утилита «cat» связывающая файл. Применяется она через пустое значение по аналогии с СР.

Текстовый редактор в терминале

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

Терминал
  1. Установить приложение (можно пропустить, если он уже установлен):
    • вписать в терминал «sudo apt install vim»;
    • подтвердить шаги установки, если потребуется.
  2. Ввести команду «vim –c wq «%имя_файла».
Читайте также:  Занятие 9. Статические методы в Java, перегрузка методов, рекурсия

Поставив такую задачу, пользователь провоцирует утилиту выполнить создание файла (-с), а потом выйти из vim. Стоит обратить внимание, что название документа вводится после основного набора команд.

Синтаксис

Рассмотрим синтаксис.

wc [параметры] [файлы]

Основные опции:

  • -с — показывает размер в байтах;
  • -m — считает количество символом в документе;
  • -l — считает количество строк в документе;
  • -L — показывает длину наибольшей строки в документе;
  • -w — количество слов в документе;
  • —help — показывает справочную информацию;
  • —version — информация о версии.

Примеры

Сосчитаем сколько байт в файле под названием «file». Для этого будем использовать ключ «-с».

wc -c file

Запустим утилиту без опций, укажем только название файла.

wc file

Команда без параметров сосчитала сколько строк, слов, байтов и название файла.

Здесь:

  • первая цифра 13 — количество строк;
  • вторая цифра 13 — количество слов;
  • 37  — количество байт;
  • file — название документа.

Выведем на экран количество слов в документе «test». Для этого будем использовать аргумент -w.

wc -w test

Опция -w считает слова вместе с пробелами.

Подсчитаем строки в документе test. Будем использовать опцию -l.

wc -l test

Часто в операционной системе Linux средствами терминала нужно узнать сколько пользователей зарегистрировано. С этой задачей легко справится утилита wc. Список пользователей хранится в файле passwd, необходимо только сосчитать их.

wc -l /etc/passwd

Основные команды для работы с файлами

Как посмотреть текущую рабочую директорию? ответ

pwd

Как сменить рабочую директорию? ответ

cd

например, cd /var/www/

Как перейти в родительскую директорию? ответ

cd ..

Как вернуться в домашнюю директорию? ответ

cd — вызов команды без аргументов приводит к переходу в директорию, указанную в переменной окружения $HOME.

Как вывести список файлов в директории? ответ

ls — вывести список файлов в текущей директории

ls /var/log/ — вывести список файлов в директории /var/log/

ls -l — вывести подробный список файлов

Как посмотреть вермя последнего изменения/доступа к файлу /tmp/ ответ

ls -l /tmp/ — посмотреть время последнего изменения файла

ls -lu /tmp/ — посмотреть время последнего доступа к файлу

stat /tmp/ — показывает 3 временные метки:

  • Access — время последнего доступа к файлу (любое открытие файла для чтения: просмотр, поиск по файлу и т.п.)
  • Modify — время последнего изменения файла
  • Change — время изменения статуса файла (прав доступа, владельца, изменение файла).

Как создать новую директорию test? ответ

mkdir test

Как создать пустой файл? ответ

Существует множество способов создать пустой файл. Вот некоторые из них:

  • cp — скопировать любой другой пустой файл
  • touch — «потрогать» несуществующий файл
  • :> — перенаправить в файл вывод команды, которая ничего не делает
  • vi , затем сразу :wq — открыть файл и сохранить его пустым

Как создать файл /tmp/ размером 2Mb? ответ

dd if=/dev/zero of= bs=1M count=2

если в предыдущей команде задать bs=1MB, то файл будет размером 2_000_000 байт.

в данном примере файл будет заполнен нулевыми байтами (0x00).

Как узнать тип файла? ответ

file

например

$ file : empty $ file /usr/bin/perl /usr/bin/perl: symbolic link to `’ $ file /usr/bin/ /usr/bin/: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux , stripped $ file : HTML document, UTF-8 Unicode text, with very long lines

Как переименовать файл? ответ

mv имя_файла новое_имя_файла

Как удалить файл/директорию? ответ

rm имя_файла — удалить файл

rmdir имя_директории или rm -r имя_директории — удалить директорию

shred -uv имя_файла — удаление файла для параноиков (без опции -u просто перезаписывает содержимое файла мусором)

Как создать символическую/жесткую ссылку на файл/директорию? ответ

Как посмотреть размер файла? ответ

ls -l имя_файла — размер файла в байтах

ls -lh имя_файла — размер файла в более привычном формате

Как как узнать размер директории? ответ

du -s имя_директории — размер места в килобайтах (блоках по 1024 байт), которое директория со всем своим содержимым занимает на диске

du -sh имя_директории — в более привычном формате

Как узнать сколько свободного места осталось на разделе диска? ответ

при помощи команды df место_монтирования_раздела или просто df

df -h выведет размеры не в килобайтах, а в более удобном формате.

df -ih выведет информацию о количестве использованных и свободных инодов

2-й способ. Утилита ncdu — анализ занятого места и его освобождение

Есть так же и другие способы определить чем занято место на диске, например, очень удобная в плане анализа занятого места — утилита ncdu. Установить ее можно, например, так:

  • Для Debian систем (rpm-пакеты) (в т.ч. Ubuntu) командой apt-get install ncdu
  • Для Red Hat систем (dpkg-пакеты) командой yum install ncdu
Читайте также:  Презентация "Apple. История и изобретения".

Дальше просто запустите ncdu и подождите, когда она подсчитает занимаемое место. По-умолчанию программа посчитает размеры папкой текущей папки, из которой программа была запущена. Если нужно посчитать какую-то другую папку, просто добавьте к команде путь к папке, например, так: ncdu /var/www. Если нужно посчитать занимаемое место на всем диске, можно использовать ncdu /.

Программа показывает занимаемое папками место, позволяет заходить в них и сразу видеть сколько подпапки занимают места. Так же в этой утилите можно выполнять различные действия над файлами и папками. Получить справку по клавишам управления можно нажав «?«. Ниже приведу список некоторых из клавиш управления:

  • d — удалить выбранный файл или папку с файлами;
  • n — отсортировать файлы и папки по имени;
  • s — отсортировать файлы и папки по объему занимаемого места;
  • t — показывать сначала папки, затем файлы;
  • g — режим отображения (в процентах, графически, комплексно);
  • a — режим отображения (размер файла, занятое место на жестком диске)
  • e — включить/отключить отображение скрытых файлов;
  • i — показать дополнительную информацию о папке или файле;
  • r — заново пересчитать занимаемое место;
  • q — выйти из программы;

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

Поиск самых больших файлов с помощью утилиты ls

Второй способ, возможно, покажется кому-то менее интуитивным… но у команды ls есть ключ -l, который выводит подробную информацию по всем файлам, переданным ей в виде аргументов, либо же просто текущей директории.

Так что нам осталось только подготовить список файлов, среди которых мы будем искать самые большие. Для этого используем команду find, которая и умеет искать рекурсивно файлы на нашей файловой системе. Особо требований у нас нет — просто файлы (без директорий/блоковых устройств/сокетов и прочих файлов в общем смысле Unix).

find . -type f -print

И вот у нас есть уже список всех файлов, которые можно найти из текущей директории. Теперь нужно их передать на вход ls с помощью команды xargs, а результат отсортировать по 5-му столбцу (где и указан размер файла). Ну и head для того, чтобы листинг не был громоздким:

find . -type f -print \ | xargs ls -l \ | sort -r -n -k 5,5 \ | head -10

Вот так, комбинируя различные команды Unix, мы получили довольно занятные «программы» для поиска самых больших файлов на нашем жёстком диске.

Синтаксис grep и find

Начнём с оператора find. Синтаксис файловой поисковой команды выглядит так:

find [где искать] [параметры] [-опции] [действия]

Некоторые употребительные параметры:

  • -depth : поиск в текущей папке и подкаталогах;
  • -version : вывести версию команды;
  • -print : показывать полные имена файлов (в Linux они могут быть сколь угодно большими);
  • -type f : поиск исключительно файлов;
  • -type d – поиск только директорий (папок).
Синтаксис grep и find

Перечень доступных опций (указываются через дефис):

  • name : файловый поиск по имени;
  • user : поиск по имени владельца файла;
  • perm : по атрибуту «режим доступа»;
  • mtime : по времени последнего изменения (редактирования) файла;
  • group : по группе;
  • atime : по дате последнего открытия файла;
  • newer : поиск файла с датой, более новой, чем заданная в шаблоне директивы;
  • size : по размеру файла в байтах;
  • nouser : поиск файлов, не имеющих введённого атрибута «владелец».

Синтаксис grep:

grep [опции] шаблон [где искать]

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

В шаблоне указывается, что нужно искать, используя непосредственно заданную строку или регулярное выражение.

Возможность использования регулярных выражений позволяет существенно расширить возможности поиска. Указание стандартного вывода может оказаться полезным, если стоит задача отфильтровать ошибки, записанные в логи, или для поиска PID процесса в результатах выполнения команды ps, которые могут быть многостраничными.

Синтаксис grep и find

Рассмотрим наиболее употребительные параметры grep:

  • -b : выводить номер блока перед выдачей результирующей строки;
  • -c : необходимо подсчитать число вхождений искомого фрагмента;
  • -i : поиск без учёта регистра;
  • -n : выдавать на стандартное устройство вывода номер строки, в которой найден искомый фрагмент или шаблон;
  • – l : в результате выдачи должны присутствовать только имена файлов с найденным поисковым фрагментом;
  • -s : игнорировать вывод ошибок;
  • -w : поиск фрагмента, опоясанного с двух сторон пробелами;
  • -v : инвертированный поиск, то есть отображение всех строк, не содержащих заданный фрагмент;
  • -e : параметр указывает, что далее следует регулярное выражение, имеющее собственный синтаксис;
  • -An : вывод искомого фрагмента и предыдущих n строк;
  • -Bn : то же, но со строками, идущими после шаблона.

Теперь имеет смысл перейти от теоретической части к практической.3

Читайте также:  Как загрузить Linux на компьютер с помощью телефона на Android

Заключение

В заключении приведу пример просмотра файла в другой директории, так как вполне возможно вам придется это делать, и не обязательно для этого переходить в саму директорию. Думаю тут все достаточно ясно, но, на всякий случай приведу данный пример. Предположим, нам необходимо просмотреть содержимое файла “” в каталоге “/etc”. Просматривать мы будем командой “head”. Для этого вводим данную команду, а затем вводим путь до файла и само название файла:

head /etc/

Заключение

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

А на этом сегодня все. Надеюсь данная статья будет вам полезна. Журнал Cyber-X

Копирование

Для копирования используется команда cp. Название этой команды является сокращением слова copy.

Чтобы скопировать файл file1 и назвать его file2, используется команда:

cp file1 file2

Для того чтобы копировать директорию dir1 в директорию dir2, используется команда:

cp -a dir1/ dir2/

Скопировать файл с именем file1 в директорию с именем dir1, можно с помощью команды:

cp file1 dir1/

Редактирование файлов

Мы ознакомились с основными командами для работы с каталогами и файлами.

Далее мы изучим, как редактировать файлы и добавлять в них содержание.

Команда nano позволяет работать в одном из самых простых текстовых редакторов командной строки Linux, который занимает весь терминал в течение всего срока его использования.

В результате ввода в терминал команды nano будет открыт чистый файл.

Интерфейс выглядит следующим образом:

В верхней части открывшегося редактора отображается имя приложения и имя файла, который мы редактируем.

В середине должно располагаться содержимое файла, в настоящее время оно пустое.

В нижней части интерфейса расположен ряд комбинаций клавиш, которые указывают с основными элементами управления текстового редактора. Для каждого из них символ ^ означает клавишу CTRL.

Для того чтобы открыть справку используйте сочетание клавиш CTRL-G.

Закрывается справка с помощью сочетания клавиш CTRL-X. После закрытия справки мы возвращаемся к редактированию.

Вводить и редактировать можно любой текст, например, можно ввести: “Hello World!”

Для сохранения внесенных изменений следует нажать сочетание клавиш CTRL-O. Внимание! Это буква «О», а не ноль.

Далее система попросит вас ввести либо подтвердить имя файла, который вы хотите сохранить:

File Name to Write: ^G Get Help M-D DOS Format M-A Append M-B Backup File^C Cancel M-M Mac Format M-P Prepend

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

После ввода имени файла нажмите клавишу ENTER.

Для того чтобы выйти из тестового редактора нажмите сочетание клавиш CTRL-X.

Если вы внесли изменения и не сохранили файл, вам будет предложено сохранить сделанные вами изменения:

Save modified buffer (ANSWERING «No» WILL DESTROY CHANGES) ? Y Yes N No ^C Cancel

Вы можете нажать клавишу «Y», чтобы сохранить изменения, клавишу «N» для отмены изменений и выхода, или сочетание клавиш CTRL-C, чтобы отменить операцию выхода из режима редактирования файла.

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

Нажмите клавишу ENTER, чтобы сохранить файл и выйти из редактора.

Заключение

Мы ознакомились с возможностями просмотра доступных файлов и каталогов, с основными командами для работы с файлами, которые позволяют просматривать, копировать, перемещать и удалять файлы, а также с основами редактирования в текстовом редакторе nano.

tglnkLinux

Заключение

Полный список команд для дистрибутивов Linux — материал скорее для объемной книги, чем для одной статьи. Однако, в данном обзоре мы постарались собрать самые важные из них. Эти команды будут гарантированно полезны как в повседневных задачах, так и для раскрытия продвинутых возможностей этой операционной системы.

У каждого пользователя Linux есть свой список must have команд. Наверняка и вам есть чем дополнить данный обзор? Делитесь своими любимыми командами Linux в комментариях!

Хотите, чтобы операционка работала как швейцарские часы? Надёжная и мощная платформа для развёртывания любых дистрибутивов Linux — VDS от Eternalhost!

Оцените материал: [Всего голосов: 8 Средний: 4.5/5]