Abrindo um arquivo PDF digitando seu nome

4

Estou no Mac OS X e normalmente abro arquivos PDF do terminal (usando o bash)

open myfile.pdf

Agora eu seria capaz de digitar apenas

myfile.pdf

e que abriram 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 é apenas para salvar alguns toques de tecla. Se uma solução me levar duas horas, duvido que economize tanto tempo tendo duas pressões de tecla menos nos próximos anos. Eu gostaria de saber se isso é possível e como.

    
por topskip 13.06.2012 / 22:59

3 respostas

7

Existe uma maneira de adicionar essa função a bash .

Quando você tentar "executar" o arquivo bash emitirá command not found error:

$ 1.pdf
bash: 1.pdf: command not found

Depois disso, ele também emitirá ERR "signal". Usando buildin trap , você pode capturar esse tipo de sinal e definir a função que manipulará o erro.

Em essa página você pode encontrar um script que lide com esse erro (leia também explanation ).

O script é bem comentado, por isso não deve ser um problema modificá-lo de acordo com as suas necessidades.

Depois de capturar ERR , ele verifica o código de erro do último comando. Se ocorrer um erro 2, 126 ou 127 , ele continuará. Na próxima etapa, ele verificará o último comando e o dividirá em partes e argumentos do comando.

Primeiro if..fi "lida com possíveis erros envolvendo o esquecimento de uma barra inicial", para que você possa removê-la.

No começo da próxima instrução if , há uma verificação se o seu comando é um diretório, então ele também pode ser removido. Mais interessante é a segunda parte desse if - o script verifica o tipo de arquivo e imprime algumas sugestões sobre 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 checar se o arquivo é PDF).

Nota de segurança: Se você quiser usar essa função, deve usar APPLICATION_TO_OPEN_PDF $cmd than 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 mal-intencionado ou algo parecido.

Há também outra maneira de fazer isso, mas acho que pode causar alguns problemas, porque é mais intrusivo.

Você pode redefinir a função command_not_found_handle() e colocar lá as 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 os códigos de erro e as mensagens nos casos que você não deseja manipular.

    
por 13.06.2012 / 23:41
6

Em zsh, defina um alias de sufixo em seu .zshrc :

alias -s pdf=open

O Zsh geralmente possui melhores recursos interativos e melhores recursos de programação que o bash. Ele foi enviado com o Mac OS X desde pelo menos 10.4.

    
por 14.06.2012 / 03:15
1

Suponho que você poderia criar um alias para open name o e, em seguida, digitar

 o myfile.pdf

embora eu não saiba se isso poupa tanto esforço de digitar open :-) O nome do arquivo terá que ser especificado em qualquer caso.

Então, para o alias:

alias o="open"

deve entrar no seu ~/.bashrc file

    
por 13.06.2012 / 23:05