find не работает при запуске из удаленного скрипта

У меня есть ответ. Когда я запускал в режиме демона, используя sudo wpa_cli -a /home/pi/test.sh -B, я проверял неправильный выходной файл (в домашнем каталоге ). В эхе я не указал правильный путь для вывода файла, поэтому он будет перенаправлен на файл outputв корневом каталоге /.

Спасибо за все

0
16.03.2020, 22:02
3 ответа

Вы получаете сообщение find: ‘Templates’: No such file or directory, потому что нет подкаталога Templates

  • либо -с того места, где вы запускаете скрипт
  • или -в каталоге, на который переключился некий -упомянутый cdв вашем скрипте

Мне интересно, это все опечатка и вы имели в виду ~/Templates. В любом случае, вы не должны использовать ~в сценарии, а вместо этого используйте "$HOME", поэтому результирующий путь будет "$HOME/Templates".

2
28.04.2021, 23:20

«нет, потому что Templates — это каталог, который я ищу в «~» или домашнем каталоге пользователя»

find ~ -maxdepth 0 -type d -empty -name Templates
0
28.04.2021, 23:20

Почему вы считаете, что у samba такие же переменные окружения, как и у linux?

Используйте реальный/полный путь к каталогу, который вы хотите найти, так как ~не является каталогом,он, вероятно, пуст -, поэтому find рассматривает Templatesкак путь, а не шаблон поиска(find: ‘Templates’: No such file or directory).

Можете ли вы запустить оболочку в каталоге samba и посмотреть, что там с $ pwd? Вы также можете проверить всю среду с помощью $ set;

В главе об использовании переменных книги Samba говорится, что домашний каталог — %H, а не ~.

небольшой эксперимент:

$ ls -l | grep -E '^d'  # to show there is 1 directory (tmp), which is not empty but doesnt have `Templates`
drwxr-xr-x 2  user  group  24576 Mar 16 16:16 tmp
$ find Templates -maxdepth 0 -type d -empty  # as if <path> (`~`) was empty
find: Templates: No such file or directory

$ find tmp Templates -maxdepth 0 -type d -empty  # as if `~` was `tmp`
find: Templates: No such file or directory

Либо ~пусто, (сначала find...с "пустым" путем. )или у вас нет Templatesв искомом пути (второйfind).

$ touch Templates
$ find tmp Templates -maxdepth 0 -type d -empty  # as if `~` was `tmp`

$ rm Templates; mkdir Templates
$ find tmp Templates -maxdepth 0 -type d -empty  # as if `~` was `tmp`
Templates

Если

Templates is directory I am searching for in a '~' or user's home directory

, затем

$ find ~ -maxdepth 1 -type d -empty -name Templates
~/Templates

Должно решить проблему.

-maxdepth 0применяет тесты и действия только к аргументам командной строки (в соответствии с man find ; проверьте также этот ответ)

0
28.04.2021, 23:20

Теги

Похожие вопросы