How to select (copy) an output in terminal without mouse

Solution 1:

Using tmux:

I use tmux in vi mode:

  1. Go to copy mode (in my config Prefix+escape, Default Prefix is Ctrl+b)
    • In config file (~/.tmux.conf): bind Escape copy-mode
  2. Move around (Using arrows)
  3. Select your desire output (Start selection with Space)
    • In my config v: bind-key -T copy-mode-vi y send-keys -X begin-selection
  4. Press Enter to copy the text.
    • In my config y: bind-key -T copy-mode-vi y send-keys -X copy-selection
  5. Press Prefix+p to Paste.

enter image description here

Also create a key binding like this:

bind C-c run "tmux save-buffer - | xsel -bi"

So you can save the buffer into system clipboard by pressing Prefix+Ctrl+c.

I have add my configuration cause it's more like vim than default config.


Using commands:

Here is what I do:

  1. Run the command (eg: ls -1)
  2. Process the output to get my desired result
  3. Pip it to xsel -bi

In your example:

$ ls -1 | sed -n 2p | xsel -bi
  • ls -1 prints the outputs each in one line
  • sed -n 2p get the second line
  • xsel has been used to copy the final result in clipboard.

If the command takes too long to run, first save the output to a file the process the output:

command > output
head -10 output | whatever | xsel -bi