Como ter vários separadores de caminho no Bash

1

Eu tenho poucos scripts python que foram escritos por outra pessoa no Windows. Esses scripts usam barra invertida dupla como separador de caminho, mas quando executados no Ubuntu, eles não funcionam por causa disso. Eu posso mudar todos os \ to / e os scripts funcionarão, mas existem muitos scripts e seu grande esforço para alterar cada \ to /

Então, minha pergunta é: É possível adicionar o \ como separador de caminho no Ubuntu ou apenas no Bash para que eu não tenha que modificar esses scripts?

Exemplo de código:

# Append Common directory to the Python search path
sys.path.append('..\..\..' + os.sep + 'Common')
    
por binW 28.03.2012 / 12:52

2 respostas

1

No Linux, nomes de arquivos podem conter qualquer caracteres, exceto / (já que é o separador de caminho) e o byte NUL (o terminador de string, \ ). Isso significa que \ é um caractere válido em um nome de arquivo, além de novas linhas, tabulações, sequências de escape de terminal, caracteres não imprimíveis ... portanto, não, você não pode usar temporariamente / como separador de caminho.

O Windows não é tão liberal e tem um conjunto maior de caracteres não permitidos em nomes de arquivos, e / é um desses caracteres não permitidos. Por esse motivo, o python também considerará \ um separador de caminho no Windows, portanto, alterar esses / para %code% deve fazer o script funcionar no Windows e no Ubuntu. Dito isso, a maneira correta de unir caminhos em python é usar a função os.path.join.

Eu recomendo passar pelos scripts e corrigir manualmente todo o código não portátil.

    
por geirha 28.03.2012 / 18:09
0

Não consigo responder a sua pergunta, mas é muito fácil alterar \ para / em todos os scripts como este:

find <root_of_scripts> -name "*.py" -exec sed -i 's/\\/\//g' {} \;

(Tente primeiro uma cópia dos seus arquivos!)

    
por Eran Ben-Natan 28.03.2012 / 17:06