Tuberías y redirección en Linux: procesamiento de texto

Aprende a trabajar con texto en la línea de comandos de Linux. Visualiza archivos con cat, less, head y tail, envía la salida y los mensajes de error a archivos y encadena pequeños comandos para contar, ordenar y extraer texto. Busca dentro de archivos con grep y expresiones regulares, encuentra archivos por nombre, tamaño y antigüedad, y edita archivos de configuración en los editores de terminal nano y vi.

PrincipianteUnidad 3 de 7 del curso Curso de Introducción a Linux

Lo que aprenderás

  1. 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 less
      Imprime 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 tail
      Utiliza 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.
  2. 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ándar
      Describe 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 archivos
      Guarda 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.
  3. 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 tee
      Utiliza 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 duplicadas
      Cuenta 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 cut
      Selecciona campos de texto delimitado y caracteres de posiciones fijas con cut, y utilízalo en cadenas de comandos para responder preguntas sobre datos.
  4. 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 opciones
      Utiliza 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ásicas
      Construye 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 -E
      Utiliza los operadores ?, +, { }, | y ( ) con grep -E para buscar texto opcional, repetido y alternativo, e imprime solo las partes coincidentes.
  5. 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 find
      Utiliza 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ápidas
      Ejecuta 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.
  6. 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 nano
      Abre 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 vi
      Cambia 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.

Guía de estudio de Tuberías y redirección en Linux

6 capítulos

1

Visualiza 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:

TeclaAcción
Barra espaciadora o fAvanzar una pantalla
bRetroceder una pantalla
Flecha abajo, Enter o jBajar una línea
Flecha arriba o kSubir una línea
g / GSaltar a la primera / última línea
h / qMostrar 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

  • cat imprime los archivos en el orden indicado; -n numera la salida combinada.
  • less muestra texto por pantallas sin editarlo; q vuelve al intérprete de comandos.
  • En less, / busca hacia delante, ? busca hacia atrás y n repite la búsqueda en la dirección actual.
  • less -N muestra números de línea; less -S permite 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:

ComandoSignificado
tail -n 2 fileImprimir las dos últimas líneas
tail -n +2 fileImprimir 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

  • head y tail muestran 10 líneas de forma predeterminada; -n establece un número de líneas.
  • tail -n +K comienza 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 -f sigue el texto añadido; Ctrl+C lo detiene.
  • tail -F sigue un nombre de archivo aunque se sustituya el archivo, y -q suprime los encabezados de varios archivos.
2

Controla 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úmeroNombreConexión habitual en el terminal
0Entrada estándar, stdinEntrada del teclado
1Salida estándar, stdoutResultados normales en pantalla
2Salida de error estándar, stderrErrores 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.

OperadorEfecto
> out.txtEscribir stdout, reemplazando el contenido existente
>> out.txtAñadir stdout al final
2> err.txtEscribir stderr, reemplazando el contenido existente
2>> err.txtAñ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>&1 captura ambos flujos porque las redirecciones se ejecutan de izquierda a derecha.
  • 2>&1 > out.txt deja stderr en el destino anterior de stdout.
  • /dev/null descarta el flujo seleccionado, incluidos mensajes de diagnóstico útiles.
  • Evita redirigir sobre un archivo de entrada; sort -o ofrece una alternativa admitida.
  • La protección noclobber de Bash rechaza > normal sobre archivos normales existentes; >| la omite.
3

Combina 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.
  • tee guarda la entrada y la transmite; tee -a añ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ónQué cuenta
-lCaracteres de salto de línea
-wPalabras separadas por espacios en blanco
-cBytes
-mCaracteres

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 -l cuenta saltos de línea, -w palabras, -c bytes y -m caracteres.
  • sort -n compara números; -r invierte el orden; -h interpreta sufijos de tamaño.
  • sort -t, -k3,3nr ordena 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.
  • uniq elimina repeticiones consecutivas; ordena primero cuando los valores iguales están dispersos.
  • uniq -c cuenta secuencias, -d selecciona valores repetidos y -u selecciona valores que aparecen una vez.
  • sort | uniq -c | sort -rn agrupa 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ónCampos impresos
-f1,3Campos 1 y 3
-f2-4Campos 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 -d establece el delimitador y -f selecciona campos numerados a partir de 1.
  • Las listas de campos seleccionan los campos en su orden original; -c selecciona posiciones fijas.
  • El delimitador predeterminado es una tabulación; -s omite las líneas sin delimitador.
  • Los espacios repetidos crean campos vacíos y cut no interpreta las comillas de CSV.
  • Para contar frecuencias, elimina el encabezado, selecciona el valor, agrupa las líneas iguales y cuenta.
4

Busca 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ónResultado
-iBuscar coincidencias sin distinguir mayúsculas y minúsculas
-vImprimir las líneas que no coinciden
-cImprimir el número de líneas coincidentes
-nAnteponer a las coincidencias sus números de línea
-wExigir una coincidencia de palabra completa
-xExigir 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

  • grep imprime 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.
  • -c cuenta las líneas coincidentes; -n las numera; -v selecciona las que no coinciden.
  • -w exige una palabra completa y -x una línea completa.
  • -r busca en un árbol, -l lista los archivos con coincidencias y -L los archivos sin coincidencias.
  • -F trata un patrón como texto literal; -q informa 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ónQué exige
^cUna 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:

OperadorNú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 -E activa ?, +, 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.
  • -o muestra 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.
5

Busca 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

  • find recorre desde una ruta inicial e imprime los elementos que superan sus pruebas.
  • Pon los comodines de nombre entre comillas; -name comprueba el nombre completo y -path la ruta completa.
  • Utiliza -type f, d o l para archivos normales, directorios o enlaces simbólicos.
  • Las pruebas de tamaño redondean hacia arriba antes de comparar; -size -1M selecciona solo archivos vacíos.
  • -mtime +30 comienza en 31 días completos, mientras que -mmin utiliza minutos.
  • Las pruebas contiguas significan Y, -o significa 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 find para 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 -delete tras las pruebas que limitan la selección.
  • locate busca en un índice que puede estar desactualizado.
  • which encuentra archivos ejecutables en PATH; type explica la resolución de comandos de Bash.
6

Edita 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:

  1. Ejecuta nano app.conf.
  2. Pulsa Ctrl+W, introduce «8080» y pulsa Enter.
  3. En la coincidencia, elimina los cuatro dígitos y escribe «9090».
  4. Pulsa Ctrl+O y después Enter para confirmar el nombre del archivo y guardar.
  5. 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
AtajoAcción
Ctrl+KCortar toda la línea actual
Ctrl+UPegar el texto cortado en la posición del cursor
Alt+AEmpezar a marcar una selección
Alt+U / Alt+EDeshacer / 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 y M- 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
ModoFunciónCómo entrar
NormalDesplazarse, eliminar, copiar y emitir comandosEsc
InserciónEscribir texto en el búferi, a, o u otro comando de inserción
Línea de comandosIntroducir 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, o y sus formas en mayúsculas eligen dónde comienza la inserción.
  • dd corta una línea, yy la copia y p coloca texto de líneas completas debajo de la línea o texto por caracteres después del cursor.
  • u deshace y . repite el último cambio.
  • /text busca hacia delante; n repite y N invierte la dirección de búsqueda.
  • :wq guarda y sale; :q! descarta los cambios sin guardar y sale.

Ejemplos de Tuberías y redirección en Linux

6 Lecciones Interactivas

1

Lee un archivo sin perder tu posición

10 pasos
Elige un comando de visualización, desplázate por un paginador y selecciona una parte precisa de un archivo.
  1. 1
    Introducció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 cat y después pasa a less para un archivo demasiado largo para mantenerlo en pantalla. Por último, utiliza head y tail cuando sepas qué parte necesitas. Estos comandos leen texto sin editar el archivo almacenado.

  2. 2
    EjemploUne dos notas cortas

    a.txt contiene «a» y «b» en líneas separadas. b.txt contiene «c d». Ejecuta cat -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.

  3. 3
    ExplicaciónAbre una vista de lectura

    Ejecuta less /etc/services para 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, b retrocede y las teclas de flecha permiten desplazarse por las líneas. g salta a la primera línea; G a la última. Pulsa q para cerrar la vista y volver al intérprete. Es normal que no aparezca el indicador de comandos mientras el paginador está abierto.

  4. 4
    EjemploBusca y continúa

    En less, escribe /ssh y pulsa Enter para buscar «ssh» hacia delante. Pulsa n para la siguiente coincidencia en esa dirección o N para ir en sentido contrario.

    Una búsqueda hacia atrás comienza con ?ssh. Después de esa búsqueda, n continúa hacia atrás. La dirección procede de la búsqueda que iniciaste. less -N file añade números de línea si necesitas anotar la ubicación de una coincidencia.

  5. 5
    Desafí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 N para moverte en dirección contraria a la búsqueda hacia delante y después q para salir. La n minú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.

  6. 6
    ExplicaciónElige un recuento o una línea inicial

    head -n 4 file imprime las primeras cuatro líneas. tail -n 4 file imprime 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 file comienza 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 file elimina ese encabezado. Conserva todos los registros de datos, no solo los dos últimos.

  7. 7
    EjemploSelecciona 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.

  8. 8
    Desafí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.

  9. 9
    Desafí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.log y después Ctrl+C cuando termines. tail sin opciones mostraría el final actual y saldría. tail -F es útil cuando el programa sustituye el archivo durante la rotación, porque sigue el nombre del archivo tras la sustitución.

  10. 10
    RepasoUtiliza la vista adecuada para la tarea

    Para un archivo corto completo, utiliza cat; para desplazarte y buscar, abre less. Un paginador permanece abierto hasta que sales de él.

    Utiliza head y tail para 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 con tail -f y detén el seguimiento con Ctrl+C. La selección también funciona cuando el texto llega por una tubería.

2

Sigue la entrada, los resultados y los errores

11 pasos
Conecta archivos a los flujos estándar y sigue el orden de las redirecciones del intérprete.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónDibuja tres rutas separadas
  2. 2
    ExplicaciónNombra los flujos estándar
  3. 3
    EjemploEnvía los mismos datos por otra ruta
  4. 4
    DesafíoTermina la entrada del teclado
  5. 5
    EjemploProporciona varias líneas debajo de un comando
  6. 6
    ExplicaciónElige entre reemplazar o añadir
  7. 7
    EjemploCombina resultados y mensajes de diagnóstico
  8. 8
    DesafíoInvierte las conexiones
  9. 9
    ConsejoMantén intacta la entrada
  10. 10
    DesafíoCuenta la entrada y separa un mensaje de diagnóstico
  11. 11
    RepasoSigue la preparación del intérprete
3

Construye un informe de texto útil

14 pasos
Inspecciona una cadena de comandos mientras selecciona una columna, agrupa valores, los cuenta y guarda resultados.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónAsigna una tarea a cada etapa
  2. 2
    ExplicaciónConecta los dos comandos
  3. 3
    DesafíoElige una tubería o un archivo
  4. 4
    ExplicaciónConoce qué mide el contador
  5. 5
    EjemploSepara la ordenación del recuento
  6. 6
    DesafíoExplica un duplicado que permanece
  7. 7
    ExplicaciónSelecciona la columna que importa
  8. 8
    EjemploElimina la etiqueta e inspecciona los valores
  9. 9
    DesafíoComprueba una suposición sobre el separador
  10. 10
    EjemploAgrupa los valores seleccionados
  11. 11
    EjemploOrdena los recuentos
  12. 12
    ConexiónConserva datos antes del recuento final
  13. 13
    DesafíoDiagnostica una categoría adicional
  14. 14
    RepasoComprueba qué viaja entre etapas
4

Construye patrones que coincidan con el texto deseado

15 pasos
Elige opciones de grep y después construye patrones básicos y extendidos operador por operador.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónDecide qué cuenta como coincidencia
  2. 2
    ExplicaciónElige un informe de búsqueda
  3. 3
    EjemploDistingue una palabra de una línea
  4. 4
    DesafíoBusca una etiqueta de versión exacta
  5. 5
    ConsejoBusca en un directorio o consulta sin mostrar salida
  6. 6
    ExplicaciónSitúa una coincidencia dentro de la línea
  7. 7
    EjemploSelecciona un carácter de un conjunto
  8. 8
    Idea clavePermite cero apariciones
  9. 9
    DesafíoBusca una terminación literal de nombre de archivo
  10. 10
    ExplicaciónActiva los operadores extendidos
  11. 11
    EjemploComprueba un código completo
  12. 12
    EjemploAgrupa una elección o una parte repetida
  13. 13
    DesafíoExtrae partes e inspecciona sus límites
  14. 14
    DesafíoConserva solo los ajustes activos
  15. 15
    RepasoComprueba el patrón y el informe por separado
5

Selecciona archivos antes de actuar sobre ellos

12 pasos
Elige una raíz de búsqueda, aplica pruebas de archivo y pasa rutas completas al siguiente comando.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónSepara los nombres del contenido
  2. 2
    ExplicaciónElige el directorio inicial
  3. 3
    EjemploCombina el tipo con el nombre
  4. 4
    DesafíoConserva el comodín para find
  5. 5
    ExplicaciónCompara unidades de tamaño redondeadas
  6. 6
    DesafíoInterpreta el límite de días
  7. 7
    ExplicaciónPasa rutas como argumentos
  8. 8
    EjemploBusca solo en el contenido seleccionado
  9. 9
    ConsejoColoca una acción destructiva después de sus pruebas
  10. 10
    ExplicaciónElige un índice o una búsqueda de comandos
  11. 11
    DesafíoElige una comprobación actual del contenido
  12. 12
    RepasoAjusta la búsqueda a la información que necesitas
6

Haz y guarda una pequeña edición en el terminal

13 pasos
Edita un ajuste en nano y vi y después elige si quieres guardar o descartar los cambios de trabajo.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónDistingue el texto de trabajo del texto guardado
  2. 2
    ExplicaciónLee los controles de nano
  3. 3
    EjemploBusca y reemplaza un valor
  4. 4
    DesafíoMueve una línea y corrige un error
  5. 5
    ConsejoResponde a la pregunta de salida
  6. 6
    ExplicaciónEntra en el modo de escritura de vi
  7. 7
    EjemploDesplázate hasta el texto que necesitas
  8. 8
    EjemploCambia el ajuste en vi
  9. 9
    DesafíoPega el tipo de texto que copiaste
  10. 10
    ConsejoHaz pequeñas ediciones y deshaz cambios
  11. 11
    DesafíoElige si quieres conservar la edición de vi
  12. 12
    DesafíoCompara dos ediciones sin terminar
  13. 13
    RepasoTermina guardando o descartando de forma deliberada

Ejercicios de Tuberías y redirección en Linux

50 Preguntas de Práctica en 5 sets

Set 1: Elige comandos e interpreta coincidencias10 Preguntas de Práctica

Pregunta 1 de 10

Después de buscar hacia atrás con ?queue en less, ¿qué hace n?
  1. Encuentra la siguiente coincidencia hacia delante.
  2. Encuentra la siguiente coincidencia hacia atrás.
  3. Avanza a la siguiente pantalla.
  4. Va a la primera línea del archivo.
Mostrar respuestaOcultar respuesta
Respuesta: B
La tecla 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?
  1. Omite el recuento, pero conserva el nombre del archivo.
  2. Imprime un recuento distinto sin nombre de archivo.
  3. Añade una línea de total tras el mismo recuento.
  4. Omite el nombre del archivo, pero conserva el recuento 8.
Mostrar respuestaOcultar respuesta
Respuesta: D
Con <, 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

En un terminal recién abierto, un comando escribe resultados en stdout y mensajes de diagnóstico en stderr. ¿Adónde va cada uno en command 2>&1 > result.txt?
  1. Resultados al archivo; diagnósticos al terminal.
  2. Resultados al terminal; diagnósticos al archivo.
  3. Ambos flujos al archivo; ninguno al terminal.
  4. Ambos flujos al terminal; ninguno al archivo.
Mostrar respuestaOcultar respuesta
Respuesta: A
La primera redirección copia en stderr la conexión actual de stdout con el terminal. La segunda mueve solo stdout al archivo y deja stderr conectado al destino anterior. Para capturar ambos flujos en el archivo se necesita el orden contrario, > 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?
  1. 2
  2. 4
  3. 3
  4. 5
Mostrar respuestaOcultar respuesta
Respuesta: C
La columna seleccionada contiene el encabezado «team» además de «Blue» y «Gold». La ordenación y uniq dejan tres líneas distintas, por lo que el recuento es 3. Contar solo los dos equipos requeriría eliminar el encabezado antes de eliminar duplicados; ninguna etapa de esta cadena lo elimina.

Pregunta 5 de 10

¿Qué comando busca en build.txt el texto literal «v3.8», incluido el punto literal?
  1. grep -F 'v3.8' build.txt
  2. grep -E 'v3.8' build.txt
  3. grep -i 'v3.8' build.txt
  4. grep -w 'v3.8' build.txt
Mostrar respuestaOcultar respuesta
Respuesta: A
La opción -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

Las líneas son «dog», «dig», «drag» y «undog». ¿Qué líneas coinciden con grep '^d.g$' file?
  1. «dog», «dig» y «undog».
  2. «dog» y «dig».
  3. «dog», «dig» y «drag».
  4. «dog», «drag» y «undog».
Mostrar respuestaOcultar respuesta
Respuesta: B
Las anclas exigen que la línea completa contenga d, un carácter y g. Tanto «dog» como «dig» encajan. «undog» contiene una parte coincidente de tres caracteres, pero no cumple el ancla de inicio, mientras que «drag» tiene dos caracteres centrales donde el único punto solo permite uno.

Pregunta 7 de 10

¿Qué líneas coinciden con grep '^ba*t$' file entre «bt», «bat», «baat» y «boat»?
  1. Solo «bat» y «baat».
  2. «bat», «baat» y «boat».
  3. «bt», «bat» y «boat».
  4. «bt», «bat» y «baat».
Mostrar respuestaOcultar respuesta
Respuesta: D
El asterisco se aplica solo a «a» y permite cero o más apariciones entre b y t. Eso incluye «bt», «bat» y «baat». Exigir al menos una «a» descartaría incorrectamente «bt», mientras que permitir letras intermedias arbitrarias aceptaría incorrectamente «boat»; el patrón no hace ninguna de las dos cosas.

Pregunta 8 de 10

Un árbol de notas contiene nombres de archivo con espacios. Necesitas los nombres de archivos .txt modificados recientemente que contienen «REVIEW». ¿Qué comando aplica las tres restricciones?
  1. find notes -type f -name '*.txt' -mtime -7 | grep -l 'REVIEW'
  2. find notes -type f -name '*.md' -mtime -7 -exec grep -l 'REVIEW' {} +
  3. find notes -type f -name '*.txt' -mtime -7 -exec grep -l 'REVIEW' {} +
  4. find notes -type f -name '*.txt' -mtime +7 -exec grep -l 'REVIEW' {} +
Mostrar respuestaOcultar respuesta
Respuesta: C
find selecciona archivos de texto normales modificados hace menos de siete días y después pasa sus rutas completas a grep como argumentos. -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

En la pregunta de salida «Save modified buffer?» de nano, ¿qué tecla vuelve a la edición sin salir del editor?
  1. N
  2. Ctrl+C
  3. Y
  4. Ctrl+O
Mostrar respuestaOcultar respuesta
Respuesta: B
Ctrl+C cancela la salida y vuelve al búfer actual. N, en cambio, acepta salir sin guardar, por lo que descarta las ediciones pendientes. Esta pregunta pide cómo terminar un intento de salida; no pregunta si quieres permanecer en el editor.

Pregunta 10 de 10

En el modo normal de vi, copias una línea con yy y pulsas p. ¿Dónde aparece la línea copiada?
  1. Encima de la línea actual.
  2. Después del cursor dentro de la línea.
  3. Antes del cursor dentro de la línea.
  4. Debajo de la línea actual.
Mostrar respuestaOcultar respuesta
Respuesta: D
El comando 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

Un archivo tiene al menos 28 líneas. ¿Qué comando muestra exactamente las líneas de la 19 a la 28?
  1. head -n 28 file | tail -n 9
  2. head -n 19 file | tail -n 10
  3. head -n 28 file | tail -n +19 | head -n 9
  4. head -n 28 file | tail -n 10
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

¿Qué ocurre con el contenido existente antes de que echo done > state.txt escriba su salida?
  1. Permanece antes de la nueva línea añadida al final.
  2. Se elimina cuando el intérprete abre el archivo.
  3. Se mueve a stderr antes de escribir la nueva línea.
  4. Permanece salvo que echo indique una escritura correcta.
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?
  1. Imprime 5; guarda las cinco líneas originales.
  2. Imprime 3; guarda solo el propio recuento.
  3. Imprime 3; guarda tres nombres distintos.
  4. Imprime 5; guarda tres nombres distintos.
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?
  1. 2 a
  2. 3 a
  3. 2 b
  4. 1 b
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

¿Qué imprime cut -d: -f3,1 de la línea «Nia:ops:42»?
  1. «42:Nia»
  2. «Nia:42»
  3. «Nia:ops»
  4. «42:ops»
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

¿Qué líneas completas coinciden con grep -E '^(go)+$' file?
  1. «go» y «gogo».
  2. «go» y «goo».
  3. «g» y «go».
  4. «go» y «gog».
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Una línea contiene «node=7 node=24 node=301». ¿Qué salida produce grep -Eo '[0-9]{1,2}' a partir de esa línea?
  1. «7» y «24», en líneas separadas.
  2. «7», «24», «301», en líneas separadas.
  3. «7», «24», «30», «1», en líneas separadas.
  4. «7», «2», «4», «3», «0», «1», en líneas separadas.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

¿Cuál de los tamaños 0 bytes, 1 byte, 800 000 bytes y 1 048 576 bytes supera la prueba -size -1M de find de GNU?
  1. 0 bytes y 1 byte.
  2. Todos los tamaños menores de 1 048 576 bytes.
  3. Todos los tamaños indicados, incluido 1 048 576 bytes.
  4. Solo 0 bytes.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

¿Por qué podría locate plan.txt mostrar una ruta que se eliminó esta mañana?
  1. Lee el contenido de archivos eliminados desde la entrada estándar.
  2. Su prueba de nombre ignora el estado actual de cada directorio.
  3. Su base de datos de rutas aún no refleja la eliminación.
  4. Busca en PATH antes de comprobar el nombre solicitado.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Estás en el modo de inserción de vi con cambios que quieres conservar. ¿Qué secuencia guarda y sale?
  1. Esc, :wq, Enter.
  2. Esc, :q!, Enter.
  3. Esc, :q, Enter.
  4. Esc, wq, Enter.
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

Estás leyendo un archivo largo en less. ¿Qué única tecla te devuelve al intérprete de comandos?
  1. g
  2. h
  3. q
  4. n
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

¿Qué imprime tail -n +3 records.txt?
  1. Todas las líneas desde la línea 3.
  2. Solo las últimas tres líneas.
  3. Solo la línea 3 del archivo.
  4. Todas las líneas antes de la línea 3.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Los resultados normales de un comando se guardan con > report.txt, pero sus mensajes de diagnóstico siguen visibles. ¿Qué flujo transporta esos mensajes?
  1. Entrada estándar, descriptor 0.
  2. Salida estándar, descriptor 1.
  3. Salida estándar, descriptor 2.
  4. Salida de error estándar, descriptor 2.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Quieres conservar un informe existente y añadir la salida stdout de un comando al final. ¿Qué redirección lo hace?
  1. > report.txt
  2. >> report.txt
  3. 2> report.txt
  4. < report.txt
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Un comando imprime cinco líneas de resultados normales y dos líneas de diagnóstico. ¿Qué recuento de líneas indica command | wc -l?
  1. 7
  2. 2
  3. 5
  4. 0
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Un archivo contiene «18», «4» y «105», cada uno en su propia línea. ¿Qué orden produce sort -n?
  1. 105, 18, 4
  2. 18, 105, 4
  3. 4, 105, 18
  4. 4, 18, 105
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?
  1. «4 clip» y después «2 ring».
  2. «4 clip» y después «1 pad».
  3. «4 ring» y después «2 clip».
  4. «1 clip» y después «1 ring».
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Un archivo tiene las líneas «FAIL», «fail», «failure» y «all clear». ¿Cuántas líneas cuenta grep -ic 'fail' file?
  1. 1
  2. 3
  3. 2
  4. 4
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

El árbol contiene un archivo normal docs/a.txt, un directorio docs/b.txt y un archivo normal docs/c.TXT. ¿Qué selecciona find docs -type f -name '*.txt'?
  1. Solo docs/a.txt.
  2. Tanto docs/a.txt como docs/b.txt.
  3. Tanto docs/a.txt como docs/c.TXT.
  4. Las tres rutas bajo docs.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Has terminado de editar en nano. ¿Qué secuencia de teclas guarda el búfer actual con el nombre mostrado?
  1. Ctrl+R y después Enter.
  2. Ctrl+K y después Ctrl+U.
  3. Ctrl+O y después Enter.
  4. Ctrl+X y después N.
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

Quieres guardar first.txt seguido de second.txt en joined.txt, con números de línea de salida que continúen entre ambos archivos de entrada. ¿Qué comando lo hace?
  1. cat -n first.txt second.txt > joined.txt
  2. cat first.txt second.txt > joined.txt
  3. cat -n second.txt first.txt > joined.txt
  4. cat -n first.txt second.txt | wc -l > joined.txt
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?
  1. 6
  2. 4
  3. 5
  4. 7
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Al introducir líneas en sort de forma interactiva, ¿qué señala el fin de la entrada al principio de una línea vacía?
  1. Ctrl+C
  2. Ctrl+D
  3. Ctrl+O
  4. Ctrl+W
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Un comando emite cuatro líneas de stdout y una línea de stderr. ¿Qué produce command 2>&1 | tee combined.txt | wc -l?
  1. Imprime 4; guarda solo los resultados normales.
  2. Imprime 5; guarda solo el recuento final.
  3. Imprime 4; guarda resultados y diagnósticos.
  4. Imprime 5; guarda resultados y diagnósticos.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

La línea de entrada es «A B C», con dos espacios después de A. ¿Qué imprime cut -d' ' -f2?
  1. «B»
  2. «C»
  3. Una línea vacía.
  4. «A»
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Un archivo contiene «alert alert», «prealert», «Alert raised» y «all clear». ¿Qué indica grep -icw 'alert' file?
  1. 2
  2. 1
  3. 3
  4. 4
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Una lista contiene «x.cfg», «xXcfg», «x.cfg.old» y «cfg». ¿Qué patrón selecciona solo las líneas que terminan con la extensión literal «.cfg»?
  1. .cfg$
  2. \.cfg
  3. ^\.cfg$
  4. \.cfg$
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Un árbol tiene los archivos normales «old.cfg» (30,9 días de antigüedad), «notes.txt» (31,1 días) y «runtime.cfg» (31,1 días), además de un directorio «archive.cfg» (31,1 días). ¿Qué selecciona find . -type f -name '*.cfg' -mtime +30?
  1. «old.cfg» y «runtime.cfg».
  2. Solo «runtime.cfg».
  3. «notes.txt» y «runtime.cfg».
  4. «runtime.cfg» y «archive.cfg».
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

En nano cortas una línea accidentalmente y quieres restaurarla revirtiendo esa acción. ¿Qué atajo lo hace?
  1. Alt+U
  2. Ctrl+U
  3. Ctrl+K
  4. Alt+A
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Una línea de vi comienza con cuatro espacios antes de «enabled=yes». Desde el modo normal, ¿dónde comienza la inserción con I?
  1. Antes de los cuatro espacios, en la columna uno.
  2. Antes de «enabled», después de los cuatro espacios.
  3. Después de «enabled=yes», al final de la línea.
  4. En una línea vacía nueva encima del ajuste.
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

Un archivo de datos tiene un encabezado de una línea seguido de 30 registros. ¿Qué comando muestra las líneas originales del archivo de la 14 a la 18 después de eliminar el encabezado?
  1. tail -n +2 file | head -n 18 | tail -n 5
  2. tail -n +2 file | head -n 17 | tail -n 4
  3. tail -n +2 file | head -n 17 | tail -n 5
  4. tail -n +2 file | head -n 14 | tail -n 5
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un comando escribe dos líneas normales y una línea de diagnóstico. Tanto log.txt como err.txt ya contienen texto anterior. ¿Qué ocurre con command >> log.txt 2> err.txt?
  1. Las líneas normales reemplazan log; el diagnóstico se añade a err.
  2. Las líneas normales se añaden a log; el diagnóstico reemplaza err.
  3. Ambos flujos se añaden a log; err conserva su texto anterior.
  4. Las líneas normales se añaden a err; el diagnóstico reemplaza log.
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?
  1. tail -n +2 sizes.csv | sort -t, -k2,2r | head -n 2
  2. tail -n +2 sizes.csv | sort -t, -k2,2n | head -n 2
  3. tail -n +2 sizes.csv | sort -t, -k1,1nr | head -n 2
  4. tail -n +2 sizes.csv | sort -t, -k2,2nr | head -n 2
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?
  1. 3 North
  2. 1 North
  3. 2 North
  4. 1 zone
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

¿Qué opción corta hace que grep muestre los números de línea de entrada junto con las líneas coincidentes?
  1. -c
  2. -n
  3. -l
  4. -o
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

¿Qué línea coincide con grep '^r[^ae]d$' file entre «rad», «red», «rid» y «road»?
  1. «rad»
  2. «red»
  3. «rid»
  4. «road»
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Un archivo de configuración contiene « # memo», tres espacios, «mode=fast» y «x#y=on», cada uno en una línea separada. ¿Qué permanece después de grep -Ev '^[[:space:]]*(#|$)' file?
  1. «mode=fast» y «x#y=on».
  2. Solo «mode=fast».
  3. « # memo» y «mode=fast».
  4. Tres espacios y «x#y=on».
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Quieres conocer la interpretación de Bash de un comando, incluido un posible alias o comando integrado. ¿Qué comando debes utilizar para el nombre echo?
  1. which echo
  2. locate echo
  3. find . -name echo
  4. type echo
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

En el modo normal de vi, x elimina un carácter. Después pulsas p. ¿Dónde se inserta ese carácter?
  1. Antes del cursor.
  2. Debajo de la línea actual.
  3. Después del cursor.
  4. Encima de la línea actual.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Necesitas los archivos normales situados directamente dentro de work, sin incluir archivos de directorios más profundos. ¿Qué búsqueda lo hace?
  1. find work -maxdepth 1 -type d
  2. find work -maxdepth 1 -type f
  3. find work -maxdepth 2 -type f
  4. find work -maxdepth 0 -type f
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

¿Te atascas con una pregunta tuya? Ayuda con Tareas

Términos Clave

72 Términos Clave, cada uno con su definición

A

Alternancia
La alternancia expresa una elección entre patrones de expresión regular mediante | en la sintaxis extendida, a menudo con paréntesis para limitar el alcance de la elección.
En ^(east|west)$, ambas alternativas deben ocupar toda la línea porque comparten las anclas.
Ancla
Un ancla restringe una coincidencia de expresión regular a una posición, como ^ para el principio o $ para el final de una línea en búsquedas normales de grep.
Añadir ambas anclas a d.g excluye una línea más larga como «undog», aunque contenga «dog».
Añadir al final
Añadir al final significa agregar una salida al final de un archivo conservando su contenido existente; para la salida estándar de un comando se utiliza >>.
Los comandos repetidos que usan >> report.txt reúnen sus resultados en un archivo en lugar de reemplazarlo.

B

