Ubuntu – How to copy terminal command in clipboard without using mouse

clipboardcommand linegnome-terminalshortcut-keys

enter image description here

gsettings set org.gnome.desktop.interface clock-show-date true

I want to copy this command into the clipboard so that I can paste it in a file or an Ask Ubuntu question easily.

I know I can copy this by selecting it and pressing Ctrl+Shift+C, but I want to get a mouse free answer.

Best Answer

You can use bash’s History Expansion, to copy the previous command line to your clipboard without performing command substitution, expansions etc. do:

echo !!:q | xclip -sel clip # or respectively
echo !!:q | xsel -ib

!! is a shortcut for !-1, referring to the previous command. Colon : precedes the modifier q, which lets the expansion quote the substituted words with single quotes to prevent further substitutions.

Example run

$ uname -r                        # run your command
4.10.0-35-generic
$ echo !!:q | xclip -sel clip     # copy the previous command to clipboard 
echo 'uname -r' | xclip -sel clip # this line shows what’s done
$ xclip -sel clip -o              # print clipboard content (just for testing)
uname -r
$ $(xclip -sel clip -o)           # run command stored in clipboard (just for testing)
4.10.0-35-generic

To simplify this you can create an alias or set a keyboard shortcut in the settings. Read man bash/HISTORY EXPANSION and man history to learn more about history expansion.