Category: Linux Basis

Comments

April 27, 2025

Introducción a la terminología, interfaces y protocolos de redes

Introducción

Comprender las redes es fundamental para cualquier persona que administre un servidor. No solo es esencial para que sus servicios estén en línea y funcionen sin problemas, sino que también le proporciona la información necesaria para diagnosticar problemas.

Este artículo ofrece una descripción general de algunos conceptos comunes de redes. Analizaremos la terminología, los protocolos comunes y las responsabilidades y características de las diferentes capas de red.

Esta guía es independiente del sistema operativo, pero debería ser muy útil al implementar funciones y servicios que utilizan redes en su servidor.

Glosario de redes

Primero, definiremos algunos términos comunes que verá a lo largo de esta guía y en otras guías y documentación sobre redes.

Estos términos se ampliarán en las secciones correspondientes que siguen:

  • Conexión : En redes, una conexión se refiere a la información relacionada que se transfiere a través de una red. Generalmente, una conexión se establece antes de la transferencia de datos (siguiendo los procedimientos establecidos en un protocolo) y puede desestructurarse al final de la transferencia.
  • Paquete : Un paquete es la unidad más pequeña que se transfiere intencionalmente a través de una red. Al comunicarse a través de una red, los paquetes son los sobres que transportan los datos (en fragmentos) de un extremo a otro.

Los paquetes tienen una sección de encabezado que contiene información sobre el paquete, incluyendo el origen y el destino, las marcas de tiempo, los saltos de red, etc. La sección principal del paquete contiene los datos que se transfieren. A veces se denomina cuerpo o carga útil.

  • Interfaz de red : Una interfaz de red puede referirse a cualquier tipo de interfaz de software con hardware de red. Por ejemplo, si tiene dos tarjetas de red en su computadora, puede controlar y configurar cada interfaz de red asociada a ellas individualmente.

Una interfaz de red puede estar asociada a un dispositivo físico o ser la representación de una interfaz virtual. El dispositivo de bucle invertido, una interfaz virtual disponible en la mayoría de los entornos Linux para conectarse a la misma máquina, es un ejemplo de ello.

  • LAN : LAN significa «red de área local». Se refiere a una red o a una parte de ella que no es accesible públicamente a internet. Una red doméstica o de oficina es un ejemplo de LAN.
  • WAN : WAN significa “red de área extensa”. Se refiere a una red mucho más extensa que una LAN. Si bien WAN es el término relevante para describir redes grandes y dispersas en general, generalmente se refiere a Internet en su conjunto.

Si se dice que una interfaz está conectada a la WAN, generalmente se supone que es accesible a través de Internet.

  • Protocolo : Un protocolo es un conjunto de reglas y estándares que definen un lenguaje que los dispositivos pueden usar para comunicarse. Existe una gran cantidad de protocolos ampliamente utilizados en redes, y a menudo se implementan en diferentes capas.

Algunos protocolos de bajo nivel son TCP, UDP, IP e ICMP. Algunos ejemplos conocidos de protocolos de capa de aplicación, basados ​​en estos protocolos de bajo nivel, son HTTP (para acceder a contenido web), SSH y TLS/SSL.

  • Puerto : Un puerto es una dirección en una sola máquina que puede vincularse a un programa específico. No es una interfaz ni una ubicación física, pero permite que su servidor se comunique mediante más de una aplicación.
  • Cortafuegos : Un cortafuegos es un programa que decide si se debe permitir el tráfico entrante o saliente de un servidor. Un cortafuegos suele funcionar creando reglas que determinan qué tipo de tráfico es aceptable en qué puertos. Generalmente, los cortafuegos bloquean los puertos que no utiliza una aplicación específica en un servidor.
  • NAT : NAT significa Traducción de Direcciones de Red. Es una forma de reempaquetar y enviar las solicitudes entrantes a un servidor de enrutamiento a los dispositivos o servidores correspondientes en una LAN. Esto se suele implementar en redes LAN físicas para enrutar las solicitudes a través de una dirección IP a los servidores backend necesarios.
  • VPN : VPN significa red privada virtual. Es un medio para conectar redes LAN independientes a través de internet, manteniendo la privacidad. Se utiliza para conectar sistemas remotos como si estuvieran en una red local, a menudo por razones de seguridad.

Encontrará muchos otros términos, y esta lista no es exhaustiva. Explicaremos otros términos según sea necesario. En este punto, debería comprender algunos conceptos generales que nos permitirán abordar mejor los temas que se tratarán a continuación.

Capas de red

Si bien las redes suelen analizarse en términos de topología de manera horizontal, entre hosts su implementación se realiza en capas de manera vertical dentro de cualquier computadora o red determinada.

Esto significa que existen múltiples tecnologías y protocolos que se complementan para que la comunicación funcione. Cada capa superior abstrae un poco más los datos sin procesar.

También le permite aprovechar las capas inferiores de nuevas maneras sin tener que invertir tiempo y energía para desarrollar los protocolos y aplicaciones que manejan esos tipos de tráfico.

El lenguaje que usamos para describir cada esquema de capas varía significativamente según el modelo utilizado. Independientemente del modelo utilizado para describir las capas, la ruta de los datos es la misma.

A medida que los datos se envían desde una máquina, comienzan en la parte superior de la pila y se filtran hacia abajo. En el nivel más bajo, se produce la transmisión real a otra máquina. En este punto, los datos vuelven a ascender a través de las capas de la otra computadora.

Cada capa tiene la capacidad de agregar su propio “envoltorio” alrededor de los datos que recibe de la capa adyacente, lo que ayudará a las capas que vienen después a decidir qué hacer con los datos cuando se entregan.

Modelo TCP/IP

El modelo TCP/IP, más conocido como el conjunto de protocolos de Internet, es un modelo de capas ampliamente adoptado. Define cuatro capas independientes:

  • Aplicación : En este modelo, la capa de aplicación se encarga de crear y transmitir datos de usuario entre aplicaciones. Las aplicaciones pueden estar en sistemas remotos y deben funcionar como si estuvieran localmente para el usuario final. Se dice que esta comunicación se realiza entre pares .
  • Transporte : La capa de transporte es responsable de la comunicación entre procesos. Este nivel de red utiliza puertos para gestionar diferentes servicios.
  • Internet : La capa de Internet se utiliza para transportar datos entre nodos de una red. Esta capa conoce los puntos finales de las conexiones, pero no se ocupa de la conexión real necesaria para llegar de un lugar a otro. Las direcciones IP se definen en esta capa como una forma de acceder a sistemas remotos de forma direccionable.
  • Enlace : La capa de enlace implementa la topología de la red local, lo que permite que la capa de Internet presente una interfaz direccionable. Establece conexiones entre nodos vecinos para el envío de datos.

Como puede ver, el modelo TCP/IP es abstracto y fluido. Esto popularizó su implementación y le permitió convertirse en la forma dominante de categorizar las capas de red.

Interfaces

Las interfaces son puntos de comunicación de red para su computadora. Cada interfaz está asociada a un dispositivo de red físico o virtual.

Normalmente, su servidor tendrá una interfaz de red configurable para cada tarjeta de Internet Ethernet o inalámbrica que tenga.

Además, definirá una interfaz de red virtual denominada “loopback” o interfaz localhost. Esta se utiliza para conectar aplicaciones y procesos de un mismo ordenador con otros. En muchas herramientas, se denomina “lo”.

Muchas veces, los administradores configuran una interfaz para atender el tráfico a Internet y otra interfaz para una LAN o red privada.

En centros de datos con redes privadas habilitadas (incluidos los Droplets de DigitalOcean), su VPS tendrá dos interfaces de red. La interfaz “eth0” se configurará para gestionar el tráfico de internet, mientras que la interfaz “eth1” se comunicará con una red privada.

Protocolos

Las redes funcionan mediante la superposición de varios protocolos diferentes. De esta forma, un mismo dato puede transmitirse utilizando múltiples protocolos encapsulados entre sí.

Comenzaremos con protocolos implementados en las capas de red inferiores y avanzaremos hasta llegar a protocolos con mayor abstracción.

Control de acceso al medio

El control de acceso al medio es un protocolo de comunicaciones que se utiliza para distinguir dispositivos específicos. Cada dispositivo debe recibir una dirección MAC (dirección de control de acceso al medio ) única y codificada durante su fabricación, lo que lo diferencia de cualquier otro dispositivo en internet.

Direccionar el hardware mediante la dirección MAC le permite hacer referencia a un dispositivo mediante un valor único incluso cuando el software superior puede cambiar el nombre de ese dispositivo específico durante la operación.

El direccionamiento MAC es uno de los únicos protocolos de la capa de enlace de bajo nivel con el que probablemente interactuará de manera regular.

Propiedad intelectual

El protocolo IP es uno de los protocolos fundamentales que permiten el funcionamiento de internet. Las direcciones IP son únicas en cada red y permiten que las máquinas se direccionen entre sí a través de ella. Se implementa en la capa de internet del modelo TCP/IP.

Las redes pueden conectarse entre sí, pero el tráfico debe enrutarse al cruzar los límites de la red. Este protocolo asume una red poco fiable y múltiples rutas hacia el mismo destino, entre las que puede cambiar dinámicamente.

Existen diversas implementaciones del protocolo. La implementación más común actualmente son las direcciones IPv4, que siguen el patrón [número] 123.123.123.123, aunque las direcciones IPv6, que también siguen el patrón [número] 2001:0db8:0000:0000:0000:ff00:0042:8329, están ganando popularidad debido a la cantidad limitada de direcciones IPv4 disponibles.

ICMP

ICMP significa Protocolo de Mensajes de Control de Internet. Se utiliza para enviar mensajes entre dispositivos para indicar su disponibilidad o errores. Estos paquetes se utilizan en diversas herramientas de diagnóstico de red, como pingy traceroute.

Normalmente, los paquetes ICMP se transmiten cuando un tipo de paquete diferente detecta un problema. Se utilizan como mecanismo de retroalimentación para las comunicaciones de red.

TCP

TCP significa protocolo de control de transmisión. Se implementa en la capa de transporte del modelo TCP/IP y se utiliza para establecer conexiones fiables.

TCP es uno de los protocolos que encapsula datos en paquetes. Luego, los transfiere al extremo remoto de la conexión mediante los métodos disponibles en las capas inferiores. En el otro extremo, puede comprobar si hay errores, solicitar el reenvío de ciertos fragmentos y reensamblar la información en un único fragmento lógico para enviarlo a la capa de aplicación.

El protocolo establece una conexión antes de la transferencia de datos mediante un sistema denominado protocolo de enlace de tres vías. Este protocolo permite que ambos extremos de la comunicación reconozcan la solicitud y acuerden un método para garantizar la fiabilidad de los datos.

Una vez enviados los datos, la conexión se interrumpe mediante un protocolo de enlace de cuatro vías similar.

TCP es el protocolo elegido para muchos de los usos más populares de Internet, incluidos WWW, SSH y el correo electrónico.

UDP

UDP significa protocolo de datagramas de usuario. Es un protocolo complementario popular de TCP y también se implementa en la capa de transporte.

La diferencia fundamental entre UDP y TCP es que UDP ofrece una transferencia de datos poco fiable. No verifica la recepción de datos en el otro extremo de la conexión. Esto podría parecer perjudicial, y para muchos propósitos lo es. Sin embargo, también es fundamental para ciertas funciones.

Dado que no es necesario esperar la confirmación de la recepción de los datos ni forzar su reenvío, UDP es mucho más rápido que TCP. No establece una conexión con el host remoto, simplemente envía datos sin confirmación.

Al ser una transacción directa, resulta útil para comunicaciones como la consulta de recursos de red. Además, no mantiene un estado, lo que la hace ideal para transmitir datos desde una máquina a varios clientes en tiempo real. Esto la hace ideal para VoIP, juegos y otras aplicaciones que no admiten retrasos.

HTTP

HTTP significa protocolo de transferencia de hipertexto. Es un protocolo definido en la capa de aplicación que constituye la base de la comunicación en la web.

HTTP define varios verbos que indican al sistema remoto qué se solicita. Por ejemplo, GET, POST y DELETE interactúan con los datos solicitados de forma diferente. Para ver un ejemplo de las diferentes solicitudes HTTP en acción, consulte Cómo definir rutas y métodos de solicitud HTTP en Express .

DNS

DNS significa sistema de nombres de dominio. Es un protocolo de capa de aplicación que proporciona un mecanismo de nombres intuitivo para los recursos de internet. Es lo que vincula un nombre de dominio a una dirección IP y permite acceder a sitios web por su nombre en el navegador.

SSH

SSH significa Secure Shell. Es un protocolo cifrado implementado en la capa de aplicación que permite comunicarse con un servidor remoto de forma segura. Muchas tecnologías adicionales se basan en este protocolo gracias a su cifrado de extremo a extremo y su ubicuidad.

Hay muchos otros protocolos que no hemos cubierto y que son igualmente importantes. Sin embargo, esto debería brindarle una buena visión general de algunas de las tecnologías fundamentales que hacen posible internet y las redes.

Conclusión

En este punto, debería estar familiarizado con la terminología de redes y comprender cómo se comunican los diferentes componentes. Esto le ayudará a comprender otros artículos y la documentación de su sistema.

A continuación, para ver un ejemplo de alto nivel del mundo de la lectura, puede leer Cómo realizar solicitudes HTTP en Go .

Stephen Dove
Comments

April 27, 2025

Cómo usar Vim para la edición avanzada de texto plano o código en un VPS

Introducción


Vim, una mejora del vieditor de texto clásico, es extremadamente potente para editar código y texto plano. Aunque al principio pueda parecer obtuso y difícil, es una de las formas más eficientes de editar texto gracias a su sintaxis de comandos similar a la del lenguaje.

En un artículo anterior, explicamos cómo instalar Vim y realizar ediciones básicas . En este documento, abordaremos temas más avanzados que pueden ayudar a demostrar la versatilidad de la edición.

Asumiremos que ha instalado vim y está familiarizado con los comandos básicos de movimiento y edición analizados en el artículo vinculado anteriormente.

Navegación avanzada


Antes de comenzar con nuevo material, repasemos un poco la navegación que aprendimos en el artículo anterior:

  • Movimientos básicos
    • h: izquierda
    • l: derecha
    • j: abajo
    • k: arriba
  • Otros movimientos
    • gg: parte superior del documento
    • G: parte inferior del documento o número de línea si se coloca un número delante de G
    • w: siguiente palabra
    • e: fin de palabra
    • 0: comienzo de línea
    • $: fin de línea

Como pueden ver, ya tenemos bastantes comandos de movimiento a nuestra disposición. Sin embargo, también podemos dirigir el movimiento de otras maneras.

Podemos mover el cursor a diferentes áreas en la porción actualmente visible de la página usando estos comandos:

  • H : Mueve el cursor a la parte superior de la página visible actualmente (piensa en “alto”)
  • M : Mueve el cursor al centro de la página visible actualmente
  • L : Mueve el cursor a la parte inferior de la página visible actualmente (piensa en “abajo”)

Si queremos mover la página en lugar del cursor (como en el desplazamiento), podemos utilizar estos comandos:

  • CTRL-D : Av Pág
  • CTRL-U : Re Pág
  • CTRL-E : desplazarse hacia abajo una línea
  • CTRL-Y : desplazarse hacia arriba una línea

