2008-11-23 6 views
25

Я хочу использовать часть вывода командной строки из командной строки в другом xterm или как часть другой команды. Например:Как скопировать текст с моего xterm без мыши?

> grep error error.log 
error: can't find file ~/<some very long path>/thisfile 

и я хочу сделать это:

>ls ~/<some very long path>/ 

Я знаю два способа сделать это:
1. копию ~/<some very long path>/ с помощью мыши.
2. использование некоторой комбинации head/tail/awk/sed/perl/cut/и т.д ... для извлечения только то, что мне нужно от выхода, а затем использовать что внутри кавычку.

Есть ли способ скопировать текст без использования нашей мыши? Примером, который приходит на ум, является визуальный режим внутри VIM, но я не знаю, как это сделать внутри xterm.

+0

Связанные/индентичные вопросы в другом месте: http://superuser.com/q/555886/128768; http://stackoverflow.com/q/1536757/1172302; http://superuser.com/q/228236/128768 – 2013-07-05 08:09:27

ответ

37

Вы можете использовать команды копирования и вставки экрана GNU.

Краткое руководство:

  1. Открытый экран: screen (или screen myprog my args here)
  2. Запустите программу, производя вывод, который вы хотите скопировали
  3. Войдите в режим копирования:^A [
  4. Переместить курсор начальная точка
  5. Хит ввод
  6. Переместить курсор в конечную точку
  7. Хит ввести
  8. Paste:^A]

экран является гораздо более мощным, чем (я использую его на вкладке несколько виртуальных терминалов без необходимости специального эмулятора терминала, а также так, что я не» t потерять мои сессии, когда происходит сбой X или что-то в этом роде). Чтобы выйти из экрана, просто закончите сеанс оболочки или введите^A ^.

+2

Есть ли способ вставить в другие места за пределами терминала? – 2016-05-22 16:25:06

2

ОП сказал, что он не хотел этого делать, но здесь используется unix utils, чтобы сделать это для потомков. Если вы изучите эти небольшие утилиты unix, они могут быть достаточно мощными.

Ls $ (имя_директории $ (Grep ошибка error.log | голову -1 | вырезать -d "" -f 5-))

Примечание: синтаксис из памяти

11

Я считаю, XSel полезен в подобных ситуациях. Это инструмент, который манипулирует выбором X. Например, это будет сохранять вывод команды в буфер обмена:

grep error error.log | xsel -bi 
1

Вы можете отправить выход непосредственно к соответствующему XTerm с помощью XTERM устройства нет. Вот команда.

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

(или watever это имя устройства, Вы можете получить его с помощью команды «W» для открытой XTerm)

Попробуйте & надеюсь, что это может решить вашу проблему.

+3

Это не делает выход доступным для повторного использования. – 2009-10-08 11:17:41

5

Вы также можете использовать tmux, который имеет similar capabilities до screen. После того, как вы в tmux и у вас есть вывод, который вы хотите скопировать, вы можете сделать следующее, чтобы скопировать и вставить его:

  1. Войдите в режим копирования с Ctrl + B, [
  2. Перемещение курсора с помощью клавиш со стрелками, а затем начать выделение Ctrl + Space
  3. Переместите курсор, чтобы выбрать текст/регион, чтобы скопировать, а затем скопировать с Alt + W (это будет сразу же выйти вам из режима копирования)
  4. Теперь вы можете вставить (в пределах tmux только) с помощью Ctrl + B, ]

Эти instructiuons предположить Emacs привязки клавиш включены. Для vi привязки см. Это comparison или просто следуйте this шаг за шагом руководство.

 Смежные вопросы

  • Нет связанных вопросов^_^