Blog

  • Seis comandos útiles de Vim – Linux

    En esta entrada, vamos a explorar seis comandos útiles de Vim, un potente editor de texto que se encuentra ampliamente disponible en la mayoría de las distribuciones de Linux. Vim es conocido por su flexibilidad y capacidad para aumentar la eficiencia de los usuarios. Empecemos!

    1. Modo de edición

    El primer paso para aprovechar al máximo Vim es entender cómo entrar en el modo de edición. Por defecto, Vim se inicia en el modo de navegación (comando) y para editar un archivo, debes presionar la tecla ‘i’ para entrar en el modo de edición. Una vez en este modo, podrás modificar el contenido del archivo como lo harías en cualquier otro editor de texto.

    Ejemplo:

    $ vim archivo.txt
    Presiona 'i' para entrar en el modo de edición.
    Comienza a editar el contenido del archivo.
    Presiona 'Esc' para salir del modo de edición.

    2. Guardar y salir

    Una vez que hayas terminado de editar un archivo en Vim, es importante guardar tus cambios y salir correctamente. Puedes lograr esto utilizando el siguiente comando:

    :wq

    Este comando guarda los cambios en el archivo actual y lo cierra. Si deseas salir sin guardar los cambios, puedes usar:

    :q!

    3. Deshacer y rehacer cambios

    A veces cometemos errores mientras editamos un archivo y necesitamos deshacer o rehacer cambios específicos. En Vim, puedes hacerlo utilizando los siguientes comandos:

    u - Deshacer el último cambio.
    Ctrl + r - Rehacer el último cambio deshecho.

    Ejemplo:

    $ vim archivo.txt
    Realiza varios cambios en el archivo.
    Presiona 'u' para deshacer el último cambio.
    Presiona 'Ctrl + r' para rehacer el último cambio deshecho.

    4. Copiar, cortar y pegar

    Vim también te permite copiar, cortar y pegar texto de manera eficiente. Estos son los comandos que puedes usar:

    yy - Copiar la línea actual.
    dd - Cortar la línea actual.
    p - Pegar el texto copiado o cortado después de la línea actual.

    Ejemplo:

    $ vim archivo.txt
    Coloca el cursor en la línea que deseas copiar o cortar.
    Presiona 'yy' para copiar la línea.
    Presiona 'dd' para cortar la línea.
    Mueve el cursor a la posición deseada.
    Presiona 'p' para pegar el texto.

    5. Cambiar texto en múltiples líneas

    El comando “:%s/old/new/g” te permite reemplazar una cadena de texto específica en todas las líneas del archivo. Veamos un ejemplo:

    Supongamos que tenemos el siguiente texto en un archivo:

    Hola, esto es una prueba.
    Hola, esto es otro ejemplo.
    Hola, esto es un tercero.

    Si queremos reemplazar todas las instancias de “Hola” con “Saludos”, podemos ejecutar el siguiente comando en Vim:

    :%s/Hola/Saludos/g

    Después de ejecutar el comando, el archivo se actualizará de la siguiente manera:

    Saludos, esto es una prueba.
    Saludos, esto es otro ejemplo.
    Saludos, esto es un tercero.

    6. Moverse rápidamente entre palabras

    Vim proporciona una forma eficiente de moverse rápidamente entre palabras utilizando los comandos “w” y “b”. El comando “w” se utiliza para mover el cursor a la siguiente palabra, mientras que “b” lo mueve hacia atrás. Veamos un ejemplo:

    Supongamos que tenemos el siguiente texto en un archivo:

    Este es un ejemplo de texto para probar el movimiento entre palabras.

    Si queremos ir al comienzo de la palabra “ejemplo”, podemos presionar “w” tres veces:

    Este es un ejemplo de texto para probar el movimiento entre palabras.
               ^

    Si queremos movernos a la palabra “es” anterior a “ejemplo”, podemos presionar “b” dos veces:

    Este es un ejemplo de texto para probar el movimiento entre palabras.
         ^

    Estos comandos pueden ayudarte a navegar rápidamente por el texto y realizar ediciones precisas.

  • Ejemplos de uso del comando find – Linux

    El comando “find” es una herramienta del sistema operativo Linux que te permite buscar archivos y directorios según diferentes criterios. Vamos a ver algunos ejemplos prácticos que pueden resultarnos útiles.

    Buscar archivo por nombre

    El uso más común del comando “find” es buscar archivos y directorios por su nombre. Por ejemplo si queremos buscar un archivo con extensión “.txt” en el directorio actual y subdirectorios, se puede ejecutar el siguiente comando:

    find . -name "*.txt"

    Ejemplo de resultado:

    ./documents/file1.txt
    ./documents/file2.txt
    ./pictures/notes.txt

    Este comando buscará todos los archivos con extensión “.txt” y mostrará los resultados con su ruta relativa.

    Si nos acordamos una parte del nombre del archivo, podemos utilizarlo para restringir la búsqueda. Por ejemplo si sabemos que el archivo que buscamos contiene la palabra “file”, podemos realizar la siguiente búsqueda:

    find . -name "*file*.txt"

    Ejemplo de resultado:

    ./documents/file1.txt
    ./documents/file2.txt

    Búsqueda por tipo de archivo

    Además de buscar por nombre, “find” te permite buscar archivos por su tipo. Por ejemplo, si deseas encontrar todos los archivos de tipo “documento” en tu sistema, puedes utilizar la siguiente comando:

    find / -type f -name "*.odt" -o -name "*.pdf"

    Ejemplo de resultado:

    /home/usuario/documentos/reporte.odt
    /home/usuario/documentos/manual.pdf

    Este comando buscará todos los archivos con extensión “.odt” o “.pdf” en todo el sistema.

    Búsqueda por tamaño de archivo

    El comando “find” puede utilizarse también si necesitas encontrar archivos que cumplan con ciertas restricciones de tamaño Por ejemplo, si buscamos los archivos que sean más grandes que 1 MB en un directorio específico, puedes ejecutar el siguiente comando:

    find /path/al/directorio -size +1M

    Ejemplo de resultado:

    /path/al/directorio/archivo1.jpg
    /path/al/directorio/video2.mp4

    Este comando buscará todos los archivos que tengan un tamaño mayor a 1 MB en el directorio especificado.

    Búsqueda y ejecución de comandos en archivos encontrados

    Una característica del comando “find” es la capacidad de realizar acciones en los archivos encontrados. Por ejemplo, si deseas buscar todos los archivos con extensión “.log” y borrarlos, se puede combinar “find” con el comando “rm” de la siguiente manera:

    find /path/al/directorio -name "*.log" -exec rm -v {} \;

    Ejemplo de resultado:

    '/path/al/directorio/log1.log' borrado
    '/path/al/directorio/log2.log' borrado

    Este comando buscará todos los archivos con extensión “.log” en el directorio especificado y ejecutará el comando “rm” para borrarlos.

  • Ejemplos del comando rsync – Linux

    El comando “rsync” te permite sincronizar y transferir archivos y directorios de manera eficiente. Vamos a ver ejemplos prácticos de uso del comando “rsync” que te ayudarán a realizar copias de seguridad, transferencias locales y remotas, y mantener tus archivos y directorios sincronizados.

    Copia local de un directorio

    Si deseas realizar una copia de seguridad de un directorio en otro lugar de tu sistema de archivos, “rsync” puede simplificar esta tarea. Por ejemplo, si deseas hacer una copia de seguridad del directorio “documentos” en tu directorio personal, puedes ejecutar el siguiente comando:

    rsync -av /path/a/documentos/ /home/usuario/backup/documentos/

    Parámetros utilizados:

    • “-a” (archive): Preserva atributos de archivos y directorios durante la copia, incluyendo permisos, fechas y propietarios.
    • “-v” (verbose): Muestra información detallada durante la ejecución del comando.

    Sincronización de directorios locales

    El comando “rsync” te puede ayudar cuando necesites mantener dos directorios locales sincronizados. Por ejemplo, si deseas sincronizar el contenido del directorio “source” con el directorio “destino”, puedes usar el siguiente comando:

    rsync -av --delete /path/to/source/ /path/to/destination/

    Parámetros utilizados:

    • “–delete”: Elimina los archivos y directorios en el directorio de destino que no existen en el directorio de origen.

    Transferencia de archivos a través de SSH

    Con “rsync”, también puedes transferir archivos y directorios de forma segura a través de SSH. Por ejemplo, si deseas copiar un archivo desde tu máquina local a un servidor remoto, puedes utilizar el siguiente comando:

    rsync -avz -e ssh /path/a/local/archivo usuario@remoto:/path/a/destino/

    Parámetros utilizados:

    • “-z” (compress): Comprime los datos durante la transferencia para mejorar la eficiencia en redes lentas.
    • “-e” (rsh): Especifica el programa a utilizar para establecer la conexión SSH.

    Excluir archivos y directorios en la sincronización

    En ocasiones, es posible que desees excluir ciertos archivos o directorios durante la sincronización. Para lograr esto, puedes utilizar la opción “–exclude” con “rsync”. Por ejemplo, si deseas sincronizar un directorio, pero excluir todos los archivos con extensión “.log”, puedes ejecutar el siguiente comando:

    rsync -av --exclude "*.log" /path/a/origen/ /path/a/destino/

    Parámetros utilizados:

    • “–exclude”: Especifica patrones de archivos o directorios a excluir durante la sincronización.

    Realizar una vista previa de la sincronización

    Antes de realizar una sincronización real, puedes usar la opción “–dry-run” con “rsync” para obtener una vista previa de los cambios que se realizarán sin realizar ninguna acción real. Por ejemplo:

    rsync -av --dry-run /path/a/origen/ /path/a/destino/

    Parámetros utilizados:

    • “–dry-run”: Muestra una lista de los cambios que se realizarían sin ejecutar ninguna acción real.

  • Comprimir y descomprimir con el comando tar – Linux

    A veces no recordamos o no sabemos cómo comprimir o descomprimir con el comando tar de Linux. Aquí tenemos ejemplos:

    Creación de un archivo comprimido

    Comprimir un directorio en un archivo .tar.gz:

    tar -czvf backup.tar.gz directorio_a_comprimir/

    Parámetros utilizados:

    • “-c”: Crea un nuevo archivo comprimido.
    • “-z”: Utiliza la compresión gzip.
    • “-v”: Muestra el progreso y los detalles de los archivos procesados.
    • “-f backup.tar.gz”: Especifica el nombre del archivo de salida.

    Extracción de archivos de un archivo comprimido

    Para extraer los archivos de un archivo comprimido, puedes utilizar el comando “tar”. Por ejemplo, si tienes un archivo comprimido llamado “backup.tar.gz” y deseas extraer su contenido en un directorio llamado “restaurar”, puedes ejecutar el siguiente comando:

    tar -xzvf backup.tar.gz -C restaurar

    Parámetros utilizados:

    • “-x”: Extrae los archivos de un archivo comprimido.
    • “-z”: Utiliza la compresión gzip.
    • “-v”: Muestra el progreso y los detalles de los archivos procesados.
    • “-f backup.tar.gz”: Especifica el archivo comprimido de entrada.
    • “-C restaurar”: Especifica el directorio de destino para la extracción.

    Este comando descomprimirá el archivo comprimido “backup.tar.gz” y colocará su contenido en el directorio “restaurar”.

    Agregar archivos a un archivo comprimido existente

    Si deseas agregar archivos adicionales a un archivo comprimido existente, puedes utilizar el comando “tar” con la opción “-r”. Por ejemplo, si tienes un archivo comprimido llamado “backup.tar.gz” y deseas agregar un archivo llamado “nuevo_archivo.txt” al archivo comprimido, puedes ejecutar el siguiente comando:

    tar -rzvf backup.tar.gz nuevo_archivo.txt

    Parámetros utilizados:

    • “-r”: Agrega archivos al archivo comprimido existente.
    • “-z”: Utiliza la compresión gzip.
    • “-v”: Muestra el progreso y los detalles de los archivos procesados.
    • “-f backup.tar.gz”: Especifica el archivo comprimido de entrada.
    • “nuevo_archivo.txt”: Especifica el archivo a agregar.

    Este comando añadirá el archivo “nuevo_archivo.txt” al archivo comprimido “backup.tar.gz” sin alterar el contenido existente.

    Extracción selectiva de archivos de un archivo comprimido

    Si solo necesitas extraer archivos selectivos de un archivo comprimido, puedes utilizar el comando “tar” con el patrón de archivo deseado. Por ejemplo, si tienes un archivo comprimido llamado “backup.tar.gz” y deseas extraer solo los archivos que tienen la extensión “.txt”, puedes ejecutar el siguiente comando:

    tar -xzvf backup.tar.gz '*.txt'

    Parámetros utilizados:

    • “-x”: Extrae los archivos de un archivo comprimido.
    • “-z”: Utiliza la compresión gzip.
    • “-v”: Muestra el progreso y los detalles de los archivos procesados.
    • “-f backup.tar.gz”: Especifica el archivo comprimido de entrada.
    • “‘*.txt’”: Especifica el patrón de archivo deseado.

    Este comando extraerá solo los archivos que coinciden con el patrón “*.txt” del archivo comprimido “backup.tar.gz”.

  • Comandos para ver el espacio utilizado en disco – Linux

    Para verificar el espacio en disco, el comando que podemos utilizar es “df”.

    El comando “df” (disk free) es una herramienta básica en Linux que te permite verificar el espacio en disco utilizado y disponible en los sistemas de archivos montados.

    Ver el espacio en disco utilizado y disponible en todos los sistemas de archivos montados

    El siguiente comando te dará una visión general del espacio en disco utilizado y disponible en todos los sistemas de archivos montados en tu sistema:

    df -h

    “-h”: Muestra los tamaños de los archivos en una forma legible por humanos, utilizando unidades como “K” para kilobytes, “M” para megabytes, etc.

    Resultado de ejemplo:

    Sistema de archivos    Tamaño Usado  Disp Uso% Montado en
    /dev/sda1             20G     10G    9G   53% /
    /dev/sdb1             100G    50G   50G   50% /datos
    tmpfs                 4G      0G     4G    0% /dev/shm

    Este resultado muestra tres sistemas de archivos diferentes con información sobre su tamaño total, espacio utilizado, espacio disponible y el punto de montaje.

    Ver el espacio en disco utilizado y disponible en un sistema de archivos específico

    Si deseas obtener información detallada sobre un sistema de archivos específico, puedes utilizar el siguiente comando:

    df -h <ruta_del_directorio>

    “-h”: Muestra los tamaños de los archivos en una forma legible por humanos.

    “<ruta_del_directorio>”: Especifica la ruta del directorio cuyo sistema de archivos deseas verificar.

    Resultado de ejemplo:

    df -h /datos

    Sistema de archivos Tamaño Usado Disp Uso% Montado en
    /dev/sdb1 100G 50G 50G 50% /datos

    Este resultado muestra información detallada sobre el sistema de archivos montado en “/datos”, incluyendo su tamaño total, espacio utilizado, espacio disponible y el punto de montaje.

    Espacio utilizado por archivos/carpetas

    Nos pasa a veces que necesitamos saber cuánto espacio en disco están utilizando los archivos. Hay diferentes maneras de realizar esto.

    Utilizando el comando ls

    Una opción para ver el espacio utilizado de los archivos es con el comando ls agregando algunos parámetros:

    ls -l

    Ejemplo:

    $ ls -l
    total 216
    -rwxr-xr-x 1 sudosu sudosu  33264 may 18  2022 libcomposeplatforminputcontextplugin.so
    -rwxr-xr-x 1 sudosu sudosu 182880 may 18  2022 libibusplatforminputcontextplugin.so
    

    Para visualizar el espacio utilizado en un formato más legible, agregamos el parámetro -h

    $ ls -lh
    total 216K
    -rwxr-xr-x 1 sudosu sudosu  33K may 18  2022 libcomposeplatforminputcontextplugin.so
    -rwxr-xr-x 1 sudosu sudosu 179K may 18  2022 libibusplatforminputcontextplugin.so

    Para ordenar por tamaño de archivo de mayor a menor uso en disco, agregamos el parámetro '-S

    $ ls -lhS
    total 216K
    -rwxr-xr-x 1 sudosu sudosu 179K may 18  2022 libibusplatforminputcontextplugin.so
    -rwxr-xr-x 1 sudosu sudosu  33K may 18  2022 libcomposeplatforminputcontextplugin.so

    Ver el espacio utilizado en archivos y carpetas

    Con el comando ls podemos ver el uso en disco de archivos, pero si necesitamos ver el uso en disco de una carpeta, debemos utilizar otro comando, como por ejemplo el comando 'du'.

    $ du 
    24	./theme
    15760	./manual
    80	./releaseNote
    21264	./font
    360	./ico
    1588	./support
    32	./plugin/AnyCubicPlugin/QtCore.framework/_CodeSignature
    8	./plugin/AnyCubicPlugin/QtCore.framework/Versions/5/_CodeSignature
    8	./plugin/AnyCubicPlugin/QtCore.framework/Versions/5/Resources
    6448	./plugin/AnyCubicPlugin/QtCore.framework/Versions/5
    6456	./plugin/AnyCubicPlugin/QtCore.framework/Versions
    6500	./plugin/AnyCubicPlugin/QtCore.framework
    11868	./plugin/AnyCubicPlugin
    11872	./plugin
    6884	./i18n
    748	./machine
    144	./image
    20	./examples
    58756	.

    Para ver el tamaño en un formato más legible, se puede agregar el parámetro '-h':

    $ du -h
    24K	./theme
    16M	./manual
    80K	./releaseNote
    21M	./font
    360K	./ico
    1,6M	./support
    32K	./plugin/AnyCubicPlugin/QtCore.framework/_CodeSignature
    8,0K	./plugin/AnyCubicPlugin/QtCore.framework/Versions/5/_CodeSignature
    8,0K	./plugin/AnyCubicPlugin/QtCore.framework/Versions/5/Resources
    6,3M	./plugin/AnyCubicPlugin/QtCore.framework/Versions/5
    6,4M	./plugin/AnyCubicPlugin/QtCore.framework/Versions
    6,4M	./plugin/AnyCubicPlugin/QtCore.framework
    12M	./plugin/AnyCubicPlugin
    12M	./plugin
    6,8M	./i18n
    748K	./machine
    144K	./image
    20K	./examples
    58M	.

    Para ver el tamaño de la carpeta y no de todos los archivos en las carpetas y subcarpetas, se agrega el parámetro '-s' e indicando que queremos ver todos los archivos dentro del path donde estamos posicionados con un asterisco '*':

    $ du -hs *
    20K	examples
    21M	font
    4,0K	global.cfg
    6,8M	i18n
    360K	ico
    144K	image
    748K	machine
    16M	manual
    12M	plugin
    80K	releaseNote
    1,6M	support
    4,0K	Thanks.txt
    24K	theme

    Ejecutando el comando 'du -hs *' se muestran los archivos y/o carpetas dentro del path y su uso en disco.

    Ordenar por tamaño

    Si queremos ordenar por tamaño, podemos utilizar el comando:

    du -hs * | sort -rh

    En este comando, du -hs * muestra el tamaño de todos los archivos y directorios en el directorio actual en un formato legible por humanos. Luego, utilizamos el comando sort -rh para ordenar la salida de du en orden descendente según el tamaño (-h para tratar los tamaños de forma “humana” y -r para el orden descendente).

    Ejemplo:

    $ du -hs * | sort -rh
    21M	font
    16M	manual
    12M	plugin
    6,8M	i18n
    1,6M	support
    748K	machine
    360K	ico
    144K	image
    80K	releaseNote
    24K	theme
    20K	examples
    4,0K	Thanks.txt
    4,0K	global.cfg

    Uso en disco de carpetas ocultas

    Vimos que con el comando 'du -hs *' vemos el uso en disco de los archivos y carpetas, pero no vemos el uso de los archivos o carpetas ocultas. En el ejemplo anterior, no se muestra el uso en disco de la carptea '.carpeta_oculta':

    $ ls -a
    .  ..  .carpeta_oculta  examples  font  global.cfg  i18n  ico  image  machine  manual  plugin  releaseNote  support  Thanks.txt  theme

    Para ver el uso de los archivos o carpetas ocultas podemos ejecutar el comando:

    du -sch .[!.]* *

    $ du -hs .[!.]* *
    1,6M	.carpeta_oculta
    20K	examples
    21M	font
    4,0K	global.cfg
    6,8M	i18n
    360K	ico
    144K	image
    748K	machine
    16M	manual
    12M	plugin
    80K	releaseNote
    1,6M	support
    4,0K	Thanks.txt
    24K	theme
  • Visualizar procesos en swap – Linux

    A veces necesitamos saber qué y cuánta memoria swap están utilizando los procesos en Linux.

    Listar el uso de swap de todos los procesos

    Para listar el uso de la memoria swap por los procesos y ordenarlos de mayor a menor uso, se puede ejecutar el siguiente comando:

    for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r

    Un ejemplo de salida es la siguiente:

    # for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r
    vmtoolsd 17268 kB
    firewalld 8156 kB
    haproxy 7352 kB
    haproxy 5392 kB
    polkitd 5132 kB
    nginx 3124 kB
    nginx 1356 kB
    haproxy_exporte 716 kB
    systemd 648 kB
    haproxy-systemd 520 kB
    tuned 84 kB
    snmpd 16 kB