Por ejemplo, normalmente abro el mousepad (equivalente xfce de gedit) desde el menú de aplicaciones. Sin embargo, sé que también puedes hacer esto en una terminal escribiendo mousepad
.
Siguiendo este ejemplo, lo que quiero es que cada vez que abro el mousepad a través de la GUI, se escriba una nueva línea en un archivo de registro que indique algo así Sep 5 15:35:11 lucho@lucho:~$ mousepad
. Más en general, lo que quiero es registrar todas las actividades de la GUI que son potencialmente posibles a través de la línea de comandos (como abrir programas, cambiar permisos, modificar una configuración del sistema, etc.) pero escritas en su formato alternativo de ejecución de línea de comandos . Quiero esto para mejorar mi conocimiento sobre cómo usar la línea de comandos (sin pasar por las man
páginas). Hay muchas cosas que hago a través de la GUI que no hago a través de la línea de comandos (algunas potencialmente automatizables a través de un script o atajos de teclado) y tener este archivo de registro sería una buena manera de aprenderlas.
Soy consciente de la existencia del archivo syslog, /var/log
pero eso no es lo que necesito. La aplicación Activity Log Manager de los repositorios de Ubuntu no muestra el formato de línea de comandos, que yo sepa. Necesito algo como el archivo .bash_history que existe en mi carpeta de inicio pero que registra mis actividades basadas en GUI.
unity-control-center background
ognome-control-center background
(dependiendo de su escritorio, Unity o XFCE o GNOME). Pero el mundo exterior probablemente solo verágnome-control-center
Respuestas:
Introducción
Si bien no es posible registrar todas las acciones de la GUI, se pueden hacer cosas como los comandos de registro que corresponden a ventanas abiertas. A continuación se muestra el script simple de Python que hace el trabajo. Todavía está en desarrollo, pero realiza el 90% de la tarea requerida.
Código fuente
Prueba de funcionamiento:
El script muestra la marca de tiempo, el tipo de evento, el PID de la ventana y el comando correspondiente.
Cómo utilizar
Se aplican las reglas estándar de cualquier script. Asegúrese de almacenar el script en el
~/bin
directorio. Si no tiene un~/bin
directorio, cree uno. Guarde el archivo de script allí y asegúrese de que sea ejecutable conchmod +x ~/bin/log_open_windows.py
. Después de eso, puede ejecutarlo desde la línea de comandos en cualquier momento que lo desee llamando~/log_open_windows.py
a la línea de comandos.fuente
¡Proponer ese tipo de archivo de registro como base para el aprendizaje es realmente una idea brillante!
Afortunadamente, muchas acciones de los programas GUI se implementan en el programa en sí, sin usar comandos externos; E incluso si usa comandos externos, puede ser de una manera diferente a la que se haría en un shell;
Entonces eso no existe, y no es fácil de implementar.
Pero tengo una solución para una parte del problema: el nombre del programa en la GUI a veces difiere del nombre del programa que uno necesita saber para un comando de shell, no solo si el nombre de la GUI está traducido a un idioma local.
Por ejemplo, ¿cómo iniciar el programa
Files
en la línea de comando?Necesitamos buscar en todos los
*.desktop
archivos el nombre. Allí, encontramos el comando en laExec
línea:locate -b '.desktop' | xargs grep -ls '^Name.*=Files$' | xargs grep '^Exec.*'
enumera los nombres de archivos de escritorio y los comandos para el programa GUI
File
; reemplácelos con el nombre exacto que busca, incluso si son varias palabras (para la búsqueda de subcadenas, omita el=
y$
).Con el comando, encuentro
Files
puede sernautilus
,dolphin
oactive-filebrowser
:fuente