Comando open: unindo o melhor de 2 mundos no Terminal do Mac

Quem chega ao Mac OS X vindo de um histórico com o Linux, algum BSD ou mesmo outro Unix frequentemente está acostumado a tirar proveito da interface via Terminal que, por meio de comandos estruturados e razoavelmente uniformes entre os múltiplos sistemas operacionais que implementam uma shell POSIX, permite manipular os objetos gerenciados pelo sistema de maneiras que muitas vezes não estão disponíveis por meio de sua interface gráfica.

Muitos deles são extremos em sua preferência, a ponto de rejeitar as interações baseadas em interface gráfica. Outros ficam em variados pontos no meio do caminho, por exemplo:

  1. preferir a interface gráfica, mas usam o Terminal para um pequeno conjunto de tarefas em que o reconhecem como a ferramenta mais adequada;
  2. usar o Terminal como um elemento a mais do seu sistema, alternando rotineiramente entre o uso da linha de comandos e a manipulação de ícones, menus, Dock, Finder e outros elementos gráficos;
  3. preferir o terminal, mas se resignar ao uso dos elementos gráficos da interface quando absolutamente necessário.

Existem outras variações, incluindo o uso de utilitários que levam a interação via comandos de teclado para parte das tarefas desempenhadas pela interface gráfica também.

Entra em cena o comando open

O meu caso é o de número 2 na lista acima: a cada momento tenho diversos Terminais abertos na interface gráfica, e complemento cada um dos 2 modos pelo uso do outro - até mesmo o programa que eu uso como substituto do Finder tem um Terminal integrado, sempre presente na sua janela.

Existem várias maneiras de chamar aplicativos gráficos via Terminal, sendo que algumas delas chegam a surpreender - como o comando "edit", que é instalado como parte do TextWrangler e permite executá-lo diretamente de um Terminal, chamando-o quase como se estivesse executando o vim, ou o nano: digito edit post-comando-open.txt e ele abre o rascunho deste post - com uma integração que funciona exatamente como usuários experientes da interface shell estão acostumados, mas os neófitos do Terminal muitas vezes demoram a dominar.

E o comando open funciona na mesma linha, mas tem um diferencial: já vem instalado com o seu Mac, não depende de você ter instalado o TextWrangler ou outro pacote qualquer.

E o open é versátil, pois permite abrir vários tipos de objetos. Por exemplo:

  • open texto.txt (vai abrir o arquivo texto.txt no seu editor default)
  • open texto.doc (vai abrir o arquivo texto.doc no seu editor de documentos default)
  • open imagens/figura.jpg (vai abrir o arquivo imagens/figura.jpg no Preview ou no seu editor default)
  • open relato.pdf (vai abrir o relato.pdf no Preview ou no visualizador default)
  • open http://br-mac.org/ (vai abrir o BR-Mac no seu navegador default)

Percebeu um padrão? Sempre que é chamado acompanhado apenas de um nome de arquivo, pasta ou URL, o open executa a ação que seria tomada se o usuário tivesse dado um duplo clique neste mesmo objeto usando a interface gráfica, abrindo-o da maneira default aplicável.

Caso especial: open .

Embora este caso não tenha nada de especial quanto à sua sintaxe, ele é bastante útil devido ao seu uso: graças à maneira como o sistema de arquivos e a shell trabalham, digitar open . (ou seja: a palavra open seguida de um espaço e de um ponto final) pode ser entendido como a ordem: "Abra no Finder a pasta corrente deste Terminal".

Assim, sempre que você quiser atuar graficamente no conteúdo do diretório corrente da sua shell, basta digitar open . e visualizar ou manipular as pastas como desejar.

Parâmetros adicionais do open

Quando chamado acompanhado apenas do nome de um arquivo ou outro objeto, o comando open faz o básico: age como se você tivesse dado um duplo clique no objeto mencionado.

Mas ele tem bem mais truques na manga, como nos exemplos a seguir:

  • open -a /Applications/Preview.app cardapio.pdf (abre o arquivo PDF no Preview mesmo que o visualizador default seja outro)
  • open -e script.sh (abre o script.sh no TextEdit, mesmo que a ação padrão fosse executá-lo, ou que houvesse outro editor definido)
  • open -t script.sh (abre o script.sh em seu editor default, mesmo que a ação padrão fosse executá-lo)
  • ls -l | open -f (manda a saída de um comando para um arquivo no /tmp, e abre este arquivo no editor default)

Estes são apenas alguns dos que uso mais frequentemente, mas o open tem bem mais parâmetros úteis - incluindo alguns que vão interessar especialmente aos desenvolvedores. Use man open para conhecê-los!

O comando open chegou ao Mac OS X por meio do NextSTEP. Implementações de ambientes gráficos Open Source recentes também incluem similares (o GNOME tem o gnome-open, KDE tem kde-open, e há ainda o xdg-open, parte do xdg-utils), que podem ser úteis (diretamente ou via um alias criativo) aos usuários de shell em outros sistemas operacionais ;-)

Comentar

Comentários arquivados

Mais acessados:

Artigos recentes: