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.