You are on page 1of 34

8.

1 Introducción

Un gran número de los archivos en un sistema de archivos típico son archivos de texto. Los
archivos de texto contienen sólo texto, no hay características de formato que se pueden ver
en un archivo de procesador de textos.

Debido a que hay muchos de estos archivos en un sistema típico de Linux, un gran número
de comandos existen para ayudar a los usuarios manipular archivos de texto. Hay
comandos a tanto ver y modificar estos archivos de varias maneras.

Además, hay funciones disponibles para el shell para controlar la salida de los comandos,
así que en vez de tener la salida se coloca en la ventana de terminal, la salida se puede
redirigir en otro archivo u otro comando. Estas características de redirección de
proporcionar a los usuarios un entorno mucho más flexible y potente para trabajar dentro

8.2 Linux Fundamentos Objetivos del examen

En este capítulo se hará cargo de los temas de los siguientes objetivos del examen Linux
Essentials:

Tema 3: El Poder de la línea de comandos (peso: 10)

3.2 Búsqueda y extraer datos de archivos


Peso: 4
Descripción: Buscar y extraer de los archivos en el directorio principal.

Principales Áreas de Conocimiento:


• Tubos de línea de comandos
• E / S redirección
• POSIX parcial expresiones regulares (., [], *,?)

La siguiente es una lista parcial de los usados archivos, términos y utilidades:


• encontrar
• grep
• menos
• cabeza, cola
• tipo
• corte
• wc

Cosa que es bueno saber:


• POSIX parcial expresiones regulares básicas ([^], ^, $)
• POSIX parcial Extended expresiones regulares (+, (), |)
• xargs
Key Knowledge Areas:

•Command line pipes


•I/O re-direction

•Partial POSIX Regular Expressions (.,[],*,?)

The following is a partial list of the used files, terms, and utilities:

•find

•grep

•less

•head, tail

•sort

•cut

•wc

Thing that are nice to know:

•Partial POSIX Basic Regular Expressions ([^], ^, $)

•Partial POSIX Extended Regular Expressions (+,(),|)

•xargs

8.3 Tuberías de línea de comandos

Capítulos anteriores discutieron cómo utilizar comandos individuales para llevar a cabo
acciones en el sistema operativo, incluyendo cómo crear / mover / eliminar archivos y mover
todo el sistema. Normalmente, cuando un comando tiene salida o genera un error, la salida
se visualiza en la pantalla; sin embargo, esto no tiene por qué ser el caso.

La barra vertical (|) carácter puede ser usado para enviar la salida de un comando a otro. En
lugar de ser impresa a la pantalla, la salida de un comando se convierte en la entrada para
el siguiente comando. Esto puede ser una poderosa herramienta, especialmente cuando se
busca de datos específico; tuberías se utiliza a menudo para refinar los resultados de un
comando inicial.

Los comandos de cabeza y cola se utilizan en muchos ejemplos siguientes para ilustrar el
uso de tuberías. Estos comandos se pueden utilizar para mostrar sólo las primeras o últimas
líneas de un archivo (o, si se utiliza con un tubo, la salida de un comando anterior).

Por defecto los comandos de cabeza y cola mostrarán diez líneas. Por ejemplo, el siguiente
comando mostrará las diez primeras líneas del archivo /etc/sysctl.conf
En el siguiente ejemplo, se mostrarán los últimos diez líneas del archivo

El carácter de canalización permitirá a los usuarios utilizar estos comandos no sólo en los
archivos, pero en la salida de otros comandos. Esto puede ser útil al enumerar un directorio
grande, por ejemplo el directorio / etc
Si nos fijamos en la salida del comando anterior, se dará cuenta de que el primer
nombre de archivo es fstab. Pero hay otros archivos que aparecen "por encima" de
que sólo se pueden ver si el usuario utiliza la barra de desplazamiento. Lo que si
sólo quería hacer una lista de los primeros archivos del directorio / etc?

En lugar de mostrar la salida completa del comando anterior, tubería al comando


head mostrará sólo los primeros diez líneas:

La salida completa del comando ls se pasa al comando de la cabeza por el shell en lugar de
imprimirse a la pantalla. El comando head toma esta salida (de ls) como "datos de entrada"
y la salida de la cabeza y luego se imprime en la pantalla.

Tubos múltiples pueden ser utilizados de forma consecutiva para vincular múltiples
comandos juntos. Si tres comandos se canalizan juntos, la salida del primer comando se
pasa al segundo comando. La salida del segundo comando se pasa entonces a la tercera
comando. La salida de la tercera comando sería entonces ser impreso a la pantalla.

Es importante elegir cuidadosamente el orden en el que se canalizan los comandos, como


el tercer comando sólo verá entrada de la salida de la segunda. Los siguientes ejemplos
ilustran esta usando el comando nl. En el primer ejemplo, el comando nl se utiliza para
numerar las líneas de la salida de un comando anterior:

En el siguiente ejemplo, tenga en cuenta que el comando ls se ejecuta primero y su salida


se envía al comando nl, numerando todas las líneas de la salida del comando ls. A
continuación, el comando de la cola(tail) se ejecuta, se presentan los últimos cinco líneas de
la salida del comando nl:
Comparar el resultado anterior con el siguiente ejemplo

Observe cómo los números de línea son diferentes. ¿Por qué es esto?

En el segundo ejemplo, la salida del comando ls se envía primero a la orden de la


cola que "agarra" sólo los últimos cinco líneas de la salida. A continuación, el
comando tail envía esos cinco líneas al comando nl, qué números les 1-5.

Las tuberías pueden ser de gran alcance, pero es importante tener en cuenta cómo
los comandos son por tubería para asegurarse de que se muestra la salida
deseada.

8.4 E / S redirección

Entrada / Salida (E / S) Input/Output (I/O) de redirección permite que la información de línea


de comandos que se pasa a diferentes corrientes. Antes de discutir la redirección, es
importante entender flujos estándares.

8.4.1 STDIN

De entrada estándar, o STDIN, es información introducida normalmente por el usuario a


través del teclado. Cuando un comando solicita la concha the shell para los datos, la
cáscara proporciona al usuario la capacidad de escribir comandos que, a su vez, se envían
al comando como STDIN.

8.4.2 STDOUT

Salida estándar, o STDOUT, es la salida normal de los comandos. Cuando un comando


funciona correctamente (sin errores), la salida se produce se llama STDOUT. Por defecto,
STDOUT se muestra en la ventana de terminal (pantalla) cuando el comando se ejecuta.
8.4.3 STDERR

Error estándar (o STDERR, son mensajes de error generados por los comandos. Por
defecto, STDERR se muestra en la ventana de terminal (pantalla) cuando el comando se
ejecuta.

E / S(I/O) de redirección permite al usuario redirigir STDIN lo que los datos provienen de un
archivo y STDOUT / STDERR así la salida va a un archivo. Redirección se logra mediante
el uso de los caracteres de flecha: (<) y (>).

8.4.4 Redirigir STDOUT

STDOUT puede ser dirigida a los archivos. Para comenzar, observe la salida del siguiente
comando que muestra a la pantalla

Utilizando el carácter> la salida se puede redirigir a un archivo

Este comando muestra ninguna salida, porque STDOUT fue enviado al archivo
example.txt lugar de la pantalla. Usted puede ver el nuevo archivo con la salida del
comando ls. El archivo recién creado contiene la salida del comando echo cuando el
archivo se ve con el comando cat.

Es importante darse cuenta de que la flecha única se sobreponen a cualquier


contenido de un archivo existente:
Los contenidos originales del archivo han desaparecido, reemplazado con la salida del
nuevo comando echo.

También es posible preservar el contenido de un archivo existente añadiendo a la misma.


Utilice "flecha doble" (>>) para anexar a un archivo en lugar de sobreescribirlo:

En lugar de ser sobrescrito, se añade la salida del comando echo más reciente al final del
archivo

8.4.5 Redirigir STDERR

STDERR se puede redirigir de forma similar a STDOUT. STDOUT también se


conoce como corriente (channel) # 1. STDERR se asigna arroyo # 2.

Al utilizar las flechas para redirigir, (stream ) arroyo # 1 se asume a menos que se
especifique otro arroyo. Por lo tanto, la corriente # 2 se debe especificar al redirigir
STDERR.

Para demostrar redirigir STDERR, primero observe el siguiente comando que


producirá un error porque el directorio especificado no existe

Tenga en cuenta que no hay nada en el ejemplo anterior que implica que la salida es
STDERR. La salida es claramente un mensaje de error, pero ¿cómo puedes decir que está
siendo enviado a STDERR? Una forma fácil de determinar esto es redirigir STDOUT
En el ejemplo anterior, STDOUT se redirige al archivo output.txt. Así, la salida que se
muestra no se puede stdout porque habría sido colocado en el archivo output.txt. Debido a
que todas las salidas de comandos va bien a STDOUT o STDERR, la salida que se muestra
más arriba debe ser STDERR.

La salida STDERR de un comando puede ser enviado a un archivo

En el comando anterior, el 2> indica que todos los mensajes de error deben ser enviadas a
la error.txt archivo.

8.4.6 Redireccionamiento de múltiples fuentes

Es posible dirigir tanto el stdout y stderr de un comando al mismo tiempo. El siguiente


comando producirá tanto STDOUT y STDERR porque uno de los directorios especificados
existe y el otro no:

Si sólo el STDOUT se envía a un archivo, STDERR todavía será impreso a la pantalla

Si sólo el STDERR se envía a un archivo, STDOUT todavía será impreso a la pantalla


(Both) tanto STDOUT y STDERR se pueden enviar a un archivo utilizando &>, un conjunto
de caracteres que significa "both 1> y 2>":

Tenga en cuenta que cuando se utiliza &>, la salida aparece en el archivo con todos los
mensajes STDERR en la parte superior y todos los mensajes STDOUT abajo todos los
mensajes STDERR
Si usted no quiere STDERR y STDOUT a ambos van al mismo archivo, pueden ser
redirigidos a diferentes archivos utilizando tanto(both)> and 2>. Por ejemplo:

La orden de los (streams)arroyos se especifican en no importa

8.4.7 Redirigir STDIN

El concepto de la reorientación de STDIN es difícil porque es más difícil de entender por qué
usted quiere redirigir STDIN. Con STDOUT y STDERR, la respuesta a por qué es bastante
fácil: porque a veces desea almacenar el resultado en un archivo para su uso futuro.

La mayoría de los usuarios de Linux terminan redirigir STDOUT rutinariamente, STDERR en


alguna ocasión y STDIN ... bueno, muy raramente. Hay muy pocos comandos que le
obliguen a redirigir STDIN ya que con la mayoría de los comandos si quieres leer datos de
un archivo en un comando, sólo puede especificar el nombre de archivo como argumento
para el comando. El comando a continuación, busque en el archivo.

Para algunos comandos, si no se especifica un nombre de archivo como argumento, van a


volver a usar STDIN para obtener datos. Por ejemplo, considere el comando cat siguiente:
En el ejemplo anterior, el comando cat no se proporcionó un nombre de archivo
como argumento. Por lo tanto, pidió los datos para mostrar en la pantalla de STDIN.
El usuario escribió "hello" y luego el comando cat visualizará "hello" en la pantalla.
Tal vez esto es útil para personas solas, pero no es realmente un buen uso del
comando cat.

Sin embargo, tal vez si la salida del comando cat se redirige a un archivo, a
continuación, este método podría ser utilizado para añadir a un archivo existente o
para colocar texto en un nuevo archivo:

Aunque el ejemplo anterior demuestra otra ventaja de redirigir STDOUT, no se ocupa de


qué o cómo STDIN se puede dirigir. Para entender esto, primero considerar un nuevo
comando llamado tr. Este comando se llevará un conjunto de caracteres y traducirlas a otro
conjunto de caracteres.

Por ejemplo, suponga que desea capitalizar una línea de texto. Usted podría utilizar el
comando tr de la siguiente manera
El comando tr tomó el STDIN desde el teclado ("ver cómo funciona esto") y se convierte
todas las letras minúsculas antes de enviar STDOUT a la pantalla ("Watch cómo funciona
esto").

Parecería que un mejor uso del comando tr sería realizar la traducción de un archivo, no la
entrada de teclado. Sin embargo, el comando tr no admite argumentos de nombre de
archivo

Puede, sin embargo, decir la cáscara para obtener STDIN desde un archivo en lugar de
desde el teclado usando el carácter <

Esto es bastante raro porque la mayoría de los comandos aceptan nombres de


ficheros como argumentos. Pero, para aquellos que no lo hacen, este método podría
ser utilizado para que el shell leer desde el archivo en lugar de confiar en el
comando de tener esta habilidad.

Una última nota: En la mayoría de los casos es probable que desee tomar la salida
resultante y colocarlo de nuevo en otro archivo:
8.5 Búsqueda de archivos mediante el comando Buscar

Uno de los retos a los que se enfrentan los usuarios cuando se trabaja con el sistema de
archivos, es tratar de recordar la ubicación donde se almacenan los archivos. Hay miles de
archivos y cientos de directorios en un sistema de ficheros Linux típico, así que recordar
dónde se encuentran estos archivos pueden plantear desafíos.

Tenga en cuenta que la mayoría de los archivos que va a trabajar son los que usted cree.
Como resultado, a menudo se le busca en su directorio personal propio para encontrar
archivos. Sin embargo, a veces puede que tenga que buscar en otros lugares en el sistema
de archivos para encontrar archivos creados por otros usuarios.

El comando find es una herramienta muy poderosa que puede utilizar para buscar archivos
en el sistema de archivos. Este comando puede buscar archivos por nombre, incluyendo el
uso de caracteres comodín para cuando usted no está seguro del nombre de archivo
exacto. Además, puede buscar archivos basándose en los metadatos de archivos, tales
como tipo de archivo, tamaño del archivo y la propiedad del archivo.

La sintaxis del comando find es

find [starting directory] [search option] [ search criteria] [result


option]
Una descripción de todos estos componentes

componente

descripción

[directorio inicial] Aquí es donde el usuario especifica dónde empezar la búsqueda.


El comando find buscará este directorio y todos sus subdirectorios. Si no se
proporciona ningún directorio de partida, entonces el directorio actual se utiliza para
el punto de partida.
[opción de búsqueda] Aquí es donde el usuario especifica una opción para
determinar qué tipo de metadatos para buscar; hay opciones para el nombre del
archivo, tamaño del archivo y muchos otros atributos de archivo.
[búsqueda] Este es un argumento que se complementa con la opción de búsqueda.
Por ejemplo, si el usuario utiliza la opción de buscar un nombre de archivo, los
criterios de búsqueda sería el nombre de archivo.
[opción resultado] Esta opción se utiliza para especificar la acción que se debe
tomar una vez que se encuentra el archivo. Si no se proporciona ninguna opción, el
nombre del archivo será impreso en STDOUT.

Component Description

This is where the user specifies where to start searching. The find command
[starting directory]will search this directory and all of its subdirectories. If no starting directory is
provided, then the current directory is used for the starting point.

This is where the user specifies an option to determine what sort of metadata
[search option] to search for; there are options for file name, file size and many other file
attributes.

This is an argument that compliments the search option. For example, if the
[search criteria] user uses the option to search for a file name, the search criteria would be the
filename.

This option is used to specify what action should be taken once the file is
[result option]
found. If no option is provided, the file name will be printed to STDOUT.
8.5.1 Búsqueda por Nombre de archivo

Para buscar un archivo por su nombre, utilice la opción -name al comando find:

Tenga en cuenta que se encontraron dos archivos: / etc / hosts y / etc / avahi / hosts. El
resto de la producción era mensajes STDERR porque el usuario que ejecutó el comando no
tiene permiso para acceder a determinados subdirectorios.

Recuerda que puedes redirigir STDERR a un archivo para que usted no necesita ver estos
mensajes de error en la pantalla:

Mientras que la salida es más fácil de leer, realmente no hay propósito de almacenar los
mensajes de error en el archivo error.txt. Los desarrolladores de Linux se dieron cuenta de
que sería bueno tener un "junk file archivo de basura" para enviar datos innecesarios;
cualquier archivo que se envía al archivo / dev / null se descarta
8.5.2 Viendo Detalle Archivo

Puede ser útil para obtener detalles de los archivos cuando se utiliza el comando find,
porque sólo el propio nombre de archivo podría no ser suficiente información para que usted
encuentre el archivo correcto.

Por ejemplo, puede haber siete archivos hosts nombrados; si supieras que el archivo de
host que necesitabas había sido modificado recientemente, la fecha y hora de modificación
del archivo sería útil para ver.

Para ver estos detalles de archivo, utilice la opción -ls al comando find

Las dos primeras columnas de la salida anterior son el número de inodo del archivo
y el número de bloques que el archivo se utiliza para el almacenamiento. Ambos son
más allá del alcance del tema que nos ocupa. El resto de las columnas son de
salida típica de ls -l comando: tipo de archivo, permisos, recuento de enlace duro,
dueño de usuario, propietario del grupo, el tamaño de archivo, fecha y hora de
modificación y el nombre del archivo

8.5.3 Búsqueda de archivos por tamaño

Una de las muchas opciones de búsqueda útiles es la opción que le permite buscar
archivos por tamaño. La opción -size le permite buscar archivos que son ya sea
mayor o más pequeño que un tamaño especificado, así como la búsqueda de un
tamaño exacto del archivo.

Cuando se especifica un tamaño de archivo, se puede dar el tamaño en bytes (c),


kilobytes (KB), megabytes (M) o gigabytes (G). Por ejemplo, lo siguiente será buscar
archivos en la estructura del directorio / etc que son exactamente 10 bytes grande:
Si desea buscar archivos que son más grandes que un tamaño especificado, se coloca un
carácter + antes de la (size)talla. Por ejemplo, el siguiente va a buscar todos los archivos en
la estructura del directorio usr / que son más de 100 megabytes de (size)tamaño:

Para buscar archivos que son más pequeños que un (size)tamaño especificado, coloque
una - carácter antes del (size)tamaño del archivo.
8.5.4 adicional útil Opciones de Búsqueda

Hay muchas opciones de búsqueda. La siguiente tabla muestra algunas de estas opciones:

Opción

Significado

-maxdepth Permite al usuario especificar qué tan profundo en la estructura de directorios de


búsqueda. Por ejemplo, -maxdepth 1 significaría solamente buscar el directorio especificado
y sus subdirectorios inmediatos.
-Grupo devoluciones ficheros titularidad de un grupo especificado. Por ejemplo, la nómina -
group volvería ficheros titularidad de grupo de nómina.
-iname devoluciones archivos que coinciden con el nombre de archivo especificado, pero a
diferencia de -name, -iname es sensible a mayúsculas. Por ejemplo, los anfitriones -iname
se correspondería archivos llamados ejércitos, los ejércitos, HOSTS, etc.
-mmin Devuelve los archivos que fueron modificados en base a la hora de modificación en
cuestión de minutos. Por ejemplo, -mmin 10 coincidiría archivos que fueron modificados
hace 10 minutos.
-tipo devoluciones archivos que coinciden con el tipo de archivo. Por ejemplo, de tipo f
volvería archivos que son archivos regulares.
-user devoluciones ficheros titularidad de un usuario especificado. Por ejemplo, -user bob
volvería archivos propiedad del usuario bob.

Option Meaning

Allows the user to specify how deep in the directory structure to search. For example, -
-
maxdepth 1 would mean only search the specified directory and its immediate
maxdepth
subdirectories.

Returns files owned by a specified group. For example, -group payroll would return
-group
files owned by the payroll group.

Returns files that match specified filename, but unlike -name, -iname is case
-iname insensitive. For example, -iname hosts would match files named hosts, Hosts, HOSTS,
etc.

Returns files that were modified based on modification time in minutes. For example, -
-mmin
mmin 10 would match files that were modified 10 minutes ago.

Returns files that match file type. For example, -type f would return files that are
-type
regular files.

Returns files owned by a specified user. For example, -user bob would return files
-user
owned by the bob user.

8.5.5 Uso de Múltiples opciones

Si utiliza múltiples opciones, actúan como una "and", es decir, para que se produzca un
partido, todos los criterios deben coincidir, no sólo uno. Por ejemplo, el siguiente comando
mostrará todos los archivos en la estructura del directorio / etc que son 10 bytes de tamaño
y son archivos planos

8.6 Visualización de archivos con el comando less

Mientras ve pequeños archivos con el comando cat no plantea ningún problema, no es una
opción ideal para archivos de gran tamaño. El comando cat no proporciona ninguna manera
de hacer una pausa con facilidad y reiniciar la pantalla, por lo que todo el contenido del
archivo se vierten a la pantalla.

Para archivos más grandes, usted tendrá que usar un comando pager para ver el contenido.
Comandos Pager mostrará una página de datos a la vez, lo que le permite moverse hacia
adelante y hacia atrás en el archivo mediante el uso de teclas de movimiento.

Hay dos comandos localizador de uso común:


• El comando less: Este comando proporciona una capacidad de paginación muy avanzada.
Normalmente es el paginador predeterminado utilizado por comandos como el comando
man.
• El comando more: Este comando ha existido desde los primeros días de UNIX. A pesar de
que tiene menos funciones que el comando less, tiene una ventaja importante: El comando
less no siempre se incluye con todas las distribuciones de Linux (y en algunas
distribuciones, no se instala por defecto). El comando more siempre está disponible.

Cuando utiliza los comandos más o menos, que le permitirá "moverse" de un documento
mediante el uso de comandos de pulsaciones de teclas. Debido a que los desarrolladores
del comando less basan el comando de la funcionalidad del comando more, todos los
comandos de pulsaciones de teclas disponibles en el comando more también trabajan en el
comando less.

A los efectos de este manual, la atención se centrará en el comando más avanzado


(menos). El comando more sigue siendo útil para recordar para los momentos en los menos
comando no está disponible. Recuerde que la mayoría de los comandos de pulsaciones de
teclas proporcionan trabajo para ambos comandos.

8.6.1 Pantalla de Ayuda en menos

Cuando ve un archivo con el comando less, puede utilizar la tecla h para mostrar una
pantalla de ayuda. La pantalla de ayuda le permite ver qué otros comandos están
disponibles. En el siguiente ejemplo, / palabras de comando se ejecuta la(less
/usr/share/dict/words) menos / usr / share / dict. Una vez que aparezca el documento, se ha
pulsado la tecla h, mostrando la pantalla de ayuda
8.6.2 Comandos menos movimiento

Hay muchos comandos de movimiento para los menos comandos, cada uno con varias
teclas o combinaciones de teclas posibles. Si bien esto puede parecer intimidante, recuerde
que no es necesario memorizar todos estos comandos de movimiento; siempre se puede
utilizar la tecla h cada vez que usted necesita para obtener ayuda.

El primer grupo de comandos de movimiento que es posible que desee centrarse en son los
que se utilizan con mayor frecuencia. Para que esto sea aún más fácil de aprender, las
teclas que son idénticos en más y menos se resumirán. De esta manera, usted aprenderá
cómo moverse en (more)más y (less)menos al mismo tiempo:

movimiento

llave

Ventana Barra espaciadora hacia adelante


Ventana hacia atrás b
Línea adelante Ingrese
Salir q
Ayuda h

Cuando simplemente usando (less)menos como un buscapersonas, la forma más fácil para
avanzar a la página siguiente es presionar la barra espaciadora.

Movement Key

Window forward Spacebar

Window backward b

Line forward Enter

Exit q

Help h

8.6.3 Comandos menos Searching

Hay dos maneras de buscar en el comando less: usted puede buscar hacia delante o hacia
atrás desde su posición actual utilizando patrones llamados expresiones regulares. Más
detalles sobre las expresiones regulares se proporcionan más adelante en este capítulo.

Para iniciar una búsqueda de mirar hacia adelante desde su posición actual, utilice la tecla /.
A continuación, escriba el texto o el patrón para que coincida y pulse la tecla Enter.

Si un partido se puede encontrar, a continuación, el cursor se moverá en el documento para


el partido. Por ejemplo, en el siguiente gráfico la "rana" expresión fue buscado en el archivo
/ usr / share / dict / words
Tenga en cuenta que "(frog)la rana" no tiene por qué ser una palabra por sí misma. Observe
también que mientras que los menos comando que llevó al primer partido de la posición
actual, se pusieron de relieve todos los partidos.

Si no hay coincidencias hacia adelante desde su posición actual se pueden encontrar, a


continuación, la última línea de la pantalla informará "Patrón no encontrado":

Para iniciar una búsqueda para buscar hacia atrás desde su posición actual, pulse la tecla?
clave, a continuación, escriba el texto o el patrón para que coincida y pulse la tecla Enter. El
cursor se moverá hacia atrás para el primer partido que puede encontrar o informar de que
el patrón no puede ser encontrado.

Si más de un partido se puede encontrar una búsqueda, a continuación, utilizando la tecla n


le permitirá pasar al siguiente partido y el uso de la tecla N le permitirá ir a un partido
anterior.

8.7 Revisando los Comandos de cabeza y cola

Recordemos que los comandos de (head and tail )cabeza y cola se utilizan para filtrar los
archivos para mostrar un número limitado de líneas. Si desea ver un selecto número de
líneas desde el principio del archivo, se utiliza el comando (head)cabeza y si desea ver un
selecto número de líneas en la parte inferior de un archivo, a continuación, utiliza el
comando de la (tail)cola.

Por defecto, ambos comandos muestran diez líneas del archivo. La siguiente tabla
proporciona algunos ejemplos
Ejemplo del comando

Explicación de texto visualizado

cabeza / etc / passwd primeras diez líneas de / etc / passwd


cabeza -3 / etc / group Primero tres líneas de / etc / group
cabeza -n 3 / etc / group Primero tres líneas de / etc / group
Ayuda | cabeza Primeros diez líneas de salida entubada desde el comando de ayuda
cola / etc / group Última diez líneas de / etc / group
cola -5 / etc / passwd Últimos cinco líneas de / etc / passwd
tail -n 5 / etc / passwd Últimos cinco líneas de / etc / passwd
ayuda | cola Últimos diez líneas de producción hilo desde el comando de ayuda

Command Example Explanation of Displayed Text

head /etc/passwd First ten lines of /etc/passwd

head -3 /etc/group First three lines of /etc/group

head -n 3 /etc/group First three lines of /etc/group

help | head First ten lines of output piped from the help command

tail /etc/group Last ten lines of /etc/group

tail -5 /etc/passwd Last five lines of /etc/passwd

tail -n 5 /etc/passwd Last five lines of /etc/passwd

help | tail Last ten lines of output piped from the help command

Como se ve en los ejemplos anteriores, los dos comandos de texto de salida desde un
archivo normal o desde la salida de cualquier comando enviado a través de una tubería.
Ambos utilizan la opción -n para indicar el número de líneas en la salida.

8.7.1 Valor Negativo con la opción -n

Tradicionalmente en UNIX, el número de líneas en la salida se especifica como una


opción, ya sea con mando, por lo -3 significaba muestran tres líneas. Para el
comando de la cola, ya sea -3 o -n -3 todavía significa mostrar tres líneas. Sin
embargo, la versión GNU del comando head -n -3 reconoce como mostrar todos
menos los últimos tres líneas, y sin embargo, el comando cabeza todavía reconoce
la opción -3 como mostrar las primeras tres líneas.
8.7.2 Valor Positivo con el comando de la cola

La versión GNU del comando tail permite una variación de cómo especificar el número de
líneas que desea imprimir. Si utiliza la opción -n con un número prefijado por el signo más,
entonces el comando tail reconoce que esto significa para mostrar el contenido a partir de la
línea especificada y continuando todo el camino hasta el final.

Por ejemplo, el siguiente mostrará la línea # 22 hasta el final de la salida del comando nl

8.7.3 A raíz de cambios en un archivo

Puede ver los cambios de archivos en vivo utilizando la opción -f al comando tail. Esto es
útil cuando se desea ver los cambios en un archivo, ya que están sucediendo.

Un buen ejemplo de esto sería cuando se ven los archivos de registro como administrador
del sistema. Los archivos de registro se pueden utilizar para solucionar problemas y
administradores a menudo verlos "interactiva" con el comando de la (tail)cola, ya que están
realizando los comandos que están tratando de solucionar en una ventana separada.

Por ejemplo, si usted fuera a iniciar la sesión como usuario root, puede solucionar
problemas con el servidor de correo electrónico mediante la visualización de los cambios en
vivo a su archivo de registro con el siguiente comando: /var/log/mail.log tail –f
tail -f /var/log/mail.log

8.8 Clasificación de los archivos o de entrada

El comando sort se puede utilizar para reorganizar las líneas de archivos o de entrada, ya
sea en el diccionario o el orden numérico basado en el contenido de uno o más campos.
Los campos que están determinados por un separador de campos contenidos en cada
línea, que por defecto es el espacio en blanco (espacios y tabulaciones).

El siguiente ejemplo crea un archivo pequeño, con el comando de cabeza para agarrar las
primeras 5 líneas del archivo / etc / passwd y enviar el resultado a un archivo llamado
(mypasswd) miclave.
Ahora vamos a ordenar el archivo miclave(mypasswd)

8.8.1 Campos y Opciones de ordenación

En el caso de que el archivo o de entrada pueden estar separados por otro delimitador
como una coma o dos puntos, la opción -t permitirá que se especifique otra separador de
campo. Para especificar campos para ordenar por, utilice la opción -k con un argumento
para indicar el número de campo (empezando por 1 para el primer campo).

Las otras opciones de uso común para el comando (sort)tipo son la -n para realizar una
ordenación numérica y -R para llevar a cabo una (sort)especie inversa.

En el siguiente ejemplo, la opción -t se utiliza para campos separados por un carácter de


dos puntos y realiza una especie numérico utilizando el tercer campo de cada línea

Tenga en cuenta que la opción -r podría haber sido utilizado para invertir la (sort)especie,
por lo que los números más altos en el tercer campo aparece en la parte superior de la
salida
Por último, es posible que desee llevar a cabo las clases más complejas, tales como (sort
by ordenar por) un campo primario y luego por un campo secundario. Por ejemplo,
considere los siguientes datos

bob:smith:23
nick:jones:56

sue:smith:67

Es posible que desee (sort)ordenar primero por el apellido (campo # 2) y luego nombre
(campo # 1) y luego por la edad (campo # 3). Esto se puede hacer con el comando
siguiente

sort -t: -k2 -k1 -k3n filename

8.9 Visualización de Estadísticas archivo con el comando wc

El comando wc permite hasta tres estadísticas que se imprimirán para cada archivo
proporcionado, así como el total de estas estadísticas si se proporciona más de un nombre
de archivo. Por defecto, el comando wc proporciona el número de líneas, palabras y bytes
(1 byte = 1 carácter en un archivo de texto):

El ejemplo anterior muestra la salida de la ejecución: wc / etc / passwd / etc /


passwd-. La salida tiene cuatro columnas: número de líneas en el archivo, el número
de palabras en el archivo, el número de bytes en el archivo y el nombre del archivo
o "total".

Si usted está interesado en ver sólo estadísticas específicas, entonces usted puede
utilizar -l para mostrar sólo el número de líneas, -w para mostrar sólo el número de
palabras y -c para mostrar sólo el número de bytes.

El comando wc puede ser útil para contar el número de líneas de salida por algún
otro comando a través de una tubería. Por ejemplo, si usted quería saber el número
total de archivos en el directorio / etc, podría ejecutar ls / etc | wc -l:

8.10 Uso del comando de corte a Filtro Contenido del archivo

El comando de (cut)corte puede extraer columnas de texto de un archivo o entrada


estándar. Un uso principal de la orden de corte es para trabajar con archivos de
base de datos delimitados. Estos archivos son muy comunes en los sistemas Linux.

Por defecto, se considera que su entrada al estar separado por el carácter Tab, pero
la opción -d puede especificar delimitadores alternativos, como el colon o en coma.

El uso de la opción -f, puede especificar qué campos mostrar, ya sea como un rango
con guión o una lista separada por comas.

En el siguiente ejemplo, la primera, quinta, se muestran seis y siete campos de


archivo de base de (mypasswd)miclave:

Usando el comando de (cut)corte, también puede extraer columnas de texto en base a la


posición del carácter con la opción -c. Esto puede ser útil para la extracción de los campos
de los archivos de base de datos de ancho fijo. Por ejemplo, el siguiente mostrará sólo el
tipo de archivo (carácter # 1), permisos (caracteres # 2-10) y el nombre de archivo
(caracteres # 50 +) de la salida del comando ls -l:
8.11 Uso del comando grep para filtrar el contenido del archivo

El comando grep se puede utilizar para filtrar líneas en un archivo o la salida de otro
comando basado en la coincidencia de un patrón. Ese patrón puede ser tan simple
como el texto exacto que desea igualar o puede ser mucho más avanzada mediante
el uso de expresiones regulares (discutidos más adelante en este capítulo).

Por ejemplo, es posible que desee encontrar todos los usuarios que pueden iniciar
sesión en el sistema con el shell bash, por lo que podría utilizar el comando grep
para filtrar las líneas del archivo / etc / passwd para las líneas que contienen los
caracteres "(bash)golpe":

Para que sea más fácil ver lo que exactamente se corresponde, utilice la opción --color.
Esta opción hará hincapié en los elementos coincidentes en rojo

En algunos casos, no se preocupan por las líneas específicas que coinciden con el patrón,
sino que el número de líneas que coincida con el patrón. Con la opción -c, puede obtener un
recuento de cuántas líneas que coincidan con
Cuando usted está viendo la salida del comando grep, puede ser difícil determinar los
números de línea originales. Esta información puede ser útil cuando se va de nuevo en el
archivo (tal vez para editar el archivo) como se puede utilizar esta información para
encontrar rápidamente una de las líneas coincidentes.

La opción -n para el comando grep mostrará los números de línea originales

Algunas opciones adicionales grep útil:

Ejemplos

salida

grep -v nologin Todas las líneas que no contengan "nologin" en el archivo / etc / etc /
passwd / passwd
linux grep -l / etc / * Lista de los archivos en el directorio / etc con "linux"
grep -i linux / etc / * Listado de líneas de los archivos en el directorio / etc que contengan
cualquier caso (capital o inferior) del patrón de carácter "linux"
grep -w linux / etc / * Listado de líneas de los archivos en el directorio / etc que contienen el
patrón de la palabra "linux"

Examples Output

grep -v nologin
All lines not containing "nologin" in the /etc/passwd file
/etc/passwd

grep -l linux /etc/* List of files in the /etc directory containing "linux"

Listing of lines from files in the /etc directory containing any case (capital or
grep -i linux /etc/*
lower) of the character pattern "linux"

Listing of lines from files in the /etc directory containing the word pattern
grep -w linux /etc/*
"linux"

8,12 expresiones regulares básicas


Una expresión regular es una colección de personajes "normales" y "especiales" que se
utilizan para que coincida con los patrones simples o complejos. Caracteres normales son
caracteres alfanuméricos que se ajustan a sí mismos. Por ejemplo, una "a" coincidiría con
una "a".

Algunos caracteres tienen significados especiales cuando se utiliza dentro de los patrones
de comandos como el comando grep. Hay dos expresiones básicas regulares (disponibles
para una amplia variedad de comandos de Linux) y las expresiones regulares extendidas
(disponibles al más avanzado comandos Linux). Expresiones regulares básicas son las
siguientes:

Expresión Regular

Partidos

. Cualquier carácter individual


[] Una lista o rango de caracteres para que coincida con uno de los personajes, a menos
que el primer carácter es el símbolo de intercalación "^", y entonces significa cualquier
carácter no en la lista
* Carácter anterior repetido cero o más veces
^ Siguiente texto debe aparecer al principio de la línea
$ Texto precedente debe aparecer al final de la línea
Regular
Matches
Expression

. Any single character

A list or range of characters to match one character, unless the first character is
[]
the caret "^", and then it means any character not in the list

* Previous character repeated zero or more times

^ Following text must appear at beginning of line

$ Preceding text must appear at the end of the line

El comando grep es sólo uno de muchos comandos que admiten expresiones regulares.
Algunos otros comandos son los más y menos comandos. Si bien algunas de las
expresiones regulares son innecesariamente cita con comillas simples, es una buena
práctica utilizar comillas simples alrededor de sus expresiones regulares para evitar que la
cáscara de tratar de interpretar el significado especial de ellos

8.12.1 expresiones regulares básicas - los. personaje

En el siguiente ejemplo, un simple archivo se creó por primera vez el uso de la redirección.
A continuación, el comando grep se utiliza para mostrar una sencilla coincidencia de patrón
En el ejemplo anterior, se puede ver que el patrón "a .." igualada "abc". El primero. carácter
coincidía con la "b" y el segundo juego con el "c".

En el siguiente ejemplo, el "a..c" patrón no coincidirá con cualquier cosa, por lo que el
comando grep no lo hará producto cualquier salida. Para el partido tenga éxito, no tendría
que ser dos caracteres entre la "a" y "c":

8.12.2 expresiones regulares básicas - los [] Personajes

Si utiliza el. carácter, entonces cualquier carácter posible podría igualar. En algunos
casos se desea especificar exactamente qué caracteres desea hacer coincidir. Por
ejemplo, tal vez lo que desea es que coincida con un carácter alfabético en
minúscula o un carácter de número. Para ello, puede utilizar los [] caracteres de
expresiones regulares y especificar los caracteres válidos dentro de los []
caracteres.

Por ejemplo, el siguiente comando coincide con dos caracteres, el primero es ya sea
una "a" o "b", mientras que la segunda es o bien una "a", "b", "c" o "d":

Tenga en cuenta que usted puede o lista a cabo cada personaje sea posible ([abcd]) o
proporcionar un rango ([a-d]), siempre y cuando el rango es en el orden correcto. Por
ejemplo, [d-a] sería no funciona porque no es un rango válido
La gama se especifica mediante un estándar llamado la tabla ASCII. Esta tabla es una
colección de todos los caracteres imprimibles en un orden específico. Usted puede ver la
tabla ASCII con el comando man ascii. Un pequeño ejemplo

Desde "a" tiene un valor menor numérico (141) y luego "d" (144), el anuncio gama
incluye todos los caracteres de la "a" a "d".

¿Qué pasa si usted desea hacer coincidir un personaje que puede ser otra cosa que
una "x", "y" o "z"? Usted no quiere tener que proporcionar un [] conjunto con todos
los personajes, excepto "x", "y" o "z".

Para indicar que desea para que coincida con un carácter que no es uno de los
personajes mencionados, inicie su [] ajustado con un ^ símbolo. Por ejemplo, el
siguiente demostrará a juego un patrón que incluye un carácter que no es una "a",
"b" o "c", seguido de una "d":

8.12.3 expresiones regulares básicas - el carácter *

El carácter * se puede utilizar para que coincida con "cero o más del carácter anterior". Por
ejemplo, el siguiente coincidirá con cero o más caracteres "d":

8.12.4 expresiones regulares básicas - el ^ y $ Personajes

Al realizar una coincidencia de patrón, el partido podría ocurrir en cualquier lugar en la línea.
Es posible que desee especificar que el partido se produce al principio de la línea o el final
de la línea. Para hacer coincidir al comienzo de la línea, comenzar el patrón con un ^
símbolo.

En el siguiente ejemplo, se añade otra línea al archivo example.txt para demostrar el uso del
símbolo ^:
Tenga en cuenta que en la primera salida de grep, ambas líneas coinciden, ya que ambos
contienen la letra "a". En la segunda salida de grep, sólo la línea que comienza con la letra
"a" emparejado.

Con el fin de especificar el partido se produce al final de la línea, terminar el patrón con el
carácter $. Por ejemplo, para encontrar solamente líneas que terminan con la letra "c":

8.12.5 expresiones regulares básicas - el carácter \

En algunos casos es posible que desee para que coincida con un personaje que pasa a ser
un carácter especial de expresiones regulares. Por ejemplo, considere lo siguiente:

En la salida del comando grep arriba, verás que cada línea coincide porque usted está
buscando un carácter 'c' seguida de cero o más caracteres 'd' ". Si quiere buscar una *
carácter real, coloque una \ carácter antes del carácter *:

8.13 extendidas expresiones regulares

El uso de expresiones regulares extendidas a menudo requiere una opción especial se


proporcionará al comando para reconocerlos. Históricamente, hay un comando llamado
egrep, que es similar a grep, pero es capaz de comprender su uso. Ahora, el comando
egrep está en desuso en favor del uso de grep con la opción -E.

Las siguientes expresiones regulares son considerados "extendida":

RE

significado

? Coincide con el carácter anterior cero o una vez, por lo que es un carácter opcional
+ Coincide con el carácter anterior repetido una o más veces
| La alternancia o como un operador lógico OR

Algunas expresiones regulares extendidas ejemplos:

comando

significado

partidos

grep -E 'colou? r' 2.txt 'colo' Partido siguiente por cero o uno 'u' color de los caracteres de
color
grep -E 'd +' 2.txt Coincidir uno o más caracteres 'd' d dd ddd dddd
"gris | gris" grep -E 2.txt coincidir ya sea "gris" o "gris" gris

RE Meaning

? Matches previous character zero or one time, so it is an optional character

+ Matches previous character repeated one or more times

| Alternation or like a logical or operator

Some extended regular expressions examples:


Command Meaning Matches

grep -E 'colou?r' 2.txt Match 'colo' following by zero or one 'u' character color colour

grep -E 'd+' 2.txt Match one or more 'd' characters d dd ddd dddd

grep -E 'gray|grey' 2.txt Match either 'gray' or 'grey' gray grey

8.14 xargs Comando

El comando xargs se utiliza para construir y ejecutar líneas de comandos desde la entrada
estándar. Este comando es muy útil cuando se necesita para ejecutar un comando con una
muy larga lista de argumentos, que en algunos casos puede resultar en un error si la lista de
argumentos es demasiado largo.

El comando xargs -0 tiene una opción que deshabilita la cadena de fin de archivo, lo que
permite la utilización de argumentos que contienen espacios, comillas o barras invertidas.

El comando xargs es útil para permitir la ejecución de comandos de manera más eficiente.
Su objetivo es la construcción de la línea de comandos de un comando para ejecutar el
menor número de veces posible con tantos argumentos como sea posible, en lugar de
ejecutar el comando varias veces con un argumento cada vez.

Los xargs comando funciones mediante la ruptura de la lista de argumentos en sublistas y


ejecutar el comando con cada sublista. El número de argumentos en cada sublista no
superará el número máximo de argments para el comando que se está ejecutando y por lo
tanto evita una "Lista de argumentos demasiado tiempo" error.

El siguiente ejemplo muestra un escenario en comandar el xargs permite a muchos archivos


a eliminar, en el uso de un comodín normal (glob) Carácter fracasó:

You might also like