Основные параметры команды find
Я не буду перечислять здесь все параметры, рассмотрим только самые полезные.
-P — никогда не открывать символические ссылки.
-L — получает информацию о файлах по символическим ссылкам
Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
-maxdepth — максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
-depth — искать сначала в текущем каталоге, а потом в подкаталогах.
-mount искать файлы только в этой файловой системе.
-version — показать версию утилиты find.
-print — выводить полные имена файлов.
-type f — искать только файлы.
-type d — поиск папки в Linux.
Базовые команды для работы с терминалом
То, что поможет при работе с консолью в целом.
- clear — очищает всю выведенную в консоль информацию. Пригодится на тот случай, если терминал будет забит выводом других команд или содержимом ранее открытых документов. Помогает «начать с чистого листа».
- history — отображает ранее введенные команды. По умолчанию показывает 10 последних, но при желании это значение можно изменить, добавив в качестве параметра любое число. Например, history 17, чтобы показать 17 последних выполненных операций.
- whatis — вкратце описывает любую установленную программу. Вводим whatis и скармливаем ей в качестве аргумента название интересующей утилиты. Чтобы узнать, что такое wget, напишем whatis wget и получим краткую справку одной строкой.
- man — демонстрирует подробное руководство по выбранной программе или команде. Чтобы выяснить, как работает wget и какие опции для него доступны, введем man wget. Получим массивное полотно со всей документацией для выбранной утилиты. P.S. Выйти из нее можно нажав на клавишу Q.
Понимание прав доступа к файлам и владения в Linux
Теперь, когда вы знаете основную терминологию прав доступа и владения файлами, пришло время увидеть это в действии.
Вы можете использовать команду stat или команду ls для проверки прав доступа к файлу.
Если вы используете команду ls с опцией -l для файла, вы увидите такой вывод:
Позвольте мне объяснить этот вывод более подробно на примере данного изображения:
Позвольте мне подробнее объяснить весь вывод:
- Тип файла : обозначает тип файла. d означает каталог, — означает обычный файл, l означает символическую ссылку.
- Полномочия . В этом поле отображается набор разрешений для файла. Я объясню это подробно в следующем разделе.
- Жесткие ссылки : показывает, есть ли в файле жесткие ссылки. Количество по умолчанию — один.
- Пользователь : пользователь, которому принадлежат файлы.
- Группа : группа, которая имеет доступ к этому файлу. Только одна группа может быть владельцем файла одновременно.
- Размер файла : Размер файла в байтах.
- Время изменения : дата и время последнего изменения файла.
- Имя файла : Очевидно, имя файла или каталога.
Теперь, когда мы рассмотрели вывод команды ls -l, давайте сосредоточимся на части прав доступа к файлу.
В приведенной выше команде вы видите такое разрешение файла в девятизначном формате :
Каждая буква обозначает конкретное разрешение:
- r: разрешение на чтение
- w: разрешение на запись
- x: разрешение на выполнение файла
- -: разрешение не установлено
Права доступа всегда в порядке чтения, записи и выполнения, т. е. rwx. И затем эти разрешения устанавливаются для всех трех типов владельцев (см. Раздел «Владение») в порядке «Пользователь», «Группа» и «Другое».
Эта картина объяснит немного лучше:
Итак, если вы посмотрите на рисунок выше, вы можете сказать следующее о правах доступа к файлам:
- Файл имеет права на чтение, запись и выполнение для владельца пользователя. Но кто этот владелец использования файла? У вас есть эта информация в выводе ls -l (т.е. пользователь abhi).
- Файл имеет права на чтение и запись для группы, но не для выполнения. Какая это группа? У вас есть информация о группе в выходных данных команды ls -l (то есть группа itsfoss).
- Файл имеет разрешение на чтение только для Других, то есть для всех, кто имеет доступ к системе. Вам не нужно знать, что это за другой, потому что «другой» означает всех пользователей.
Теперь, если вы снова увидите всю команду ls -l, вы можете прочитать права доступа к файлу и владельца вместе.
Файл agatha.txt принадлежит пользователю abhi, и abhi имеет права на чтение, запись и выполнение. Все члены группы istfoss имеют доступ для чтения и записи к этому файлу, в то время как все остальные имеют доступ только для чтения к этому файлу.
Примечание. Корневой пользователь обладает сверхспособностями и обычно имеет разрешения на чтение, запись и выполнение для всех файлов, даже если вы не видите его в разрешениях для файлов.
Один пользователь может быть членом нескольких групп, но только основная группа пользователя является владельцем группы файла, созданного пользователем. Первичную группу пользователя можно найти с помощью команды id -gn <username> . Оставьте имя пользователя пустым, если вы пытаетесь найти свою основную группу.
Теперь, когда вы знаете, как узнать разрешения для файла, давайте посмотрим, как вы можете изменить разрешение и владельца файла.
Как использовать mv команду
Команда (короткая от перемещения) используется для переименования и перемещения файлов и каталогов из одного места в другое. Синтаксис команды следующий:
копия
Это может быть один или несколько файлов или каталогов, и может быть один файл или каталог.
- Когда несколько файлов или каталогов задаются как , каталог должен быть. В этом случае файлы перемещаются в целевой каталог.
- Если вы указываете один файл как , а целью является существующий каталог, то файл перемещается в указанный каталог.
- Если вы указываете один файл как и один файл как цель, вы переименовываете файл .
- Когда каталог является каталогом и не существует, он будет переименован в . В противном случае, если он существует, он будет перемещен в каталог.
Чтобы переместить файл или каталог, вам необходимо иметь права на запись как для, так и для . В противном случае вы получите ошибку «Отказано в разрешении».
Например, чтобы переместить файл из текущего рабочего каталога в каталог, который вы запустите:
Чтобы переименовать файл, вам нужно указать имя файла назначения:
Синтаксис для перемещения каталогов такой же, как при перемещении файлов. В следующем примере, если каталог существует, команда переместится внутрь . Если не существует, будет переименован в :
Что такое bash
Bash расшифровывается как Bourne again shell (что можно перевести как «Еще одна оболочка Борна»), название частично заимствованно от более ранней версии командной оболочки UNIX, которая называлась просто Bourne shell («Оболочка Борна» – по фамилии разработчика Стивена Борна).
Bash позволяет интерактивно взаимодействовать с компьютером, вводя определенные команды и получая на них соответствующий отклик. Также этот командный процессор позволяет выполнять скрипты (команды из файла), может производить автодополнение названий файлов и директорий, допускает использование переменных, операторов ветвления и цикла.
Далее в статье будут приведены самые простые и необходимые для работы в bash команды, которые помогут вам сориентироваться и начать самостоятельно использовать командную строку для своих задач, но сначала необходимо перейти к интерфейсу командной строки.
Установка и удаление пакетов
Менеджер пакетов — это инструмент, который позволяет устанавливать, обновлять, удалять и иным образом управлять пакетами программного обеспечения, специфичными для дистрибутива Linux. Различные дистрибутивы Linux имеют различные менеджеры и форматы пакетов.
Только root или пользователь с привилегиями sudo может устанавливать и удалять пакеты.
apt (Ubuntu и Debian)
apt (от англ. «Advanced Package Tool») — это система управления пакетами, используемая дистрибутивами на базе Debian. В дистрибутивах на базе существует несколько инструментов управления пакетами с помощью командной строки, причем наиболее часто используются apt и apt-get.
Перед установкой нового пакета сначала необходимо обновить информацию о пакетах:
Индекс — это база данных, содержащая записи доступных в репозиториях пакетов, подключенных в вашей системе.
Чтобы обновить установленные пакеты до последних версий, выполните:
Установка пакетов так же проста:
Чтобы удалить установленный пакет, введите:
dnf (CentOS и Fedora)
rpm (сокр. от англ. «Red Hat Package Manager») — это мощная система управления пакетами, используемая в дистрибутивах от и производных дистрибутивах, таких как: и . С rpm также связаны команда rpm и .rpm-формат пакетов.
Чтобы установить новый пакет в дистрибутивах от Red Hat, вы можете использовать команду yum или dnf:
Начиная с CentOS 8, заменил в качестве менеджера пакетов по умолчанию, при этом обратно совместим с .
Чтобы обновить установленные пакеты до последних версий, введите:
Удаление пакетов так же просто, как:
Вход в командную строку
Используя Ubuntu в качестве операционной системы, вы можете перейти к командной строке двумя путями, а именно через консоль или через терминал.
Если вы хотите зайти в командную строку через терминал, то для этого необходимо нажать Ctrl+Alt+F(1-6) – в зависимости от выбранного номера (F1, F2…) вы попадаете в первую, вторую или другую по счету виртуальную консоль (они независимы и запускаются во время загрузки Ubuntu), каждая из которых имеет интерфейс командной строки. Если вы нажмете Ctrl+Alt+F7, то перейдете в седьмую виртуальную консоль, которая имеет графический интерфейс.
Что касается терминала, то это графическая программа, которая эмулирует консоль. Вы можете найти ее в меню, выбрав «Приложения», затем «Стандартные», а затем «Терминал», либо нажав сочетание клавиш Ctrl+Alt+T. Вы сможете выполнять команды, продолжая находиться в графическом интерфейсе.
Также возможен вариант, когда вам необходимо подключиться к серверу, на котором установлена Ubuntu. В этом случае вам нужно воспользоваться специальной программой (например, puTTy): наберите нужный ip-адрес, а затем введите имя пользователя и пароль.
Примечание.
При вводе пароля в командную строку он не высвечивается – вам нужно просто набрать пароль и нажать Enter. Если пароль введен правильно, вы сможете продолжить работу в командной строке.
Убить все процессы из консоли
Если у вас небольшое количество оперативной памяти на компьютере и вы любите открывать очень много вкладок в Chromium, то программа а вместе с ней и окружение рабочего стола могут прочно зависать. Браузер создает для каждой вкладки отдельный процесс, поэтому пока планировщик памяти ядра поймет кто виноват в сбое и что нужно делать уйдет много времени, а пытаться убить каждую вкладку по отдельности очень долгое занятие. Есть команда, с помощью которой можно из терминала одним махом закрыть все вкладки:
Или намного проще:
Здесь мы получаем список всех процессов в ps, выбираем из них chromium, потом отбираем второй столбец, то есть PID, и с помощью xargs вызываем kill для каждой вкладки. Точно таким же способом можно уничтожить любое приложение создающее много процессов.
Системные команды Linux
Эти команды используются для просмотра информации и управления, связанной с системой Linux.
1. uname
Команда Uname используется в Linux для поиска информации об операционных системах. В Uname существует много опций, которые могут указывать имя ядра, версию ядра, тип процессора и имя хоста.
Следующая команда uname с опцией отображает всю информацию об операционной системе.
2. uptime
Информация о том, как долго работает система Linux, отображается с помощью команды uptime. Информация о времени безотказной работы системы собирается из файла ‘/proc/uptime‘. Эта команда также отобразит среднюю нагрузку на систему.
Из следующей команды мы можем понять, что система работает в течение последних 36 минут.
Полное руководство команды Uptime
3. hostname
Вы можете отобразить имя хоста вашей машины, введя в своем терминале. С помощью опции вы можете просмотреть ip-адрес компьютера. А с помощью параметра вы можете просмотреть доменное имя.
4. last
Команда last в Linux используется для определения того, кто последним вошел в систему на вашем сервере. Эта команда отображает список всех пользователей, вошедших (и вышедших) из «/var/log/wtmp » с момента создания файла.
Вам просто нужно ввести «last» в своем терминале.
5. date
В Linux команда date используется для проверки текущей даты и времени системы. Эта команда позволяет задать пользовательские форматы для дат.
Рекомендуем статью Команда Date (Дата) в Linux с примерами использования
Например, используя «date +%D«, вы можете просмотреть дату в формате «ММ/ДД/ГГ«.
6. cal
По умолчанию команда cal отображает календарь текущего месяца. С помощью опции вы можете просмотреть календарь на весь год.
9. reboot
Команда reboot используется для перезагрузки системы Linux. Вы должны запустить эту команду из терминала с правами суперпользователя sudo.
10. shutdown
Команда shutdown используется для выключения или перезагрузки системы Linux. Эта команда позволяет планировать завершение работы и уведомлять пользователей сообщениями о выключении и перезагрузке.
По умолчанию компьютер (сервер) выключится через 1 минуту. Вы можете отменить расписание, выполнив команду:
Немедленное отключение тоже возможно, для этого используется опция «now»
Команды Linux, Связанные С Передачей Файлов
Эти команды используются для копирования файлов из одной системы в другую систему
87. scp
SCP — это программа безопасного копирования для передачи файлов или каталогов между хостами Linux в сети. SCP использует протокол ssh для передачи данных.
Пример того как локальный файл ‘examples.txt» скопировать на удаленный хост.
88. rsync
Rsync синхронизирует файлы и каталоги между локальными и удаленными машинами. Он может рекурсивно копировать файлы и каталоги, копировать символические ссылки, сохранять (разрешения, группу, время изменения и принадлежность) идентификатор файла.
Windows против POSIX¶
Работа по умолчанию Модуль зависит от операционной системы, в которой запущено приложение Node.js. В частности, при работе в операционной системе Windows модуль будет предполагать, что используются пути в стиле Windows.
Итак, используя может дать разные результаты в POSIX и Windows:
В POSIX:
В Windows:
Чтобы добиться согласованных результатов при работе с путями к файлам Windows в любой операционной системе, используйте :
В POSIX и Windows:
Чтобы добиться согласованных результатов при работе с путями к файлам POSIX в любой операционной системе, используйте :
В POSIX и Windows:
В Windows Node.js следует концепции рабочего каталога для каждого диска. Такое поведение наблюдается при использовании пути к диску без обратной косой черты. Например, потенциально может вернуть другой результат, чем . Для получения дополнительной информации см. .
Параметры команды mv
Команда принимает несколько параметров, которые влияют на поведение команды по умолчанию.
В некоторых дистрибутивах Linux может быть псевдонимом команды с настраиваемым набором параметров. Например, в CentOS — это псевдоним . Вы можете узнать, является ли псевдонимом, используя команду :
Если является псевдонимом, вывод будет выглядеть примерно так:
Если указаны конфликтующие варианты, последний имеет приоритет.
Запрашивать перед перезаписью
По умолчанию, если целевой файл существует, он будет перезаписан. Чтобы запросить подтверждение, используйте параметр :
Чтобы перезаписать файл типа или
Принудительная перезапись
Если вы попытаетесь перезаписать файл, доступный только для чтения, команда спросит вас, хотите ли вы перезаписать файл:
Чтобы не получать подсказки, используйте параметры :
Эта опция особенно полезна, когда вам нужно перезаписать несколько файлов, доступных только для чтения.
Не перезаписывать существующие файлы
Параметр указывает никогда не перезаписывать существующие файлы:
Если существует приведенная выше команда ничего не сделает. В противном случае он переместит файл в каталог .
Резервное копирование файлов
Если целевой файл существует, вы можете создать его резервную копию, используя параметр :
Файл резервной копии будет иметь то же имя, что и исходный файл, с добавленной к нему тильдой ( ).
Используйте команду ls, чтобы убедиться, что резервная копия была создана:
Подробный вывод
Другой вариант, который может быть полезен, — это . Когда используется эта опция, команда печатает имя каждого перемещенного файла:
Примеры использования команды find
Команда find – это один из мощнейших инструментов linux-администратора.
Ниже приведена шпаргалка по этой замечательной команде.
Найти файл по имени без учета регистра
начиная с текущего каталога рекурсивно:
find -iname "MyCProgram.c"
в каталоге рекурсивно:
find /var -iname syslog*
ограничить поиск только текущей файловой системой (-xdev должен быть после пути поиска но до аргументов поиска)
find /var -xdev -iname syslog*
Найти файл по Inode и переименовать
Это может понадобиться, если к примеру в имени файла есть спец. символы, и переименовать стандартными методами не получается
~# find /var -iname syslog -exec ls -i1 {} \; 3932232 /var/log/syslog 3932189 /var/log/installer/syslog ~# find /var -inum 3932232 -exec mv {} new-test-file-name \;
файлы и каталоги
find /var/log -empty
только файлы
find /var/log -empty -type f
только каталоги
find /var/log -empty -type d
Поиск файлов на основании размера
найти файлы больше чем
find /var/log -size +100M
найти файлы меньше чем
find /var/log -size -100M
найти файлы точно в размер
find /var/log -size 100M
Ключи -ctime -mtime -atime -amin – cmin – mmin
Access time – время доступаModification time – время изменения содержимого в файлеChange time – время обновления файла. (например если мы поменяли атрибуты доступа, то изменится ctime в то же время mtime не изменится)
Опции и означают дни и минуты
Выполнение операций над найденными файлами
Общий синтаксис:
find <CONDITION_to_Find_files> -exec <OPERATION> \;
Где это команда или скрипт.
Для передачи имени найденного файла используется конструкция из двух скобок
пример:
найти все файлы с именем и вывести их
find /var -name syslog -type f -exec ls -i1 {} \;
*скобки можно применять в рамках только одной команды! *
например вот эта команда сработает без проблем:
find -name "*.txt" cp {} {}.bkup \;
а вот эта команда сработает не верно! Здесь отработают только скобки в команде mv:
find -name "*.txt" -exec mv {} `basename {} .htm`.html \;
Для того, что бы осуществить задачу нужно создать отдельный скрипт и запустить его из , передав в качестве аргумента :
echo "mv "$1" "`basename "$1" .htm`.html"" > mv.sh find -name "*.html" -exec ./mv.sh '{}' \;
Форматированный вывод
find /var -type file -name syslog -prinf '<FORMAT>'
usable ключи форматирования:
\a Alarm bell. \n Newline. \t Horizontal tab. %c File's last status change time in the format returned by the C `ctime' function. %f File's name with any leading directories removed (only the last ele‐ ment). %g File's group name, or numeric group ID if the group has no name. %h Leading directories of file's name (all but the last element). If the file name contains no slashes (since it is in the current direc‐ tory) the %h specifier expands to ".". %i File's inode number (in decimal). %k The amount of disk space used for this file in 1K blocks. Since disk space is allocated in multiples of the filesystem block size this is usually greater than %s1024, but it can also be smaller if the file is a sparse file. %b The amount of disk space used for this file in 512-byte blocks. Since disk space is allocated in multiples of the filesystem block size this is usually greater than %s512, but it can also be smaller if the file is a sparse file. %m File's permission bits (in octal). This option uses the `tradi‐ tional' numbers which most Unix implementations use, but if your par‐ ticular implementation uses an unusual ordering of octal permissions bits, you will see a difference between the actual value of the file's mode and the output of %m. Normally you will want to have a leading zero on this number, and to do this, you should use the # flag (as in, for example, `%#m'). %M File's permissions (in symbolic form, as for ls). This directive is supported in findutils 4.2.5 and later. %p File's name. %P File's name with the name of the command line argument under which it was found removed. %s File's size in bytes %t File's last modification time in the format returned by the C `ctime' function. %u File's user name, or numeric user ID if the user has no name. %U File's numeric user ID %Y File's type (like %y), plus follow symlinks L=loop, N=nonexistent
Можно запускать два поиска в одной команде
Профит в том, что за один проход по файловой системе выполняется несколько поисков.
Например следующая команда рекурсивно проходит по файловой системе один раз, при этом сохраняет список файлов с флагом в файл , а список с большими файлами в
find / \( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \ \( -size +100M -fprintf /root/big.txt '%-10s %p\n' \)
Enjoy!
find + sed
К результатам команды find можно сразу же применить
sed
find . -type f -name ‘*.php‘ -exec sed -i ‘s@python/old_file_name\.php@python/new_directory/new_name\.php@‘ {} \;
. означает, что ищем в текущей директории (и вложенных)
Эта команда заменяет везде
на
Следующий пример
find . -type f -name ‘*.php‘ -exec sed -n ‘/\/i\/aws\/oauth.php/ p‘ {} \;
Эта команда ищет по всем .php файлам строку /i/aws/oauth.php
Если нужно не найти или заменить строку а показать название файла, в котором есть определённые символы
— удобно воспользоваться связкой find + grep
Добавить в функцию my_function дополнительный аргумент — сразу в всех .php файлах.
find -type f -name «*.php« -exec sed ‘smy_function(\$old_arg1,\ \$old_arg2)my_function(\$old_arg1,\ \$old_arg2,\ \$new_arg1‘ {} \;
find -type f -name «*.php« -exec sed ‘smy\_function(\$old\_arg1,\ \$old\_arg2)my\_function(\$old\_arg1,\ \$old\_arg2,\ \$new\_arg1‘ {} \;
Команды для управления правами на файлы и директории
Все, что нужно для разрешения проблем, связанных с правами в Linux.
- sudo — выдает права суперпользователя. Используется перед любой другой командой в терминале, если нужно выполнить ее от имени администратора. Многие программы и операции запускаются исключительно при наличии этих прав, так что sudo используется часто. Например, чтобы обновить список пакетов в Ubuntu, введем: sudo apt-get update. При этом система запросит пароль администратора.
- sudo su — переводит терминал в режим суперпользователя. В нем каждая введенная команда будет восприниматься системой так, будто перед ней ввели sudo. Помогает запускать несколько скриптов и утилит, требующих права администратора, без необходимости постоянно корректировать их или вводить пароль от учетной записи.
- sudo gksudo — используется для запуска графических утилит от имени администратора. В Windows для этого есть специальная кнопка в контекстном меню, а в Linux — префикс. Синтаксис такой:
sudo gksudo название приложения, нуждающееся в запуске от имени администратора
- sudo !! — запускает предыдущую команду от имени администратора. Используется, если до этого была неудачная попытка запустить программу. Помогает не тратить время на повторный ввод большого количества символов.
- chmod — корректирует права доступа к выбранному файлу. Применяется исключительно с набором аргументов, обозначающих список прав. Допустим, я хочу выдать права на чтение и запись файла Timeweb.html на рабочем столе. Для этого введу в терминал: chmod 777 ~/Desktop/timeweb.html. Теперь его можно открывать и редактировать. Аналогичным образом пользователи поступают с системными файлами, когда приходит время что-то в них менять. По умолчанию большая их часть защищена от записи.
- chown — назначает владельца для выбранной директории, документа, картинки или любого другого элемента в файловой системе. Синтаксис следующий:
chown имя учетной записи, которому надо передать права путь до файла, права на который нужно передать
Заключение
Вы можете использовать команду find для поиска файлов по имени, дате последнего доступа, дате последнего изменения, имени пользователя (владельца), имени группы, размеру, разрешениям и другим критериям. С помощью этих результатов поиска вы можете выполнять над ними действия, такие как удаление, копирование или перемещение в другое место.
Также рекомендуем прочитать:
8 команд Linux при использовании которых, нужно соблюдать осторожность
5 лучших дистрибутивов Linux для ноутбуков-8
Самые легкие дистрибутивы Linux. Топ-10 для старых компьютеров
10 наиболее часто задаваемых вопросов о Linux
Заключение
В заключении нужно отметить, что несмотря на кажущуюся незатейливость команды ls, она является базовым инструментом системного администратора для «исследования» паутины ФС. И если можно так выразиться, средством для понимания её скрытого порядка и принципов работы.
- https://losst.ru/komanda-ls-linux
- https://www.vseprolinux.ru/komanda-ls
- https://ITProffi.ru/komanda-ls-prosmotr-atributov-fajlov/
- https://habr.com/ru/post/99291/
- https://mordeniuss.ru/15-basic-ls-command-examples-in-linux/
- https://pingvinus.ru/note/cmd-ls
- https://lumpics.ru/linux-ls-command-examples/
- https://world-hello.ru/linux/bash/commands/ls.html