puxe um arquivo chamado ~

4

Então baixei um álbum de música do aMule e ele está localizado no diretório .aMule/Incoming . Tentei movê-lo com o seguinte comando:

 mv albumName.rar ~

Isso me deixou com um arquivo ~ in .aMule/Incoming , que eu não pude renomear porque o til é reservado para o diretório home. Eu sei que posso acessá-lo via Nautilus, mostrando arquivos ocultos. Como posso retirá-lo no terminal?

Atualizar É assim que parece agora

   manuzhang@manuzhang-R458-R457:~/.aMule/Incoming$ ls -l
   total 328
   -rw-r--r-- 1 manuzhang manuzhang 297266 2012-03-19 12:07 ~
   -rw-r--r-- 1 manuzhang manuzhang  34479 2011-10-11 19:51 [kat.ph]friends.season.1.with.english.subtitles.torrent
    
por manuzhang 05.04.2012 / 02:40

3 respostas

5

mv \~ ~/albumName.rar
mv '~' ~/albumName.rar
mv ./~ ~/albumName.rar

Você sempre pode proteger um personagem que tenha um significado especial no shell colocando uma barra invertida antes dele.

Você sempre pode dizer ao shell para interpretar uma sequência literalmente colocando-a entre aspas simples. O único caractere que você não pode colocar dentro de uma string literal é a própria aspa, já que indica o final da string literal. Você pode usar '\'' ; significa "fim do literal, o caractere ' , início do literal", mas você pode pensar nele como uma maneira estranha de colocar uma única aspas dentro de uma string literal entre aspas simples.

O caractere ~ é especial apenas no início de um caminho, portanto, se você colocar uma indicação de diretório, ~ será o nome do arquivo nesse diretório.

Observe que, se o nome do arquivo começar com - , apenas o último desses três métodos funcionará. Isso ocorre porque - não é especial para o shell; tem um significado especial para o comando: indica uma opção. Outra maneira de proteger - contra esse significado especial é colocar a opção especial -- antes dela: -- em uma linha de comando indica o fim das opções, somente nomes de arquivos (ou outros argumentos não-opcionais) podem vir depois disso.

Note também que o comando que você mostra deve ter copiado o arquivo para o seu diretório home, já que o caracter ~ deveria ter sido interpretado pelo shell. É possível que você tenha digitado errado e criado um arquivo que não é chamado de ~ . Execute ls -q ou ls -Q para ver se o nome do arquivo contém um caractere não imprimível. Se isso não fornecer nenhuma indicação visual, tente ls | od -t o1 , que mostrará o código octal de cada byte no nome do arquivo. Em ksh, bash ou zsh, você pode usar $'3' em uma linha de comando para especificar um caractere por seu código octal. Como alternativa, você pode encontrar um padrão que corresponda ao arquivo. Por exemplo, se você determinar que o comprimento do nome do arquivo é 3 e que os únicos outros arquivos cujo comprimento é 2 são foo e bar , você pode mover o arquivo com

mv ./[^bf]?? ~/albumName.rar

E se você estiver disposto a usar o mouse e o nome for composto de caracteres imprimíveis que você não sabe digitar: copie e cole o nome do arquivo da saída de ls .

    
por 05.04.2012 / 02:49
1

Especifique um caminho para o arquivo.

cat ./~
    
por 05.04.2012 / 02:42
1

A atualização colada mostra que é um caractere ASCII alto ou Unicode, não um til simples ... Você pode usar mc ou outro gerenciador de arquivos? Que tal mover tudo else para fora desse diretório, usando a conclusão de tabulação?

    
por 05.04.2012 / 03:27