Como remover / renomear o arquivo que contém caracteres especiais, por exemplo. "-X" usando a linha de comando [duplicata]

0

Alguém pode me explicar abaixo das coisas

eu tenho o arquivo chamado "-xyz". Se eu tentar remover ou mover esse arquivo usando a linha de comando, ele não poderá ser movido. Eu tentei abaixo das coisas:

[rahul@srv100 ~]# ls -lrt  -- "-xyz"
-rw-r--r-- 1 rahul rahul 0 Dec 19 08:06 -xyz
[rahul@srv100 ~]# mv "-xyz" xyz
mv: invalid option -- x
Try 'mv --help' for more information.
[rahul@srv100 ~]# mv \-xyz xyz
mv: invalid option -- x
Try 'mv --help' for more information.
[rahul@srv100 ~]# mv -\xyz xyz
mv: invalid option -- x
Try 'mv --help' for more information.
[rahul@srv100 ~]# mv '-xyz' xyz
mv: invalid option -- x
Try 'mv --help' for more information.

finalmente eu renomeio esse arquivo usando o winscp, e depois de tentar várias maneiras eu tenho uma opção e está funcionando.

mv -- '-xyz' xyz

Desejo a ajuda de "-", eu criei o arquivo / diretório como abaixo

mkdir -- --abc
touch -- -xyz

Então, minha pergunta é o que é isso "-" no bash? Por favor explique.

    
por Rahul Patil 21.12.2012 / 10:12

3 respostas

1

Como outros já mencionaram, -- é usado para delimitar opções de argumentos. Se você executar um programa e especificar algum argumento, o programa não terá como distinguir se os argumentos especificados devem ser interpretados como uma opção de linha de comando ou um argumento. Essa é a razão pela qual um prefixo para opções foi introduzido - / -- ou / no Windows, ou seja, -rf , --help ou /?

Como você pode ter arquivos começando com um prefixo ou qualquer outro nome especial que possa ser interpretado -- foi introduzido para delimitar opções de linha de comando de argumentos normais, ou seja, cada argumento após -- não será tratado como um opção de linha de comando, mas apenas como um argumento. getopt (1) , uma solução padrão para analisar argumentos, por exemplo, suporta o delimitador -- , o que significa que qualquer programa usando getopt suporta automaticamente o delimitador -- .

Se você deseja trabalhar com arquivos que começam com caracteres especiais, como - , também é possível adicionar ./ na frente deles, pois agora eles não começam com - , para que não sejam interpretados como comando opção de linha, para o seu exemplo, seria mkdir ./--abc

    
por 21.12.2012 / 13:26
1

Isto é usado para dizer ao comando que depois desse ponto, nenhuma outra opção de comando é aceita.

Então

rm -- -abc

significa que ele irá ignorar o - do abc.

para mais informações você pode consultar: link

    
por 21.12.2012 / 10:20
1

É um indicador para os comandos individuais pararem de interpretar argumentos de linha de comando adicionais como opções.

    
por 21.12.2012 / 10:20

Tags