de bash archivos de lista de secuencia de comandos de usuario dado
Pregunta
Tengo un problema con éste. Está constantemente me regresaba, no es un directorio, pero es sin duda es
#!/usr/local/bin/bash
DIR=$1
if [ -d "$DIR" ]; then
ls -1Apl /home/$DIR | grep -v /\$
else
echo "not a directory"
fi
Una cosa más, necesito una pequeña pista. Tengo a archivos de lista de un determinado usuario en un directorio dado, donde consigo tanto para el usuario y el directorio como parámetros. sugerencias sólo, por favor.
Solución
¿Está usted en el directorio /home
cuando se ejecuta este? Si no es así, es posible que desee cambiar a:
if [ -d "/home/$DIR" ]; then
para que coincida con el comando ls
. Esto es suponiendo que se está ejecutando con algo como myscript pax
para examinar el directorio /home/pax
, que parece ser el caso.
Y si quieres sólo para listar los archivos que hay en propiedad de un usuario específico, puede utilizar awk
imprimir sólo los que tienen la columna 3 establece en el valor deseado ($usrnm
), algo como:
ls -1Apl /home/$DIR | grep -v /\$ | awk -v user=${usrnm} '$3==user{print}{}'
Otros consejos
Usted no está probando la existencia del mismo directorio que usted está tratando de lista - tal vez usted -d "/home/$DIR"
media? O desde su requerimiento, ¿tiene dos parámetros?
user="$1"
dir="$2"
# and then examine "/home/$user/$dir"