Estou tentando me lembrar de como configurar o Cygwin para usar o Windows EOL em vez do Unix EOL. Não tenho que fazer isso há anos e acabei de comprar um novo laptop.
NOTA : Tenha paciência enquanto descrevo o problema. Não desejo respostas que me orientem a usar bash shell ou perl ou qualquer outra coisa que não seja resolver o problema descrito . Eu sei que é possível; Eu tenho feito isso desde Win2k. E minha agora morta máquina Vista funcionou assim por 10 anos. Se não tivesse travado, eu teria o marcador :( Meu laptop Win 7 em meu antigo empregador funcionava dessa maneira. Lembro-me de algumas etapas para definir o EOL no bash shell padrão; mas não consigo encontrar nenhum site que faça referência a algo próximo ao problema Descrito abaixo.
Etapas para reproduzir : Escolhendo qualquer string de pesquisa arbitrária com EOL, grep não a encontrará. Por exemplo, se tiver arquivo sample.txt:
Isto é meu arquivo de exemplo com algum aleatório texto iniciar. eu poderia continuar com isso Mas isso é redundante
- Abra um prompt de comando do Windows
- execute "grep -i is$ sample.txt"
- Nenhum resultado é retornado .
Agora, execute
- "amostra dos2unix.txt"
- execute "grep -i is$ sample.txt"
- retorna o seguinte, como esperado
Isto é eu poderia continuar com isso Mas isso é
Agora...
Não é viável para mim converter todos os arquivos toda vez que eu quiser grep. Quero descobrir o que fiz no passado para alterar o grep para procurar o Windows EOL e não converter os arquivos para o Unix EOL.
Simplesmente não consigo me lembrar das etapas a serem executadas no shell bash padrão, ou qualquer outro, para efetuá-lo. Pesquisei exaustivamente e não consigo descobrir os termos corretos para apresentar uma solução. Estou encontrando soluções apenas para pessoas que usam o Ubuntu no Windows ou pessoas que usam o comando bash shell em vez do Windows Command ou outras soluções irrelevantes.
Eu tentei adicionar a solução prescrita em alguns sites de adição
exportar SHELLOPTS set -o igncrpara Cygwin/home/user/.bash_profile (onde user é meu nome de usuário Win) e não funcionou - mesmo ao executar o comando dentro de um bash shell .
Parece que me lembro que, ao executar o Cygwin apenas a partir de um prompt do Windows, como eu, há algum shell padrão que você precisa abrir no bash e digitar algumas coisas para fazer o Cygwin reconhecer o EOL do Windows. Não consigo encontrar essa solução.
Também tentei alterar meu comando grep para usar POSIX e -E e outras soluções prescritas; nenhum funcionou e eu nunca tive que fazer isso no passado. Sempre usei os comandos acima sem problemas (depois de aplicar a correção).
Por fim, também desinstalei e reinstalei o Cygwin, sem sucesso (é claro). Eu vi alguns sites que indicavam que o caractere EOL é definido na instalação; mas não sou solicitado nem vejo nenhuma tela que indique um sinalizador para isso. E não me lembro disso em nenhuma caixa de diálogo de instalação do Cygwin do passado. Estou instalando a versão do Windows de 64 bits encontrada em https://www.cygwin.com/install.html . Eu uso o Windows 10 1903 de 64 bits.
Peço desculpas pela extensão deste post; mas queria ser preciso e claro sobre o assunto, os passos que tentei e o que desejo.
Agradecemos antecipadamente pela sua resposta.
OK. Desisto. Só posso supor que estava usando uma distro Cygwin mais antiga que ignorava o \r. Acho que me lembro de algo assim de > 10 anos atrás. Eu costumava portar minha distro personalizada comigo, em vez de ter que reinstalar o excesso toda vez que trocava de máquina quando era contratado.
Portanto, em vez de alterar todos os meus scripts para usar o Windows findstr ou sed os fluxos para remover o \r, executarei apenas o dos2unix.
Eu não queria recorrer a isso porque não possuo esses arquivos. Então, tenho que fazer uma cópia, executar o dos2unix e grep as cópias. Felizmente, não preciso fazer isso com frequência.
Para todos os meus repositórios SVN e Git, defino o tipo de arquivo como Unix EOL no arquivo config. É apenas este repositório NAS específico que estava me causando problemas.
@Daniel B--Obrigado por suas respostas.
Se eu descobrir isso (ou de alguma forma conseguir obtê-lo da unidade do Vista), postarei a solução aqui.