Anda di halaman 1dari 18

REDIRECCIONAMIENTOS. TUBERAS Y FILTROS.

VARIABLES
DE ENTORNO Y CARACTERES ENTRECOMILLADOS.
Redireccionamiento de comandos Encadenamiento de comandos. Filtros. Expresiones regulares
Variables de entorno. Entrecomillados
------------------------------------

REDIRECCIONAMIENTO DE COMANDOS
Cuando un comando es ejecutado, usualmente este espera alguna entrada y normalmente producir
una salida:

Entrada estndar: archivo desde el cual un comando espera leer su entrada de datos. por
omisin es el teclado.

Salida estndar: archivo en el cual un comando deja el resultado obtenido. por omisin, la
pantalla.

Salida de errores: archivo en el cual el comando escribe cualquier mensaje de error que se
produzca durante su ejecucin. por omisin es la pantalla.

Ejemplos:

ls /bin # La entrada estndar al comando ls es el directorio /bin. La salida estndar es la


pantalla al igual que la salida de error.
cat # Toma la entrada estndar (lo que se teclee) y lo lleva a la salida estndar (lo repite en
pantalla).
mail usl # La entrada estndar es el teclado. La salida estndar ser el buzn de correo de us l y
la salida de errores, la pantalla.

REDIRECCIONAMIENTO DE ENTRADA (<)


Este smbolo (<) significa que tome la entrada para un comando desde el siguiente archivo, en lugar
de tomar el estndar (teclado)
Formato: comando [opciones] [argumentos]<archivo
Ejemplo:
mail ciclo1<mensaje # Este comando enviar al usuario ciclol el contenido del archivo
mensaje, en vez de esperar que se introduzca por teclado.
REDIRECCIONAMIENTO DE SALIDA (>)
Este smbolo (>) significa que redireccione al archivo siguiente la salida estndar de un comando.
Formato: comando [opciones] [argumentos]>archivo
Si dicho archivo de salida no existe, el smbolo lo crear. Si ya existe dicho archivo, ser iniciali-
zado con el resultado del comando.
Debe tenerse mucho cuidado al utilizar este redireccionamiento, pues el shell lo primero que hace es
abrir el archivo para salida. Si el archivo ya exista, pierde su contenido antes de ejecutar el
comando. Por eso para dejar un fichero vaco se utiliza:

> fichero
El smbolo > tambin se puede emplear para mandar mensajes a un determinado terminal siempre y
cuando dicho terminal no est bloqueado. Para que el terminal no est bloqueado, el usuario que lo
est usando debe dar permiso de escritura para todos los usuarios. Por ejemplo:
echo estoy aqui>/dev/tty01
Ejemplos: SOBREESCRIBE
ls /bin>/tmp/fich # Crea el archivo fich en el directorio /tmp con el contenido del directorio
/bin en lugar de mostrarlo a la pantalla.

cat>fich # Crea el archivo fich con lo que se teclee hasta que se pulse [Ctrl + d]
who > quien # Crea el archivo quien con la informacin que da who sobre los usuarios
conectados

REDIRECCIONAMIENTO DE SALIDA (ADICIN) (>>)


El smbolo opera de la misma forma que el smbolo >, con la nica diferencia que el resultado del
comando es "aadido" a continuacin del texto que tuviera el archivo especificado al lado derecho
del smbolo. Si no existe el archivo de salida lo crea.
Ejemplos:
ls d*>>fich # Aade al contenido de fich los nombres de los ficheros y directorios del
directorio actual que empiecen por d.
date quien # Aade al final del archivo quien la fecha.

REDIRECCIONAMIENTO DE ERRORES (2>, 2>>)


El smbolo 2> significa que cualquier mensaje de error producido se almacene en el archivo espe-
cificado a continuacin del smbolo, en lugar de usar la pantalla.
Formato: comando [opciones] [argumentos] 2> archivo
Si el archivo de salida no existe, ser creado. Si este ya existe, se inicializara destruyendo su con-
tenido.
El smbolo 2 tambin significa que los mensajes de error sean depositados en el archivo
redireccionado, en vez de en pantalla. Si el archivo no existe, ser creado. Si el archivo existe, el
mensaje de error ser aadido a continuacin del texto que tuviera dicho archivo.
Ejemplos:
cat fich 2>error # Este comando listar el archivo fich por pantalla. Si se produce
cualquier error (por ejemplo, la no existencia de fich), el corres-
pondiente mensaje ser escrito en archivo error. Si el archivo error no
existe, ser creado con el primer mensaje de error. Si el archivo error
existe, ser destruido su contenido anterior y ser inicializado con el
mensaje de error.
cat fich 2error # Este comando hara lo mismo que el ejemplo anterior, excepto en que
si el archivo error ya existe, no ser inicializado, aadindose el error
al texto que hubiera.
cat fich >fich1 2>error # Si cat fich no da error, entonces copia e1 contenido de fich en fichl. Si
cat fich diera algn error inicializara el archivo error con el mensaje
de error correspondiente.
En Linux existe un dispositivo ficticio /dev/null (dispositivo nulo) que se puede utilizar cuando una
salida o un error no queremos que aparezca en ningn dispositivo o fichero.
ls -lR / 2>/dev/null # Mostrar por pantalla todo el rbol de ficheros y directorios, excepto
aquellos para los que no tenga permiso de paso o lectura. Sin el
redireccionamiento 2> dara mensajes de error.

