buscar no funciona cuando se ejecuta desde un script remoto

buscar no funciona cuando se ejecuta desde un script remoto

Tengo la siguiente línea en un script:

find ~ Templates -maxdepth 0 -type d -empty

que funciona bien, como se esperaba. Sin embargo, cuando copio mi script en Samba Share y lo ejecuto desde allí ( bash myscript.sh), findno encuentro el directorio:

find: ‘Templates’: No such file or directory 

Las variables $PATH son las mismas, por ahora tampoco pude encontrar el motivo de esto.

¿Alguien sabe por qué find se comporta de esta manera? ¿Es un error o no estoy usando findel comando como se supone que debo hacerlo?

usando Ubuntu 19.10 y bash 5.0

Respuesta1

Recibes el mensaje find: ‘Templates’: No such file or directoryporque no hay ningún subdirectorio de Plantillas

  • ya sea - desde el punto en que está ejecutando el script
  • cdo - en el directorio al que ha cambiado algo no mencionado en su script

Me pregunto si todo esto es un error tipográfico y quisiste decir ~/Templates. De cualquier manera, no debes usarlo ~en un script, sino usar "$HOME", por lo que la ruta resultante sería "$HOME/Templates".

Respuesta2

"no, porque Plantillas es el directorio que estoy buscando en '~' o en el directorio de inicio del usuario"

find ~ -maxdepth 0 -type d -empty -name Templates

Respuesta3

¿Qué te hace creer que samba tiene las mismas variables ambientales que linux?

Utilice la ruta real/completa al directorio que desea buscar, ya que ~no es un directorio, probablemente esté vacío; es por eso que buscar se trata Templatescomo una ruta, no como un patrón de búsqueda ( find: ‘Templates’: No such file or directory).

¿Puedes iniciar Shell en tu directorio de samba y ver con qué se trata $ pwd? También puedes comprobar todo el entorno con $ set;

Capítulo sobre el uso de variables del libro Sambadice que el directorio de inicio %Hno lo es ~.

pequeño experimento:

$ 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

O ~está vacío (primero find ...con la ruta "vacía") o no tiene Templatesla ruta buscada (segunda 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

Si

Plantillas es el directorio que estoy buscando en '~' o en el directorio de inicio del usuario

entonces

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

Debería resolver el problema.

-maxdepth 0sólo aplica las pruebas y acciones a los argumentos de la línea de comando (de acuerdo conhombre encontrar; comprobar tambiénesta respuesta)

información relacionada