나는 이것을 시도한다:
#!/usr/bin/env sh
name="video.mp4"
ffmpeg -i "$name" -acodec copy output.mp4 | mate-terminal
새로 오픈한 터미널에서 결과를 보고 싶은데 당연히 그렇게 되지는 않겠죠.
답변1
이것이 필요한 것입니다:
mate-terminal -e "bash -c \"ffmpeg -i $name -acodec copy output.mp4;read -p'Press Enter to quit'\""
설명하다: 우리가 원하는 것은 두 개의 명령(그리고 다른 명령도 가능)을 실행하는 것입니다.
ffmpeg -i $name -acodec copy output.mp4
read -p'Press Enter to quit'
그것들을 서로 연결함으로써배쉬-c
bash -c "ffmpeg -i $name -acodec copy output.mp4;read -p'Press Enter to quit'"
이를 메이트 터미널의 맥락에 넣으려면 두 개의 큰따옴표를 모두 이스케이프 처리해야 합니다.
bash -c \"ffmpeg -i $name -acodec copy output.mp4;read -p'Press Enter to quit'\"
컴패니언 터미널-e다음과 같은 경우 하나의 인수를 허용합니다.
mate-terminal -e "bash -c \"ffmpeg -i $name -acodec copy output.mp4;read -p'Press Enter to quit'\""
답변2
확실히 터미널 세션은 셸과 정확히 동일하지 않습니다. 쉘은 명령 해석기이며 터미널 세션은 쉘 [명령 해석기]을 실행하는 새로운 가상 터미널을 엽니다. 터미널 창을 출력을 보고 잠재적으로 셸과 상호 작용할 수 있는 셸 주위의 선택적 래퍼로 생각할 수도 있습니다. 이 창은 일반적으로 실행 중인 셸이 종료되면 닫힙니다.
이 경우에는인터렉티브명령을 실행한 다음 프롬프트로 돌아가서 새 명령을 내릴 수 있는 쉘입니다. ~을 위한스프린트-i
, 사용할 매개변수 가 됩니다 .
또는 터미널 에뮬레이터에 다음을 유지하도록 요청할 수 있습니다.창문쉘이 명령 실행을 완료하고 종료된 경우에도 열립니다(상호작용이 없기 때문). 예를 들어, 창을 열어 두는 옵션을 사용하십시오 xterm
.-hold
따라서 xterm 예제를 사용하여 이 기능을 적용하려면 다음 명령이 필요합니다.
xterm -hold -e ffmpeg -i "$name" -acodec copy output.mp4
이 매개변수 -e
는 마지막 매개변수여야 합니다 xterm
.