Bash 스크립트에서 클립 보드와 파이프


946

Bash의 클립 보드로 파이프를 오가는 것이 가능합니까?

장치 핸들과의 배관 또는 보조 응용 프로그램 사용 여부에 관계없이 아무것도 찾을 수 없습니다.

예를 들어 /dev/clip클립 보드에 연결된 장치 라면 다음과 같이 할 수 있습니다.

cat /dev/clip        # Dump the contents of the clipboard
cat foo > /dev/clip  # Dump the contents of "foo" into the clipboard

3
:%y+vim 에서 사용 하고 있는데, 이것은 "+ '레지스터 (X PRIMARY클립 보드)에 모든 줄을"잉크 (복사) "로 vim-speak입니다 . %구체적으로 원하면 범위로 바꿀 수 있습니다 . 그러나 세 가지주의 사항이 있습니다. 1. 이제 파일을 복사하기 전에 텍스트를 파일에 저장해야합니다. 이것은 xclip답변에 언급 된 명령 과 대조적 입니다. 2. vim 방법을 모른다면 지루할 수도 있습니다. vim을 컴파일 할 때 특정 기능이 활성화 된 경우에만이 작업을 수행 할 수 있습니다. GVim을 설치하면 vim의 GUI 및 터미널 인스턴스 모두에서 기본적으로 활성화되어 있어야합니다.
Braden Best

1
@BradenBest 당신은 이것을 대답으로 넣어야합니다. NIX 환경에 있으며 설치할 수 없습니다 xclip. 당신의 대답은 매력처럼 작용했습니다.
행카

@HankCa 좋아, 나는 대답을 올렸다 . 네가 어떻게 생각하는지 내게 말해 줘.
Braden Best

@BradenBest는 매우 포괄적 인 답변입니다. 방금 :%y+하나를 좋아 했지만 괜찮습니다. 모든 기지가 덮혔습니다! 좋아요
HankCa

또 다른 옵션 : 작은 perl 스크립트 사용 : 설치가 필요하지 않습니다. 아래 내 답변을 참조하십시오 .
VonC

답변:


862

다룰 수있는 풍부한 클립 보드가 있습니다. X Windows 기본 클립 보드에 내용을 넣기를 원하는 Linux 사용자 일 것입니다. 일반적으로 대화하려는 클립 보드에는 대화 할 수있는 유틸리티가 있습니다.

X의 경우 xclip(및 기타)가 있습니다. xclip -selection c작동 클립 보드에 데이터를 보낼 것입니다 Ctrl + C, Ctrl + V대부분의 응용 프로그램에.

Mac OS X를 사용하는 경우이 pbcopy있습니다.

Linux 터미널 모드 (X 없음) 인 경우 클립 보드가있는 화면gpm보거나 화면 을보십시오 . screen명령을 시도하십시오 readreg.

Windows 10 이상 또는 cygwin에서는 /dev/clipboard또는을 사용하십시오 clip.



24
Windows에서 /dev/clipboardMsys / MinGW bash 쉘에서도 작동
Mihai Rotaru

71
참고 xclip -selection c클립 보드에 데이터를 보내드립니다 대부분의 애플리케이션에서 ^ C ^ V와 작품
클라스 반 Schelven

31
최신 Windows 버전에서는 다음 clip과 같이 사용할 수 있습니다 .dir | clip
maep

11
GNU / 리눅스로 더 그런 장치가 없다는 슬픈 /dev/clipboard쿠분투에서 적어도 기본적으로없는 하나 XCLIP 중 하나 GPM 설치하고, 힘 (I 너무 다른 대부분의 배포판에 생각을) .
Hi-Angel

282

당신이 사용하고 있는지 확인하십시오 alias xclip="xclip -selection c" , 그렇지 않으면 당신은 단지에 사용할 수 없습니다 Ctrl+ v다시 다른 위치에 붙여 넣을 수 있습니다.

echo test | xclip    

Ctrl+v === test


1
그 명령 인수 없이 그것을 붙여 넣는 방법은 무엇입니까?
Jonah

15
xclip -selection clipboard -o
doug

32
osx와 Linux 사이를왔다 갔다하기 때문에 내 도트 파일에 다음이 있습니다. alias pbcopy="xclip -selection c" alias pbpaste="xclip -selection clipboard -o" 희망이 도움이됩니다.
doug

15
@ApockofFork xclip는 개행을 추가하지 않습니다 echo. 시도하십시오 printf test | xclip -i -selection clipboard. ( printf쓰지 않으면 개행을 추가하지 않습니다 'test\n'.)
David X

7
또는 echo -n대신 사용하십시오 printf.
Christian Pietsch 2012

182

설치

# You can install xclip using `apt-get`
apt-get install xclip

# or `pacman`
pacman -S xclip

# or `dnf`
dnf install xclip

액세스 권한이없는 경우 apt-get도를 pacman,도 dnf, 소스는 사용할 수 있습니다 소스 포지 .

설정

세게 때리다

에 다음 ~/.bash_aliases을 추가하십시오.

alias setclip="xclip -selection c"
alias getclip="xclip -selection c -o"

. ~/.bash_aliases프로파일을 사용 하거나 다시 시작 하여 새 구성을로드하는 것을 잊지 마십시오 .

물고기

에 다음 ~/.config/fish/config.fish을 추가하십시오.

abbr setclip "xclip -selection c"
abbr getclip "xclip -selection c -o"

변경 사항을 적용하려면 터미널을 다시 시작하여 물고기 인스턴스를 다시 시작해야합니다.

용법

이제 사용 setclip하고 getclip, 예를 :

$ echo foo | setclip
$ getclip
foo

3
다른 모든 배포판의 경우 : sourceforge.net/projects/xclip
Scz

+1 최고의 솔루션! 아치에서 sudo pacman -S xclip. 그러나 그것이 .bashrc최선의 장소가 아니라는 점에 유의하십시오 . 최종 사용자는 적절한 bashrc, bash_aliases 및 .profile 파일을 읽고 bash가 각각을 처리하는 방법을 읽는 것이 좋습니다. 팁 : 대신 .bash_aliases에 넣으십시오.
eduncan911

1
@ eduncan911 감사합니다! :) pacman패키지 관리자 사용 옵션을 추가하고 .bashrc제안을 제거했습니다 . 나는 .bash_aliases더 적응한다는 것을 알고 있지만 최종 결과는 동일합니다 ( 존재하는 경우 .bashrc간단히 요구 .bash_aliases합니다). 사람들이 지저분한 시스템을 원한다면 그것들을 갖도록하십시오. :)
tleb

@EladTabak 행복한 도움이되었습니다.
tleb

1
@jpaugh 당신이 맞습니다. 끝에 나의 .bashrc근원 .bash_aliases. ;) 나는, 나무 딸기가 변형, 아치에서 100 % 호환됩니다이 오래된 규칙, 우분투 / 데비안에 따라 맥 OS / OSX 및 Windows 배쉬 : stefaanlippens.net/my_bashrc_aliases_profile_and_other_stuff 그 협약에, 나는 모든 시스템에 걸쳐 동일한 dotfiles를 사용 만져 그것은 아주 좋은 데요 : github.com/eduncan911/dotfiles
eduncan911

143

macOS에서는 내장 pbcopypbpaste명령을 사용하십시오 .

예를 들어

cat ~/.bashrc | pbcopy

~/.bashrc파일 의 내용은 Cmd+ v바로 가기로 붙여 넣을 수 있습니다 .



25

데비안 / 우분투 / 민트의 xsel

# append to clipboard:
cat 'the file with content' | xsel -ib

# or type in the happy face :) and ...
echo 'the happy face :) and content' | xsel -ib

# show clipboard
xsel -b

# Get more info:
man xsel

설치

sudo apt-get install xsel

이것과 어떻게 다릅니 echo "foo" | xclip -selection c까?
Léo Léopold Hertz 준영

이이에 대한 몇 가지 답변입니다 질문 우분투의 대답은 ,하지만 주로 xselxclip것을 제외하고 모든면에서 동일 xclip이름으로 파일 읽기 / 쓰기 할 수 있지만, xsel당신이 파일에 액세스하려면 쉘 리디렉션을 필요로한다.
Colin D Bennett

xselxclip 프롬프트에서만 작동 하는 동안 스크립트에서 잘 작동합니다. 이유가 확실하지 않습니다.
NVRM

16

와우, 나는이 질문에 대한 답변이 얼마나 많은지를 믿을 수 없습니다. 나는 그들을 모두 시도했지만 말할 수는 없지만 상위 3 또는 4를 시도했지만 아무도 나를 위해 일하지 않습니다. 나를 위해 일한 것은 doug라는 사용자가 작성한 주석 중 하나에있는 답변이었습니다. 도움이 되었기 때문에 답변을 다시 작성하기로 결정했습니다.

