Aprire una finestra di terminale in una directory specifica da uno script bash


6

Come posso scrivere uno script bash in Mac OS X che apre una finestra Terminale in una directory specifica? Assumerei qualcosa del tipo:

open /Applications/Utilities/Terminal.app

Ma questo non fa nulla (forse sta caricando l'applicazione Terminale che è già aperta invece di lanciare una nuova finestra di Terminale). E ovviamente non inserisce cd in una directory perché non ho specificato che ...

Risposte:


5

Ecco una piccola sceneggiatura che ho messo a tacere:

#!/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

Se si salva questo e lo si rende eseguibile

chmod +x script_filename

e poi eseguirlo

script_filename ~/Desktop

quindi aprirà una nuova finestra di terminale e passerà alla directory nell'argomento.


5

A partire da Mac OS X Lion 10.7, se apri una cartella con Terminal, verrà creato un nuovo terminale in quella posizione. ad esempio, puoi trascinare una cartella sull'icona dell'applicazione Terminale, o in una barra delle schede per creare una nuova scheda, e ci sono Servizi (Nuovo Terminale nella Cartella) che puoi usare dal menu contestuale per aprire una nuova finestra o scheda per un cartella selezionata in Finder o altre applicazioni (o anche un nome di percorso selezionato nel testo).

Per fare l'equivalente dalla riga di comando (o da uno script di shell):

open -a Terminal /path/to/folder

Questo è l'equivalente della riga di comando di trascinare la cartella sull'icona dell'applicazione Terminale. (È anche possibile fornire un percorso completo per Terminal se si desidera specificare una copia / versione particolare dell'applicazione.)


Funziona perfettamente !!
at01

0

Non sono sicuro che quanto segue funzioni da uno script bash, ma almeno ho scoperto come aprire schede specifiche in directory specifiche:

Nelle Preferenze, sotto Impostazioni, copi il profilo che vorresti normalmente utilizzare. Sotto Shell, puoi dire a "Esegui comando": cd /some/directory. Dovrai anche controllare "Esegui all'interno della shell". Facoltativamente, puoi specificare un titolo sotto Finestra.

Aggiungi altri profili in questo modo.

Quindi chiudi tutte le finestre del terminale, quindi apri un profilo in una nuova finestra, più un altro profilo in una nuova scheda, più un altro profilo in una nuova scheda. Ora hai una finestra con tre schede. Salva questo come un gruppo di finestre.

D'ora in poi, ogni volta che il terminale è in esecuzione, puoi aprire questo gruppo di finestre e otterrai una nuova finestra con queste schede in queste directory.

Domanda aperta: come faccio a dire a Terminal di aprire un nuovo gruppo di finestre, da uno script bash?


Funziona solo se vuoi che la nuova finestra si apra con la tua shell predefinita. Ad esempio, non funziona se la shell predefinita è tcsh e si desidera aprire una nuova finestra di terminale che esegua bash in una determinata directory.
Mitchell Model
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.