
Estoy en Mac OS X y normalmente abro archivos PDF desde la terminal (usando bash)
open myfile.pdf
Ahora podría escribir sólo
myfile.pdf
y abrirlo con el comando anterior. ¿Existe alguna posibilidad de configurar bash para ejecutar ese comando por mí? Me encantaría que eso funcionara sólo para archivos PDF, pero, por supuesto, una solución más general es bienvenida.
En realidad, no es únicamente para guardar algunas pulsaciones de teclas. Si una solución me lleva dos horas, dudo que ahorre tanto tiempo presionando dos teclas menos en los próximos años. Me gustaría saber si esto es posible y cómo.
Respuesta1
Hay una manera de agregar esta función a bash
.
Cuando intente "ejecutar" el archivo bash, se emitirá command not found
un error:
$ 1.pdf
bash: 1.pdf: command not found
Después de eso también emitirá ERR
"señal". Usando buildin trap
puedes captar este tipo de señal y definir la función que manejará el error.
Enesa paginapuede encontrar un script que maneje ese error (lea tambiénexplicación).
El script está bien comentado por lo que no debería ser un problema modificarlo según tus necesidades.
Después de detectarlo ERR
, verifica el código de error del último comando. si es error2, 126 o 127va a continuar. En el siguiente paso comprobará el último comando y lo dividirá en parte del comando y argumentos.
Primero if..fi
"maneje los posibles errores que impliquen olvidar una barra diagonal", para que pueda eliminarla.
Al principio de la siguiente if
declaración, se verifica si su comando es un directorio, por lo que también podría eliminarse. Más interesante es la segunda parte if
: el script verifica el tipo de archivo e imprime algunas sugerencias sobre cómo abrir ese tipo de archivo. En lugar de eso, puedes simplemente poner algo como open $cmd
o APPLICATION_TO_OPEN_PDF $cmd
(por supuesto, debes agregar y verificar si el archivo es PDF).
Nota de seguridad: si desea utilizar esa función, debería utilizarla en lugar APPLICATION_TO_OPEN_PDF $cmd
de open $cmd
. También debes establecer acciones para tipos de archivos específicos y no usar open o exec en todos los tipos de archivos para evitar ejecutar algún script malicioso o algo así.
También hay otra forma de hacer esto, pero creo que podría causar algunos problemas porque es más intrusivo.
Podrías redefinir la función command_not_found_handle()
y poner allí los controles y open
s. Eso hará que no haya mensajes de error, pero no estoy seguro de qué hará con los códigos y mensajes de error en los casos que no desee manejar.
Respuesta2
En zsh, define unalias de sufijoen tus .zshrc
:
alias -s pdf=open
Zsh generalmente tiene mejores funciones interactivas y mejores funciones de programación que bash. Se envía con Mac OS X desde al menos 10.4.
Respuesta3
Supongo que podrías crear un alias para open
el nombre o
y luego escribir
o myfile.pdf
aunque no sé si eso le ahorrará tanto esfuerzo al escribir open
:-) El nombre del archivo deberá especificarse en cualquier caso.
Entonces para el alias:
alias o="open"
deberías entrar en tu~/.bashrc file