Tutoriales

8 formas misteriosas de usar el operador (!) en los comandos de Linux

este '!' Los símbolos u operadores en Linux se pueden usar como NO lógico operador, así como obtener comandos del historial ajustando o ejecutando comandos ejecutados previamente modificándolos.

La mayoría de los siguientes comandos de Linux son compatibles con '!' Los símbolos pueden variar entre diferentes conchas. Si bien los ejemplos que proporcioné son generalmente para el shell bash, algunos otros shells de Linux pueden tener implementaciones diferentes o pueden no ser compatibles con ciertos usos de «!». símbolo.

Sumerjámonos en los sorprendentes y misteriosos usos. '!' Símbolos u operadores en los comandos de Linux.

1. Use el número de comando para ejecutar el comando de historial

Es posible que no sepa que puede ejecutar comandos desde el historial (comandos que se ejecutaron antes). Primero comience ejecutando ‘historia‘ Orden.

$ history
Encuentra el último comando ejecutado en Linux

Para ejecutar un comando desde el historial por número de comando, puede usar '!' El símbolo va seguido del número de comando, como se muestra.

$ !1551
Ejecutar comandos por número de comando
Ejecutar comandos por número de comando

Cuando ejecute el comando anterior, ejecutará el comando superior en el número de línea 1551 de tu historia.

Tenga en cuenta que el número de comando real puede variar según su historial de comandos. Puede usar el comando de historial para ver una lista de comandos y sus números de línea.

2. Ejecutar comandos ejecutados previamente en Linux

Puede ejecutar los comandos que ha ejecutado antes en orden de ejecución, el último comando ejecutado se denotará como -1el penúltimo como -2séptimo último como -7etc.

Por ejemplo, si quisiera volver a ejecutar los comandos que se ejecutaron hace seis, ocho o diez comandos, podría usar !-nDónde n es el número de comando al que se refiere.

$ history
$ !-6
$ !-8
$ !-10
Vuelva a ejecutar el comando en Linux
Vuelva a ejecutar el comando en Linux

3. Pasar los argumentos del comando anterior al nuevo comando

Necesito listar el contenido de un directorio’/home/$USUARIO/binarios/firefox‘ Así que disparé.

$ ls /home/$USER/Binary/firefox

Entonces me di cuenta que debía disparar’ls-l‘ Ver qué archivos son ejecutables allí. Entonces, ¿debería escribir todo el comando de nuevo? No, no lo necesito. Solo necesito pasar el último argumento a este nuevo comando:

$ ls -l !$

aquí !$ Los parámetros pasados ​​en el comando anterior se pasarán a este nuevo comando.

Pasar los argumentos del último comando ejecutado al nuevo comando
Pasar los argumentos del último comando ejecutado al nuevo comando

4. Cómo manejar dos o más argumentos en un comando

Supongamos que creo un archivo de texto 1.txt en el escritorio.

$ touch /home/avi/Desktop/1.txt

luego cópielo en el ‘/inicio/avi/descargar‘ Use la ruta completa en cualquier lado con el comando cp.

$ cp /home/avi/Desktop/1.txt /home/avi/downloads

Ahora hemos pasado dos parámetros. c.p. Orden. en primer lugar ‘/home/avi/Escritorio/1.txt‘El segundo es’/inicio/avi/descargar‘, vamos a manejarlos de manera diferente, solo hazlo echo [arguments] Imprime los dos argumentos de manera diferente.

$ echo “1st Argument is : !^”
$ echo “2nd Argument is : !cp:2”

Tenga en cuenta que el primer argumento se puede imprimir como “!^” El resto de los argumentos se pueden imprimir ejecutando “![Name_of_Command]:[Number_of_argument]”.

En el ejemplo anterior, el primer comando es ‘c.p.‘ y requiere un segundo argumento para imprimir.por lo tanto “!cp:2”Si algún comando dice xyz Hay 5 parámetros para ejecutar, necesita obtener el cuarto parámetro, puede usar “!xyz:4”, úsalo como quieras.Todos los parámetros se pueden pasar “!*”.

maneja dos o más argumentos

5. Ejecute el último comando basado en una palabra clave específica

Podemos ejecutar el último comando ejecutado en función de la palabra clave. Podemos entenderlo así:

$ ls /home > /dev/null				[Command 1]
$ ls -l /home/avi/Desktop > /dev/null		[Command 2]	
$ ls -la /home/avi/Downloads > /dev/null	        [Command 3]
$ ls -lA /usr/bin > /dev/null			[Command 4]

Aquí hemos usado el comando ls pero con diferentes interruptores y diferentes carpetas. Además, hemos enviado la salida de cada comando a ‘/dev/vacío‘ para mantener la consola limpia.

Ahora ejecute el último comando de ejecución basado en la palabra clave.

$ ! ls			[Command 1]
$ ! ls -l		[Command 2]	
$ ! ls -la		[Command 3]
$ ! ls -lA		[Command 4]

Verifique la salida, se sorprenderá al descubrir que está ejecutando comandos que ya se han ejecutado ls palabras clave

Ejecutar comandos basados ​​en palabras clave

6. Repita el último comando ejecutado en Linux

Puede usar ejecutar/cambiar el último comando ejecutado (!!) operador, que es una notación abreviada que le permite referirse al comando anterior ejecutado en la línea de comando.

Por ejemplo, ayer ejecuté una sola línea para averiguar la dirección IP de una máquina Linux.

$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/

Luego, de repente, descubrí que necesito redirigir la salida del script anterior a un archivo ip.txt, ¿entonces qué debo hacer? ¿Debo volver a escribir todo el comando y redirigir la salida a un archivo?Bueno, una solución simple es usar UP teclas de navegación y agregar '> ip.txt' Redirigir la salida a un archivo.

$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/ > ip.txt

gracias salvador UP Las teclas de navegación están aquí. Ahora considere el siguiente escenario, la próxima vez que ejecute el resumen a continuación.

$ ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d:

Tan pronto como ejecuto el script, el mensaje de bash devuelve un mensaje de error «bash: ifconfig: comando no encontrado«, Puedo adivinar fácilmente que estoy ejecutando este comando como usuario cuando debería ejecutarse como root.

Entonces, ¿cuál es la solución? ¡Es difícil iniciar sesión en la raíz, luego escriba el comando completo nuevamente! devolver(tecla de navegación arriba) en el último ejemplo no viene al rescate aquí. ¿entonces?tenemos que llamar “!!” Sin comillas, esto invoca el último comando para ese usuario.

$ su -c “!!” root

aquí demandar es el cambio de usuario de root, -c Ejecutar el comando especificado como usuario también es la parte más importante !! será reemplazado por el comando, el último comando ejecutado será reemplazado aquí. ¡Sí! Debe proporcionar la contraseña de root.

Repita el último comando ejecutado en Linux
Repita el último comando ejecutado en Linux

7. Use el operador «!» para eliminar todos los archivos menos uno

En Linux, ! operador (conocido como «auge» operador) para la expansión del historial, lo que le permite consultar comandos anteriores en el historial de comandos y realizar varias operaciones con ellos.

Para eliminar todos los archivos excepto algunos específicos de un directorio (archivo importante.txt), puede usar el comando rm ! Los operadores se muestran en la figura.

$ rm !(important_file.txt)

Elimine todos los tipos de archivos de la carpeta excepto aquellos con extensión ‘.pdf‘.

$ $ rm !(*.pdf)

8. Compruebe si el directorio existe en Linux

Aquí usaremos '! -d' Verifique que el directorio exista o no seguido de un operador AND lógico (&&) imprime que el directorio no existe y el operador OR (||) El directorio de impresión existe.

La lógica es que cuando la salida [ ! -d /home/avi/Tecmint ]Ejecutará algo diferente a la lógica. y De lo contrario, va a lógica o (||) y hacer cosas fuera de la lógica o.

$ [ ! -d /home/avi/Tecmint ] && printf '\nno such /home/avi/Tecmint directory exist\n' || printf '\n/home/avi/Tecmint directory exist\n'

Similar al caso anterior, pero aquí el comando sale si el directorio requerido no existe.

$ [ ! -d /home/avi/Tecmint ] && exit

Una implementación genérica del lenguaje de secuencias de comandos que creará el directorio requerido si no existe.

[ ! -d /home/avi/Tecmint ] && mkdir /home/avi/Tecmint

Eso es todo por ahora.Si conoce o se encuentra con otros usos '!' Vale la pena saber que puedes darnos tus sugerencias en Comentarios. ¡mantenerse en contacto!

LEER  dotAGE agrega compatibilidad con el controlador: trabajando en Steam Deck Verified

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba