Duda comandos consola Linux

Iniciado por jamatbar, 20 Octubre 2014, 23:37 PM

0 Miembros y 1 Visitante están viendo este tema.

jamatbar

Buenas, antes que nada no sé si este tema va aquí, estoy empezando a estudiar C pero tengo unas dudas con unos comandos en consola:

Tengo una práctica para familiarizarme con el uso de los comandos en la consola de Linux, y me piden lo siguiente:

a) Liste las líneas del fichero /etc/pam.d/login que contengan la palabra auth

Estando en el directorio pam.d he puesto el comando "grep auth login"

b) Obtenga las líneas del fichero /etc/pam.d/login que comiencen con la palabra auth

Aquí he usado el comando "grep "^auth" login

c) Haga lo mismo con las líneas que terminen con dicha palabra, indicando además el número de línea correspondiente

Aquí "grep -n "$auth" login

d) Liste todas las líneas del fichero /etc/pam.d/login que no sean comentarios (las líneas de comentarios son las que empiezan con el carácter #)

Aquí "grep -V "^#" login

e) Repita lo anterior, eliminando también las líneas vacías. Para ello ejecute dos comandos grep conectados por una tubería.

f) Determine en cuántas líneas del fichero /etc/pam.d/login aparece la palabra pam, independientemente que sea en mayúsculas o minúsculas

¿Alguien me puede ayudar con los apartados e y f?, y decirme también si los anteriores están bien :S

Muchas gracias de antemano!

#!drvy

#1
El c) lo tienes mal. El $ debe ir al final, sino te va a retornar todo el contenido del fichero.

Código (bash) [Seleccionar]
grep -n "auth$" login




El d) también lo tienes mal. Si haces man grep veras que el parámetro -V (v mayúscula) es para mostrar la versión de grep. Recuerda que en *NIX la mayoría de las cosas son case-sensitive. Lo correcto seria usar la -v minúscula.

Código (bash) [Seleccionar]
grep -v "^#" login




En el e) te pide lo mismo pero que elimines las lineas vacías usando un pipe (tubería) adicional. Aunque se puede hacer sin pipes (con expresiones regulares) seria algo así:

Código (bash) [Seleccionar]
grep -v "^#" login | grep -v "^$"

Aquí tienes una breve explicación (en ingles) sobre lo que son las tuberías.
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-4.html




El d) es muy simple. De nuevo, si lees el man de grep, veras que el parámetro -i sirve para hacerlo que ignore mayúsculas/minúsculas (ignore-case) y también veras que el parámetro -c suprime la salida y solo muestra las lineas que ha devuelto el pattern.

Código (bash) [Seleccionar]
grep -ic "pam" login


Nota MOD: Tema movido al subforo GNU/Linux. Entiendo que estés estudiando C/C++ pero si tu duda no es sobre algo de ese lenguaje, ponla en su subforo correcto. =)

Saludos

jamatbar

Muchísimas gracias por todo!

Y sí, la próxima vez que sea sobre comandos lo pondré en esta sección =)