I am new to Linux and only know my way around because of the GUI. Is there a way to see the equivalent commands on the terminal to do the same things as using the GUI? Thanks
Ubuntu – How to see terminal commands generated by GUI actions
command linegui
Related Solutions
dir
and ls
are part of coreutils
and dir
is almost the same as ls
, just with different default options.
The GNU Core Utilities are the basic file, shell and text manipulation utilities of the GNU operating system. These are the core utilities which are expected to exist on every operating system.
info dir
says:
dir
is equivalent tols -C -b
; that is, by default files are listed in columns, sorted vertically, and special characters are represented by backslash escape sequences.
Oh and there is also vdir
! info vdir
says:
vdir
is equivalent tols -l -b
; that is, by default files are listed in long format and special characters are represented by backslash escape sequences.
Most likely dir
exists for backwards compatibility or due to historical reasons.
Introduction
While it's not possible to log all GUI actions, such things as logging commands that correspond to open windows can be done. Below is the simple python script that does the job. It's still in development, but does 90% of the required task.
Source code
#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
from gi.repository import Gdk,Gtk
import time
import os
import subprocess
def run_cmd(cmdlist):
""" Reusable function for running external commands """
new_env = dict(os.environ)
new_env['LC_ALL'] = 'C'
try:
stdout = subprocess.check_output(cmdlist, env=new_env)
except subprocess.CalledProcessError:
pass
else:
if stdout:
return stdout
def print_info(stack,event):
base_xprop = ['xprop','-notype']
for xid in stack:
pid = None
check_pid = run_cmd(base_xprop + [ '_NET_WM_PID', '-id',str(xid)])
if check_pid:
pid = check_pid.decode().split('=')[1].strip()
with open('/proc/'+pid+'/cmdline') as fd:
command = fd.read()
print(time.strftime("%D %H:%M:%S" + " "*3) + event + pid + " " + command)
def main():
sc = Gdk.Screen.get_default()
old_stack = None
while True:
stack = [ win.get_xid() for win in sc.get_window_stack() ]
if old_stack:
# Difference between current and old stack will show new programs
diff = set(stack) - set(old_stack)
if diff:
print_info(diff," 'New window open' ")
else:
print_info(stack," 'Script Started' ")
old_stack = stack
time.sleep(2)
if __name__ == '__main__': main()
Test run:
$ ./log_open_windows.py
01/25/17 15:33:13 'Script Started' 2915 nautilus-n
01/25/17 15:33:13 'Script Started' 3408 /opt/google/chrome/chrome
01/25/17 15:33:13 'Script Started' 12540 /usr/bin/python/usr/bin/x-terminal-emulator
01/25/17 15:33:13 'Script Started' 2454 compiz
01/25/17 15:33:13 'Script Started' 2454 compiz
01/25/17 15:33:13 'Script Started' 2454 compiz
01/25/17 15:33:13 'Script Started' 2454 compiz
01/25/17 15:33:13 'Script Started' 2454 compiz
01/25/17 15:33:21 'New window open' 15143 /usr/lib/firefox/firefox-new-window
01/25/17 15:33:27 'New window open' 15196 unity-control-center
The script shows timestamp, event type, the window PID, and the corresponding command.
How to use
The standard rules of any script apply. Make sure you store the script in ~/bin
directory. If you don't have ~/bin
directory , then create one. Save script file there and ensure it is executable with chmod +x ~/bin/log_open_windows.py
. After than you can run it from command line at any time you wish by calling ~/log_open_windows.py
in command-line.
Best Answer
Probably not, because a GUI most of the time isn't calling the same command as a user would type in the terminal.
That said, if you want to know more about terminal commands, these are some usefull sites which explain common commands:
General use
Some common commands
A more advanced list