Comando de shell de macOS para crear una nueva ventana de Terminal
Por supuesto, puedes crear fácilmente una nueva ventana de Terminal desde el menú ‘Shell’ o usando el atajo de teclado ⌘N (o ⌘T). Pero en algunos casos, puede ser más útil utilizar un comando del shell.
Las nuevas ventanas creadas con el atajo de teclado o desde el menú siempre tendrán el directorio raíz ~
como directorio de trabajo actual. Lo que quiero, es una nueva ventana que por defecto el directorio de trabajo actual o un directorio personalizado que puedo proporcionar con un argumento:
> new # opens a new terminal window at the current working directory> new ~/Desktop # opens a new terminal window at ~/Desktop
No hubo suerte con AppleScript
Después de mi último éxito usando AppleScript, pensé que esto sería la mejor solución de nuevo. Desafortunadamente, esta pieza en particular del diccionario de AppleScript está rota. Los comandos make new window
o make new tab
fallan con errores y he probado varias combinaciones.
Después de algunas búsquedas en la web, parece que esto ha estado roto durante mucho tiempo. He archivado un problema en el Asistente de comentarios.
Puede crear una nueva ventana de Terminal con AppleScript utilizando el comando do script
del diccionario de Terminal. (No confundir con do shell script
.) Así que este AppleScript, más o menos hace lo que quiero, pero parece engorroso.
tell application "Terminal" do script "cd ~/Desktop"end tell
Si usted sabe de una mejor manera de crear una nueva ventana de Terminal o, aún mejor, una pestaña de Terminal con AppleScript, entonces por favor hágamelo saber. (No hay soluciones de UI Scripting – esas tienen sus propios problemas.) Tengo algunas otras ideas en las que esto podría ser útil.
Introducir el comando open
Durante esas búsquedas en la web, también encontré sugerencias para utilizar el comando open
, en su lugar:
> open -a Terminal ~/Documents
Abrirá una nueva ventana de Terminal con ~/Documents
como el directorio de trabajo. Esto ya está muy cerca de lo que quería.
Creé esta función en mi archivo de configuración del shell (bash, zsh):
# creates a new terminal windowfunction new() { if ]; then open -a "Terminal" "$PWD" else open -a "Terminal" "$@" fi}
Con esto, ahora puedo escribir
> new Projects/desktoppr
y obtener una nueva ventana de Terminal allí. Esto es muy útil cuando se combina con la variable de sustitución del historial !$
(último argumento del comando anterior):
> mkdir Projects/great_new_tool> new !$
Y un efecto secundario inesperado, pero útil, es que la función new
también puede abrir una sesión de ssh en una nueva ventana:
> new ssh://[email protected]
¡Espero que también lo encuentres útil!