Очень важно уметь вовремя найти нужную информацию в системе. Конечно, все современные файловые менеджеры предлагают отличные функции поиска, но им не сравнится с поиском в терминале 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 |
Тип объекта поиска. Возможные варианты:
|
-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 |
Показать найденное. | |
-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 системах он может располагаться в разных местах.
Содержание
- Основные linux-команды для новичка
- Содержание
- Где я? Как понять, где находишься
- Как понять, что находится в папке
- Как перейти в другую директорию
- По абсолютному пути
- По относительному пути
- С автодополнением
- Подняться наверх
- Как создать директорию
- Как создать файл
- Как отредактировать файл
- Как перенести / скопировать файл
- Скопировать файл
- Скопировать директорию
- Переместить файл
- Переместить директорию
- Как удалить файл
- Как изменить владельца файла
- Как установить приложение
- Как запустить приложение
- Как понять, где установлено приложение
- Как создать архив
- Как посмотреть использованные ранее команды
- Как посмотреть свободное место
- Как узнать IP компьютера
- Как узнать версию OS
- Как узнать, как работает команда
- Как создать много тестовых папок и файлов
- Как протестировать IOPS на Linux
- И это все?
- Книги и видео по теме
- Где тренироваться
- 50 основных команд Linux для новичков
- Базовые команды для работы с терминалом
- Команды для управления правами на файлы и директории
- Команды для управления пользователями
- Установка, удаление и обновление пакетов
- Debian/Ubuntu
- Red Hat Linux/CentOS
- Команды для навигации и базовой работы с файлами
- Команды для отображения базовой информации и управления системой
- Команды Linux. Шпаргалка
- Команды повышающие привилегии:
- Команды для работы с файлами и директориями:
- Команды для поиска файлов:
- Команды для монтирования файловых систем:
- Команды для работы с дисковым пространством:
- Команды для работы с пользователями и группами:
- Команды для изменения полномочий на файлы:
- Команды для архивирования файлов:
- Команды для проверки системной информации:
- Команды для остановки системы:
- Команды для работы X-сервером:
- Команды для работы с сервисами:
- Команды для управления пакетами:
- RPM пакеты (Fedora, Red Hat и тому подобное)
- DEB пакеты (Debian, Ubuntu и тому подобное)
- Команды для просмотра содержимого файлов:
- Команды для манипуляции с текстом:
- Команды для проверки файловых систем:
- Команды для форматирования разделов:
- Команды для создания резервных копий:
- Команды для работы с сетью:
- Команды для мониторинга и отладки:
- Команды для работы с фаерволом:
- Команды для работы с ядром:
Основные linux-команды для новичка
Linux — это операционная система. Как винда (windows), только более защищенная. В винде легко подхватить вирус, в линуксе это практически невозможно. А еще линукс бесплатный, и ты сам себе хозяин: никаких тебе неотключаемых автообновлений системы!
Правда, разобраться в нем немного посложнее… Потому что большинство операций выполняется в командной строке. И если вы видите в вакансии «знание linux» — от вас ожидают как раз умение выполнять простейшие операции — перейти в другую директорию, скопировать файл, создать папочку… В этой статье я расскажу про типовые операции, которые стоит уметь делать новичку. Ну и плюс пара полезняшек для тестировщиков.
Я дам кратенькое описание основных команд с примерами (примеры я все проверяла на cent os, red hat based системе) + ссылки на статьи, где можно почитать подробнее. Если же хочется копнуть еще глубже, то см раздел «Книги и видео по теме». А еще комментарии к статье, там много полезного написали)
Содержание
Где я? Как понять, где находишься
Очень полезная команда, когда у вас нет ничего, кроме командной строки под рукой. Расшифровывается как Print Working Directory. Запомните ее, пригодится.
Как понять, что находится в папке
Команда ls позволяет просмотреть содержимое каталога:
Хотя лучше использовать команду сразу с флагом «l»:
Такая команда выведет более читабельный список, где можно будет сразу увидеть дату создания файла, его размер, автора и выданные файлу права.
У команды есть и другие флаги, но чаще всего вы будете использовать именно «ls – l».
См также:
Команда ls Linux — подробнее о команде и всех ее флагах
Команда ls – просмотр каталога — о команде для новичков (без перечисления всех флагов)
Как перейти в другую директорию
С помощью команды cd:
Путь может быть абсолютным или относительным.
По абсолютному пути
Либо у вас где-то записан путь, «куда идти», либо вы подсмотрели его в графическом интерфейсе (например, в WinSCP).
Вставляем путь в командную строку после «cd»
Ну вот, мы переместились из домашней директории (обозначается как
По относительному пути
Относительный путь — относительно вашей текущей директории, где вы сейчас находитесь. Если я уже нахожусь в /home/student, а мне надо в /home/student/log, команда будут такой:
Если мне из надо из /home/student/photo в /home/student/photo/city/msk/2017/cat_1, команда будет такой:
Я не пишу /home/student/photo, так как я уже там.
В линуксе можно задавать путь относительно домашней папки текущего пользователя. Домашняя директория обозначается
/. Дальше вы уже можете указывать подпапки:
Эта команда будет работать отовсюду. И переместит нас в /home/user/log.
Вот пример, где я вошла под пользователем students. Исходно была в директории /var, а попала в /home/students/log:
С автодополнением
Если вы начнете набирать название папки и нажмете Tab, система сама его подставит. Если просто нажмете Tab, ничего не вводя, система начнет перебирать возможные варианты:
— (cd tab) Может, ты имел в виду папку 1?
— (tab) Нет? Может, папку 2?
— (tab) Снова нет? Может, папку 3?
— (tab) Снова нет? Может, файл 1 (она перебирает имена всех файлов и директорий, которые есть в той, где вы сейчас находитесь)?
— (tab) У меня кончились варианты, поехали сначала. Папка 1?
cd lon(Tab) → cd long-long-long-long-name-folder — начали вводить название папки и система сама подставила имя (из тех, что есть в директории, где мы находимся).
cd (Tab)(Tab)(Tab) — система перебирает все файлы / папки в текущей директории.
Это очень удобно, когда перемещаешься в командной строке. Не надо вспоминать точное название папки, но можно вспомнить первую букву-две, это сократит количество вариантов.
Подняться наверх
Подняться на уровень выше:
Если нужно поднять на два уровня выше, то
И так до бесконечности =) Можно использовать файл, лежащий на уровне выше или просто сменить директорию.
Как создать директорию
Используйте команду mkdir:
Можно и в другом месте создать папку:
Когда это нужно? Например, если вам надо сделать бекап логов. Создаете папку и сохраняете туда нужные логи. Или если вы читаете инструкцию по установке ПО и видите там «создать папку». Через командную строку это делается именно так.
Как создать файл
Такая команда создаст пустой файл с названием «app.log». А потом уже можно открыть файл в редакторе и редактировать.
Как отредактировать файл
Вот честное слово, лучше делать это через графический интерфейс!
Но если такой возможности нет, чтож… Если использовать программы, которые есть везде, то у вас два варианта:
Для перемещения по файлу используйте кнопки со стрелками. После того, как закончите редактировать файл, нажмите:
А вот с vim с этим сложнее. В него легко зайти:
Войти вошли, а как выйти то, аааа? Тут начинается легкая паника, потому что ни одна из стандартных комбинаций не срабатывает: Esc, ctrl + x, ctrl + q… Если под рукой есть второй ноутбук или хотя бы телефон / планшет с интернетом, можно прогуглить «как выйти из vim», а если у вас только одно окно с терминалом, которое вы заблокировали редактором?
Делюсь секретом, для выхода надо набрать:
Исходно, когда мы открываем файл через vim, то видим его содержимое, а внизу информацию о файле:
Когда нажимаем двоеточие, оно печатается внизу:
Если не печатается, не паникуем! Тогда попробуйте нажать 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», который там уже есть:
Никаких ошибок, система просто выполнила команду.
Скопировать директорию
Команда остается та же, «cp», только используется ключ R — «копировать папку рекурсивно»:
Так в директории /home/olga появится папка «log».
Переместить файл
Если надо переместить файл, а не скопировать его, то вместо cp (copy) используем mv (move).
Можно использовать относительные и абсолютные пути:
Можно сразу переименовать файл:
Переместить директорию
Аналогично перемещению файла, команда mv
Как удалить файл
С помощью команды rm (remove):
Если нужно удалить все файлы в текущей директории (скажем, вычищаем старые логи перед переустановкой приложения), используйте «*»:
Если нужно удалить папку, надо добавить флаг -r (recursive):
Если вы пытаетесь удалить файлы, которые уже используются в программе или доступны только для чтения, система будет переспрашивать:
А теперь представьте, что вы чистите много файлов. И на каждый система переспрашивает, и надо постоянно отвечать «да, да, да. » (y – enter, y – enter, y – enter)… Чтобы удалить все без вопросов, используйте флаг -f (force):
Но учтите, что это довольно опасная команда! Вот так надоест подстверждать удаление и введешь «-rf», а директорию неправильно укажешь… Ну и все, прости-прощай нужные файлы. Аккуратнее с этой командой, особенно если у вас есть root-полномочия!
Опция -v показывает имена удаляемых файлов:
Тут вы хотя бы можете осознать, что натворили )))
Как изменить владельца файла
Если у вас есть root-доступ, то вы наверняка будете выполнять все действия под ним. Ну или многие… И тогда любой созданный файл, любая папка будут принадлежать root-пользователю.
Это плохо, потому что никто другой с ними работать уже не сможет. Но можно создать файл под root-ом, а потом изменить его владельца с помощью команды chown.
Допустим, что я поднимаю сервис testbase. И он должен иметь доступ к директории user и файлу test.txt в другой директории. Так как никому другому эти файлики не нужны, а создала я их под рутом, то просто меняю владельца:
В итоге был владелец root, а стал testbase. То, что надо!
Как установить приложение
Если вы привыкли к винде, то для вас установка приложения — это скачать некий setup файлик, запустить и до упора тыкать «далее-далее-далее». В линуксе все немного по-другому. Тут приложения ставятся как пакеты. И для каждой системы есть свой менеджер пакетов:
Давайте посмотрим на примере, как это работает. В командной строке очень удобно работать с Midnight Commander (mc) — это как FAR на windows. К сожалению, программа далеко не всегда есть в «чистом» дистрибутиве.
И вот вы подняли виртуалку на centos 7, хотите вызвать Midnight Commander, но облом-с.
Ничего страшного, установите это приложение через yum:
Он там будет что-то делать, качать, а потом уточнит, согласны ли вы поставить программу с учетом ее размеров. Если да, печатаем «y»:
И система заканчивает установку.
Вот и все! Никаких тебе унылых «далее-далее-далее», сказал «установи», программа установилась! Теперь, если напечатать «mc» в командной строке, запустится Midnight Commander:
Как запустить приложение
Чтобы запустить скрипт, нужно указать полный путь к нему:
Это важно! Даже если вы находитесь в той папке, где и скрипт, он не будет найден, если просто указать название sh-скрипта. Надо написать так:
Поиск идет только в каталогах, записанных в переменную PATH. Так что если скрипт используется часто, добавляйте путь туда и вызывайте просто по названию:
Если же приложение запускается как сервис, то все еще проще:
Чтобы сервис test запускался автоматически при рестарте системы, используйте команду:
Она добавит службу в автозапуск.
Как понять, где установлено приложение
Вот, например, для интеграции Jenkins и newman в Jenkins надо прописать полный путь к ньюману в параметре PATH. Но как это сделать, если newman ставился автоматически через команду install? И вы уже забыли, какой путь установки он вывел? Или вообще не вы ставили?
Чтобы узнать, куда приложение установилось, используйте whereis (без пробела):
Как создать архив
Стандартная утилита, которая будет работать даже на «голой» системе — tar. Правда, для ее использования надо запомнить флаги. Для создания архива стандартная комбинация cvzf:
В данном примере мы упаковали директорию /home/test, внутри которой было две картинки — 502.jpg и 504.jpg.
Для распаковки меняем флаг «c» на «x» и убираем «z»:
Хотя система пишет, что распаковала «/home/test», на самом деле папка «test» появляется там, где мы сейчас находимся.
Давайте разберемся, что все эти флаги означают:
Если очень хочется использовать rar, то придется изгаляться. Через yum установка не прокатит:
Говорит, нет такого пакета:
Придется выполнить целую пачку команд! Сначала скачиваем, разархивируем и компилируем:
Как посмотреть использованные ранее команды
Вот, допустим, вы выполняли какие-то сложные действия. Или даже не вы, а разработчик или админ! У вас что-то сломалось, пришел коллега, вжух-вжух ручками, magic — работает. А что он делал? Интересно же!
Или, может, вы писали длинную команду, а теперь ее надо повторить. Снова набирать ручками? Неохота! Тем более что есть помощники:
Если надо «отмотать» недалеко, проще через стрелочку пролистать команды. Один раз нажали — система показала последнюю команду. Еще раз нажали — предпоследнюю. И так до 1000 раз (потому что именно столько хранится в истории).
Большой бонус в том, что линукс хранит историю даже при перезапуске консоли. Это вам не как в винде — скопировал текст, скопировал другой, а первый уже потерялся. А при перезагрузке системы вообще все потерялось.
Если тыкать в стрелочку не хочется, или команды была давно, можно напечатать «history» и внимательно изучить команды.
См также:
История команд Linux — больше о возможностях history
Как посмотреть свободное место
Сколько места свободно на дисках
Сколько весит директория
Как узнать IP компьютера
Если у вас настроены DNS-имена, вы подключаетесь к linux-машине именно по ним. Ведь так проще запомнить — это testbase, это bugred… Но иногда нужен именно IP. Например, если подключение по DNS работает только внутри рабочей сети, а коллега хочет подключиться из дома, вот и уточняет айпишник.
Чтобы узнать IP машины, используйте команду:
Также можно использовать ifconfig:
Как узнать версию OS
Сидите вы у Заказчика на линуксовой машине. Пытаетесь что-то установить — не работает. Лезете гуглить, а способы установки разные для разных операционных систем. Но как понять, какая установлена на данной машине?
На этой виртуалке стоит CentOs 7.
Если нужна версия ядра:
Как узнать, как работает команда
Если вы не знаете, как работает команда, всегда можно спросить о ней саму систему, используя встроенную команду man:
Закрыть мануал можно с помощью клавиши q. Для того, кто первый раз в линуксовой консоли, это совсем не очевидно, а подсказки есть не везде.
Команда удобна тем, что не надо даже уходить из командной строки, сразу получаешь всю информацию. К тому же это всегда актуальная информация. А что вы там нагуглите — неизвестно =))
Хотя лично мне проще какую-то команду прогуглить, ведь так я получу русское описание + сначала самые главные флаги (а их может быть много). Но я сама новичок в линуксе, это подход новичка. А лучше сразу учиться прокачивать навык поиска по man-у. Он вам очень пригодится для более сложных задач!
Если man у программы нет, используйте флаг -h (—help):
Как создать много тестовых папок и файлов
Допустим, у нас есть некая папка test. Создадим в ней сотню директорий и кучу файликов в каждой:
Вот и все, дальше можно играться с ними!
Ага, в домашней директории. Создам себе песочницу:
Вот в ней и буду творить!
А потом можно проверить, что получилось:
Как-то так! Имхо, полезные команды.
Я нашла их в книге «Командная строка Linux. Полное руководство», они используются для того, чтобы создать песочницу для прощупывания команды find. Я, как и автор, восхищаюсь мощью командной строки в данном случае. Всего 2 строчки, а сколько боли бы принесло сделать похожую структуру через графический интерфейс!
И, главное, тестировщику полезно — может пригодиться для тестов.
Как протестировать IOPS на Linux
Это очень полезно делать, если машину вам дает заказчик. Там точно SSD-диски? И они дают хороший iops? Если вы разрабатываете серверное приложение, и от вас требуют выдерживать нагрузку, нужно быть уверенными в том, что диски вам выдали по ТЗ.
Наше приложение активно использует диск. Поэтому, если заказчик хочет видеть хорошие результаты по нагрузке, мы хотим видеть хорошие результаты по производительности самих дисков.
Но верить админам другой стороны на слово нельзя. Если приложение работает медленно, они, разумеется, будут говорить, что у них то все хорошо, это «они» виноваты. Поэтому надо тестировать диски самим.
Я расскажу о том, как мы тестировали диски. Как проверили, сколько IOPS они выдают.
1) Скачиваем последнюю версию, распаковываем, переходим в каталог. В командах ниже нужно заменить «fio-3.19» на актуальную версию из списка
2) Должны стоять пакеты для сборки
Какие должны быть результаты:
Если должно быть 50 тысяч, а диск выдает сильно меньше, то:
— он не SSD;
— есть сетевые задержки;
— неправильно примонтирован;
— с ними что-то еще плохое случилось и стоит поднять алярм.
И это все?
Еще полезно изучить команду find и регулярные выражения. Тестировщику как минимум надо уметь «грепать логи» — использовать grep. Но это уже остается на самостоятельный гуглеж.
База, которая всегда нужна — pwd, cp, mv, mkdir, touch. Остальное можно легко гуглить, как только возникает необходимость.
Вот вам еще пара ссылочек от меня:
Книги и видео по теме
Где тренироваться
Можно поднять виртуалку. Правда, тут сначала придется разбираться, как поднимать виртуалку )))
А можно купить облачную машину. Когда мне надо было поиграться с линуксом, я пошла на SimpleCloud (он мне в гугле одним из первых выпал и у него дружелюбный интерфейс. Но можно выбрать любой аналог) и купила самую дешманскую машину — за 150 руб в месяц. Месяца вам за глаза, чтобы «пощупать-потыркать», и этой машины с минимумом памяти тоже.
У меня был когда-то план самой платить эти 150р за то, чтобы дать машину в общий доступ. Но увы. Как я не пыталась ее огородить (закрывала команды типа ssh, ping и прочая), у меня не получилось. Всегда есть люди, которых хлебом не корми, дай испортить чужое. Выложил в общий доступ пароли? На тебе ддос-атаку с твоего сервера. Ну и сервер блокируют. После N-ой блокировки я плюнула на это дело. Кто хочет научиться, найдет 150р.
Чтобы подключиться к машине, используйте инструменты:
Источник
50 основных команд Linux для новичков
Терминал и текстовые команды — главный способ управления операционной системой Linux. Особенно, если речь идет о сервере – на него редко ставят графический интерфейс, и вся работа выполняется исключительно через командную строку. Поэтому любому администратору важно знать хотя бы с десяток ключевых команд для терминала Линукс, нужных для навигации в системе и базового управления файлами. В этом материале мы их как раз разберем.
Базовые команды для работы с терминалом
То, что поможет при работе с консолью в целом.
Команды для управления правами на файлы и директории
Все, что нужно для разрешения проблем, связанных с правами в Linux.
Команды для управления пользователями
Linux — многопользовательская система. Ей одновременно могут управлять несколько людей. Поэтому здесь достаточно сложная система добавления и редактирования учетных записей.
Установка, удаление и обновление пакетов
Для установки программ в Linux используются менеджеры пакетов. Они разнятся от дистрибутива к дистрибутиву, поэтому команды для управления ими тоже отличаются. Рассмотрим наиболее популярные.
Debian/Ubuntu
Red Hat Linux/CentOS
Команды для навигации и базовой работы с файлами
Самый крупный список в статье. Содержит в себе практически все мелкие утилиты и инструменты для взаимодействия с файлами и папками. Причем речь идет не только об их изменении, но и о получении информации о них.
Вот, что написано в тестовом документе
Что в терминал выводит cat
И что выводит 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 может сильно облегчить жизнь системному администратору, а лучший способ овладеть ей – больше практиковаться.
Одна из самых распространенных операций при работе в 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
в вашем терминале.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии.