¿Es posible crear un alias de Bash que ingrese una determinada cadena en la Terminal?

¿Es posible crear un alias de Bash que, al ejecutarse, ingrese una cadena de mi elección previa en la Terminal?

Supongamos que esto está en mi ~/.bash_profile:

alias start_youtube="cd ~/Video/Youtube; **[PASTE: youtube-dl URL]**"

Imagínese eso: el alias cambiaría el directorio Video/Youtubey luego [PEGAR] la cadena: youtube-dl URL. Podría hacerlo Return ⏎o, preferiblemente, simplemente dejar la cadena youtube-dl URLen el indicador de la Terminal para poder cambiar la URL del marcador de posición por una URL real.

Si intento ejecutar el alias a continuación;

alias start_youtube="cd ~/Video/Youtube; youtube-dl URL"

ejecutará el comando tal como se ingresó, por lo que youtube-dl devolverá un error como "No se pudo analizar la URL" , lo que podría haber estado bien. Pero al presionar la tecla no se mostrará la última entrada del alias ( youtube-dl URL) sino que se mostrará la invocación del alias ( start_youtube) [lo cual estoy seguro que suele ser preferible].

Entonces, la solución solicitada es pegar una cadena de marcador de posición en el Símbolo del sistema, o de alguna manera acceder al historial del comando de alias a través del Shell.

Respuestas (2)

Así es como lo abordaría. Use esta pregunta relacionada para escribir la función que residiría en su bashrco bash_profile. Luego agregue una línea en la función que eliminaría la línea más reciente en su historial de bash usando esto

Me conformé con algo intermedio. Creé una función que echoes la "cadena de marcador de posición" que puedo copiar, editar e ingresar, una vez que el alias tiene cdel directorio deseado. No entendí cómo acceder al historial de bash desde el alias o por qué eliminar líneas de él, porque el teclado ↑ no revela los comandos utilizados en el alias afaik.

Podría usar osascriptpara esto y decirle a los eventos del sistema que escriban las claves por usted. En general, desaconsejo encarecidamente todo el enfoque de enviar ciegamente pulsaciones de teclas al shell, ¡puede causar estragos en su sistema con esto!

osascript -e 'tell application "Terminal" to activate' -e 'tell application "System Events" to keystroke "# cd /tmp; your text" '

Por razones de seguridad, envío el carácter de comentario #como el primer carácter, pero esta línea da el resultado que querías. El cursor espera después de su texto y puede continuar escribiendo.