Bash: listar los usuarios de un ordenador

Dado que últimamente estoy haciendo bastantes cosillas con bash voy a poner una serie de “truquillos” aquí.

NOTA: El ejemplo que propongo aquí es un copia/pega de un script que creé para un servidor y una finalidad muy concretas.

En cierto servidor necesitaba tener un listado de los usuarios. Una posibilidad puede ser ir al directorio home y ver allí los usuarios (cada usuario tendrá un directorio ‘home’).

for directorio in /home/*; do
	echo ./actualizador_cada.sh $directorio.
done

dará como resultado:

/home/gorka
/home/alumno
/home/lost+found
/home/mysql
...

Si queremos que no nos muestre ‘/home’ podemos eliminar esa parte de cada directorio usando una subcadena:

echo ${directorio:6}

(esto mostrará una subcadena de $directorio desde la posición 6 hasta el final)

for directorio in /home/*; do
	echo ${directorio:6}
done

dará como resultado:

gorka
alumno
lost+found
mysql
...

NOTA: esto funciona en un sistema en el que los usuarios tengan directorios ‘home’ iguales a su nombres de usuario.

Seguramente verás que hay algunos usuarios que no te interesan (en mi caso sólo me interesaban los usuarios “reales”) así que añadí unas líneas para eliminar los que no interesaban (mysql, lost+found, etc…):

usuarios_no_validos=( 'mysql' 'lost+found')
for directorio in /home/*; do
	valido=1
	usuario=${directorio:6}
	for usuario_no_valido in ${usuarios_no_validos[@]}; do
		if [ $usuario_no_valido = $usuario ]; then
			valido=0
		fi
	done
	if [ $valido -eq 1 ]; then
		echo $usuario
	fi
done

Deja un comentario