How do I copy text from my xterm without a mouse?

后端 未结 6 1554
夕颜
夕颜 2021-01-30 05:27

I want to use part of the output of a command run from the command line in another xterm, or as part of a different command. For instance:

> grep error err         


        
相关标签:
6条回答
  • 2021-01-30 05:53

    Easiest way would be using byobu which uses either tmux or screen in the background. It's a wrapper tool that makes using screen or tmux way more efficient, fast and easy. As such it makes it very simple to copy n paste too.
    Once you're in byobu and you have the output you want to copy, you can do the following to copy and then paste it:

    1. Enter in scroll mode by pressing F7. This mode allows to scroll up and down with arrow keys or PageUp and PageDown keys both in the output of previous commands or in the body of a text editor.
    2. Move the cursor with the arrow keys to the point where u want to start copying.
    3. Press and release Space bar.
    4. Move the cursor to select the text/region to copy (this looks very similar to vim VISUAL mode)
    5. Copy by pressing Enter (this will immediately exit you from scroll mode and copy mode)
    6. You can now paste using Alt + Insert (only within byobu by default but u can extend the paste enabled applications by installing xclip and doing some setting in byobu --> watch Introduction to terminal multiplexers - Part 2 from around minute 42 to 48)
    0 讨论(0)
  • 2021-01-30 05:54

    You may send output directly to the concerned xterm using xterm device no. Here is the command.

    xyz$ls /home/ankit/documents/etc/x/y/z > /dev/pts/0 
    

    (or watever is the device name, You can get it using command 'w' for opened xterm)

    Try it & hope this may solve your problem.

    0 讨论(0)
  • 2021-01-30 05:56

    I find XSel is useful in similar situations. It's a tool that manipulates the X selection. For example, this will store the output of your command to the clipboard:

    grep error error.log | xsel -bi
    
    0 讨论(0)
  • 2021-01-30 05:57

    You can use GNU screen's copy and paste commands.

    Quick tutorial:

    1. Open screen: screen (or screen myprog my args here)
    2. Run your program, producing output you want copied
    3. Enter copy mode: Control+a+[
    4. Move your cursor to the start point
    5. Hit Enter
    6. Move your cursor to the end point
    7. Hit Enter
    8. Paste: Control+a+]

    Screen is much more powerful than that (I use it to tab several virtual terminals without the need for a special terminal emulator, and also so that I don't loose my sessions when X crashes or something). To get out of screen, simply end your shell session, or type Ctrl+a, Ctrl+\.

    0 讨论(0)
  • 2021-01-30 06:10

    The OP said he didn't want to do this, but here is a unix utils way to do it for posterity. If you learn these little unix utilities they can be quite powerful.

    ls $( dirname $( grep error error.log | head -1 | cut -d " " -f 5- ) )

    note: syntax from memory

    0 讨论(0)
  • 2021-01-30 06:15

    You could also use tmux which has similar capabilities to screen. Once you're in tmux and you have the output you want to copy, you can do the following to copy and then paste it:

    1. Enter copy mode with Ctrl + B, [
    2. Move the cursor with the arrow keys and then start selection with Ctrl + Space
    3. Move the cursor to select the text/region to copy and then copy with Alt + W (this will immediately exit you from copy mode)
    4. You can now paste (within tmux only) using Ctrl + B, ]

    These instructiuons assume emacs key bindings are enabled. For the vi bindings see this comparison or just follow this step-by-step guide.

    0 讨论(0)
提交回复
热议问题