Поиск файлов и команд в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

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

В рамках этого LabEx вы научитесь различным способам использования команды whereis для поиска различных компонентов команд Linux, что даст вам практические навыки, ценные на вашем пути изучения Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/man("Manual Access") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cp("File Copying") linux/BasicFileOperationsGroup -.-> linux/mv("File Moving/Renaming") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/whereis("File/Command Finding") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") subgraph Lab Skills linux/man -.-> lab-271441{{"Поиск файлов и команд в Linux"}} linux/ls -.-> lab-271441{{"Поиск файлов и команд в Linux"}} linux/cp -.-> lab-271441{{"Поиск файлов и команд в Linux"}} linux/mv -.-> lab-271441{{"Поиск файлов и команд в Linux"}} linux/cd -.-> lab-271441{{"Поиск файлов и команд в Linux"}} linux/whereis -.-> lab-271441{{"Поиск файлов и команд в Linux"}} linux/grep -.-> lab-271441{{"Поиск файлов и команд в Linux"}} end

Понимание команды whereis

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

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

cd ~/project

Для более глубокого понимания команды whereis давайте посмотрим на ее справочную информацию:

whereis --help

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

Usage:
 whereis [options] [-BMS <dir>... -f] <name>...

Locate the binary, source, and manual page files for a command.

Options:
 -b         search only for binaries
 -B <dirs>  define binaries lookup path
 -m         search only for manuals and infos
 -M <dirs>  define man and info lookup path
 -s         search only for sources
 -S <dirs>  define sources lookup path
 -f         terminate <dirs> argument list
 -u         search for unusual entries
 -l         output effective lookup paths

For more details see whereis(1).

Этот вывод объясняет, что whereis можно использовать для поиска бинарных файлов (исполняемых файлов), исходных файлов и страниц руководства для команд. Также здесь показаны различные параметры, которые можно использовать для уточнения поиска.

Поиск бинарных исполняемых файлов с помощью whereis

В Linux бинарные исполняемые файлы представляют собой скомпилированные программы, готовые к запуску из командной строки. Обычно они хранятся в директориях, таких как /usr/bin, /bin или /usr/local/bin.

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

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

whereis grep

Вы должны увидеть вывод, похожий на следующий:

grep: /usr/bin/grep /usr/share/man/man1/grep.1.gz

Этот вывод сообщает вам две важные вещи:

  • Бинарный исполняемый файл для grep находится по адресу /usr/bin/grep
  • Страница руководства для grep расположена по адресу /usr/share/man/man1/grep.1.gz

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

whereis -b grep

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

grep: /usr/bin/grep

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

whereis ls

Вы должны увидеть вывод, похожий на следующий:

ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

Это показывает, что бинарный файл команды ls находится в /usr/bin/ls, а ее страница руководства - по адресу /usr/share/man/man1/ls.1.gz.

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

Поиск страниц руководства с помощью whereis

Страницы руководства (man pages) предоставляют документацию по командам и программам в Linux. Они содержат подробную информацию о том, как использовать команду, какие параметры доступны, а также примеры обычного использования.

Команда whereis может помочь вам найти эти страницы руководства с использованием опции -m. Давайте посмотрим, как искать страницы руководства для различных команд.

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

whereis -m find

Вы должны увидеть вывод, похожий на следующий:

find: /usr/share/man/man1/find.1.gz

Это показывает, что страница руководства для команды find расположена по адресу /usr/share/man/man1/find.1.gz.

Страницы руководства в Linux обычно хранятся в директории /usr/share/man, организованной по номерированным разделам:

  • Раздел 1: Пользовательские команды (исполняемые программы или команды оболочки)
  • Раздел 2: Системные вызовы (функции, предоставляемые ядром)
  • Раздел 3: Вызовы библиотек (функции в программах-библиотеках)
  • Раздел 4: Специальные файлы (обычно находятся в /dev)
  • Раздел 5: Форматы файлов и соглашения
  • Раздел 6: Игры
  • Раздел 7: Разное
  • Раздел 8: Команды системного администрирования

Большинство часто используемых команд имеют свои страницы руководства в разделе 1, поэтому вы часто будете видеть имена файлов, оканчивающиеся на .1.gz (сжатые файлы раздела 1).

