LPIC

Guía extraoficial de estudio

Pipes

Empecemos traduciendo la palabra al español:  pipe –> tubería.  Tener claro esto va a ser fundamental para entender su funcionamiento.

Las pipes o pipelines se representan mediante la barra vertical ( | ). Se utilizan para redireccionar la salida estándar de un programa a la entrada estándar de otro. La mejor forma para comprenderlas es viendo un ejemplo.

Supongamos que necesitamos extraer un determinado dato de un fichero. El fichero passwd, situado en /etc, contiene datos sobre los usuarios y grupos definidos del sistema. Ejecutamos cat /etc/passwd para ver su estructura:

at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
avahi:x:105:107:User for Avahi:/var/run/avahi-daemon:/bin/false
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
dnsmasq:x:104:65534:dnsmasq:/var/lib/empty:/bin/false
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
games:x:12:100:Games account:/var/games:/bin/bash
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
messagebus:x:101:103:User for D-Bus:/var/run/dbus:/bin/false
mysql:x:60:106:MySQL database admin:/var/lib/mysql:/bin/false
news:x:9:13:News system:/etc/news:/bin/bash
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
ntp:x:74:102:NTP daemon:/var/lib/ntp:/bin/false
postfix:x:51:51:Postfix Daemon:/var/spool/postfix:/bin/false
pulse:x:106:108:PulseAudio daemon:/var/lib/pulseaudio:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rtkit:x:103:105:RealtimeKit:/proc:/bin/false
sshd:x:100:101:SSH daemon:/var/lib/sshd:/bin/false
statd:x:102:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
super:x:1000:100:super:/home/super:/bin/bash
usbmux:x:107:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin

Queremos saber si el usuario “super” existe en el sistema, y si es así, que Uid  tiene. Dado que la magnitud de este fichero puede ser muy grande, descartamos la búsqueda “a ojo” y haríamos lo siguiente:

cat /etc/passwd | grep ^super | cut -f3 -d”:”

Hemos usado dos pipes, por lo tanto podemos diferenciar tres bloques:

  • cat /etc/passwd: muestra el contenido del fichero.
  • grep ^super: de las lineas mostradas por el comando anterior, busca la que empiece por “super”.
  • cut -f3 -d”:” : corta el campo 3 de la linea, teniendo en cuenta que delimitamos los campos con “:”

Más adelante veremos mejor el funcionamiento del comando grep y cut, lo que nos debe quedar claro ahora es como hemos entrelazado tres comandos distintos para obtener un resultado, que en este caso será “1000”.

Las pipes pueden tener una longitud arbitraria:

comando uno |comando dos | comando tres […..]

Otro ejemplo interesante podría ser.

grep /bin/bash /etc/passwd | wc -l

En este caso, nos devuelve el número de usuarios que tengan definida la shell bash.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s