Usar a entrada do menu de contexto do Windows Explorer "Bash prompt aqui" instalada com o pacote cygwin chere
nã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 cmd
prompt também funciona com tremas no caminho.
Como posso resolver esse problema?
PARA SUA INFORMAÇÃO:
- 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) - configuração de localidade no cygwin:
LANG=de_DE.UTF-8
- 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)
- Página de código na janela CMD: 850 (de acordo com o comando powershell
[System.Text.Encoding]::Default
) - Página de códigos do Windows: 1252
- Todos os três programas (windows explorer, cmd.exe, bash in mintty) mostram o trema de maneira consistente, apesar das diferentes codificações
- 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: ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