Na przykład zwykle otwieram podkładkę pod mysz (xfce odpowiednik gedit) z menu aplikacji. Wiem jednak, że możesz to zrobić również w terminalu, pisząc mousepad
.
Idąc za tym przykładem, chcę, aby za każdym razem, gdy otwieram podkładkę pod mysz za pomocą GUI, nowy plik jest zapisywany w pliku dziennika, podając coś takiego Sep 5 15:35:11 lucho@lucho:~$ mousepad
. Mówiąc bardziej ogólnie, chcę rejestrować wszystkie działania GUI, które są potencjalnie możliwe do wykonania za pośrednictwem wiersza polecenia (takie jak otwieranie programów, zmiana uprawnień, modyfikowanie ustawień systemowych itp.), Ale napisane w alternatywnym formacie wykonywania wiersza polecenia . Chcę tego, aby poprawić swoją wiedzę na temat korzystania z wiersza polecenia (bez przechodzenia między man
stronami). Jest wiele rzeczy, które robię za pomocą GUI, których nie robię za pomocą wiersza poleceń (niektóre potencjalnie automatyzowane za pomocą skryptu lub skrótów klawiaturowych) i posiadanie tego pliku dziennika byłoby dobrym sposobem na ich poznanie.
Jestem świadomy istnienia pliku syslog, /var/log
ale nie tego potrzebuję. Aplikacja Activity Log Manager z repozytoriów Ubuntu, o ile wiem, nie wyświetla formatu wiersza poleceń. Potrzebuję czegoś takiego jak plik .bash_history, który istnieje w moim katalogu domowym, ale rejestruje moje działania oparte na GUI.
unity-control-center background
lubgnome-control-center background
(w zależności od pulpitu, Unity lub XFCE lub GNOME). Ale świat zewnętrzny prawdopodobnie tylko zobaczygnome-control-center
Odpowiedzi:
Wprowadzenie
Chociaż nie można zarejestrować wszystkich działań GUI, można wykonać takie czynności, jak rejestrowanie poleceń odpowiadających otwartym oknom. Poniżej znajduje się prosty skrypt Pythona, który wykonuje to zadanie. Jest wciąż w fazie rozwoju, ale wykonuje 90% wymaganego zadania.
Kod źródłowy
Testowe uruchomienie:
Skrypt pokazuje znacznik czasu, typ zdarzenia, PID okna i odpowiednie polecenie.
Jak używać
Obowiązują standardowe zasady każdego skryptu. Upewnij się, że przechowujesz skrypt w
~/bin
katalogu. Jeśli nie masz~/bin
katalogu, utwórz go. Zapisz plik skryptu i upewnij się, że jest wykonywalnychmod +x ~/bin/log_open_windows.py
. Następnie możesz uruchomić go z wiersza poleceń w dowolnym momencie, wywołując~/log_open_windows.py
wiersz polecenia.źródło
Proponowanie tego rodzaju pliku dziennika jako podstawy do nauki jest naprawdę świetnym pomysłem!
Niestety, wiele działań programów GUI jest realizowanych w samym programie, bez użycia zewnętrznych poleceń; I nawet jeśli korzysta z zewnętrznych poleceń, może być w inny sposób niż w powłoce;
Tak więc nie istnieje i nie jest łatwe do wdrożenia.
Ale mam rozwiązanie części problemu: nazwa programu w GUI jest czasem inna niż nazwa programu, którą należy znać dla polecenia powłoki - nie tylko, jeśli nazwa GUI jest przetłumaczona na język lokalny.
Na przykład, jak uruchomić program
Files
w linii komend?Musimy sprawdzić
*.desktop
nazwę dla wszystkich plików. Tam znajdujemy polecenie wExec
wierszu:locate -b '.desktop' | xargs grep -ls '^Name.*=Files$' | xargs grep '^Exec.*'
wyświetla nazwy plików na pulpicie i polecenia dla programu GUI
File
- zamień je dokładnie taką nazwą, której szukasz - nawet jeśli jest to wiele słów (w przypadku wyszukiwania podciągów pomiń=
i$
).Z poleceniem, znajdę
Files
może byćnautilus
,dolphin
lubactive-filebrowser
:źródło