programing

Bash 스크립트의 클립보드에 연결/연결

codeshow 2023. 4. 12. 22:42
반응형

Bash 스크립트의 클립보드에 연결/연결

Bash에서 클립보드에 파이프로 연결하거나 클립보드에서 파이프로 연결할 수 있습니까?

디바이스 핸들에 접속하거나 보조 어플리케이션을 사용해도 아무것도 찾을 수 없습니다.

를 들어, 「」의 ,/dev/clip클립보드에 링크할 수 있는 장치였습니다.

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

당신이 다룰 수 있는 클립보드가 많이 있습니다.X Windows의 프라이머리 클립보드에 내용을 넣고 싶은 Linux 사용자일 것입니다.일반적으로 대화하려는 클립보드에는 대화할 수 있는 유틸리티가 있습니다.

X가 가 있습니다xclip( 타타)타 )xclip -selection c는 대부분의 응용 프로그램에서 + , + 와 함께 작동하는 클립보드로 데이터를 전송합니다.

X를 경우 OS X가 있습니다pbcopy를 들어, . . . . . .cat example.txt | pbcopy

모드없음)의는, 를 참조해 주세요.gpm또는 클립보드가 있는 화면.Screen 명령어 실행readreg.

10+ 10+ "Cygwin" 을 사용합니다./dev/clipboard ★★★★★★★★★★★★★★★★★」clip.

하시기 바랍니다.alias xclip="xclip -selection c"그렇지 않으면 +v를 사용하여 붙여넣을 수 없습니다.

" " 후: " "echo -n test | xclip,v + 가 붙여넣습니다.test

설치하다

# 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"

변경 사항을 적용하려면 단말기를 다시 시작하여 Fish 인스턴스를 다시 시작해야 합니다.

사용.

해서 '어울리지 않다'를 할 수 되었습니다.setclip ★★★★★★★★★★★★★★★★★」getclip 예: 개요:

$ echo foo | setclip
$ getclip
foo

macOS 에서는, 빌트인 및 커맨드를 사용합니다.

예를 들어, 실행한 경우

cat ~/.bashrc | pbcopy

~/.bashrc파일을 + 바로 가기를 사용하여 붙여넣을 수 있습니다.

현재 클립보드를 파일에 저장하려면 출력을 파일로 리디렉션합니다.

pbpaste > my_clipboard.txt

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

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

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

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

# show clipboard
xsel -ob

# Get more info:
man xsel

설치하다

sudo apt-get install xsel

해라

xclip

xclip - command line interface to X selections (clipboard) 

남자

WSL(Windows Subsystem for Linux)에서는 클립보드에 복사할 수 있습니다.실행:

cat file | clip.exe

하세요.| commandpipe 를 합니다....>명령어를 사용합니다.

xcopy 유틸리티를 설치하고 터미널에서 다음을 입력합니다.

알았다.

Thing_you_want_to_copy | xclip -selection c

붙여넣기

myvariable=$(xclip -selection clipboard -o)

pbcopypbcopy를 추천하는 답변이 많이 있었습니다.이러한 유틸리티를 사용하지만 저장소에서 사용할 수 없는 경우에는 언제든지 xcopy 명령어에 대한 별칭을 만들고 pbpaste 및 pbcopy라고 부를 수 있습니다.

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

그러면 다음과 같이 됩니다.

Thing_you_want_to_copy | pbcopy
myvariable=$(pbpaste)

저는 더그라는 사용자가 쓴 댓글 중 하나에 있는 답변이 좋습니다.저는 그것이 매우 도움이 된다는 것을 알았기 때문에, 답변으로 다시 말하기로 했습니다.

다음은 여러 플랫폼에서 작동하는 클립보드를 읽기 위한 즉시 사용할 수 있는 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 the 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

Mac 전용:

echo "Hello World" | pbcopy
pbpaste

은 ★★★★★★★★★★★★★★★★★★./usr/bin/pbcopy ★★★★★★★★★★★★★★★★★」/usr/bin/pbpaste.

Linux에는 다른 클립보드가 있습니다.X 서버에는 클립보드가 있고 윈도 매니저에는 클립보드가 있을 수 있습니다.표준 디바이스는 없습니다.

네, CLI에서는 화면 프로그램에도 자체 클립보드가 있고 Emacs나 vi 같은 다른 응용 프로그램도 있습니다.

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

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

탑재)에서는 Windows(Cygwin 재재에에)를 사용해 보세요.cat /dev/clipboard ★★★★★★★★★★★★★★★★★」echo "foo" > /dev/clipboard이 기사에서 언급한 바와 같이

좋은 참고 자료를 찾았습니다.xclip을 사용하여 여러 선택 항목을 대상으로 하는 방법

