Estou no Arch Linux e tentando gravar áudio enquanto ele toca no meu computador usando ffmpeg
e armazená-lo como um .flac
arquivo. Eu invoco o seguinte comando:
ffmpeg -f pulse -i default -c:a flac -compression_level 8 "~/path/to/target/directory/myRecording.flac"
Em que ponto eu recebo um Error opening output
. Ele então lista o nome do arquivo de destino acima, seguido por No such file or directory
. Eu verifiquei que o diretório de destino existe. Eu tentei usar diferentes fontes identificadas via pactl
, mas nada muda o erro, embora o diretório no qual eu quero escrever exista.
Shells comumente usados em Linux/Unix substituem o til (
~
) pelo valor daHOME
variável shell, mas somente se o til não estiver entre aspas e sem escape.Toda a mecânica é mais complicada, com sintaxe suportada como
~username
ou o requisito que~
deve estar no início de uma palavra (com possíveis exceções). Os detalhes podem depender do shell; para Bash, veja a parte relevante do Bash Reference Manual .No Linux/Unix, muito poucos programas expandem
~
ou interpretam aspas; essas são tarefas do shell. Seu"~/path/…/myRecording.flac"
se tornou~/path/…/myRecording.flac
porque o shell não expandiu o til entre aspas (note que ele removeu as aspas).ffmpeg
obtido~/path/to/target/directory/myRecording.flac
como um dos argumentos. A ferramenta não expande~
por si só. O comando funcionaria se houvesse um diretório literalmente nomeado~
em seu diretório de trabalho atual, e se houvessepath/to/target/directory/
dentro desse~
diretório.Se você quiser
~
que o shell o expanda, então você não deve citá-lo. Por exemplo, citar assim fará o shell expandir o til: