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
파일 이름은 이러한 코드로 둘러싸여 있습니다. 명령 대체의 출력을 파이프하여 실제로 수신된 내용을 확인할 $()
수 있습니다 .printf
mplayer
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 ls
bash -f
bash
$ printf '%q\n' $(\ls | sort -R)
File_1.ogg
File_2.ogg
File_3.ogg
답변2
나는 정말로 당신이 여기에 관여해서는 안 된다고 생각하며 ls
, sort
여기에 전혀 관여해서는 안 된다고 생각합니다. 파일을 무작위 순서로 재생하려면 다음 -shuffle
옵션을 사용하십시오.
mplayer -shuffle *