Давайте найдем страницу руководства для команды passwd, которая используется для изменения паролей пользователей:

whereis -m passwd

Вы, возможно, увидите вывод, похожий на следующий:

passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

Обратите внимание, что у passwd есть страницы руководства в двух разных разделах - раздел 1 для самой команды и раздел 5 для формата файла паролей.

Вы можете напрямую получить доступ к этим страницам руководства, используя команду man с именем команды после нее:

man find

Нажмите q, чтобы выйти из просмотрщика страниц руководства, когда закончите чтение.

Поиск исходных файлов с помощью whereis

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

Для поиска исходных файлов используйте опцию -s с командой whereis. Попробуем найти исходные файлы для некоторых распространенных команд:

whereis -s ls

В зависимости от конфигурации вашей системы вы может не увидеть никакого вывода или увидеть что - то вроде этого:

ls:

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

Некоторые программы, особенно те, которые вы компилируете из исходного кода или инструменты разработки, могут иметь свои исходные файлы в системе. Попробуем другую команду, например gcc (GNU C Compiler):

whereis -s gcc

Снова, вывод зависит от вашей системы. Вы можете увидеть что - то вроде этого:

gcc: /usr/lib/gcc

Это означает, что исходные файлы, связанные с gcc, могут быть найдены в директории /usr/lib/gcc.

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

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

whereis python

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

Комбинирование опций и поиск нескольких команд

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

Сначала давайте объединим несколько опций, чтобы уточнить наш поиск. Например, если вы хотите найти как бинарные файлы, так и страницы руководства (но не исходные файлы) для команды tar:

whereis -b -m tar

Вы должны увидеть вывод, похожий на следующий:

tar: /usr/bin/tar /usr/share/man/man1/tar.1.gz

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

Вы также можете искать несколько команд в одном запросе whereis. Это полезно, когда вам нужно сразу найти несколько связанных команд. Давайте найдем местоположения трех команд - cp, mv и rm:

whereis cp mv rm

Вы должны увидеть вывод, похожий на следующий:

cp: /usr/bin/cp /usr/share/man/man1/cp.1.gz
mv: /usr/bin/mv /usr/share/man/man1/mv.1.gz
rm: /usr/bin/rm /usr/share/man/man1/rm.1.gz

Это дает вам быстрый обзор того, где в вашей системе расположены эти три распространенные команды для работы с файлами.

Еще одна полезная опция - -l, которая выводит список директорий, в которых whereis ищет файлы:

whereis -l

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

bin: /usr/bin
bin: /usr/sbin
bin: /usr/games
bin: /usr/local/bin
bin: /usr/local/sbin
man: /usr/man/all
man: /usr/share/man/all
man: /usr/local/man/all
man: /usr/local/share/man/all
src: /usr/src/linux
src: /usr/src/packages
src: /usr/local/src
...

Эта информация полезна для понимания, где whereis ищет файлы и почему он может не найти определенные файлы, даже если они существуют в вашей системе.

Команда whereis - это быстрый способ найти важные файлы, связанные с командами в вашей системе Linux. Хотя у нее есть некоторые ограничения (например, она ищет только в заранее определенных путях), она предоставляет быстрый и простой метод для поиска бинарных исполняемых файлов, страниц руководства и, в некоторых случаях, исходных файлов для используемых вами команд.

Резюме

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

  1. Вы изучили базовый синтаксис и опции команды whereis.
  2. Вы использовали whereis для поиска бинарных исполняемых файлов для команд.
  3. Вы узнали, как найти страницы руководства с помощью опции -m.
  4. Вы исследовали поиск исходных файлов с помощью опции -s, поняв ее ограничения.
  5. Вы практиковались в комбинировании опций и поиске нескольких команд сразу.

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

По мере продолжения вашего пути в Linux вы также можете изучить связанные команды, такие как which (которая находит только исполняемые файлы в переменной PATH), locate (которая может найти любые файлы по имени с использованием базы данных) и find (которая может искать файлы по различным критериям). Каждая из этих команд имеет свои преимущества и области применения, дополняя то, что вы узнали о whereis.