오디오 파일 (OGG vorbis)을 쉘 스크립트에 추가하여 스크립트를 가능한 한 작게 만들고 동시에 가능한 한 대부분의 시스템에서 실행할 수 있습니까? 오디오 파일을 재생하고 싶습니다.
uuencode
sharutils는 많은 시스템에 설치되어 있지 않기 때문에 d 가되는 것을 원하지 않습니다. base64는 좋지만 파일 / 스크립트를 더 크게 만듭니다.
mplayer
또는 play
sox 패키지 의 명령을 사용해야 합니까? Linux / BSD 시스템에서 더 일반적입니까? 아니면 주로 설치된 다른 미디어 플레이어가 있습니까? 더 많은 플레이어가 파일을 재생할 수 있도록 오디오 파일을 다른 형식 / 코덱으로 변환해야합니까 (파일이 훨씬 커지지 않는 경우) 아니면 OGG vorbis가 좋은 선택입니까?
다음 스크립트를 사용하면 작동합니다 ( mplayer
많은 시스템에없는을 사용).
#!/bin/sh
grep -A 1000 --text -m 1 ^Ogg "$0" | mplayer -
exit
OggS^@^B^@^@^@^@^@^@^@^@^]f<8a>g^@^@^@^@lY߸^A^^^Avorbis^@^@^@^@^A"V^@^@^...
마지막 줄은 오디오 파일 바이너리의 시작입니다.
이 grep
명령 은 파일 (스크립트 파일 자체) 에서 Ogg 의 첫 번째 항목을 검색하고 해당 $0
줄 뒤에 1000 줄을 인쇄합니다 (내 작은 오디오 테스트 파일에 충분 함). 의 출력 은 읽고있는 grep
파이프로 연결됩니다 (의 약어 is ).mplayer
/dev/stdin
/dev/stdin
-
스크립트 파일 playmeBashScript.sh
을 오디오 파일과 연결하여이 파일을 만들었습니다 sound.ogg
.
cat playmeBashScript.sh sound.ogg > playme.sh
(Elias 덕분에) sed
대신에 더 일반적이고 조금 더 짧은 버전 grep
:
#!/bin/sh
sed 1,/^exit$/d "$0" | mplayer -
exit
OggS^@^B^@^@^@^@^@^@^@^@^]f<8a>g^@^@^@^@lY߸^A^^^Avorbis^@^@^@^@^A"V^@^@^...
이 경우 첫 sed
번째에서 exit 단어를 찾은 줄까지 모든 줄을 선택 하고 삭제합니다. 나머지는 붙여넣고에 파이프됩니다 mplayer
. 물론 이진 데이터 이전에 스크립트에서 exit 단어 가 한 번만 발생 하는 경우에만 작동합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다