É possível obter manipulação de nome de arquivo com distinção entre maiúsculas e minúsculas no Cygwin 64-bit executado no Windows 7 Professional de 64 bits?

3

Eu tenho usado o Cygwin 32-bit no Windows 7 Professional 64-bit. Eu tinha o conjunto de chaves de registro HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ObCaseInsensitive e tudo estava bem: eu poderia obter uma verdadeira manipulação de arquivos sensíveis a maiúsculas e minúsculas, eu poderia criar FOO.txt e foo.txt no mesmo diretório.

Agora que o Cygwin 64-bit foi lançado, quero testá-lo no Windows 7 Professional de 64 bits. Acontece que a chave de registro ObCaseInsensitive não tem efeito para o Cygwin 64-bit, porque a chave parece ser apenas para o subsistema Win32. O subsistema para aplicativos baseados em UNIX (SUA) também não está disponível no Windows 7 Professional de 64 bits (Enterprise ou Ultimate é necessário). Na verdade, nem sei se ter o SUA instalado ajudaria.

Alguém sabe se é possível obter manipulação de nomes de maiúsculas e minúsculas com o Cygwin 64-bit no Windows 7 Professional de 64 bits?

    
por Kal 15.08.2013 / 08:31

2 respostas

2

A distinção entre maiúsculas e minúsculas funciona no x86_64-cygwin. Lembre-se de que, nos sistemas Windows de 64 bits, existem efetivamente dois registros, um para processos de 32 bits e outro para processos de 64 bits. (No Cygwin, eles são representados por /proc/registry32 e /proc/registry64 .) Configurar a chave novamente com regtool -w e reinicializar deve corrigir isso para você.

    
por 16.08.2013 / 01:52
0

Você pode definir uma função que verifica o caso do diretório de destino (sem precisar alterar o Registro do Windows). Dessa forma, eu tenho no arquivo ~/.bash_functions o seguinte código:

unset cd_func2 2> /dev/null
unalias cd 2> /dev/null
cd_func2 () {

    echo $1 | grep -q '^/' && cd $1 && return 0
    for f in 'echo $1 | sed -e 's/\// /g'' ; do
        _NEW_PATH=$(ls -a | grep -i ^"$f"$)
        [ "$_NEW_PATH" ] && cd $_NEW_PATH && continue
        echo "Directori inexistent $f" && return 1
    done
}

alias cd=cd_func2

EDIT: Manipulação de parâmetros mais geral.

Espero que ajude.

    
por 29.03.2017 / 11:52