¿Cómo redirijo la salida de finalización de comando?


25

En la línea de comando, puedo redirigir o canalizar la salida de un comando a un archivo u otro comando usando el operador >o |después del comando. Me he encontrado con una situación menos estándar en la que me gustaría redirigir la salida a un archivo, pero no parece tener la oportunidad de redirigirlo:

Cuando en una nueva terminal,

[chiliNUT ~]$

si presiono Tabsin escribir nada primero, me preguntan

display all 1725 possibilities? (y or n)

y si luego escribo y, obtengo una larga lista de comandos diferentes. ¿Cómo puedo redirigir o canalizar esta salida a un archivo? Parece que no tengo la oportunidad de escribir en > myfile.txtningún lado.

Usando CentOS versión 6.4 (Final) .

Respuestas:


26

Podrías hacer uso del incorporado compgen:

compgen: compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat]
[-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix]
[-S suffix] [word]

    Display possible completions depending on the options.

    Intended to be used from within a shell function generating possible
    completions.  If the optional WORD argument is supplied, matches against
    WORD are generated.

    Exit Status:
    Returns success unless an invalid option is supplied or an error occurs.

TABen el indicador, se enumerarían los comandos, los componentes integrados del shell, las palabras clave, los alias y las funciones. Entonces podrías decir:

compgen -cbka -A function | grep '^y' > myfile.txt

para obtener todas las opciones que ve al escribir yTABen el símbolo del sistema en el archivo myfile.txt.

Elimine la grepcanalización para obtener todos los comandos, funciones, ... posibles en el archivo:

compgen -cbka -A function > myfile.txt

1
¡Increíble! Su respuesta como está escrita en realidad solo toma los comandos / archivos que comienzan con la letra y, por lo que solo compgen -cbka -A function > myfile.txttoma la salida completa. ¡Gracias! (Obviamente) nunca supe de esta nueva función interesante.
chiliNUT

Oh, eso es inteligente.
Hauke ​​Laging

@chiliNUT. Mencioné que el comando haría que los que comiencen con y:) ¡Esto estuviera más o menos en línea con lo que mostraste en la pregunta!
devnull

Oh, ja, mal entendido un poco. La 'y' en mi pregunta en realidad corresponde a 'sí' vs 'no'; Ingreso 'y' y escupe todos esos comandos, ingreso 'n' y no genera nada.
chiliNUT

2
@chiliNUT He actualizado la respuesta para reflejar eso también.
devnull
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.