tee
파이프 표준 입력을 표준 출력으로 리디렉션할 수 있습니다.그리고문서.
echo Hello, World! | tee greeting.txt
위 명령은 터미널 화면에 인사말을 표시하고 파일 내용에 저장 greeting.txt
하거나, 해당 이름의 파일이 없으면 파일을 생성합니다.
덮어쓰는 대신 기존 파일에 추가하는 -a
스위치 도 있습니다 .tee
파이프된 입력을 명령으로 리디렉션하고표준 출력파일 대신?
래퍼 스크립트를 만들려고 합니다.buku
색인 번호로 지정된 북마크의 URL을 기본 선택 항목에 복사합니다.
# bukuc:
#!/bin/sh
url=$(buku -f 1 -p $1 | cut -f 2) # NUMBER : URL
echo $url # DISPLAY
echo $url | xsel # PRIMARY SELECTION
여기서 나는 사용한다echo
둘먼저 터미널에 표시된 다음 기본 선택 항목(클립보드)에 저장됩니다.
나는 다음 명령(연결된 명령)을 전달하기 전에 출력을 표시하는 무언가 또는 바로가기를 상상합니다. echo $url | teeC xsel
이를 통해 결과를 저장할 필요 없이 한 줄에 전체 명령을 연결할 수 있습니다.바꾸다다음과 같이:
buku -f 1 -p $1 | cut -f 2 | teeC xsel
나도 쓸 수 있어urlview
다음 명령을 사용하여 보기, 선택 및 열기 $BROWSER
:
bukuc 10-20 | urlview
답변1
지원되는 쉘에서는 간단합니다.프로세스 교체, 예를 들어 배쉬
$ echo foo | tee >(xsel)
foo
$ xsel -o
foo
그렇지 않으면 FIFO를 사용할 수 있습니다(편의성은 부족하지만).
$ mkfifo _myfifo
$ xsel < _myfifo &
$ echo bar | tee _myfifo
bar
$ xsel -o
bar
[1] + Done xsel 0<_myfifo
$
답변2
"명령용 티"와 직접적인 유사점은 다음과 같습니다.pee
moreutils의 명령( tee
, 그러나 파이프 포함). 해당 인수는 경로가 아닌 실행 명령으로 사용되며 입력이 파일에 기록되지 않고 파이프로 전달됩니다. 모든 명령은 pee
자체 표준 입력 으로 파이프됩니다 .
를 사용하면 실행하고 입력을 입력하도록 지시하여 pee
원하는 결과를 얻을 수 있습니다.xsel
cat
echo foo | pee xsel cat
출력을 수행하기 위한 추가 cat
프로세스가 있는 것은 사용 사례에서는 실제로 문제가 되지 않지만 다른 경우에는 이상적이지 않을 수 있습니다. 프로세스 교체와 달리 이는 모든 셸에서 작동하지만 물론 추가(아마도 덜 일반적인) 도구를 설치해야 합니다.
다음과 같이 인용하면 더 복잡한 명령을 내릴 수 있습니다 pee "xsel --display :1" cat
. 이는 쉘 메타문자를 사용하여 실행되므로 sh
주의해야 합니다.