Como eu uso comandos shell com um diretório que contém '-' como '-78059735'? [duplicado]

1

Eu tenho um programa externo que gera diretórios com strings que são números inteiros negativos. Eu estou tentando usar comandos shell básicos, incluindo cd e ls com este diretório, por exemplo:

cd -78059735

Compreensivelmente, isso falha porque parece com opções de linha de comando começando com -7.

-bash: cd: -7: invalid option

Da mesma forma, essas variações também falham:

cd "-78059735"
cd "\-78059735"
cd '-78059735'
cd '\-78059735'
cd \-78059735

Como interajo com este diretório problemático através do shell?

    
por mattm 18.10.2018 / 05:02

2 respostas

5

É porque o comando cd trata o caractere seguido por - como sinalizador de opção válido para que ele funcione. Como 7 não é válido para cd , está falhando com o erro que você está vendo.

Nesses casos, você pode especificar as opções de fim de linha de comando fazendo um traço duplo antes do nome do comando -- , conforme abaixo. O comando abaixo implica que as opções de linha de comando para cd estão completas e não há nenhum outros sinalizadores esperados após --

cd -- -78059735/

Você pode até ter outros sinalizadores fornecidos antes de -- , o que funcionaria muito bem. O comando abaixo para mkdir , que usa uma opção -p para criar um diretório, se ele não existir antes funciona bem com uma string com - , desde que você forneça um sinalizador de opções de linha de comando após -p

mkdir -p -- /tmp/-78059735
ls -d /tmp/*
/tmp/-78059735
O comando

rm para excluir um diretório também funciona bem como abaixo

rm -vrf -- /tmp/-78059735
removed directory '/tmp/-78059735'
    
por 18.10.2018 / 05:13
3
cd ./-78059735
ls ./-78059735

Funciona para mim.

    
por 18.10.2018 / 05:12