REDIRECCIONES COMBINADAS
Puede utilizarse el redireccionamiento combinado de los archivos de entrada, salida y errores en un
mismo comando.
cat<datos >resultado
Hay que tener cuidado de utilizar los signos de redireccionamiento en los comandos, ya que el shell
primero abre y borra el archivo de salida para recibir el resultado posterior del proceso. Si
cambiamos la colocacin de los ficheros podemos perder la entrada.
cat<datos>datos # Borrara datos y luego (ya borrado) lo toma de entrada para cat. EL
MAYOR TIENE SIEMPRE PRIORIDAD.
No pueden emplearse dos o ms entradas o salidas del mismo comando, si exceptuamos el caso de
redireccionar a un fichero la informacin normal y a otro el de la informacin de errores.
cat<datos<fechas # Este comando provocar un error.
Los smbolos de redireccionamiento pueden ir en cualquier orden; de esta forma, el primer ejemplo
se podra haber escrito as:
cat>resultado <datos

Vaciar fichero cat <f1>f1 se borra el contenido de f1 lo primero antes del cat
asik quedara el fichero vacio
ENCADENAMIENTO DE COMANDOS
Muchos de los comandos de Linux utilizan una entrada estndar (teclado) y una salida estndar
(pantalla) cuando no se le suministran como parmetros.
Esta caracterstica de Linux, que en su momento se utiliz para poder efectuar redireccionamientos,
tambin permite enlazar comandos entre s, haciendo que uno utilice como entrada la salida pro-
porcionada por el anterior, e incluso que su salida se suministre al siguiente. De esta forma se logran
estructuras de comandos realmente potentes. A estas estructuras de comandos se les denomina
pipelines o tuberas.
Para enlazar los comandos entre s, se utiliza el carcter ( | ), y la estructura queda como sigue:
comando1 | comando2 | comando3 # En la que la salida proporcionada por comando1 es tomada
por comando2 como entrada, la manipula de alguna forma
(dependiendo del comando en s) y la salida generada es
pasada a su vez a comando3.
Es importante diferenciar el concepto de tubera del de redireccionamiento. En el primero, se rela-
cionan comandos entre s, pasando la salida de uno a otro; en el segundo, se relacionan comandos
con archivos, tomando el contenido de un archivo como entrada o enviando la salida a un archivo.
Las rdenes con tuberas pueden combinarse con redireccionamientos. Por ejemplo:
comando1 | comando2 > archivo1 # comando2 toma la salida de comando1 como entrada y su
salida la almacena en archivo1.
comando1 < archivo1 | comando2 # comando1 toma como entrada los datos contenidos en
archivol y su salida es transferida como entrada a
comando2. A1 no tener comando2 redireccionada su
salida, sta ir a la estndar.
La cantidad de comandos en una tubera es, en principio, ilimitada. Si no es suficiente una sola lnea
de comandos puede ponerse al final el carcter "\" y continuar en la lnea siguiente.
Ejemplos:
ls | cat Lista el directorio y lo pasa al comando cat que lo visualiza por pantalla
who | wc -l # Proporciona la cantidad de usuarios identificados ante el sistema.

FILTROS
Los filtros son unos comandos que normalmente trabajan con la entrada estndar y por eso se pue-
den utilizar en secuencias de redireccionamientos y en tuberas.

COMANDO more
Este comando permite visualizar uno o ms archivos pantalla a pantalla.
Por omisin, el nmero de lneas que muestra en cada pantalla es de 23 lneas de texto, y una ltima
lnea de mensaje donde aparece la palabra - more -.
Una vez mostrada la primera pantalla del archivo, si el usuario introduce un retorno de carro se
visualizar una lnea ms. si se pulsa la barra espaciadora, se visualizarn las 23 lneas del archivo.
Formato: more [opciones] [+num lnea] [+/pattern] archivo ...
Opciones:
-n Fija el nmero de lneas por pantalla.
+num_ lnea Comienza a mostrar el archivo a partir de la lnea num lnea.
+cadena Comienza a mostrar el archivo dos lneas antes de encontrar la cadena buscada.
El comando more muestra el contenido de un archivo pgina a pgina, parando la visualizacin en
cada pgina mostrada. Esto permite al usuario la introduccin de comandos auxiliares del more. El
comando more facilita al usuario una pantalla de ayuda con todos estos subcomandos, pulsando
simplemente la tecla h (help). Estos subcomandos son:
Ad Muestra otras 11 lneas ms.
ns Salta n lneas y muestra toda una pantalla nueva del archivo que se est visualizando
nf Salta n pantallas hacia delante.
q Salir del comando more.
= Muestra el nmero de la lnea actual.
v Entra en el editor vi, en la lnea actual. al finalizar la edicin vuelve al comando more.
n/string Busca la n ocurrencia del string. Si se encuentra la ocurrencia mostrar la pantalla
comenzando dos lneas antes de la ocurrencia. Si no existe el nmero de ocurrencia
solicitado, no habr cambio de posicin en el archivo. Una vez solicitado el string, el
usuario podr utilizar los caracteres de borrado para editar el string. Si al borrar se
supera el limite de la primera columna del string se cancelar el comando de bsqueda.
in Busca por la i ocurrencia de la ltima bsqueda ordenada.
, Va al punto desde donde comenz la ltima bsqueda. Si anteriormente no se ejecu -
t ningn comando de bsqueda el cursor ir al comienzo del archivo.
!cmd Ejecucin de un comando shell .
i:n Salta al i (siguiente) archivo especificado cundo se llam al comando.
n:p Salta al n previo archivo especificado en la lnea del comando.
:f Muestra el nombre del archivo actual y el nmero de lnea.
. Repetir el ltimo subcomando.
Si no se suministra nombre de archivo, asume la entrada estndar, lo que le convierte en un potente
filtro para utilizar en tuberas.
Ejemplo:
ls -l | more # Visualiza al directorio actual, en formato largo, pantalla a pantalla.
Existe una orden muy similar a more llamada pg que se puede consultar con el comando man.
COMANDO tail
La orden tail sirve para visualizar las ltimas 10 lneas del fichero especificado o de la entrada
estndar
Formato: tail [+nmero | -nmero] [fichero ...]
Opciones:
+nmero Indica que se visualizar desde la lnea nmero hasta el final del archivo
-nmero Indica cuntas lneas se visualizarn empezando a contar desde el final del
archivo. El valor predeterminado es 10.
Ejemplos:
tail /etc/passwd # Visualizar las 10 ultimas lneas del fichero /etc/passwd
ls -l | tail -3 # Visualizara las 3 ltimas lneas de la salida de ls -l
tail +4 /etc/passwd # Visualizar desde la cuarta lnea hasta el final del archivo /etc/passwd.

COMANDO head
La orden head sirve para visualizar las 10 primeras lneas del fichero especificado o de la entrada
estndar.
Formato: head [-nmero] [fichero ...]
Opciones:
-nmero Indica cuntas lneas se visualizarn desde el principio del archivo.
Ejemplos:
head /etc/passwd # Visualizar las 10 primeras lneas del fichero /etc/passwd
ls -l | head -3 # Visualizara las 3 primeras lneas de la salida de ls -l.

COMANDO wc
Este comando cuenta las lneas, palabras y caracteres que contengan los archivos referenciados.
Formato: wc [-opcin ...] [fichero ...]
Opciones:
-l Cuenta el nmero de lneas en un archivo.
-w Cuenta el nmero de palabras en un archivo.
-c Cuenta el nmero de caracteres en un archivo.
A1 contar, el comando wc entiende que una lnea est delimitada por el carcter (\n), una palabra
por espacios, tabuladores o (\n). Cuando cuenta caracteres incluye (\n), tabuladores y espacios. El
carcter \n equivale a retorno de carro.
Si no se especifica archivo, wc cuenta desde el archivo estndar de entrada (teclado).
Wc l /etc/passwd me devuelve el nmero de usuarios si me devuelve 10 lneas hay 10 usuarios
Wc l /etc/group aqu se consulta el nmero de grupos
find / -name "l*" 2>errores |wc l Contar todos los archivos que empiecen con l y manda los
errores al archivo errores
Si no se especifica ninguna opcin, aparecern en pantalla y con este orden el nmero de lneas,
palabras, caracteres y nombre del archivo o archivos.
Tambin mostrar, en caso de ms de un archivo, una cuenta combinada de todos ellos. Ejemplos:
wc doc1 # Mostrara el nmero de lneas, palabras y
caracteres del archivo doc1.
wc -w stu2/doc3 # Mostrara el nmero de palabras del documento
doc3, bajo el subdirectorio stu2.
who | wc -l # Contara el nmero de usuarios que hay conectados.
find /usr -name "*.h" -print | wc -l>num # Suministra la cantidad de archivos que hay debajo
de toda la estructura de /usr cuyo nombre termina
en ".h", y el resultado lo almacenara en el fichero
num.

COMANDO grep (Global RepIace)


Este comando busca en los archivos especificados las lneas que contienen el patrn de datos espe-
cificado. Normalmente, cada lnea encontrada ser copiada en la salida estndar.
Cuando se empleen los caracteres $, *, [, ^, | , (, ) y \ en expresiones de bsqueda, recurdese que
tambin tendrn un especial significado para el shell. Por esta razn, se recomienda encerrar toda la
expresin argumento entre comillas simples o dobles.
Formato: grep [opciones] expresin [archivos]
Opciones:
-v Se imprime todas las lneas, excepto las que coinciden
-c Imprime la cuenta de coincidencias.
-i Ignora la diferencia entre maysculas y minsculas.
-l Lista los nombres de los archivos donde existan lneas coincidentes.
-n Cada lnea ser precedida por el nmero de lnea relativo en el archivo.

EXPRESIONES REGULARES
Son metacaracteres que se pueden utilizar para localizar informacin dentro de un archivo. Son
especialmente tiles cuando figuran en el patrn de datos del comando grep. No deben confundirse
con los metacaracteres utilizados en los nombres de los archivos.
Los ms destacados son:
. (punto) Cualquier carcter en esa posicin.
* Repeticin del carcter previo.
[] Un carcter de los incluidos entre corchetes.
[^ ] Exclusin de los caracteres incluidos entre corchetes.
^ Comienzo de lnea.
$ Final de lnea.
Se pueden utilizar tambin en los comandos de bsqueda del editor vi.
Ejemplos:
grep se.t'' coches # Proporcionarn las lneas del archivo coches que
contengan un texto se, a continuacin, cualquier carcter y,
detrs una t.
grep "gasoil.*lento" coches # Suministra las lneas del archivo coches, que contengan
las palabras gasoil y lento, independientemente del texto
que haya entre ellas.
grep "^r" coches # Mostrar las lneas que comiencen por r dentro del archivo
coches.
grep "^[^r]" coches # Las lneas que no comiencen por r.
grep "ca$" pases # Proporciona las lneas del archivo paises que finalicen en
ca.
grep octubre facturas pedidos # Buscara el patrn octubre en los archivos facturas y
pedidos. Todas las lneas de ambos archivos que
contengan el patrn sern mostradas en pantalla.
grep "facturas octubre'" pedidos # Muestra todas las lneas en el archivo pedidos que
contengan la serie de caracteres "facturas octubre".
grep -v unix unit1 # Sern mostradas todas las lneas del archivo unit1 donde
no aparezca el patrn unix.
grep -c abril gastos # Aparecern en pantalla el nmero de lneas del archivo
gastos donde aparezca el patrn abril.
grep ring unit2 # Aparecern en pantalla todas las lneas del archivo unit2
que contengan la palabra ring. Si no se pusieran las
comillas simples y los espacios en blanco, entonces
mostrara cualquier lnea que contenga la serie de
caracteres conteniendo las letras `ring', (tales como la pala-
bra string)

Grep /bin/bash$ /etc/passwd .


COMANDO tr
Se utiliza para comprimir, reducir a una o sustituir las repeticiones de una cadena.
Formato 1: tr -s cadena1 [cadena2]
Si no se especifica cadena2, toma cada lnea de la entrada estndar y sustituye todas las repeticiones
contiguas de cadena1 por una sola.
Si aparece cadena2 sustituye las repeticiones de cadena1 por una sola cadena2.
Formato 2: tr -d cadena
Borra en la salida la cadena especificada.
Ejemplos:
who | tr -s #Los espacios en blanco o tabuladores de la salida de who los sustituye por
un solo espacio en blanco.
La salida normal de who es:
ciru ttyp1Mar 23 12:26
Javier ttyp2Mar 23 12:52
La salida filtrada por tr sera:
ciru ttyp1 Mar 23 12:26
Javier ttyp2 Mar 23 12:52
who | tr -s " *. La salida filtrada sera:
ciru*ttyp1*Mar*23*12:26
Javier*ttyp2* Mar*23*12:52
who | tr d La salida filtrada sera:
ciruttyp1Mar 23 12:26
Javierttyp2Mar 23 12:52

Who| tr s * todas las ocurrencias de espacio en blanco se sustituyen


por un nico asterisco
Este filtro es de gran utilidad para filtrar salidas de comandos en los que el carcter separador no
est muy claro o es de longitud variable; nos permite establecer el carcter que nosotros queramos.

COMANDO sort
Clasifica y/o fusiona archivos. Su resultado lo muestra en la salida estndar, O bien lo almacena en
el archivo de salida especificado (output). Cuando no se suministra nombre de archivo asume la
entrada estndar.
Formato: sort [-cmu] [-dfinr] [-btc] [+pos1 [-pos2] ] [-o output] [fichero ...]
Si no se especifican claves de clasificacin, tomar toda la lnea como clave por la que clasificar. Se
puede clasificar por ms de un campo, y cada campo, con las opciones de clasificacin que se desee
(bdfinr). Por omisin clasifica en orden ascendente.
Opciones: (Todas las opciones pueden combinarse para producir la salida deseada.)
-c Comprueba que el archivo de entrada est clasificado segn las rdenes de clasificacin.
No produce ninguna salida, a no ser que as se especifique.
-m Fusiona los archivos previamente clasificados.
-u Elimina las lneas duplicadas en la salida.
-d Ordenacin como diccionario; slo cuentan letras, dgitos y espacios en blanco.
-f Ignora la distincin entre maysculas y minsculas.
-i Ignora los caracteres no imprimibles en la comparacin.
-n Clasifica considerando la clave como campo numrico.
-r Invierte el orden de clasificacin.
-tc Indica que el carcter separador de campos es el c. t: el carcter separador seria :
-o Especifica el nombre del archivo de salida, en vez del archivo de salida estndar.
-b Ignora, en la comparacin, los espacios iniciales del campo de clasificacin.
-M Ordena por meses JAN< ... <MAY ... <DEC.
El comando sort es una eficaz herramienta para clasificar e intercalar archivos. Aporta una gran
variedad de opciones y la posibilidad de seleccionar precisamente los campos por los cuales
podemos clasificar.
Un campo puede estar separado del siguiente por blancos, tabuladores u otros caracteres. El carcter
de separacin por defecto es el blanco o espacio.
El comando sort opera, por omisin, en toda la lnea, o bien en campos dentro de las lneas. Las
claves de clasificacin son especificadas usando las notaciones +pos1 y -pos2, las cuales limitan la
clave de clasificacin a un campo que comienza donde indique pos1 y termine justo antes de
pos2.
+pos1 -pos2 indican campos, no columnas. El primer campo del registro recibe el nombre +0 (+1,
+2, ...).
Si solo se indica un campo +X tomara como clave de clasificacin desde el principio de dicho
campo hasta el final de la lnea.
Existe otra forma de especificar campos de ordenacin con -k n1,n2, donde n1 es el campo de
comienzo de la clave de clasificacin y n2 el ltimo campo incluido en la clave.
n1 empieza en 1 para identificar el primer campo.
Ejemplos:
sort testfile # Clasificara en orden ascendente el archivo testfile, mostrando su
resultado en la salida estndar.
sort a b c -o d # Clasificara los archivos a, b, c y almacenar su resultado en el
archivo d.
sort -t: +3 coches # Clasificara el archivo coches, utilizando el carcter (:) como un
separador de campos, usando como clave a partir del cuarto
campo hasta el final del registro.
sort a -o a # Clasificara el archivo a en orden ascendente, almacenando la
salida en l mismo.
sort -r master # Clasificara el archivo master, en orden descendente y lo
mostrara en la pantalla.
sort -f master # Clasificara el archivo master en orden ascendente sin hacer
distincin entre maysculas y minsculas. El resultado sera
enviado a la pantalla
sort -t: +0 -1 +2 master # Clasificara el archivo master, en orden ascendente, utilizando
como clave principal el primer campo y como secundaria el ter-
cero Utiliza como carcter separador : (dos puntos).
sort -t: -k 1,1 -k3 master # Clasificara el archivo master igual que en el ejemplo anterior.
El k deber ir seguido de 1,1 o 2,2 y de de k5 el utlimo campo a
ordenar

Ordenar los ficheros de mi directorio activo por el espacio que ocupan, de mayor a
menor
Ls l |tr s |sort n t k5 >archivosordenados

Uso el tr para limitar los espacios en blanco en uno solo y asi poder usar el espacio en blanco como separador de
campos, luego al ser un dato numerico uso la opcion n para ordenarlos de manera ascendente numericamente

Si quisiese sacar en sentido inverso debo poner r con k5 ordena atendiendo al quinto campo que es el tamao del
archivo y con >archivo mando los resultados a un archivo de texto.

COMANDO cut
Este comando puede ser usado para extraer ciertas columnas o campos en cada una de las lneas de
un archivo. Los campos tomados pueden ser de longitud fija o variable (carcter delimitador). Si no
se especifica archivo de entrada se tomar como entrada el teclado. La salida estndar es la pantalla.
No puede variarse el orden de aparicin de campos.
Formato: cut -opcin ... [fichero...]
Opciones:
-dc Indica que c es el carcter separador de campos.
-cl,lista Indica que se quiere seleccionar columnas de datos, dando su posicin de comienzo y fin
mediante la posicin que ocupen sus caracteres de comienzo y fin.
-fl,lista Indica que se quiere visualizar campos separados por caracteres separadores.
(lista) lista de nmeros que representan campos o caracteres (1,2,3 representaran los
campos o caracteres l, 2 y 3) (1,2-7,9 representaran los campos o caracteres 1,2,3,4,5,6,7y
9).
Ejemplos:
cut -d: -fl,4,6 filea # Seleccionara los campos 1,4 y 6 del archivo filea.
cut -cl 15 # Seleccionara los primeros 15 caracteres de cada lnea de la
entrada estndar.
who| tr s | cut f2 d # Visualizara la lista de terminales en actividad.

COMANDO tee
Generalmente, los archivos de salida intermedios en las estructuras con tuberas no son utilizados,
excepto por el archivo de entrada del siguiente comando o programa.
No se mantienen sus contenidos una vez utilizados.
El comando tee se usa para conservar un archivo de salida intermedio y poder as procesarlo ms
tarde.
Formato: tee [-opcin...] [fichero...]
Opciones:
-a Esta opcin hace que la salida se aada al final del archivo nombrado. Si el archivo no existe,
el comando tee lo crea y si existe lo inicializa.
Si se desea utilizar nuestro terminal, se deber utilizar su trayectoria (/dev/ttyxx).
Ejemplo:
grep in fich1 | tee tu | wc l
Sirve para guarda el resultado intermedio del grep que es contar las
lneas con la palabra in en el archivo tu y luego contara las lneas
totales del archivo fich1

COMANDO echo
Escribe sus argumentos en pantalla, terminando con el carcter "nueva lnea" (\n). Es til para
generar mensajes en pantalla desde archivos de comandos, as como para enviar datos conocidos a
una estructura con tuberas.
Se pueden utilizar los caracteres de edicin del lenguaje C, tales como \n, \c, etc., teniendo el mismo
significado.
Formato: echo [arg] ...
Opciones:
-c Para incluir caracteres de control del C (\t, \c, \n). En SCO no es necesaria esta opcin, pero en
Linux s.
Quita el salto de lnea al final del echo
-n
Ejemplos:
echo "Esto marcha" # Mostrara en pantalla el mensaje indicado.
echo d* # Mostrara en pantalla el nombre de todos los archivos del directorio
actual que comiencen por el carcter d.

EJERCICIOS

Obtener un listado de nombre de grupos de usuarios ordenados descendentemente en el


fichero con el nombre grupos.
Sort r /etc/group |cut d: -f1 >grupos

Obtener el nmero de propietarios diferentes de los archivos de mi directorio activo


Ls l |tr s |cut d f3|sort u |wc -w

EJEMPLOS DE UTILIZACIN DE FILTROS Y TUBERAS


Vamos a ver ejemplos utilizando un fichero paises, que contiene los campos continente, pas, capital
e idioma. E1 carcter separador de campos ser :
cat pases
AMERICA:USA:WHASINGTON:INGLES EUROPA:GRAN BRETAA:LONDRES:INGLES
EUROPA:ESPAA:MADRID:CASTELLANO EUROPA:ALEMANIA:BERLIN:ALEMAN
AFRICA:MARRUECOS:RABAT:ARABE AMERICA:MEJICO:MEJICO:CASTELLANO
AFRICA:ARGELIA:ARGEL:ARABE AMERICA:PERU:LIMA:CASTELLANO
AFRICA:EGIPTO: EL CAIRO:ARABE AMERICA:ARGENTINA:BUENOS AIRES:CASTELLANO
ASIA: CHINA: PEKIN:CHINO ASIA: TAIWAN: TAIPEI CHINO
ASIA:INDIA:DELHI:INDU EUROPA: PORTUGAL:LISBOA:PORTUGUES
EUROPA:HUNGRIA:BUDAPEST:HNGARO AMERICA:BRASIL:BRASILIA:PORTUGUES
EUROPA:FRANCIA:PARIS:FRANCES

sort -t: -k, 4,4 -k 1,1 -k 2 pases # Ordenar el fichero por el 4. campo (idioma), como segunda
clave el l. (continente) y, como tercera, el 2. campo (pas).
EUROPA: ALEMANIA:BERLIN:ALEMAN ASIA: TAIWAN: TAIPEI:CHINO
AFRICA:ARGELIA:ARGEL:ARABE EUROPA: FRANCIA: PARIS:FRANCES
AFRICA:EGIPTO: EL CAIRO:ARABE EUROPA: HUNGRIA:BUDAPEST:HUNGARO
AFRICA:MARRUECOS:RABAT:ARABE ASIA:INDIA:DELHI:INDU
AMERICA:ARGENTINA:BUENOS AIRES:CASTELLANO AMERICA:USA: WHASINGTON:INGLES
AMERICA:MEJICO:MEJICO:CASTELLANO EUROPA:GRAN BRETAA:LONDRES:INGLES
AMERICA:PERU:LIMA:CASTELLANO AMERICA:BRASIL:BRASILIA:PORTUGUES
EUROPA: ESPAA:MADRID:CASTELLANO EUROPA: PORTUGAL:LISBOA:PORTUGUES
ASIA: CHINA: PEKIN:CHINO

cut -d: -f1-3 paises | grep EUROPA # Extrae los tres primeros campos de las lneas que tienen la
cadena "EUROPA".

EUROPA:ESPAA:MADRID
EUROPA: HURIA:BUDAPEST
EUROPA: FRANCIA: PARIS
EUROPA:GRAN BRETAA:LONDRES
EUROPA:ALEMANIA:BERLIN
EUROPA: PORTUGAL: LISBOA
cat paises |grep CASTELLANO | sort t: +0 1 +1 # Ordena las lneas que tienen la cadena
"CASTELLANO" por el campo
continente y como clave secundaria. Es
decir, las del mismo continente, por pas.
AMERICA:ARGENTINA:BUENOS AIRES: CASTELLANO
AMERICA:MEJICO:MEJICO:CASTELLANO
AMERICA: PERU:LIMA: CASTELLANO
EUROPA: ESPAA:MADRID: CASTELLANO
cat paises |grep CASTELLANO | sort t: +0 1 +1| cut d: -fl-3 # Lo mismo que el ejemplo
anterior, pero extrayendo los
tres primeros campos.
AMERICA:ARGENTINA:BUENOS AIRES
AMERICA:MEJICO:MEJICO
AMERICA:PERU:LIMA
EUROPA: ESPAA:MADRID
ls 1/dev | sort | tee datos |grep fd # El comando ls -l proporciona los nombres de los ficheros y
directorios en formato largo del directorio /dev. Esta
informacin es ordenada mediante el comando sort y
recogida en el fichero datos mediante el comando tee . El
resultado final ser la visualizacin de las palabras que
contengan la cadena "fd" del listado ordenado de los
ficheros y directorios de /dev .

Probar esta secuencia de rdenes:


ls -R .. > lfich Lista recursivamente el directorio padre y lo almacena en el
archivo lfich.
sort lfich | more Ordena el fichero de manera ascendente

Ordena de manera unica el fichero lfich es decir quita los


sort -u lfich | more caracteres repetidos y pagina el resultado al mostrarlo en pantalla

sort u lfich >ordfich Mismo que el anterior pero el resultado lo sobrescribe en orfich

Con sort quita los caracteres repetidos y con grep busca en el


sort -u lfich | grep -v "\." | more fichero \. Y al ser v imprimir los caracteres distintos a . El
resultado ser paginado en pantalla

Ordena el resultado de manera inversa y quita del archivo los


" caracteres . Y las lneas que empiecen por T
sort -r lfich | grep -v "\." | grep -v ^t" | more

grep -v "\." ordfich | grep v "^t" | more


Hace lo mismo que antes pero sobre el archivo ordfich y sin que
se ordene previamente

grep -v "\." ordfich |grep -v "^t" > patron


Hace lo mismo de antes pero el resultado lo sobrescribe en el
archivo patrn si no existe lo crea

Ordenara el archivo lo mostrara en pantalla paginado


sort patron | more

Buscar en el mismo directorio (para ello se usa el punto)


cualquier archivo que termine en d y por cada resultado ejecutara
find . -name "*d" -exec ls l {} ;> lista el comando ls l y los resultado los meter en el archivo lista y si
no existe lo creara.

Variables de entorno

Las variables de entorno son cadenas de caracteres de la forma NOMBRE=valor, donde nombre
puede ser cualquier cadena de caracteres que no incluya el carcter $ y no tenga espacios en blanco,
y valor, cualquier cadena de caracteres incluyendo espacios. Como ya hemos visto, existen
variables definidas en la conexin, pero durante nuestro trabajo podemos definir ms. Para ver una
lista de todas ellas se utiliza el comando set.
Para definir una variable de entorno se especifica el nombre y el valor, por ejemplo:
MUESTRA="La orquesta de las nubes"
poner el nombre de la variable en maysculas es una costumbre en los ambientes Linux para dis-
tinguirlas de los comandos; una variable con el mismo nombre en minsculas sera otra variable de
entorno distinta.
En el valor hemos puesto comillas dobles (") para acotarlo, porque tenemos espacios en blanco. El
uso de las comillas dobles se explica con detalle ms adelante.
No es necesario declarar el nombre de la variable antes de utilizarla.
Cuando se desea utilizar el valor contenido en una variable, se escribe su nombre comenzando con
un $.
Puede utilizarse la orden echo para visualizar el contenido o valor de una variable de entorno:
echo $MUESTRA
Las variables de entorno pueden utilizarse como nombres o como argumentos de rdenes, tal como
se muestra en este ejemplo:
XYZ="cat fich1" # Se asigna a la variable XYZ la cadena cat fich1.
$XYZ # Mostrara en pantalla el contenido de fich1.
Tambin puede incorporarse la variable de entorno dentro de otra cadena de caracteres:
echo "hola${MUESTRA}hola # Visualizara en pantalla: holaLa orquesta de las nubeshola
Para que el shell distinga la variable $MUESTRA de $MUESTRAhola se ponen las llaves.
Tambin podramos hacerlo:
echo "Actuacin de $MUESTRA en la Luna" # Y el resultado en pantalla sera: Actuacin
de La orquesta de las nubes en la Luna

ENTRECOMILLADOS
En Linux las comillas dobles () las sencillas () el acento grave (`) y la barra invertida (\)
tienen unos significados especiales que se deben entender para no confundir su funcin y efectos.
Las comillas sencillas hacen que lo que se encierra entre ellas no sea interpretado por el shell
(intrprete de comandos). Desactivan el significado especial de los metacaracteres (* ? [ ]) y
caracteres especiales ($ \ > <).
Por ejemplo:
echo $HOME # Saca en pantalla el valor de la variable home, es decir, la trayectoria del
directorio propio del usuario conectado.
Sin embargo,
echo '$HOME' # Visualizar: $HOME. porque el shell no interpreta el signo $.
Las dobles comillas, sin embargo, s permiten la interpretacin de $, acento grave y barra invertida,
pero no la de los metacaracteres.
echo "$HOME es mi directorio # Mostrara en pantalla la siguiente salida:
/usr/profes/ciru es mi directorio
echo "Lista de archivos de mi directorio ls -1 *" # Visualizara en pantalla la cadena: Lista de
archivos de mi directorio ls -1 * (se ve tal
cual el asterisco xk esta evitando su
interpretacin las comillas dobles)
La barra invertida evita la interpretacin del carcter que tiene a continuacin.
echo \$HOME # Visualizara la siguiente salida: $HOME
Porque no interpretara el signo $.
echo lista > total # Redireccionara la cadena lista al fichero total.
echo "lista \> total" # Visualizara en pantalla la cadena. lista > total la barra protege el
carcter mayor para que no este no sea interpretado por el shell
El acento grave permite la ejecucin de una orden, y la salida puede ser asignada a una variable.
echo `pwd` # Visualiza por pantalla el directorio activo.
echo pwd # Muestra en pantalla la cadena pwd.
LNEAS= `cat f* | wc 1` # Asignamos el valor encerrado entre acentos graves a la variable
LNEAS.
echo $LNEAS # Visualizara el nmero de lneas que tienen los ficheros que
empiezan por f.
echo cat f* | wc -1 # Contara solo 1 lnea, porque cat f* lo interpreta como un literal que
solo ocupa una lnea.
echo `cat f* | wc l` # Visualizara el nmero de lneas que tienen los ficheros que
empiezan por
Estas consideraciones sobre los entrecomillados se debern tener muy en cuenta en el captulo de
programacin shell, pero es aconsejable que estn claras para entender conceptos y ejemplos
anteriores.

