Haz lo siguiente y funciona.
~$whatis `ls /bin`
stty (1) - change and print terminal line settings
stty (2) - unimplemented system calls
su (1) - change user ID or become superuser
etc...
¿Redirigir la salida a un archivo y obtengo esto?
~$ whatis `ls /bin` > blah
kmod: nothing appropriate.
ntfsck: nothing appropriate.
Respuesta1
>
solo redirige la salida estándar ( stdout
), pero cuando whatis
no puede encontrar información sobre un archivo, lo escribe en una secuencia diferente stderr
. También puede redirigir eso con 2>
el stderr
identificador de archivo 2. Puede redirigir tanto stdout como stderr como &>
o puede redirigir stderr a stdout haciendo2>&1
Puedes leer todo sobre la redirección.aquí
Entonces, en su ejemplo, si desea que todos los errores y el éxito terminen en blah
usted, podría hacerlo
whatis `ls /bin` &> blah
o, usando la sintaxis de subcapa alternativa que se prefiere hoy en día:
whatis $(ls /bin) &> blah
aunque /bin
no es probable que tenga uno, tenga cuidado al hacer cosas como esta. Los resultados de ls /bin
estarán sujetos a la división de palabras, por lo que si alguno de los archivos contiene, digamos, espacios, se tratarán como argumentos diferentes a whatis
. Esta es la razón por la que generalmente no se recomienda analizar el resultado de ls
(consulteesta preguntapara una discusión sobre ello)
Podrías hacer lo que estás intentando de manera diferente.
find /bin -maxdepth 1 -type f -exec whatis {} + &> blah
que buscará /bin
y no profundizará (como el globo), luego buscará solo archivos (el type f
argumento) y ejecutará cada cosa que encuentre whatis
, luego realizará la misma redirección de la que habíamos hablado.
Respuesta2
qué es busca palabras clave en un conjunto de archivos de bases de datos que contienen descripciones breves de comandos del sistema y muestra el resultado en la salida estándar. Sólo se muestran coincidencias de palabras completas.
kmod: nada apropiado. Hay un mensaje que dice que no encontró nada para kmod.
Si desea redirigir toda la salida, intente esto.
whatis $(ls /bin) > /tmp/a.txt