También podemos navegar por bloques lógicos de información. Esto puede ser útil si se escribe texto normal en lugar de código. Son similares a los comandos de navegación por palabras y líneas.

  • ) : Mover al inicio de la siguiente oración
  • ( : Mover al inicio de la última oración
  • } : Mover al inicio del siguiente párrafo (delimitado por una línea en blanco)
  • { : Mover al inicio del último párrafo (delimitado por una línea en blanco)

También puedes definir tus propios puntos en el archivo para saltar a ellos. Puedes establecerlos marksen cualquier punto del archivo. Luego, puedes referenciar esas marcas para saltar a ese punto o pasarlo a un comando que acepte movimientos:

  • m : Escribir “m” seguido de una letra crea una marca de referencia con esa letra.
    • Las letras minúsculas son específicas del documento actual, mientras que las letras mayúsculas solo se pueden usar una vez (se pueden usar para saltar a secciones en diferentes documentos).
  • : La comilla simple seguida de una letra de marca (previamente definida con la “m” como arriba), moverá el cursor al comienzo de la línea que contiene esa marca.
  • ` : La comilla invertida seguida de una letra de marca moverá el cursor a la posición exacta de la marca.

Estos comandos permiten colocar una marca y luego retirar, eliminar o formatear el área definida entre la posición actual y la marca. Esto permite un control muy preciso de las opciones de edición.

Cómo gestionar documentos


A menudo, al trabajar, ya sea en un proyecto de software o en un trabajo académico, es necesario poder referenciar varios documentos a la vez. Vim ofrece diferentes maneras de hacerlo, según cómo se desee trabajar.

Cómo gestionar los buffers


Una forma de gestionar varios archivos es mediante buffers. Los búferes suelen representar un archivo abierto para edición. Son básicamente todo lo que vim tiene abierto actualmente y a lo que puede acceder fácilmente.

Abrimos varios archivos con vim de la siguiente manera:

vim file1 file2 file3

Cada uno de estos archivos se abre en su propio buffer. Actualmente, solo podemos ver el primer archivo.

Podemos ver qué buffers tenemos disponibles escribiendo :buffers.

:buffers

:buffers
  1 %a  "file1"             line 1
  2     "file2"             line 0
  3     "file3"             line 0
Press ENTER or type command to continue

Si deseamos consultar el siguiente búfer, podemos escribir :bn. Esto cambiará al siguiente búfer. De igual forma, podemos cambiar a un búfer por número (en la primera columna de arriba) o por nombre, escribiendo b. Esto funciona incluso si el nombre del archivo está incompleto.

A continuación se muestran algunos de los comandos para administrar buffers:

  • :buffers : Lista de buffers disponibles
  • :ls : Lo mismo que arriba
  • :bn : Cambiar al siguiente búfer
  • :bp : Cambiar al búfer anterior
  • :bfirst : Cambiar al primer búfer
  • :blast : Cambiar al último búfer
  • :bdelete : Elimina el búfer actual
  • :badd : Abre un nuevo buffer con el nombre de archivo que sigue
  • :e : Edita otro archivo en un nuevo buffer y cámbialo.

Cómo administrar Windows


Un mecanismo de control independiente que Vim ofrece para gestionar múltiples archivos es el concepto de windowso views. Esto permite dividir el área de edición actual en diferentes ventanas para poder ver varios búferes simultáneamente.

Para dividir el espacio de trabajo actual en ventanas independientes, puede escribir :splito :sp. Esto abre una nueva ventana sobre la actual y la enfoca. Puede cambiar el búfer que se muestra en la nueva ventana usando los comandos de búfer mostrados arriba.

Aquí hay algunos comandos que podemos usar para crear y administrar ventanas:

  • :sp : Divide la ventana actual en dos. Inicialmente, se mostrará el mismo búfer en cada ventana.
    • Anteponga un número a la “sp” para establecer la nueva altura de la ventana.
  • :vs : Divide la ventana actual verticalmente. Inicialmente, se mostrará el mismo búfer en cada ventana.
    • Anteponga un número al “vs” para establecer el nuevo ancho de la ventana.
  • CTRL-ww : Cambiar el foco a la siguiente ventana
  • CTRL-w(movimiento) : Cambia el foco a la ventana en la dirección (h,j,k,l) ​​indicada
  • CTRL-wc : Cerrar la ventana actual
  • CTRL-w+ : Aumentar el tamaño de la ventana actual
  • CTRL-w- : Disminuir el tamaño de la ventana actual
  • CTRL-w= : Establecer todas las ventanas con el mismo tamaño
  • #CTRL-w_ : Establece la altura al tamaño indicado por el “#” precedente
  • :only : Cierra todas las ventanas excepto la actual
  • CTRL-wn : Abre una nueva ventana con un nuevo búfer

Cómo administrar pestañas


Un tercer concepto para gestionar múltiples documentos en Vim es el de tabs. A diferencia de muchos programas, en Vim, las pestañas pueden contener ventanas, no al revés. Las pestañas pueden contener ventanas, que actúan como ventanas gráficas en los búferes.

Podemos gestionar el diseño de la ventana de cada pestaña por separado. Para crear pestañas, podemos usar el :tabnewcomando para abrir una nueva pestaña.

Algunas formas sencillas de administrar las pestañas son:

  • :tabnew : Abrir nueva pestaña
  • :tabclose : Cerrar la pestaña actual
  • :tabn : Cambiar a la siguiente pestaña
  • gt : Cambiar a la siguiente pestaña
  • :tabp : Cambiar a la pestaña anterior
  • gT : Cambiar a la pestaña anterior
  • :tab ball : Abre todos los buffers en pestañas individuales
  • :tabs : Lista todas las pestañas disponibles

Al cambiar entre búferes, ventanas y pestañas, a veces resulta confuso saber qué archivo estás viendo. Una forma rápida de averiguar el nombre del archivo es escribir:

  • CTRL-g : Muestra el nombre del archivo actual

Comandos específicos del documento


Dependiendo del tipo de documentos con los que esté tratando, vim tiene ciertas funcionalidades que pueden ayudarlo.

Texto sin formato


Si edita documentos de texto sin formato, Vim puede ayudarle de diversas maneras. Una de las funciones esenciales para esta función es el corrector ortográfico.

Para activar la corrección ortográfica en vim, puedes escribir:

:set spell

Para configurar el idioma que se está utilizando, puede escribir:

:set spelllang=[language abbreviation]

Ahora, se revisará la ortografía de su documento. La línea ondulada normal aparecerá debajo de las palabras mal escritas. Así es como se usa.

Para saltar hacia adelante y hacia atrás entre palabras mal escritas, escriba:

]s    # Jump to next mistake
[s    # Jump to previous mistake

Una vez que el cursor esté sobre una palabra mal escrita, podrá ver sugerencias ortográficas escribiendo:

z=

Esto le mostrará una lista de posibles coincidencias. Puede seleccionar la opción que desee eligiendo el número asociado o pulsar ENTER para dejar la palabra como está.

Si desea marcar una palabra como correcta , puede agregarla a una lista de ortografía. Vim mantiene dos listas de ortografía: una normal y una temporal que se usará en la sesión actual.

Para agregar la palabra a la lista de palabras “buenas”, utilice uno de estos comandos:

zg    # Adds word to regular dictionary
zG    # Adds word to the current session dictionary

Si agrega una palabra accidentalmente, puede eliminarla yendo a la palabra y escribiendo:

zug   # Remove word from regular dictionary
zuG   # Remove word from the current session dictionary

Si a menudo tiene que escribir palabras o frases largas, puede agregar una abreviatura.

Si escribimos :abseguido de una abreviatura y una expansión, vim ingresará la expansión siempre que escribamos la abreviatura seguida de un espacio.

Por ejemplo, si somos puristas y seguimos el ejemplo de Richard Stallman de corregir cualquier uso de “Linux” con “GNU/Linux”, podemos crear una abreviatura que lo haga automáticamente:

:ab Linux GNU/Linux

Ahora, cuando escribimos “Linux”, vim sustituirá automáticamente “GNU/Linux”.

Linux is an operating system.

Cambios en:

GNU/Linux is an operating system.

Sin embargo, si nos encontramos hablando específicamente del kernel, donde sólo la palabra Linux sería apropiada, podemos cancelar la expansión escribiendo CTRL-Vantes de escribir el espacio.

GNU/Linux is an operating system with Linux(CTRL-V) as a kernel.

Si ya no queremos utilizar esta abreviatura, podemos eliminarla con este comando:

:una Linux 

Ahora nuestro “Linux” seguirá siendo “Linux”.

Otra cosa que podrías tener que hacer de vez en cuando es insertar caracteres que no están en un teclado QWERTY tradicional. Los llamamos “dígrafos”. Puedes ver una lista de los dígrafos de Vim escribiendo:

:digraphs

NU ^@  10    SH ^A   1    SX ^B   2    EX ^C   3    ET ^D   4    EQ ^E   5
AK ^F   6    BL ^G   7    BS ^H   8    HT ^I   9    LF ^@  10    VT ^K  11
FF ^L  12    CR ^M  13    SO ^N  14    SI ^O  15    DL ^P  16    D1 ^Q  17
D2 ^R  18    D3 ^S  19    D4 ^T  20    NK ^U  21    SY ^V  22    EB ^W  23
CN ^X  24    EM ^Y  25    SB ^Z  26    EC ^[  27    FS ^\  28    GS ^]  29
RS ^^  30    US ^_  31    SP     32    Nb #   35    DO $   36    At @   64

Ahora, puedes insertar cualquiera de los caracteres en la columna derecha escribiendo CTRL-kseguido de las dos letras en la columna izquierda.

Por ejemplo, en mi computadora, para ingresar el signo de libra esterlina, puedo escribir esto cuando estoy en modo de inserción:

CTRL-k Pd

£

Código fuente


Si está codificando, hay varias cosas diferentes que lo ayudarán a interactuar con su código.

Una de las más básicas es el resaltado de sintaxis. Puedes activarlo escribiendo:

:syntax on

Esto debería configurar el resaltado de sintaxis para su archivo según la extensión detectada. Si desea cambiar el idioma del resaltado, puede hacerlo configurando el idioma con:

:set filetype=[language]

Si desea utilizar una utilidad del sistema para modificar algunas líneas de su archivo, puede llamarla usando el !comando en modo normal.

Este comando acepta un movimiento y luego lo envía al comando que le sigue.

![motion] filter

Por ejemplo, para ordenar las líneas desde la posición actual hasta el final del archivo, puede escribir:

!G sort

Sort es un comando de Linux que ordena la entrada, alfabéticamente de forma predeterminada.

Si queremos insertar la salida de un comando en el archivo, navegue hasta una línea en blanco donde desee la salida. Escriba:

!!command

Esto colocará la salida del comando especificado en el documento.

Si queremos ver el resultado de un comando, pero no deseamos insertarlo en el documento, también podemos utilizar la versión en modo comando (:), que sería:

:!command

Esto le mostrará los resultados del comando, pero regresará a su documento sin modificaciones cuando termine.

Reducir la repetición


A menudo, al editar o crear cualquier tipo de archivo, te encontrarás repitiendo muchas operaciones iguales o similares. Por suerte, vim ofrece algunas maneras de guardar grupos de comandos en macros.

Para comenzar a grabar una macro, puede escribir qseguido de una letra para hacer referencia a la macro.

qa    # will save macro "a"

Cualquier comando que escriba se grabará como parte de la macro. Para finalizar la macro, puede qvolver a escribir.

Entonces si escribimos:

qa0c3wDELETED<esc>q

Esto iniciaría una macro (guardada como “a”), iría al principio de la línea y reemplazaría las siguientes tres palabras con la palabra “DELETED”. Luego, saldría del modo de inserción y finalizaría la macro.

Para reproducir esta macro, comenzando en la posición actual del cursor, utilice el @carácter seguido de la referencia de la macro:

@a

Esto reproducirá los comandos macro comenzando en la posición actual.

Si queremos crear una macro que finalice en modo de inserción, debemos finalizarla de otra manera (al escribir “q”, simplemente se insertará una “q”). Podemos ejecutar un comando en modo normal en modo de inserción precediéndolo con “< CTRL-O.

Por lo tanto, si queremos cambiar el contenido de los primeros paréntesis de esta línea, podríamos tener una macro que diga:

qi0f(lct)<CTRL-O>q

Esto crea una macro “i”. La macro se desplaza al principio de la línea actual. Encuentra el paréntesis de apertura y se desplaza un carácter a la derecha (para moverse dentro del paréntesis). Después, cambia todo hasta el paréntesis de cierre. Con vim en modo de inserción esperando el texto de reemplazo, pulsamos CTRL-Oseguido de qpara finalizar la macro, quedando en modo de inserción listos para reemplazar el texto.

Conclusión


Ahora deberías tener una idea de algunas maneras más complejas en que vim puede ayudarte. Aunque esto pueda parecer mucho, es solo el comienzo.

Hay muchas funciones que no hemos mencionado, y no es necesario que las conozcas todas. Aprenderás lo importante según cómo uses vim. Cuanto más practiques y lo uses a diario, más natural te resultará y más potente será.

Stephen Dove
Comments

April 27, 2025

Dominando grep con expresiones regulares: Guía para una búsqueda de texto eficiente

Introducción

Este grepcomando es uno de los más útiles en un entorno de terminal Linux. Su nombre grepsignifica “impresión de expresión regular global”. Esto significa que se puede usar greppara comprobar si la entrada que recibe coincide con un patrón específico. Este programa, aparentemente trivial, es extremadamente potente; su capacidad para ordenar la entrada según reglas complejas lo convierte en un enlace popular en muchas cadenas de comandos.

En este tutorial, explorará las grepopciones del comando y luego profundizará en el uso de expresiones regulares para realizar búsquedas más avanzadas.

Prerrequisitos

Para seguir esta guía, necesitará acceder a un ordenador con sistema operativo Linux. Puede ser un servidor privado virtual al que se haya conectado por SSH o su equipo local. Tenga en cuenta que este tutorial se validó con un servidor Linux con Ubuntu 20.04, pero los ejemplos proporcionados deberían funcionar en cualquier ordenador con cualquier versión de Linux.

Si planea usar un servidor remoto para seguir esta guía, le recomendamos que primero complete nuestra guía de configuración inicial del servidor . Esto le permitirá configurar un entorno de servidor seguro, que incluye un usuario no root con sudoprivilegios y un firewall configurado con UFW, que puede usar para mejorar sus habilidades con Linux.

Uso básico

En este tutorial, utilizarás grepla Licencia Pública General GNU versión 3 para buscar varias palabras y frases.

Si usas Ubuntu, puedes encontrar el archivo en la /usr/share/common-licensescarpeta. Cópialo a tu directorio personal:

cp /usr/share/common-licenses/GPL-3 .

Si estás en otro sistema, usa el curlcomando para descargar una copia:

curl -o GPL-3 https://www.gnu.org/licenses/gpl-3.0.txt

También usarás el archivo de licencia BSD en este tutorial. En Linux, puedes copiarlo a tu directorio personal con el siguiente comando:

cp /usr/share/common-licenses/BSD .

Si está en otro sistema, cree el archivo con el siguiente comando:

cat << 'EOF' > BSD
Copyright (c) The Regents of the University of California.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. Neither the name of the University nor the names of its contributors
   may be used to endorse or promote products derived from this software
   without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
EOF

Ahora que tienes los archivos, puedes empezar a trabajar con grep.

En su forma más básica, se usa greppara buscar patrones literales dentro de un archivo de texto. Esto significa que, si se pasa grepuna palabra a buscar, se imprimirán todas las líneas del archivo que la contengan.

Ejecute el siguiente comando para grepbuscar cada línea que contenga la palabra GNU:

grep "GNU" GPL-3

El primer argumento, GNU, es el patrón que estás buscando, mientras que el segundo argumento, GPL-3, es el archivo de entrada que deseas buscar.

La salida resultante será cada línea que contenga el texto del patrón:

Output                    GNU GENERAL PUBLIC LICENSE
  The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
GNU General Public License for most of our software; it applies also to
  Developers that use the GNU GPL protect your rights with two steps:
  "This License" refers to version 3 of the GNU General Public License.
  13. Use with the GNU Affero General Public License.
under version 3 of the GNU Affero General Public License into a single
...
...

En algunos sistemas, el patrón que buscó aparecerá resaltado en la salida.

Opciones comunes

De forma predeterminada, grepbuscará el patrón exacto especificado en el archivo de entrada y devolverá las líneas que encuentre. Sin embargo, puede hacer que este comportamiento sea más útil añadiendo indicadores opcionales a grep.

Si desea grepignorar las mayúsculas y minúsculas de su parámetro de búsqueda y buscar variaciones en mayúsculas y minúsculas, puede especificar la opción -io .--ignore-case

Busque cada instancia de la palabra license(con mayúsculas, minúsculas o mixtas) en el mismo archivo que antes con el siguiente comando:

grep -i "license" GPL-3

Los resultados contienen: LICENSE, license, y License:

Output                    GNU GENERAL PUBLIC LICENSE
 of this license document, but changing it is not allowed.
  The GNU General Public License is a free, copyleft license for
  The licenses for most software and other practical works are designed
the GNU General Public License is intended to guarantee your freedom to
GNU General Public License for most of our software; it applies also to
price.  Our General Public Licenses are designed to make sure that you
(1) assert copyright on the software, and (2) offer you this License
  "This License" refers to version 3 of the GNU General Public License.
  "The Program" refers to any copyrightable work licensed under this
...
...

Si hubiera habido una instancia con LiCeNsE, ésta también se habría devuelto.

Si desea encontrar todas las líneas que no contienen un patrón especificado, puede utilizar la opción -vo --invert-match.

Busque cada línea que no contenga la palabra theen la licencia BSD con el siguiente comando:

grep -v "the" BSD

Recibirás este resultado:

OutputAll rights reserved.

Redistribution and use in source and binary forms, with or without
are met:
    may be used to endorse or promote products derived from this software
    without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
...
...

Como no especificó la opción “ignorar mayúsculas y minúsculas”, los dos últimos elementos se devolvieron como si no tuvieran la palabra the.

Suele ser útil conocer el número de línea donde se producen las coincidencias. Puede hacerlo usando la opción -n“o” --line-number. Repita el ejemplo anterior con esta opción añadida:

grep -vn "the" BSD

Esto devolverá el siguiente texto:

Output2:All rights reserved.
3:
4:Redistribution and use in source and binary forms, with or without
6:are met:
13:   may be used to endorse or promote products derived from this software
14:   without specific prior written permission.
15:
16:THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17:ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
...
...

Ahora puedes referenciar el número de línea si quieres modificar todas las líneas que no contengan “<sub>” the. Esto resulta especialmente útil al trabajar con código fuente.

Expresiones regulares

En la introducción, aprendiste que grepsignifica “impresión de expresión regular global”. Una “expresión regular” es una cadena de texto que describe un patrón de búsqueda específico.

Distintas aplicaciones y lenguajes de programación implementan expresiones regulares de forma ligeramente distinta. En este tutorial, solo explorarás una pequeña parte de cómo grepse describen sus patrones.

Coincidencias literales

En los ejemplos anteriores de este tutorial, al buscar las palabras GNUy the, en realidad, buscaba expresiones regulares básicas que coincidieran con la cadena exacta de caracteres GNUy the. Los patrones que especifican con precisión los caracteres que se deben buscar se denominan “literales” porque coinciden con el patrón literalmente, carácter por carácter.

Es útil pensar en ellos como si coincidieran con una cadena de caracteres en lugar de una palabra. Esta distinción será más importante a medida que aprendas patrones más complejos.

Todos los caracteres alfabéticos y numéricos (así como algunos otros caracteres) coinciden literalmente a menos que sean modificados por otros mecanismos de expresión.

Partidos de ancla

Los anclajes son caracteres especiales que especifican en qué parte de la línea debe producirse una coincidencia para que sea válida.

Por ejemplo, al usar anclas, puede especificar que solo desea conocer las líneas que coinciden GNUal principio de la línea. Para ello, puede usar el ^ancla antes de la cadena literal.

Ejecute el siguiente comando para buscar en el GPL-3archivo y encontrar líneas donde GNUaparece al principio de una línea:

grep "^GNU" GPL-3

Este comando devolverá las siguientes dos líneas:

OutputGNU General Public License for most of our software; it applies also to
GNU General Public License, you may choose any version ever published

De manera similar, se utiliza el $ancla al final de un patrón para indicar que la coincidencia solo será válida si ocurre al final de una línea.

Este comando coincidirá con cada línea que termine con la palabra anden el GPL-3archivo:

grep "and$" GPL-3

Recibirás este resultado:

Outputthat there is no warranty for this free software.  For both users' and
  The precise terms and conditions for copying, distribution and
  License.  Each licensee is addressed as "you".  "Licensees" and
receive it, in any medium, provided that you conspicuously and
    alternative is allowed only occasionally and noncommercially, and
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
provisionally, unless and until the copyright holder explicitly and
receives a license from the original licensors, to run, modify and
make, use, sell, offer for sale, import and otherwise run, modify and

Coincidencia de cualquier personaje

El carácter de punto (.) se utiliza en expresiones regulares para indicar que cualquier carácter individual puede existir en la ubicación especificada.

Por ejemplo, para hacer coincidir cualquier cosa en el GPL-3archivo que tenga dos caracteres y luego la cadena cept, utilizaría el siguiente patrón:

grep "..cept" GPL-3

Este comando devuelve el siguiente resultado:

Outputuse, which is precisely where it is most unacceptable.  Therefore, we
infringement under applicable copyright law, except executing it on a
tells the user that there is no warranty for the work (except to the
License by making exceptions from one or more of its conditions.
form of a separately written license, or stated as exceptions;
  You may not propagate or modify a covered work except as expressly
  9. Acceptance Not Required for Having Copies.
...
...

Esta salida contiene instancias de ” accepty except” y variaciones de ambas palabras. El patrón también habría coincidido z2ceptsi se hubiera encontrado.

Expresiones entre paréntesis

Al colocar un grupo de caracteres entre corchetes ( \[y \]), puede especificar que el carácter en esa posición puede ser cualquier carácter que se encuentre dentro del grupo de corchetes.

Por ejemplo, para encontrar las líneas que contienen tooo two, deberá especificar esas variaciones sucintamente utilizando el siguiente patrón:

grep "t[wo]o" GPL-3

La salida muestra que ambas variaciones existen en el archivo:

Outputyour programs, too.
freedoms that you received.  You must make sure that they, too, receive
  Developers that use the GNU GPL protect your rights with two steps:
a computer network, with no transfer of a copy, is not conveying.
System Libraries, or general-purpose tools or generally available free
    Corresponding Source from a network server at no charge.
...
...

La notación entre corchetes ofrece opciones interesantes. Puedes hacer que el patrón coincida con cualquier carácter excepto los dentro de un corchete, comenzando la lista de caracteres dentro de los corchetes con un ^carácter.

Este ejemplo es como el patrón .ode, pero no coincidirá con el patrón code:

grep "[^c]ode" GPL-3

Aquí está el resultado que recibirás:

Output  1. Source Code.
    model, to give anyone who possesses the object code either (1) a
the only significant mode of use of the product.
notice like this when it starts in an interactive mode:

Observe que en la segunda línea devuelta, se encuentra la palabra code. Esto no se debe a un error de la expresión regular ni de grep. Más bien, esta línea se devolvió porque anteriormente se encontró el patrón mode, presente en la palabra model. La línea se devolvió porque existía una instancia que coincidía con el patrón.

Otra característica útil de los corchetes es que puedes especificar un rango de caracteres en lugar de escribir individualmente cada carácter disponible.

Esto significa que si desea encontrar cada línea que comience con una letra mayúscula, puede utilizar el siguiente patrón:

grep "^[A-Z]" GPL-3

Aquí está el resultado que devuelve esta expresión:

OutputGNU General Public License for most of our software; it applies also to
States should not allow patents to restrict development and use of
License.  Each licensee is addressed as "you".  "Licensees" and
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
System Libraries, or general-purpose tools or generally available free
Source.
User Product is transferred to the recipient in perpetuity or for a
...
...

Debido a algunos problemas de clasificación heredados, a menudo es más preciso utilizar clases de caracteres POSIX en lugar de rangos de caracteres como los que acaba de utilizar.

Analizar cada clase de carácter POSIX quedaría fuera del alcance de esta guía, pero un ejemplo que lograría el mismo procedimiento que el ejemplo anterior utiliza la \[:upper:\]clase de carácter dentro de un selector de corchetes:

grep "^[[:upper:]]" GPL-3

La salida será la misma que antes.

Repetir el patrón cero o más veces

Por último, uno de los metacaracteres más utilizados es el asterisco, o *, que significa “repetir el carácter o expresión anterior cero o más veces”.

Para encontrar cada línea en el GPL-3archivo que contiene un paréntesis de apertura y cierre, con solo letras y espacios simples en el medio, use la siguiente expresión:

grep "([A-Za-z ]*)" GPL-3

Obtendrá el siguiente resultado:

Output Copyright (C) 2007 Free Software Foundation, Inc.
distribution (with or without modification), making available to the
than the work as a whole, that (a) is included in the normal form of
Component, and (b) serves only to enable use of the work with that
(if any) on which the executable work runs, or a compiler used to
    (including a physical distribution medium), accompanied by the
    (including a physical distribution medium), accompanied by a
    place (gratis or for a charge), and offer equivalent access to the
...
...

Hasta ahora has utilizado puntos, asteriscos y otros caracteres en tus expresiones, pero a veces necesitas buscar esos caracteres específicamente.

Escapar de metacaracteres

En ocasiones, necesitará buscar un punto literal o un corchete de apertura literal, especialmente al trabajar con código fuente o archivos de configuración. Dado que estos caracteres tienen un significado especial en las expresiones regulares, deberá “escaparlos” para indicar grepque no desea usar su significado especial en este caso.

Para escapar caracteres, utilice el carácter de barra invertida ( \) delante del carácter que normalmente tendría un significado especial.

Por ejemplo, para encontrar cualquier línea que comience con una letra mayúscula y termine con un punto, utilice la siguiente expresión que escapa del punto final para que represente un punto literal en lugar del significado habitual de “cualquier carácter”:

grep "^[A-Z].*\.$" GPL-3

Este es el resultado que verás:

OutputSource.
License by making exceptions from one or more of its conditions.
License would be to refrain entirely from conveying the Program.
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
SUCH DAMAGES.
Also add information on how to contact you by electronic and paper mail.

Ahora veamos otras opciones de expresiones regulares.

Expresiones regulares extendidas

El grepcomando admite un lenguaje de expresiones regulares más extenso al usar la -Ebandera o al llamar al egrepcomando en lugar de grep.

Estas opciones amplían las posibilidades de las expresiones regulares extendidas. Estas expresiones regulares incluyen todos los metacaracteres básicos, además de metacaracteres adicionales para expresar coincidencias más complejas.

Agrupamiento

Una de las capacidades más útiles que ofrecen las expresiones regulares extendidas es la capacidad de agrupar expresiones para manipularlas o referenciarlas como una unidad.

Para agrupar expresiones, enciérrelas entre paréntesis. Si desea usar paréntesis sin usar expresiones regulares extendidas, puede escaparlas con la barra invertida para habilitar esta función. Esto significa que las siguientes tres expresiones son funcionalmente equivalentes:

grep "\(grouping\)" file.txt
grep -E "(grouping)" file.txt
egrep "(grouping)" file.txt

Alternancia

De manera similar a cómo las expresiones entre corchetes pueden especificar diferentes opciones posibles para coincidencias de un solo carácter, la alternancia le permite especificar coincidencias alternativas para cadenas o conjuntos de expresiones.

Para indicar alternancia, utilice el carácter de barra vertical |. Estos se utilizan a menudo en la agrupación entre paréntesis para especificar que una de dos o más posibilidades debe considerarse una coincidencia.

GPLLo siguiente lo encontrará General Public Licenseen el texto:

grep -E "(GPL|General Public License)" GPL-3

El resultado se ve así:

Output  The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
GNU General Public License for most of our software; it applies also to
price.  Our General Public Licenses are designed to make sure that you
  Developers that use the GNU GPL protect your rights with two steps:
  For the developers' and authors' protection, the GPL clearly explains
authors' sake, the GPL requires that modified versions be marked as
have designed this version of the GPL to prohibit the practice for those
...
...

La alternancia puede seleccionar entre más de dos opciones agregando opciones adicionales dentro del grupo de selección separadas por |caracteres de barra vertical ( ).

Cuantificadores

Al igual que el *metacarácter que coincidió con el carácter o conjunto de caracteres anterior cero o más veces, hay otros metacaracteres disponibles en expresiones regulares extendidas que especifican la cantidad de ocurrencias.

Para que un carácter coincida cero o una vez, puedes usar el ?carácter. Esto hace que los caracteres o conjuntos de caracteres anteriores sean, en esencia, opcionales.

Los siguientes partidos copyrighty rightponiendo copyen un grupo opcional:

grep -E "(copy)?right" GPL-3

Recibirás este resultado:

Output Copyright (C) 2007 Free Software Foundation, Inc.
  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
know their rights.
  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
  "Copyright" also means copyright-like laws that apply to other kinds of
...

El +carácter coincide con una expresión una o más veces. Es similar al *metacarácter, pero con el +carácter, la expresión debe coincidir al menos una vez.

La siguiente expresión coincide con la cadena freemás uno o más caracteres que no sean espacios en blanco:

grep -E "free[^[:space:]]+" GPL-3

Verás este resultado:

Output  The GNU General Public License is a free, copyleft license for
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
  When we speak of free software, we are referring to freedom, not
have the freedom to distribute copies of free software (and charge for
you modify it: responsibilities to respect the freedom of others.
freedomss that you received.  You must make sure that they, too, receive
protecting users' freedom to change the software.  The systematic
of the GPL, as needed to protect the freedom of users.
patents cannot be used to render the program non-free.

Especificación de la repetición de coincidencias

Para especificar el número de veces que se repite una coincidencia, utilice las llaves ( {y }). Estas llaves permiten especificar un número exacto, un rango o un límite superior o inferior para la cantidad de veces que una expresión puede coincidir.

Utilice la siguiente expresión para encontrar todas las líneas del GPL-3archivo que contienen vocales triples:

grep -E "[AEIOUaeiou]{3}" GPL-3

Cada línea devuelta tiene una palabra con tres vocales:

Outputchanged, so that their problems will not be attributed erroneously to
authors of previous versions.
receive it, in any medium, provided that you conspicuously and
give under the previous paragraph, plus a right to possession of the
covered work so as to satisfy simultaneously your obligations under this

Para encontrar cualquier palabra que tenga entre 16 y 20 caracteres, utilice la siguiente expresión:

grep -E "[[:alpha:]]{16,20}" GPL-3

Aquí está el resultado de este comando:

Output    certain responsibilities if you distribute copies of the software, or if
    you modify it: responsibilities to respect the freedom of others.
        c) Prohibiting misrepresentation of the origin of that material, or

Sólo se muestran las líneas que contienen palabras dentro de esa longitud.

Casos de uso práctico

1. Validación de campos CSV

Para validar campos CSV, puede usar grepexpresiones regulares para buscar patrones o formatos específicos. Por ejemplo, para comprobar si todas las líneas de un archivo CSV tienen exactamente 5 campos separados por comas, puede usar el siguiente comando:

grep -E "^[^,]+,[^,]+,[^,]+,[^,]+,[^,]+$" yourfile.csv

Este comando imprimirá solo las líneas que coincidan con el patrón especificado, indicando campos CSV válidos.

2. Filtrar registros por nivel de error (por ejemplo, grep “ERROR” logs.txt)

Filtrar registros por nivel de error es un uso común de grep. Para filtrar registros por líneas que contengan la palabra “ERROR”, puede usar el siguiente comando:

grep "ERROR" logs.txt

Este comando imprimirá todas las líneas logs.txtque contengan la palabra “ERROR”, lo que le permitirá centrarse en los mensajes de error.

3. Búsqueda de funciones específicas en el código fuente

Al buscar en el código fuente, grepse puede usar para encontrar funciones o patrones específicos. Por ejemplo, para encontrar todas las ocurrencias de una función nombrada calculateTotalen un directorio de archivos de código fuente, se puede usar el siguiente comando:

grep -r "calculateTotal" /path/to/source/code/directory

Este comando buscará recursivamente todos los archivos en el directorio especificado e imprimirá las líneas que contienen el nombre de la función.

4. Coincidencia de URL o direcciones de correo electrónico en el texto

Se pueden usar expresiones regulares para buscar coincidencias entre URL o direcciones de correo electrónico en texto. Por ejemplo, para encontrar todas las líneas de un archivo que contienen una URL, puede usar el siguiente comando:

grep -E "https?://[^ ]+" yourfile.txt

Este comando imprimirá todas las líneas que contengan una URL que comience con “http://” o “https://”.

5. Preprocesamiento de PNL: filtrado de líneas con palabras vacías

Las palabras vacías son palabras comunes como “el”, “y”, etc., que no tienen mucho significado en una oración. Para filtrar líneas que contienen palabras vacías, puede usar grepuna lista de palabras vacías. Por ejemplo, para filtrar líneas que contienen las palabras vacías “el”, “y” o “un”, puede usar el siguiente comando:

grep -vE "the|and|a" yourfile.txt

Este comando imprimirá todas las líneas que no contengan ninguna de las palabras vacías especificadas.

6. Detección de entradas casi duplicadas o errores ortográficos

Las expresiones regulares permiten detectar entradas casi duplicadas o errores ortográficos mediante la búsqueda de patrones similares. Por ejemplo, para encontrar líneas que contengan palabras con una sola diferencia de carácter, se puede usar el siguiente comando:

grep -E "(\w)\1" yourfile.txt

Este comando imprimirá todas las líneas que contengan palabras con un solo carácter repetido, lo que indica posibles duplicados o errores ortográficos.

7. Patrones de expresiones regulares para entidades con nombre o frases comunes

Las expresiones regulares permiten encontrar coincidencias entre entidades con nombre o frases comunes en el texto. Por ejemplo, para encontrar todas las líneas que contienen una frase específica como “reconocimiento de entidad con nombre”, se puede usar el siguiente comando:

grep -E "named entity recognition" yourfile.txt

Este comando imprimirá todas las líneas que contengan la frase especificada, lo que le permitirá centrarse en la información relevante.

Errores comunes y depuración

1. Usar operadores de expresiones regulares como *, + o ? sin escaparlos

Al usar operadores de expresiones regulares como *, +, o ?, es fundamental escaparlos correctamente para evitar coincidencias inesperadas. Por ejemplo, si desea que coincida con el carácter literal *, debe escaparlo con una barra invertida ( \*). De igual forma, para que coincida con los caracteres literales +o ?, escápelos con una barra invertida ( \+o \?).

Ejemplo de comando para hacer coincidir un *carácter literal:

grep -E "a\*" yourfile.txt

2. Coincidencia de líneas vacías o líneas con solo espacios en blanco

Para hacer coincidir líneas vacías o líneas con solo espacios en blanco, puede utilizar el siguiente patrón de expresión regular:

grep -E "^\s*$" yourfile.txt

Este patrón coincide con líneas que comienzan ( ^) y terminan ( $) con cualquier carácter de espacio en blanco ( \s*).

3. Tabulaciones (\t) y retornos de carro (\r)

Para hacer coincidir tabulaciones ( \t) o retornos de carro ( \r) en su texto, puede utilizar los siguientes comandos:

# Match lines containing tabs
grep -E "\t" yourfile.txt

# Match lines containing carriage returns
grep -E "\r" yourfile.txt

Tenga en cuenta que en algunos casos, es posible que necesite usar la -Eopción para habilitar patrones de expresiones regulares extendidos, que le permiten usar funciones de expresiones regulares más avanzadas.

Diferencias entre grep, egrep y fgrep

DominioDescripciónCaracterísticasCasos de usoComando de muestra
grepCoincidencia de patrones básicosAdmite expresiones regulares básicasCoincidencia de patrones generalesgrep "pattern" file.txt
egrepCoincidencia de patrones extendidaAdmite expresiones regulares extendidasCoincidencia de patrones complejosegrep "pattern" file.txt
fgrepCoincidencia de patrones fijosSin soporte para expresiones regularesCoincidencia de cadenas fijasfgrep "pattern" file.txt

<$>[noe] Nota: La principal diferencia entre estos comandos es el tipo de coincidencia de patrones que admiten. grepAdmite expresiones regulares básicas, egrepadmite expresiones regulares extendidas y fgrepno admite expresiones regulares en absoluto. <$>

Manejo de patrones multilínea

grepNo es adecuado para gestionar patrones multilínea debido a su naturaleza lineal. Sin embargo, existen herramientas alternativas que pueden gestionar eficazmente estos patrones. awkSon perldos opciones populares para buscar patrones que abarcan varias líneas.

awkEs una potente herramienta de procesamiento de texto que permite encontrar patrones en varias líneas. Permite definir un patrón y realizar acciones en las líneas coincidentes. Por ejemplo, para encontrar líneas que contengan un patrón en varias líneas, se puede usar el siguiente comando:

awk '/pattern/ {print $0}' yourfile.txt

Este comando imprimirá todas las líneas que coincidan con el patrón especificado. Tenga en cuenta que awktambién puede usarse para realizar operaciones más complejas en las líneas coincidentes, como imprimir todo el bloque de texto que coincide con el patrón.

perlEs otra herramienta potente que permite gestionar patrones multilínea. Ofrece una forma más flexible y expresiva de encontrar coincidencias de patrones mediante su motor de expresiones regulares integrado. Por ejemplo, puede usar el siguiente comando para buscar líneas que contengan un patrón en varias líneas:

perl -0777 -ne 'print if /pattern/s' yourfile.txt

Este comando indica perlque se lea el archivo en modo “slurp” ( -0777), lo que permite leerlo completo en memoria de una sola vez. La -neopción especifica que el script debe ejecutarse para cada línea del archivo. La print if /pattern/sinstrucción busca la coincidencia del patrón en varias líneas (gracias al smodificador) e imprime el bloque de texto completo que coincide.

Ambos ofrecen funciones más avanzadas y flexibilidad cuando awkse trata de manejar patrones multilínea, lo que los convierte en alternativas ideales para tales tareas.perlgrep

Preguntas frecuentes

1. ¿Cuál es la diferencia entre grep y egrep?

grepy egrepambos se utilizan para la coincidencia de patrones, pero difieren en el tipo de patrones que admiten. grepadmite expresiones regulares básicas, mientras que egrepadmite expresiones regulares extendidas, que permiten una coincidencia de patrones más avanzada.

2. ¿Puedo usar grep para buscar en varios archivos?

Sí, puedes grepbuscar en varios archivos especificando varios nombres de archivo o usando comodines. Por ejemplo:

grep "pattern" file1.txt file2.txt

o

grep "pattern" *.txt

3. ¿Cómo puedo buscar líneas que no coinciden con un patrón?

Para buscar líneas que no coincidan con un patrón, use la -vopción. Por ejemplo:

grep -v "pattern" yourfile.txt

Esto imprimirá todas las líneas que no contengan el patrón especificado.

4. ¿Cómo incluyo números de línea en la salida de grep?

Para incluir números de línea en grepla salida, utilice la -nopción. Por ejemplo:

grep -n "pattern" yourfile.txt

Esto imprimirá los números de línea junto con las líneas que coincidan con el patrón especificado.

5. ¿Por qué mi expresión regular grep no funciona como se esperaba?

Puede haber varias razones por las que tu grepexpresión regular no funciona como se espera. Aquí tienes algunos problemas comunes que debes revisar:

  • Asegúrese de estar utilizando la sintaxis correcta para su patrón de expresión regular.
  • Asegúrese de estar utilizando las opciones correctas para su grepcomando (por ejemplo, -Epara expresiones regulares extendidas).
  • Comprueba si tu patrón contiene caracteres especiales que es necesario escapar.
  • Verifique que su patrón esté citado correctamente para evitar la interpretación del shell.

6. ¿Cómo puedo buscar un patrón que incluya espacios en blanco o caracteres especiales?

Para buscar un patrón que incluya espacios o caracteres especiales, debe escaparlos correctamente en su patrón de expresión regular. Por ejemplo, para buscar un patrón que incluya espacios, utilice el siguiente comando:

grep "pattern\ with\ whitespace" yourfile.txt

De forma similar, para buscar un patrón que incluya caracteres especiales, escápelos con una barra invertida ( \). Por ejemplo:

grep "pattern\ with\ special\ characters" yourfile.txt

Conclusión

grepEs una herramienta poderosa para encontrar patrones dentro de archivos o en la jerarquía del sistema de archivos. Dominar sus opciones y sintaxis mejorará enormemente su capacidad para trabajar con datos de texto.

Las expresiones regulares son un concepto fundamental en informática, y comprenderlas abre un amplio abanico de posibilidades. Desde la búsqueda y el reemplazo avanzados de texto en editores de texto hasta la validación de datos en lenguajes de programación, las expresiones regulares son una habilidad esencial.

Para mejorar aún más tus habilidades, te recomendamos consultar los siguientes tutoriales:

  • El comando Grep en Linux/Unix
  • Introducción a las expresiones regulares
  • Comandos de Linux
  • Las mejores herramientas de recuperación de datos de Linux

Al explorar estos tutoriales, obtendrá una comprensión más profunda de grep, expresiones regulares y otras herramientas esenciales de Linux, lo que le permitirá abordar una amplia gama de tareas con confianza.

Stephen Dove
Comments

April 27, 2025

Cómo usar SFTP para transferir archivos con un servidor remoto de manera segura

Introducción

FTP, o “File Transfer Protocol” (Protocolo de transferencia de archivos), era un método popular sin cifrar para transferir archivos entre dos sistemas remotos.

SFTP, que significa Protocolo de transferencia de archivos SSH o Protocolo de transferencia segura de archivos, es un protocolo independiente empaquetado con SSH que funciona de forma similar pero a través de una conexión segura. La ventaja es la capacidad de aprovechar una conexión segura para transferir archivos y recorrer el sistema de archivos en los sistemas local y remoto.

En casi todos los casos, es preferible usar SFTP, en vez de FTP, debido a sus características de seguridad subyacentes y a su capacidad para aprovechar una conexión SSH. FTP es un protocolo no seguro que solo debería utilizarse en casos limitados o en redes de confianza.

Aunque SFTP está integrado en muchas herramientas gráficas, esta guía mostrará cómo utilizarlo en su interfaz de línea de comandos interactiva.

Cómo conectarse con SFTP

De forma predeterminada, SFTP utiliza el protocolo SSH para autenticarse y establecer una conexión segura. Por eso, están disponibles los mismos métodos de autenticación que en SSH.

Aunque las contraseñas son fáciles de usar y se configuran de forma predeterminada, le recomendamos crear claves SSH y transferir su clave pública a cualquier sistema al que necesite acceder. Eso es mucho más seguro y puede ahorrarle tiempo a largo plazo.

Consulte esta guía para configurar claves SSH para acceder a su servidor si aún no lo hizo.

Si puede conectarse al equipo usando SSH, habrá completado todos los requisitos necesarios para usar SFTP para administrar archivos. Pruebe el acceso SSH con el siguiente comando:

ssh sammy@your_server_ip_or_remote_hostname

Si esto funciona, salga de nuevo escribiendo:

exit

Ahora, podemos establecer una sesión SFTP ejecutando el siguiente comando:

sftp sammy@your_server_ip_or_remote_hostname

Conectará el sistema remoto, y la entrada de su línea de comandos cambiará a una instrucción SFTP.

Si está trabajando en un puerto SSH personalizado (no el puerto 22 predeterminado), puede iniciar una sesión SFTP de la siguiente manera:

sftp -oPort=custom_port sammy@your_server_ip_or_remote_hostname

Eso lo conectará al sistema remoto mediante el puerto especificado.

Cómo obtener ayuda en SFTP

El comando más útil que debe conocer primero es el comando help. Este comando le da acceso a un resumen de la ayuda en SFTP. Puede invocarlo escribiendo cualquiera de estos en la instrucción:

help

o

?

Eso mostrará una lista de los comandos disponibles:

OutputAvailable commands:
bye                                Quit sftp
cd path                            Change remote directory to 'path'
chgrp grp path                     Change group of file 'path' to 'grp'
chmod mode path                    Change permissions of file 'path' to 'mode'
chown own path                     Change owner of file 'path' to 'own'
df [-hi] [path]                    Display statistics for current directory or
                                   filesystem containing 'path'
exit                               Quit sftp
get [-Ppr] remote [local]          Download file
help                               Display this help text
lcd path                           Change local directory to 'path'
. . .

En las siguientes secciones, exploraremos algunos de los comandos que verá.

Cómo navegar con SFTP

Podemos navegar a través de la jerarquía de archivos del sistema remoto usando varios comandos que funcionan de forma similar a sus contrapartes de shell.

Primero, orientémonos averiguando en qué directorio estamos actualmente en el sistema remoto. Al igual que en una sesión típica de shell, podemos escribir lo siguiente para obtener el directorio actual:

pwd

OutputRemote working directory: /home/demouser

Podemos ver el contenido del directorio actual del sistema remoto con otro comando familiar:

ls

OutputSummary.txt     info.html       temp.txt        testDirectory

Tenga en cuenta que los comandos en la interfaz SFTP no son los comandos de shell normales y no cuentan con la misma cantidad de funciones, pero implementan algunos de los indicadores opcionales más importantes:

ls -la

Outputdrwxr-xr-x    5 demouser   demouser       4096 Aug 13 15:11 .
drwxr-xr-x    3 root     root         4096 Aug 13 15:02 ..
-rw-------    1 demouser   demouser          5 Aug 13 15:04 .bash_history
-rw-r--r--    1 demouser   demouser        220 Aug 13 15:02 .bash_logout
-rw-r--r--    1 demouser   demouser       3486 Aug 13 15:02 .bashrc
drwx------    2 demouser   demouser       4096 Aug 13 15:04 .cache
-rw-r--r--    1 demouser   demouser        675 Aug 13 15:02 .profile
. . .

Para llegar a otro directorio, podemos ejecutar este comando:

cd testDirectory

Ahora, podemos recorrer el sistema de archivos remotos, pero ¿qué pasa si necesitamos acceder a nuestro sistema de archivos local? Podemos dirigir los comandos al sistema de archivos locales precediéndolos con una l que hace referencia a “local”.

Todos los comandos examinados hasta ahora tienen equivalentes locales. Podemos imprimir el directorio local de trabajo:

lpwd

OutputLocal working directory: /Users/demouser

Podemos enumerar el contenido del directorio actual en el equipo local:

lls

OutputDesktop			local.txt		test.html
Documents		analysis.rtf		zebra.html

También podemos cambiar el directorio con el que deseamos interactuar en el sistema local:

lcd Desktop

Cómo transferir archivos con SFTP

Navegar por los sistemas de archivos locales y remotos es muy poco útil si no se puede transferir archivos entre ambos.

Transferencia de archivos remotos al sistema local

Si queremos descargar archivos de nuestro host remoto, podemos hacerlo ejecutando el siguiente comando:

get remoteFile

OutputFetching /home/demouser/remoteFile to remoteFile
/home/demouser/remoteFile                       100%   37KB  36.8KB/s   00:01

Como puede ver, de forma predeterminada, el comando get descarga un archivo remoto a un archivo con el mismo nombre en el sistema de archivos locales.

Podemos copiar el archivo remoto a un nombre diferente especificando el nombre después:

get remoteFile localFile

El comando get también toma algunos indicadores de opción. Por ejemplo, podemos copiar un directorio y todo su contenido especificando la opción recursiva:

get -r someDirectory

Podemos indicarle a SFTP que mantenga los permisos y los tiempos de acceso adecuados utilizando el indicador -P o -p:

get -Pr someDirectory

Transferencia de archivos locales al sistema remoto

Transferir archivos al sistema remoto es tan fácil como utilizar el comando correctamente llamado “put”:

put localFile

OutputUploading localFile to /home/demouser/localFile
localFile                                     100% 7607     7.4KB/s   00:00

Los mismos indicadores que funcionan con get se aplican a put. Para copiar un directorio local completo, puede ejecutar:

put -r localDirectory

Nota: Actualmente, hay un error en las versiones de OpenSSH incluidas en las versiones actuales de Ubuntu (al menos de la versión 14.04 a la 15.10) que impide que el comando anterior funcione correctamente. Cuando se ejecuta el comando anterior para transferir contenido a un servidor utilizando la versión con errores de OpenSSH, se producirá el siguiente error: Couldn't canonicalise: No such file or directory (No se pudo canonizar: no existe tal archivo o directorio).

Para resolver este problema, primero cree el directorio de destino en el extremo remoto escribiendo mkdir localDirectory. Luego, el comando anterior debería completarse sin errores.

Una herramienta familiar que es útil para descargar y cargar archivos es el comando df, que funciona de forma similar a la versión de la línea de comandos. Al utilizarla, puede verificar que tiene suficiente espacio para completar las transferencias que le interesan:

df -h

Output    Size     Used    Avail   (root)    %Capacity
  19.9GB   1016MB   17.9GB   18.9GB           4%

Tenga en cuenta que no hay ninguna variación local de este comando, pero podemos solucionarlo ejecutando ! como comando.

El comando ! nos lleva a un shell local, donde podemos ejecutar cualquier comando disponible en nuestro sistema local. Podemos verificar el uso del disco escribiendo lo siguiente:

!

y luego

df -h

OutputFilesystem      Size   Used  Avail Capacity  Mounted on
/dev/disk0s2   595Gi   52Gi  544Gi     9%    /
devfs          181Ki  181Ki    0Bi   100%    /dev
map -hosts       0Bi    0Bi    0Bi   100%    /net
map auto_home    0Bi    0Bi    0Bi   100%    /home

Cualquier otro comando local funcionará de la manera esperada. Para volver a su sesión SFTP, escriba lo siguiente:

exit

Ahora, debería ver el retorno de la instrucción de SFTP.

Manipulaciones de archivos simples con SFTP

SFTP le permite realizar el tipo de mantenimiento básico de archivos que es útil cuando se trabaja con jerarquías de archivos.

Por ejemplo, puede cambiar el propietario de un archivo en el sistema remoto con:

chown userID file

Observe cómo, a diferencia del comando chmod del sistema, el comando SFTP no acepta nombres de usuario, sino que utiliza UID. Lamentablemente, no hay una manera sencilla de saber el UID adecuado desde la interfaz SFTP.

Se puede realizar una solución alternativa más compleja con:

get /etc/passwd
!less passwd

Outputroot:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
. . .

Observe cómo en vez de utilizar el comando ! en sí, lo utilizamos como prefijo para un comando de shell local. Eso funciona para ejecutar cualquier comando disponible en nuestro equipo local y podría haberse utilizado anteriormente con el comando local df.

El UID se encuentra en la tercera columna del archivo, delimitado por caracteres de dos puntos.

De manera similar, podemos cambiar el propietario del grupo de un archivo con:

chgrp groupID file

De nuevo, no existe una forma sencilla de obtener una lista de los grupos del sistema remoto. Podemos solucionarlo con el siguiente comando:

get /etc/group
!less group

Outputroot:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
. . .

La tercera columna contiene el ID del grupo asociado con el nombre en la primera columna. Eso es lo que buscamos.

Por suerte, el comando chmod funciona correctamente en el sistema de archivos remotos:

chmod 777 publicFile

OutputChanging mode on /home/demouser/publicFile

No existe ningún comando para manipular permisos de archivo locales, pero puede quitar la máscara local para que todos los archivos que se copien al sistema local tengan los permisos adecuados.

Eso se puede lograr con el comando lumask:

lumask 022

OutputLocal umask: 022

Ahora, todos los archivos regulares descargados (siempre que no se utilice el indicador -p) tendrán 644 permisos.

SFTP permite crear directorios en sistemas locales y en sistemas remotos con lmkdir y mkdir, respectivamente. Estos funcionan de la manera prevista.

El resto de los comandos del archivo solo apuntan al sistema de archivos remotos:

ln
rm
rmdir

Estos comandos replican el comportamiento básico de las versiones del shell. Si necesita realizar estas acciones en el sistema de archivos local, recuerde que puede ingresar a un shell ejecutando este comando:

!

O ejecutar un comando único en el sistema local anteponiendo ! al comando de esta manera:

!chmod 644 somefile

Cuando termine con la sesión SFTP, utilice exit o bye para cerrar la conexión.

bye

Conclusión

Aunque SFTP es una herramienta simple, es muy útil para administrar servidores y transferir archivos entre ellos.

Por ejemplo, puede usar SFTP para permitir que determinados usuarios transfieran archivos sin acceso SSH. Para obtener más información sobre este proceso, consulte nuestro tutorial Cómo habilitar SFTP sin acceso de shell.

Si está acostumbrado a utilizar FTP o SCP para realizar sus transferencias, SFTP es una buena forma de aprovechar las ventajas de ambos. Si bien no es adecuado para todas las situaciones, es útil tenerlo en su repertorio por ser una herramienta flexible.

Stephen Dove
Comments

March 25, 2025

Cómo agregar espacio de intercambio en Ubuntu 22.04

Introducción

Una forma de evitar errores de memoria insuficiente en las aplicaciones es añadir espacio de intercambio al servidor. En esta guía, explicaremos cómo añadir un archivo de intercambio a un servidor Ubuntu 22.04.

¿Qué es Swap?

El espacio de intercambio (swap) es una porción del almacenamiento del disco duro que el sistema operativo reserva para almacenar temporalmente los datos que ya no puede almacenar en la RAM. Esto permite aumentar la cantidad de información que el servidor puede almacenar en su memoria de trabajo, con algunas salvedades. El espacio de intercambio del disco duro se utiliza principalmente cuando ya no hay suficiente espacio en la RAM para almacenar los datos de las aplicaciones en uso.

La información escrita en el disco será significativamente más lenta que la almacenada en la RAM, pero el sistema operativo preferirá mantener los datos de las aplicaciones en ejecución en memoria y usar la memoria de intercambio (swap) para los datos más antiguos. En general, tener espacio de intercambio como respaldo cuando la RAM del sistema se agote puede ser una buena protección contra excepciones de falta de memoria en sistemas con almacenamiento no SSD disponible.

Paso 1: Verificación del sistema para obtener información de intercambio

Antes de comenzar, podemos comprobar si el sistema ya tiene espacio de intercambio disponible. Es posible tener varios archivos o particiones de intercambio, pero generalmente uno debería ser suficiente.

Podemos ver si el sistema tiene algún swap configurado escribiendo:

sudo swapon --show

Si no obtiene ningún resultado, significa que su sistema no tiene espacio de intercambio disponible actualmente.

Puedes verificar que no haya ningún intercambio activo usando la freeutilidad:

free -h

Output              total        used        free      shared  buff/cache   available
Mem:          981Mi       122Mi       647Mi       0.0Ki       211Mi       714Mi
Swap:            0B          0B          0B

Como puede ver en la fila Swap de la salida, no hay ningún swap activo en el sistema.

Paso 2: Verificar el espacio disponible en la partición del disco duro

Antes de crear nuestro archivo de intercambio, comprobaremos el uso actual del disco para asegurarnos de que tengamos suficiente espacio. Para ello, introduzca:

df -h

OutputFilesystem      Size  Used Avail Use% Mounted on
udev            474M     0  474M   0% /dev
tmpfs            99M  932K   98M   1% /run
/dev/vda1        25G  1.4G   23G   7% /
tmpfs           491M     0  491M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           491M     0  491M   0% /sys/fs/cgroup
/dev/vda15      105M  3.9M  101M   4% /boot/efi
/dev/loop0       55M   55M     0 100% /snap/core18/1705
/dev/loop1       69M   69M     0 100% /snap/lxd/14804
/dev/loop2       28M   28M     0 100% /snap/snapd/7264
tmpfs            99M     0   99M   0% /run/user/1000

En este caso, el dispositivo /en la Mounted oncolumna es nuestro disco. Tenemos mucho espacio disponible (solo se utilizan 1,4 GB). Tu uso probablemente será diferente.

Aunque existen diversas opiniones sobre el tamaño adecuado del espacio de intercambio, en realidad depende de tus preferencias personales y de los requisitos de tu aplicación. Generalmente, un buen punto de partida es una cantidad igual o el doble de la RAM de tu sistema. Otra regla general es que cualquier cantidad superior a 4 GB de espacio de intercambio probablemente sea innecesaria si solo la usas como RAM de reserva.

Paso 3: Creación de un archivo de intercambio

Ahora que conocemos el espacio disponible en el disco duro, podemos crear un archivo de intercambio en nuestro sistema de archivos. Asignaremos un archivo del tamaño que queramos llamar en nuestro directorio swapfileraíz ( )./

La mejor manera de crear un archivo de intercambio es con el fallocateprograma. Este comando crea instantáneamente un archivo del tamaño especificado.

Dado que el servidor de nuestro ejemplo tiene 1 GB de RAM, crearemos un archivo de 1 GB en esta guía. Ajústelo según las necesidades de su servidor:

sudo fallocate -l 1G /swapfile

Podemos verificar que se reservó la cantidad correcta de espacio escribiendo:

ls -lh /swapfile

-rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

Nuestro archivo ha sido creado con la cantidad correcta de espacio reservado.

Paso 4 – Habilitación del archivo de intercambio

Ahora que tenemos disponible un archivo del tamaño correcto, necesitamos convertirlo en espacio de intercambio.

Primero, necesitamos restringir los permisos del archivo para que solo los usuarios con privilegios de root puedan leer su contenido. Esto impide que los usuarios normales accedan al archivo, lo que tendría importantes consecuencias para la seguridad.

Haga que el archivo sólo sea accesible para root escribiendo:

sudo chmod 600 /swapfile

Verifique el cambio de permisos escribiendo:

ls -lh /swapfile

Output-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

Como puede ver, solo el usuario root tiene habilitadas las funciones de lectura y escritura.

Ahora podemos marcar el archivo como espacio de intercambio escribiendo:

sudo mkswap /swapfile

OutputSetting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

Luego de marcar el archivo, podemos habilitar el archivo de intercambio, permitiendo que nuestro sistema comience a usarlo:

sudo swapon /swapfile

Verifique que el intercambio esté disponible escribiendo:

sudo swapon --show

OutputNAME      TYPE  SIZE USED PRIO
/swapfile file 1024M   0B   -2

Podemos verificar freenuevamente la salida de la utilidad para corroborar nuestros hallazgos:

free -h

Output              total        used        free      shared  buff/cache   available
Mem:          981Mi       123Mi       644Mi       0.0Ki       213Mi       714Mi
Swap:         1.0Gi          0B       1.0Gi

Nuestro intercambio se ha configurado correctamente y nuestro sistema operativo comenzará a usarlo según sea necesario.

Paso 5 – Hacer que el archivo de intercambio sea permanente

Nuestros cambios recientes han habilitado el archivo de intercambio para la sesión actual. Sin embargo, si reiniciamos, el servidor no conservará la configuración de intercambio automáticamente. Podemos cambiar esto añadiendo el archivo de intercambio a nuestro /etc/fstabarchivo.

Haga una copia de seguridad del /etc/fstabarchivo en caso de que algo salga mal:

sudo cp /etc/fstab /etc/fstab.bak

Agregue la información del archivo de intercambio al final de su /etc/fstabarchivo escribiendo:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

A continuación revisaremos algunas configuraciones que podemos actualizar para ajustar nuestro espacio de intercambio.

Paso 6 – Ajuste de la configuración de intercambio

Hay algunas opciones que puedes configurar y que tendrán un impacto en el rendimiento de tu sistema al trabajar con intercambio.

Ajuste de la propiedad de swappiness

Este swappinessparámetro configura la frecuencia con la que el sistema intercambia datos de la RAM al espacio de intercambio. Este valor, entre 0 y 100, representa un porcentaje.

Con valores cercanos a cero, el kernel no intercambiará datos con el disco a menos que sea absolutamente necesario. Recuerde que las interacciones con el archivo de intercambio son costosas, ya que tardan mucho más que las interacciones con la RAM y pueden causar una reducción significativa del rendimiento. Indicarle al sistema que no dependa demasiado del archivo de intercambio generalmente lo hará más rápido.

Los valores cercanos a 100 intentarán almacenar más datos en la memoria de intercambio para liberar más espacio de RAM. Dependiendo del perfil de memoria de sus aplicaciones o del uso que le dé al servidor, esto podría ser mejor en algunos casos.

Podemos ver el valor de swappiness actual escribiendo:

cat /proc/sys/vm/swappiness

Output60

Para una computadora de escritorio, un valor de swappiness de 60 no es un mal valor. Para un servidor, conviene acercarlo a 0.

Podemos establecer el swappiness a un valor diferente usando el sysctlcomando.

Por ejemplo, para establecer el swappiness a 10, podríamos escribir:

sudo sysctl vm.swappiness=10

Outputvm.swappiness = 10

Esta configuración se mantendrá hasta el próximo reinicio. Podemos configurar este valor automáticamente al reiniciar añadiendo la siguiente línea a nuestro /etc/sysctl.confarchivo:

sudo nano /etc/sysctl.conf

En la parte inferior puedes agregar: /etc/sysctl.conf

vm.swappiness=10

Guarde y cierre el archivo cuando haya terminado.

Ajuste de la configuración de presión de caché

Otro valor relacionado que podrías querer modificar es el vfs_cache_pressure. Esta configuración configura con qué frecuencia el sistema almacenará en caché la información de inodos y entradas de entrada sobre otros datos.

Básicamente, se trata de datos de acceso al sistema de archivos. Su consulta suele ser muy costosa y se solicita con mucha frecuencia, por lo que es excelente almacenarlos en caché. Puede ver el valor actual consultando procde nuevo el sistema de archivos:

cat /proc/sys/vm/vfs_cache_pressure

Output100

Con la configuración actual, nuestro sistema elimina la información de inodos de la caché demasiado rápido. Podemos configurarlo con un valor más conservador, como 50, escribiendo:

sudo sysctl vm.vfs_cache_pressure=50

Outputvm.vfs_cache_pressure = 50

Nuevamente, esto solo es válido para nuestra sesión actual. Podemos cambiarlo añadiéndolo a nuestro archivo de configuración, como hicimos con la configuración de intercambio:

sudo nano /etc/sysctl.conf

En la parte inferior, agregue la línea que especifica su nuevo valor: /etc/sysctl.conf

vm.vfs_cache_pressure=50

Guarde y cierre el archivo cuando haya terminado.

Conclusión

Seguir los pasos de esta guía le dará un respiro en casos que, de otro modo, provocarían excepciones de memoria insuficiente. El espacio de intercambio puede ser increíblemente útil para evitar algunos de estos problemas comunes.

Si se encuentra con errores OOM (sin memoria) o descubre que su sistema no puede utilizar las aplicaciones que necesita, la mejor solución es optimizar las configuraciones de sus aplicaciones o actualizar su servidor.

Stephen Dove
Comments

March 17, 2025

Cómo usar SSH para conectarse a un servidor remoto

Introducción

Una herramienta esencial que debe dominar un administrador de sistemas es SSH.

SSH, o Secure Shell , es un protocolo utilizado para acceder de forma segura a sistemas remotos. Es la forma más común de acceder a servidores Linux remotos.

En esta guía, analizaremos cómo usar SSH para conectarse a un sistema remoto.

Sintaxis básica

Para conectarnos a un sistema remoto usando SSH, usaremos el sshcomando.

Si usa Windows, necesitará instalar una versión de OpenSSH para poder acceder sshdesde una terminal. Si prefiere trabajar con PowerShell, puede consultar la documentación de Microsoft para añadir OpenSSH a PowerShell. Si prefiere disponer de un entorno Linux completo, puede configurar WSL (el Subsistema de Windows para Linux), que se incluirá sshpor defecto. Finalmente, como tercera opción ligera, puede instalar Git para Windows , que proporciona un entorno de terminal bash nativo de Windows que incluye el sshcomando. Todas estas opciones son compatibles, y la que elija dependerá de sus preferencias.

Si estás usando Mac o Linux, ya tendrás el sshcomando disponible en tu terminal.

La forma más directa del comando es:

ssh remote_host

En este ejemplo se utiliza la remote_hostdirección IP o el nombre de dominio al que intenta conectarse.

Este comando asume que su nombre de usuario en el sistema remoto es el mismo que su nombre de usuario en su sistema local.

Si su nombre de usuario es diferente en el sistema remoto, puede especificarlo utilizando esta sintaxis:

ssh remote_username@remote_host

Una vez conectado al servidor, es posible que se le solicite verificar su identidad mediante una contraseña. Más adelante, explicaremos cómo generar claves para usarlas en lugar de contraseñas.

Para salir de la sesión ssh y regresar a su sesión de shell local, escriba:

exit

¿Cómo funciona SSH?

SSH funciona conectando un programa cliente a un servidor ssh , llamado sshd.

En la sección anterior, sshse encontraba el programa cliente. El servidor SSH ya se estaba ejecutando en el remote_hostservidor que especificamos.

En casi todos los entornos Linux, el sshdservidor debería iniciarse automáticamente. Si no se ejecuta por algún motivo, es posible que necesite acceder temporalmente a su servidor mediante una consola web o una consola serie local.

El proceso necesario para iniciar un servidor ssh depende de la distribución de Linux que esté utilizando.

En Ubuntu, puedes iniciar el servidor ssh escribiendo:

sudo systemctl start ssh

Esto debería iniciar el servidor sshd y luego podrás iniciar sesión de forma remota.

Cómo configurar SSH

Cuando cambia la configuración de SSH, está cambiando la configuración del sshdservidor.

En Ubuntu, el sshdarchivo de configuración principal se encuentra en /etc/ssh/sshd_config.

Haga una copia de seguridad de la versión actual de este archivo antes de editarlo:

sudo cp /etc/ssh/sshd_config{,.bak}

Ábrelo usando nanotu editor de texto favorito:

sudo nano /etc/ssh/sshd_config

Le recomendamos no modificar la mayoría de las opciones de este archivo. Sin embargo, hay algunas que podría considerar: /etc/ssh/sshd_config

Port 22

La declaración del puerto especifica en qué puerto el sshdservidor escuchará las conexiones. Por defecto, es 22. Probablemente debería dejar esta configuración sin modificar a menos que tenga razones específicas para hacerlo. Si cambia de puerto, le mostraremos cómo conectarse al nuevo puerto más adelante. /etc/ssh/sshd_config

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

Las declaraciones de clave de host especifican dónde buscar las claves de host globales. Más adelante explicaremos qué es una clave de host. /etc/ssh/sshd_config

SyslogFacility AUTH
LogLevel INFO

Estos dos elementos indican el nivel de registro que debe realizarse.

Si tiene dificultades con SSH, aumentar la cantidad de registros puede ser una buena manera de descubrir cuál es el problema. /etc/ssh/sshd_config

LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

Estos parámetros especifican parte de la información de inicio de sesión.

LoginGraceTimeEspecifica cuántos segundos se debe mantener activa la conexión sin iniciar sesión correctamente.

Puede ser una buena idea establecer este tiempo apenas un poco más alto que el tiempo que le toma iniciar sesión normalmente.

PermitRootLoginSelecciona si el usuario root puede iniciar sesión.

En la mayoría de los casos, esto se debe cambiar nocuando haya creado una cuenta de usuario que tenga acceso a privilegios elevados (a través de suo sudo) y pueda iniciar sesión a través de SSH para minimizar el riesgo de que alguien obtenga acceso root a su servidor.

strictModeses una protección de seguridad que rechazará un intento de inicio de sesión si los archivos de autenticación son legibles por todos.

Esto evita intentos de inicio de sesión cuando los archivos de configuración no son seguros. /etc/ssh/sshd_config

X11Forwarding yes
X11DisplayOffset 10

Estos parámetros configuran una función llamada Reenvío X11 . Esto permite ver la interfaz gráfica de usuario (GUI) de un sistema remoto en el sistema local.

Esta opción debe estar habilitada en el servidor y entregada al cliente SSH durante la conexión con la -Xopción.

Después de realizar los cambios, guarde y cierre el archivo. Si usa nano, presione Ctrl+X, luego, cuando se le solicite, Yy luego Enter.

Si cambió alguna configuración en /etc/ssh/sshd_config, asegúrese de volver a cargar su sshdservidor para implementar las modificaciones:

sudo systemctl reload ssh

Debes probar exhaustivamente tus cambios para asegurarte de que funcionen como esperas.

Sería buena idea tener abiertas varias sesiones de terminal mientras se realizan cambios. Esto le permitirá revertir la configuración si es necesario sin bloquearse.

Cómo iniciar sesión en SSH con claves

Si bien es útil poder iniciar sesión en un sistema remoto usando contraseñas, es más rápido y seguro configurar la autenticación basada en claves .

¿Cómo funciona la autenticación basada en clave?

La autenticación basada en clave funciona mediante la creación de un par de claves: una clave privada y una clave pública .

La clave privada se encuentra en la máquina del cliente y está protegida y se mantiene en secreto.

La clave pública se puede entregar a cualquier persona o colocar en cualquier servidor al que desee acceder.

Cuando intenta conectarse utilizando un par de claves, el servidor utilizará la clave pública para crear un mensaje para la computadora cliente que sólo se puede leer con la clave privada.

Luego, la computadora cliente envía la respuesta apropiada al servidor, que le indicará que el cliente es legítimo.

Este proceso se realiza automáticamente después de configurar sus claves.

Cómo crear claves SSH

Las claves SSH deben generarse en el ordenador desde el que desea iniciar sesión . Normalmente, este es su equipo local.

Introduzca lo siguiente en la línea de comando:

ssh-keygen -t rsa

Es posible que se le solicite que establezca una contraseña para los archivos de claves, pero esto es poco común, y debe presionar Enter durante las indicaciones para aceptar los valores predeterminados. Sus claves se crearán en ~/.ssh/id_rsa.pub y ~/.ssh/id_rsa .

Cambie al .sshdirectorio escribiendo:

cd ~/.ssh

Mira los permisos de los archivos:

ls -l
Output-rw-r--r-- 1 demo demo  807 Sep  9 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep  9 23:13 id_rsa
-rw-r--r-- 1 demo demo  396 Sep  9 23:13 id_rsa.pub

Como puede ver, el id_rsaarchivo solo es legible y escribible para el propietario. Esto ayuda a mantenerlo en secreto.

id_rsa.pubSin embargo, el archivo se puede compartir y tiene los permisos adecuados para esta actividad.

Cómo transferir su clave pública al servidor

Si actualmente tiene acceso a un servidor mediante contraseña, puede copiar su clave pública emitiendo este comando:

ssh-copy-id remote_host

Esto iniciará una sesión SSH. Tras introducir su contraseña, se copiará su clave pública al archivo de claves autorizadas del servidor, lo que le permitirá iniciar sesión sin contraseña la próxima vez.

Opciones del lado del cliente

Hay una serie de indicadores opcionales que puedes proporcionar al conectarte a través de SSH.

Algunos de estos pueden ser necesarios para que coincidan con la sshdconfiguración del host remoto.

Por ejemplo, si cambió el número de puerto en su sshdconfiguración, deberá hacer coincidir ese puerto en el lado del cliente escribiendo:

ssh -p port_number remote_host

Nota: Cambiar el puerto SSH es una forma razonable de proporcionar seguridad mediante la opacidad . Si permite conexiones SSH a una implementación de servidor ampliamente conocida en el puerto 22de forma normal y tiene habilitada la autenticación con contraseña, es probable que sufra numerosos intentos de inicio de sesión automatizados. Usar exclusivamente la autenticación basada en clave y ejecutar SSH en un puerto no estándar no es la solución de seguridad más compleja, pero debería minimizarlos.

Si solo desea ejecutar un único comando en un sistema remoto, puede especificarlo después del host de la siguiente manera:

ssh remote_host command_to_run

Se conectará a la máquina remota, se autenticará y se ejecutará el comando.

Como dijimos antes, si el reenvío X11 está habilitado en ambas computadoras, puedes acceder a esa funcionalidad escribiendo:

ssh -X remote_host

Si tiene las herramientas adecuadas en su computadora, los programas GUI que use en el sistema remoto ahora abrirán su ventana en su sistema local.

Deshabilitar la autenticación de contraseña

Si ha creado claves SSH, puede mejorar la seguridad de su servidor desactivando la autenticación solo con contraseña. Además de la consola, la única forma de iniciar sesión en su servidor será mediante la clave privada que coincide con la clave pública que haya instalado.

Advertencia: Antes de continuar con este paso, asegúrese de haber instalado una clave pública en su servidor. De lo contrario, se bloqueará su acceso.

Como root o usuario con privilegios sudo, abra el sshdarchivo de configuración:

sudo nano /etc/ssh/sshd_config

Localice la línea que dice Password Authenticationy descomentela eliminando el #. Luego puede cambiar su valor a no: /etc/ssh/sshd_config

PasswordAuthentication no

Dos configuraciones más que no deberían necesitar modificarse (siempre que no haya modificado este archivo previamente) son PubkeyAuthenticationy ChallengeResponseAuthentication. Están configuradas por defecto y deberían tener el siguiente formato: /etc/ssh/sshd_config

PubkeyAuthentication yes
ChallengeResponseAuthentication no

Después de realizar los cambios, guarde y cierre el archivo.

Ahora puedes recargar el demonio SSH:

sudo systemctl reload ssh

La autenticación de contraseña ahora debe estar deshabilitada y su servidor debe ser accesible solo a través de la autenticación de clave SSH.

Conclusión

Aprender a usar SSH te beneficiará enormemente en tus futuras iniciativas de computación en la nube. A medida que uses las distintas opciones, descubrirás funciones más avanzadas que te facilitarán la vida. SSH se ha mantenido popular gracias a su seguridad, ligereza y utilidad en diversas situaciones.

A continuación, es posible que desee obtener información sobre cómo trabajar con SFTP para realizar transferencias de archivos mediante la línea de comandos.

Stephen Dove
Comments

March 17, 2025

Los 50+ mejores comandos de Linux que DEBES conocer

Introducción

¿Usas comandos de Linux con frecuencia? Hoy veremos más de 50 comandos de Linux que debes conocer . Los siguientes son algunos de los más útiles y usados.

Prerrequisitos

Ejecutaremos estos comandos en un servidor Ubuntu, pero puedes seguirlos en cualquier distribución moderna de Linux. Puedes configurar un servidor Ubuntu para este tutorial siguiendo nuestra guía de Configuración Inicial del Servidor en Ubuntu .

Implementa tus aplicaciones frontend desde GitHub con la plataforma de aplicaciones IsnHosting . Deja que IsnHosting se encargue de escalar tu aplicación.

¡Vamos directo al grano!
Los 50 principales comandos de Linux que debes conocer como usuario habitual

ls : el comando más utilizado en Linux para listar directorios
pwd - Comando para imprimir el directorio de trabajo en Linux
cd - Comando de Linux para navegar por directorios
mkdir - Comando utilizado para crear directorios en Linux
mv - Mover o renombrar archivos en Linux
cp : uso similar a mv pero para copiar archivos en Linux
rm - Eliminar archivos o directorios
tocar - Crear archivos en blanco/vacíos
ln - Crea enlaces simbólicos (accesos directos) a otros archivos
clear - Limpia la pantalla del terminal
cat - Mostrar el contenido del archivo en la terminal
echo - Imprime cualquier texto que siga al comando
less - Comando de Linux para mostrar salidas paginadas en la terminal
man - Accede a las páginas del manual para todos los comandos de Linux
uname - Comando de Linux para obtener información básica sobre el sistema operativo
whoami - Obtener el nombre de usuario activo
tar - Comando para extraer y comprimir archivos en Linux
grep - Busca una cadena dentro de una salida
cabeza - Devuelve el número especificado de líneas desde la parte superior
tail - Devuelve el número especificado de líneas desde la parte inferior
diff - Encuentra la diferencia entre dos archivos
cmp - Le permite comprobar si dos archivos son idénticos
comm - Combina la funcionalidad de diff y cmp
sort - Comando de Linux para ordenar el contenido de un archivo durante la salida
exportar - Exportar variables de entorno en Linux
zip - Archivos zip en Linux
unzip - Descomprimir archivos en Linux
ssh - Comando de Secure Shell en Linux
servicio - Comando de Linux para iniciar y detener servicios
ps - Mostrar procesos activos
kill y killall : elimina procesos activos por ID o nombre de proceso
df - Mostrar información del sistema de archivos del disco
mount - Montar sistemas de archivos en Linux
chmod - Comando para cambiar los permisos de archivos
chown - Comando para otorgar propiedad sobre archivos o carpetas
ifconfig - Mostrar interfaces de red y direcciones IP
traceroute : rastrea todos los saltos de la red para llegar al destino
wget - Descarga directa de archivos desde internet
ufw - Comando de firewall
iptables : firewall base con el que pueden interactuar todas las demás utilidades de firewall
apt, pacman, yum, rpm - Gestores de paquetes según la distribución
sudo - Comando para escalar privilegios en Linux
cal - Ver un calendario de línea de comandos
alias - Crea atajos personalizados para los comandos que usas habitualmente
dd - Se utiliza principalmente para crear memorias USB de arranque.
whereis - Localiza las páginas binarias, de origen y del manual de un comando
whatis - Encuentra para qué se utiliza un comando
Arriba : Ver los procesos activos en vivo con su uso del sistema
useradd y usermod : agregar un nuevo usuario o cambiar los datos de un usuario existente
passwd - Crear o actualizar contraseñas para usuarios existentes

Ahora, profundicemos un poco más en cada uno de estos comandos y los comprendamos con más detalle. Ya contamos con numerosos artículos sobre cada uno de ellos. Para su comodidad, añadiremos enlaces a todos los artículos existentes y los actualizaremos a medida que se aborden nuevos temas.

El comando ls en Linux

Este comando ls se usa para listar archivos y directorios en el directorio de trabajo actual. Es uno de los comandos de Linux más usados ​​que debes conocer.

Comando ls predeterminado

Como puede ver en la imagen anterior, usar el comando solo, sin argumentos, nos dará una salida con todos los archivos y directorios del directorio. El comando ofrece mucha flexibilidad para mostrar los datos en la salida.

Obtenga más información sobre el uso del lscomando

El comando pwd en Linux

Este comando pwd permite imprimir el directorio de trabajo actual en la terminal. Es un comando muy básico y cumple su función a la perfección.

Salida predeterminada de pwd

De todas formas, el indicador de terminal debería mostrar el directorio completo. Pero si no es así, este comando puede ser un recurso rápido para ver el directorio en el que se encuentra. Otra aplicación de este comando es la creación de scripts, donde permite encontrar el directorio donde se guardó el script.

El comando cd en Linux

Al trabajar en la terminal, navegar entre directorios es prácticamente necesario. El comando cd es uno de los comandos importantes de Linux que debes conocer y te ayudará a navegar por los directorios. Simplemente escribe ” cd y luego directorio”, como se muestra a continuación.

root@ubuntu:~# cd

Comando cd predeterminado

Como puede ver en el comando anterior, simplemente escribí cd /etc/para acceder al directorio /etc. Usamos el comando pwd para imprimir el directorio de trabajo actual.

El comando mkdir en Linux

El comando mkdir le permite crear directorios desde dentro de la terminal.

root@ubuntu:~# mkdir

mkdir predeterminado

Como puede ver en la captura de pantalla anterior, creamos el directorio JournalDev con solo este simple comando.

Los comandos cp y mv

Los comandos cp”y” mv son equivalentes a los comandos “copiar-pegar” y “cortar-pegar” de Windows. Sin embargo, como Linux no tiene un comando para renombrar archivos, también lo usamos mv para renombrar archivos y carpetas.

root@ubuntu:~# cp

Comando cp predeterminado

En el comando anterior, creamos una copia del archivo llamado Sample. Veamos qué sucede si usamos el comando de mv la misma manera.

root@ubuntu:~# mv < destino

Comandos mv de Linux que debes conocer

En el caso anterior, al mover el archivo dentro del mismo directorio, actuó como un cambio de nombre. El nombre del archivo ha cambiado.

El comando rm en Linux

En la sección anterior, eliminamos el archivo Sample-Copy. El comando rm se usa para eliminar archivos y carpetas y es uno de los comandos importantes de Linux que debes conocer.

root@ubuntu:~# rm

rm predeterminado

Para eliminar un directorio, debe agregarle el -r argumento. Sin el -r argumento, el comando rm no eliminará los directorios.

root@ubuntu:~# rm -r

En Linux, el argumento-r del comando rm significa ” recursivo “. Al usarla con este comando rm , eliminará recursivamente no solo el archivo especificado, sino también todos sus subdirectorios y los archivos dentro de ellos.

Nota: Es importante tener cuidado al usar el comando rm con el argumento -r, ya que puede eliminar rápida y permanentemente una gran cantidad de archivos y directorios. Es recomendable usar el argumento -i junto con el argumento -r, lo que le solicitará confirmación antes de eliminar cada archivo y directorio.

Por ejemplo, para eliminar el mydirectorio y su contenido con confirmación, puede utilizar este comando:

root@ubuntu:~# rm -rmdir mydirectorio

Esto le solicitará confirmación antes de eliminar cada archivo y directorio dentro del mydirectorio.

El comando touch en Linux

El comando touch en Linux crea un archivo vacío o actualiza la marca de tiempo de un archivo existente.

root@ubuntu:~# touch

Comando táctil: comandos de Linux que debes conocer

El comando ln en Linux

Para crear un enlace a otro archivo, usamos el lncomando. Este es uno de los comandos de Linux más importantes que debes conocer si planeas trabajar como administrador de Linux.

root@ubuntu:~# ln -s

Enlace simbólico predeterminado

El argumento -s crea un enlace simbólico (también conocido como enlace simbólico o enlace simbólico) a un archivo o directorio. Un enlace simbólico es un tipo especial de archivo que actúa como acceso directo o puntero a otro archivo o directorio.

De forma predeterminada, el comando ln creará enlaces duros en lugar de enlaces simbólicos o blandos.

Nota: Supongamos que tiene un archivo de texto. Si crea un enlace simbólico a ese archivo, este solo apunta al archivo original. Si elimina el archivo original, el enlace se romperá, ya que no tendrá adónde apuntar.

Un enlace físico es una copia reflejada de un archivo original con el mismo contenido. Al igual que los enlaces simbólicos, si edita el contenido del archivo original, los cambios se reflejarán en el enlace físico. Sin embargo, si elimina el archivo original, el enlace físico seguirá funcionando y podrá verlo y editarlo como si fuera una copia normal del archivo original.

Obtenga más información sobre enlaces blandos y duros .

El comando clear en Linux

El clearcomando en Linux borra la pantalla de la terminal. Elimina todo el texto y la salida que se muestran en la terminal y te ofrece una página en blanco para trabajar.

A continuación se muestra un ejemplo de cómo utilizar el comando clear:

root@ubuntu:~# clear

Esto borrará la pantalla del terminal y moverá el cursor a la esquina superior izquierda de la pantalla.

También puedes usar el comando clear en combinación con otros comandos, como este:

root@ubuntu:~# ls -l; clear

Esto listará los archivos y directorios en el directorio actual y luego borrará la pantalla del terminal.

Nota: Este comando clear no elimina ningún archivo ni dato del sistema. Solo afecta la visualización de la terminal.


Los comandos cat, echo, y less

Para mostrar el contenido de un archivo o imprimir cualquier cosa en la salida del terminal, usamos los comandos cat”or” echo. Veamos su uso básico.

root@ubuntu:~# cat
root@ubuntu:~# echo

Comandos de cat y echo

Como puede ver en el ejemplo anterior, el comando cat, al usarlo en nuestro archivo New-File, imprime el contenido del archivo. Al mismo tiempo, al usar el comando echo , simplemente imprime lo que sigue después del comando.

Este comando less se utiliza cuando la salida impresa por cualquier comando es mayor que el espacio de la pantalla y requiere desplazamiento. less permite al usuario descomponer la salida y desplazarse por ella con las teclas Intro o Espacio.

La forma sencilla de hacer esto es mediante el uso del operador de pipe ( | ).

root@ubuntu:~# cat /boot/grub/grub.cfg | less

Nota: Usa el argumento -S con less para habilitar el ajuste de línea. Esto te permitirá ver líneas largas de texto sin tener que desplazarte horizontalmente.

Usa el argumento -N con less para mostrar los números de línea. Esto puede ser útil cuando necesitas saber el número de línea de un texto específico.

Puedes utilizar estas útiles argumentos de la siguiente manera:

root@ubuntu:~# cat /boot/grub/grub.cfg | less -SN

Usar less el operador de pipe puede ser útil en diversas situaciones. Aquí hay algunos ejemplos:

Visualizar la salida de un comando de ejecución prolongada, como topo htop.
Búsqueda de texto específico en la salida de un comando, como grep o cat.

El comando man en Linux

Este comando man es muy útil en Linux y es fundamental conocerlo. Al trabajar con Linux, los paquetes que descargamos pueden tener muchísimas funciones. Saberlo todo es imposible.

En Linux, el comando man se usa para mostrar la página del manual de un comando específico. Proporciona información detallada sobre el comando, incluyendo su sintaxis, opciones y ejemplos.

A continuación se muestra un ejemplo de cómo utilizar el comando man:

Abra una terminal y escriba man ls para mostrar la página del manual del comando ls.

root@ubuntu:~# man ls

Esto mostrará una página que se parece a esto:

Output
LS(1) User Commands LS(1)

NAME
ls – list directory contents

SYNOPSIS
ls [OPTION]… [FILE]…

DESCRIPTION
List information about the FILEs (the current directory by default).

   Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

   Mandatory arguments to long options are mandatory for short options too.

   -a, --all
          do not ignore entries starting with .

   -A, --almost-all
          do not list implied . and ..

   -c     with -lt: sort by, and show, ctime (time of last modification
          of file status information) with -l: show ctime and sort
          by name; 

Los comandos uname y whoami

Los comandos uname y whoami le permiten acceder a información básica que resulta útil cuando trabaja en varios sistemas.

El comando uname en Linux muestra información sobre el kernel del sistema, incluido el nombre del kernel, el nombre del host, la versión del kernel, la versión del kernel y el nombre del hardware de la máquina.

El comando whoami en Linux devuelve el nombre de usuario del usuario actual. Significa “¿quién soy?” y se usa a menudo para determinar la identidad del usuario actual en scripts de shell o en la terminal.

Veamos la salida de ambos comandos y la forma en que podemos utilizarlos.

root@ubuntu:~# uname -a

Comandos uname y whoami Comandos de Linux que debes conocer

El parámetro -a con uname el comando significa “all”. Esto imprime la información completa. Si no se añade el parámetro, la salida será “Linux”.

Nota: Algunas banderas importantes que puedes usar con el unamecomando.

Úselo uname -s para mostrar el nombre del núcleo.
Úselo uname -n para mostrar el nombre del host.
Úselo uname -r para mostrar la versión del kernel.
Úselo uname -v para mostrar la versión del kernel.
Úselo uname -m para mostrar el nombre del hardware de la máquina.

Los comandos tar, zip, y unzip

En Linux, este comando tar se usa para crear y extraer archivos comprimidos. Podemos extraer varios archivos comprimidos diferentes con este comando tar.

Para crear un archivo, usamos el parámetro -c , y para extraerlo, usamos el parámetro -x. Veamos cómo funciona.

Comprimir

root@ubuntu:~# tar -cvf

Extraer

root@ubuntu:~# tar -xvf

Uso básico de Tar: Comandos de Linux que debes conocer

En la primera línea, creamos un archivo comprimido llamado Compress.tar con New-File y New-File-Link. En el siguiente comando, extrajimos esos archivos del archivo comprimido.

Analicemos los comandos zip y unzip. Ambos son muy sencillos. Puedes usarlos sin parámetros y funcionarán correctamente. Veamos un ejemplo a continuación.

root@ubuntu:~# zip
root@ubuntu:~# unzip

Comandos de descompresión de archivos Zip

Como ya tenemos esos archivos en el mismo directorio, el comando unzip nos pregunta antes de sobre scribirlos.

El comando grep en Linux

Este comando grep es una herramienta de búsqueda de texto potente y versátil en sistemas operativos Linux y Unix. Permite buscar patrones o cadenas específicos en uno o más archivos y filtrar la salida de otros comandos.

El comando grep significa “impresión de expresión regular global”, lo que refleja su capacidad para buscar expresiones regulares en múltiples líneas y archivos.

root@ubuntu:~# | grep “”

Ejemplo de comando grep

Esta fue una demostración sencilla del comando. Obtenga más información sobre el comando grep .

Los comandos head y tail

Al generar archivos grandes, los comandos head y tail resultan útiles. Estos comandos muestran el inicio o el final de un archivo, respectivamente. Se utilizan comúnmente para ver rápidamente el contenido de un archivo sin tener que abrirlo en un editor de texto.

Los comandos heady tail muestran las primeras 10 líneas de un archivo de forma predeterminada. Para mostrar un número diferente de líneas, puede usar la -n opción y, a continuación, indicar el número de líneas que desee mostrar.

A continuación se muestra un ejemplo del uso de los comandos heady :tail

root@ubuntu:~# head
root@ubuntu:~# tail

Comando principal

Como puede ver, el comando head mostró 10 líneas desde la parte superior del archivo.

Comandos Tail Command de Linux que debes conocer

El comando tail generó las últimas 10 líneas del archivo.

Estos comandos se pueden usar para ver rápidamente el contenido de un archivo, monitorear actualizaciones en tiempo real para solucionar problemas, filtrar la salida de otros comandos y realizar análisis de registros.

Los comandos diff, comm, y cmp

Los comandos diff, comm, y cmp se utilizan para comparar archivos en sistemas operativos Linux y Unix. Estos comandos permiten identificar diferencias entre dos archivos, fusionar cambios y realizar otras tareas de comparación.

root@ubuntu:~# diff

Comando Diff: Comandos de Linux que debes conocer

Como puede ver arriba, hemos agregado un pequeño fragmento de texto que dice “Esta línea está editada” al archivo Nuevo-Archivo-Editado.

El comando cmp se usa para comparar dos archivos y mostrar el primer byte que difiere entre ellos. Puede usarse para identificar diferencias entre archivos binarios o para verificar si hay archivos dañados.

root@ubuntu:~# cmp

Comando cmp

El comando cmp solo nos indica el número de línea, que es diferente. No el texto real.

El comando comm se utiliza para comparar dos archivos ordenados y mostrar las líneas que son únicas para cada archivo, así como las líneas que son comunes a ambos archivos.

root@ubuntu:~# comm

Comando de comunicaciones

El texto alineado a la izquierda solo está presente en file 1. El texto alineado al centro solo está presente en file 2. Y el texto alineado a la derecha está presente en ambos archivos.

Al parecer, el comando comm tiene más sentido cuando intentamos comparar archivos más grandes y nos gustaría ver todo organizado junto.

Estos tres comandos son herramientas esenciales para trabajar con archivos en sistemas operativos Linux y Unix. Al comprender el uso eficaz de los comandos diff, comm y cmp, podrá identificar diferencias entre archivos, fusionar cambios y realizar otras tareas de comparación de archivos.

Estos comandos pueden ayudarte a identificar y resolver problemas con los archivos, así como a realizar un seguimiento de los cambios y mantener el control de versiones. Tanto si eres desarrollador como administrador de sistemas, estos comandos son esenciales para tu conjunto de herramientas.

El comando sort en Linux

El comando sort se utiliza para ordenar líneas en un archivo de texto o en la entrada estándar en sistemas operativos Linux y Unix. Permite ordenar líneas en orden ascendente o descendente, así como realizar otras operaciones de ordenación, como ordenar por campos o usar un orden personalizado.

La sintaxis básica del sortcomando es:

root@ubuntu:~# sort

Comando de ordenamiento: Comandos de Linux que debes conocer

De forma predeterminada, el comando sort ordena las líneas en secuencia de intercalación ASCII , lo que puede generar resultados inesperados al ordenar números o caracteres especiales. Para ordenar números numéricamente, puede usar la -n opción.

A continuación se muestra un ejemplo del uso de la opción -n:

root@ubuntu:~# sort -n file.txt

El comando anterior ordenará las líneas en file.txt orden numérico.

El comando sort también se puede utilizar para ordenar líneas según campos específicos utilizando la opción -k.

A continuación se muestra un ejemplo del uso de la -kopción:

root@ubuntu:~# sort -k 2 file.txt

Este comando ordenará las líneas file.txt según el segundo campo.

Este comando sort es una herramienta potente y flexible para trabajar con archivos de texto en sistemas operativos Linux y Unix. Al comprender su uso eficaz de sort, podrá ordenar líneas en archivos de texto, ordenar líneas según campos específicos y realizar otras operaciones de ordenación.

Estos comandos pueden ayudarte a organizar y analizar datos, así como a realizar otras tareas de manipulación de archivos. Tanto si eres desarrollador como administrador de sistemas, este comando sort es esencial en tu conjunto de herramientas.

El comando export en Linux

En sistemas operativos Linux y Unix, el comando export se utiliza para configurar variables de entorno. Estas variables almacenan información que puede ser utilizada por procesos o comandos.

Una vez que se configura una variable de entorno, cualquier proceso o comando que se ejecute en el mismo shell puede acceder a ella.

Las variables de entorno se pueden utilizar para almacenar una amplia gama de información, como configuraciones, preferencias de usuario o información del sistema.

A continuación se muestra un ejemplo del uso del comando export:

root@ubuntu:~# export =

Variables de entorno de exportación

Obtenga más información sobre el comando export

El comando ssh en Linux

Este comando ssh, en sistemas operativos Linux y Unix, establece una conexión de shell segura con un servidor remoto. Proporciona una conexión cifrada segura entre los servidores local y remoto, lo que permite a los usuarios ejecutar comandos y transferir archivos de forma segura.

La sintaxis básica del comando ssh es:

root@ubuntu:~ ssh username@remote-server

Este comando establece una conexión ssh con el usuario en el remote-server de la cuenta username.

El comando ssh admite una amplia gama de opciones y configuraciones, incluidas:

Configurar métodos de autenticación (contraseña, clave pública, etc.)
Configuración de algoritmos de cifrado
Configurar la compresión
Configuración del reenvío de puertos
Configuración del reenvío X11
Configuración de claves SSH

El comando service en Linux

En Linux, este comando service se utiliza para administrar los servicios del sistema, que son procesos de larga duración que se inician al arrancar el sistema y se ejecutan en segundo plano. Estos servicios se encargan de proporcionar diversas funcionalidades del sistema, como la red, la gestión de bases de datos y la autenticación de usuarios.

El comando service se utiliza para iniciar, detener, reiniciar y comprobar el estado de estos servicios. Es una interfaz para el comando systemctl, que se utiliza para gestionar el administrador de servicios.

La sintaxis básica del comando es la siguiente.

root@ubuntu:~ service ssh status
root@ubuntu:~ service ssh stop
root@ubuntu:~ service ssh start

Comando de servicio

Como puedes ver en la imagen, el servidor ssh está ejecutándose en nuestro sistema.

Los comandos ps, kill, y kill all

Los comandos ps, kill, y kill all se utilizan para administrar procesos en Linux.

Este comando ps se utiliza para mostrar información sobre los procesos que se están ejecutando en el sistema. A continuación, se muestran algunos ejemplos de su uso ps:

Mostrar una lista de todos los procesos en ejecución:

root@ubuntu:~ ps -ef

Mostrar una lista de todos los procesos para un ID de proceso específico (PID):

root@ubuntu:~ ps -p PID

Veamos todo esto en acción:

root@ubuntu:~ ps
root@ubuntu:~ kill
root@ubuntu:~ kill all

Para fines de demostración, crearemos un script de shell con un bucle infinito y lo ejecutaremos en segundo plano.

Con el &símbolo, podemos pasar un proceso a segundo plano. Como puede ver, se crea un nuevo proceso bash con el PID 14490.

Comandos de ps Command para Linux que debes conocer

Ahora, para matar un proceso con el comando kill, puede escribir kill seguido del PID (Id. de proceso) del proceso.

Comandos Kill Command de Linux que debes conocer

Pero si no conoce el ID del proceso y solo desea matar el proceso con el nombre, puede utilizar el comando kill all.

Comando Kill all: Comandos de Linux que debes conocer

Notarás que el PID 14490permaneció activo. Esto se debe a que, en ambas ocasiones, cancelamos el proceso de suspensión.

Obtenga más información sobre el comando ps y el comando kill.

Los comandos df y mount

Al trabajar con Linux, los comandos df y mount son utilidades muy eficientes para montar sistemas de archivos y obtener detalles del sistema de archivos.

El comando df se utiliza para mostrar la cantidad de espacio en disco utilizado y disponible en los sistemas de archivos, y mount se utiliza para montar un sistema de archivos o un dispositivo en un directorio específico.

Cuando decimos mount, significa que conectaremos el dispositivo a una carpeta para poder acceder a los archivos de nuestro sistema de archivos. La sintaxis predeterminada para montar un sistema de archivos es la siguiente:

root@ubuntu:~ mount /dev/cdrom /mnt
root@ubuntu:~ df -h

En el caso anterior, /dev/cdrom es el dispositivo que debe montarse. Normalmente, un dispositivo montable se encuentra dentro de la /dev carpeta. mnt es la carpeta de destino donde se montará el dispositivo. Puede cambiarla a cualquier carpeta que desee, pero la hemos usado /mnt porque es la carpeta predeterminada del sistema para montar dispositivos.

Para ver los dispositivos montados y obtener más información sobre ellos, usamos el comando df. Con solo escribirlo, df obtenemos los datos en bytes, que no son legibles. Por lo tanto, usaremos el -h parámetro para que los datos sean legibles.

Comandos de Linux que debes conocer en df Command

Los comandos chmod y chown

Los comandos chmod y chown se utilizan para modificar los permisos y la propiedad de archivos en Linux.

El comando chmod se utiliza para cambiar los permisos de un archivo o directorio, y el comando chown se utiliza para cambiar la propiedad de un archivo o directorio.

La sintaxis predeterminada para ambos comandos es chmod filenameychown filename

root@ubuntu:~ chmod +x loop.sh
root@ubuntu:~ chmod root:root loop.sh

Comando chmod: Comandos de Linux que debes conocer

En el ejemplo anterior, agregamos permisos de ejecución al loop.sh archivo con el comando chmod. Además, con este comando chown, solo el usuario root y los usuarios del grupo root podrán acceder a él.

Comandos chown de Linux que debes conocer

Como notarás, root root ahora se ha cambiado la parte www-data que corresponde al nuevo usuario que tiene propiedad total del archivo.

Obtenga más información sobre los permisos de archivos de Linux y el uso del comando chmod.

Los comandos ifconfig y traceroute

Los comandos ifconfig y traceroute administran interfaces de red y rastrean la ruta de los paquetes de red en Linux.

El comando ifconfig le proporcionará la lista de todas las interfaces de red junto con las direcciones IP, direcciones MAC y otra información sobre la interfaz.

root@ubuntu:~ ifconfig

Hay varios parámetros que se pueden utilizar, pero aquí trabajaremos con el comando básico.

Comando ifconfig: comandos de Linux que debes conocer

El comando traceroute se utiliza para rastrear la ruta de los paquetes de red y determinar el camino que toman para llegar a un destino específico.

Al trabajar con traceroute, puede simplemente especificar la dirección IP, el nombre de host o el nombre de dominio del punto final.

root@ubuntu:~ traceroute

Comando traceroute comandos de Linux que debes conocer

Ahora, obviamente, localhost solo hay un salto (la interfaz de red). Puedes probar este mismo comando con cualquier otro nombre de dominio o dirección IP para ver todos los enrutadores por los que pasan tus paquetes de datos para llegar a su destino.

Obtenga más información sobre las útiles herramientas de red de Linux .

El comando wget en Linux

Si desea descargar un archivo desde la terminal, este comando wget es una de las utilidades de línea de comandos más prácticas disponibles. Es uno de los comandos de Linux más importantes que debe conocer al trabajar con archivos fuente.

Al especificar el enlace de descarga, debe ser un enlace directo al archivo. Si el comando no puede acceder al archivo wget, simplemente descargará la página web en formato HTML en lugar del archivo deseado.

Probemos con un ejemplo. La sintaxis básica del comando wget es:

root@ubuntu:~ wget

O,

root@ubuntu:~ wget -c

El argumento -c nos permite reanudar una descarga interrumpida.

Los comandos ufw y iptables

Los comandos ufw y iptables se utilizan para administrar firewalls en Linux.

UFW e IPTables son interfaces de firewall para el firewall Netfilter del kernel de Linux. IPTables pasa directamente las reglas del firewall a Netfilter, mientras que UFW configura las reglas en IPTables, que a su vez las envía a Netfilter.

¿Por qué necesitamos UFW si tenemos IPTables? Porque IPTables es bastante difícil para un principiante. UFW lo simplifica muchísimo. Vea el ejemplo a continuación, donde intentamos habilitar el puerto 80 para nuestro servidor web.

root@ubuntu:~# iptables -A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
root@ubuntu:~# ufw allow 80

¡Seguro que ya sabes por qué se creó UFW! Observa lo sencilla que es la sintaxis. Ambos firewalls son muy completos y te permiten crear cualquier tipo de configuración que necesites para tu red. Aprende al menos los conceptos básicos de UFW o de IPTables, ya que son los comandos de Linux que debes conocer.

Obtenga más información sobre cómo administrar el firewall conufw y cómo administrar el firewall coniptables .

Gestores de paquetes en Linux

Las distintas distribuciones de Linux usan distintos gestores de paquetes. Como trabajamos en un servidor Ubuntu, tenemos el apt gestor de paquetes. Sin embargo, para alguien que trabaja en una máquina Fedora, Red Hat, Arch o CentOS, el gestor de paquetes será diferente.

A continuación se muestran los comandos sobre cómo utilizar estos administradores de paquetes en diferentes distribuciones de Linux.

Debian y distribuciones basadas en Debian -apt install <package name>
Arch y distribuciones basadas en Arch -pacman -S <package name>
Red Hat y distribuciones basadas en Red Hat -yum install <package name>
Fedora y CentOS -yum install <package>

Familiarizarse con el gestor de paquetes de su distribución le facilitará mucho las cosas a largo plazo. Así que, incluso si tiene instalada una herramienta de gestión de paquetes basada en GUI, pruebe a usar la herramienta basada en CLI antes de pasar a la utilidad GUI. Añada estos comandos a su lista de comandos de Linux imprescindibles.

El comando sudo en Linux

“Un gran poder conlleva una gran responsabilidad”

Esta es la cita que se muestra cuando un usuario con sudo habilitado (sudoer) usa el sudocomando para escalar privilegios por primera vez. Este comando equivale a iniciar sesión como root(según los permisos que tenga como sudo).

non-root-user@ubuntu:~# sudo
Password:

Simplemente añade el comando sudo antes de cualquier comando que necesites ejecutar con privilegios elevados, y listo. Es muy fácil de usar, pero también puede suponer un riesgo de seguridad adicional si un usuario malintencionado accede a un sudo.

Obtenga más información sobre cómo crear un nuevo sudo usuario y cómo editar el archivo sudoers .

El comando cal en Linux

¿Alguna vez has querido ver el calendario en la terminal? Parece que hay gente que quiere que suceda, y bueno, aquí está.

El comando cal muestra un calendario bien presentado en la terminal. Simplemente introdúzcalo calen el indicador de la terminal.

root@ubuntu:~# cal
root@ubuntu:~# cal March 2024

Salida del comando Cal

Aunque no lo necesitamos a menudo, ¡es una gran adición! Es una opción increíble para los fanáticos de las terminales.

El comando alias

¿Tienes algún comando que ejecutes con mucha frecuencia al usar la terminal? Podría ser rm -ro ls -l, o algo más largo como tar -xvzf.

Este es uno de los comandos de Linux que mejoran la productividad y que debes conocer.

Si conoce un comando que ejecuta muy a menudo, es hora de crear un alias.

¿Qué es un alias? En pocas palabras, es otro nombre para un comando que has definido.

root@ubuntu:~# alias lsl=”ls -l”
OR
root@ubuntu:~# alias rmd=”rm -r”

Ahora, cada vez que ingreses ls -la rm de la terminal, recibirás la salida que habrías recibido si hubieras utilizado los comandos completos.

Los ejemplos aquí son para comandos muy pequeños que aún se pueden escribir a mano en cualquier momento. Sin embargo, en situaciones donde un comando tiene demasiados argumentos que se deben escribir, es mejor crear una versión abreviada.

El comando dd en Linux

Este comando se creó para convertir y copiar archivos de múltiples formatos de sistemas de archivos. Actualmente, se usa simplemente para crear USB de arranque para Linux, pero aún se pueden realizar algunas tareas importantes con él.

En Linux, este comando dd es versátil y se utiliza para copiar y convertir datos a bajo nivel. Significa “descripción de datos” o “definición de datos” y permite copiar y convertir datos entre diferentes formatos de archivo y dispositivos de almacenamiento.

Por ejemplo, si quisiéramos hacer una copia de seguridad de todo el disco duro tal como está en otra unidad, usaríamos el comando dd.

root@ubuntu:~# dd if=/dev/sdb of=/dev/sda

Los argumentos if y of representan el archivo de entrada y el archivo de salida .

Es una herramienta potente y flexible, pero también puede ser peligrosa si no se usa con cuidado. Siempre revise la sintaxis y asegúrese de comprender la función del comando antes de ejecutarlo.

Los comandos whereis y whatis

Los comandos whereis y whatis se utilizan en Linux para buscar información sobre programas y archivos.

El comando whereis ubica las páginas binarias, de origen y del manual de un comando o programa específico, y whatis muestra una breve descripción de un comando o programa.

root@ubuntu:~# whereis sudo
sudo: /usr/bin/sudo /usr/lib/sudo /usr/share/man/man8/sudo.8.gz

El whatiscomando nos da una explicación de lo que realmente es un comando.

root@ubuntu:~# whatis sudo
sudo (8) – execute a command as another user

El comando top en Linux

En algunas secciones anteriores, hablamos sobre el comando ps. Observaron que ps este mostrará los procesos activos y finalizará automáticamente.

El comando top es como una versión CLI del administrador de tareas de Windows.

El comando top en Linux es una herramienta de monitorización del sistema que muestra información en tiempo real sobre los procesos del sistema y el uso de recursos. Proporciona una vista dinámica y en tiempo real de la actividad del sistema, incluyendo el uso de la CPU, el uso de la memoria y la información de los procesos.

Principales comandos de salida de comandos de Linux que debes conocer

Nota: A continuación se muestran algunos ejemplos del uso del comando top:

Ordenar procesos por uso de memoria:

root@ubuntu:~# top -o MEM

Esto ordenará la lista de procesos por uso de memoria, con los procesos con mayor uso de memoria en la parte superior.

Mostrar información detallada sobre un proceso específico:

root@ubuntu:~# top -p PID

Reemplace PIDcon el ID del proceso que desea inspeccionar.

Mostrar un resumen del uso de los recursos del sistema:

root@ubuntu:~# top -n 1

Esto mostrará una única pantalla de resumen del uso de los recursos del sistema.

Es una herramienta poderosa y flexible para monitorear la actividad del sistema y solucionar problemas de rendimiento.

Los comandos useradd y usermod

Los comandos useradd y usermod se utilizan en Linux para administrar cuentas de usuario.

Los comandos useradd “o” adduser son exactamente los mismos, pero adduser solo contienen un enlace simbólico useradd. Este comando permite crear un nuevo usuario en Linux.

root@ubuntu:~# useradd JournalDev -d /home/JD

El comando anterior creará un nuevo usuario JournalDev cuyo directorio de inicio será /home/JD.

El comando usermod, por otro lado, se utiliza para modificar usuarios existentes. Se puede modificar cualquier valor del usuario, incluyendo grupos, permisos, etc.

Por ejemplo, si desea agregar más grupos al usuario, puede escribir:

root@ubuntu:~# usermod JournalDev -a -G sudo, audio, mysql

El comando passwd en Linux

Ahora que ya sabes cómo crear nuevos usuarios, vamos a configurar también sus contraseñas. El comando passwd te permite configurar la contraseña para tu propia cuenta o, si tienes los permisos necesarios, para otras cuentas.

A continuación se muestran algunos ejemplos del uso del comando passwd:

Cambiar la contraseña del usuario actual:

root@ubuntu:~# passwd

Esto le pedirá que ingrese una nueva contraseña para el usuario actual.

Cambiar la contraseña de un usuario específico:

root@ubuntu:~# passwd username

Reemplace username con el nombre del usuario cuya contraseña desea cambiar.

Obligar a un usuario a cambiar su contraseña en el próximo inicio de sesión:

root@ubuntu:~# passwd -f username

Establecer una fecha de vencimiento para la contraseña de un usuario:

root@ubuntu:~# passwd -e -n days -w warn days username

Reemplace days con el número de días antes de que expire la contraseña y warm days con el número de días antes de que expire la contraseña que se le advertirá al usuario.

Estos son solo algunos ejemplos del uso del comando passwd en Linux. Al comprender cómo usarlo eficazmente, podrá administrar las cuentas de usuario y garantizar la seguridad de su sistema.

Comando passwd

Conclusión

Estamos seguros de que este artículo le resultó útil. Si tiene alguna pregunta o inquietud, no dude en dejarla en la sección de comentarios.

Stephen Dove