O comando mv confunde o nome do diretório com a opção de comando
12
Eu tenho um diretório chamado --pycache--, para o qual preciso mudar __pycache__. Usar o mvcomando da seguinte maneira, fornece a saída listada. Como posso usar o CLIpara fazer o que eu quero?
Esse é um problema padrão com nomes de arquivos / diretórios começando com símbolos menos convencionais. Seu problema é que o mv está tratando --pycache-- como nome da opção longa (desde que começa com -, também existem opções curtas, eles começam com -). Consulte a página de manual do getopt para obter detalhes sobre opções longas e curtas.
A solução padrão nessa situação é usar um traço duplo vazio - antes de todo argumento, que informa o comando (mv no seu caso, mas funcionará com outras pessoas, por exemplo, cp) para parar de tratar o que se segue como opções e tratá-lo como argumentos.
boa resposta, mas acho que você quer dizer - diz ao comando para parar de tratar o que se segue como opções e tratá-lo como argumentos, e não o contrário.
RoundTower 26/11/11
1
Eu acho que é mais portátil para prepend ./: mv ./--pycache-- __pycache__.
Kevin
3
@ Kevin Isso funciona apenas se o argumento for um nome de arquivo.
starblue
16
Seu primeiro caractere -é ambíguo para o mvcomando (ou melhor, significa inequivocamente que o nome de uma opção segue).
./
:mv ./--pycache-- __pycache__
.Seu primeiro caractere
-
é ambíguo para omv
comando (ou melhor, significa inequivocamente que o nome de uma opção segue).Tente isso:
Fonte: linux.about.com
fonte