Como posso fazer o bash converter '~'?

1

Alguns programas não reconhecem atalhos de til em nomes de arquivos e esperam caminhos canônicos completos, por exemplo, /home/dave/myfile.txt em vez de ~/myfile.txt .

Existe uma maneira de fazer o bash substituir ~ e ~user por caminhos canônicos completos sempre que um til é usado?

    
por David B 01.11.2010 / 08:00

2 respostas

2

Bem, não tenho certeza sobre perl, mas no script bash você pode fazer essa conversão com eval:

eval dir='~user/somedir'

$ dir conterá o caminho completo, ou seja, / home / user / somedir neste ponto.

    
por 23.08.2013 / 15:49
1

Quando você executa um comando no shell Bash, como:

command ~/myfile.txt

o shell primeiro faz a expansão de ~ (a menos que seja citado) e então executa o comando com o resultado.

Mas é verdade, alguns programas não interpretam o ~ , por exemplo:

$ cat "~/myfile.txt"
~/myfile.txt: No such file or directory

mas isso funciona insted:

nano "~/myfile.txt"

Mas esse comportamento é mascarado pela expansão do Bash, então você não precisa de nenhuma interpretação adicional .

Talvez seja óbvio, mas observe que, se um programa usa um arquivo de configuração e espera alguns caminhos, não é uma tarefa do Bash expandi-lo.

    
por 01.11.2010 / 12:07

Tags