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


