cygwin “Bash Prompt Here” não funciona com tremas

cygwin “Bash Prompt Here” não funciona com tremas

Usar a entrada do menu de contexto do Windows Explorer "Bash prompt aqui" instalada com o pacote cygwin cherenão funciona quando o caminho contém um trema alemão em qualquer posição. Por exemplo: usá-lo para c:/temp/öresultados em um prompt do Bash aberto em c:/temp, enquanto a abertura de um cmdprompt também funciona com tremas no caminho.

Como posso resolver esse problema?

PARA SUA INFORMAÇÃO:

  1. a entrada de registro criada é c:\opt\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "%L"(no menu de contexto estendido "%L" é substituído por "%V"; mas isso também não funciona)
  2. configuração de localidade no cygwin:LANG=de_DE.UTF-8
  3. O sistema de arquivos é NTFS. Portanto, os nomes dos arquivos são armazenados em "Unicode", seja o que for que isso signifique na respectiva documentação (Descrição do Centro de Desenvolvimento do Windows sobre codificação de nomes de arquivos)
  4. Página de código na janela CMD: 850 (de acordo com o comando powershell [System.Text.Encoding]::Default)
  5. Página de códigos do Windows: 1252
  6. Todos os três programas (windows explorer, cmd.exe, bash in mintty) mostram o trema de maneira consistente, apesar das diferentes codificações
  7. Renomear arquivos não é possível, pois o problema surge principalmente em unidades de rede com pastas/arquivos que são a) referidos por muitos links (simbólicos e também atalhos do Windows) eb) pertencentes/compartilhados por vários usuários diferentes

Responder1

Se a página de código na janela CMD for 850, o caractere no nome do arquivo será um único byte que não é uma sequência UTF-8 válida. O sistema provavelmente poderia exibir umglifo desconhecido �mas não é realmente estranho, inesperado ou estranho que, em vez disso, não exiba absolutamente nada.

A solução simples é ignorá-lo. A solução um pouco menos simples é atualizar seu sistema para Unicode em qualquer lugar. Renomeie todos os arquivos para terem nomes Unicode adequados e, em seguida, configure a janela CMD para usar também cp65001 (não sou um usuário do Windows, então não me pergunte como. Não tenho certeza se você também precisa alterar a página de código padrão do Windows).

Responder2

Finalmente acabei recebendo ajuda do próprio desenvolvedor do mintty, que gentilmente me indicou a documentação adequada (mintty-wiki:https://github.com/mintty/mintty/wiki/Tips#creating-a-folder-context-menu-entry-for-mintty). De acordo com isso, as entradas do menu de contexto criadas por chere NÃO funcionam com caracteres não ASCII em nomes de diretórios.

O problema, entretanto, pode ser mitigado simplesmente fornecendo um parâmetro adicional ao comando mintty, que pode lidar com a tarefa em si sem a necessidade do script xhere. Portanto, a entrada do menu de contexto pode ser trocada apenas por C:\cygwin64\bin\mintty.exe --dir "%1" /bin/bash. A respectiva entrada agora funciona perfeitamente.

Responder3

Para evitar esse problema e qualquer coisa relacionada a ele.

Use apenas caracteres com códigos hexadecimais...

2d, travessão
30-39, números
41-5a, AZ maiúsculo
5f, caractere sublinhado
61-7a az minúsculo

... da tabela abaixo em nomes de arquivos.

Qualquer outra coisa eventualmente será uma fonte de problemas, por exemplo, se você mover arquivos entre diferentes sistemas operacionais em algum momento (... em compartilhamentos de rede e discos portáteis).

--- Tabela de caracteres codificados em HEX/DEC ---
ECMA-Latin1 ~ ISO 8859-1

       0 1 2 3 4 5 6 7 8 9 abcdef
       - - - - - - - - - - - - - - - -
 2/2: ! " # $% & ' ( ) * + , - ./
 3/3: 0 1 2 3 4 5 6 7 8 9 : ; ?
 4/4: @ ABCDEFGHIJKLMNO
 5/5: PQRSTUVWXYZ [ \ ] ^ _
 6/6: `abcdefghijklmno
 7/7: pqrstuvwxyz { | } ~
 8/8:  
 9/9:  
10/a: ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯
11/b: ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿
12/c: À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
13/d: Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
14/e: à á â ã ä å æ ç è é ê ë ì í î ï
15/f: ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ

informação relacionada