GNU/Linux >> Tutoriales Linux >  >> Linux

Moreutils:una colección de utilidades de Unix más útiles

Todos conocemos las utilidades principales de GNU que viene preinstalado con todos los sistemas operativos Linux y similares a Unix. Estas son las utilidades básicas de manipulación de archivos, shell y texto del sistema operativo GNU. Las utilidades principales de GNU contienen los comandos, como cat, ls, rm, mkdir, rmdir, touch, tail, wc y muchos más, para realizar las operaciones diarias. Entre estas utilidades, también hay otra colección útil de utilidades de Unix que no se incluyen de forma predeterminada en los sistemas operativos similares a Unix. Conoce a moreutilis , una colección cada vez mayor de utilidades Unix más útiles. Las moreutils se pueden instalar en GNU/Linux y varias versiones de Unix como FreeBSD, openBSD y Mac OS.

Al momento de escribir esta guía, Moreutils proporciona las siguientes utilidades:

  • crónica - Ejecuta un comando silenciosamente a menos que falle.
  • combinar - Combine las líneas en dos archivos mediante operaciones booleanas.
  • errno - Busque nombres y descripciones de errno.
  • ifdatos - Obtenga información de la interfaz de red sin analizar la salida de ifconfig.
  • siempre - Ejecutar un programa si la entrada estándar no está vacía.
  • isutf8 - Comprobar si un archivo o entrada estándar es utf-8.
  • lckdo - Ejecutar un programa con un bloqueo retenido.
  • error de canalización - Canaliza dos comandos, devolviendo el estado de salida del primero.
  • paralelo - Ejecute varios trabajos a la vez.
  • pipí - entrada estándar en T a las tuberías.
  • esponja - Absorba la entrada estándar y escriba en un archivo.
  • ts - entrada estándar de marca de tiempo.
  • vidir - Edite un directorio en su editor de texto.
  • vipe - Insertar un editor de texto en una tubería.
  • zrun - Descomprime automáticamente los argumentos para comandar.

Instalar másutilidades en Linux

Moreutils está empaquetado para muchas distribuciones de Linux, por lo que puede instalarlo usando el administrador de paquetes de la distribución.

En Arch Linux y derivados como Antergos , Manjaro Linux , ejecute el siguiente comando para instalar moreutils.

$ sudo pacman -S moreutils

En Fedora :

$ sudo dnf install moreutils

En RHEL , Cent OS , Linux científico :

$ sudo yum install epel-release
$ sudo yum install moreutils

En Debian ,Ubuntu ,Linux Mint :

$ sudo apt-get install moreutils

Moreutils:una colección de utilidades Unix más útiles

Veamos los detalles de uso de algunas herramientas más útiles.

La utilidad "Combinar"

Como su nombre lo indica, Combinar La utilidad combina los conjuntos de líneas de dos archivos mediante operaciones booleanas como "y", "no", "o", "xor".

  • y - Muestra líneas que están en el archivo 1 si también están presentes en el archivo 2.
  • no - Muestra líneas que están en el archivo 1 pero no en el archivo 2.
  • o - Líneas de salida que están en archivo1 o archivo2.
  • xor - Muestra líneas que están en el archivo 1 o en el archivo 2, pero no en ambos archivos.

Déjame mostrarte un ejemplo, para que puedas entender qué hará exactamente esta utilidad. Tengo dos archivos, a saber, file1 y archivo2 . Aquí está el contenido de esos dos archivos.

$ cat file1
is
was
were
where
there
$ cat file2
is
were
there

Ahora, déjame combinarlos usando la operación booleana "y".

$ combine file1 and file2
is
were
there

Como puede ver en el ejemplo anterior, el operador booleano "y" genera líneas que están en el archivo1 si también están presentes en el archivo2. Para poner esto más claramente, muestra las líneas comunes (Ej. es, fue, allí) que están presentes en ambos archivos.

Ahora usemos el operador "no" y veamos el resultado.

$ combine file1 not file2
was
where

Como puede ver en el resultado anterior, el operador "no" muestra las líneas que solo están en el archivo 1, pero no en el archivo 2.

La utilidad "ifdata"

La utilidad "ifdata" se puede utilizar para verificar la existencia de una interfaz de red, para obtener información sobre la interfaz de red, como su dirección IP. A diferencia de los comandos incorporados como "ifconfig" o "ip", ifdata tiene una salida fácil de analizar que está diseñada para ser utilizada fácilmente por un script de shell.

Para mostrar los detalles de la dirección IP de una interfaz de red, digamos wlp9s0, ejecute:

$ ifdata -p wlp9s0
192.168.43.192 255.255.255.0 192.168.43.255 1500

Para mostrar solo la máscara de red, ejecute:

$ ifdata -pn wlp9s0
255.255.255.0

Para comprobar la dirección de hardware de una NIC:

$ ifdata -ph wlp9s0
A0:15:46:90:12:3E

Para comprobar si existe o no una NIC, utilice el indicador "-pe".

$ ifdata -pe wlp9s0
yes

El comando "Mear"

Es algo similar al comando "tee".

Veamos un ejemplo del uso del comando "tee".

$ echo "Welcome to OSTechNIx" | tee file1 file2
Welcome to OSTechNIx

El comando anterior creará dos archivos, a saber, file1 y archivo2 . Luego, agregue la línea "Bienvenido a OSTechNix" en ambos archivos. Y finalmente imprime el mensaje "Bienvenido a OSTechNix" en tu terminal.

El comando "Pee" realiza una función similar, pero difiere ligeramente del comando "te". Mira el siguiente comando:

$ echo "Welcome to OSTechNIx" | pee cat cat
Welcome to OSTechNIx
Welcome to OSTechNIx

Como puede ver en el resultado anterior, las dos instancias del comando "cat" reciben el resultado del comando "echo" y las muestran dos veces en la Terminal.

La utilidad "Esponja"

Esta es otra utilidad útil del paquete moreutils. Esponja lee la entrada estándar y la escribe en el archivo especificado. A diferencia de una redirección de shell, Sponge absorbe toda su entrada antes de escribir el archivo de salida.

Eche un vistazo al contenido del siguiente archivo de texto.

$ cat file1 
I
You
Me
We
Us

Como puede ver, el archivo contiene algunas líneas aleatorias, particularmente "no" en orden alfabético. Desea ordenar los contenidos en orden alfabético. ¿Qué harías?

$ sort file1 > file1_sorted

Correcto, ¿no es así? ¡Por supuesto! Como puede ver en el comando anterior, he ordenado el contenido del archivo1 en orden alfabético y los guardó en un nuevo archivo llamado "file1_sorted" . Pero puede hacer lo mismo sin crear uno nuevo (es decir, file1_sorted) usando el comando "esponja" como se muestra a continuación.

$ sort file1 | sponge file1

Ahora, comprueba si los contenidos están ordenados alfabéticamente.

$ cat file1 
I
Me
Us
We
You

¿Ver? no necesitamos crear un nuevo archivo. Es muy útil en secuencias de comandos. Y lo bueno es que Sponge conserva los permisos del archivo de salida si ya existe.

La utilidad "ts"

La utilidad "ts" imprime la marca de tiempo al comienzo de cada línea en la salida de cualquier comando de Linux.

Mire la salida del siguiente comando:

$ ping -c 2 localhost
PING localhost(localhost.localdomain (::1)) 56 data bytes
64 bytes from localhost.localdomain (::1): icmp_seq=1 ttl=64 time=0.055 ms
64 bytes from localhost.localdomain (::1): icmp_seq=2 ttl=64 time=0.079 ms

--- localhost ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1018ms
rtt min/avg/max/mdev = 0.055/0.067/0.079/0.012 ms

Ahora, ejecute el mismo comando con la utilidad "ts" como se muestra a continuación.

$ ping -c 2 localhost | ts
Aug 21 13:32:28 PING localhost(localhost (::1)) 56 data bytes
Aug 21 13:32:28 64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.063 ms
Aug 21 13:32:28 64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.113 ms
Aug 21 13:32:28 
Aug 21 13:32:28 --- localhost ping statistics ---
Aug 21 13:32:28 2 packets transmitted, 2 received, 0% packet loss, time 4ms
Aug 21 13:32:28 rtt min/avg/max/mdev = 0.063/0.088/0.113/0.025 ms

Como puede ver en el resultado anterior, ts agrega una marca de tiempo al comienzo de cada línea. Aquí hay otro ejemplo.

$ ls -l | ts
Aug 21 13:34:25 total 120
Aug 21 13:34:25 drwxr-xr-x  2 sk users 12288 Aug 20 20:05 Desktop
Aug 21 13:34:25 drwxr-xr-x  2 sk users  4096 Aug 10 18:44 Documents
Aug 21 13:34:25 drwxr-xr-x 24 sk users 12288 Aug 21 13:06 Downloads
[...]

La utilidad "Vidir"

La utilidad "Vidir" le permite editar el contenido de un directorio específico en vi editor (o lo que tengas en $EDITOR ). Si no se especifica ningún directorio, editará su directorio de trabajo actual.

El siguiente comando edita el contenido del directorio llamado "Escritorio".

$ vidir Desktop/

Edite el contenido de un directorio con vidir

El comando anterior abrirá el directorio especificado en su vi editor. Cada elemento en el directorio de edición contendrá un número. Ahora puede editar los archivos como lo hace en el editor vi. Digamos, por ejemplo, eliminar líneas para eliminar archivos del directorio o editar nombres de archivos para cambiar el nombre de los archivos.

También puede editar los subdirectorios. El siguiente comando edita el directorio de trabajo actual junto con sus subdirectorios.

$ find | vidir -

Tenga en cuenta el "-" al final del comando. Si se especifica "-" como el directorio para editar, lee una lista de nombres de archivos de stdin y los muestra para editarlos.

Si desea editar solo los archivos en el directorio de trabajo actual, puede usar el siguiente comando:

$ find -type f | vidir -

¿Quiere editar un tipo de archivo específico, digamos archivos .PNG? entonces usarías:

$ vidir *.png

Este comando edita solo los archivos .png en el directorio actual.

La utilidad "Vipe"

El comando "vipe" le permite ejecutar su editor predeterminado en medio de una canalización de Unix y editar los datos que se canalizan entre programas.

El siguiente comando abre el editor vi (editor predeterminado, por supuesto) y le permite editar la entrada del comando "echo" (es decir, Bienvenido a OSTechNix) y muestra el resultado final.

$ echo "Welcome to OSTechNIx" | vipe
Hello World

Como puede ver en el resultado anterior, pasé la entrada "Bienvenido a OSTechNix" al editor vi y los edité como "Hello World" y mostré el resultado final.

Descarga recomendada - Libro electrónico gratuito:"Aprender Linux en 5 días"

Y, eso es todo por ahora. He cubierto sólo unas pocas utilidades. El "moreutils" tiene utilidades más útiles. Ya mencioné las utilidades incluidas actualmente en el paquete moreutils en la sección introductoria. Puede leer las páginas del manual para obtener más detalles sobre los comandos anteriores. Digamos, por ejemplo, que para saber más sobre el comando "vidir", ejecute:

$ man vidir

Espero que esto ayude.


Linux
  1. Haz que el historial de Bash sea más útil con estos consejos

  2. Haga que la salida de du sea más útil con este ingenioso truco

  3. Opciones útiles de ps

  4. Linux:¿Linux es un Unix?

  5. ¿Rastrear el tiempo que tarda un comando en UNIX/LINUX?

Localizadores de terminales

50 comandos de corte de Linux simples y útiles en Unix con ejemplos

Zorin OS 15 más hermoso y útil que nunca

Comando mkdir en Linux/Unix

Linux frente a Unix

Comando Grep en Linux/UNIX