Abriendo una ventana de terminal a un directorio específico desde un script bash

¿Cómo puedo escribir un script bash en Mac OS X que abra una ventana de Terminal en un directorio específico? Asumiría algo como:

open /Applications/Utilities/Terminal.app

Pero eso no hace nada (tal vez esté cargando la aplicación Terminal que ya está abierta en lugar de abrir una nueva ventana de Terminal). Y, por supuesto, no cd en un directorio ya que no lo he especificado...

Respuestas (3)

Aquí hay un pequeño script que eliminé:

#!/usr/bin/osascript
on run argv
  set dir to quoted form of (first item of argv)
  tell app "Terminal" to do script "cd " & dir
end run

Si guardas esto y lo haces ejecutable

chmod +x script_filename

y luego ejecutarlo

script_filename ~/Desktop

luego abrirá una nueva ventana de terminal y cambiará al directorio en el argumento.

A partir de Mac OS X Lion 10.7, si abre una carpeta con Terminal, se creará una nueva terminal en esa ubicación. por ejemplo, puede arrastrar una carpeta al ícono de la aplicación Terminal, o a una barra de pestañas para crear una nueva pestaña, y hay Servicios (Nueva Terminal en Carpeta) que puede usar desde el menú contextual para abrir una nueva ventana o pestaña para un carpeta seleccionada en Finder u otras aplicaciones (o incluso un nombre de ruta seleccionado en el texto).

Para hacer el equivalente desde la línea de comandos (o un script de shell):

open -a Terminal /path/to/folder

Este es el equivalente en la línea de comandos de arrastrar la carpeta al ícono de la aplicación Terminal. (También puede proporcionar una ruta completa para Terminal si desea especificar una copia/versión particular de la aplicación).

Funciona perfecto!!

No estoy seguro si lo siguiente funciona desde un script bash, pero al menos descubrí cómo abrir pestañas específicas en directorios específicos:

En las Preferencias, en Configuración, copia el perfil que normalmente le gustaría usar. En Shell, puede indicarle "Ejecutar comando": cd /some/directory. También querrá marcar "Ejecutar dentro del shell". Opcionalmente, puede especificar un título en Ventana.

Agregue más perfiles de esta manera.

Luego cierre todas las ventanas de la terminal, luego abra un perfil en una nueva ventana, más otro perfil en una nueva pestaña, más otro perfil en una nueva pestaña. Ahora tienes una ventana con tres pestañas. Guarde esto como un grupo de ventanas.

De ahora en adelante, siempre que tenga Terminal en ejecución, puede abrir este grupo de ventanas y obtendrá una nueva ventana con estas pestañas en estos directorios.

Pregunta abierta: ¿cómo le digo a Terminal que abra un nuevo grupo de ventanas, desde un script bash?

Eso solo funciona si desea que la nueva ventana se abra con su shell predeterminado. No funciona, por ejemplo, si su shell predeterminado es tcsh y desea abrir una nueva ventana de terminal ejecutando bash en un directorio determinado.