Fedora как найти файл

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

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

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

Утилита find предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.

Команда find имеет такой синтаксис:

find [папка] [параметры] критерий шаблон [действие]

Папка – каталог в котором будем искать

Параметры – дополнительные параметры, например, глубина поиска, и т д

Критерий – по какому критерию будем искать: имя, дата создания, права, владелец и т д.

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

Основные параметры команды find

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

  • -P – никогда не открывать символические ссылки.
  • -L – получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
  • -maxdepth – максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
  • -depth – искать сначала в текущем каталоге, а потом в подкаталогах.
  • -mount искать файлы только в этой файловой системе.
  • -version – показать версию утилиты find.
  • -print – выводить полные имена файлов.
  • -type f – искать только файлы.
  • -type d – поиск папки в Linux.

Критерии

Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.

  • -name – поиск файлов по имени.
  • -perm – поиск файлов в Linux по режиму доступа.
  • -user – поиск файлов по владельцу.
  • -group – поиск по группе.
  • -mtime – поиск по времени модификации файла.
  • -atime – поиск файлов по дате последнего чтения.
  • -nogroup – поиск файлов, не принадлежащих ни одной группе.
  • -nouser – поиск файлов без владельцев.
  • -newer – найти файлы новее чем указанный.
  • -size – поиск файлов в Linux по их размеру.

Примеры использования

А теперь давайте рассмотрим примеры find, чтобы вы лучше поняли, как использовать эту утилиту.

1. Поиск всех файлов

Показать все файлы в текущей директории:

find

find .

find . -print

Все три команды покажут одинаковый результат. Точка здесь означает текущую папку. В место неё можно указать любую другую.

2. Поиск файлов в определенной папке

Показать все файлы в указанной директории:

find ./Изображения

Искать файлы по имени в текущей папке:

find . -name "*.png

Поиск по имени в текущей папке:

find . -name "testfile*"

Не учитывать регистр при поиске по имени:

find . -iname "TeStFile*"

3. Ограничение глубины поиска

Поиска файлов по имени в Linux только в этой папке:

find . -maxdepth 1 -name "*.php"

4. Инвертирование шаблона

Найти файлы, которые не соответствуют шаблону:

find . -not -name "test*"

5. Несколько критериев

Поиск командой find в Linux по нескольким критериям, с оператором исключения:

find . -name "test" -not -name "*.php"

Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:

find -name "*.html" -o -name "*.php"

Эта команда найдёт как php, так и html файлы.

6. Тип файла

По умолчанию find ищет как каталоги, так и файлы. Если вам необходимо найти только каталоги используйте критерий type с параметром d. Например:

find . -type d -name "Загрузки"

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

find . -type f -name "Загрузки"

6. Несколько каталогов

Искать в двух каталогах одновременно:

find ./test ./test2 -type f -name "*.c"

7. Поиск скрытых файлов

Найти скрытые файлы только в текущей папке. Имена скрытых файлов в Linux начинаются с точки:

find . -maxdepth 1 -type f -name ".*"

8. Поиск по разрешениям

Найти файлы с определенной маской прав, например, 0664:

find . -type f -perm 0664

Права также можно задавать буквами для u (user) g (group) и o (other). Например, для того чтобы найти все файлы с установленным флагом Suid в каталоге /usr выполните:

sudo find /usr -type f -perm /u=s

Поиск файлов доступных владельцу только для чтения только в каталоге /etc:

find /etc -maxdepth 1 -perm /u=r

Найти только исполняемые файлы:

find /bin -maxdepth 2 -perm /a=x

9. Поиск файлов в группах и пользователях

Найти все файлы, принадлежащие пользователю:

find . -user sergiy

Поиск файлов в Linux принадлежащих группе:

find /var/www -group www-data

10. Поиск по дате модификации

Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:

find / -mtime 50

Поиск файлов в Linux открытых N дней назад:

find / -atime 50

Найти все файлы, модифицированные между 50 и 100 дней назад:

find / -mtime +50 -mtime -100

Найти файлы измененные в течении часа:

find . -cmin 60

11. Поиск файлов по размеру

Найти все файлы размером 50 мегабайт:

find / -size 50M

От пятидесяти до ста мегабайт:

find / -size +50M -size -100M

Найти самые маленькие файлы:

find . -type f -exec ls -s {} ; | sort -n -r | head -5

Самые большие:

find . -type f -exec ls -s {} ; | sort -n | head -5

12. Поиск пустых файлов и папок

find /tmp -type f -empty

find ~/ -type d -empty

13. Действия с найденными файлами

Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, для того чтобы найти все пустые папки и файлы, а затем выполнить ls для получения подробной информации о каждом файле используйте:

find . -empty -exec ls -ld {} ;

Удалить все текстовые файлы в tmp

find /tmp -type f -name "*.txt" -exec rm -f {} ;

Удалить все файлы больше 100 мегабайт:

find /home/bob/dir -type f -name *.log -size +100M -exec rm -f {} ;

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Обновлено Обновлено: 01.02.2022
Опубликовано Опубликовано: 25.07.2016

Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.

Синтаксис
Примеры
    Поиск по имени
    По дате
    По типу файла
    По правам
    По содержимому
    С сортировкой по дате изменения
    Лимиты
    Действия над найденными объектами
Запуск по расписанию в CRON

Общий синтаксис

find <где искать> <опции>

<где искать> — путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».

<опции> — набор правил, по которым выполнять поиск.

* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.

Описание опций

Опция Описание
-name Поиск по имени.
-iname Регистронезависимый поиск по имени.
-type

Тип объекта поиска. Возможные варианты:

  • f — файл;
  • d — каталог;
  • l — ссылка;
  • p — pipe;
  • s — сокет.
-size Размер объекта. Задается в блоках по 512 байт или просто в байтах (с символом «c»).
-mtime Время изменения файла. Указывается в днях.
-mmin Время изменения в минутах.
-atime Время последнего обращения к объекту в днях.
-amin Время последнего обращения в минутах.
-ctime Последнее изменение владельца или прав на объект в днях.
-cmin Последнее изменение владельца или прав в минутах.
-user Поиск по владельцу.
-group По группе.
-perm С определенными правами доступа.
-depth Поиск должен начаться не с корня, а с самого глубоко вложенного каталога.
-maxdepth Максимальная глубина поиска по каталогам. -maxdepth 0 — поиск только в текущем каталоге. По умолчанию, поиск рекурсивный.
-prune Исключение перечисленных каталогов.
-mount Не переходить в другие файловые системы.
-regex По имени с регулярным выражением.
-regextype <тип> Тип регулярного выражения.
-L или -follow Показывает содержимое символьных ссылок (симлинк).
-empty Искать пустые каталоги.
-delete Удалить найденное.
-ls Вывод как ls -dgils
-print Показать найденное.
-print0 Путь к найденным объектам.
-exec <команда> {} ; Выполнить команду над найденным.
-ok Выдать запрос перед выполнением -exec.

Также доступны логические операторы:

Оператор Описание
-a Логическое И. Объединяем несколько критериев поиска.
-o Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска.
-not или ! Логическое НЕ. Инвертирует критерий поиска.

Полный набор актуальных опций можно получить командой man find.

Примеры использования find

Поиск файла по имени

1. Простой поиск по имени:

find / -name “file.txt”

* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.

2. Поиск файла по части имени:

find / -name “*.tmp”

* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp

3. Несколько условий. 

а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:

find . -name “sess_*” -a -name “*cd”

б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:

find . -name “sess_*” -o -name “*cd”

в) Более компактный вид имеют регулярные выражения, например:

find . -regex ‘.*/(sess_.*cd)’

find . -regex ‘.*/(sess_.*|.*cd)’

* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).

4. Найти все файлы, кроме .log:

find . ! -name “*.log”

* в данном примере мы воспользовались логическим оператором !.

Поиск по дате

1. Поиск файлов, которые менялись определенное количество дней назад:

find . -type f -mtime +60

* данная команда найдет файлы, которые менялись более 60 дней назад.

Или в промужутке:

find . -mmin -20 -mmin +10 -type f

* найти все файлы, которые менялись более 10 минут, но не более 20-и.

2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find –version).

а) дате изменения:

find . -type f -newermt “2019-11-02 00:00”

* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.

find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02

* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).

б) дате обращения:

find . -type f -newerat 2019-10-08

* все файлы, к которым обращались с 08.10.2019.

find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01

* все файлы, к которым обращались в октябре.

в) дате создания:

find . -type f -newerct 2019-09-07

* все файлы, созданные с 07 сентября 2019 года.

find . -type f -newerct 2019-09-07 ! -newerct “2019-09-09 07:50:00”

файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50

По типу

Искать в текущей директории и всех ее подпапках только файлы:

find . -type f

* f — искать только файлы.

Поиск по правам доступа

1. Ищем все справами на чтение и запись:

find / -perm 0666

2. Находим файлы, доступ к которым имеет только владелец:

find / -perm 0600

Поиск файла по содержимому

find / -type f -exec grep -i -H “content” {} ;

* в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержится строка content.

С сортировкой по дате модификации

find /data -type f -printf ‘%TY-%Tm-%Td %TT %pn’ | sort -r

* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.

Лимит на количество выводимых результатов

Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:

find /data -type f -printf ‘%TY-%Tm-%Td %TT %pn’ | sort -r | head -n 1

Поиск с действием (exec)

1. Найти только файлы, которые начинаются на sess_ и удалить их:

find . -name “sess_*” -type f -print -exec rm {} ;

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

2. Переименовать найденные файлы:

find . -name “sess_*” -type f -exec mv {} new_name ;

или:

find . -name “sess_*” -type f | xargs -I ‘{}’ mv {} new_name

3. Переместить найденные файлы:

find . -name “sess_*” -type f -exec mv {} /new/path/ ;

* в данном примере мы переместим все найденные файлы в каталог /new/path/.

4. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:

find . -name “*.tmp” | wc -l

5. Изменить права:

find /home/user/* -type d -exec chmod 2700 {} ;

* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.

6. Передать найденные файлы конвееру (pipe):

find /etc -name ‘*.conf’ -follow -type f -exec cat {} ; | grep ‘test’

* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.

7. Произвести замену в файлах с помощью команды sed:

find /opt/project -type f -exec sed -i -e “s/test/production/g” {} ;

* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.

Чистка по расписанию

Команду find удобно использовать для автоматического удаления устаревших файлов.

Открываем на редактирование задания cron:

crontab -e

И добавляем:

0 0 * * * /bin/find /tmp -mtime +14 -exec rm {} ;

* в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00.
* полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.

Содержание

  1. Основные linux-команды для новичка
  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. Как узнать IP компьютера
  27. Как узнать версию OS
  28. Как узнать, как работает команда
  29. Как создать много тестовых папок и файлов
  30. Как протестировать IOPS на Linux
  31. И это все?
  32. Книги и видео по теме
  33. Где тренироваться
  34. 50 основных команд Linux для новичков
  35. Базовые команды для работы с терминалом
  36. Команды для управления правами на файлы и директории
  37. Команды для управления пользователями
  38. Установка, удаление и обновление пакетов
  39. Debian/Ubuntu
  40. Red Hat Linux/CentOS
  41. Команды для навигации и базовой работы с файлами
  42. Команды для отображения базовой информации и управления системой
  43. Команды Linux. Шпаргалка
  44. Команды повышающие привилегии:
  45. Команды для работы с файлами и директориями:
  46. Команды для поиска файлов:
  47. Команды для монтирования файловых систем:
  48. Команды для работы с дисковым пространством:
  49. Команды для работы с пользователями и группами:
  50. Команды для изменения полномочий на файлы:
  51. Команды для архивирования файлов:
  52. Команды для проверки системной информации:
  53. Команды для остановки системы:
  54. Команды для работы X-сервером:
  55. Команды для работы с сервисами:
  56. Команды для управления пакетами:
  57. RPM пакеты (Fedora, Red Hat и тому подобное)
  58. DEB пакеты (Debian, Ubuntu и тому подобное)
  59. Команды для просмотра содержимого файлов:
  60. Команды для манипуляции с текстом:
  61. Команды для проверки файловых систем:
  62. Команды для форматирования разделов:
  63. Команды для создания резервных копий:
  64. Команды для работы с сетью:
  65. Команды для мониторинга и отладки:
  66. Команды для работы с фаерволом:
  67. Команды для работы с ядром:

Основные linux-команды для новичка

Linux — это операционная система. Как винда (windows), только более защищенная. В винде легко подхватить вирус, в линуксе это практически невозможно. А еще линукс бесплатный, и ты сам себе хозяин: никаких тебе неотключаемых автообновлений системы!

Правда, разобраться в нем немного посложнее… Потому что большинство операций выполняется в командной строке. И если вы видите в вакансии «знание linux» — от вас ожидают как раз умение выполнять простейшие операции — перейти в другую директорию, скопировать файл, создать папочку… В этой статье я расскажу про типовые операции, которые стоит уметь делать новичку. Ну и плюс пара полезняшек для тестировщиков.

Я дам кратенькое описание основных команд с примерами (примеры я все проверяла на cent os, red hat based системе) + ссылки на статьи, где можно почитать подробнее. Если же хочется копнуть еще глубже, то см раздел «Книги и видео по теме». А еще комментарии к статье, там много полезного написали)

Содержание

Где я? Как понять, где находишься

Очень полезная команда, когда у вас нет ничего, кроме командной строки под рукой. Расшифровывается как Print Working Directory. Запомните ее, пригодится.

Как понять, что находится в папке

Команда ls позволяет просмотреть содержимое каталога:

image loader

Хотя лучше использовать команду сразу с флагом «l»:

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

image loader

У команды есть и другие флаги, но чаще всего вы будете использовать именно «ls – l».

См также:
Команда ls Linux — подробнее о команде и всех ее флагах
Команда ls – просмотр каталога — о команде для новичков (без перечисления всех флагов)

Как перейти в другую директорию

С помощью команды cd:

Путь может быть абсолютным или относительным.

По абсолютному пути

Либо у вас где-то записан путь, «куда идти», либо вы подсмотрели его в графическом интерфейсе (например, в WinSCP).

Вставляем путь в командную строку после «cd»

Ну вот, мы переместились из домашней директории (обозначается как

image loader

По относительному пути

Относительный путь — относительно вашей текущей директории, где вы сейчас находитесь. Если я уже нахожусь в /home/student, а мне надо в /home/student/log, команда будут такой:

Если мне из надо из /home/student/photo в /home/student/photo/city/msk/2017/cat_1, команда будет такой:

Я не пишу /home/student/photo, так как я уже там.

image loader

В линуксе можно задавать путь относительно домашней папки текущего пользователя. Домашняя директория обозначается

/. Дальше вы уже можете указывать подпапки:

Эта команда будет работать отовсюду. И переместит нас в /home/user/log.

Вот пример, где я вошла под пользователем students. Исходно была в директории /var, а попала в /home/students/log:

image loader

С автодополнением

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

(cd tab) Может, ты имел в виду папку 1?
(tab) Нет? Может, папку 2?
(tab) Снова нет? Может, папку 3?
(tab) Снова нет? Может, файл 1 (она перебирает имена всех файлов и директорий, которые есть в той, где вы сейчас находитесь)?
(tab) У меня кончились варианты, поехали сначала. Папка 1?

image loader

cd lon(Tab) → cd long-long-long-long-name-folder — начали вводить название папки и система сама подставила имя (из тех, что есть в директории, где мы находимся).

cd (Tab)(Tab)(Tab) — система перебирает все файлы / папки в текущей директории.

Это очень удобно, когда перемещаешься в командной строке. Не надо вспоминать точное название папки, но можно вспомнить первую букву-две, это сократит количество вариантов.

Подняться наверх

Подняться на уровень выше:

Если нужно поднять на два уровня выше, то

И так до бесконечности =) Можно использовать файл, лежащий на уровне выше или просто сменить директорию.

Как создать директорию

Используйте команду mkdir:

Можно и в другом месте создать папку:

Когда это нужно? Например, если вам надо сделать бекап логов. Создаете папку и сохраняете туда нужные логи. Или если вы читаете инструкцию по установке ПО и видите там «создать папку». Через командную строку это делается именно так.

Как создать файл

Такая команда создаст пустой файл с названием «app.log». А потом уже можно открыть файл в редакторе и редактировать.

Как отредактировать файл

Вот честное слово, лучше делать это через графический интерфейс!

Но если такой возможности нет, чтож… Если использовать программы, которые есть везде, то у вас два варианта:

Для перемещения по файлу используйте кнопки со стрелками. После того, как закончите редактировать файл, нажмите:

image loader

А вот с vim с этим сложнее. В него легко зайти:

Войти вошли, а как выйти то, аааа? Тут начинается легкая паника, потому что ни одна из стандартных комбинаций не срабатывает: Esc, ctrl + x, ctrl + q… Если под рукой есть второй ноутбук или хотя бы телефон / планшет с интернетом, можно прогуглить «как выйти из vim», а если у вас только одно окно с терминалом, которое вы заблокировали редактором?

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

Исходно, когда мы открываем файл через vim, то видим его содержимое, а внизу информацию о файле:

image loader

Когда нажимаем двоеточие, оно печатается внизу:

image loader

Если не печатается, не паникуем! Тогда попробуйте нажать Esc (вернуться в нормальный режим), потом Enter (подтвердить команду), а потом снова печатайте. Фух, помогло, мы вышли оттуда.

На самом деле сейчас всё не так страшно. Даже если вас заслали работать в банк, где нет доступа в интернет, а вы вошли в vi и не знаете как выйти, всегда можно погулить выход с телефона. Слава мобильному интернету! Ну а если вы знаете логин-пароль от сервера, то можно просто закрыть терминал и открыть его снова.

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

Ну а про возможности редактирования см статьи ниже =)

Как перенести / скопировать файл

Допустим, у нас в директории /opt/app/log находится app.log, который мы хотим сохранить в другом месте. Как перенести лог в нужное место, если нет графического интерфейса, только командная строка?

Скопировать файл

Если мы находимся в директории /opt/app/log:

В данном примере мы использовали относительный путь для «что копировать» — мы уже находимся рядом с логом, поэтому просто берем его. А для «куда копировать» используем абсолютный путь — копируем в /home/olga.

Можно сразу переименовать файл:

В этом случае мы взяли app.log и поместили его в папку /home/olga, переименовав при этом в app_test_2020_03_08.log. А то мало ли, сколько логов у вас в этом папке уже лежит, чтобы различать их, можно давать файлу более говорящее имя.

Если в «куда копировать» файл с таким именем уже есть, система не будет ничего спрашивать, просто перезапишет его. Для примера положим в папку log внутри домашней директории файл «app.log», который там уже есть:

image loader

Никаких ошибок, система просто выполнила команду.

Скопировать директорию

Команда остается та же, «cp», только используется ключ R — «копировать папку рекурсивно»:

Так в директории /home/olga появится папка «log».

Переместить файл

Если надо переместить файл, а не скопировать его, то вместо cp (copy) используем mv (move).

Можно использовать относительные и абсолютные пути:

Можно сразу переименовать файл:

Переместить директорию

Аналогично перемещению файла, команда mv

Как удалить файл

С помощью команды rm (remove):

Если нужно удалить все файлы в текущей директории (скажем, вычищаем старые логи перед переустановкой приложения), используйте «*»:

image loader

Если нужно удалить папку, надо добавить флаг -r (recursive):

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

image loader

А теперь представьте, что вы чистите много файлов. И на каждый система переспрашивает, и надо постоянно отвечать «да, да, да. » (y – enter, y – enter, y – enter)… Чтобы удалить все без вопросов, используйте флаг -f (force):

image loader

Но учтите, что это довольно опасная команда! Вот так надоест подстверждать удаление и введешь «-rf», а директорию неправильно укажешь… Ну и все, прости-прощай нужные файлы. Аккуратнее с этой командой, особенно если у вас есть root-полномочия!

Опция -v показывает имена удаляемых файлов:

image loader

Тут вы хотя бы можете осознать, что натворили )))

Как изменить владельца файла

Если у вас есть root-доступ, то вы наверняка будете выполнять все действия под ним. Ну или многие… И тогда любой созданный файл, любая папка будут принадлежать root-пользователю.

Это плохо, потому что никто другой с ними работать уже не сможет. Но можно создать файл под root-ом, а потом изменить его владельца с помощью команды chown.

image loader

Допустим, что я поднимаю сервис testbase. И он должен иметь доступ к директории user и файлу test.txt в другой директории. Так как никому другому эти файлики не нужны, а создала я их под рутом, то просто меняю владельца:

В итоге был владелец root, а стал testbase. То, что надо!

Как установить приложение

Если вы привыкли к винде, то для вас установка приложения — это скачать некий setup файлик, запустить и до упора тыкать «далее-далее-далее». В линуксе все немного по-другому. Тут приложения ставятся как пакеты. И для каждой системы есть свой менеджер пакетов:

Давайте посмотрим на примере, как это работает. В командной строке очень удобно работать с Midnight Commander (mc) — это как FAR на windows. К сожалению, программа далеко не всегда есть в «чистом» дистрибутиве.

И вот вы подняли виртуалку на centos 7, хотите вызвать Midnight Commander, но облом-с.

image loader

Ничего страшного, установите это приложение через yum:

image loader

Он там будет что-то делать, качать, а потом уточнит, согласны ли вы поставить программу с учетом ее размеров. Если да, печатаем «y»:

image loader

И система заканчивает установку.

Вот и все! Никаких тебе унылых «далее-далее-далее», сказал «установи», программа установилась! Теперь, если напечатать «mc» в командной строке, запустится Midnight Commander:

image loader

Как запустить приложение

Чтобы запустить скрипт, нужно указать полный путь к нему:

Это важно! Даже если вы находитесь в той папке, где и скрипт, он не будет найден, если просто указать название sh-скрипта. Надо написать так:

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

image loader

Если же приложение запускается как сервис, то все еще проще:

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

Она добавит службу в автозапуск.

Как понять, где установлено приложение

Вот, например, для интеграции Jenkins и newman в Jenkins надо прописать полный путь к ньюману в параметре PATH. Но как это сделать, если newman ставился автоматически через команду install? И вы уже забыли, какой путь установки он вывел? Или вообще не вы ставили?

Чтобы узнать, куда приложение установилось, используйте whereis (без пробела):

image loader

Как создать архив

Стандартная утилита, которая будет работать даже на «голой» системе — tar. Правда, для ее использования надо запомнить флаги. Для создания архива стандартная комбинация cvzf:

image loader

В данном примере мы упаковали директорию /home/test, внутри которой было две картинки — 502.jpg и 504.jpg.

Для распаковки меняем флаг «c» на «x» и убираем «z»:

image loader

Хотя система пишет, что распаковала «/home/test», на самом деле папка «test» появляется там, где мы сейчас находимся.

Давайте разберемся, что все эти флаги означают:

image loader

Если очень хочется использовать rar, то придется изгаляться. Через yum установка не прокатит:

Говорит, нет такого пакета:

Придется выполнить целую пачку команд! Сначала скачиваем, разархивируем и компилируем:

Как посмотреть использованные ранее команды

Вот, допустим, вы выполняли какие-то сложные действия. Или даже не вы, а разработчик или админ! У вас что-то сломалось, пришел коллега, вжух-вжух ручками, magic — работает. А что он делал? Интересно же!

Или, может, вы писали длинную команду, а теперь ее надо повторить. Снова набирать ручками? Неохота! Тем более что есть помощники:

Если надо «отмотать» недалеко, проще через стрелочку пролистать команды. Один раз нажали — система показала последнюю команду. Еще раз нажали — предпоследнюю. И так до 1000 раз (потому что именно столько хранится в истории).

image loader

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

Если тыкать в стрелочку не хочется, или команды была давно, можно напечатать «history» и внимательно изучить команды.

См также:
История команд Linux — больше о возможностях history

Как посмотреть свободное место

Сколько места свободно на дисках

Сколько весит директория

Как узнать IP компьютера

Если у вас настроены DNS-имена, вы подключаетесь к linux-машине именно по ним. Ведь так проще запомнить — это testbase, это bugred… Но иногда нужен именно IP. Например, если подключение по DNS работает только внутри рабочей сети, а коллега хочет подключиться из дома, вот и уточняет айпишник.

Чтобы узнать IP машины, используйте команду:

Также можно использовать ifconfig:

Как узнать версию OS

Сидите вы у Заказчика на линуксовой машине. Пытаетесь что-то установить — не работает. Лезете гуглить, а способы установки разные для разных операционных систем. Но как понять, какая установлена на данной машине?

image loader

На этой виртуалке стоит CentOs 7.

Если нужна версия ядра:

Как узнать, как работает команда

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

image loader

Закрыть мануал можно с помощью клавиши q. Для того, кто первый раз в линуксовой консоли, это совсем не очевидно, а подсказки есть не везде.

Команда удобна тем, что не надо даже уходить из командной строки, сразу получаешь всю информацию. К тому же это всегда актуальная информация. А что вы там нагуглите — неизвестно =))

Хотя лично мне проще какую-то команду прогуглить, ведь так я получу русское описание + сначала самые главные флаги (а их может быть много). Но я сама новичок в линуксе, это подход новичка. А лучше сразу учиться прокачивать навык поиска по man-у. Он вам очень пригодится для более сложных задач!

Если man у программы нет, используйте флаг -h (—help):

Как создать много тестовых папок и файлов

Допустим, у нас есть некая папка test. Создадим в ней сотню директорий и кучу файликов в каждой:

Вот и все, дальше можно играться с ними!

image loader

Ага, в домашней директории. Создам себе песочницу:

Вот в ней и буду творить!

А потом можно проверить, что получилось:

Как-то так! Имхо, полезные команды.

Я нашла их в книге «Командная строка Linux. Полное руководство», они используются для того, чтобы создать песочницу для прощупывания команды find. Я, как и автор, восхищаюсь мощью командной строки в данном случае. Всего 2 строчки, а сколько боли бы принесло сделать похожую структуру через графический интерфейс!

И, главное, тестировщику полезно — может пригодиться для тестов.

Как протестировать IOPS на Linux

Это очень полезно делать, если машину вам дает заказчик. Там точно SSD-диски? И они дают хороший iops? Если вы разрабатываете серверное приложение, и от вас требуют выдерживать нагрузку, нужно быть уверенными в том, что диски вам выдали по ТЗ.

Наше приложение активно использует диск. Поэтому, если заказчик хочет видеть хорошие результаты по нагрузке, мы хотим видеть хорошие результаты по производительности самих дисков.

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

Я расскажу о том, как мы тестировали диски. Как проверили, сколько IOPS они выдают.

image loader

1) Скачиваем последнюю версию, распаковываем, переходим в каталог. В командах ниже нужно заменить «fio-3.19» на актуальную версию из списка

2) Должны стоять пакеты для сборки

Какие должны быть результаты:

Если должно быть 50 тысяч, а диск выдает сильно меньше, то:

— он не SSD;
— есть сетевые задержки;
— неправильно примонтирован;
— с ними что-то еще плохое случилось и стоит поднять алярм.

И это все?

Еще полезно изучить команду find и регулярные выражения. Тестировщику как минимум надо уметь «грепать логи» — использовать grep. Но это уже остается на самостоятельный гуглеж.
База, которая всегда нужна — pwd, cp, mv, mkdir, touch. Остальное можно легко гуглить, как только возникает необходимость.

Вот вам еще пара ссылочек от меня:

Книги и видео по теме

Где тренироваться

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

А можно купить облачную машину. Когда мне надо было поиграться с линуксом, я пошла на SimpleCloud (он мне в гугле одним из первых выпал и у него дружелюбный интерфейс. Но можно выбрать любой аналог) и купила самую дешманскую машину — за 150 руб в месяц. Месяца вам за глаза, чтобы «пощупать-потыркать», и этой машины с минимумом памяти тоже.

У меня был когда-то план самой платить эти 150р за то, чтобы дать машину в общий доступ. Но увы. Как я не пыталась ее огородить (закрывала команды типа ssh, ping и прочая), у меня не получилось. Всегда есть люди, которых хлебом не корми, дай испортить чужое. Выложил в общий доступ пароли? На тебе ддос-атаку с твоего сервера. Ну и сервер блокируют. После N-ой блокировки я плюнула на это дело. Кто хочет научиться, найдет 150р.

Чтобы подключиться к машине, используйте инструменты:

Источник

50 основных команд Linux для новичков

2f8a015d2362fbd32df110549e891d36

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

Базовые команды для работы с терминалом

То, что поможет при работе с консолью в целом.

man1

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

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

Команды для управления пользователями

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

Установка, удаление и обновление пакетов

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

Debian/Ubuntu

Red Hat Linux/CentOS

Команды для навигации и базовой работы с файлами

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

wget

wget2

grep

Вот, что написано в тестовом документе

cat:grep21

Что в терминал выводит cat

grep3

И что выводит grep

Команды для отображения базовой информации и управления системой

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

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

Источник

Команды Linux. Шпаргалка

Я часто забываю команды терминала и обычно сохраняю их себе на компьютер в качестве шпаргалки.
Но очень часто мне приходится переустанавливать систему, иногда просто хочется чего-то нового попробовать, а иногда по какой-нибудь необходимости, что приводит к потере файлов.
Так вот, решил запилить эту шпаргалку здесь. Чтобы больше не терять, да и может кому ещё пригодится.
Совершенно не помню откуда я скопипастил данный гайд, так что авторы без обид, ну или отпишитесь на почту.

Команды повышающие привилегии:

открыть командную строку с правами root

открыть командную строку с правами user

забыть пароль sudo

графический диалог sudo (GNOME)

графический диалог sudo (KDE)

файловый менеджер с правами root (GNOME)

файловый менеджер с правами root (KDE)

сменить Ваш пароль

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

— перейти в директорию ‘/home’

— перейти в директорию уровнем выше

— перейти в директорию двумя уровнями выше

— перейти в домашнюю директорию

— перейти в домашнюю директорию пользователя user

— перейти в директорию, в которой находились до перехода в текущую директорию

— показать текущую директорию

— отобразить содержимое текущей директории

— отобразить содержимое текущей директории с добавлением к именам символов, характеризующих тип

— показать детализировано представление файлов и директорий в текущей директории

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

— показать файлы и директории содержащие в имени цифры

— показать дерево файлов и директорий, начиная от корня (/)

— показать дерево файлов и директорий, начиная от корня (/)

— создать директорию с именем ‘dir1’

— создать две директории одновременно

— создать дерево директорий

— удалить файл с именем ‘file1’

— удалить директорию с именем ‘dir1’

— удалить директорию с именем ‘dir1’ и рекурсивно всё её содержимое

— удалить две директории и рекурсивно их содержимое

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

— скопировать файл file1 в файл file2

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

— копировать директорию dir1 со всем содержимым в текущую директорию

— копировать директорию dir1 в директорию dir2

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

— создать «жёсткую» (физическую) ссылку на файл или директорию

— модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)

Команды для поиска файлов:

— найти файлы и директории с именем file1. Поиск начать с корня (/)

— найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/)

— Найти все файлы и директории, имена которых оканчиваются на ‘. bin’. Поиск начать с ‘/ home/user1’

— найти все файлы в ‘/usr/bin’, время последнего обращения к которым более 100 дней

— найти все файлы в ‘/usr/bin’, созданные или изменённые в течении последних 10 дней

— найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, и изменить права доступа к ним

— найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, игнорируя съёмные носители, такие как cdrom, floppy и т.п.

— найти все файлы, содержащие в имени ‘.ps’. Предварительно рекомендуется выполнить команду ‘updatedb’

Команды для монтирования файловых систем:

— монтирует раздел ‘hda2’ в точку монтирования ‘/mnt/hda2’. Убедитесь в наличии директории-точки монтирования ‘/mnt/hda2’

— ремонтирует раздел ‘hda2’. Перед выполнением, покиньте ‘/mnt/hda2’

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

— выполнить размонтирование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты «только чтение» или недостаточно места на диске

— монтировать CD или DVD

— монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-)

— монтировать файловую систему Windows FAT32

— монтировать сетевую файловую систему Windows (SMB/CIFS)

— «монтирует» директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в «песочнице» (chroot), когда симлинки сделать невозможно. Выполнение данной команды сделает копию содержимого /home/user/prg в /var/ftp/user

Команды для работы с дисковым пространством:

— выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр

— отображает размер и имена файлов и директорий, с сортировкой по размеру

— показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)

— показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.)

Команды для работы с пользователями и группами:

— создать новую группу с именем group_name

— удалить группу group_name

— переименовать группу old_group_name в new_group_name

— создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell’а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome

— создать пользователя user1

— удалить пользователя user1 и его домашний каталог

— изменить атрибуты пользователя

— сменить пароль пользователя user1 (только root)

— установить дату окончания действия учётной записи пользователя user1

— проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow

— проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group

— изменяет первичную группу текущего пользователя. Если указать «-«, ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd

Команды для изменения полномочий на файлы:

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

— вывести содержимое директории /tmp и разделить вывод на пять колонок

— отобрать у группы и всех остальных все полномочия на директорию directory1.

— назначить владельцем файла file1 пользователя user1

— назначить рекурсивно владельцем директории directory1 пользователя user1

— сменить группу-владельца файла file1 на group1

— сменить владельца и группу владельца файла file1

— найти, начиная от корня, все файлы с выставленным SUID

— назначить SUID-бит файлу /bin/binary_file. Это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла.

— снять SUID-бит с файла /bin/binary_file.

— назначить SGID-бит директории /home/public.

— снять SGID-бит с директории /home/public.

— назначить STIKY-бит директории /home/public. Позволяет удалять файлы только владельцам

— снять STIKY-бит с директории /home/public

— позволить открывать файл на запись только в режиме добавления

— позволяет ядру автоматически сжимать/разжимать содержимое файла.

— указывает утилите dump игнорировать данный файл во время выполнения backup’а

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

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

— указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync

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

— показать атрибуты файлов

Команды для архивирования файлов:

— разжимает файл ‘file1.gz’

— сжимает файл ‘file1’

— сжать файл file1 с максимальным сжатием

— создать rar-архив ‘file1.rar’ и включить в него файл test_file

— создать rar-архив ‘file1.rar’ и включить в него file1, file2 и dir1

— создать tar-архив archive.tar, содержащий файл file1

— создать tar-архив archive.tar, содержащий файл file1, file2 и dir1

— показать содержимое архива

— распаковать архив в /tmp

— создать архив и сжать его с помощью gzip

— разжать архив и распаковать его

— создать сжатый zip-архив

— создать сжатый zip-архив и со включением в него нескольких файлов и/или директорий

— разжать и распаковать zip-архив

Команды для проверки системной информации:

— отобразить используемую версию ядра

— вывести характеристики жесткого диска

— протестировать производительность чтения данных с жесткого диска

— отобразить информацию о процессоре

— проверить использование памяти

— показать файл(ы) подкачки

— вывести версию ядра

— показать сетевые интерфейсы и статистику по ним

— отобразить смонтированные файловые системы

— показать в виде дерева PCI устройства

— показать в виде дерева USB устройства

— вывести системную дату

— вывести таблицу-календарь 2013-го года

— установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)

— сохранить системное время в BIOS

Команды для остановки системы:

— запланировать остановку системы на указанное время

— отменить запланированную по расписанию остановку системы

Команды для работы X-сервером:

– перезапустить X (GNOME)

– перезапустить X (KDE)

– сбросить конфигурацию X

– переключиться на консоль №N

Команды для работы с сервисами:

– запустить service (Upstart)

– остановить service (Upstart)

– проверить, запущен ли service (Upstart)

– запустить service (SysV)

– остановить service (SysV)

– проверить service (SysV)

– перезапустить service (SysV)

– посмотреть текущий runlevel

Команды для управления пакетами:

– обновить базу пакетов

– обновить все пакеты

– обновить версию Ubuntu

– удалить устаревшие пакеты

– попытаться исправить сломанные пакеты(зависимости)

– попытаться исправить сломанные пакеты(зависимости)

– установить пакет из файла pkg.deb

RPM пакеты (Fedora, Red Hat и тому подобное)

— установить пакет с выводом сообщений и прогресс-бара

— установить пакет с выводом сообщений и прогресс-бара без контроля зависимостей

— обновить пакет без изменений конфигурационных файлов, в случае отсутствия пакета, он будет установлен

— обновить пакет только если он установлен

— отобразить список всех пакетов, установленных в системе

— среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени «httpd»

— вывести информацию о конкретном пакете

— отобразить пакеты входящие в группу пакетов

— вывести список файлов, входящих в пакет

— вывести список конфигурационных файлов, входящих в пакет

— вывести список пакетов, необходимых для установки конкретного пакета по зависимостям

— импортировать публичный ключ цифровой подписи

— проверит подпись пакета

— проверить целостность установленного содержимого пакета

— проверить размер, полномочия, тип, владельца, группу, MD5-сумму и дату последнего изменения пакета

— проверить содержимое всех пакеты установленные в систему. Выполняйте с осторожностью!

— проверить пакет, который ещё не установлен в систему

— извлечь из пакета файлы содержащие в своём имени bin

— установить пакет, собранный из исходных кодов

— собрать пакет из исходных кодов

— закачать и установить пакет

— обновить все пакеты, установленные в систему

— вывести список всех пакетов, установленных в систему

— найти пакет в репозитории

— очисть rpm-кэш, удалив закачанные пакеты

— удалить все заголовки файлов, которые система использует для разрешения зависимостей

— очисть rpm-кэш, удалив закачанные пакеты и заголовки

DEB пакеты (Debian, Ubuntu и тому подобное)

— установить / обновить пакет

— удалить пакет из системы

— показать все пакеты, установленные в систему

— среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени «httpd»

— отобразить информацию о конкретном пакете

— вывести список файлов, входящих в пакет, установленный в систему

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

— найти пакет, в который входит указанный файл.

— установить / обновить пакет

— установить / обновить пакет с cdrom’а

— получить обновлённые списки пакетов

— обновить пакеты, установленные в систему

— удалить пакет, установленный в систему с сохранением файлов конфигурации

— удалить пакет, установленный в систему с удалением файлов конфигурации

— проверить целостность зависимостей

— удалить загруженные архивные файлы пакетов

— удалить старые загруженные архивные файлы пакетов

Команды для просмотра содержимого файлов:

— вывести содержимое файла file1 на стандартное устройство вывода

— вывести содержимое файла file1 на стандартное устройство вывода в обратном порядке (последняя строка становиться первой и т.д.)

— постраничный вывод содержимого файла file1 на стандартное устройство вывода

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

— вывести первые две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк

— вывести последние две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк

— выводить содержимое файла /var/log/messages на стандартное устройство вывода по мере появления в нём текста.

Команды для манипуляции с текстом:

— общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в новый

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

— из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug»

— из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, начинающиеся на «Aug»

— из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, содержащие цифры

— отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug», во всех файлах, находящихся в директории /var/log и ниже

— в файле example.txt заменить «string1» на «string2», результат вывести на стандартное устройство вывода.

— удалить пустые строки из файла example.txt

— удалить пустые строки и комментарии из файла example.txt

— преобразовать символы из нижнего регистра в верхний

— удалить первую строку из файла example.txt

— отобразить только строки содержавшие «string1»

— удалить пустые символы в в конце каждой строки

— удалить строку «string1» из текста не изменяя всего остального

— взять из файла с первой по восьмую строки и из них вывести первые пять

— вывести пятую строку

— заменить последовательность из любого количества нулей одним нулём

— пронумеровать строки при выводе содержимого файла

— при выводе содержимого файла, не выводить чётные строки файла

— вывести первую колонку. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции

— вывести первую и треью колонки. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции

— объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m

— объединить содержимое file1 и file2 в виде таблицы с разделителем «+»

— отсортировать содержимое двух файлов

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

— отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода)

— отсортировать содержимое двух файлов, отображая только повторяющиеся строки

— сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file1’

— сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file2’

— сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах

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

— проверить раздел hda1 на наличие bad-блоков

— проверить/восстановить целостность linux-файловой системы раздела hda1

— проверить/восстановить целостность файловой системы ext2 раздела hda1

— проверить/восстановить целостность файловой системы ext2 раздела hda1

— проверить/восстановить целостность файловой системы ext3 раздела hda1 с указанием, что журнал расположен там же

— проверить/восстановить целостность файловой системы ext3 раздела hda1

— проверить/восстановить целостность файловой системы fat раздела hda1

— проверить/восстановить целостность файловой системы fat раздела hda1

Команды для форматирования разделов:

— создать linux-файловую систему на разделе hda1

— создать файловую систему ext2 на разделе hda1

— создать журналирующую файловую систему ext3 на разделе hda1

— создать файловую систему FAT32 на разделе hda1

— форматирование флоппи-диска без проверки

— создание swap-пространства на разделе hda3 swap-пространство

— создание swap-пространства на разделе hda3

— активировать swap-пространство, расположенное на разделе hda3

— активировать swap-пространства, расположенные на разделах hda2 и hdb3

Команды для создания резервных копий:

— создать полную резервную копию директории /home в файл /tmp/home0.bak

— создать инкрементальную резервную копию директории /home в файл /tmp/home0.bak

— восстановить из резервной копии /tmp/home0.bak

— синхронизировать /tmp с /home

— синхронизировать через SSH-туннель

— синхронизировать локальную директорию с удалённой директорией через ssh-туннель со сжатием

— синхронизировать удалённую директорию с локальной директорией через ssh-туннель со сжатием

— сделать «слепок» локального диска в файл на удалённом компьютере через ssh-туннель

— создать инкрементальную резервную копию директории ‘/home/user’ в файл backup.tar с сохранением полномочий

— копирование содержимого /tmp/local на удалённый компьютер через ssh-туннель в /home/share/

— копирование содержимого /home на удалённый компьютер через ssh-туннель в /home/backup-home

— копирование одной директории в другую с сохранением полномочий и линков

— поиск в /home/user1 всех файлов, имена которых оканчиваются на ‘.txt’, и копирование их в другую директорию

— поиск в /var/log всех файлов, имена которых оканчиваются на ‘.log’, и создание bzip-архива из них

— создать копию MBR (Master Boot Record) с /dev/hda на флоппи-диск

— восстановить MBR с флоппи-диска на /dev/hda

Команды для работы с сетью:

– просмотр сетевой информации

– просмотр информации беспроводных устройств

– сканировать беспроводные сети

– файл для ручной настройки сети

— показать конфигурацию сетевого интерфейса eth0

— активировать (поднять) интерфейс eth0

— деактивировать (опустить) интерфейс eth0

— выставить интерфейсу eth0 ip-адрес и маску подсети

— перевести интерфейс eth0 в promiscuous-режим для «отлова» пакетов (sniffing)

— отключить promiscuous-режим на интерфейсе eth0

— активировать интерфейс eth0 в dhcp-режиме.

— вывести локальную таблицу маршрутизации

— вывести локальную таблицу маршрутизации

— задать ip-адрес шлюза по умолчанию (default gateway)

— добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с ip-адресом 192.168.1.1

— удалить ip-адрес шлюза по умолчанию (default gateway)

— разрешить пересылку пакетов (forwarding)

— отобразить имя компьютера

— разрешить имя www.linuxguide.it хоста в ip-адрес и наоборот host 62.149.140.85

— отобразить состояние всех интерфейсов

— отобразить статус и тип соединения для интерфейса eth0

— отображает статистику интерфейса eth0 с выводом такой информации, как поддерживаемые и текущие режимы соединения

— отображает все установленные сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID’ы и имена процессов, обеспечивающих эти соединения

— отображает все сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID’ы и имена процессов, слушающих порты

— просканировать эфир на предмет, доступности беспроводных точек доступа

— показать конфигурацию беспроводного сетевого интерфейса eth1

Команды для мониторинга и отладки:

— отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)

— отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)

— вывести PID’ы и процессы в виде дерева

— отобразить дерево процессов

— «убить» процесс с PID 98989 «на смерть» (без соблюдения целостности данных)

— Корректно завершить процесс с PID 98989

— заставить процесс с PID 98989 перепрочитать файл конфигурации

— заставить процесс с PID 98989 перепрочитать файл конфигурации

— отобразить список файлов, открытых процессом с PID 98989

— отобразить список открытых файлов из директории /home/user1

— вывести список системных вызовов, созданных и полученных процессом ls

— вывести вызовы бибилотек

— отображать прерывания в режиме реального времени

— отобразить историю перезагрузок системы

— отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней

— вывести загруженные модули ядра

— показать состояние оперативной памяти в мегабайтах

— контроль состояния жёсткого диска /dev/hda через SMART

— проверить доступность SMART на жёстком диске /dev/hda

— вывести десять последних записей из журнала загрузки ядра

— вывести десять последних записей из системного журнала

Команды для работы с фаерволом:

– разрешить все подключения

– запретить все подключения

– текущий статус и правила

– разрешить соединения по порту port

– заблокировать ip адрес

Команды для работы с ядром:

При зависании – Наберите фразу “REISUB” зажав клавиши Alt и SysRq (PrintScrn) с 1 секундной паузой между каждой буквой. Компьютер перезагрузится.

– получить версию Ubuntu

– получить версию ядра

– получить больше информации о ядре

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Время на прочтение
5 мин

Количество просмотров 123K

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

Команда find – это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:

  • Дате добавления.
  • Содержимому.
  • Регулярным выражениям.

Данная команда будет очень полезна системным администраторам для:

  • Управления дисковым пространством.
  • Бэкапа.
  • Различных операций с файлами.

Команда find в Linux производит поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска.

Синтаксис команды find:

$ find directory-to-search criteria action

Где:

  • directory-to-search (каталог поиска) – это отправной каталог, с которой find начинает поиск файлов по всем подкаталогам, которые находятся внутри. Если не указать путь, тогда поиск начнется в текущем каталоге;
  • criteria (критерий) – критерий, по которым нужно искать файлы;
  • action (действие) – что делать с каждым найденным файлом, соответствующим критериям.

Поиск по имени

Следующая команда ищет файл s.txt в текущем каталоге:

$ find . -name "s.txt"
./s.txt

Где:

  • . (точка) – файл относится к нынешнему каталогу
  • -name – критерии по которым осуществляется поиск. В данном случае поиск по названию файла.

В данном случае критерий -name учитывает только символы нижнего регистра и файл S.txt не появиться в результатах поиска. Чтобы убрать чувствительность к регистру необходимо использовать –iname.

$ find . -iname "s.txt"
./s.txt
./S.txt

Для поиска всех изображений c расширением .png нужно использовать шаблон подстановки *.png:

$ find . -name "*.png"
./babutafb.png
./babutafacebook.png
./Moodle2.png
./moodle.png
./moodle/moodle1.png
./genxfacebook.png

Можно использовать название каталога для поиска. Например, чтобы с помощью команды find найти все png изображения в каталоге home:

$ find /home -name "*.png"
find: `/home/babuta/.ssh': Permission denied
/home/vagrant/Moodle2.png
/home/vagrant/moodle.png
/home/tisha/hello.png
find: `/home/tisha/testfiles': Permission denied
find: `/home/tisha/data': Permission denied
/home/tisha/water.png
find: `/home/tisha/.cache': Permission denied

Если выдает слишком много ошибок в отказе разрешения, тогда можно добавить в конец команды – 2> /dev/null. Таким образом сообщения об ошибках будут перенаправляться по пути dev/null, что обеспечит более чистую выдачу.

find /home -name "*.jpg" 2>/dev/null
/home/vagrant/Moodle2.jpg
/home/vagrant/moodle.jpg
/home/tisha/hello.jpg
/home/tisha/water.jpg

Поиск по типу файла

Критерий -type позволяет искать файлы по типу, которые бывают следующих видов:

  • f – простые файлы;
  • d – каталоги;
  • l – символические ссылки;
  • b – блочные устройства (dev);
  • c – символьные устройства (dev);
  • p – именованные каналы;
  • s – сокеты;

Например, указав критерий -type d будут перечислены только каталоги:

$ find . -type d
.
./.ssh
./.cache
./moodle

Поиск по размеру файла

Допустим, что вам необходимо найти все большие файлы. Для таких ситуаций подойдет критерий -size.

  • “+” — Поиск файлов больше заданного размера
  • “-” — Поиск файлов меньше заданного размера
  • Отсутствие знака означает, что размер файлов в поиске должен полностью совпадать.

В данном случае поиск выведет все файлы более 1 Гб (+1G).

$ find . -size +1G
./Microsoft_Office_16.29.19090802_Installer.pkg
./android-studio-ide-183.5692245-mac.dmg

Единицы измерения файлов:

  • c — Байт
  • k — Кбайт
  • M — Мбайт
  • G — Гбайт

Поиск пустых файлов и каталогов

Критерий -empty позволяет найти пустые файлы и каталоги.

$ find . -empty
./.cloud-locale-test.skip
./datafiles
./b.txt
...
./.cache/motd.legal-displayed

Поиск времени изменения

Критерий -cmin позволяет искать файлы и каталоги по времени изменения. Для поиска всех файлов, измененных за последний час (менее 60 мин), нужно использовать -60:

$ find . -cmin -60
.
./a.txt
./datafiles

Таким образом можно найти все файлы в текущем каталоге, которые были созданы или изменены в течение часа (менее 60 минут).

Для поиска файлов, которые наоборот были изменены в любое время кроме последнего часа необходимо использовать +60.

$ find . -cmin +60

Поиск по времени доступа

Критерий -atime позволяет искать файлы по времени последнего доступа.

$ find . -atime +180

Таким образом можно найти файлы, к которым не обращались последние полгода (180 дней).

Поиск по имени пользователя

Опция –user username дает возможность поиска всех файлов и каталогов, принадлежащих конкретному пользователю:

$ find /home -user tisha 2>/dev/null

Таким образом можно найти все файлы пользователя tisha в каталоге home, а 2>/dev/null сделает выдачу чистой без ошибок в отказе доступа.

Поиск по набору разрешений

Критерий -perm – ищет файлы по определенному набору разрешений.

$ find /home -perm 777

Поиск файлов с разрешениями 777.

Операторы

Для объединения нескольких критериев в одну команду поиска можно применять операторы:

  • -and
  • -or
  • -not

Например, чтобы найти файлы размером более 1 Гбайта пользователя tisha необходимо ввести следующую команду:

$ find /home  -user tisha  -and  -size +1G  2>/dev/null

Если файлы могут принадлежать не только пользователю tisha, но и пользователю pokeristo, а также быть размером более 1 Гбайта.

$ find /home ( -user pokeristo -or -user tisha )  -and  -size +1G  2>/dev/null

Перед скобками нужно поставить обратный слеш “”.

Действия

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

  • -delete — Удаляет соответствующие результатам поиска файлы
  • -ls — Вывод более подробных результатов поиска с:
    • Размерами файлов.
    • Количеством inode.
  • -print Стоит по умолчанию, если не указать другое действие. Показывает полный путь к найденным файлам.
  • -exec Выполняет указанную команду в каждой строке результатов поиска.

-delete

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

$ find . -empty -delete

Перед удалением лучше лишний раз себя подстраховать. Для этого можно запустить команду с действием по умолчанию -print.

-exec:

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

-exec command {} ;

Где:

  • command – это команда, которую вы желаете выполнить для результатов поиска. Например:
    • rm
    • mv
    • cp
  • {} – является результатами поиска.
  • ; — Команда заканчивается точкой с запятой после обратного слеша.

С помощью –exec можно написать альтернативу команде –delete и применить ее к результатам поиска:

$ find . -empty -exec rm {} ;

Другой пример использования действия -exec:

$ find . -name "*.jpg" -exec cp {} /backups/fotos ;

Таким образом можно скопировать все .jpg изображения в каталог backups/fotos

Заключение

Команду find можно использовать для поиска:

  • Файлов по имени.
  • Дате последнего доступа.
  • Дате последнего изменения.
  • Имени пользователя (владельца файла).
  • Имени группы.
  • Размеру.
  • Разрешению.
  • Другим критериям.

С полученными результатами можно сразу выполнять различные действия, такие как:

  • Удаление.
  • Копирование.
  • Перемещение в другой каталог.

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

image

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

Команда locate — это самый быстрый и простой способ поиска файлов и каталогов по их именам.

В этой статье мы объясним, как использовать команду locate .

Установка locate (команда locate не найдена)

В зависимости от дистрибутива и того, как была подготовлена система, пакет locate может быть предварительно установлен или не установлен в вашей системе Linux.

Чтобы проверить, установлена ли утилита locate , откройте терминал, введите locate и нажмите Enter . Если пакет установлен, система отобразит locate: no pattern to search for specified . В противном случае вы увидите что-то вроде locate command not found .

Если locate не установлен, вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.

Установите locate на Ubuntu и Debian

sudo apt update sudo apt install mlocate

Установить locate на CentOS и Fedora

sudo yum install mlocate

Как locate работу

Команда locate выполняет поиск заданного шаблона в файле базы данных, созданном командой updatedb . Найденные результаты отображаются на экране по одному в строке.

Во время установки пакета mlocate создается задание cron, которое запускает команду updatedb каждые 24 часа. Это гарантирует регулярное обновление базы данных. Для получения дополнительной информации о задании cron проверьте файл /etc/cron.daily/mlocate .

Базу данных можно обновить вручную, запустив updatedb от имени пользователя root или пользователя с привилегиями sudo:

sudo updatedb

Процесс обновления займет некоторое время, в зависимости от количества файлов и каталогов, а также скорости вашей системы.

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

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

Как использовать команду locate

Синтаксис команды locate следующий:

locate [OPTION] PATTERN...

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

Например, чтобы найти файл с именем .bashrc , введите:

locate .bashrc

Вывод будет включать имена всех файлов, содержащих в своих именах строку .bashrc :

/etc/bash.bashrc
/etc/skel/.bashrc
/home/linuxize/.bashrc
/usr/share/base-files/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc

Файл /root/.bashrc не будет показан, потому что мы /root/.bashrc команду как обычный пользователь, у которого нет прав доступа к каталогу /root .

Если список результатов длинный, для лучшей читаемости вы можете направить вывод в команду less :

locate .bashrc | less

Команда locate также принимает шаблоны, содержащие символы подстановки, такие как подстановочный знак * . Если в шаблоне нет дополнительных символов, команда ищет *PATTERN* . Поэтому в предыдущем примере отображались все файлы, содержащие в своем имени шаблон поиска.

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

locate *.md

Чтобы ограничить результаты поиска, используйте параметр -n после которого укажите количество результатов, которые вы хотите отобразить. Следующая команда .py поиск всех файлов .py и отобразит только 10 результатов:

locate -n 10 *.py

По умолчанию locate выполняет поиск с учетом регистра. Параметр -i ( --ignore-case ) указывает locate игнорировать регистр и запускать поиск без --ignore-case регистра.

locate -i readme.md
/home/linuxize/p1/readme.md
/home/linuxize/p2/README.md
/home/linuxize/p3/ReadMe.md

Чтобы отобразить количество всех совпадающих записей, используйте параметр -c ( --count ). Следующая команда вернет количество всех файлов, содержащих .bashrc в своих именах:

locate -c .bashrc
6

По умолчанию locate не проверяет, существуют ли еще найденные файлы в файловой системе. Если вы удалили файл после последнего обновления базы данных, и если файл соответствует шаблону поиска, он будет включен в результаты поиска.

Чтобы отображать только имена файлов, которые существуют на момент запуска locate , используйте параметр -e ( --existing ). Например, следующее будет возвращать только существующие файлы .json :

locate -e *.json

Если вам нужно выполнить более сложный поиск, используйте параметр -r ( --regexp ), который позволяет вам искать, используя базовое регулярное выражение вместо шаблонов. Этот параметр можно указывать несколько раз.
Например, чтобы найти все файлы .mp4 и .avi в вашей системе и игнорировать регистр, вы должны запустить:

locate --regex -i "(.mp4|.avi)"

Выводы

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

Для получения дополнительной информации обо всех доступных параметрах команды locate введите команду man locate в вашем терминале.

Если у вас есть вопросы, не стесняйтесь оставлять комментарии.

Добавить комментарий