생성된 파일을 한 명령에서 다른 명령으로 보내는 방법을 찾고 있으므로 그 사이에 디스크에 복사본을 저장할 필요가 없습니다. 예를 들어, rar
디스크에 ed 파일이 있고 이를 열고 싶다면 다음과 같은 명령을 실행할 수 있기를 원합니다.
unrar x file.rar | kplayer
unrar x file.rar | gpg -c
gpg file.gpg | kplayer
나는 당신이 내가 무엇을 찾고 있는지 이해한다고 확신합니다. unrar
stdout으로 보내 려고 하는데 kplayer에 연결 -p
해야 할 것 같은데 화면에만 보냅니다 . |
제 생각에는 kplayer가 표준 입력에서 데이터를 가져올 수 없기 때문인 것 같습니다.
하지만 파일을 디스크에 저장하지 않고 다른 곳으로 전달할 수 있는 방법이 있습니까? 이것이 메모리에 파일시스템을 만들어서 사용할 수 있는 가장 좋은 방법이지만, 그렇게 많은 메모리를 유지한다는 생각은 마음에 들지 않습니다.
답변1
많은 명령에는 쓰기 옵션이 있습니다 STDOUT
. 예를 들어 Unrar에는 이 p
옵션이 있습니다. 많은 명령에는 -
결합하여 읽을 수 있는 옵션이 있습니다 STDIN
. 따라서 제공한 첫 번째 예는 다음과 같이 다시 작성할 수 있습니다.
unrar px file.rar | kplayer -
기본적으로 GPG는 이미 파이프 입력으로 작동합니다.
unrar px file.rar | gpg -c
명령의 도움말 및/또는 매뉴얼/정보 페이지가 결과 전송을 지원하는지 확인하십시오 STDOUT
(많은 명령이 기본적으로 이를 수행함).
답변2
명령에 파일 이름만 필요한 경우 /dev/stdin
또는 를 지정하십시오 /dev/fd/0
. 이는 특수 파일입니다. 이를 열면 실제로 표준 입력이 복사됩니다. 일부 명령은 -
표준 입력에 대한 별칭도 허용합니다.
unrar p foo.rar somefile | somecommand -
unrar p foo.rar somefile | somecommand /dev/stdin
때때로 프로그램은 파일 이름에 제한을 두며 종종 특정 확장자를 요구합니다. 심볼릭 링크로 속일 수도 있습니다.
ln -s /dev/stdin myfile.ext
unrar p foo.rar somefile | somecommand myfile.ext
일부 프로그램은 파이프 입력을 처리할 수 없기 때문에 이것이 항상 작동하는 것은 아닙니다. 검색 가능한 파일, 즉 마음대로 앞뒤로 이동할 수 있는 파일이 필요합니다. 이 경우 임시 파일을 생성해야 합니다.
경우에 따라 명령 출력이 아닌 일반 파일로 표시되도록 데이터를 정렬할 수 있습니다.퓨즈특히 다양한 컨텐츠를 일반 파일로 보이게 하는 것이 가능합니다. 예를 들어,AVFS, 아카이브 멤버는 파일로 표시됩니다.
mountavfs
cd "~/.avfs$PWD/foo.rar\#"
somecommand somefile
답변3
답변4
모든 사람의 의견에 감사드립니다. 제가 원하는 것을 쉽게 얻을 수 있는 방법은 없는 것 같습니다. ;(
다음 명령은 /dev/shm을 실행하고 사용해야 하므로 멋진 스크립트를 작성해야 합니다 :)
cp file.gpg /dev/shm && gpg -c file.gpg && rm file.gpg && kplayer file && rm file