No Windows, geralmente crio um caminho completo para um arquivo inexistente para que eu possa fornecê-lo às caixas de diálogo de salvamento de arquivo, informando assim ao aplicativo host onde salvar um arquivo. Usando Cygwin, isso é feito como:
cygpath -au Some/Relative/Path.blah # For Cygwin apps
cygpath -aw Some/Relative/Path.blah # For Windows apps
Costumo canalizar o caminho completo resultante para o Cygwin putclip
para que eu possa colá-lo na caixa de diálogo de salvamento de arquivo do aplicativo em questão. Mais precisamente, eu o canalizo para minha própria função putclp
(sem "i"), que remove o retorno de carro final.
A contraparte mais próxima que encontrei para o Linux é
readlink -e Some/Relative/Path.blah
Eu canalizo isso xsel -ip
para a área de transferência primária do X-windows ou xsel -ib
para a área de transferência mais moderna semelhante ao Windows no Ubuntu.
Infelizmente, readlink -e
retorna apenas um caminho para um arquivo existente . Muitas vezes preciso criar um caminho completo para um arquivo inexistente porque estou informando a um aplicativo onde criar o arquivo.
Existe uma contraparte para cygpath
/ readlink
que pode criar caminhos completos para arquivos inexistentes com base em um caminho relativo especificado?
Se assumirmos que o comando desejado é chamado GetFullPath
, aqui está um exemplo da funcionalidade desejada:
GetFullPath Relative/Path/To/Nonexistent/File
O resultado na saída padrão seria /The/Full/Path/To/Nonexistent/File
.
seria suficiente – não há necessidade de resolver links simbólicos no Linux, não há literalmente nenhuma diferença de uso entre caminhos que envolvem links e aqueles que não envolvem. Todas as operações que você pode fazer no último também funcionam no primeiro. Uma caixa de diálogo de salvamento não importa!
A mesma
-m
opção também funciona parareadlink -e Some/Relative/Path.blah
, caso você, por algum motivo bastante estranho, realmente se preocupe em não ter links simbólicos em sua caixa de diálogo de salvamento!