xcopy 유틸리티를 설치하고 터미널에있을 때 다음을 입력하십시오.

Thing_you_want_to_copy|xclip -selection c

myvariable=$(xclip -selection clipboard -o)

나는 pbpaste와 pbcopy를 권장하는 많은 답변을 발견했습니다. 해당 유틸리티에 있지만 어떤 이유로 든 리포지토리에서 사용할 수없는 경우 언제든지 xcopy 명령의 별칭을 만들어 pbpaste 및 pbcopy라고 할 수 있습니다.

alias pbcopy="xclip -selection c" 
alias pbpaste="xclip -selection clipboard -o" 

그러면 다음과 같이 보일 것입니다.

Thing_you_want_to_copy|pbcopy
myvariable=$(pbpaste)

여러분의 별칭 부분은 MacOS와 매우 잘 어울립니다.
MeadowMuffins 2012

15

2018 년 답변

clipboard-cli를 사용하십시오 . 실제 문제없이 macOS, Windows, Linux, OpenBSD, FreeBSD 및 Android에서 작동합니다.

다음과 같이 설치하십시오.

npm install -g clipboard-cli

그럼 넌 할 수있어

echo foo | clipboard

당신이 원하는 경우에, 당신이 할 수있는 별명에, cb당신에 다음을 넣어 .bashrc, .bash_profile또는 .zshrc:

alias cb=clipboard


2
안전한 npm패키지입니까?
Johnny

3
@Stas, 나는 그것이 가장 희망적인 노드 기여자 인 Sindresorhus ( github.com/sindresorhus )에 의해 만들어지기를 희망한다 . 그는 Ava 테스트 라이브러리, xo linter, Yeoman 및 기타 수많은 프로젝트를 담당합니다. 그는 이와 같은 셀 수없이 많은 라이브러리를 책임지고 있으며, 거의 모든 JS 사용 웹 사이트에 코드를 인터넷에 저장합니다. 그가 타협 할 수 없었다는 것은 아닙니다. 그의 repos와 그의 명성에 대한 눈의 양이 대부분의 무작위 npm repos보다 훨씬 적습니다.
Evan Conrad

멋있는! xclip이 작동하지 않는 Ubuntu GNU / Linux에서 작업 중입니다.
Kevin Buchs

14

Linux 용 Windows 서브 시스템에서 clip.exe를 사용하여 클립 보드에 복사 할 수 있습니다.

cat file | clip.exe

|파이프 명령 을 사용하십시오 . 그리고 >명령이 작동하지 않기 때문에 명령이 아닙니다.


11

다음은 여러 플랫폼에서 작동하는 클립 보드를 읽는 데 bash 스크립트를 사용할 준비가 된 것입니다. 기능 (예 : 더 많은 플랫폼)을 추가 할 경우 여기에서 스크립트를 편집하십시오.

#!/bin/bash
# WF 2013-10-04
# multi platform clipboard read access
# supports
#   Mac OS X
#   git shell / Cygwin (Windows)
#   Linux (e.g. Ubuntu)

#
# display an error
#
error() {
  echo "error: $1" 1>&2
  exit 1
}

#
# getClipboard
#
function getClipboard() {
 os=`uname`
      case $os in 
        # git bash  (Windows)
        MINGW32_NT-6.1)
          cat /dev/clipboard;;
        # Mac OS X
        Darwin*)
          pbpaste;;  
        # Linux 
        Linux*)
          # works only for X clipboard - a check that X is running might be due
          xclip -o;;
        *)
          error "unsupported os $os";;
      esac
}

tmp=/tmp/clipboard$$
getClipboard >$tmp
cat $tmp
# comment out for debugging
rm $tmp

bruhh, 이것이 실제로 작동하는 이유는 무엇입니까?
255.tar.xz

9

Windows (Cygwin 사용)에서 cat /dev/clipboard또는 기사 echo "foo" > /dev/clipboard에서 언급 한대로 시도 하십시오.


1
사용자 @maep이 별도의 주석에서 언급했듯이 최신 버전의 Windows (Win10에 대해서만 확인할 수 있음)는 간단히 파이프로 연결할 수 있습니다 clip. msysgit 1.9.5를 사용하고 있으며 이것이 효과가있었습니다.
Shawn Erquhart

echo "foo" > /dev/clipboard완전히 (안 \ r에 \ n \ n 일하지만 완전히 사라) 줄 바꿈을 파괴하는 것
user1529413

9

Mac 만 해당 :

echo "Hello World" | pbcopy
pbpaste

이러한 위치 /usr/bin/pbcopy/usr/bin/pbpaste.


8

리눅스에는 다른 클립 보드가 있습니다. X 서버에는 하나가 있고 창 관리자에는 다른 서버가있을 수 있습니다. 표준 장치는 없습니다.

예, CLI에서 스크린 프로그램에는 자체 클립 보드가 있으며 Emacsvi 와 같은 다른 응용 프로그램도 있습니다.

X에서는 xclip 을 사용할 수 있습니다 .

이 스레드에서 다른 가능한 답변을 확인할 수 있습니다. http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2004-07/0919.html


2
/ dev / clip을 만드는 것은 누군가에게 좋은 프로젝트가 될 것 같습니다.
TED 2016

2
여러 클립 보드를 완벽하게 알고 있습니다. 어떻게하면 내 질문에 대답하기가 더 어려워 집니까?
moinudin 2009

클립 보드가 표준화되어 있다면 / dev / clip1, / ​​dev / clip2 .. / dev / clip <n>을 사용하여 액세스 할 수 있다면 아프지 않을 것입니다. 유일한 문제는 클립 보드가 사용자에 따라 다르고 장치는 시스템 전체입니다. 그러나 액세스 UID에 따라 마스크하는 커널 장치 드라이버를 만들면 예상대로 작동합니다.

5

Windows (Cygwin)에서 클립 보드에 복사하여 붙여 넣기 :

보다:

$ clip.exe -?

CLIP
Description:
    Redirects output of command line tools to the Windows clipboard.
    This text output can then be pasted into other programs.
Parameter List:
/?                  Displays this help message.
Examples:
DIR | CLIP          Places a copy of the current directory
                        listing into the Windows clipboard.
CLIP < README.TXT   Places a copy of the text from readme.txt
                        on to the Windows clipboard.

또한 getclip ( Shift+ Ins! 대신 사용할 수 있음 )과 putclip (echo oaeuoa | putclip.exe를 클립에 넣습니다)이 있습니다.


4

이것은 필요한 것을 수행하는 간단한 Python 스크립트입니다.

#!/usr/bin/python

import sys

# Clipboard storage
clipboard_file = '/tmp/clipboard.tmp'

if(sys.stdin.isatty()): # Should write clipboard contents out to stdout
    with open(clipboard_file, 'r') as c:
        sys.stdout.write(c.read())
elif(sys.stdout.isatty()): # Should save stdin to clipboard
    with open(clipboard_file, 'w') as c:
        c.write(sys.stdin.read())

