Como usar comandos em arquivos dentro de diretórios começando com um caractere especial?

3

O Angular 2 dizem que as pastas carregadas com preguiça devem começar com um sinal de mais ( + ).

Isso funciona bem ao fazer cd +directory/ , mas se torna problemático ao usar comandos em arquivos dentro desses diretórios de fora. vim +folder/file.ts não funciona. Fazendo git rm --cached **/*.js* no diretório base, irá ignorar todos os arquivos dentro dos diretórios com + . Citando os argumentos do comando não funcionou.

Eu poderia abandonar o conceito de +directory , mas agradeço as convenções.

Como usar comandos em arquivos dentro de diretórios que começam com um caractere especial?

    
por oddRaven 08.08.2016 / 15:12

2 respostas

2

Muitos comandos ( head / tail , sort , sh , vim ...) tratam argumentos que começam com + especialmente, portanto, não é uma boa ideia usar isso como o primeiro caractere de um nome de arquivo. O mesmo vale para - , que é ainda mais comumente usado como caractere líder da opção.

Assim como para - , para evitar que + seja tratado especialmente, você pode usar um prefixo ./ . ./+foo é outro caminho para +foo que não começa com + . Esse truque ./ também ajuda em outras situações em que os argumentos são tratados de maneira diferente com base em seu conteúdo. Por exemplo, ajuda com awk para nomes de arquivos que contêm = (compare awk 1 a=b com awk 1 ./a=b ) ou para nomes de arquivos com : para comandos do ImageMagick.

Para alguns comandos que reconhecem +x como uma opção, usar -- para marcar o final das opções também pode ajudar. Geralmente, ele funciona em menos situações do que o prefixo ./ .

    
por 08.08.2016 / 15:21
1

Se um programa deve parar de interpretar os argumentos da linha de comando como opções (potenciais) e começar a vê-los como, e. arquivos que você usa -- após as opções "reais":

vim -- +folder/file.ts
gif rm --cached -- **/*.js*

nem todos os programas implementam isso, mas os mais modernos fazem isso.

    
por 08.08.2016 / 15:16