나는 tty에서 수행하는 다른 명령과 함께 포티지 명령의 출력을 작성할 수 있기를 원합니다(즉, Ctrl+ Alt+ 로 시작하는 화면 전체 터미널 , 여기서 n은 1에서 6 사이의 정수를 나타냅니다. 이 터미널은 다음과 같습니다). 내가 아는 한, 클립보드가 없는 곳에서는 텍스트 파일로 명령을 사용하기 시작했습니다 . 이제 나는 다음을 읽었습니다.Fngetty
우분투 포럼적절하게 사용된다면 Unix 명령이 cat
이를 수행할 수도 있을 것입니다. 불행하게도 제안된 명령을 따르면 emerge
명령의 전체 출력이 텍스트 파일에 추가되지 않는 것 같습니다 . 내가 실행한 내용을 참조하세요.
emerge dev-qt/qtwayland > cat >> /home/fusion809/output.txt
여기서 fusion809는 내 사용자 이름이고, output.txt에 다음과 같은 4줄의 출력만 썼습니다.
Calculating dependencies ....... .. ....... done!
[ebuild R ] media-libs/mesa-11.0.4 USE="-wayland*" ABI_X86="32*"
[ebuild R ] dev-qt/qtgui-5.5.1 USE="-egl* -evdev* -ibus*"
[ebuild R ] dev-qt/qtwayland-5.5.1 USE="-egl*"
나는 또한 다음을 시도했습니다.
emerge dev-qt/qtwayland > /home/fusion809/output.txt
그리고:
emerge dev-qt/qtwayland >> /home/fusion809/output.txt
둘 다 동일한 출력을 output.txt에 썼습니다.
답변1
당신은 올바른 길을 가고 있습니다. Unix/Linux에는 오류 스트림도 있습니다. 모든 명령은 표준 입력, 표준 출력 및 표준 오류를 얻습니다.
당신은 표준 출력으로 작업해왔습니다. 명령에서 표준 오류 스트림도 캡처하려면 2>
. 예를 들어:
emerge dev-qt/qtwayland > emerge.out 2> emerge.err
이제 표준 출력을 원한다면그리고에 들어가는 오류같은파일을 사용하여 2>&1
표준 오류 출력을 표준 출력과 동일한 위치로 보내도록 쉘에 지시합니다.
emerge dev-qt/qtwayland > emerge.out 2>&1
또한, 더 자세한 내용을 참조하고 배우려면 쉘 매뉴얼 페이지에서 언제든지 찾아볼 수 있습니다 man sh
.
유익하고 깊이 생각한 질문을 보내주셔서 감사합니다!
답변2
거기는 필요하지 않습니다
> cat
. 실제로 이는cat
현재 디렉토리에 호출되는 또 다른 파일을 생성하는 것입니다. 를 입력하려고 했다면| cat
불필요한 일이므로 cat을 통해 파이프하지 않고도 출력을 리디렉션할 수 있습니다.emerge dev-qt/qtwayland > /home/fusion809/output.txt
절약할 것이다모두emerge
명령 의 stdout 출력을/home/fusion809/output.txt
. 그것의 모든. 파일에 4줄만 있으면emerge
stdout에 4줄만 인쇄되었기 때문입니다.discover 에 더 많은 내용을 인쇄했을 수도 있습니다
stderr
. 그것도 캡처하고 싶다면 를 시도해 보세요emerge dev-qt/qtwayland >& /home/fusion809/output.txt
. 그러면 stdout과 stderr이 모두 동일한 파일로 리디렉션됩니다.>
와 차이점>>
은>
파일을 만들기 전에 파일이 있으면 지우고,>>
이미 있으면 파일에 추가하고, 없으면 파일을 만드는 것입니다(셸 옵션에 따라 다름).출력을 파일로 캡처하려는 경우그리고동시에 화면에서 확인하려면 를 사용하세요
tee
. 예를 들어:
emerge dev-qt/qtwayland |& tee -a /home/fusion809/output.txt
tee
의 -a
옵션은 지우고 덮어쓰는 대신 추가하도록 지시합니다.