![유닉스 - 필터 명령](https://linux55.com/image/41770/%EC%9C%A0%EB%8B%89%EC%8A%A4%20-%20%ED%95%84%ED%84%B0%20%EB%AA%85%EB%A0%B9.png)
Unix에서 사용할 수 있는 "필터 명령"에 대해 알고 싶습니다. 나는 이것에 대해 혼란스러워합니다 :
- "필터 명령"의 목적은 무엇입니까?
- Unix에서는 어떤 필터링 명령을 사용할 수 있나요?
나는 온라인에서 일부 책/기사를 읽었으며 일부 책에서는 필터 명령을 찾았고 일부 책에서는 다른 명령을 찾았습니다.
답변1
문맥이 없어 질문하신 내용이 무엇인지 잘 모르겠습니다. "전통적인" Unix 도구는 표준 입력에서 읽고 표준 출력에 기록하므로 파이프(즉, | 명령)를 사용하여 함께 연결할 수 있습니다.
ls | grep "banana" | more
표준 입력에서 읽고 표준 출력에 쓰는 것은 필터입니다.
다음은 기사입니다.http://en.wikipedia.org/wiki/Filter_(유닉스)
답변2
실제로 필터 명령은 UNIX의 거의 모든 명령줄 프로그램입니다.
STDIN
읽고 출력 할 수 있는 모든 프로그램은 STDOUT
필터로 사용될 수 있습니다.
그러나 예외가 있습니다. 한 가지 예외는 출력 시 아카이브를 생성하기 cpio
위해 파일 목록을 얻는다는 것 입니다.STDIN
읽을 수 없는 것처럼 보이는 일부 명령이 있지만 이러한 명령이 읽기 또는 쓰기를 위한 파일 인수 STDIN
로 사용되는지 확인해야 합니다 . 예를 들면 다음과 같습니다 .-
STDIN
STDOUT
cat
$ cat f - g
f의 내용을 인쇄한 다음 표준 입력, g의 내용을 인쇄합니다.
하지만 프로그램에서 이를 사용하지 않더라도 다음을 수행할 수 있습니다.아직프로그램이 필터 역할을 하도록 강제하는 것이 일반적입니다.
예를 들어 wget
, 프로그램이 다음으로 출력되기를 원합니다 STDOUT
.
$ wget -O /dev/stdout http://stackoverflow.com/ | less
즉:/dev/stdin
, /dev/stdout
및 /dev/stderr
를 파일로 사용하여 프로그램이 표준 IO 설명자를 읽거나 출력하도록 할 수 있습니다 .
또 다른 참고 사항: 파이프는 임의로 길 수 있으므로 한 프로그램에서 다른 프로그램으로 파이프하여 기본적으로 긴 필터 목록을 만들 수 있습니다.
$ cat file | xz | ccrypt &>/dev/null