Я новичок в Linux и сейчас пытаюсь выполнить следующую команду:
find ~ -name apt.no
Я ищу apt.no
в другом каталоге, указанном как montrose-files
.
Нет ответа от оболочки, и она просто создает новую строку. Может ли кто-нибудь объяснить мне, почему это не дает даже результата?
bbcharlieca@myvm:~$ find ~ -name apt.no
bbcharlieca@myvm:~$ █
решение1
Ваша команда find ~ -name apt.no
ищет файл или каталог *
, называемый apt.no
в вашем $HOME
каталоге и во всех каталогах, вложенных в него. ( ~
Представляет ваш собственный домашний каталог.)
Если он не montrose-files
находится в вашем домашнем каталоге, он не будет найден, и целевой файл не будет найден. Например, если montrose-files
он находится в другом пути, вам нужно будет указать этот путь:
find /path/to/montrose-files -name 'apt.no' -print
Сбивает с толку, если вы ранее создали символическую ссылку montrose-files
в вашем домашнем каталоге, которая также не будет искаться, так как find
по умолчанию не следует за символическими ссылками. Вы можете решить эту проблему одним из двух способов:
find ~ -follow -name 'apt.no' -print
find ~/montrose-files/ -name 'apt.no' -print
В первом подходе мы говорим find
символическим follow
ссылкам. В некоторых версиях find
это может быть плохим подходом, потому что если символическая ссылка указывает в цикле, вы можете в конечном итоге пройти по структуре несколько раз.
Во втором подходе мы заставляем символическую ссылку указывать на реальный целевой каталог, добавляя завершающий слеш.
Наконец, обратите внимание, что во всех случаях я заключал в кавычки имя файла, который ищу. В вашем простом случае это не будет иметь никакого значения, но когда вы начнете использовать подстановочные знаки для сопоставления неизвестных частей имен файлов (например, apt.*
), вам следует использовать одинарные кавычки, чтобы гарантировать, что подстановочные знаки не будут обработаны оболочкой до того, как она find
сможет их получить). Хорошей идеей будет выработать привычку заключать аргументы в кавычки.
* Технически, он будет соответствовать любому элементу, но вряд ли в вашем домашнем каталоге будут каналы, сокеты или узлы устройств.