Как я могу скопировать вывод команды в буфер обмена?
Как я могу передать вывод команды в буфер обмена и вставить его обратно при использовании терминала? Например:
cat file | clipboard
10 ответов:
Я всегда хотел сделать это и нашли хороший и простой способ сделать это. Я записал всю процедуру на тот случай, если она кому-то еще понадобится.
Сначала установите программу 16 КБ под названием
xclip
:sudo apt-get install xclip
затем вы можете передать вывод в
xclip
для копирования в буфер обмена:cat file | xclip
чтобы вставить текст, который вы только что скопировали, вы должны использовать:
xclip -o
чтобы упростить жизнь, вы можете настроить псевдоним в вашем .файл bashrc как я сделал:
alias "c=xclip" alias "v=xclip -o"
чтобы увидеть, насколько это полезно, представьте, что я хочу открыть свой текущий путь в новом окне терминала (могут быть и другие способы сделать это, как Ctrl+T на некоторых системах, но это просто для иллюстрации):
Terminal 1: pwd | c Terminal 2: cd `v`
обратите внимание на
` `
вокругv
. Это выполняетv
как команда, а затем заменяет его на месте дляcd
использовать.только скопируйте содержимое в
X
буфер обменаcat file | xclip
если вы хотите вставить где-то еще, кроме a
X
приложение, попробуйте этот:cat file | xclip -selection clipboard
Я написал этот маленький скрипт, который берет догадки из команд копирования / вставки.
версия скрипта Linux зависит от того, что xclip уже установлен в вашей системе. Скрипт называется буфер обмена.
#!/bin/bash # Linux version # Use this script to pipe in/out of the clipboard # # Usage: someapp | clipboard # Pipe someapp's output into clipboard # clipboard | someapp # Pipe clipboard's content into someapp # if command -v xclip 1>/dev/null; then if [[ -p /dev/stdin ]] ; then # stdin is a pipe # stdin -> clipboard xclip -i -selection clipboard else # stdin is not a pipe # clipboard -> stdout xclip -o -selection clipboard fi else echo "Remember to install xclip" fi
версия OS X скрипта основана на pbcopy и pbpaste, которые предварительно установлены на всех компьютерах Mac.
#!/bin/bash # OS X version # Use this script to pipe in/out of the clipboard # # Usage: someapp | clipboard # Pipe someapp's output into clipboard # clipboard | someapp # Pipe clipboard's content into someapp # if [[ -p /dev/stdin ]] ; then # stdin is a pipe # stdin -> clipboard pbcopy else # stdin is not a pipe # clipboard -> stdout pbpaste fi
использование скрипта очень просто, так как вы просто входите или выходите из
clipboard
как показано в этих двух образцы.$ cat file | clipboard $ clipboard | less
я создал инструмент для Linux / OSX / Cygwin, который похож на некоторые из этих других, но немного уникален. Я называю это
cb
и его можно найти в этом GitHub gist.в этом gist я демонстрирую, как делать копирование и вставку через командную строку с помощью Linux, macOS и Cygwin.
Linux
_copy(){ cat | xclip -selection clipboard } _paste(){ xclip -selection clipboard -o }
macOS
_copy(){ cat | pbcopy } _paste(){ pbpaste }
программа
_copy(){ cat > /dev/clipboard } _paste(){ cat /dev/clipboard }
Примечание: я изначально просто намеревался упомянуть об этом в своем комментарии к ответ Боба Еноха. Но потом я понял, что должен добавить README к моей сути. Поскольку редактор gist не предлагает предварительный просмотр Markdown, я использовал поле ответа здесь и после копирования/вставки его в мою мысль gist: "я мог бы также отправить ответ."
cb
герметичный тройник в буфер обмена
этот скрипт смоделирован после
tee
(см.man tee
).это как ваша обычная копия и вставить команды, но унифицированные и способные чувствовать, когда вы хотите, чтобы он был цепным
примеры
скопировать
$ date | cb # clipboard contains: Tue Jan 24 23:00:00 EST 2017
вставить
# clipboard retained from the previous block $ cb Tue Jan 24 23:00:00 EST 2017 $ cb | cat Tue Jan 24 23:00:00 EST 2017 $ cb > foo $ cat foo Tue Jan 24 23:00:00 EST 2017
сцепление
$ date | cb | tee updates.log Tue Jan 24 23:11:11 EST 2017 $ cat updates.log Tue Jan 24 23:11:11 EST 2017 # clipboard contains: Tue Jan 24 23:11:11 EST 2017
копировать через перенаправление файлов
(хронологически это имело смысл продемонстрировать в конце)
# clipboard retained from the previous block $ cb < foo $ cb Tue Jan 24 23:00:00 EST 2017 # note the minutes and seconds changed from 11 back to 00
добавьте это к вашему
~/.bashrc
:# Now `cclip' copies and `clipp' pastes' alias cclip='xclip -selection clipboard' alias clipp='xclip -selection clipboard -o'
теперь клипp паст и cклиповые копии - но вы также можете сделать более причудливые вещи:
clipp | sed 's/^/ /' | cclip
IND отступает буфер обмена; хорошо для сайтов без переполнения стека { }
вы можете добавить его, запустив это:
printf "\nalias clipp=\'xclip -selection c -o\'\n" >> ~/.bashrc printf "\nalias cclip=\'xclip -selection c -i\'\n" >> ~/.bashrc
Я использую Parcellite и
xsel
чтобы скопировать последнее сообщение фиксации изgit
мой менеджер буфера обмена (по какой-то причинеxclip
не работает):$ git log -1 --pretty=%B | xsel -i -b
без использования внешних инструментов, Если вы подключаетесь к серверу view SSH, это относительно простая команда:
из командной строки Windows 7+:
ssh user@server cat /etc/passwd | clip
это поместить содержимое удаленного файла в локальный буфер обмена.
(команда требует запуска Pageant для ключа, или он попросит вас ввести пароль.)
Я сделал небольшой инструмент, обеспечивающий аналогичную функциональность, без использования xclip или xsel.
stdout
копируется в буфер обмена и может быть вставлена в терминал. Смотрите:https://sourceforge.net/projects/commandlinecopypaste/
обратите внимание, что этот инструмент не нуждается в X-сессии. Буфер обмена можно просто использовать в терминале и не должен быть вставлен Ctrl+V или средний щелчок мыши в другие X-окна.
для тех, кто использует bash, установленный в их системе windows (известной как подсистема Windows для Linux (WSL)), попытка xclip даст ошибку:
Error: Can't open display: (null)
вместо этого, напомним, что подсистема linux имеет доступ к исполняемым файлам windows. Можно использовать клип.ехе как
echo hello | clip.exe
что позволяет использовать команду вставить (ctrl-v).