Nome do diretório estranho, mostrado com uma barra invertida

1

Eu copiei e colei um diretório de arquivos em outro.

O resultado agora é este development\ /

Eu não sei o que isso significa? O Linux nem sequer reconhece como um diretório agora.

O proprietário deste diretório também está errado. Mas quando tento fazer isso chown -R zugul /development , o resultado é: chown: cannot access '/development': No such file or directory

Parece que algo deu errado quando colei o diretório copiado. Como posso resolver este problema?

    
por wjandrea 23.12.2011 / 19:34

5 respostas

1

O nome do seu diretório parece ter um espaço.

Você pode usar aspas:

chown -R zugul "/development /"

Ou você pode usar caracteres de escape:

chown -R zugul /development\ /
    
por 23.12.2011 / 19:40
1

Seu nome de diretório termina com um espaço (provavelmente um espaço regular, mas poderia ser algum outro caractere em branco como um espaço inquebrável). Dependendo de quais opções você passou para ls , o \ está no nome do arquivo ou indica que o próximo caractere deve ser interpretado literalmente como parte do nome do arquivo.

Você desejará renomear o diretório:

mv /development\  /development

(observe os dois espaços consecutivos: o primeiro é parte do nome do arquivo e citado pela barra invertida precedente, e o segundo espaço separa os dois argumentos). Ou

mv '/development ' /development

Se já houver um diretório chamado /development , mova os arquivos do diretório /development ​ para /development e remova o diretório com nomes incorretos ( rmdir '/development ' ). Cuidado com os conflitos (arquivos existentes em ambos).

Depois de resolver o problema de nomes, cuide de outras coisas, como propriedade.

    
por 24.12.2011 / 01:53
0

O nome do arquivo está incorreto quando você tenta chown ; tente em vez disso chown -R zugul development\\ / .

    
por 23.12.2011 / 19:37
0

Não pense que isso pertence ao stackoverflow, mas basicamente você pode fazer uma das duas coisas:

chown -R zugul /development*

Se você tiver vários diretórios / development, isso é um problema. Ou

chown -R zugul "/development /"

Em geral, você pode evitar que os diretórios de "desenvolvimento" façam parte do nível /. Estes geralmente pertencem a /home/zugul/ em algum lugar.

A menos que você tenha copiado a pasta como root, você não a verá em / . Então, sua operação falhou ou a pasta em algum outro diretório. Se estiver em algum outro diretório, então você precisa fazer:

cd <dest directory>
sudo chown -R zugul "development /"
    
por 23.12.2011 / 19:39
0

Em vez de adivinhar o que o personagem é, use algo que cite os caracteres especiais. Eu gosto desse método:

ls --quoting-style=shell-escape

Isso mostra o que realmente é (usando bash / ksh-style $'' strings que manipulam escapes ANSII C). Como bônus, isso deve fornecer uma string pré-citada que você pode passar diretamente para chown ou qualquer outra coisa que você precise fazer no shell. Por exemplo, aqui está um arquivo com uma nova linha no nome, mostrando a saída ls e, em seguida, usando a saída ls pré-cotada para chgrp e rm :

sauer@lightning:/tmp/test> ls -l
total 0
-rw-r--r-- 1 sauer users 0 Aug 14 17:04 a?file
sauer@lightning:/tmp/test> ls -l --quoting-style=shell-escape
total 0
-rw-r--r-- 1 sauer users 0 Aug 14 17:04 'a'$'\n''file'
sauer@lightning:/tmp/test> chgrp docker 'a'$'\n''file'
sauer@lightning:/tmp/test> ls -l --quoting-style=shell-escape
total 0
-rw-r--r-- 1 sauer docker 0 Aug 14 17:04 'a'$'\n''file'
sauer@lightning:/tmp/test> rm -v 'a'$'\n''file'
removed 'a'$'\n''file'

Sugiro renomear o arquivo para algo sem caracteres estranhos. :)

sauer@lightning:/tmp/test> ls
a??file
sauer@lightning:/tmp/test> ls --quoting-style=shell-escape
'a'$'\t3''file'
sauer@lightning:/tmp/test> mv -v 'a'$'\t3''file' regular_filename
renamed 'a'$'\t3''file' -> 'regular_filename'
    
por 15.08.2018 / 00:11