Рейтинг:3

find /bin -iname 'sh*' не возвращает никакого результата

флаг gg

Вопрос в синтаксисе найти команда

me@222:~$ найти /bin -iname 'sh*'

не возвращает никакого результата, а:

me@222:/bin$ find -inname 'sh*'

работает отлично

информация о настройке: использование замазки из Windows для удаленного доступа к Ubuntu 20 LTS.

Также:
Я хотел бы запросить синтаксис, чтобы правильно увидеть, что делает find. например, файлы, через которые он проходит, точный путь или строка имени файла, с которой он пытается сопоставиться, и т. д.

terdon avatar
флаг cn
Что касается вашего «также», я думаю, вам лучше всего запустить `set -x`, который, по крайней мере, покажет вам точную выполняемую команду после того, как оболочка завершит расширение. В данном случае это мало помогло бы, так как вы уже указали точные пути (`'*sh'` будет прочитан с помощью `find`, он не расширяется оболочкой).
eliu avatar
флаг gg
@terdon извините, здесь нужно больше информации, мы говорим о поведении «расширения подстановочных знаков» `*`? Я уже подорвался на этой мине, так что я в порядке. Однако этот `set -x`, я не вижу справочной страницы для него, что это такое?
terdon avatar
флаг cn
См. «Набор помощи». Это вещь bash, которая заставляет bash распечатывать расширенную команду, которую он будет запускать. Так, например, если вы запустите `find /m* -name foo`, он покажет `find /media /mnt -name foo`.
Рейтинг:11
флаг hr

В последних системах Ubuntu /бин является символической ссылкой на /USR/бен как результат сливаться, и найти Команда по умолчанию не следует символическим ссылкам. От мужчина находит:

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

   -L Перейти по символическим ссылкам. [...]

   -H Не переходить по символическим ссылкам, кроме как при обработке com.
          аргументы мужской линии. Когда find проверяет или печатает информацию
          о файлах, используемая информация должна быть взята из реквизита.
          свойства самой символической ссылки. Единственное исключение из этого
          поведение, когда файл, указанный в командной строке, является символом.
          bolic ссылка, и ссылка может быть разрешена. Для той ситуации,
          используемая информация берется из того, на что указывает ссылка
          (то есть идет ссылка). Информация о ссылке
          сам по себе используется как запасной вариант, если файл, на который указывает sym.
          bolic ссылка не может быть проверена. Если действует -H и один из
          пути, указанные в командной строке, являются символической ссылкой на
          каталог, содержимое этого каталога будет проверено
          (хотя, конечно, -maxdepth 0 предотвратил бы это).

Вы, наверное, хотите

найти -H /bin -iname 'ш*'

или же

найти /usr/bin -iname 'sh*'

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

eliu avatar
флаг gg
СВЯТАЯ, ОЧЕНЬ очень хороший улов. Спасибо. Своего рода объясняет причину размещения такой эзотерической информации прямо в начале страницы руководства.
user10489 avatar
флаг in
или `find /bin/`, чтобы заставить его разрешить символическую ссылку на его целевой каталог, что делает почти то же самое, что и `-H`
eliu avatar
флаг gg
https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap03.html#tag_21_03_00_75

Ответить или комментировать

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