GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo acceder al último argumento de un comando comentado?

Encuentro . (alt . para muchos otros) para ser muy útil cuando se trabaja en una terminal, insertando el último argumento de la última línea en el indicador actual. Sin embargo, no funciona cuando se comentó la última línea (suponiendo que set -o interactivecomments ).

No puedo pensar en un caso de uso exacto, pero sucedió varias veces que comenté un comando que me di cuenta antes de la ejecución que no era lo que necesitaba en ese momento, y luego quería el argumento final en un comando posterior.

Me doy cuenta de que hay una lógica en ignorar todo lo comentado, ya que nunca se interpreta y, por lo tanto, nada se convierte en argumentos, pero ¿Hay alguna forma de hacer lo que quiero?

No sería ideal, pero sería utilizable, si tuviera que usar una pulsación de tecla diferente, vinculada a un comando alternativo que haría lo que quiero.

Estoy usando Zsh, pero una solución de Bash podría funcionar o estar cerca de lo que necesitaría hacer en Zsh.

Respuesta aceptada:

No comente el comando.

En su lugar, pon un : en el frente en lugar de un # . Eso hará que sus argumentos de texto de comando a la utilidad nula : , que no hace nada cuando se ejecuta. Los argumentos se tokenizan y analizan, porque sigue siendo un comando, pero no se hace nada más con ellos.

Hay casos en los que esto no es adecuado:en particular, al descifrar el comando en sí mismo tiene efectos secundarios. Un ejemplo simple es la sustitución de comandos:

$ : log $(find -print -delete) --target /var/run/cache

En este caso, el comando dentro de $(...) se ejecutaría y sustituiría en los argumentos de : , aunque el comando original nunca se ejecutaría. Un caso menos destructivo sería ${foo:=default} expansión de parámetros, que tiene el efecto secundario de asignar un valor a $foo .

Finalmente, las redirecciones o canalizaciones seguirán teniendo lugar:

$ : foo > outfile
$ : bar | grep x | ...

en ambos casos, enviará una salida vacía al destino, que truncará o creará el archivo o ejecutará los comandos posteriores, a los que puede no gustarles la entrada vacía que obtienen.

Si no tiene ninguna de esas preocupaciones especiales para su comando, esto es completamente seguro y funciona en zsh, Bash y cualquier shell compatible con POSIX (aunque el comportamiento alt-. después no funcionará en todas partes).

Si es específicamente la última palabra que desea, zsh proporciona combinaciones de teclas y comandos personalizables que puede usar para manipular la línea de comandos. Si bindkey '^K' kill-region luego puede retroceder hasta antes de la palabra, CtrlK para borrar hasta el principio de la línea, : , y luego tenga un comando seguro con solo una palabra que le interese.

Relacionado:Debian:¿cómo instalar algunos paquetes de Debian "inestable" en una computadora que ejecuta Debian "estable"?
Linux
  1. Cómo usar el comando de historial en Linux

  2. ¿Cómo funciona el comando Tee??

  3. ¿Cómo puedo recordar el argumento del comando bash anterior?

  4. ¿Cómo acceder a los sockets de dominio de Unix desde la línea de comandos?

  5. ¿Cómo imprimir la última línea de un archivo comprimido gz en la línea de comando?

Cómo usar el comando tee de Linux

Cómo usar el comando superior en Linux

Cómo usar el comando ping de Linux

Cómo usar el comando nmap

Cómo personalizar el comando superior de Linux

Cómo usar el comando fd en el sistema Linux