이것을 경로 어딘가에 실행 파일로 저장하십시오 (저장했습니다 /usr/local/bin/clip. 클립 보드에 저장할 내용을 파이프로 넣을 수 있습니다 ...

echo "Hello World" | clip

클립 보드에있는 내용을 다른 프로그램으로 파이프 할 수 있습니다.

clip | cowsay
 _____________
< Hello World >
 -------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

자체적으로 실행하면 클립 보드에있는 내용 만 출력됩니다.


이것은 단일 컴퓨터에있을 때 작동하지만 컴퓨터간에 사물을 복사 할 수는 없습니다.
Charles Plager

`echo str> tmpfile` 만 보이지만 cat tmpfile클립 보드 작업은 아닙니다. // @horta 답변과 동일합니다.
yurenchen

이것은 클립 보드 변수를 설정하지 않는 것 같으므로 다른 응용 프로그램에서 내용을 붙여 넣을 수 없습니다-실제 클립 보드가 아닙니다!
jena

4

좋은 참조를 찾았습니다 : /unix/69111/

필자의 경우 클립 보드에 내용을 붙여 넣고 붙여 넣은 내용을보고 싶습니다. 그래서 tee파일 설명자와 함께 명령을 사용했습니다.

echo "just a test" | tee >(xclip -i -selection clipboard)

>()프로세스 대체 형식입니다. bash는 괄호 안의 프로그램의 표준 입력에 연결된 파일 디스크립터의 경로로 각각 바뀝니다.

tee명령은 "내용을 파이프하고"표준 출력 "stdout"에서 결과를 볼 수 있도록 명령을 포크합니다.

또한 별칭을 만들어 클립 보드에 가져 와서 쓸 수 있으므로 MAC에서와 같이 "pbcopy"및 "pbpaste"를 사용할 수 있습니다. 필자의 경우 zsh를 사용할 때 별칭 파일에 다음이 있습니다.

(( $+commands[xclip] )) && {
    alias pbpaste='xclip -i -selection clipboard -o'
    alias pbcopy='xclip -selection clipboard'
}

(( $+command[name] ))zsh을 시험의 명령 "이름"이 시스템에 설치되어있는 경우, 다음 두 별칭으로 그룹화됩니다 {}. 는 &&이진 AND이며, a와 b이면 xclip이 있으면 별칭이 설정됩니다.

echo "another test" | tee >(pbcopy)

클립 보드 컨텐츠를 얻으려면 다음을 입력하십시오.

pbpaste | "any-command-you-need-here"


2

몇 년 전에 쓴 몇 가지 Windows 프로그램. 클립 보드를 덤프, 푸시, 추가 및 인쇄 할 수 있습니다. 다음과 같이 작동합니다.

dumpclip | perl -pe "s/monkey/chimp/g;" | pushclip

소스 코드 포함 : cmd_clip.zip


2

몇 가지 방법이 있습니다. 언급 된 방법 중 일부는 tmux, screen, vim, emacs 및 shell을 포함합니다. 나는 이맥스 나 스크린을 모른다. 그래서 나는 다른 세 가지를 살펴볼 것이다.

툭스

아닌 X 선택하지만,을 통해 액세스 할 수있는 복사 모드를 TMUX가 prefix-[( prefixCtrl+ B기본적으로). 이 모드에 사용되는 버퍼는 tmux와는 별개이며 독점적이며, 이로 인해 몇 가지 가능성이 열리고 올바른 상황에서 X 선택보다 더 다양한 기능을 사용할 수 있습니다.

이 모드를 종료하려면 q;를 누르십시오 . 이동하려면, 귀하의 사용 vim또는 emacs(기본값 = VIM) 바인딩, 그래서 hjkl운동을위한 v/V/C-v문자 / 라인 / 블록 선택, 등 당신은 당신의 선택, 히트가있는 경우Enter 복사 모드를 종료 할 수 있습니다.

이 버퍼에서 붙여 넣으려면을 사용하십시오 prefix-].

껍질

모든 설치는 X11기본적으로 두 개의 프로그램과 함께 제공되는 것 같습니다 : xclipxsel( startxxinit. 다른 답변의 대부분은 언급 xclip하고 있으며, 나는 xsel그 간결함을 정말로 좋아 하므로 다루겠습니다 xsel.

에서 XSEL (1X) :

입력 옵션

-a,-추가

선택에 표준 입력을 추가하십시오. -i를 의미 합니다.

-f, --follow

표준 입력이 증가함에 따라 선택에 추가합니다. -i를 의미 합니다.

-i,-입력

선택에 표준 입력을 읽습니다.

출력 옵션

-o, --output

선택 사항을 표준 출력에 씁니다.

동작 옵션

-c, --clear

선택을 해제하십시오. 모든 입력 옵션을 재정의합니다.

-d, --delete

현재 선택을 삭제하도록 요청하십시오. 이것은 선택을 해제 할뿐만 아니라 선택이 상주하는 프로그램에 선택된 내용이 삭제되도록 요청합니다. 모든 입력 옵션을 재정의합니다.

선택 옵션

-p,-기본

PRIMARY 선택에서 작동합니다 (기본값).

-s,-보조

2 차 선택에서 작동합니다.

-b,-클립 보드

CLIPBOARD 선택에서 작동합니다.

그리고 그것은 당신이 알아야 할 모든 것입니다. p(또는 아무것도) for PRIMARY, sfor SECONDARY, bfor CLIPBOARD, ooutput.

예 : fooTTY 의 출력을 복사하여 버그 보고서를 위해 웹 페이지에 붙여 넣고 싶다고 가정 해보십시오. 이렇게하려면 TTY / X 세션에서 복사하거나 TTY / X 세션에서 복사하는 것이 이상적입니다. 질문은 TTY에서 클립 보드에 어떻게 액세스합니까?

이 예에서는 X 세션이 표시되어 있다고 가정합니다 :1.

$ foo -v
Error: not a real TTY
details:
blah blah @ 0x0000000040abeaf4
blah blah @ 0x0000000040abeaf8
blah blah @ 0x0000000040abeafc
blah blah @ 0x0000000040abeb00
...
$ foo -v | DISPLAY=:1 xsel -b # copies it into clipboard of display :1

그럼 난 할 수있어 Ctrl-V 평소대로 양식에 넣을 .

이제 지원 사이트의 누군가가 문제를 해결하기 위해 실행하라는 명령을 내린다고 가정하십시오. 복잡하고 길다.

$ DISPLAY=:1 xsel -bo
sudo foo --update --clear-cache --source-list="http://foo-software.com/repository/foo/debian/ubuntu/xenial/164914519191464/sources.txt"
$ $(DISPLAY=:1 xsel -bo)
Password for braden:
UPDATING %%%%%%%%%%%%%%%%%%%%%%% 100.00%
Clearing cache...
Fetching sources...
Reticulating splines...
Watering trees...
Climbing mountains...
Looking advanced...
Done.
$ foo
Thank you for your order. A pizza should arrive at your house in the next 20 minutes. Your total is $6.99

피자 주문 은 명령 줄을 생산적으로 사용하는 것처럼 보입니다.

... 이동 중입니다.

정력

+clipboard(이것이 중요합니다! 확인하십시오 vim --version)로 컴파일 된 경우 , Vim은 X PRIMARYCLIPBOARD선택에 액세스 할 수 있어야합니다 . 두 가지 선택은 각각 *+레지스터 에서 액세스 할 수 있으며 여가 시간에 다른 레지스터와 동일하게 쓰고 읽을 수 있습니다. 예를 들면 다음과 같습니다.

:%y+    ; copy/yank (y) everything (%) into the CLIPBOARD selection (+)
"+p     ; select (") the CLIPBOARD selection (+) and paste/put it
ggVG"+y ; Alternative version of the first example

하지만 vim의 사본이 X 선택에 대한 액세스를 직접 지원하지 않는다면 세상의 끝이 아닙니다. xsel마지막 섹션에서 설명한대로 기술을 사용할 수 있습니다 .

:r ! xsel -bo ; read  (r) from the stdout of (!) `xsel -bo`
:w ! xsel -b  ; write (w) to the stdin of    (!) `xsel -b`

몇 가지 키 콤보를 묶으면 좋을 것입니다.


DISPLAY=비 X 환경에서 X 응용 프로그램을 호출 할 때는 항상 사용 하는 것이 좋습니다. X 앱은 DISPLAY어떤 서버 (또는 여러 세션을 처리하는 서버가 하나뿐입니까)를 파악하기 위해 환경 변수가 필요합니다 . 예를 들어 TTY에서 시도하십시오 DISPLAY=:1 firefox(또는 디스플레이 ID가 무엇이든간에 내 것이됩니다 :1).
Braden Best

나를 위해 내 환경에서의 선택 :%y+은 VIM이었습니다.
HankCa

2

이 스레드에는 gclip/ xclip/ xsel타사 소프트웨어를 설치할 필요가없는 옵션이 있습니다.

펄 스크립트 (펄은 항상 설치되기 때문에)

use Win32::Clipboard;
print Win32::Clipboard::GetText();

이것을 어떻게 사용합니까? 스크립트를 PATH에 저장하고 파이프로 연결 하시겠습니까? 공유 링크를 복사하기 위해 dropbox cli wrapper를 작성하려고하므로 텍스트를 처리하기 위해 필요합니다.
jena


2

pbcopy는 OSX에 내장되어 있습니다 :

.bash_profile의 내용을 복사 :

cat ~/.bash_profile | pbcopy

1

macOS에서는 pbpaste .

예를 들면 다음과 같습니다.

클립 보드 업데이트

pbpaste  | ruby -ne ' puts "\|" + $_.split( )[1..4].join("\|") ' | pbcopy

1

나처럼 루트 권한이없는 Linux 서버에서 실행하고 xclip 또는 GPM 이없는 경우 임시 파일을 사용 하여이 문제를 해결할 수 있습니다. 예를 들면 다음과 같습니다.

$ echo "Hello, World!" > ~/clip
$ echo `cat ~/clip`
Hello, World!

루트 권한 부족이 어떻게 영향을 미치는지 알 수 없습니다.
Braden Best

3
@BradenBest 루트 권한이 부족하면 설치할 수 없습니다.
horta

그러나 무엇을 설치 하시겠습니까? 엑스? 서버에서? 이상한 X 전달 서비스를 호스팅하지 않으면 왜 그렇게하고 싶을 지 알 수 없습니다.
Braden Best

@BradenBest 확실하지 않습니다. 어떤 프로그램이나 서비스라도 복사 붙여 넣기를 수행 할 수 있습니다.
horta

1
글쎄, 당신이 X selections( "클립 보드"와 xclip / xsel에 대한 언급으로 반드시 암시되어있는) 어떤 것을 사용 하고 있다면, 활성화 된 X 세션 (따라서 X 서버)이 필요합니다. 처음. 무슨 뜻인지 보려면 DISPLAY="" xsel로컬 컴퓨터에서 실행 해보 십시오. 오류가 발생하여 세션을 찾을 수 없으며 종료되며 ""X 선택과 상호 작용하지 않습니다. 그렇기 때문에 루트 권한이 루트에 영향을 미치는 방식을 알 수 없다고 처음에 말한 이유는 서버 환경에서 X 선택이 유용하지 않을 것입니다.
Braden Best


1

Wayland xcopy에서 작동하지 않는 것 같습니다 . 대신 wl-clipboard를 사용하십시오. 예를 들어 페도라

sudo dnf install wl-clipboard

tree | wl-copy

wl-paste > file


0

1 년이 지난 후에도 약간 다른 해결책을 공유합니다. 이것이 누군가에게 유용하기를 바랍니다.

어제 나는 "다른 사용자 세션간에 클립 보드를 공유하는 방법?" . ctrlaltF7-로 세션을 전환 할 때ctrlaltF8 실제로 복사 한 내용을 붙여 넣을 수 없습니다.

명명 된 파이프를 기반으로 다음과 같은 빠르고 더러운 솔루션을 생각해 냈습니다 . 확실히 맨손으로 생생하지만 기능적이라는 것을 알았습니다.

user1@host:~$ mkfifo /tmp/sharedClip

송신 터미널에서

user1@host:~$ cat > /tmp/sharedClip

마지막으로 수신 터미널에서 :

user2@host:~$ cat /tmp/sharedClip

이제 첫 번째 터미널에 무엇이든 입력하거나 붙여 넣습니다. return 다음 수신 터미널에 즉시 표시되어 원하는 위치에서 다시 복사 / 붙여 넣을 수 있습니다.

물론 이것은 user1의 클립 보드에서 컨텐츠를 엄격하게 가져 와서 user2의 클립 보드에서 사용할 수 있도록하는 것이 아니라 붙여 넣기 및 복사 클릭이 추가로 필요합니다.


너무 놀랍지 않은 것 같습니다. 두 개의 다른 X 서버 = 두 개의 다른 선택 세트. 그러나 를 통해 입력 / 출력을 수행하는 스크립트를 설정할 xsel/xclip 있습니다. 예를 들어, 한쪽 끝은 선택 항목이 변경되었는지 확인한 다음 이름이 지정된 FIFO를 통해 해당 파이프를 하나 이상의 파이프를 듣고있는 다른 스크립트에 자동으로 파이프하여 자신의 X 선택 영역에 삽입합니다. 따라서 텍스트를 복사하면 다른 X 세션에서 선택한 것과 동일한 텍스트가 자동으로 나타납니다. 그리고 잊지 마십시오 $DISPLAY.
Braden Best

0

루비 oneliner는 파이썬으로 시험해 보라고 영감을주었습니다.

4 개의 공백이있는 클립 보드의 내용을 들여 쓰는 명령을 원한다고 가정 해보십시오. stackoverflow에서 스 니펫을 공유하기에 적합합니다.

$ pbpaste | python -c "import sys
 for line in sys.stdin:
   print(f'    {line}')" | pbcopy

오타가 아닙니다. 파이썬은 for 루프를 수행하기 위해 줄 바꿈이 필요합니다. 메모리에 추가 배열을 작성하지 않도록 한 번에 행을 변경하려고합니다.

여분의 배열을 작성하는 것이 마음에 들지 않으면 다음을 시도하십시오.

$ pbpaste | python -c "import sys; print(''.join([f'    {l}' for l in sys.stdin]))" | pbcopy

그러나 정직하게 awk는 파이썬보다 낫습니다. 이 별칭을 ~/.bashrc파일 에 정의했습니다.

alias indent="pbpaste | awk '{print \"    \"\$0}' | pbcopy"

이제 indent클립 보드에있는 것을 실행하면 들여 쓰기가됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.