Ejercicios: Que obtendramos si ejecutamos los siguientes comandos.


1- Echo el prompt es $HOME
Se visualizara el prompt es $HOME

2- Echo El prompt es $HOME


Se visualizara el prompt es $HOME

3- Echo `El prompt es $HOME`


Daria un error
4-grep || datos.txt|sort r >nuevos.dat
Buscara la cadena || en datos.txt y ordenara de forma inversa el contenido y guardara el resultado
en nuevos.dat
5-ls l *.ps|grep mayo
Listara los archivos que terminen en 3 caracteres siendo los dos ltimos ps y luego buscara la
cadena mayo en ellos.
6-cat /etc/group |cut d : f1
Muestra por pantalla el primero campo del archive group usando como caracter delimitador los dos
puntos
7- echo `wc l /etc/passwd`
Ejecuta el comando dentro de los acentos graves y me cuenta el numero de lneas del fichero
passwd
8- GRUPO=`cat /etc/group |grep ^daemon`
Asigna a la variable Grupo el comando entre los acentos graves
9- Cuenta el nmero de archivos
a- Que hay en el directorio /bin
ls -l /bin |wc -l
b- Listar todos los archivos del directorio /etc que empiecen por t en orden inverso
Ls /etc/t* |sort -r
c- Listar del /etc los fichero que empiecen por a, terminen en el nmero 2 y no tengan ms de
5 caracteres.
ls /etc/a2
d- Buscar los fichero de root en el disco duro mostrando el resultado por pantalla.
Find / -user root
e- Listar todos los ficheros del directorio /home mostrando su nmero de inodo
Ls i /home

Anda mungkin juga menyukai