Вопрос

Я хочу использовать часть вывода команды, запущенной из командной строки, в другом 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)
  • Запустите вашу программу, создавая вывод, который вы хотите скопировать
  • Войдите в режим копирования: Control + a + [
  • Переместите курсор в начальную точку
  • Нажмите Enter
  • Переместите курсор в конечную точку
  • Нажмите Enter
  • Вставить: Control + a + ]
  • Экран намного более мощный, чем этот (я использую его для вкладки нескольких виртуальных терминалов без необходимости специального эмулятора терминала, а также для того, чтобы я не терял свои сеансы при сбое X или чем-то еще). Чтобы выйти из экрана, просто завершите сеанс оболочки или введите Ctrl + a , Ctrl + \ .

    Другие советы

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

    grep error error.log | xsel -bi
    

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

    <Ол>
  • Войдите в режим копирования с помощью Ctrl + B , [
  • Переместите курсор с помощью клавиш со стрелками, а затем начните выделение с помощью Ctrl + Пробел
  • Переместите курсор, чтобы выбрать текст / область для копирования, а затем скопируйте с помощью Alt + W (это сразу же выведет вас из режима копирования)
  • Теперь вы можете вставлять (только в <=>), используя Ctrl + B , ]
  • В этих инструкциях предполагается, что привязки клавиш 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; надеюсь, что это может решить вашу проблему.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top