Как найти и удалить битые символические ссылки в Linux

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

Команды Linux для навигации в терминале

  1. &&. Строго говоря, это не команда. Если вы хотите выполнить сразу несколько команд, поставьте между ними двойной амперсанд вот так: первая_команда && вторая_команда. Терминал выполнит команды по порядку. Вы можете ввести столько команд, сколько захотите.
  2. alias. Присваивает созданные вами названия длинным командам, которые вы не можете запомнить. Введите alias длинная_команда короткая_команда.
  3. cd. Изменяет текущую терминальную папку. Когда вы запускаете терминал, он использует вашу домашнюю папку. Введите cd адрес_папки, и терминал будет работать с файлами, которые там находятся.
  4. clear. Очищает окно терминала от всех сообщений.
  5. history. Отображает все недавно введённые вами команды. Кроме того, вы можете переключаться между недавними командами с помощью клавиш «Вверх» и «Вниз». Если вы не хотите, чтобы введённая вами команда была записана, поставьте перед ней пробел так: ваша_команда.
  6. man. Отображает руководство по программам и командам Linux. Введите man имя_пакетаили man ваша_команда.
  7. whatis. Отображает краткое описание какой-либо программы. Введите команду и название программы whatis имя_пакета.

ОПЦИИ

Давайте рассмотрим самые основные опции утилиты grep, которые помогут нам выполнять поиск текста в файлах:

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

Поиск файлов

  • find
  • locate
  • whereis

Первая команда с которой мы ознакомимся, это команда «find«. Позволяет выполнять поиск файлов в каталогах. Синтаксис команды очень просто и имеет вид:

find путь -опции

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

-name — поиск файла согласно шаблону

-user — поиск файлов определенного пользователя

-type — поиск по типу файла

-mtime — поиск по времени создания или модификации

Теперь рассмотрим пару примеров использования команды find.

find ~ -type f -size +100M

Этой командой мы выполним поиск всех файлов в домашнем каталоге пользователя размером больше 100 мегабайт. Опция -type f указывает, что искать мы будем файлы, опция -size +100M указывает, что искать файлы размер которых больше 100 мегабайт.

find ~ -type f -mtime +300

Теперь мы ищем файлы которые были изменены или созданы более 30ти дней назад. Опция —mtime +30 указывает нам а то, что нужно искать файлы старше 30ти дней.

Также есть опция которая указывает глубину поиска в каталогах -maxdepth. Так как команда find ищет только в том каталоге в котором вы указали. С помощью переменно -maxdepth можно задать глубину поиска в подкаталогах.

locate

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

Читайте также:  Как создать нового пользователя sudo на сервере Ubuntu Linux

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

  • locate file — поиск файла с именем file
  • locate .txt — найти все файлы с расширением txt
  • locate file -i — регистр файлов учитывает поэтому, чтобы снять это ограничение, вводим опцию -i
  • locate file -c — вывод количества найденных файлов
  • locate file -n 5 — ограничение вывода в 5 результатов

Довольно простой синтаксис и очень быстрый поиск. Только не забывайте использовать updatedb.

whereis

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

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

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

Просмотр содержимого командой less

А в том случае если просматриваемый файл довольно таки большой, можно воспользоваться командой “less”. Она более эффективна для просмотра большого содержимого файлов. Для того что бы воспользоваться командой “less”, вводим ее в терминале, а затем вводим название файла:

less testfile

Просмотр содержимого командой less

Команда “less” выведет на экран только верхушку содержимого файла. Проще говоря, только тот текст, который уместится в вашем терминале. Для пролистывания можно воспользоваться стрелочками на клавиатуре. При этом, у вас содержимое будет плавно выводится, строчка за строчкой. Что может быть достаточно удобно и вы не запутаетесь просматривая содержимое файлов. А для того что бы спустится в самый низ, достаточно нажать пробел. Так же можно пролистывать целыми страницами, используя клавиши “page up” и “page down”. Для выхода из просмотра содержимого файла нажмите клавишу “Q”.

Когда ломаются ссылки

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

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

$ tail file1 tail: cannot open ‘file1’ for reading: No such file or directory