붙여져 있는지 에, 이 클립보드에 붙여져 있는 것도 하고 .tee이치노

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

>()는 프로세스 치환의 한 형태입니다.Bash는 각 파일을 괄호 안에 있는 프로그램의 표준 입력에 연결된 파일 기술자의 경로로 대체합니다.

tee명령어를 forks하면 명령어를 "콘텐츠 파이프 연결"하여 표준 출력 "stdout"에서 결과를 볼 수 있습니다.

또한 클립보드에 가져와 쓸 별칭을 만들 수 있으므로 Mac에서처럼 "pbcopy" 및 "pbpaste"를 사용할 수 있습니다.저 같은 경우에는 Z 쉘을 사용하기 때문에 (zsh에일리어스 파일에는 다음과 같은 것이 있습니다.

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

(( $+command[name] ))Z셸에서는 두 에일리어스가 모두 "name"으로됩니다.{} . 。&&바이너리 AND 입니다.a가 b일 경우 xclip이 있으면 에일리어스가 설정됩니다.

echo "another test" | tee >(pbcopy)

클립보드 내용을 가져오려면 다음과 같이 입력하십시오.

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

이것은 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 |
                ||     ||

혼자서 실행하면 클립보드에 있는 내용이 출력됩니다.

방금 KDE 환경에서 동일한 내용을 검색했습니다.

롭게 하세요.clipcopy ★★★★★★★★★★★★★★★★★」clippaste.

KDE:

> echo "TEST CLIP FROM TERMINAL" | clipcopy
> clippaste
TEST CLIP FROM TERMINAL
  xsel -b

X Window에 대한 작업을 수행하며 대부분 이미 설치되어 있습니다.xsel의 man 페이지를 보는 것은 노력할 가치가 있다.

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(+! 대신 사용 가능)과 putclip(에코오에우오아 | 풋클립)도 있습니다.exe를 클립에 삽입)할 수 있습니다.

Linux 에서는 다음과 같이 동작합니다.

cat filename | xclip

pbcopy는 OS X에 포함되어 있습니다.

.bash_profile 파일의 내용 복사:

cat ~/.bash_profile | pbcopy

몇 가지 방법이 있습니다.지금까지 설명한 방법으로는 (내 생각에) tmux, Screen, Vim, Emacs 및 셸이 있습니다.저는 Emacs나 Screen을 모르기 때문에 나머지 세 가지를 검토해 보겠습니다.

Tmux

X X를 통해 액세스할 수 있는 .prefix-[ )prefix디폴트로는 + 입니다).이 모드에 사용되는 버퍼는 tmux와는 별도로 사용되기 때문에 많은 가능성이 열려 있으며 적절한 상황에서 X 선택보다 범용성이 높아집니다.

이 모드를 종료하려면 를 눌러 탐색합니다. Vim 또는 Emacs 바인딩(기본값 = Vim)을 사용합니다.hjkl 무브먼트, 무브먼트, 무브먼트용,v/V/C-v문자/행/블록 선택 등선택사항이 있으면 을 눌러 복사하고 모드를 종료합니다.

, 「」를 사용합니다.prefix-].

껍데기

「」의 의 인스톨X11두 되어 있는 것 : seems seems기기음 seems seems음음음음음 by by by by by by by by by by by by by by by by by by by by by by 。xclip ★★★★★★★★★★★★★★★★★」xsel둘 다 처럼요.startx ★★★★★★★★★★★★★★★★★」xinit 외 의 답변은 )을 언급하고 xclip는 정말 xsel.xsel.

xsel(1x):

입력 옵션 \

-a, --contains \

표준 입력을 선택 항목에 추가합니다.-i를 의미합니다.

-f, --follow \

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

-i, --input \

선택 항목에 대한 표준 입력을 읽습니다.

출력 옵션 \

-o, --출력 \

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

액션 옵션 \

-c, --clear \

선택을 지웁니다.모든 입력 옵션을 덮어씁니다.

-d, --delete \

현재 선택 항목을 삭제하도록 요청합니다.이렇게 하면 선택이 클리어될 뿐만 아니라 선택한 내용이 있는 프로그램에 대해 삭제되도록 요구됩니다.모든 입력 옵션을 덮어씁니다.

선택 옵션 \

-p, --primary \

Primary 선택 항목(기본값)에서 작동합니다.

-s, --secondary \

보조 선택 항목에서 작동합니다.

-b, --contains \

클립보드 선택 항목에서 작동합니다.

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ p 아무것도)를 PRIMARY,s★★★★★★에SECONDARY,b★★★★★★에CLIPBOARD,o출력에 사용합니다.

:의 출력을 .fooTTY에서 웹 페이지에 붙여 버그를 보고합니다.이를 위해서는 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

그러면 평소와 같이 폼에 넣을 수 있습니다.

지원 사이트의 누군가가 문제를 해결하기 위해 실행 명령을 내렸다고 가정합니다.복잡하고 길다.

$ 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

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

...다음으로 넘어갑시다.

VIM

「」로 되어 있는 .+clipboard아!해 주세요.vim --version), X, Vim 에 액세스 할 수 합니다.PRIMARY ★★★★★★★★★★★★★★★★★」CLIPBOARD 가지 2개의 선택 항목에서 수 있습니다.* ★★★★★★★★★★★★★★★★★」+등록부는 다른 등록부와 마찬가지로 자유롭게 작성 및 열람할 수 있습니다.

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

:%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`

키 조합 몇 개를 묶으면 잘 할 수 있을 거예요.

웨이랜드에서는 xcopy가 작동하지 않는 것 같습니다.대신 wl-clipboard를 사용합니다.

예: Fedora의 경우:

sudo dnf install wl-clipboard

tree | wl-copy

wl-paste > file

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

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

소스 코드 cmd_clip.zip이 포함되어 있습니다.

어제 저는 "다른 사용자 세션 간에 클립보드를 공유하는 방법"이라는 질문을 받았습니다.+ + - + + 를 사용하여 세션을 전환할 때 복사한 내용을 붙여넣을 수 없습니다.

저는 명명된 파이프를 기반으로 다음과 같은 빠르고 더러운 해결책을 생각해냈습니다.확실히 날것이지만, 기능하고 있는 것을 알 수 있었습니다.

user1@host:~$ mkfifo /tmp/sharedClip

송신 단말기로 송신합니다.

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

수신 단말기의 마지막:

user2@host:~$ cat /tmp/sharedClip

여기서 첫 번째 단말기에 원하는 것을 입력 또는 붙여넣으면 (키를 누른 후) 수신 단말기에 바로 나타나 원하는 위치에 복사 및 붙여넣기를 다시 수행할 수 있습니다.

물론 user1의 클립보드에서 콘텐츠를 엄밀하게 가져와 user2의 클립보드에서 사용할 수 있게 하는 것은 물론 붙여넣기 및 복사 클릭을 한 쌍 더 필요로 합니다.

에서는, 할 가 없는 .gclip/xclip/xsel서드파티제 소프트웨어

Perl 스크립트(통상은 Perl이 항상 설치되어 있기 때문에)

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

Ruby oneliner는 Python을 사용해 볼 수 있도록 영감을 주었습니다.

클립보드에 공백이 4개 있는 명령어가 필요하다고 가정해 보겠습니다.Stack Overflow 상의 스니펫 공유에 매우 적합합니다.

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

오타가 아니에요.Python은 for 루프를 하기 위해 새로운 행이 필요합니다.메모리 내 추가 배열을 방지하기 위해 한 패스로 라인을 변경하고자 합니다.

추가 어레이를 구축해도 괜찮다면 다음을 시도해 보십시오.

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

은 제가 쓰던 가명으로 했습니다.~/.bashrc

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

시 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」indent클립보드에 있는 내용은 모두 들여쓰기되어 있습니다.

macOS 를 합니다.pbpaste.

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

클립보드 업데이트

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

하지 않고 에 붙여넣는 (「 」 「 」 「 」 「 」 「 」 「 」 「 」 「 」 。echo.

  1. 이스케이프: .''\''이치노
  2. 「」라고 입력합니다.echo -n '
  3. + 를 누릅니다.
  4. 「」라고 입력합니다.' > filename.txt
  5. 누르다

기본적으로 다음과 같은 작업을 수행합니다.

echo -n 'copied "text" with '\''single quotes'\'' escaped' > filename.txt

복사된 텍스트에 새 줄이 있더라도 작동합니다.

mac의 경우 다음과 같은 기능을 사용할 수 있습니다.pbcopy ★★★★★★★★★★★★★★★★★」pbpaste쉬워요: ,, 조, 조, 조, 조, 단, 단, 단, 단이다.

도 이걸 더해서 쓰세요..bashrc ★★★★★★★★★★★★★★★★★」.zshrc:

clp() {
  if [[ -z "$1" ]]
  then
    # No input - act as paste
    pbpaste;
  else
    # Input exists - act as copy
    echo "$1" | pbcopy;
  fi
}

하려면 , 「」를 사용합니다.clp "Content" , 「붙여 주세요」를 합니다.clp

저와 마찬가지로 루트 권한이 없는 Linux 서버에서 실행 이고 xclip 또는 GPM이 없는 경우 임시 파일만 사용하여 이 문제를 해결할 수 있습니다.예를 들어 다음과 같습니다.

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

언급URL : https://stackoverflow.com/questions/749544/pipe-to-from-the-clipboard-in-a-bash-script

반응형