Come posso importare un file .terminal usando la riga di comando?


3

Sto scrivendo uno script (Bash) per automatizzare la creazione di mio ambiente Mac e vorrei fare questo , ad eccezione utilizzando solo la riga di comando. Vorrei anche rendere predefinito quel tema.

Ho un file .terminal esportato e tutto pronto, non riesco proprio a capire come farlo a livello di codice. C'è una documentazione per questo da qualche parte che mi manca?

... o sarebbero più facili usando AppleScript? Non l'ho mai fatto prima però.


Perché vuoi fare questa impostazione da una shell e non direttamente dall'interno Terminal?
dan,

@danielAzuelos Quindi posso automatizzare il processo.
Matt,

1
Come intendi eseguire questo script di shell? Da un Terminal?
dan,

Beh, almeno da un guscio. Se dovessi farlo da un Terminale, si spera che questo script di automazione sia l'unico che dovrei eseguire nelle impostazioni Terminale predefinite.
Matt,

→ Matt: devi eseguire questa configurazione più di una volta (cioè su più di un account o su più di un computer)?
dan

Risposte:


1

Utilizzare il opencomando, seguito dalla modifica delle preferenze:

open ~/MyTerminalSettings.terminal
defaults write com.apple.terminal "Default Window Settings" "MyTerminalSettings"

Il opencomando aprirà ulteriormente una nuova finestra Terminale, ma lo script continuerà a essere eseguito nella finestra originale e, se necessario, è possibile chiudere la nuova finestra.


Questo apre una finestra terminale che potrebbe intralciare (anche se forse può essere soffocata) - e sembra importare il tema ... ma come lo imposterei come tema predefinito?
Matt,

0

Questa non è una risposta ma i mattoni di base che dovrai usare per scrivere il tuo script di shell.

  1. Verifica che Terminalnon sia in esecuzione per evitare di corromperne il plist:

    se ps ax | grep '[/] Terminal'> / dev / null 2> & 1; poi
        Terminale echo in esecuzione! > & 2 && esci 2
    fi
    # Vai avanti
    

    attenzione a ciò [/]che è qui per evitare il greptuo grep comando che avrà sempre successo.

  2. Converti il ​​tuo Terminalplist in un file di testo con:

        
    plutil -convert xml1 ~ / Library / Preferences / com.apple.Terminal.plist
    
  3. Rimuovi il tuo .terminalfile dalla sua intestazione, diciamo che il suo nome è imported.terminal

    sed -n '/<dict>/,/<\/dict>/p' imported.terminal >tmp.terminal
  4. Inserisci questo tmp.terminalplist all'interno del ~/Library/Preferences/com.apple.Terminal.plist dizionario giusto.

    Ciò richiederà alcune analisi di contesto per farlo bene. Avevo scelto perlse dovessi farlo, ma awk, exo sedpotrebbe essere più facile con poche righe e test.


2
Potrebbe essere un po 'complicato non avere Terminal in esecuzione mentre hai una sceneggiatura in esecuzione in Terminal :-)
nohillside

Ho pensato che Matt volesse farlo da una shell e non direttamente da un Terminale perché non lo sta facendo da un Terminale (ad esempio tramite a ssh). Ma questo dovrebbe essere chiarito.
dan,

In entrambi i casi. Qualunque sia più facile.
Matt,

1
Come notato da Patrix, un percorso sarà difficile. Non è possibile modificare facilmente Terminalplist se la shell che esegue l'attività è biforcuta da questo stesso Terminalprogramma. Quando Terminalterminerà, sovrascriverà tutte le modifiche fatte finora. Questo è stato il motivo del mio suggerito passaggio 1.
dan

Vero, ok, capito.
Matt,
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.