Если вы попытаетесь получить доступ к символической ссылке, которая указывает на себя (бывает и так), вы увидите что-то вроде этого:

$ cat loops cat: loopy: Too many levels of symbolic links $ ls -l loops lrwxrwxrwx 1 shs shs 7 May 25 18:01 loops -> loops

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

Организация файловой системы Linux

В Linux на каждый раздел можно установить свою ФС, которая отвечает за порядок и способ организации информации. В основе файловых систем лежит набор правил, определяющий, где и каким образом хранятся данные. Следующий «слой» ФС — практический (технический) способ организации информации на каждом конкретном типе носителя (опять же, учитывая правила, заложенные в основу системы).

От выбора файловой системы зависят:

  • скорость работы с файлами;
  • их сохранность;
  • скорость записи;
  • размер файлов.

Тип ФС также определяет, будут ли данные храниться в оперативной памяти (ОП) и как именно пользователь сможет изменить конфигурацию ядра.

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

ФС Linux — пространство раздела, поделенное на блоки определенного размера. Он определяется кратностью размеру сектора. Соответственно, это могут быть 1024, 2048, 4096 или 8120 байт. Важно помнить, что размер каждого блока известен изначально, ограничен максимальным размером ФС и зависит от требований, которые выдвигает пользователь к каждому из блоков.

Для обмена данными существует сразу два способа. Первый из них — виртуальная файловая система (VFS). С помощью данного типа ФС происходит совместная работа ядра и приложений, установленных в системе. VFS позволяет пользователю работать, не учитывая особенности каждой конкретной ФС. Второй способ — драйверы файловых систем. Именно они отвечают за связь между «железом» и софтом.

Список файловых систем, которые поддерживаются ядром, находится в файле /proc/filesystems:

[email protected]:~$ cat /proc/filesystems nodev sysfs nodev rootfs nodev ramfs nodev bdev nodev proc nodev cpuset nodev cgroup nodev cgroup2 nodev tmpfs nodev devtmpfs nodev debugfs nodev tracefs nodev securityfs nodev sockfs nodev bpf nodev pipefs nodev hugetlbfs nodev devpts ext3 ext2 ext4 squashfs vfat nodev ecryptfs fuseblk nodev fuse nodev fusectl nodev pstore nodev mqueue nodev autofs

Как найти файл или папку в Кали Линукс: which

Команда which (“уитч“) возвращает точное расположение исполнительного файла, который вызывается при наборе команды из терминала. Она очень полезна для того, чтобы найти файл или папку в Кали Линукс с той целью, чтобы затем создать, например, ярлык для быстрого вызова программы или скрипта. Для того, чтобы попросить терминал показать все подходящие исполнительные файлы по вашему запросу, можно представить команду в виде:

which -a firefox

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

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

Далее. Когда речь заходит о результатах поиска, команда whereis отображает всё, что обнаружила по запросу. А вот which команда сначала покажет именно исполнительные файлы. К тому же whereis использует базу поиска в пределах основных страниц системы. И потому результат поиска может быть неполным. Если вы не уверены, что программа установилась в ту или иную директорию или неизвестно, где её вообще искать, лучше использовать команду whereis. Для полной уверенности зарегистрируйтесь в правами рут и используйте флаг-a . В этом случае от вас уже ничего не скроется.

Регистр имен

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

Назначение каждой директории регламентирует «Стандарт иерархии файловой системы» FHS (Filesystem Hierarchy Standard). Ниже опишем основные директории согласно стандарту FHS:

Регистр имен

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

  • / — root каталог. Содержит в себе всю иерархию системы;
  • /bin — здесь находятся двоичные исполняемые файлы. Основные общие команды, хранящиеся отдельно от других программ в системе (прим.: pwd, ls, cat, ps);
  • /boot — тут расположены файлы, используемые для загрузки системы (образ initrd, ядро vmlinuz);
  • /dev — в данной директории располагаются файлы устройств (драйверов). С помощью этих файлов можно взаимодействовать с устройствами. К примеру, если это жесткий диск, можно подключить его к файловой системе. В файл принтера же можно написать напрямую и отправить задание на печать;
  • /etc — в этой директории находятся файлы конфигураций программ. Эти файлы позволяют настраивать системы, сервисы, скрипты системных демонов;
  • /home — каталог, аналогичный каталогу Users в Windows. Содержит домашние каталоги учетных записей пользователей (кроме root). При создании нового пользователя здесь создается одноименный каталог с аналогичным именем и хранит личные файлы этого пользователя;
  • /lib — содержит системные библиотеки, с которыми работают программы и модули ядра;
  • /lost+found — содержит файлы, восстановленные после сбоя работы системы. Система проведет проверку после сбоя и найденные файлы можно будет посмотреть в данном каталоге;
  • /media — точка монтирования внешних носителей. Например, когда вы вставляете диск в дисковод, он будет автоматически смонтирован в директорию /media/cdrom;
  • /mnt — точка временного монтирования. Файловые системы подключаемых устройств обычно монтируются в этот каталог для временного использования;
  • /opt — тут расположены дополнительные (необязательные) приложения. Такие программы обычно не подчиняются принятой иерархии и хранят свои файлы в одном подкаталоге (бинарные, библиотеки, конфигурации);
  • /proc — содержит файлы, хранящие информацию о запущенных процессах и о состоянии ядра ОС;
  • /root — директория, которая содержит файлы и личные настройки суперпользователя;
  • /run — содержит файлы состояния приложений. Например, PID-файлы или UNIX-сокеты;
  • /sbin — аналогично /bin содержит бинарные файлы. Утилиты нужны для настройки и администрирования системы суперпользователем;
  • /srv — содержит файлы сервисов, предоставляемых сервером (прим. FTP или Apache HTTP);
  • /sys — содержит данные непосредственно о системе. Тут можно узнать информацию о ядре, драйверах и устройствах;
  • /tmp — содержит временные файлы. Данные файлы доступны всем пользователям на чтение и запись. Стоит отметить, что данный каталог очищается при перезагрузке;
  • /usr — содержит пользовательские приложения и утилиты второго уровня, используемые пользователями, а не системой. Содержимое доступно только для чтения (кроме root). Каталог имеет вторичную иерархию и похож на корневой;
  • /var — содержит переменные файлы. Имеет подкаталоги, отвечающие за отдельные переменные. Например, логи будут храниться в /var/log, кэш в /var/cache, очереди заданий в /var/spool/ и так далее.
Читайте также:  OpenOffice 4 – наиболее подходящая замена «офису» от Microsoft

Текстовый редактор Nano

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

В Ubuntu Linux текстовый редактор Nano установлен по умолчанию, но если его нет в вашей системе, то вы можете его установить следующими командами:

Для CentOS, Fedora:

yum install nano

Для Gentoo:

install app-editors/nano

Для Debian, Ubuntu:

Текстовый редактор Nano

apt-get install nano

Чтобы открыть файл в терминале Linux при помощи редактора Nano нужно выполнить следующую команду:

nano file_

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

Для управления текстовым редактором Nano используются следующие комбинации клавиш:

  • Ctrl-G или F1 – просмотр справки;
  • Ctrl-X или F2 – выход из программы;
  • Ctrl-O или F3 – сохранение открытого файла;
  • Ctrl-J или F4 – выровнять текущий абзац;
  • Ctrl-R или F5 – загрузить содержимое другого файла в текущий;
  • Ctrl-W или F6 – выполнить поиск;
  • Ctrl-Y или F7 – пролистать страницу вперед;
  • Ctrl-V или F8 – пролистать страницу назад;
  • Ctrl-K или F9 – вырезать строку и запомнить;
  • Ctrl-U или F10 – вставить;
  • Ctrl-C или F11 – положение курсора;
  • Ctrl-T или F12 – проверить орфографию;

Посмотрите также:

  • Как удалить папку в Linux через терминал (консоль)
  • Как перейти в папку в терминале Linux
  • Как создать файл в Linux через терминал
  • Как скопировать файл в Linux через терминал
  • Как удалить файл в Linux через терминал