
Estou no Mac OS X e costumo abrir arquivos PDF no terminal (usando bash)
open myfile.pdf
Agora eu só conseguiria digitar
myfile.pdf
e abra-o com o comando acima. Existe alguma chance de configurar o bash para executar esse comando para mim? Ficaria feliz se isso funcionasse apenas para arquivos PDF, mas é claro que uma solução mais geral é bem-vinda.
Na verdade, não serve apenas para salvar algumas teclas digitadas. Se uma solução levar duas horas, duvido que economizarei tanto tempo pressionando menos duas teclas nos próximos anos. Gostaria de saber se isso é possível e como.
Responder1
Existe uma maneira de adicionar esta função ao bash
.
Quando você tenta "executar" o arquivo bash emitirá command not found
um erro:
$ 1.pdf
bash: 1.pdf: command not found
Depois disso também emitirá ERR
"sinal". Usando buildin trap
você pode capturar esse tipo de sinal e definir a função que tratará o erro.
Sobreaquela páginavocê pode encontrar um script que irá lidar com esse erro (leia tambémexplicação).
O script é bem comentado, então não deve ser um problema modificá-lo de acordo com suas necessidades.
Depois de capturá ERR
-lo, verifica o código de erro do último comando. Se for erro2, 126 ou 127isso continuará. Na próxima etapa, ele verificará o último comando e o dividirá em parte de comando e argumentos.
Primeiro if..fi
, "trate de possíveis erros que envolvem o esquecimento de uma barra inicial", para que você possa removê-la.
No início da próxima if
instrução há uma verificação se o seu comando é um diretório, portanto também pode ser removido. Mais interessante é a segunda parte if
- o script verifica o tipo de arquivo e imprime algumas sugestões de como abrir esse tipo de arquivo. Em vez disso, você pode simplesmente colocar algo como open $cmd
ou APPLICATION_TO_OPEN_PDF $cmd
(é claro que você precisa adicionar para verificar se o arquivo é PDF).
Nota de segurança: se você quiser usar essa função, você deve APPLICATION_TO_OPEN_PDF $cmd
usar open $cmd
. Você também deve definir ações para tipos de arquivos específicos e não usar open ou exec em todos os tipos de arquivos para evitar a execução de algum script malicioso ou algo parecido.
Também existe outra maneira de fazer isso, mas acho que pode causar alguns problemas, pois é mais intrusivo.
Você poderia redefinir a função command_not_found_handle()
e colocar lá aquelas verificações e open
s. Isso fará com que não haja mensagens de erro, mas não tenho certeza do que isso fará com códigos e mensagens de erro nos casos que você não deseja tratar.
Responder2
Em zsh, defina umapelido de sufixona tua .zshrc
:
alias -s pdf=open
O Zsh geralmente possui melhores recursos interativos e melhores recursos de programação do que o bash. Ele foi fornecido com o Mac OS X desde pelo menos 10.4.
Responder3
Suponho que você poderia criar um alias para open
o nome o
e digitar
o myfile.pdf
embora eu não saiba se isso poupa tanto esforço de digitação open
:-) O nome do arquivo terá que ser especificado em qualquer caso.
Então, para o alias:
alias o="open"
deveria entrar em seu~/.bashrc file