Búfer
Un búfer es la copia de trabajo de un texto que un editor mantiene en memoria y que puede contener cambios aún no escritos en el archivo del disco.
Si nano indica un error de permisos al guardar, el búfer editado puede diferir del archivo almacenado.
Búsqueda de cadenas literales
Una búsqueda de cadenas literales trata los caracteres del patrón como texto literal, por lo que los puntos y asteriscos pierden su significado de expresión regular cuando grep utiliza -F.
Utiliza grep -F "v2.4" releases.txt para exigir el punto literal en la etiqueta de versión.
Búsqueda recursiva
Una búsqueda recursiva recorre un directorio y sus subdirectorios; 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
Una cadena de comandos conectados por tuberías es una serie de comandos unidos mediante tuberías, en la que cada etapa recibe los datos producidos por la etapa inmediatamente anterior.
En sort values.txt | uniq | wc -l, el recuento final mide los valores distintos agrupados.
Cadena incrustada
Una cadena incrustada es una redirección de entrada de Bash que proporciona a un comando una sola cadena seguida de un salto de línea mediante la entrada estándar.
El comando wc -w <<< "red blue green" recibe tres palabras sin necesitar un archivo de entrada separado.
Campo
Un campo es una parte de un registro separado por delimitadores, numerada a partir de 1 por cut y seleccionada según el delimitador utilizado en ese registro.
En «Lena,Oslo,74», el campo 2 es «Oslo» cuando se elige la coma como separador de la línea.
Campo vacío
Un campo vacío no tiene caracteres entre sus separadores, por lo que los delimitadores consecutivos pueden producir un campo que parece un valor ausente.
Con un espacio como delimitador, «a b» tiene un segundo campo vacío entre sus dos espacios.
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.
Al ejecutar cat -n a.txt b.txt se numera su salida combinada sin editar ninguno de los archivos de entrada.
Clase de caracteres
Una clase de caracteres es un grupo con nombre, como dígitos, letras o espacios en blanco, que se utiliza dentro de una expresión entre corchetes y depende de la configuración de idioma.
La expresión completa [[:digit:]] selecciona un dígito; se necesitan ambos pares de corchetes.
Clave de ordenación
Una clave de ordenación es el campo o la parte de una línea que se utiliza para comparar, seleccionado con sort -k e interpretado según el separador elegido.
La clave -k3,3nr compara solo el campo 3, numéricamente y en orden inverso, en una clasificación de puntuaciones.
Coincidencia de palabra completa
Una coincidencia de palabra completa exige que el texto coincidente ocupe una palabra entera, aunque otras palabras pueden aparecer en la misma línea.
grep -w error file coincide con «error found», pero rechaza la subcadena dentro de «terror».
Concatenación
La concatenación une secuencias de texto en orden, por ejemplo, al imprimir con cat el contenido de varios archivos uno tras otro.
Con cat first.txt second.txt > combined.txt, el texto del primer archivo precede al del segundo.
Copiar
Copiar significa copiar texto en vi para pegarlo después, como hace yy con una línea completa sin eliminarla del búfer de trabajo.
Utiliza yy seguido de p para duplicar una línea debajo de su posición original en el archivo.
Cuantificador
Un cuantificador especifica cuántas veces puede aparecer el elemento anterior de una expresión regular, como ? para texto opcional o {4} para exactamente cuatro repeticiones.
La expresión [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.
El comando cut -d: -f1,6 /etc/passwd empareja cada nombre de cuenta con el campo de su directorio personal.

D

Delimitador
Un delimitador es un separador entre campos, como dos puntos, una coma o una tabulación; cut -d selecciona el carácter utilizado para dividir cada línea.
Para el registro «Mia:ops:41», el delimitador de dos puntos hace que «ops» sea el campo 2 independientemente de la longitud de la palabra.
Descriptor de archivo
Un descriptor de archivo es un número que identifica una conexión abierta de entrada o salida, incluidos 0 para stdin, 1 para stdout y 2 para stderr.
El 2 de 2> errors.txt selecciona el flujo de error y debe estar pegado al operador de redirección.
Dispositivo nulo
El dispositivo nulo, /dev/null, es un archivo especial que descarta los datos escritos y permite ocultar deliberadamente un flujo de salida elegido.
Añadir 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
Un documento incrustado proporciona varias líneas como entrada estándar y termina cuando el intérprete llega a una línea que contiene solo el delimitador elegido.
Con 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
La duplicación de descriptores conecta un flujo numerado al destino actual de otro flujo, como hace 2>&1 con stderr y stdout.
En command > all.txt 2>&1, stderr recibe la conexión al archivo que stdout ya tiene.

E

Editor modal
Un editor modal asigna distintos significados a las mismas teclas según el modo y separa la introducción de texto de los comandos para desplazarse y editar.
En vi, pulsar «x» elimina un carácter en el modo normal, pero escribe una «x» en el modo de inserción.
Entrada estándar
La entrada estándar es el flujo de datos de entrada de un comando, con el número 0, que el intérprete puede conectar al teclado, a un archivo o a una tubería.
En sort < names.txt, el intérprete conecta el archivo a la entrada estándar del comando antes de que se ejecute.
Escape de caracteres
El escape de caracteres utiliza una barra invertida para cambiar cómo se interpreta un carácter especial, por ejemplo, para que un punto de expresión regular coincida con un punto literal en lugar de con cualquier carácter.
El patrón \.txt$ exige una terminación «.txt» literal, mientras que .txt$ permite otro carácter antes de «txt».
Estado de salida
Un estado de salida es un número que un comando devuelve al intérprete, como los valores habituales de grep: 0 si hay una coincidencia, 1 si no hay ninguna o 2 si hay un error.
Una búsqueda silenciosa con grep -q utiliza su estado para indicar un resultado sin imprimir las líneas coincidentes.
Expresión entre corchetes
Una expresión entre corchetes selecciona un carácter de un conjunto o rango; un circunflejo inicial dentro del conjunto invierte qué caracteres se aceptan.
El patrón b[ae]t coincide con «bat» o «bet», mientras que b[^a]t excluye «a» de la posición central.
Expresión regular
Una expresión regular es un patrón que describe texto coincidente mediante caracteres literales y operadores de posición, elección o repetición.
El patrón ^web[0-9]$ describe una línea completa que contiene «web» seguido de un dígito.
Expresión regular extendida
Una expresión regular extendida da a operadores como ?, +, |, las llaves y los paréntesis sus significados especiales sin barras invertidas.
Utiliza grep -E antes de un patrón agrupado como ^(red|blue)$ para activar la alternativa.
Extracción de coincidencias
La extracción de coincidencias imprime fragmentos de texto coincidentes en lugar de líneas de entrada completas, como hace la opción -o de grep para cada coincidencia no vacía.
Si una línea contiene «id=42 id=57», grep -Eo '[0-9]+' imprime los dos números en líneas separadas.

F

Fecha y hora de modificación
La fecha y hora de modificación registra cuándo cambió por última vez el contenido de un archivo; -mtime de find comprueba la antigüedad transcurrida en periodos completos de 24 horas.
Un archivo modificado hace 30,5 días no supera -mtime +30 porque solo han transcurrido 30 periodos completos de un día.
Filtro
Un filtro lee datos de la entrada estándar, los selecciona o modifica y escribe un resultado en la salida estándar para poder trabajar en una cadena de comandos conectados por tuberías.
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.
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.
Utiliza grep -n WARN app.log para mostrar las líneas coincidentes junto con sus posiciones en el archivo.
Grupo
Un grupo de una expresión regular coloca una secuencia entre paréntesis para que un operador pueda actuar sobre ella como un solo elemento o para que las alternativas compartan el texto que las rodea.
La expresión (ab)+ permite «ab» y «abab» porque el signo más repite el grupo completo de dos caracteres.
Guardar
Guardar es la acción de nano que se inicia con Ctrl+O y se completa al confirmar el nombre del archivo de destino, normalmente con Enter.
Después de cambiar un ajuste, utiliza Guardar antes de salir si quieres conservar el nuevo texto en el disco.

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.
Inspecciona el principio de un archivo con 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.
Utiliza 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.
Una nota recién creada puede no aparecer en los resultados de locate hasta que se actualice la base de datos de rutas.

M

Metacarácter
Un metacarácter tiene un significado especial en un patrón, como el punto de expresión regular para un carácter o el asterisco para repetir el elemento anterior.
Las comillas protegen * del intérprete, pero grep sigue interpretándolo como un operador de expresión regular cuando lo recibe.
Modo de inserción
El modo de inserción hace que los caracteres tecleados se conviertan en texto en el búfer de vi; se inicia mediante comandos como i, a u o y termina con Esc.
Después de que 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
El modo de línea de comandos acepta un comando en la línea inferior de vi después de escribir : en modo normal y lo ejecuta al pulsar Enter.
El comando :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
El modo de seguimiento mantiene 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.
Ejecuta tail -f app.log durante una comprobación de la aplicación y pulsa Ctrl+C cuando termines de observar.
Modo normal
El modo normal es el estado de comandos de vi, en el que las teclas mueven el cursor o editan texto y Esc establece ese estado antes de otro comando.
Pulsa Esc y después 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.
Abre nano +12 app.conf cuando un programa indique que un ajuste de la línea 12 necesita atención.

O

Ordenación numérica
Una ordenación numérica compara los valores numéricos de los campos de texto, de modo que valores como 9 y 100 se ordenan por magnitud en lugar de por su primer dígito.
Utiliza sort -n para colocar «9» antes de «100» cuando las líneas representen cantidades en lugar de etiquetas.

P

Paginador
Un paginador es un programa que muestra texto pantalla a pantalla y espera teclas de navegación, lo que permite leer una salida larga al propio ritmo.
Abre una lista larga con 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
La profundidad de búsqueda mide los niveles por debajo de una ruta inicial; -maxdepth de find limita cuánto puede descender el recorrido por los subdirectorios.
Utiliza -maxdepth 1 para inspeccionar el directorio inicial y sus entradas inmediatas sin entrar en directorios más profundos.
Protección contra sobrescritura
La protección contra sobrescritura es una opción de Bash que bloquea la redirección normal > sobre archivos normales existentes y ayuda a evitar reemplazos accidentales.
Después de set -o noclobber, utiliza >| solo cuando quieras omitir la protección de archivos existentes.
Prueba de nombre
Una prueba de nombre compara el nombre base completo de un elemento con un patrón de comodines; -name de find distingue entre mayúsculas y minúsculas, mientras que -iname ignora esa diferencia.
La prueba -name 'plan*' acepta «plan.txt», mientras que -name 'plan' exige ese nombre base exacto.
Prueba de tipo
Una prueba de tipo restringe una búsqueda de archivos a una clase de elemento, mediante códigos como f para un archivo normal, d para un directorio o l para un enlace.
Añadir -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
Un rango de líneas es una selección consecutiva de líneas numeradas con una posición inicial y otra final, normalmente con ambos extremos incluidos.
Para mostrar las líneas 11–20, conserva las primeras 20 líneas con head y después las últimas diez de esa selección.
Recorrido
Un recorrido visita elementos de un árbol de directorios y pasa por los subdirectorios según sea necesario; el orden de recorrido de find no tiene por qué ser alfabético.
Añade | sort a una búsqueda simple de rutas cuando necesites que el orden de los resultados impresos sea predecible.
Recuento de frecuencias
Un recuento de frecuencias indica cuántas veces aparece cada valor y suele construirse agrupando líneas iguales con sort y contando las secuencias con uniq -c.
Añade sort -rn después de uniq -c para colocar primero los recuentos mayores al inspeccionar entradas frecuentes.
Redirección
La redirección es una operación del intérprete que cambia de dónde lee un comando la entrada o adónde envía la salida, y establece las conexiones antes de la ejecución.
En 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
La salida de error estándar es el flujo de diagnóstico con el número 2, separado de los resultados normales para que los errores y mensajes de estado puedan dirigirse de forma independiente.
Guardar un listado de directorio con > puede dejar visible en la salida de error estándar un mensaje sobre una ruta inexistente.
Salida estándar
La salida estándar es el flujo de resultados normales de un comando, con el número 1, que puede dirigirse al terminal, a un archivo de salida o a otro comando.
En 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
Un salto de línea marca el final de una línea de texto; wc -l cuenta estos marcadores, por lo que una última línea sin terminar no se añade al total indicado.
Un texto que contiene «one», un salto de línea y después «two» da un recuento de 1 salto de línea si no hay ningún marcador final.
Selección marcada
Una selección marcada es el texto elegido entre una marca inicial y el cursor, de modo que nano pueda cortar la parte elegida en lugar de una línea completa.
Pulsa Alt+A para empezar a marcar, desplázate al otro extremo y después utiliza Ctrl+K para cortar el texto seleccionado.
Sustitución
Una sustitución reemplaza texto coincidente mediante la línea de comandos de vi, con un rango que elige las líneas y opciones que controlan el reemplazo dentro de ellas.
El comando :%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.
Utiliza 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.
Inserta tee selected.txt antes de una etapa de recuento cuando también necesites inspeccionar las líneas seleccionadas.
Texto de ancho fijo
El texto de ancho fijo coloca la información en posiciones de caracteres constantes en cada línea, lo que permite seleccionar posiciones en lugar de dividir por delimitadores.
Un código de cinco caracteres al principio de cada línea puede seleccionarse con cut -c1-5 aunque el texto posterior varíe.
Truncamiento
El truncamiento vacía un archivo de salida existente cuando el intérprete lo abre para una redirección normal con >, antes de que el comando empiece a leer la entrada.
El comando sort names.txt > names.txt pierde los datos originales porque el truncamiento ocurre primero.
Tubería
Una tubería conecta la salida estándar de un comando con la entrada estándar de otro y transmite datos sin un archivo intermedio guardado.
En 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.
Ordenar valores dispersos antes de 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.
Un administrador puede ejecutar 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.
Para texto UTF-8 como «café», compara wc -c con wc -m para distinguir bytes de caracteres.

Sobre esta unidad

Por StudeliInformar de un error

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.

Comenzar