OS X abre um novo terminal a partir da linha de comando que também funciona no linux

0

Estou criando scripts npm para um projeto baseado em nó, e gostaria de criar um script que primeiro abra um novo terminal e, em seguida, execute esse comando lá. Eu estou usando um mac, mas os outros desenvolvedores podem usar o linux.

Agora eu quero fazer um comando que seja cross env de uma maneira que funcione em ambos os ambientes. Eu sei que o OS X é baseado em unix, então pode-se pensar que, por causa disso, existe uma maneira fácil de fazer um script de shell cross env que abre o terminal.

EDIT: Eu não quero nenhum clique do mouse. Apenas um script de shell, que abre um novo terminal no os x e no linux.

    
por Ville Miekk-oja 04.07.2017 / 21:31

2 respostas

1

Não há comando entre plataformas para isso. Enquanto o macOS usa o Unix por baixo, os aplicativos de terminal no macOS e no Linux são completamente diferentes, e o usuário pode ter diferentes terminais instalados. No macOS, isso pode ser Terminal.app, iTerm2 ou outros, e no Linux você pode ter pessoas rodando o Terminal GNOME, Konsole, Terminator, etc. - ou nem mesmo rodando um ambiente gráfico. Você já considerou isso?

As formas de abrir aplicativos também são diferentes entre os sistemas operacionais. Você tem que escrever funcionalidades separadas para ambos os sistemas operacionais.

macOS

No macOS, tudo o que você precisa para iniciar o Terminal.app e executar um script é:

osascript -e 'tell application "Terminal" to do script "/path/to/script.sh"'

Eu acho que você poderia obter o terminal padrão (se não for Terminal.app), inspecionando as associações de arquivo padrão, mas é um pouco complicado sem ferramentas de terceiros, como duti (Use Homebrew para brew install duti ), onde você faria:

terminal=$(duti -x .command | head -n 1)
osascript -e "tell application \"$terminal\" to do script \"/path/to/script.sh\""

Mas eu acho que a funcionalidade de duti pode ser submetida a engenharia reversa inspecionando o seu código-fonte . Para mais informações, consulte este post .

Você também pode criar um arquivo .command e abri-lo via open :

touch example.command
echo "echo foo" > example.command
chmod +x example.command
open example.command

Isso selecionaria automaticamente o emulador de terminal definido pelo usuário.

Linux

No Linux, geralmente você pode acessar o terminal padrão com x-terminal-emulator :

x-terminal-emulator -e "/path/to/script"

Verifique se o script é realmente executável ( chmod +x ).

    
por 04.07.2017 / 22:16
-1

No OSX, você pode criar um script e informar ao localizador que o Terminal é o aplicativo padrão para abri-lo. Crie um script como este:

#!/bin/sh
echo "hello world"

"Obter informações" e defina Abrir com: Terminal.app

    
por 04.07.2017 / 21:49