Estou escrevendo um script de shell destinado a solicitar um arquivo ao usuário e, como não espero que o usuário final do meu script seja experiente em tecnologia, em vez de iniciar a linha de comando para interação, gostaria que o shell fosse capaz de invocar o gerenciador de arquivos do sistema de uma maneira padrão (por exemplo, usando xdg ou similar), que o abriria em uma caixa de diálogo do tipo "Abrir arquivo..." e exibiria o caminho completo ou relativo para um arquivo ou diretório, uma vez que um fosse selecionado. Existe uma maneira de fazer isso em Linux ou MacOS, ou ambos?
relate perguntas
-
Subtraindo a mesma coluna entre duas linhas no awk
-
Um script que imprime as linhas de um arquivo com seu comprimento [fechado]
-
exportar variáveis env programaticamente, via stdout do comando [duplicado]
-
Dividir por delimitador e concatenar problema de string
-
MySQL Select com função IN () com array bash
Você pode fazer isso no macOS usando o
osascript
comando para executar o comando do AppleScriptchoose file
. Algo assim:Observe que se o usuário cancelar a caixa de diálogo de seleção (ou algo der errado),
osascript
imprimirá uma mensagem de erro no stderr (além de sair com um status de erro, que é o que oif
teste acima verifica), então você pode querer redirecionar o erro saída para suprimir ou capturar isso.Além disso, os nomes e caminhos dos arquivos do macOS geralmente contêm espaços, portanto, coloque aspas duplas em todas as referências de variáveis (por exemplo,
ls "$filepath"
em vez de apenasls $filepath
). Esta é uma boa higiene de script em geral, mas é particularmente importante aqui. shellcheck.net é bom em detectar erros comuns, como referências de variáveis sem aspas, então recomendo executar seus scripts para ver o que ele recomenda.Para obter mais informações sobre o
choose file
comando, consulte Guia de script de automação do Mac da Apple: solicitando arquivos ou pastas .