Я только что задал связанный вопрос, так как не могу заставить работать xclip при входе в Ubuntu из Git Bash в Windows: stackoverflow.com/q/60117294/470749
Я всегда хотел сделать это и нашел хороший и простой способ сделать это. Я записал полную процедуру на случай, если кому-то еще это понадобится.
Сначала установите программу 16 КБ, которая называется xclip:
sudo apt-get install xclip
Затем вы можете перенаправить вывод в xclipбуфер обмена:
cat file | xclip
Чтобы вставить текст, который вы только что скопировали, вы должны использовать:
xclip -o
Чтобы упростить жизнь, вы можете настроить псевдоним в вашем файле .bashrc, как я сделал:
alias "c=xclip"
alias "v=xclip -o"
Чтобы увидеть, насколько это полезно, представьте, что я хочу открыть свой текущий путь в новом окне терминала (могут быть другие способы сделать это как Ctrl+ Tв некоторых системах, но это только для иллюстрации):
Terminal1:
pwd | cTerminal2:
cd `v`
Заметьте ` ` вокруг v. Это выполняется vсначала как команда, а затем заменяет ее на месте для cdиспользования.
Копировать только содержимое в Xбуфер обмена
cat file | xclip
Если вы хотите вставить что-то еще, кроме Xприложения, попробуйте это:
«cat file | xclip» только копирует содержимое в буфер обмена «X», если вы хотите вставить что-то еще, кроме приложения «X», попробуйте следующее: «cat file | xclip -selection clipboard»
хот
5
Ваш выбор ручки уместен!
Мэтт Джойнер
4
Если вы хотите удалить символ новой строки, чтобы вы могли напрямую вставить и отредактировать результат «pwd | c», вы можете выполнить «pwd | tr -d '\ n' | xclip -selection c»
Anake
12
также определить alias "cs=xclip -selection clipboard"и alias "vs=xclip -o -selection clipboard"сделать копирование / вставку из системного буфера обмена проще
Yibo Yang
1
Как насчет решения, где у меня нет доступа к sudo, а xclip не установлен ??
DanGordon
179
На OS X используйте pbcopy; pbpasteидет в противоположном направлении.
Yups! Точно так же для бывших:pbcopy < .ssh/id_rsa.pub
doublejosh
не работает для вывода команды tho - напримерpbcopy < git merge-base master some-branch
Ben
если вы используете tmux, он не будет работать, если вы не подключите ваш сеанс заново: superuser.com/a/413233/146254
Atav32
1
вы также можете использовать cat, если вы уже работаете с ним: cat file.txt | pbcopy
rtrigoso
3
Я знаю, что комментарию 5 лет, но в случае, если кто-то наткнется на это в будущем, чтобы использовать с выводом команды, сделайтеgit merge-base master some-branch | pbcopy
Сэм
62
Я создал инструмент для Linux / OSX / Cygwin, который похож на некоторые из этих других, но немного уникален. Я называю это, cbи это может быть найдено в этом github gist .
В этой статье я продемонстрирую, как выполнять копирование и вставку через командную строку, используя Linux, macOS и Cygwin.
Примечание: изначально я просто хотел упомянуть об этом в своем комментарии к ответу Боба Энохпа . Но потом я понял, что должен добавить README к своей сути. Так как редактор gist не предлагает предварительный просмотр Markdown, я использовал здесь поле для ответа и после того, как скопировал / вставил его в свою мысль: «Я мог бы также отправить ответ».
Это отлично работает для меня, чтобы скопировать вывод команды в буфер обмена в терминале на MacOS, спасибо!
Джошуа Дейк
46
Я написал этот небольшой скрипт, который берет на себя догадки из команд копирования / вставки.
Версия скрипта для 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;thenif[[-p /dev/stdin ]];then# stdin is a pipe# stdin -> clipboard
xclip -i -selection clipboardelse# stdin is not a pipe# clipboard -> stdout
xclip -o -selection clipboardfielse
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
pbcopyelse# stdin is not a pipe# clipboard -> stdout
pbpastefi
Использовать сценарий очень просто, поскольку вы просто вводите или отключаете, clipboardкак показано в этих двух примерах.
Я использую имена pbcopyи pbpasteв Linux, поэтому он работает как для Linux, так и для OS X.
StackedCrooked
Чтобы заставить скрипт работать глобально в ubuntu: * Сохраните его в ~/.scripts/clipboard * Сделайте его исполняемым chmod +x ~/.scripts/clipboard для bash: * добавьте export PATH=$PATH:~/.scriptsв конец ~/.bashrc для fish: * добавьте set PATH ~/.scripts $PATHв ~/.config/fish/fish.config Если какие-либо файлы или папки еще не существуют, просто создайте их.
Хоккей
2
Вы также можете обернуть этот скрипт как функцию clipboard(){ ... }и вставить его в .bashrc
Себастьян Новак
Это очень похоже на то, что я сделал, но я разрешаю цепочку как date | cb | tee -a updates.log. Это отправит dateвывод команды в буфер обмена и передаст ее tee -aкоманде, которая добавляет его в файл и передает его stdout. Но это похоже на « герметичную тройник в буфер обмена», потому что если вы просто не date | cbполучите ничего, вы получите. И, наконец, это также делает cb > file.txtgist.github.com/RichardBronosky/…
Бруно Броноски
Одно из предложений - убрать завершающий символ новой строки, чтобы избежать выполнения команды при вставке (например, при копировании или вставке пути). Я делаю это, изменяя команду xclip -i -selection clipboardнаxargs echo -n | xclip -i -selection clipboard
Ивайло Странджев
23
Добавьте это к вашему ~/.bashrc:
# Now `cclip' copies and `clipp' pastes'
alias cclip='xclip -selection clipboard'
alias clipp='xclip -selection clipboard -o'
Теперь клип р паст и с клипами копия - но вы также можете сделать любитель вещи:
clipp | sed 's/^/ /'| cclip
↑ сделать отступ в вашем буфере обмена; хорошо для сайтов без { }кнопки переполнения стека
Вы можете добавить его, запустив это:
printf "\nalias clipp=\'xclip -selection c -o\'\n">>~/.bashrc
printf "\nalias cclip=\'xclip -selection c -i\'\n">>~/.bashrc
@AfshinMoazami, название и сам вопрос являются общими, только подсказки для системы Unix, и мой ответ покрывает случай, когда вы пытаетесь получить дату С сервера Unix НА компьютер с Windows, что может пригодиться будущим читателям.
д.раев
1
Проголосовал, потому что да, полезно для администраторов Windows, у которых есть только Powershell, чтобы играть с ним локально (хотя теперь, когда LSW действительно работает, я могу перейти в bash прямо из Powershell и делать оттуда * * nixy).
flith
Его рабочий на DOS строке, а также мерзавец Баш на окнах 10 тecho Hello World | clip
5
Для Mac это пример способа скопировать (в буфер обмена) вставку (из буфера обмена) с помощью командной строки
Скопируйте результат pwdкоманды в буфер обмена как
Я сделал небольшой инструмент, обеспечивающий аналогичную функциональность, без использования xclip или xsel. stdoutкопируется в буфер обмена и может быть снова вставлен в терминал. Видеть:
Обратите внимание, что этот инструмент не требует X-сессии. Буфер обмена можно просто использовать в терминале, и его не нужно вставлять Ctrl+Vили щелкать средним щелчком мыши в других окнах X.
Примечание: это должно быть bash, поскольку TCSH не поддерживает многострочные аргументы.
Вслед за псевдонимом TCSH в .cshrc.
alias clipboard xargs -0/path/to/foo
Объяснение:
xargs -0трубы stdin в один аргумент. Этот аргумент передается исполняемому файлу bash, который отправляет запрос «copy to clipboard» на klipperиспользование qdbus. Канал /dev/nullзаключается в том, чтобы не печатать символ новой строки, возвращаемый qdbusконсолью.
Пример использования:
ls | clipboard
Это копирует содержимое текущей папки в буфер обмена.
Примечание: работает только как труба. Используйте исполняемый файл bash напрямую, если вам нужно скопировать аргумент.
Обратите внимание, что если в Windows установлен xserver (например, vcxsvr или xming), дисплей работает, а xclipboard запущен, то вы действительно можете без проблем использовать xclip.
бит
0
Просто чтобы охватить крайний случай :) и потому, что заголовок вопроса спрашивает (по крайней мере, сейчас), как скопировать вывод команды непосредственно в буфер обмена.
Часто я считаю полезным скопировать вывод команды после того, как она уже была выполнена, и я не хочу или не могу выполнить команду снова.
Для этого сценария мы можем использовать либо gdm, либо аналогичную утилиту мыши и выбирать с помощью мыши. apt-get install gdmи затем либо правый клик, либо комбинации Cntrl + Shift + c и Cntrl + Shift + v для копирования и вставки в терминал
Или, который является предпочтительным для меня способом (так как мышь не может правильно выбрать внутри одной панели, когда у вас есть несколько панелей рядом и вам нужно выбрать более одной строки), используя tmux, мы можем скопировать в буфер tmux, используя стандартный [, пробел, переместить, чтобы выбрать, введите или вы можете выбрать блок кода. Также это особенно полезно, когда вы находитесь внутри одной из полос мультиплексора cli, например tmux, и вам нужно выбрать группу текста, но не номера строк (моя установка vim отображает номера строк)
После этого вы можете использовать команду:
tmux save-buffer - | xclip -i
Конечно, вы можете присвоить ему псевдоним или привязать его напрямую в конфигурационном файле tmux.
Это просто для того, чтобы дать вам концептуальный ответ, чтобы охватить этот крайний случай, когда невозможно выполнить команду снова. Если вам нужны более конкретные примеры кода, дайте мне знать
apt install xclip
иcat file | xclip -sel clip
Ответы:
Я всегда хотел сделать это и нашел хороший и простой способ сделать это. Я записал полную процедуру на случай, если кому-то еще это понадобится.
Сначала установите программу 16 КБ, которая называется
xclip
:Затем вы можете перенаправить вывод в
xclip
буфер обмена:Чтобы вставить текст, который вы только что скопировали, вы должны использовать:
Чтобы упростить жизнь, вы можете настроить псевдоним в вашем файле .bashrc, как я сделал:
Чтобы увидеть, насколько это полезно, представьте, что я хочу открыть свой текущий путь в новом окне терминала (могут быть другие способы сделать это как Ctrl+ Tв некоторых системах, но это только для иллюстрации):
Заметьте
` `
вокругv
. Это выполняетсяv
сначала как команда, а затем заменяет ее на месте дляcd
использования.Копировать только содержимое в
X
буфер обменаЕсли вы хотите вставить что-то еще, кроме
X
приложения, попробуйте это:источник
alias "cs=xclip -selection clipboard"
иalias "vs=xclip -o -selection clipboard"
сделать копирование / вставку из системного буфера обмена прощеНа OS X используйте
pbcopy
;pbpaste
идет в противоположном направлении.источник
pbcopy < .ssh/id_rsa.pub
pbcopy < git merge-base master some-branch
git merge-base master some-branch | pbcopy
Я создал инструмент для Linux / OSX / Cygwin, который похож на некоторые из этих других, но немного уникален. Я называю это,
cb
и это может быть найдено в этом github gist .В этой статье я продемонстрирую, как выполнять копирование и вставку через командную строку, используя Linux, macOS и Cygwin.
Linux
Macos
Cygwin
Примечание: изначально я просто хотел упомянуть об этом в своем комментарии к ответу Боба Энохпа . Но потом я понял, что должен добавить README к своей сути. Так как редактор gist не предлагает предварительный просмотр Markdown, я использовал здесь поле для ответа и после того, как скопировал / вставил его в свою мысль: «Я мог бы также отправить ответ».
центибар
Герметичная тройник в буфер обмена
Этот скрипт смоделирован после
tee
(см.man tee
).Это похоже на ваши обычные команды копирования и вставки, но унифицированные и способные воспринимать, когда вы хотите, чтобы они были цепными
Примеры
копия
Вставить
Цепной
Копировать через файл перенаправления
(хронологически имело смысл продемонстрировать это в конце)
источник
Я написал этот небольшой скрипт, который берет на себя догадки из команд копирования / вставки.
Версия скрипта для Linux основана на том, что xclip уже установлен в вашей системе. Сценарий называется буфером обмена.
Версия скрипта для OS X использует pbcopy и pbpaste, которые предустановлены на всех компьютерах Mac.
Использовать сценарий очень просто, поскольку вы просто вводите или отключаете,
clipboard
как показано в этих двух примерах.источник
pbcopy
иpbpaste
в Linux, поэтому он работает как для Linux, так и для OS X.~/.scripts/clipboard
* Сделайте его исполняемымchmod +x ~/.scripts/clipboard
для bash: * добавьтеexport PATH=$PATH:~/.scripts
в конец~/.bashrc
для fish: * добавьтеset PATH ~/.scripts $PATH
в~/.config/fish/fish.config
Если какие-либо файлы или папки еще не существуют, просто создайте их.clipboard(){ ... }
и вставить его в .bashrcdate | cb | tee -a updates.log
. Это отправитdate
вывод команды в буфер обмена и передаст ееtee -a
команде, которая добавляет его в файл и передает егоstdout
. Но это похоже на « герметичную тройник в буфер обмена», потому что если вы просто неdate | cb
получите ничего, вы получите. И, наконец, это также делаетcb > file.txt
gist.github.com/RichardBronosky/…xclip -i -selection clipboard
наxargs echo -n | xclip -i -selection clipboard
Добавьте это к вашему
~/.bashrc
:Вы можете добавить его, запустив это:
источник
Я использую Parcellite и копирую
xsel
последнее сообщение о коммитеgit
в мой менеджер буфера обмена (по некоторым причинамxclip
не работает):источник
Без использования внешних инструментов, если вы подключаетесь к серверу SSH, это довольно простая команда:
Из командной строки Windows 7+:
Это поместит содержимое удаленного файла в ваш локальный буфер обмена.
(Команда требует запуска Pageant для ключа, или она попросит вас ввести пароль.)
источник
echo Hello World | clip
Для Mac это пример способа скопировать (в буфер обмена) вставку (из буфера обмена) с помощью командной строки
Скопируйте результат
pwd
команды в буфер обмена какИспользуйте содержимое в буфере обмена как
источник
Я сделал небольшой инструмент, обеспечивающий аналогичную функциональность, без использования xclip или xsel.
stdout
копируется в буфер обмена и может быть снова вставлен в терминал. Видеть:https://sourceforge.net/projects/commandlinecopypaste/
Обратите внимание, что этот инструмент не требует X-сессии. Буфер обмена можно просто использовать в терминале, и его не нужно вставлять Ctrl+Vили щелкать средним щелчком мыши в других окнах X.
источник
В Linux с установленным xclip:
источник
Основываясь на предыдущих постах, я получил следующее легкое решение для псевдонимов, которое можно добавить к
.bashrc
:Примеры:
источник
Я пришел из урезанного фона KDE, и у меня нет доступа к нему
xclip
,xsel
или что-то другое. У меня есть TCSH Konsole, чтобы усугубить ситуацию.Реквизиты:
qdbus
klipper
xargs
bash
Создайте исполняемый файл bash
foo.sh
.Примечание: это должно быть bash, поскольку TCSH не поддерживает многострочные аргументы.
Вслед за псевдонимом TCSH в
.cshrc
.Объяснение:
xargs -0
трубы stdin в один аргумент. Этот аргумент передается исполняемому файлу bash, который отправляет запрос «copy to clipboard» наklipper
использованиеqdbus
. Канал/dev/null
заключается в том, чтобы не печатать символ новой строки, возвращаемыйqdbus
консолью.Пример использования:
Это копирует содержимое текущей папки в буфер обмена.
Примечание: работает только как труба. Используйте исполняемый файл bash напрямую, если вам нужно скопировать аргумент.
источник
Я обычно запускаю эту команду, когда мне нужно скопировать мой
ssh-key
:ctrl+v
где-нибудь еще.источник
на Wayland xcopy не работает, вместо этого используйте wl-clipboard . например, на Fedora
источник
Для тех, кто использует bash, установленный в их системе Windows (известной как Windows Subsystem for Linux (WSL)), попытка xclip выдаст ошибку:
Напомним, что подсистема Linux имеет доступ к исполняемым файлам Windows. Можно использовать clip.exe как
который позволяет использовать команду вставки (ctrl-v).
источник
Просто чтобы охватить крайний случай :) и потому, что заголовок вопроса спрашивает (по крайней мере, сейчас), как скопировать вывод команды непосредственно в буфер обмена.
Часто я считаю полезным скопировать вывод команды после того, как она уже была выполнена, и я не хочу или не могу выполнить команду снова.
Для этого сценария мы можем использовать либо gdm, либо аналогичную утилиту мыши и выбирать с помощью мыши.
apt-get install gdm
и затем либо правый клик, либо комбинации Cntrl + Shift + c и Cntrl + Shift + v для копирования и вставки в терминалИли, который является предпочтительным для меня способом (так как мышь не может правильно выбрать внутри одной панели, когда у вас есть несколько панелей рядом и вам нужно выбрать более одной строки), используя tmux, мы можем скопировать в буфер tmux, используя стандартный [, пробел, переместить, чтобы выбрать, введите или вы можете выбрать блок кода. Также это особенно полезно, когда вы находитесь внутри одной из полос мультиплексора cli, например tmux, и вам нужно выбрать группу текста, но не номера строк (моя установка vim отображает номера строк)
После этого вы можете использовать команду:
tmux save-buffer - | xclip -i
Конечно, вы можете присвоить ему псевдоним или привязать его напрямую в конфигурационном файле tmux.
Это просто для того, чтобы дать вам концептуальный ответ, чтобы охватить этот крайний случай, когда невозможно выполнить команду снова. Если вам нужны более конкретные примеры кода, дайте мне знать
ура
источник