Escapando aspas simples [fechado]

1

Eu tive que limpar minha unidade e reinstalar o Windows, o que também exigiu a reinstalação do cygwin.

Na minha nova instalação,

ls -l "*\'*"

retorna

ls: cannot access '*\'\''*': No such file or directory

Por anos até este ponto, ls -l *\'* me apresentaria uma lista de diretórios e arquivos onde os usuários incluíam uma única citação em nomes de arquivos ou diretórios.

Alguma dica sobre o que posso estar perdendo sobre esta situação?

Por exemplo, aparentemente o coreutils tinha algumas alterações que faziam com que arquivos com espaços no nome fossem listados como 'Este arquivo contém espaços' e um switch / variável tinha que ser usado para desligá-lo.

Gostaria de saber se alguma alteração semelhante no uso padrão foi implementada em relação à cotação única.

    
por Ken Ingram 28.02.2018 / 03:30

1 resposta

2

Você não pode citar * se espera que ele aja como um curinga. Ambas aspas simples e duplas escapam.

As aspas duplas também escapam de aspas simples, então toda a sua string *\'* será tomada literalmente:

$ echo "*\'*"
*\'*

Você deseja escrever sua string sem as aspas duplas, como escreveu mais tarde em sua pergunta:

ls -l *\'*

Outra maneira de fazer isso que pode ser mais adequada para você é com o comando find . (que não segue as mesmas regras de citação acima, desculpe a confusão). Com o find você pode pesquisar uma estrutura de diretório recursivamente muito mais fácil para qualquer arquivo que contenha uma aspa simples com o comando abaixo:

find . -name "*'*"

Neste exemplo, . significa o diretório em que você está atualmente, mas você pode substituí-lo por um caminho para qualquer diretório que deseja pesquisar.

    
por 28.02.2018 / 03:34