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.