Estoy tratando de enumerar el contenido de toda la base de datos apropos
( makewhatis
) con el siguiente comando, pero sigo obteniendo Permission denied
.
sudo -s apropos . > touch thedatabase
-bash: touch: Permission denied
sudo -s apropos . > thedirectory
thedatabase: Permission denied
apropos . > touch thedatabase
Todos estos resultados en alguna forma de Permission Denied
. ¿Cómo puedo evitar esto o cuál es la forma más elegante de hacerlo?
macos
terminal
bash
permission
inthenameofmusik
fuente
fuente
sudo -s apropos . thedatabase > touch
, de manera similar, el último ejemplo. Tal vez solo intenteapropos . >/tmp/ap.out
, debería poder escribir en / tmp.>
correcta? ¿Y cómo tiene sentido tu ejemplo de ponerthedatabase
antes> touch
? No creo tener una comprensión sólida del orden en el que pueden estar estas cosas. ¡Gracias!echo hello >echo.out
es la forma en la que normalmente se escribe un comando hacerse eco de una línea que contiene "hola" a la echo.out archivo, peroecho >echo.out hello
y>echo.out echo hello
hacer lo la misma cosa. Entonces, en su primer ejemplo, el shell ve> touch
y trata eso como una redirección al toque del archivo, luego, cuando vethedatabase
, se trata como un argumento de comando más.Respuestas:
No estoy seguro de cómo hacer lo que pides. Estoy investigando eso ahora, pero sé cómo solucionar los problemas de permisos que tienes con sudo.
Su sintaxis es incorrecta para sudo, la redirección de shell ">" está ocurriendo sin privilegios elevados. Intenta envolviendo citas como esta:
fuente