- Aprender
- Informática
- TI, redes y nube
- Introducción a Linux
- Tuberías y redirección en Linux
Tuberías y redirección en Linux: procesamiento de texto
PrincipianteUnidad 3 de 7 del curso Curso de Introducción a Linux
Lo que aprenderás
- Muestra archivos cortos completos, recorre archivos largos por pantallas y muestra solo las primeras o las últimas líneas de un archivo.
- Muestra archivos y recórrelos por pantallas con cat y lessImprime archivos cortos con cat, lee archivos largos pantalla a pantalla con less y desplázate y busca dentro de less.
- Muestra las primeras o las últimas líneas con head y tailUtiliza head y tail para mostrar el principio o el final de un archivo, omitir una línea de encabezado, seleccionar un rango de líneas y seguir un archivo de registro que crece.
- Muestra archivos y recórrelos por pantallas con cat y less
- Explica los tres flujos estándar de un comando y redirige la entrada, la salida y los mensajes de error hacia archivos y desde ellos.
- Comprende la entrada estándar, la salida estándar y la salida de error estándarDescribe los tres flujos estándar, por qué la salida y los errores están separados y cómo un comando puede leer su entrada de un archivo en lugar del teclado.
- Redirige la salida y los errores a archivosGuarda la salida y los mensajes de error en archivos mediante sobrescritura o adición al final, combina o descarta flujos y evita destruir un archivo al redirigir hacia él.
- Comprende la entrada estándar, la salida estándar y la salida de error estándar
- Conecta pequeños comandos mediante tuberías para contar, ordenar, eliminar duplicados y extraer texto, y responder preguntas sobre datos en una sola línea de comandos.
- Conecta comandos mediante tuberías y teeUtiliza la tubería para pasar la salida de un comando al siguiente, construye y comprueba una cadena paso a paso y guarda una copia durante el proceso con tee.
- Cuenta y ordena líneas y elimina las duplicadasCuenta líneas, palabras y bytes con wc, ordena líneas alfabéticamente, numéricamente o por un campo con sort y elimina o cuenta duplicados con uniq.
- Extrae columnas con cutSelecciona campos de texto delimitado y caracteres de posiciones fijas con cut, y utilízalo en cadenas de comandos para responder preguntas sobre datos.
- Conecta comandos mediante tuberías y tee
- Encuentra líneas en archivos con grep y describe con precisión el texto que buscas mediante expresiones regulares básicas y extendidas.
- Busca en archivos con grep y sus principales opcionesUtiliza grep para imprimir, contar, numerar o invertir las líneas coincidentes, buscar en directorios completos y elegir entre búsquedas por patrón y por texto literal.
- Escribe expresiones regulares básicasConstruye patrones con caracteres literales, el punto, anclas, expresiones entre corchetes y el asterisco, y evita confundirlos con comodines de nombres de archivo.
- Utiliza expresiones regulares extendidas con grep -EUtiliza los operadores ?, +, { }, | y ( ) con grep -E para buscar texto opcional, repetido y alternativo, e imprime solo las partes coincidentes.
- Busca en archivos con grep y sus principales opciones
- Localiza archivos en cualquier lugar del árbol de directorios con find y locate, y ejecuta comandos sobre los archivos encontrados.
- Busca en el árbol de directorios con findUtiliza find con pruebas de nombre, tipo, tamaño y tiempo, combina pruebas y evita los problemas de comillas y permisos que encuentran los principiantes.
- Realiza operaciones sobre los archivos encontrados y utiliza búsquedas más rápidasEjecuta comandos sobre cada archivo que devuelve find, elimina coincidencias de forma segura y reconoce cuándo locate o which es la herramienta más rápida.
- Busca en el árbol de directorios con find
- Abre, modifica, guarda y cierra archivos de texto en los dos editores de terminal presentes en la mayoría de los sistemas Linux: el sencillo nano y el editor modal vi.
- Edita y guarda un archivo en nanoAbre un archivo en nano, escribe y modifica texto, busca y reemplaza, corta y pega líneas, y guarda y sal correctamente.
- Trabaja en los modos de viCambia entre los modos normal, de inserción y de línea de comandos de vi, desplázate y edita con comandos de una tecla, y guarda o sal sin perder el trabajo.
- Edita y guarda un archivo en nano
Guía de estudio de Tuberías y redirección en Linux
1Visualiza archivos desde el terminal
Un archivo de texto puede contener unas pocas notas o miles de ajustes. Elige una vista adecuada para lo que necesitas: el archivo completo, una pantalla por la que puedas desplazarte o una pequeña parte cerca de uno de los extremos. Aprenderás a desplazarte y buscar sin editar, seleccionar un rango exacto de líneas y observar cómo llega texto a un archivo que crece. Estos comandos de visualización también aceptan la salida de otros comandos, por lo que las mismas habilidades te ayudan a inspeccionar un listado largo de directorio o los resultados de una cadena de comandos.
1.1 Muestra archivos y recórrelos por pantallas con cat y less
Los archivos cortos son fáciles de imprimir. Los archivos largos son más fáciles de leer cuando la pantalla espera a que avances. Ni cat ni la vista de lectura normal de less editan el archivo.
Imprime o une texto con cat
cat notes.txt envía el archivo completo a la salida estándar, normalmente tu terminal. El nombre procede de concatenate, concatenar: con varios nombres de archivo, imprime su contenido en el orden indicado. No inserta un encabezado entre archivos.
Supón que a.txt contiene las líneas «a» y «b», y b.txt contiene «c d». Ejecuta:
cat -n a.txt b.txt
Verás tres líneas numeradas. Los números continúan entre los dos archivos; -n numera la salida, no los archivos almacenados. Para guardar el texto unido, utiliza cat a.txt b.txt > ab.txt. El nuevo archivo contiene las tres líneas originales sin numerar. Si incluyeras -n, también se guardarían los números.
Imprimir un archivo grande puede hacer que su principio quede fuera de la pantalla visible. Un paginador te permite controlar la vista. less /etc/services abre un archivo de texto largo y muestra una pantalla de contenido. Puede mostrar la primera pantalla antes de leer el archivo completo, lo que ayuda con archivos grandes.
Desplázate por less
El indicador de comandos está oculto mientras se ejecuta less. El programa espera una tecla de navegación:
| Tecla | Acción |
|---|---|
Barra espaciadora o f | Avanzar una pantalla |
b | Retroceder una pantalla |
Flecha abajo, Enter o j | Bajar una línea |
Flecha arriba o k | Subir una línea |
g / G | Saltar a la primera / última línea |
h / q | Mostrar ayuda / salir |
Las mayúsculas importan: g y G van a extremos opuestos. Para terminar de leer, pulsa q; si esperas un nuevo indicador de comandos sin salir, puede parecer que el paginador está bloqueado.
Busca dentro de la vista
Escribe /, introduce una palabra y pulsa Enter para buscar hacia delante. Por ejemplo, /ssh encuentra el siguiente texto coincidente. Escribe ?ssh y pulsa Enter para buscar hacia atrás. Después, n repite la búsqueda en su dirección actual, mientras que N va en la dirección opuesta. Después de una búsqueda hacia atrás, n continúa hacia atrás.
La búsqueda es una expresión regular. /^# encuentra una línea que empieza por «#» porque ^ marca el principio de una línea. Puedes aprender las reglas de los patrones por separado mientras utilizas palabras sencillas por ahora.
less -N notes.txt añade números de línea a la vista. Para registros anchos, less -S notes.txt mantiene una línea larga en una sola fila de pantalla cortando el extremo derecho visible; las flechas izquierda y derecha permiten desplazarse lateralmente. El texto permanece en el archivo. Sin -S, las líneas largas se ajustan en filas adicionales de pantalla. more es un paginador más antiguo con menos opciones de navegación.
Recorre por pantallas la salida de otro comando
ls -l /usr/bin | less te permite recorrer el listado largo. La tubería entrega el listado al paginador. Para un archivo existente, less notes.txt lo abre directamente; cat notes.txt | less introduce un comando adicional para la misma vista.
Utiliza estos comandos con texto. Imprimir un programa binario como /bin/ls puede mostrar caracteres de control y alterar la pantalla del terminal. Si ocurre, escribe reset y pulsa Enter para restaurarla.
Puntos clave
catimprime los archivos en el orden indicado;-nnumera la salida combinada.lessmuestra texto por pantallas sin editarlo;qvuelve al intérprete de comandos.- En
less,/busca hacia delante,?busca hacia atrás ynrepite la búsqueda en la dirección actual. less -Nmuestra números de línea;less -Spermite desplazarse lateralmente por líneas anchas.
1.2 Muestra las primeras o las últimas líneas con head y tail
Cuando solo necesitas las primeras entradas de un archivo o las más recientes, imprimirlo todo oculta la parte útil. head selecciona el principio y tail selecciona el final. Ambos imprimen 10 líneas de forma predeterminada.
Elige un número de líneas
Si numbers.txt contiene del 1 al 100, un número por línea, head numbers.txt imprime del 1 al 10, mientras que tail numbers.txt imprime del 91 al 100. Utiliza -n para cambiar la cantidad:
head -n 3 numbers.txt
tail -n 3 numbers.txt
El primer comando imprime 1, 2, 3. El segundo imprime 98, 99, 100. Si un archivo tiene menos líneas de las solicitadas, el comando imprime las disponibles.
head -c 5 selecciona cinco bytes en lugar de cinco líneas. Para un texto que empieza por «banana», imprime «banan». Los bytes son unidades de almacenamiento; en texto UTF-8, un carácter puede ocupar más de un byte, por lo que un recuento de bytes no siempre equivale a un recuento de caracteres.
Interpreta correctamente una posición inicial
Un signo más cambia el significado de tail -n. Compara:
| Comando | Significado |
|---|---|
tail -n 2 file | Imprimir las dos últimas líneas |
tail -n +2 file | Imprimir desde la línea 2 hasta el final |
tail -n +2 scores.csv elimina la primera línea, lo que resulta útil cuando esa línea contiene encabezados de columna. No selecciona solo la segunda línea. En el archivo numerado, tail -n +98 numbers.txt imprime del 98 al 100.
head de GNU también acepta un recuento negativo: head -n -97 numbers.txt omite las últimas 97 líneas y deja de la 1 a la 3. El signo pertenece al recuento y forma parte de la instrucción.
Selecciona un rango intermedio
Para mostrar las líneas de la 11 a la 20, conserva primero todo hasta la línea 20. Después conserva las últimas 10 líneas de esa selección:
head -n 20 numbers.txt | tail -n 10
Después de head, los datos van del 1 al 20. Las últimas diez líneas van de la 11 a la 20. Un rango que incluye ambos extremos contiene el número de la línea final menos el de la inicial más una línea; ese uno final cuenta la inclusión de ambos extremos. Usar tail -n 11 también incluiría la línea 10.
Ambos comandos pueden leer de una tubería cuando no se indica ningún archivo de entrada. ls /etc | head -n 5 limita un listado a sus primeros cinco nombres. Con ls -lt | head -n 4, recuerda que la primera línea de salida es la línea «total»: solo la siguen tres entradas.
Observa cómo crece un archivo
tail -f /var/log/app.log muestra primero las últimas líneas, después espera e imprime el texto añadido al archivo. Utilízalo mientras un programa escribe nuevas entradas. Pulsa Ctrl+C para detener el seguimiento y volver al intérprete. La vista que espera es intencionada; es distinta de la salida única y terminada de tail sin opciones.
tail -F también vuelve a intentarlo y sigue el nombre del archivo cuando un registro se elimina y se vuelve a crear durante la rotación. Con varios archivos de entrada, head y tail identifican la salida de cada archivo con un encabezado como «==> fruit.txt <==». Añade -q cuando necesites el texto seleccionado sin esos encabezados.
Puntos clave
headytailmuestran 10 líneas de forma predeterminada;-nestablece un número de líneas.tail -n +Kcomienza en la línea K; no significa las últimas K líneas.- Para un rango que incluye ambos extremos, conserva primero el número de líneas indicado por la línea final y después el número de líneas del rango.
tail -fsigue el texto añadido; Ctrl+C lo detiene.tail -Fsigue un nombre de archivo aunque se sustituya el archivo, y-qsuprime los encabezados de varios archivos.
2Controla el origen de la entrada y el destino de la salida y los errores
Un comando puede producir resultados útiles y mensajes de error durante una misma ejecución. Linux les proporciona rutas separadas, además de una ruta para la entrada. El intérprete puede conectar cada ruta a un archivo antes de que comience el comando. Comprender esas conexiones te permite guardar un informe, mantener los errores en un archivo separado y proporcionar datos sin escribirlos. El orden de las redirecciones importa y un archivo de salida puede vaciarse antes de que el programa lea cualquier entrada.
2.1 Comprende la entrada estándar, la salida estándar y la salida de error estándar
Un comando se comunica mediante flujos estándar. Pensar en la entrada y la salida como rutas separadas explica cómo un mismo programa puede leer del teclado, leer un archivo o recibir la salida de otro comando.
Identifica los tres flujos
Un descriptor de archivo es el número utilizado para identificar un flujo abierto. Un comando normal del intérprete hereda estos tres:
| Número | Nombre | Conexión habitual en el terminal |
|---|---|---|
| 0 | Entrada estándar, stdin | Entrada del teclado |
| 1 | Salida estándar, stdout | Resultados normales en pantalla |
| 2 | Salida de error estándar, stderr | Errores y mensajes de estado en pantalla |
Aunque stdout y stderr normalmente comparten la pantalla, son conexiones separadas. Un programa puede mostrar un resultado en stdout y explicar un problema en stderr durante la misma ejecución.
Por ejemplo, ls /etc/hostname /nonexistent > out.txt lista una ruta existente y encuentra otra inexistente. El listado va a out.txt. El mensaje «No such file or directory» permanece en el terminal porque > redirige stdout, no stderr. Ver un error en pantalla no significa que haya fallado la redirección de salida.
Proporciona a un comando la entrada desde un archivo
Comandos como cat, sort, wc, grep, head y tail pueden leer stdin cuando no se indica un archivo de entrada. Ejecuta sort por sí solo, escribe unas líneas y pulsa Ctrl+D al principio de una línea vacía. Esto señala el fin de la entrada y permite que sort imprima las líneas ordenadas. Ctrl+C detiene el comando en lugar de completar la entrada.
El operador de entrada < conecta un archivo a stdin:
wc -l < fruit.txt
Si fruit.txt tiene seis líneas terminadas en un salto de línea, la salida es «6». Compáralo con wc -l fruit.txt, que imprime «6 fruit.txt». En la forma redirigida, el intérprete abre el archivo y wc recibe un flujo sin el nombre original del archivo. En la forma con argumento, wc abre por sí mismo el archivo indicado.
El intérprete prepara las redirecciones antes de iniciar el programa. Por tanto, sort < fruit.txt y < fruit.txt sort conectan el mismo archivo al mismo flujo de entrada. La posición habitual después del comando es más fácil de leer.
Proporciona unas líneas directamente
Un documento incrustado coloca la entrada debajo del comando. La palabra después de << marca dónde termina esa entrada:
cat <<EOF > greeting.txt
Hello
See you soon
EOF
cat recibe las dos líneas de saludo en stdin y las escribe en el archivo de salida. La última línea contiene solo EOF; es un delimitador y no forma parte del texto guardado. Se puede usar otra palabra como delimitador si la línea de cierre coincide exactamente con ella.
En Bash, una cadena incrustada proporciona una cadena más un salto de línea. wc -w <<< "a b c" indica tres palabras. Estas dos formas proporcionan entrada directamente sin crear antes un archivo de entrada.
Lee la flecha antes de ejecutar el comando
sort < fruit.txt lee el archivo. sort > fruit.txt lo abre como destino de salida, vacía el contenido existente y espera la entrada del teclado. El intérprete realiza esa apertura destructiva antes de que se ejecute sort. Mantén los archivos de entrada separados de los destinos de salida, salvo que el comando tenga una forma documentada de actualizar su entrada de manera segura.
Puntos clave
- stdin, stdout y stderr usan los descriptores de archivo 0, 1 y 2.
<proporciona un archivo mediante stdin;>cambia el destino de stdout.- Ctrl+D en una línea de entrada vacía señala el fin de la entrada; Ctrl+C detiene el comando.
- Un documento incrustado utiliza un delimitador coincidente en una línea por sí solo.
2.2 Redirige la salida y los errores a archivos
La redirección cambia el destino de un flujo. Es una operación del intérprete, por lo que los mismos operadores funcionan con muchos programas distintos. Empieza por decidir qué flujo enviar y si un archivo existente debe reemplazarse o ampliarse.
Guarda los resultados normales o añádelos al final
echo one > log.txt crea el archivo o lo vacía antes de escribir la línea «one». Un echo two >> log.txt posterior añade «two» al final y deja dos líneas. >> también crea un archivo inexistente.
| Operador | Efecto |
|---|---|
> out.txt | Escribir stdout, reemplazando el contenido existente |
>> out.txt | Añadir stdout al final |
2> err.txt | Escribir stderr, reemplazando el contenido existente |
2>> err.txt | Añadir stderr al final |
ls /etc/hostname /nonexistent > out.txt 2> err.txt separa el listado correcto del error por la ruta inexistente. El descriptor debe estar pegado al operador. ls 2> err.txt redirige los errores; ls 2 > err.txt pide a ls que liste un archivo llamado «2» y redirige su salida normal.
Combina los flujos en el orden correcto
2>&1 dirige stderr al destino actual de stdout. Lee las redirecciones de izquierda a derecha:
ls /etc/hostname /nonexistent > all.txt 2>&1
Primero, stdout se dirige a all.txt. Después, stderr copia esa conexión. Ambos flujos llegan ahora al archivo. &> all.txt de Bash es una forma más corta y &>> all.txt añade ambos flujos al final.
Invertir el orden cambia el resultado:
ls /etc/hostname /nonexistent 2>&1 > out.txt
Primero, stderr se dirige adonde apunta stdout en ese momento: el terminal. Después, stdout se dirige al archivo. Stderr conserva la conexión anterior, por lo que el error sigue visible. 2>&1 establece una conexión en ese momento; no hace que stderr siga todos los cambios posteriores de stdout.
Descarta un flujo deliberadamente
/dev/null descarta los datos que se escriben en él. find / -name passwd 2>/dev/null deja las rutas coincidentes en stdout mientras oculta mensajes de diagnóstico como «Permission denied». Esos mensajes pueden identificar directorios en los que no se ha buscado, por lo que descartarlos también elimina información sobre las omisiones de la búsqueda.
Protege un archivo de entrada
No escribas sort fruit.txt > fruit.txt. El intérprete vacía el destino antes de que sort lo lea. Utiliza una ruta de salida distinta, comprueba el resultado y después cambia su nombre. En el caso concreto de sort, sort -o fruit.txt fruit.txt utiliza su opción admitida de archivo de salida para actualizar ese archivo de forma segura.
Bash también puede rechazar sobrescrituras accidentales:
set -o noclobber
Con esta opción, > normal falla si el archivo normal ya existe. >> sigue añadiendo al final. Utiliza >| para una sobrescritura intencionada o set +o noclobber para desactivar la opción. La protección es útil al guardar informes repetidos, pero no cambia las opciones de escritura de archivos propias de un comando.
Puntos clave
>sobrescribe, mientras que>>añade al final; utiliza el descriptor 2 para stderr.> all.txt 2>&1captura ambos flujos porque las redirecciones se ejecutan de izquierda a derecha.2>&1 > out.txtdeja stderr en el destino anterior de stdout./dev/nulldescarta el flujo seleccionado, incluidos mensajes de diagnóstico útiles.- Evita redirigir sobre un archivo de entrada;
sort -oofrece una alternativa admitida. - La protección noclobber de Bash rechaza
>normal sobre archivos normales existentes;>|la omite.
3Combina comandos en cadenas conectadas por tuberías
Los pequeños comandos de texto son más útiles cuando sus entradas y salidas encajan entre sí. Una cadena de comandos puede eliminar un encabezado, seleccionar una columna, agrupar valores repetidos y contarlos sin crear un archivo después de cada paso. Cada etapa cambia lo que recibe la siguiente. Examina las etapas por separado para poder determinar si un total incorrecto procede de la selección, la ordenación o el recuento, y guarda resultados intermedios cuando necesites inspeccionarlos.
3.1 Conecta comandos mediante tuberías y tee
Una tubería, escrita |, une la salida normal de un comando con la entrada del siguiente. Puedes conectar varias tareas pequeñas sin guardar un archivo temporal entre ellas.
Sigue el flujo de texto
En ls /etc | wc -l, ls escribe nombres y wc -l cuenta los caracteres de salto de línea que recibe. Un comando que lee stdin, selecciona o modifica texto y escribe en stdout se llama filtro. sort, uniq, wc, cut, grep, head y tail pueden servir como filtros.
La forma general es command1 | command2 | command3. Cada etapa recibe la salida de la etapa anterior, que puede tener una forma distinta a la del archivo original. Una etapa posterior no puede recuperar las líneas o columnas que una etapa anterior eliminó.
Construye un recuento por etapas
Supón que fruit.txt contiene seis líneas: «banana», «apple», «cherry», «apple», «banana», «apple». Para contar los nombres diferentes, ejecuta primero:
sort fruit.txt
La salida tiene tres líneas «apple», dos líneas «banana» y una línea «cherry». Ahora los nombres iguales están juntos. Añade una etapa:
sort fruit.txt | uniq
uniq elimina las repeticiones consecutivas y deja «apple», «banana» y «cherry». Por último, sort fruit.txt | uniq | wc -l indica 3. Contar directamente el archivo original indicaría seis líneas, lo que responde a una pregunta diferente.
Ejecuta la cadena a medida que crece e inspecciona el resultado antes de añadir el siguiente comando. Para una salida muy larga, añade temporalmente | head para ver las primeras diez líneas. Esto facilita detectar un encabezado que no se eliminó o un campo que se seleccionó incorrectamente.
Mantén los errores separados
Una tubería normal transporta stdout, no stderr. Con una ruta existente y otra inexistente, ls /etc/hostname /nonexistent | wc -l cuenta la única línea normal del listado. El error sigue apareciendo en el terminal.
Para incluir los mensajes de diagnóstico en los datos, utiliza ls /etc/hostname /nonexistent 2>&1 | wc -l, que cuenta dos líneas en este ejemplo. |& de Bash también combina stdout y stderr en la tubería. Que resulte útil incluir los errores depende de lo que quieras que signifique el recuento final.
Las etapas se ejecutan simultáneamente. tail -f /var/log/app.log | grep ERROR muestra en el terminal las nuevas líneas añadidas que coinciden. Es una vista en directo, no un proceso que espera a que el archivo termine. Sin embargo, los programas pueden almacenar temporalmente la salida; la visualización inmediata no está garantizada para todas las cadenas posibles.
Guarda una copia durante el proceso
tee escribe su entrada tanto en un archivo como en stdout:
sort fruit.txt | uniq | tee unique.txt | wc -l
El terminal muestra 3, mientras que unique.txt almacena los tres nombres. tee -a añade al final en lugar de reemplazar el archivo guardado. Colocar tee antes guardaría una forma anterior de los datos.
Una tubería conecta con un comando, mientras que > indica un archivo. ls > less crea un archivo llamado «less»; no inicia el paginador. El comando receptor también debe leer stdin: pasar texto por una tubería a echo o ls no convierte ese texto en sus argumentos.
Puntos clave
|conecta stdout con stdin del siguiente comando.- Comprueba una cadena etapa por etapa; cada etapa recibe la salida de la anterior.
- stderr queda fuera de una tubería normal salvo que combines los flujos.
teeguarda la entrada y la transmite;tee -aañade al final.- El texto transmitido por una tubería es stdin, no una lista de argumentos del comando.
3.2 Cuenta y ordena líneas y elimina las duplicadas
Contar y ordenar son tareas separadas. Antes de utilizar un recuento, decide si necesitas registros, palabras, bytes o valores distintos. Antes de eliminar duplicados, determina si las líneas iguales ya están juntas.
Cuenta lo que necesitas con wc
wc file sin opciones indica las líneas, palabras y bytes, en ese orden, y después el nombre del archivo. La lista de seis líneas de frutas que contiene «banana», «apple», «cherry», «apple», «banana», «apple» produce «6 6 39 fruit.txt». Cada línea aporta sus letras más un byte de salto de línea.
| Opción | Qué cuenta |
|---|---|
-l | Caracteres de salto de línea |
-w | Palabras separadas por espacios en blanco |
-c | Bytes |
-m | Caracteres |
wc -l no cuenta un fragmento final de texto sin salto de línea. Por tanto, un texto que contiene «one», un salto de línea y después «two» tiene un recuento de 1. En UTF-8, «café» seguido de un salto de línea ocupa seis bytes pero cinco caracteres porque «é» ocupa dos bytes. Con varios archivos de entrada, wc imprime sus recuentos y un total adicional.
Elige entre ordenación de texto y numérica
sort escribe las líneas ordenadas sin cambiar el archivo de entrada. Su orden predeterminado sigue la configuración de idioma actual. sort -f compara sin distinguir mayúsculas de minúsculas.
La ordenación de texto compara caracteres: «100», «25», «9» aparecen en ese orden porque sus primeros dígitos son «1», «2», «9». sort -n compara valores numéricos y produce 9, 25, 100. Añade -r para invertir el orden, como en sort -rn. sort -h interpreta sufijos de tamaño como «2K», «300M» y «1G».
Ordena por un campo
Para registros separados por comas, -t, establece el separador. -k3,3nr selecciona solo el campo 3, compara numéricamente e invierte el orden:
tail -n +2 scores.csv | sort -t, -k3,3nr | head -n 3
Con «name,city,score» seguido de «Ana,Lisbon,82», «Ben,Oslo,75», «Chen,Lisbon,91», «Dara,Oslo,68» y «Eli,Lisbon,88», el resultado es Chen, Eli y después Ana con sus registros completos. La primera etapa elimina el encabezado. De lo contrario, su clave de puntuación no numérica cuenta como cero durante la ordenación numérica.
Sin -t, los espacios en blanco separan los campos. -k2 extiende la clave desde el campo 2 hasta el final de la línea; -k2,2 la limita al campo 2.
Agrupa los duplicados antes de contarlos
uniq compara cada línea con la secuencia contigua. En la lista de frutas sin ordenar, conserva las seis líneas porque no hay nombres iguales juntos. sort fruit.txt | uniq imprime los tres nombres diferentes; sort -u fruit.txt también puede producir una lista ordenada de valores distintos.
Después de ordenar, uniq -c indica el recuento de cada secuencia: «3 apple», «2 banana», «1 cherry», con espacios que rellenan los recuentos. uniq -d imprime una copia de cada valor repetido y uniq -u imprime solo los valores que aparecen una vez. uniq -i ignora las mayúsculas y minúsculas en sus comparaciones.
Para mostrar primero los valores más frecuentes, utiliza sort fruit.txt | uniq -c | sort -rn. La ordenación inicial agrupa las líneas idénticas; la ordenación final clasifica sus recuentos. Omitir la primera ordenación hace que las secuencias dispersas se cuenten por separado.
Puntos clave
wc -lcuenta saltos de línea,-wpalabras,-cbytes y-mcaracteres.sort -ncompara números;-rinvierte el orden;-hinterpreta sufijos de tamaño.sort -t, -k3,3nrordena registros separados por comas según el campo 3, numéricamente y en orden descendente.- Elimina el encabezado antes de ordenar los registros de datos.
uniqelimina repeticiones consecutivas; ordena primero cuando los valores iguales están dispersos.uniq -ccuenta secuencias,-dselecciona valores repetidos y-uselecciona valores que aparecen una vez.sort | uniq -c | sort -rnagrupa valores, los cuenta y ordena los recuentos.
3.3 Extrae columnas con cut
Un registro suele contener más información de la que necesita una pregunta. cut selecciona campos o posiciones fijas de cada línea y escribe la selección en stdout. No reorganiza ni edita el archivo original.
Selecciona campos por su separador
Un delimitador separa los campos. En /etc/passwd, los dos puntos separan el nombre de usuario, el marcador de contraseña, el identificador de usuario, el identificador de grupo, el nombre completo, el directorio personal y el intérprete de comandos de inicio de sesión. Para este registro de ejemplo:
alice:x:1001:1001:Alice Smith:/home/alice:/bin/bash
cut -d: -f1,6 imprime «alice:/home/alice». Los números de campo comienzan en 1 y el delimitador permanece entre los campos seleccionados. cut -d: -f5 imprime «Alice Smith»; el espacio interno forma parte de ese campo porque el delimitador son los dos puntos.
| Selección | Campos impresos |
|---|---|
-f1,3 | Campos 1 y 3 |
-f2-4 | Campos del 2 al 4 |
-f3- | Desde el campo 3 hasta el último |
La lista selecciona campos, no un nuevo orden. cut -d, -f3,1 sigue imprimiendo el campo 1 seguido del campo 3. De forma predeterminada, el separador es una tabulación, por lo que cut -f2 file selecciona el segundo campo separado por tabulaciones.
Una línea sin delimitador se imprime completa. Por ejemplo, cut -f2 imprime «no tabs here» sin cambios porque no contiene ninguna tabulación. Añade -s para omitir las líneas sin delimitador. Una línea que contiene delimitadores pero carece de un campo solicitado es un caso distinto; -s no es una prueba general de que los registros estén completos.
Selecciona posiciones fijas
cut -c1-5 selecciona las posiciones de la 1 a la 5. En el registro de cuenta anterior imprime «alice». La selección por posición sirve para texto de ancho fijo, donde las columnas deseadas comienzan en los mismos lugares en cada línea. La selección de campos sirve para registros cuyos campos tienen longitudes variables, pero cuyos separadores son constantes.
Comprueba cómo funcionan los separadores
Con cut -d' ' -f2, cada espacio individual es un separador. El texto «a b» tiene un segundo campo vacío entre sus dos espacios, por lo que el resultado es una línea vacía. Si los espacios repetidos solo sirven de relleno entre columnas, tr -s ' ' | cut -d' ' -f2 reduce primero cada secuencia de espacios a uno.
cut también trata las comas dentro de valores entre comillas como separadores. Un valor CSV entre comillas como «Smith, Ann» no se mantiene unido automáticamente. Utiliza ejemplos sencillos separados por delimitadores solo cuando los límites de los campos coincidan realmente con la regla del delimitador.
Cuenta valores de una columna seleccionada
Para contar las ciudades de scores.csv, comienza con cut -d, -f2 scores.csv. Con los registros de Ana, Ben, Chen, Dara y Eli, esto imprime «city», «Lisbon», «Oslo», «Lisbon», «Oslo», «Lisbon». Después:
cut -d, -f2 scores.csv | tail -n +2 | sort | uniq -c | sort -rn
Al eliminar la primera línea se quita «city». La ordenación agrupa las tres entradas de Lisbon y las dos de Oslo; uniq -c las cuenta y la última ordenación coloca «3 Lisbon» antes de «2 Oslo». Olvidar la etapa del encabezado crea un valor adicional, «1 city», porque un encabezado sigue siendo texto para estos comandos.
Puntos clave
cut -destablece el delimitador y-fselecciona campos numerados a partir de 1.- Las listas de campos seleccionan los campos en su orden original;
-cselecciona posiciones fijas. - El delimitador predeterminado es una tabulación;
-somite las líneas sin delimitador. - Los espacios repetidos crean campos vacíos y
cutno interpreta las comillas de CSV. - Para contar frecuencias, elimina el encabezado, selecciona el valor, agrupa las líneas iguales y cuenta.
4Busca texto con grep y expresiones regulares
La búsqueda de texto comienza por decidir qué cuenta como coincidencia. Puedes necesitar una frase literal, una palabra completa, una línea completa o un patrón como dos letras seguidas de cuatro dígitos. grep puede mostrar las líneas coincidentes o indicar sus números, recuentos y nombres de archivo. Las expresiones regulares describen los patrones, mientras que las comillas impiden que el intérprete los modifique antes. Avanzarás desde coincidencias sencillas hasta alternativas agrupadas y partes repetidas.
4.1 Busca en archivos con grep y sus principales opciones
grep busca texto y normalmente imprime todas las líneas que contienen una coincidencia. Para realizar una búsqueda útil, empieza por elegir tanto el patrón como el tipo de resultado que necesitas: líneas, recuentos, números de línea o nombres de archivo.
Empieza con un patrón entre comillas
La forma habitual es grep 'pattern' file. Sin un archivo como argumento, grep lee stdin. Las búsquedas distinguen entre mayúsculas y minúsculas salvo que añadas -i.
Supón que server.log tiene cinco entradas: una línea INFO de inicio, una línea ERROR de disco lleno, una línea WARN de reintento, una línea «error timeout» en minúsculas y una línea INFO de copia de seguridad. grep 'ERROR' server.log imprime solo la línea ERROR en mayúsculas. grep -i 'error' server.log imprime ambas líneas de error.
Pon los patrones entre comillas aunque parezcan sencillos. grep 'disk full' server.log busca las dos palabras juntas. Sin comillas, grep disk full server.log utiliza «disk» como patrón y trata «full» como otro nombre de archivo. Las comillas también impiden que el intérprete expanda asteriscos y otros caracteres especiales antes de que grep los reciba.
Elige la salida que necesitas
| Opción | Resultado |
|---|---|
-i | Buscar coincidencias sin distinguir mayúsculas y minúsculas |
-v | Imprimir las líneas que no coinciden |
-c | Imprimir el número de líneas coincidentes |
-n | Anteponer a las coincidencias sus números de línea |
-w | Exigir una coincidencia de palabra completa |
-x | Exigir una coincidencia de línea completa |
Las opciones se combinan: grep -ic 'error' server.log indica 2, mientras que grep -n 'WARN' server.log identifica la línea 3. -c cuenta las líneas coincidentes, no el número de apariciones dentro de ellas. Una línea que contiene «error error» aporta uno al recuento.
Considera las líneas «error», «terror», «errors» y «Error found». grep 'error' sin opciones coincide con las tres primeras. grep -w 'error' solo coincide con la primera porque «error» no es una palabra completa en «terror» ni en «errors». Al añadir -i también coincide con «Error found». -x exige que coincida una línea entera, por lo que «Error found» sigue sin superar una búsqueda de línea completa para «error».
Busca en varios archivos
Cuando se buscan varios archivos, grep normalmente antepone los nombres de archivo a las coincidencias. grep -r 'TODO' notes busca en los archivos de todo el árbol de directorios. Añade -l para imprimir solo los nombres de archivos con coincidencias: grep -rl 'TODO' notes. La -L mayúscula lista los archivos sin coincidencias. Son resultados de selección de archivos, no recuentos de líneas coincidentes.
Decide si el patrón es literal
De forma predeterminada, grep interpreta una expresión regular. Un punto coincide con cualquier carácter individual, por lo que '10.0.0.7' también puede coincidir con «10a0b0c7». grep -F '10.0.0.7' file busca el texto exacto. Escapar cada punto, como en '10\.0\.0\.7', también hace que los puntos sean literales.
grep -q suprime la salida normal e informa mediante su estado de salida: 0 si hay una coincidencia, 1 si no hay ninguna y normalmente 2 si hay un error en grep de GNU. Un archivo de entrada inexistente es un error, no una prueba de que el patrón estuviera ausente.
En una cadena de comandos, grep -i 'error' server.log | wc -l cuenta las líneas coincidentes igual que grep -ic. La primera forma deja espacio para otros filtros entre la selección de líneas y su recuento.
Puntos clave
grepimprime las líneas coincidentes y distingue entre mayúsculas y minúsculas salvo que se utilice-i.- Pon el patrón entre comillas para que el intérprete lo transmita intacto.
-ccuenta las líneas coincidentes;-nlas numera;-vselecciona las que no coinciden.-wexige una palabra completa y-xuna línea completa.-rbusca en un árbol,-llista los archivos con coincidencias y-Llos archivos sin coincidencias.-Ftrata un patrón como texto literal;-qinforma del resultado de una búsqueda mediante el estado de salida.
4.2 Escribe expresiones regulares básicas
Una expresión regular describe texto que puede coincidir con ella. grep normalmente busca una parte coincidente en cualquier lugar de una línea y después imprime la línea completa. La mayoría de las letras coinciden consigo mismas; los caracteres especiales describen posiciones, opciones o repeticiones.
Busca un carácter o una posición
El punto . coincide con un carácter dentro de una línea. Con las líneas «cat», «cart», «coat», «cut», «act», «scat» y «color», el patrón 'c.t' coincide con «cat», «cut» y «scat». La última contiene «cat» como parte coincidente. «coat» tiene dos caracteres entre «c» y «t», por lo que un punto no puede abarcar ambos.
Utiliza anclas para limitar las posiciones. ^ marca el principio de una línea y $ el final:
| Patrón | Qué exige |
|---|---|
^c | Una línea que empiece por «c» |
t$ | Una línea que termine en «t» |
^c.t$ | Exactamente «c», un carácter y después «t» |
^$ | Una línea vacía |
grep '^c.t$' words.txt imprime solo «cat» y «cut». Anclar ambos extremos descarta una línea más larga como «scat».
Elige un carácter de un conjunto
Una expresión entre corchetes coincide con un carácter. [ao] significa «a» u «o», por lo que 'c[ao]t' coincide con la parte «cat» de «cat» y «scat». [0-9] describe un dígito. Un acento circunflejo inmediatamente después del corchete de apertura niega el conjunto: 'c[^a]t' coincide con «cut», pero no con «cat». Aquí el circunflejo excluye un carácter; no marca el principio de una línea.
Las clases con nombre describen categorías de la configuración de idioma actual. [[:digit:]] selecciona un dígito, [[:alpha:]] una letra, [[:alnum:]] una letra o un dígito y [[:upper:]] o [[:lower:]] una letra en mayúscula o minúscula, respectivamente. [[:space:]] incluye espacios, tabulaciones y otros caracteres de espacio en blanco. Conserva ambos pares de corchetes: el nombre de la clase va dentro de la expresión exterior del conjunto.
Repite el elemento anterior
* significa cero o más apariciones del elemento inmediatamente anterior. 'ca*t' puede coincidir con «ct», «cat» o «caat». También coincide con «act» porque esa línea contiene «ct», con cero apariciones de «a». Para coincidir con cualquier secuencia de caracteres, combina punto y asterisco como .*.
'^c.*t$' coincide con «cat», «cart», «coat» y «cut» en la lista de palabras. Un comodín de nombre de archivo y una expresión regular usan reglas distintas para el asterisco: el patrón del intérprete *.txt describe nombres terminados en «.txt», pero la expresión regular para esa terminación es '\.txt$'.
Convierte un carácter especial en literal
Una barra invertida puede eliminar un significado especial. \. coincide con un punto literal, \* con un asterisco y \[ con un corchete de apertura. [.] también selecciona un punto literal. grep '\.conf$' file selecciona líneas que terminan en «.conf».
Una búsqueda en una configuración puede eliminar comentarios sencillos y líneas vacías con grep -v '^#' app.conf | grep -v '^$'. La primera prueba reconoce comentarios solo cuando «#» es el primer carácter. La sintaxis básica predeterminada trata ?, +, las llaves, | y los paréntesis sin escapar como caracteres ordinarios. grep de GNU admite formas de operador con barra invertida; grep -E proporciona la sintaxis extendida sin esas barras invertidas.
Puntos clave
- grep busca una parte coincidente salvo que las anclas exijan que coincida toda la línea.
.coincide con un carácter;^y$anclan el principio y el final.- Una expresión entre corchetes selecciona un carácter;
[^a]excluye «a». - Las clases con nombre como
[[:digit:]]requieren ambos pares de corchetes. *repite el elemento anterior cero o más veces;.*coincide con una secuencia de caracteres.- Utiliza
\.o[.]para un punto literal.
4.3 Utiliza expresiones regulares extendidas con grep -E
Las expresiones regulares extendidas añaden formas útiles de expresar partes opcionales, grupos repetidos y alternativas. Utiliza grep -E para que el patrón se lea con esta sintaxis. El punto, las anclas, los conjuntos y el asterisco conservan sus significados anteriores.
Cuenta repeticiones
Un operador sigue al elemento que modifica. Ese elemento puede ser un carácter, una expresión entre corchetes o un grupo:
| Operador | Número de apariciones |
|---|---|
? | Cero o una |
+ | Una o más |
{n} | Exactamente n |
{n,} | Al menos n |
{n,m} | De n a m |
'logs?' coincide con «log» y «logs»: solo la «s» es opcional. 'ca+t' requiere al menos una «a», por lo que coincide con «cat» y con la parte coincidente de «scat», pero no con «ct» dentro de «act». Omitir -E convierte un signo de interrogación o de suma sin escapar en texto literal en la sintaxis básica.
Para un código completo de dos letras mayúsculas y cuatro dígitos, utiliza:
grep -E '^[A-Z]{2}[0-9]{4}$' codes.txt
«AB1234» y «QZ0042» coinciden. «A12345» solo tiene una letra inicial, «ab1234» usa minúsculas y «XY98765» tiene un dígito adicional. Las dos anclas impiden que se acepte una sección aparentemente válida dentro de un código más largo. Añadir -i también permitiría el código en minúsculas.
Agrupa alternativas
| indica una alternativa dentro de un patrón extendido. 'cat|cut' busca cualquiera de las dos palabras en cualquier lugar de una línea. Los paréntesis establecen los límites de un grupo: 'c(a|o)t' elige «a» u «o» entre «c» y «t». Un cuantificador posterior se aplica al grupo completo, por lo que '(ab)+' coincide con una o más copias de «ab».
Mantén el patrón entre comillas. En grep -E cat|cut words.txt, el intérprete interpreta la barra vertical sin comillas como una tubería entre comandos. En grep -E 'cat|cut' words.txt, entrega ese carácter a grep como parte de un solo patrón.
Imprime coincidencias en lugar de líneas completas
-o imprime solo las partes coincidentes, una por línea de salida. El comando siguiente extrae una forma de números separados por puntos de una línea más larga:
grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' server.log
La parte entre paréntesis son de uno a tres dígitos seguidos de un punto literal; {3} la repite tres veces. La parte final añade de uno a tres dígitos. Extrae «10.0.0.7» de una línea que lo contiene, pero también acepta «999.999.999.999». Coincidir con una forma no comprueba si cada número está dentro del rango válido de una dirección.
Elimina juntas las líneas vacías y los comentarios
grep -Ev '^[[:space:]]*(#|$)' app.conf selecciona los ajustes activos. Lee el patrón en orden: comienza al principio, permite espacios en blanco y después busca «#» o el final de la línea. Por tanto, reconoce comentarios con sangría y líneas que solo contienen espacios en blanco, además de líneas vacías. -v conserva las líneas que no encajan con esa descripción, como «port=8080». El nombre de comando antiguo egrep es obsoleto en grep de GNU; utiliza grep -E.
Puntos clave
grep -Eactiva?,+, las llaves,|y los paréntesis sin escapar como operadores.- Los cuantificadores se aplican al carácter, conjunto o grupo anterior.
- Utiliza anclas alrededor de un patrón cuando todo el registro deba ajustarse a él.
|proporciona alternativas y los paréntesis las agrupan; pon el patrón entre comillas.-omuestra cada parte coincidente, no la línea completa.- Una expresión regular que comprueba una forma aún puede aceptar valores no válidos en el sistema real.
5Busca archivos por nombre, tipo, tamaño y antigüedad
Una búsqueda de archivos pregunta dónde está un elemento; una búsqueda de texto pregunta qué contiene. Comienza la búsqueda de archivos en el directorio adecuado y después acótala por nombre, tipo, tamaño o antigüedad. Puedes pasar las rutas coincidentes a otro comando sin dividir los nombres que contienen espacios. Una búsqueda actual del árbol de directorios y una consulta rápida de una base de datos tienen ventajas distintas. Antes de aplicar una acción a muchas coincidencias, inspecciona la selección y comprende cuándo se ejecuta la acción.
5.1 Busca en el árbol de directorios con find
find recorre un árbol de directorios y comprueba los elementos que encuentra. Elige primero el directorio inicial: find project imprime el propio project y las entradas que contiene. Añadir pruebas acota la selección.
Busca coincidencias de nombres, rutas y tipos
find project -name '*.txt' selecciona nombres terminados en «.txt» en cualquier lugar bajo el directorio inicial. Pon el comodín entre comillas para que el intérprete lo transmita sin cambios. -name distingue entre mayúsculas y minúsculas, por lo que «Guide.TXT» requiere -iname '*.txt' para encontrar una coincidencia sin esa distinción.
El patrón debe coincidir con todo el nombre del elemento, sin sus directorios padres. -name 'guide' no coincide con «guide.txt»; -name 'guide*' sí. Utiliza -path '*/src/*' cuando importe la parte de directorios. find imprime en orden de recorrido, por lo que puedes añadir | sort cuando quieras rutas ordenadas.
-type f selecciona archivos normales, -type d directorios y -type l enlaces simbólicos. find project -type f -name '*.txt' exige que se cumplan tanto la prueba de tipo como la de nombre. Un directorio llamado «notes.txt» no supera la prueba de tipo aunque su nombre encaje.
Comprende las comparaciones de tamaño
-size compara un tamaño después de redondearlo hacia arriba a la unidad seleccionada. c significa bytes, k significa kibibytes de 1024 bytes, M significa mebibytes de 1 048 576 bytes y G significa gibibytes. Un signo más inicial significa mayor que, un signo menos significa menor que y la ausencia de signo significa igual al número especificado de unidades.
Para -size +100M, el tamaño redondeado debe superar 100 unidades de MiB. Un archivo que supera 100 MiB por un byte se redondea a 101 unidades y cumple la condición. Un archivo no vacío menor de 1 MiB se redondea a una unidad, por lo que -size -1M solo encuentra archivos vacíos. Utiliza una prueba en bytes para un umbral exacto de bytes o una unidad menor para obtener un rango útil de archivos pequeños.
Comprueba la antigüedad y limita la profundidad
-mtime utiliza periodos completos de 24 horas desde la modificación. -mtime -7 selecciona elementos modificados hace menos de siete días. -mtime +30 selecciona antigüedades con más de 30 periodos completos: al menos 31 días. -mmin -30 utiliza minutos para cambios recientes. -user alice selecciona un propietario y -empty selecciona archivos o directorios vacíos.
Para examinar el directorio inicial y sus entradas inmediatas sin entrar en subdirectorios, utiliza find project -maxdepth 1 -type f. Coloca -maxdepth antes de las pruebas.
Combina pruebas y conserva los patrones
Las pruebas escritas una junto a otra significan Y. -o significa O, como en find project -name '*.txt' -o -name '*.md'. ! -name '*.c' niega una prueba de nombre. Para una selección sencilla, mantén clara la relación entre las pruebas antes de añadir acciones.
El intérprete expande un comodín sin comillas según tu directorio actual. Si allí solo coincide notes.txt, find . -name *.txt se convierte en una búsqueda de ese único nombre y omite otros archivos de texto. Si hay varias coincidencias locales, el comando puede fallar porque aparecen nombres adicionales dentro de la expresión de prueba.
Una búsqueda en directorios protegidos puede mostrar «Permission denied». 2>/dev/null oculta esos errores, pero no permite buscar en directorios que no se pueden leer. find comprueba el árbol durante su ejecución; un sistema de archivos en uso todavía puede cambiar antes de que un comando posterior utilice las rutas devueltas.
Puntos clave
findrecorre desde una ruta inicial e imprime los elementos que superan sus pruebas.- Pon los comodines de nombre entre comillas;
-namecomprueba el nombre completo y-pathla ruta completa. - Utiliza
-type f,dolpara archivos normales, directorios o enlaces simbólicos. - Las pruebas de tamaño redondean hacia arriba antes de comparar;
-size -1Mselecciona solo archivos vacíos. -mtime +30comienza en 31 días completos, mientras que-mminutiliza minutos.- Las pruebas contiguas significan Y,
-osignifica O y!niega una prueba.
5.2 Realiza operaciones sobre los archivos encontrados y utiliza búsquedas más rápidas
Después de seleccionar archivos, puedes dar sus rutas a otro comando. Mantener la selección y la acción en la misma expresión de find evita tratar los espacios dentro de los nombres de archivo como separadores entre nombres.
Ejecuta un comando para cada coincidencia
La acción -exec command {} \; ejecuta el comando una vez por cada elemento coincidente. find sustituye {} por la ruta de ese elemento. Por ejemplo:
find project -name 'main.c' -exec wc -l {} \;
Si la coincidencia es project/src/main.c, esto ejecuta wc -l project/src/main.c. El punto y coma escapado termina la acción. La barra invertida impide que el intérprete utilice primero el punto y coma para terminar todo el comando.
Utiliza {} + para pasar lotes de rutas a menos ejecuciones del comando:
find notes -type f -name '*.txt' -exec grep -l 'TODO' {} +
grep recibe las rutas de archivo seleccionadas como argumentos y lista las que contienen «TODO». Ambas formas conservan una ruta como «notes/team plan.txt» como un solo argumento. La forma con + reduce el trabajo de inicio cuando coinciden muchos archivos.
Combina la selección de archivos con la de texto
find comprueba propiedades de los archivos; grep examina su contenido. Añade -mtime -7 antes de la acción para buscar solo en archivos de texto modificados recientemente:
find notes -type f -name '*.txt' -mtime -7 -exec grep -l 'TODO' {} +
Primero, las pruebas de nombre, tipo y antigüedad seleccionan archivos. Después, grep busca en su texto. grep -r por sí solo puede buscar en el contenido de un árbol, pero no sustituye esas pruebas de propiedades de archivo.
Aplica la eliminación solo después de comprobar la selección
-delete elimina las coincidencias sin confirmación ni posibilidad de deshacer. Ejecuta primero la selección sin ninguna acción de eliminación y revisa las rutas. Solo entonces añade -delete al final, como en find /tmp/build -type f -name '*.tmp' -delete. Para pedir confirmación por cada elemento, -ok rm {} \; pregunta antes de ejecutar el comando de eliminación.
Las acciones se ejecutan a medida que se evalúa la expresión. Colocar -delete antes de -name '*.tmp' permite que la eliminación ocurra antes de que esa prueba de nombre pueda limitarla. Una prueba posterior no puede proteger un elemento de una acción ya realizada.
Elige una búsqueda más rápida cuando sea adecuada
locate guide.txt busca en un índice de rutas almacenadas que contienen «guide.txt». Puede responder rápidamente sin recorrer el disco. Como la base de datos se actualiza periódicamente, puede faltar un archivo nuevo o permanecer una ruta eliminada. updatedb reconstruye el índice; una actualización de todo el sistema suele necesitar permisos de administrador. Algunas distribuciones requieren un paquete opcional como plocate.
which grep busca un archivo de programa ejecutable en los directorios de PATH y suele indicar /usr/bin/grep. No describe todas las formas en que Bash resuelve un comando. type echo, por ejemplo, puede identificar un comando integrado aunque también exista un programa externo llamado «echo». Utiliza type commandname para la interpretación de Bash, find para una búsqueda actual en el árbol y locate para una búsqueda rápida de nombres en el índice.
Puntos clave
-exec command {} \;se ejecuta una vez por ruta;{} +agrupa las rutas en lotes.- Utiliza
findpara las propiedades de los archivos y grep para su contenido, combinándolos cuando sea necesario. - Revisa las coincidencias que se eliminarán y después coloca
-deletetras las pruebas que limitan la selección. locatebusca en un índice que puede estar desactualizado.whichencuentra archivos ejecutables en PATH;typeexplica la resolución de comandos de Bash.
6Edita archivos de texto en nano y vi
Los editores de terminal te permiten modificar notas y archivos de configuración durante una sesión remota o en un sistema sin escritorio gráfico. nano te permite escribir de inmediato y muestra atajos en la parte inferior de la pantalla. vi asigna distintas funciones a las teclas en distintos modos, por lo que cambiar de modo forma parte de la edición. Practica la apertura, la búsqueda de texto, la realización de un pequeño cambio y el guardado o la salida de forma deliberada; estos pasos importan tanto como conocer un comando de eliminación.
6.1 Edita y guarda un archivo en nano
nano notes.txt abre texto en un editor de terminal. Puedes desplazarte con las teclas de flecha y escribir directamente en el texto. Si el archivo no existe, nano inicia un búfer vacío, el texto de trabajo mantenido en memoria; al guardar se crea el archivo en el disco.
Lee las etiquetas de los atajos
Las líneas inferiores muestran combinaciones de teclas. ^ significa Ctrl, por lo que ^X significa Ctrl+X. M- significa Meta, normalmente Alt, por lo que M-U significa Alt+U. Ctrl+G abre la ayuda. Estas etiquetas describen teclas que se pulsan juntas, no caracteres que se escriben en el archivo.
Haz y guarda un pequeño cambio
Para cambiar «port=8080» por «port=9090» en app.conf:
- Ejecuta
nano app.conf. - Pulsa Ctrl+W, introduce «8080» y pulsa Enter.
- En la coincidencia, elimina los cuatro dígitos y escribe «9090».
- Pulsa Ctrl+O y después Enter para confirmar el nombre del archivo y guardar.
- Pulsa Ctrl+X para salir.
De vuelta en el intérprete, grep 'port' app.conf debería mostrar «port=9090». Esto comprueba el archivo guardado, no solo lo que estaba visible en el editor.
Ctrl+O es Guardar (Write Out), no un comando para abrir archivos. Ctrl+R lee el contenido de otro archivo y lo inserta en el búfer actual en la posición del cursor. Confundir esas acciones puede insertar texto no deseado en el archivo que editas.
Busca, reemplaza y desplázate
Ctrl+W busca texto. Alt+G va a un número de línea indicado, lo que resulta útil cuando un mensaje de error identifica una línea concreta. Ctrl+C muestra la línea y la columna actuales.
Alt+R, también disponible como Ctrl+, inicia la sustitución. Introduce el texto que buscas y después su reemplazo. Para cada coincidencia, responde Y para reemplazar o N para omitir; A reemplaza todas. Elegir sustituciones individuales ayuda cuando los mismos dígitos aparecen en varios ajustes y solo debe cambiar uno.
Mueve texto y deshaz cambios
| Atajo | Acción |
|---|---|
| Ctrl+K | Cortar toda la línea actual |
| Ctrl+U | Pegar el texto cortado en la posición del cursor |
| Alt+A | Empezar a marcar una selección |
| Alt+U / Alt+E | Deshacer / rehacer |
Pulsar Ctrl+K repetidamente reúne líneas consecutivas. Con una selección marcada, Ctrl+K corta el texto marcado en lugar de toda la línea. Ctrl+U inserta después ese texto donde está el cursor. Deshacer resulta útil inmediatamente después de un corte o una sustitución accidental.
Sal de forma deliberada
Ctrl+X sale. Si el búfer tiene cambios sin guardar, nano pregunta si quieres guardarlo. Y guarda, seguido de Enter para confirmar el nombre; N sale sin guardar esos cambios; Ctrl+C cancela la salida y vuelve a la edición. Responder N es una decisión de descartar el trabajo, no una forma de seguir editando.
nano -l app.conf muestra números de línea y nano +12 app.conf comienza en la línea 12. Si el guardado falla porque no tienes permiso, el búfer editado no se ha guardado en esa ruta. Los archivos del sistema requieren los permisos adecuados, por ejemplo sudo nano /etc/hosts cuando un cambio autorizado del sistema necesita acceso de administrador. Para practicar, utiliza un archivo de tu propio directorio.
Puntos clave
- nano acepta el texto escrito de inmediato; un archivo nuevo se crea al guardarlo.
^significa Ctrl yM-suele significar Alt en las etiquetas de los atajos.- Ctrl+O y Enter guardan; Ctrl+X sale y pregunta por los cambios sin guardar.
- Ctrl+W busca, Alt+R reemplaza y Alt+G va a una línea.
- Ctrl+K corta, Ctrl+U pega y Alt+U deshace.
6.2 Trabaja en los modos de vi
vi notes.txt abre un editor de terminal en modo normal. Allí, una tecla como x es un comando. Para escribir texto, entra primero en el modo de inserción. En muchos sistemas Linux, vi inicia Vim u otro editor compatible con vi.
Ten presente el modo
| Modo | Función | Cómo entrar |
|---|---|---|
| Normal | Desplazarse, eliminar, copiar y emitir comandos | Esc |
| Inserción | Escribir texto en el búfer | i, a, o u otro comando de inserción |
| Línea de comandos | Introducir comandos como el de guardar | : desde el modo normal |
Vim muestra «-- INSERT --» durante la inserción. Esc vuelve al modo normal. Desde el modo normal, i inserta antes del cursor y a después. I comienza antes del primer carácter que no sea un espacio en blanco de la línea, conservando la sangría; A añade al final. o abre una línea debajo y O una línea encima.
Desplázate sin escribir texto
En modo normal, h, j, k y l mueven a la izquierda, abajo, arriba y a la derecha. Las teclas de flecha también funcionan. w se desplaza a la siguiente palabra, 0 al principio de la línea y $ al final. G salta a la última línea. 1G salta a la primera; Vim también ofrece gg. Un número antes de G selecciona una línea, por lo que 12G salta a la línea 12. :12 y Enter hacen lo mismo. Los recuentos también repiten movimientos: 5j baja cinco líneas.
Edita desde el modo normal
x elimina el carácter bajo el cursor. dd corta una línea; 3dd corta tres líneas. yy copia una línea. Para texto de líneas completas, p pega debajo de la línea actual y P encima. Para texto por caracteres, p pega después del cursor y P antes.
cw reemplaza el resto de la palabra actual y entra en el modo de inserción. r seguido de un carácter reemplaza solo un carácter. u deshace un cambio; Ctrl+R de Vim lo rehace. Un punto . repite el último cambio.
Busca y cambia un ajuste
Para reemplazar «8080» por «9090» en app.conf, ejecuta vi app.conf, después escribe /8080 y pulsa Enter. En el primer «8», escribe cw, escribe «9090» y pulsa Esc. Escribe :wq y pulsa Enter para guardar y salir.
Busca hacia atrás con ?text y Enter. n repite la dirección actual de búsqueda y N la invierte. Las búsquedas aceptan expresiones regulares. Para reemplazar todas las apariciones en un archivo, :%s/8080/9090/g utiliza % para todas las líneas y g para todas las apariciones en cada línea. :set number muestra números de línea durante la edición.
Guarda o sal de forma deliberada
Desde el modo normal, :w y Enter guardan; :w newname.txt guarda con un nombre nuevo. :q sale solo si no lo impiden cambios sin guardar. :wq, :x o ZZ guardan y salen. :q! descarta los cambios sin guardar y sale.
Si al escribir el cursor se mueve o se elimina texto de forma inesperada, pulsa Esc para establecer el modo normal y después utiliza u para deshacer las ediciones no deseadas antes de continuar. Entra en el modo de inserción antes de escribir el texto de reemplazo. Cuando termines un intento de edición, elige si quieres guardar o descartar; el signo de exclamación de :q! autoriza a descartar el trabajo sin guardar.
Puntos clave
- vi comienza en modo normal; entra en el modo de inserción para escribir y pulsa Esc para volver.
i,a,oy sus formas en mayúsculas eligen dónde comienza la inserción.ddcorta una línea,yyla copia ypcoloca texto de líneas completas debajo de la línea o texto por caracteres después del cursor.udeshace y.repite el último cambio./textbusca hacia delante;nrepite yNinvierte la dirección de búsqueda.:wqguarda y sale;:q!descarta los cambios sin guardar y sale.
Ejemplos de Tuberías y redirección en Linux
1Lee un archivo sin perder tu posición
10 pasos
- 1IntroducciónElige cuánto texto ver
Un terminal puede mostrar un archivo completo, una pantalla cada vez o solo una parte seleccionada. La elección cambia la facilidad con la que puedes encontrar lo que importa.
Utiliza una nota corta para aprender
caty después pasa alesspara un archivo demasiado largo para mantenerlo en pantalla. Por último, utilizaheadytailcuando sepas qué parte necesitas. Estos comandos leen texto sin editar el archivo almacenado. - 2EjemploUne dos notas cortas
a.txtcontiene «a» y «b» en líneas separadas.b.txtcontiene «c d». Ejecutacat -n a.txt b.txt.La salida tiene tres líneas numeradas, en ese orden. La numeración continúa del primer archivo al segundo; los números se añaden solo a la salida. Para guardar el texto original unido sin numerar, ejecuta
cat a.txt b.txt > ab.txt. - 3ExplicaciónAbre una vista de lectura
Ejecuta
less /etc/servicespara leer un archivo largo pantalla a pantalla. El programa mantiene la vista abierta y espera teclas de navegación.La barra espaciadora avanza una pantalla,
bretrocede y las teclas de flecha permiten desplazarse por las líneas.gsalta a la primera línea;Ga la última. Pulsaqpara cerrar la vista y volver al intérprete. Es normal que no aparezca el indicador de comandos mientras el paginador está abierto. - 4EjemploBusca y continúa
En
less, escribe/sshy pulsa Enter para buscar «ssh» hacia delante. Pulsanpara la siguiente coincidencia en esa dirección oNpara ir en sentido contrario.Una búsqueda hacia atrás comienza con
?ssh. Después de esa búsqueda,ncontinúa hacia atrás. La dirección procede de la búsqueda que iniciaste.less -N fileañade números de línea si necesitas anotar la ubicación de una coincidencia. - 5DesafíoEncuentra la coincidencia anterior
Has buscado «listen» hacia delante en un archivo largo con less. Quieres ir a la coincidencia anterior y después salir del paginador. ¿Qué teclas pulsas?
---reveal---
Pulsa
Npara moverte en dirección contraria a la búsqueda hacia delante y despuésqpara salir. Lanminúscula continuaría hacia delante. Salir es lo que restaura el indicador de comandos; llegar a una coincidencia o al final del archivo no cierra el paginador. - 6ExplicaciónElige un recuento o una línea inicial
head -n 4 fileimprime las primeras cuatro líneas.tail -n 4 fileimprime las últimas cuatro. Sin-n, cada uno muestra diez líneas de forma predeterminada.Un signo más cambia la función de tail:
tail -n +4 filecomienza en la línea 4 y la imprime junto con todo lo que sigue. Para un archivo con una línea de encabezado,tail -n +2 fileelimina ese encabezado. Conserva todos los registros de datos, no solo los dos últimos. - 7EjemploSelecciona las líneas de la 11 a la 20
Supón que un archivo contiene los números del 1 al 100, uno por línea. Comienza con
head -n 20 numbers.txt, que conserva del 1 al 20.Añade
| tail -n 10. Las últimas diez líneas de la entrada seleccionada van de la 11 a la 20. Ambos extremos cuentan, por lo que este rango contiene diez líneas. Pedir once líneas a tail también incluiría la línea 10 y desplazaría el inicio hacia atrás. - 8DesafíoElige otro rango intermedio
Un archivo tiene al menos 17 líneas. Escribe una cadena de comandos que utilice head y tail para imprimir las líneas de la 12 a la 17, incluidos ambos extremos.
---reveal---
Utiliza
head -n 17 file | tail -n 6. Conserva primero las líneas 1–17 y después las últimas seis de ellas: 12, 13, 14, 15, 16 y 17. Usar un recuento de cinco omitiría la línea 12 porque los extremos están incluidos en el rango solicitado. - 9DesafíoInspecciona el texto más reciente y sigue observando
Necesitas ver las entradas más recientes de un archivo largo de una aplicación y seguir observando a medida que llegan nuevas entradas. ¿Qué comando es adecuado y cómo sales de él?
---reveal---
Utiliza
tail -f app.logy después Ctrl+C cuando termines.tailsin opciones mostraría el final actual y saldría.tail -Fes útil cuando el programa sustituye el archivo durante la rotación, porque sigue el nombre del archivo tras la sustitución. - 10RepasoUtiliza la vista adecuada para la tarea
Para un archivo corto completo, utiliza
cat; para desplazarte y buscar, abreless. Un paginador permanece abierto hasta que sales de él.Utiliza
headytailpara el principio, el final o un rango intermedio. Interpreta un signo más en el recuento de líneas de tail como una posición inicial. Para una vista en directo, sigue el texto añadido contail -fy detén el seguimiento con Ctrl+C. La selección también funciona cuando el texto llega por una tubería.
2Sigue la entrada, los resultados y los errores
11 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónDibuja tres rutas separadas
- 2ExplicaciónNombra los flujos estándar
- 3EjemploEnvía los mismos datos por otra ruta
- 4DesafíoTermina la entrada del teclado
- 5EjemploProporciona varias líneas debajo de un comando
- 6ExplicaciónElige entre reemplazar o añadir
- 7EjemploCombina resultados y mensajes de diagnóstico
- 8DesafíoInvierte las conexiones
- 9ConsejoMantén intacta la entrada
- 10DesafíoCuenta la entrada y separa un mensaje de diagnóstico
- 11RepasoSigue la preparación del intérprete
3Construye un informe de texto útil
14 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónAsigna una tarea a cada etapa
- 2ExplicaciónConecta los dos comandos
- 3DesafíoElige una tubería o un archivo
- 4ExplicaciónConoce qué mide el contador
- 5EjemploSepara la ordenación del recuento
- 6DesafíoExplica un duplicado que permanece
- 7ExplicaciónSelecciona la columna que importa
- 8EjemploElimina la etiqueta e inspecciona los valores
- 9DesafíoComprueba una suposición sobre el separador
- 10EjemploAgrupa los valores seleccionados
- 11EjemploOrdena los recuentos
- 12ConexiónConserva datos antes del recuento final
- 13DesafíoDiagnostica una categoría adicional
- 14RepasoComprueba qué viaja entre etapas
4Construye patrones que coincidan con el texto deseado
15 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónDecide qué cuenta como coincidencia
- 2ExplicaciónElige un informe de búsqueda
- 3EjemploDistingue una palabra de una línea
- 4DesafíoBusca una etiqueta de versión exacta
- 5ConsejoBusca en un directorio o consulta sin mostrar salida
- 6ExplicaciónSitúa una coincidencia dentro de la línea
- 7EjemploSelecciona un carácter de un conjunto
- 8Idea clavePermite cero apariciones
- 9DesafíoBusca una terminación literal de nombre de archivo
- 10ExplicaciónActiva los operadores extendidos
- 11EjemploComprueba un código completo
- 12EjemploAgrupa una elección o una parte repetida
- 13DesafíoExtrae partes e inspecciona sus límites
- 14DesafíoConserva solo los ajustes activos
- 15RepasoComprueba el patrón y el informe por separado
5Selecciona archivos antes de actuar sobre ellos
12 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónSepara los nombres del contenido
- 2ExplicaciónElige el directorio inicial
- 3EjemploCombina el tipo con el nombre
- 4DesafíoConserva el comodín para find
- 5ExplicaciónCompara unidades de tamaño redondeadas
- 6DesafíoInterpreta el límite de días
- 7ExplicaciónPasa rutas como argumentos
- 8EjemploBusca solo en el contenido seleccionado
- 9ConsejoColoca una acción destructiva después de sus pruebas
- 10ExplicaciónElige un índice o una búsqueda de comandos
- 11DesafíoElige una comprobación actual del contenido
- 12RepasoAjusta la búsqueda a la información que necesitas
6Haz y guarda una pequeña edición en el terminal
13 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónDistingue el texto de trabajo del texto guardado
- 2ExplicaciónLee los controles de nano
- 3EjemploBusca y reemplaza un valor
- 4DesafíoMueve una línea y corrige un error
- 5ConsejoResponde a la pregunta de salida
- 6ExplicaciónEntra en el modo de escritura de vi
- 7EjemploDesplázate hasta el texto que necesitas
- 8EjemploCambia el ajuste en vi
- 9DesafíoPega el tipo de texto que copiaste
- 10ConsejoHaz pequeñas ediciones y deshaz cambios
- 11DesafíoElige si quieres conservar la edición de vi
- 12DesafíoCompara dos ediciones sin terminar
- 13RepasoTermina guardando o descartando de forma deliberada
Ejercicios de Tuberías y redirección en Linux
Set 1: Elige comandos e interpreta coincidencias10 Preguntas de Práctica
Pregunta 1 de 10
?queue en less, ¿qué hace n?Mostrar respuestaOcultar respuesta
n repite la búsqueda en la dirección establecida, que es hacia atrás después de ?queue. La N mayúscula invertiría esa dirección y buscaría hacia delante. Las teclas significan siguiente o anterior respecto a la búsqueda, no siempre hacia abajo o hacia arriba dentro del archivo.Pregunta 2 de 10
labels.txt tiene ocho líneas terminadas en un salto de línea. ¿En qué se diferencia la salida de wc -l < labels.txt de la de wc -l labels.txt?Mostrar respuestaOcultar respuesta
<, el intérprete abre el archivo y proporciona a wc un flujo de entrada anónimo, por lo que wc imprime el recuento sin el nombre original. Un archivo indicado como argumento permite que wc imprima ambos. Las dos formas cuentan los mismos ocho caracteres de salto de línea; la redirección de entrada no cambia el contenido del archivo.Pregunta 3 de 10
command 2>&1 > result.txt?Mostrar respuestaOcultar respuesta
> result.txt 2>&1.Pregunta 4 de 10
teams.csv contiene «name,team», «Uma,Blue», «Zed,Gold», «Ivo,Blue» y «Moe,Gold», con saltos de línea finales. ¿Qué indica cut -d, -f2 teams.csv | sort | uniq | wc -l?Mostrar respuestaOcultar respuesta
Pregunta 5 de 10
build.txt el texto literal «v3.8», incluido el punto literal?Mostrar respuestaOcultar respuesta
-F trata cada carácter del patrón como texto literal, por lo que el punto debe ser un punto real. Con la interpretación como expresión regular, . puede coincidir con otro carácter, como la «x» de «v3x8». Las comillas protegen el patrón del intérprete, pero no eliminan sus significados de expresión regular.Pregunta 6 de 10
grep '^d.g$' file?Mostrar respuestaOcultar respuesta
Pregunta 7 de 10
grep '^ba*t$' file entre «bt», «bat», «baat» y «boat»?Mostrar respuestaOcultar respuesta
Pregunta 8 de 10
.txt modificados recientemente que contienen «REVIEW». ¿Qué comando aplica las tres restricciones?Mostrar respuestaOcultar respuesta
-l lista los archivos cuyo contenido coincide. Pasar las rutas impresas por find a grep mediante una tubería busca en el texto de las rutas, mientras que -L seleccionaría archivos sin coincidencias en el contenido.Pregunta 9 de 10
Mostrar respuestaOcultar respuesta
Pregunta 10 de 10
yy y pulsas p. ¿Dónde aparece la línea copiada?Mostrar respuestaOcultar respuesta
yy copia una línea completa, por lo que p la coloca debajo de la línea actual. Pegar después del cursor se aplica al texto por caracteres, como un carácter eliminado, no a una copia de línea completa. La P mayúscula colocaría esta línea copiada encima de la línea actual.Set 2: Sigue cadenas de comandos y corrige errores10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
echo done > state.txt escriba su salida?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
parts.txt contiene «pin», «bolt», «pin», «nut» y «bolt», cada uno terminado en un salto de línea. ¿Qué hace sort parts.txt | uniq | tee distinct.txt | wc -l?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
runs.txt contiene «b», «a», «b», «a» y «a», cada uno en su propia línea. ¿Qué par de recuento y valor aparece primero con uniq -c runs.txt | sort -rn?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
cut -d: -f3,1 de la línea «Nia:ops:42»?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
grep -E '^(go)+$' file?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
grep -Eo '[0-9]{1,2}' a partir de esa línea?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
-size -1M de find de GNU?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
locate plan.txt mostrar una ruta que se eliminó esta mañana?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Set 3: Lee texto y sigue su flujo10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
less. ¿Qué única tecla te devuelve al intérprete de comandos?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
tail -n +3 records.txt?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
> report.txt, pero sus mensajes de diagnóstico siguen visibles. ¿Qué flujo transporta esos mensajes?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
command | wc -l?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
sort -n?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
supplies.txt contiene «clip», «ring», «clip», «pad», «clip», «ring» y «clip», cada uno terminado en un salto de línea. ¿Qué dos filas aparecen primero con sort supplies.txt | uniq -c | sort -rn | head -n 2, sin contar el relleno de los recuentos?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
grep -ic 'fail' file?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
docs/a.txt, un directorio docs/b.txt y un archivo normal docs/c.TXT. ¿Qué selecciona find docs -type f -name '*.txt'?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Set 4: Diagnostica procesos de trabajo con archivos y texto10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
ls -lt produce un encabezado «total» seguido de entradas de archivo. ¿Cuántas entradas muestra ls -lt | head -n 6 cuando existen al menos seis entradas?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
sort de forma interactiva, ¿qué señala el fin de la entrada al principio de una línea vacía?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
command 2>&1 | tee combined.txt | wc -l?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
cut -d' ' -f2?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
grep -icw 'alert' file?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
find . -type f -name '*.cfg' -mtime +30?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
I?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Set 5: Combina reglas en casos desconocidos10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
log.txt como err.txt ya contienen texto anterior. ¿Qué ocurre con command >> log.txt 2> err.txt?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
sizes.csv contiene «name,size», «alpha,8», «beta,110» y «gamma,24». ¿Qué cadena imprime primero los dos registros de datos completos con los mayores tamaños numéricos?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
jobs.csv contiene «id,zone», «1,North», «2,South», «3,North», «4,East» y «5,North». ¿Qué par de recuento y valor aparece primero como resultado de tail -n +2 jobs.csv | cut -d, -f2 | sort | uniq -c | sort -rn?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
grep '^r[^ae]d$' file entre «rad», «red», «rid» y «road»?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
grep -Ev '^[[:space:]]*(#|$)' file?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
echo?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
x elimina un carácter. Después pulsas p. ¿Dónde se inserta ese carácter?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
work, sin incluir archivos de directorios más profundos. ¿Qué búsqueda lo hace?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
¿Te atascas con una pregunta tuya? Ayuda con Tareas
Términos Clave
A
Alternancia
| en la sintaxis extendida, a menudo con paréntesis para limitar el alcance de la elección.^(east|west)$, ambas alternativas deben ocupar toda la línea porque comparten las anclas.Ancla
^ para el principio o $ para el final de una línea en búsquedas normales de grep.d.g excluye una línea más larga como «undog», aunque contenga «dog».Añadir al final
>>.>> report.txt reúnen sus resultados en un archivo en lugar de reemplazarlo.B
Búfer
Búsqueda de cadenas literales
-F.grep -F "v2.4" releases.txt para exigir el punto literal en la etiqueta de versión.Búsqueda recursiva
grep -r busca texto en los archivos de ese árbol de directorios.grep -rl TODO notes lista los nombres de archivos con coincidencias sin imprimir todo su texto coincidente.C
Cadena de comandos conectados por tuberías
sort values.txt | uniq | wc -l, el recuento final mide los valores distintos agrupados.Cadena incrustada
wc -w <<< "red blue green" recibe tres palabras sin necesitar un archivo de entrada separado.Campo
cut y seleccionada según el delimitador utilizado en ese registro.Campo vacío
cat
cat es un comando que imprime el contenido de uno o varios archivos en la salida estándar, siguiendo el orden de los archivos indicados como argumentos.cat -n a.txt b.txt se numera su salida combinada sin editar ninguno de los archivos de entrada.Clase de caracteres
[[:digit:]] selecciona un dígito; se necesitan ambos pares de corchetes.Clave de ordenación
sort -k e interpretado según el separador elegido.-k3,3nr compara solo el campo 3, numéricamente y en orden inverso, en una clasificación de puntuaciones.Coincidencia de palabra completa
grep -w error file coincide con «error found», pero rechaza la subcadena dentro de «terror».Concatenación
cat el contenido de varios archivos uno tras otro.cat first.txt second.txt > combined.txt, el texto del primer archivo precede al del segundo.Copiar
yy con una línea completa sin eliminarla del búfer de trabajo.yy seguido de p para duplicar una línea debajo de su posición original en el archivo.Cuantificador
? para texto opcional o {4} para exactamente cuatro repeticiones.[0-9]{4} exige cuatro dígitos; las anclas pueden hacer que sean el contenido completo de la línea.cut
cut es un filtro que selecciona campos o posiciones fijas de caracteres de cada línea de entrada y conserva las partes seleccionadas en su orden original.cut -d: -f1,6 /etc/passwd empareja cada nombre de cuenta con el campo de su directorio personal.D
Delimitador
cut -d selecciona el carácter utilizado para dividir cada línea.Descriptor de archivo
2 de 2> errors.txt selecciona el flujo de error y debe estar pegado al operador de redirección.Dispositivo nulo
/dev/null, es un archivo especial que descarta los datos escritos y permite ocultar deliberadamente un flujo de salida elegido.2>/dev/null oculta los mensajes de diagnóstico de una búsqueda de archivos, incluidos los relativos a directorios que no se pueden leer.Documento incrustado
cat <<EOF, las líneas introducidas antes del EOF de cierre son datos, mientras que esa línea final es un marcador.Duplicación de descriptores
2>&1 con stderr y stdout.command > all.txt 2>&1, stderr recibe la conexión al archivo que stdout ya tiene.E
Editor modal
Entrada estándar
sort < names.txt, el intérprete conecta el archivo a la entrada estándar del comando antes de que se ejecute.Escape de caracteres
\.txt$ exige una terminación «.txt» literal, mientras que .txt$ permite otro carácter antes de «txt».Estado de salida
grep -q utiliza su estado para indicar un resultado sin imprimir las líneas coincidentes.Expresión entre corchetes
b[ae]t coincide con «bat» o «bet», mientras que b[^a]t excluye «a» de la posición central.Expresión regular
^web[0-9]$ describe una línea completa que contiene «web» seguido de un dígito.Expresión regular extendida
?, +, |, las llaves y los paréntesis sus significados especiales sin barras invertidas.grep -E antes de un patrón agrupado como ^(red|blue)$ para activar la alternativa.Extracción de coincidencias
-o de grep para cada coincidencia no vacía.grep -Eo '[0-9]+' imprime los dos números en líneas separadas.F
Fecha y hora de modificación
-mtime de find comprueba la antigüedad transcurrida en periodos completos de 24 horas.-mtime +30 porque solo han transcurrido 30 periodos completos de un día.Filtro
sort, cut y grep actúan cada uno como filtros cuando reciben texto de un comando anterior.find
find busca en un árbol de directorios desde las rutas iniciales indicadas, comprueba las propiedades de cada elemento que encuentra e imprime las rutas seleccionadas o realiza acciones sobre ellas.find notes -type f -name '*.txt' selecciona archivos normales con nombres de texto en todo ese árbol de directorios.find -exec
find -exec ejecuta otro comando sobre las rutas seleccionadas, sustituye {} y utiliza un punto y coma escapado o un signo más para terminar la acción.-exec wc -l {} + pasa lotes de rutas coincidentes a un comando que cuenta sus líneas.G
grep
grep es un comando de búsqueda de texto que normalmente imprime cada línea de entrada que contiene una coincidencia con un patrón y ofrece opciones para cambiar el informe.grep -n WARN app.log para mostrar las líneas coincidentes junto con sus posiciones en el archivo.Grupo
(ab)+ permite «ab» y «abab» porque el signo más repite el grupo completo de dos caracteres.Guardar
H
head
head es un filtro que imprime el principio de su entrada: selecciona diez líneas de forma predeterminada u otro número de líneas o bytes cuando se solicita.head -n 4 notes.txt antes de decidir si necesitas el archivo completo.L
less
less es un paginador que permite avanzar y retroceder, buscar texto y visualizar archivos o salidas recibidas por tubería sin editar el texto.less -N notes.txt cuando quieras números de línea mientras localizas un pasaje concreto en un archivo.locate
locate es una búsqueda rápida de nombres de ruta que consulta una base de datos preparada cuyo contenido puede estar desactualizado respecto a los cambios del sistema de archivos en uso.M
Metacarácter
* del intérprete, pero grep sigue interpretándolo como un operador de expresión regular cuando lo recibe.Modo de inserción
i, a u o y termina con Esc.cw elimine el resto de una palabra, escribe su reemplazo en modo de inserción y después pulsa Esc.Modo de línea de comandos
: en modo normal y lo ejecuta al pulsar Enter.:wq guarda el búfer y sale después de pulsar Enter; wq sin más en modo normal no lo hace.Modo de seguimiento
tail esperando datos añadidos después de su salida inicial, de modo que el nuevo texto puede aparecer mientras un programa escribe en el archivo.tail -f app.log durante una comprobación de la aplicación y pulsa Ctrl+C cuando termines de observar.Modo normal
dd para cortar la línea actual sin escribir accidentalmente esas dos letras.N
nano
nano es un editor de texto de terminal que acepta texto escrito directamente y muestra atajos para guardar, buscar, cortar y salir.nano +12 app.conf cuando un programa indique que un ajuste de la línea 12 necesita atención.O
Ordenación numérica
sort -n para colocar «9» antes de «100» cuando las líneas representen cantidades en lugar de etiquetas.P
Paginador
less /etc/services y después pulsa la barra espaciadora para la siguiente pantalla o q para salir.PATH
PATH es la lista de directorios del intérprete en los que se buscan comandos ejecutables externos y que una herramienta como which utiliza para localizar un archivo de programa.which grep busca en los directorios de comandos en lugar de recorrer todos los directorios del equipo.Profundidad de búsqueda
-maxdepth de find limita cuánto puede descender el recorrido por los subdirectorios.-maxdepth 1 para inspeccionar el directorio inicial y sus entradas inmediatas sin entrar en directorios más profundos.Protección contra sobrescritura
> sobre archivos normales existentes y ayuda a evitar reemplazos accidentales.set -o noclobber, utiliza >| solo cuando quieras omitir la protección de archivos existentes.Prueba de nombre
-name de find distingue entre mayúsculas y minúsculas, mientras que -iname ignora esa diferencia.-name 'plan*' acepta «plan.txt», mientras que -name 'plan' exige ese nombre base exacto.Prueba de tipo
f para un archivo normal, d para un directorio o l para un enlace.-type f impide que un directorio llamado «old.txt» cumpla las condiciones de una búsqueda de archivos de texto.R
Rango de líneas
head y después las últimas diez de esa selección.Recorrido
| sort a una búsqueda simple de rutas cuando necesites que el orden de los resultados impresos sea predecible.Recuento de frecuencias
sort y contando las secuencias con uniq -c.sort -rn después de uniq -c para colocar primero los recuentos mayores al inspeccionar entradas frecuentes.Redirección
sort < names.txt > ordered.txt, el intérprete proporciona un archivo como entrada y abre otro para la salida.S
Salida de error estándar
> puede dejar visible en la salida de error estándar un mensaje sobre una ruta inexistente.Salida estándar
wc -l < names.txt > count.txt, el recuento de líneas viaja por la salida estándar hasta el archivo de informe.Salto de línea
wc -l cuenta estos marcadores, por lo que una última línea sin terminar no se añade al total indicado.Selección marcada
Sustitución
:%s/old/new/g reemplaza cada «old» coincidente en todas las líneas del archivo.T
tail
tail es un filtro que imprime el final de su entrada o comienza en una línea numerada cuando el recuento de líneas va precedido de un signo más.tail -n +2 scores.csv para omitir un encabezado de una línea y conservar todos los registros de datos restantes.tee
tee es un filtro que copia su entrada tanto a un archivo indicado como a la salida estándar, guardando un resultado mientras permite que continúe una cadena de comandos.tee selected.txt antes de una etapa de recuento cuando también necesites inspeccionar las líneas seleccionadas.Texto de ancho fijo
cut -c1-5 aunque el texto posterior varíe.Truncamiento
>, antes de que el comando empiece a leer la entrada.sort names.txt > names.txt pierde los datos originales porque el truncamiento ocurre primero.Tubería
grep -i error app.log | wc -l, las líneas seleccionadas pasan al comando que las cuenta.type
type es un comando integrado de Bash que describe cómo se interpreta un nombre de comando, incluidos un alias, una función, un comando integrado o una ruta de ejecutable.type echo puede indicar un comando integrado aunque which echo señale un archivo ejecutable externo.U
uniq
uniq es un filtro que detecta líneas iguales contiguas y elimina copias repetidas o indica las secuencias seleccionadas y sus recuentos mediante opciones.uniq -c hace que la frecuencia completa de cada valor aparezca como un solo recuento.updatedb
updatedb reconstruye la base de datos utilizada para búsquedas de rutas indexadas, de modo que su vista almacenada refleje las rutas incluidas durante la actualización.sudo updatedb cuando sea adecuada una actualización inmediata de todo el sistema.W
wc
wc es un comando de recuento que indica saltos de línea, palabras y bytes de forma predeterminada, con opciones para seleccionar una medida o contar caracteres.wc -c con wc -m para distinguir bytes de caracteres.Sobre esta unidad
Crea tus propios Materiales de Estudio
Convierte tus notas, diapositivas y documentos en Guías de Estudio, Preguntas de Práctica, Flashcards y 6 herramientas más.