Как скопировать текст из моего xterm без мыши?
-
10-07-2019 - |
Вопрос
Я хочу использовать часть вывода команды, запущенной из командной строки, в другом 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
/ etc ..., чтобы извлечь из вывода только то, что мне нужно, а затем использовать , что внутри кавычек.
Есть ли способ скопировать текст без использования мыши? Пример, который приходит на ум, - это визуальный режим внутри VIM, но я не знаю, как это сделать внутри xterm.
Решение
Вы можете использовать команды копирования и вставки экрана GNU.
Краткое руководство:
<Ол>screen
(или screen myprog my args here
) Экран намного более мощный, чем этот (я использую его для вкладки нескольких виртуальных терминалов без необходимости специального эмулятора терминала, а также для того, чтобы я не терял свои сеансы при сбое X или чем-то еще). Чтобы выйти из экрана, просто завершите сеанс оболочки или введите Ctrl + a , Ctrl + \ . р>
Другие советы
Я считаю, что XSel полезен в подобных ситуациях. Это инструмент, который манипулирует выбором X. Например, это сохранит вывод вашей команды в буфер обмена:
grep error error.log | xsel -bi
Вы также можете использовать tmux
с аналогичными возможностями для screen
. Перейдя в <=> и получив выходные данные, которые вы хотите скопировать, вы можете сделать следующее, чтобы скопировать, а затем вставить его:
В этих инструкциях предполагается, что привязки клавиш emacs включены. Для привязок vi см. Это сравнение или просто следуйте это пошаговое руководство.
ОП сказал, что не хотел этого делать, но вот Unix использует способ сделать это для потомков. Если вы изучите эти маленькие утилиты Unix, они могут быть очень мощными.
ls $ (dirname $ (ошибка grep error.log | head -1 | cut -d " " -f 5-))
примечание: синтаксис из памяти
Вы можете отправить вывод напрямую в соответствующий xterm, используя устройство xterm №. Вот команда. Р>
xyz$ls /home/ankit/documents/etc/x/y/z > /dev/pts/0
(или каково бы ни было имя устройства, вы можете получить его, используя команду 'w' для открытого xterm)
Попробуй & amp; надеюсь, что это может решить вашу проблему.