mplayer에 대한 인수로 파일 이름 목록 => mplayer가 파일 이름을 인식할 수 없습니다.

mplayer에 대한 인수로 파일 이름 목록 => mplayer가 파일 이름을 인식할 수 없습니다.

mplayer일부 음악 파일을 무작위로 재생 하고 싶습니다 . 나는 이것을 위해 플레이어를 바꾸고 싶지 않습니다. 여기서 무엇이 잘못되었는지 이해하고 싶습니다.

ThePandaTooth $ ls
file_1.ogg
file_2.ogg
file_3.ogg

결과 출력은 ls | sort -R파일 이름의 무작위 출력이라는 것을 알고 있습니다. 하지만 이상한 이유로 파일을 찾을 수 없기 때문에 재생할 수 없습니다. 여기서는 주문이 중요하지 않습니다.

ThePandaTooth $ mplayer $(ls | sort -R)
Playing file_1.ogg.
Cannot open file 'file_1.ogg': No such file or directory
Failed to open file_1.ogg

Playing file_2.ogg.
Cannot open file 'file_2.ogg': No such file or directory
Failed to open file_2.ogg

편집하다mplayer *: 물론 작품을 이용해 파일을 재생할 수도 있습니다.

답변1

문제는 *rc다음 파일 중 하나에 별칭이 정의되어 있을 가능성이 높습니다.

alias ls='ls --color=always'

이 경우 색상 코드는 파이프라인에 유지되며 mplayer파일 이름은 이러한 코드로 둘러싸여 있습니다. 명령 대체의 출력을 파이프하여 실제로 수신된 내용을 확인할 $()수 있습니다 .printfmplayer

printf '%q\n' $(ls | sort -R)

당신은 다음과 같은 것을 보게 될 것입니다

$'\E[01;35mFile_1.ogg\E[0m'
$'\E[01;35mFile_2.ogg\E[0m'
$'\E[01;35mFile_3.ogg\E[0m'

분명히 mplayer"해당 파일 또는 디렉터리 없음"을 올바르게 보고하고 이스케이프 코드를 포함하여 문제의 전체 파일 이름을 인쇄하지만 다시 쉘은 이러한 코드를 색상으로 해석하므로 혼동될 수 있는 출력에서만 볼 수 있습니다.

파일 이름을 올바르게 전달하려면 별칭이 사용되지 않고 기본 명령이 사용 되도록 새 셸을 실행 \ls하거나 시작하세요.command lsbash -fbash

$ printf '%q\n' $(\ls | sort -R)
File_1.ogg
File_2.ogg
File_3.ogg

답변2

나는 정말로 당신이 여기에 관여해서는 안 된다고 생각하며 ls, sort여기에 전혀 관여해서는 안 된다고 생각합니다. 파일을 무작위 순서로 재생하려면 다음 -shuffle옵션을 사용하십시오.

mplayer -shuffle *

관련 정보