comando shell macOS per creare una nuova finestra del terminale
Certo, puoi facilmente creare una nuova finestra del terminale dal menu ‘Shell’ o usando la scorciatoia da tastiera ⌘N (o ⌘T). Ma in alcuni casi, può essere più utile usare un comando di shell.
Le nuove finestre create con la scorciatoia da tastiera o dal menu avranno sempre la directory home ~
come directory di lavoro corrente. Quello che voglio, è una nuova finestra che abbia come default la directory di lavoro corrente o una directory personalizzata che posso fornire con un argomento:
> new # opens a new terminal window at the current working directory> new ~/Desktop # opens a new terminal window at ~/Desktop
Nessuna fortuna con AppleScript
Dopo il mio ultimo successo con AppleScript, ho pensato che questa sarebbe stata di nuovo la soluzione migliore. Sfortunatamente, questo particolare pezzo del dizionario AppleScript è rotto. I comandi make new window
o make new tab
falliscono con errori e ho provato diverse combinazioni.
Dopo alcune ricerche sul web, sembra che questo sia stato rotto per molto tempo. Ho archiviato un problema in Feedback Assistant.
Puoi creare una nuova finestra del Terminale con AppleScript usando il comando do script
nel dizionario del Terminale. (Da non confondere con do shell script
.) Quindi questo AppleScript fa più o meno quello che voglio, ma sembra macchinoso.
tell application "Terminal" do script "cd ~/Desktop"end tell
Se conosci un modo migliore per creare una nuova finestra del Terminale o, ancora meglio, una scheda del Terminale con AppleScript, fammelo sapere. (Niente soluzioni di UI Scripting – quelle hanno i loro problemi.) Ho alcune altre idee in cui questo potrebbe essere utile.
Inserisci il comando open
Durante queste ricerche sul web, ho anche trovato suggerimenti per usare il comando open
, invece:
> open -a Terminal ~/Documents
Aprirà una nuova finestra del Terminale con ~/Documents
come directory di lavoro. Questo è già molto vicino a quello che volevo.
Ho creato questa funzione nel mio file di configurazione della shell (bash, zsh):
# creates a new terminal windowfunction new() { if ]; then open -a "Terminal" "$PWD" else open -a "Terminal" "$@" fi}
Con questo, ora posso digitare
> new Projects/desktoppr
e ottenere una nuova finestra del Terminale. Questo è molto utile se combinato con la variabile di sostituzione della cronologia !$
(ultimo argomento del comando precedente):
> mkdir Projects/great_new_tool> new !$
E un effetto collaterale inaspettato, ma utile, è che la funzione new
può anche aprire una sessione ssh in una nuova finestra:
> new ssh://[email protected]
Spero che anche tu lo trovi utile!