파이프 명령, stdin 수정 및 stdout에 쓰기

파이프 명령, stdin 수정 및 stdout에 쓰기
echo Hello World | nano - | less

텍스트 편집기에서 Hello -> Goodbye를 수정하고 싶습니다.

Nano와 함께 사용할 필요는 없습니다. Nano가 stdin을 읽는 중인데 파일에 쓰라고 요청하는 중입니다(쓰기 - -라는 파일 생성).

답변1

이것더 많은 유틸리티vipe맨 페이지에는 package 라는 훌륭한 명령이 있습니다 .

SYNOPSIS
       command1 | vipe | command2

DESCRIPTION
       vipe allows you to run your editor in the middle of a unix pipeline and
       edit the data that is being piped between programs. Your editor will have
       the full data being piped from command1 loaded into it, and when you close
       it, that data will be piped into command2.

기본적으로 이 명령은 editor일반적으로 기본 명령줄 편집기에 대한 심볼릭 링크인 명령을 사용합니다. 링크를 변경( update-alternativesDebian 기반 시스템의 경우)하거나 EDITOR환경 변수를 사용하여 이 설정을 변경할 수 있습니다. 예를 들어 다음과 같이 할 수 있습니다.

echo Hello World | EDITOR=nano vipe | less

그렇지 않고, 특정 텍스트 편집기가 그러한 기능을 지원하지 않는다면 수동으로 임시 파일을 생성하고, 거기에 파일을 쓰고, 편집기를 실행하고, 나머지 파이프라인에 파일을 공급한 다음, 임시 파일을 삭제하세요. 이 vipe명령은 기본적으로 모든 것을 처리합니다. 괜찮지만 기본적으로 명령을 거의 사용할 수 없습니다.

답변2

"Hello"를 "Goodbye"(또는 다른 단어 대체)로 바꾸려면 편집기에서 수동으로 편집하지 않고 자동 검색 및 바꾸기 도구를 사용할 수 있습니다. 예를 들어 "sed"는 다음과 같이 바꿀 수 있습니다.

echo Hello World | sed 's/Hello/Goodbye/' | less

자세한 내용은 "man sed"를 확인하세요.

답변3

텍스트 편집기 조(일명조의 편집자) 하고 싶은 대로 하세요.

명령은 echo "hello world" | joe - | less예상대로 실행되지만 어떤 이유로 따옴표가 필요합니다.

gpg와 같은 일부 명령은 파이프로 들어가지 않는 디스플레이 출력을 생성합니다. 이렇게 하면 joe 내부의 초기 디스플레이가 파괴되지만제어 키+아르 자형--refresh-- 모든 내용을 정리합니다.

관련 정보