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 *