Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ÍNDICE
1. REDIRECCIONAMIENTOS .......................................................................................................2
Redireccionamiento de entrada (<) ......................................................................................2
Redireccionamiento de salida (>) ..........................................................................................2
Redireccionamiento de salida - adición (>>) .........................................................................3
Redireccionamiento de errores (2> y 2>>) ............................................................................3
Redirecciones combinadas ....................................................................................................4
2. ENCADENAMIENTO DE COMANDOS (TUBERÍAS) ..................................................................4
3. FILTROS .................................................................................................................................5
more......................................................................................................................................5
tail .........................................................................................................................................6
head ......................................................................................................................................6
wc ..........................................................................................................................................6
grep .......................................................................................................................................7
Expresiones regulares ...........................................................................................................7
tr ...........................................................................................................................................7
sort ........................................................................................................................................8
cut .........................................................................................................................................8
paste .....................................................................................................................................9
join ......................................................................................................................................10
nl .........................................................................................................................................10
tee .......................................................................................................................................11
1. REDIRECCIONAMIENTOS
Al ejecutar un comando, normalmente espera alguna entrada de datos y produce una
salida. Las posibles entradas y salidas estándar son:
Entrada estándar: Archivo desde el que se leerá la entrada de datos para el comando. Por
omisión es el teclado.
Salida estándar: Archivo donde el comando dejará el resultado obtenido. Por defecto es
la pantalla.
Salida de errores: Archivo en el que el comando escribirá cualquier error que se produzca
durante la ejecución del mismo. Por omisión es la pantalla.
Ejemplos:
$ ls /bin
La entrada estándar del comando ls es el directorio /bin. La salida estándar es la
pantalla, al igual que la salida de error.
$ cat
La entrada estándar es el teclado (la orden cat tomará lo que tecleemos) y la salida
estándar es la pantalla (repite lo que escribimos en la pantalla).
Tipos de redireccionamiento:
Ejemplo:
Ejemplo:
Ejemplo:
Ejemplos:
$ ls d* >> fich
Añade al final del fichero fich el listado de los ficheros que comienzan por d.
Ejemplos:
En Linux y Unix hay un dispositivo ficticio llamado /dev/null (dispositivo nulo) que
puede utilizarse cuando no queremos que una salida o un error se muestren por pantalla, y
tampoco queremos guardarlos en un fichero.
Ejemplo:
$ ls -lR / 2>/dev/null
Como somos un usuario normal, al intentar hacer un listado recursivo de todo el sistema
(desde el raíz) nos dará errores en directorios en los que no tenemos permiso de paso o
de lectura. Al redirigir los errores al dispositivo nulo, éstos no aparecerán en la pantalla
ni se guardarán en ningún archivo.
Redirecciones combinadas
Se pueden combinar en un mismo comando las redirecciones de entrada, salida y
errores. Los redireccionamientos pueden ir en cualquier orden.
Ejemplo:
Hay que tener mucho cuidado, en especial con el redireccionamiento de salida, porque
el intérprete de comandos lo primero que hace es borrar el fichero, y luego redirecciona el
resultado del comando al fichero, así que si queremos usar el mismo fichero como entrada y
como salida, perderemos su contenido antes de que lo podamos usar.
Ejemplo:
Ejemplos:
$ ls -lR | more
Hace un listado completo recursivo, pero en lugar de mostrarlo tal cual por pantalla, le
pasa el resultado a la orden more, que hace un listado por pantallas.
$ who | cat -n
Envía la lista de usuarios conectados como entrada para la orden cat -n, que muestra
dicha lista numerada.
3. FILTROS
Los filtros son unos comandos que normalmente trabajan con la entrada estándar, y
por eso se pueden utilizar en secuencias de redireccionamientos y tuberías.
Todos los comandos filtro que veremos a continuación, además de con su propia
sintaxis, se pueden utilizar con las tuberías:
comando | comando_filtro
more
Permite visualizar uno o más archivos pantalla a pantalla.
Por omisión, el número de líneas que muestra en cada pantalla son 23 de texto, y una
última línea de mensaje donde aparece la palabra -More-.
Una vez mostrada la primera pantalla, si pulsamos:
Intro: Se muestra una línea más.
Barra espaciadora: Se muestra una pantalla más.
Sintaxis:
El comando more cuenta con una colección de comandos propios, que podemos
ejecutar cuando se para la pantalla. Pulsando la tecla h mientras estamos ejecutando more
podemos ver la ayuda de estos subcomandos.
Ejercicios:
tail
Visualiza las últimas 10 líneas de un fichero o de la entrada estándar.
Sintaxis:
Opciones:
-n nº Muestra el número de líneas indicado
-c nº Muestra el número de caracteres indicado
Ejemplos:
$ ls -l | tail -15
Muestra las últimas 15 líneas del listado.
$ ls -l | tail -n +15
Muestra desde la línea 15 del listado del directorio, hasta el final.
head
Como la anterior, pero muestra las diez primeras líneas del archivo o entrada estándar.
Sintaxis:
wc
Cuenta las líneas, palabras y caracteres que contengan los archivos referenciados o la
entrada estándar.
Sintaxis:
wc [opciones] [archivo...]
Opciones:
-l Cuenta líneas
-w Cuenta palabras
-c Cuenta bytes
-m Cuenta caracteres (en archivos de texto, -c y -m son equivalentes)
Ejemplo:
$ who | wc -l
Cuenta el número de usuarios conectados.
grep
Busca un patrón de datos en las líneas de los archivos especificados. Cada línea que lo
contiene se muestra en la salida estándar.
Si en el patrón a buscar hay algún carácter especial como $ o *, que tienen un
significado para el shell, hay que encerrar el patrón entre comillas simples o dobles.
Sintaxis:
Expresiones regulares
Son metacaracteres que se pueden utilizar para localizar información dentro de un
archivo. Se suelen utilizar en el patrón de datos de grep.
No deben confundirse con los metacaracteres utilizados en los nombres de los
archivos.
tr
Se utiliza para comprimir, reducir a una o sustituir las repeticiones de una cadena de
caracteres.
Es muy útil para separar campos en ficheros.
Sintaxis1:
tr -s cadena1 [cadena2]
Si no aparece cadena2, toma cada línea de la entrada estándar y sustituye todas las
repeticiones contiguas de cadena1 por una sola (si, por ejemplo, hay varios espacios seguidos
y queremos que se quede uno solo).
Si aparece cadena2, sustituye las repeticiones de cadena1 por una sola cadena2 (en el
caso anterior, en lugar de dejar un solo espacio lo sustituimos, por ejemplo, por un guión).
Sintaxis2:
tr -d cadena
$ who
$ who | tr -s “ “
$ who | tr -s “ “ “*”
$ who | tr -d “ “
sort
Ordena y/o fusiona archivos. Su resultado lo muestra en la salida estándar, o lo
almacena en el archivo de salida (especificado con la opción -o). Si no se especifica nombre de
archivo, asume la entrada estándar.
Sintaxis:
Opciones:
Ejemplos:
$ sort -t “ ” -k 2 fichero
Ordena el fichero a partir del segundo campo hasta el final.
$ sort -t “ ” +1 -1 fichero
Ordena el fichero por el segundo campo.
$ ls -l | sort -k 9
Ordena el listado del directorio activo por el nombre de fichero (campo 9).
cut
Extrae columnas o campos de todas las líneas de un fichero o de la entrada estándar.
La salida estándar es la pantalla. Los campos pueden ser de longitud fija o variable (carácter
separador).
Sintaxis:
Opciones:
Ejemplos:
$ ls -l | cut -c 1-10
Selecciona los 10 primeros caracteres de cada línea del listado del directorio activo (el
tipo de fichero y los permisos).
paste
Es opuesto al comando cut. Une líneas de archivos, o líneas consecutivas de un mismo
archivo, en una línea. Por omisión, se utiliza el tabulador como elemento de unión entre las
líneas unidas.
Sintaxis:
Opciones:
nombres telefonos
ALBERTO 630987654
ANA 619123456
ANGEL 628986342
ALBERTO 630987654
ANA 619123456
ANGEL 628986342
Y si ejecutamos:
El resultado sería:
join
Permite la unión de dos ficheros, registro a registro, si el contenido de un campo
común coincide.
Sintaxis:
Los archivos a unir deben estar clasificados en orden ascendente, según los campos
por los que se desee unir los archivos.
Las líneas del resultado constan del campo común, del resto de la línea de archivo1 y
del resto de la línea de archivo2.
Generalmente, los campos están separados por un blanco, tabulador o línea nueva
(\n). El carácter blanco es el separador por omisión.
Opciones:
-jnm El campo común será el campo m del archivo n, con el campo 1 del otro
archivo. Si no se especifica n, será el campo m de ambos archivos.
-tc Utiliza el carácter c como separador de campos.
-o n.m La salida del comando será el campo m del fichero n.
nl
Numera las líneas de un archivo o texto introducido por teclado.
Sintaxis:
nl [opciones] fichero
Opciones:
tee
Cuando se utilizan estructuras de tuberías, se generan ficheros intermedios que al
terminar se pierden. Con el comando tee podemos conservar un fichero intermedio en una
estructura de tuberías.
Si el fichero no existe, lo crea. Si ya existe, sustituye su valor por el nuevo, a no ser que
utilicemos la opción -a, que añade los datos al final del fichero.
Sintaxis:
Ejemplos: