La creazione di una nuova macchina può spesso essere una prospettiva eccitante. Tuttavia, come sviluppatori, ci sono molti strumenti di cui abbiamo bisogno che non vengono come standard.
In questo post, mi piacerebbe passare attraverso alcune delle tecniche che uso per aiutare a configurare la mia macchina in modo rapido, efficiente e con super poteri aggiunti.
Dopo aver letto questo articolo, dovresti essere in grado di fare quanto segue:
Prima di iniziare, avrai bisogno di capire Git e usare la riga di comando. Se non sei sicuro di cosa siano, ti consiglio di guardare oltre il seguente:
Che cosa succede se si può modellare il terminale, rendere la velocità del controllo missione più veloce, eseguire g
invece di idiota
, avere linguetta
completamento automatico indipendentemente dal caso del nome del file, controllare giornalmente gli aggiornamenti del software, non solo una volta alla settimana? E se tu potessi automatizzare la configurazione di tutte queste funzionalità con un singolo script? Suona bene? Allora questo post è per te.
Per molti aspetti la creazione di una nuova macchina dipende in gran parte dalle preferenze personali. Sono sempre in fase di refactoring e rivalutazione e ti consiglierei di fare lo stesso. Scopri cosa funziona meglio per te e condividi le tue conoscenze.
TL; DR: Investi tempo a imparare a configurare la tua macchina e ad automatizzare i processi, arriverà indietro di dieci volte.
Dotfile, così chiamato perché il nome del file inizia con a .
si trovano nella directory home dell'utente. Questi file vengono creati durante l'installazione e la configurazione della macchina. Penso a ogni puntino come a un supereroe contenente ciascuno i propri superpoteri. Ho intenzione di andare oltre ogni supereroe dotfile e i poteri che si trovano all'interno. Ma prima…
C'è molto da dire per la bellezza dei dotfile, l'impostazione automatica delle configurazioni e l'accelerazione dei processi. Potrebbe essere allettante clonare un repository ed eseguire dotfile subito, ma sconsiglierei questo perché il risultato potrebbe avere risultati indesiderati.
Prima di tutto, consiglierei di clonare alcuni repository di dotfiles esistenti. Ciò consentirà di iniziare a comprendere la struttura del file e ottenere una panoramica del codice. Di seguito sono riportati i repository GitHub di alcuni sviluppatori principali che hanno condiviso i loro dotfile:
A prima vista può sembrare scoraggiante, ma non fatevi prendere dal panico, esaminerò ogni dotfile che uso quando installo una nuova macchina. Dopo aver letto questo post, quando hai una migliore comprensione di ogni file e cosa possono fare, ti consiglio di creare il tuo repository e sfruttare i dotfile esistenti per crearlo. È quindi possibile aggiungere i file e il codice nel modo migliore per soddisfare le proprie esigenze.
Come le persone chiamano in genere il loro repository dotfiles dotfile
Ho impostato la struttura della cartella in questo modo:
└── dotfiles ├── mathias │ └── dotfiles │ ├── LICENSE-MIT.txt │ ├── README.md │ ├── bin │ │ ├── bash -> / usr / local / Cellar / bash /4.2.45/bin/bash │ │ ├── httpcompression │ │ └── subl -> / Applications / Sublime \ Text \ 3.app/Contents/SharedSupport/bin/subl │ ├── bootstrap.sh │ └─ ─ init │ └── Mathias.terminal ├── paulirish │ └── dotfiles │ ├── README.md │ ├── bin │ │ ├── github-email │ │ └── spot │ ├── install- deps.sh │ └── sync.sh └── simonowendesign └── dotfiles ├── bootstrap.sh ├── init │ ├── Mathias.terminal │ └── SolarizedDark.terminal ├── install-deps.sh └── readme.md
Qui, sto impostando una cartella principale denominata dotfiles, quindi una cartella con il nome utente e il repository. Il motivo per cui consiglio di configurarlo in questo modo è di evitare confusione. Parte del codice è abbastanza simile, quindi trovo utile vedere facilmente il codice che sto guardando. Ad esempio, se avessi quattro o più repository tutti denominati "dotfiles", questo processo sarebbe molto più difficile.
Vuoi sapere come faccio ad emettere la struttura delle cartelle in questo modo? Ho usato questa cosa fantastica chiamata albero
, installato nel .infuso
file.
Rompiamo ogni file e guardiamo cosa sta succedendo.
I dotfile sono suddivisi in due tipi principali. Quelli che contengono una serie di comandi e vengono eseguiti una sola volta, .osx
per esempio esegue un elenco di comandi e fornisce i super poteri di OS X. Altri file come .bash_profile
e .bashrc
corri ogni volta che apri una nuova sessione di Terminale e dai il superpotere del tuo Terminale.
Ecco una carrellata dei dotfiles nel mio repository e una descrizione di cosa possono fare.
È meglio eseguire prima questo. Una volta che lo controlla homebrew
è aggiornato, verrà utilizzato per installare strumenti utili come albero
.
preparare l'albero di installazione
Invece di dover andare su un sito e scaricare un'app, è anche possibile automatizzare l'installazione di alcune app utilizzando brew-botte
, ad esempio:
brew cask installa dropbox brek cask installa google-chrome
Questo file è come girare la chiave in una macchina per avviare il motore.
Quando è in esecuzione, sincronizzerà il repository locale e quello su GitHub, quindi copierà i file nella cartella principale, ignorando tutti i file esistenti se esistono.
Pertanto, prima di correre bootstrap.sh
è una buona idea fare il backup dei tuoi file dot esistenti e salvarli da qualche altra parte. Una comoda scorciatoia per arrivare ai tuoi dotfile nel Finder è:
Finder> Cmd + Maiusc + g> ~
Io uso un'app chiamata TotalFinder, questo aggiunge alcune caratteristiche interessanti al Finder. Le finestre a schede e una scorciatoia per mostrare e nascondere i file nascosti, ad esempio, mi sembrano molto utili.
Nel bootstrap.sh
noterai source ~ / .bash_profile
. Questo significa che se corri bootstrap.sh
e si aprono finestre di Terminale, le nuove impostazioni verranno applicate senza necessità di un riavvio.
Quando apri una nuova sessione di Terminale, questo file viene caricato da Bash. Carica negli altri punti percorso, bash_prompt, esportazioni, alias, funzioni, extra
e configura alcune impostazioni utili come la correzione automatica degli errori di battitura durante l'utilizzo CD
completamento.
In alcuni casi .bashrc
può essere caricato, quindi questo file lo assicura .bash_profile
è chiamato.
Mi piace il mio terminale pulito e privo di ingombri, quindi opto per non visualizzare il nome utente / computer in alto per impostazione predefinita con questo file.
Questo file accelera il processo di esecuzione di file eseguibili. Piuttosto che doverlo CD
avanti e indietro attraverso vari percorsi verso file eseguibili, puoi impostare i percorsi dei file nel tuo .sentiero
dotilfe e quindi eseguire direttamente i file eseguibili.
Generalmente, questo file non è conservato nel repository pubblico in quanto può contenere informazioni riservate.
Ecco un esempio di file ~ / .path che aggiunge ~ / utils al $ PATH:
export PATH = "$ HOME / utils: $ PATH"
Usando questo file puoi personalizzare e impostare i vari colori del tuo prompt di Bash.
Imposta le variabili di ambiente, come ad esempio l'impostazione di Vim come l'editor predefinito che utilizza export EDITOR = "vim"
. Aumenta anche la quantità di cronologia salvata, utile per il backtracking sui precedenti comandi che hai usato.
Questo file contiene alias utili per aiutarti a scrivere di meno. Ad esempio, invece di digitare 'CD…
'puoi impostarlo qui per essere'...
'. Iniziando a piacere ancora questi file? :)
Simile agli alias, tranne le funzioni possono assumere argomenti.
Prima, quando ho detto che stavo guardando diversi repository di dotfile, l'ho fatto mkdir
per creare una directory. Dopo, dovrei quindi CD
in quella directory.
Un esempio di una funzione che ritengo utile è:
# Crea una nuova directory e inseriscila funzione mkd () mkdir -p "$ @" && cd "$ @"
Ora puoi semplicemente farlo MKD
. Ora, non solo hai creato la directory, anche tu sei nella directory.
Questo file viene utilizzato per aggiungere le tue informazioni personali e non viene aggiunto al tuo repository per assicurarti che qualcuno non incolli per sbaglio il tuo progetto e inizi a impegnarsi con i tuoi dettagli. Qualcosa di carino da aggiungere qui saranno le tue credenziali Git.
Questo file è usato solo da Git, ad esempio, quando a idiota
il comando è invocato. Quindi anche se c'è un .alias
file, quegli alias vengono eseguiti direttamente.
Nel .alias
io ho g
impostato idiota
e in .gitconfig
, S
impostato stato -s
.
Ora invece di correre:
git status -s
Posso semplicemente eseguire:
g s
Imposta i file che vorresti Git ignorare sull'intero sistema. Sì, non di più .DS_Store
essere accidentalmente impegnati!
Un piccolo file che migliora la leggibilità per gvim
.
Simliar a .gitignore
per Mercurial.
In alcuni casi, ad esempio, quando tu SSH
in una macchina, potrebbe essere presentato un messaggio. Potrebbe sembrare qualcosa del genere:
_ | | _ __ ___ _ _ ___ ___ ___ | | ___ ___ _ ____ _____ _ __ | '_' _ \ | | | | / __ / _ \ / _ \ | | / __ | / _ \ '__ \ \ / / _ \ __ | | | | | | | | | _ | | | (_ | (_) | (_) | | \ __ \ __ / | \ V / __ / | | _ | | _ | | _ | \ __, | \ ___ \ ___ / \ ___ / | _ | | ___ / \ ___ | _ | \ _ / \ ___ | _ | __ / | | ___ / Benvenuti nel mio fantastico server. Qualsiasi attività dannosa e / o non autorizzata è severamente vietata..
Questo file impedisce che questo venga mostrato.
Configura l'ambiente 'Readline'. Questo controlla il modo in cui le chiavi funzionano quando stai inserendo un comando nella tua shell.
Un esempio di come trovo questo utile è quello di fare linguetta
completamento automatico indipendentemente dal caso del nome file:
imposta il completamento-ignora-caso su
Questo è il mio preferito di tutti i dotfile. Viene eseguito una volta, manualmente, affinché i comandi vengano eseguiti e abbiano effetto. A seconda di cosa è stato aggiunto a questo file, potrebbe essere necessario riavviare il computer.
Alcune delle cose fantastiche che amo sono:
Se usi schermo
, questo rimuove il messaggio di avvio.
Non mi è familiare vim
. Tuttavia, alcune delle cose che puoi fare con questo file includono l'abilitazione dei numeri di riga e l'aggiunta dell'evidenziazione della sintassi.
Mi sembra una buona idea :)
Se usi wget
, ciò aggiunge impostazioni aggiuntive come la modifica del timeout a 60 secondi anziché i 15 minuti predefiniti. Imposta anche il tentativo su tre, anziché sul valore predefinito 20!
A questo punto, ho esaminato tutti i file e sono in una fase in cui sono contento di tutto ciò che riguarda il mio repository. Qualcosa di cui non ero sicuro è stato commentato.
Ora la parte emozionante! Così com'è, abbiamo i dotfile in un repository ma dobbiamo metterli nel posto giusto in modo che possano essere trovati e usati.
Pensaci in questo modo, abbiamo Thor's Hammer, Batman's Utility Belt, Captain America's Shield e Iron Man's Suit. Tutti i nostri eroi sanno come usarli, ma senza di loro sono persi! Dobbiamo dare ai nostri supereroi le loro armi in modo che possano usarli.
Per fare ciò (con i miei file dot esistenti e il mio repository aggiornato), apri il tuo terminale, CD
al repo e corri
fonte bootstrap.sh
Il prossimo, CD
a ~
e corri:
fonte .osx
Riavvio rapido e ... Fantastici, i super poteri sono ora disponibili!!!
Trascorri molto tempo a fare cose del genere?
cd this / is / the / path / that / i / want / so / i / type / it / all / out / to / get / whereiwant
E se invece, potessi fare questo:
z dovewant
Sì grazie. Grazie https://github.com/rupa/z.
Per aggiungere questo, in .bash_profile
Ho apportato la seguente modifica:
# init z https://github.com/rupa/z. ~ / Z / z.sh
E anche in install-deps.sh
:
cd git clone https://github.com/rupa/z.git chmod + x ~ / z / z.sh
Quando esegui i tuoi dotfiles per la prima volta, potresti scoprire che non ti piace un pezzo di codice che è stato pubblicato. Ad esempio, nel .osx
file, non ero troppo appassionato di ciò che ha fatto il seguente codice:
i valori di default scrivono com.apple.dock showhidden -bool true
Questo codice ha cambiato l'opacità delle app nascoste nel dock.
Per ripristinare semplicemente questo comportamento al suo stato predefinito, ho semplicemente eseguito di nuovo il comando, questa volta cambiando vero
a falso
, come così:
i valori di default scrivono com.apple.dock showhidden -bool false
Questo lo riporta di default.
Con la maggior parte dei comandi è abbastanza ovvio di ripristinare il comando semplicemente cambiando vero
a falso
o vice versa. Con gli altri, è possibile reimpostarlo come predefinito usando default cancella
, per esempio, default cancella NSGlobalDomain AppleHighlightColor
. In alcuni casi potrebbe essere necessario riavviare la macchina.
Ora questo è per il master più avanzato di dotfile. Man mano che acquisisci più conoscenza e sicurezza utilizzando i dotfile, potresti voler includere il tuo codice.
Su una nuova macchina se trovi che stai modificando manualmente le impostazioni, queste sarebbero le migliori automatizzate.
Aggiungere il tuo .osx
i comandi possono diventare un po 'complicati!
Ma generalmente, questo è un buon punto di partenza:
valori predefiniti leggi> a
valori predefiniti leggi> b
diff a b
Facendo questo crea un file chiamato un
e B
quindi mostra la differenza tra loro, con questa conoscenza puoi quindi aprire il file B
in Sublime Text 2, cerca il bit che è cambiato e prova a elaborare il comando per cambiarlo. Se provi questo metodo, buona fortuna!
Così il gioco è fatto! Vai avanti, divertiti con i dotfile, non vedo l'ora di dare alla tua macchina i super poteri e la prossima volta che hai bisogno di configurare una macchina da zero, puoi sorridere a te stesso mentre l'intero processo è automatizzato.
Grazie mille per esserti fermato, per favore commenta qui sotto se hai domande o suggerimenti.
Sono particolarmente interessato a vedere il tuo .dotfile
repos e tutte le nuove aggiunte che fai, quindi sentiti libero di aggiungere un link al tuo repository dotfiles nei commenti qui sotto.
Questo post sul blog non sarebbe stato possibile senza il meraviglioso aiuto della community, grazie a @mathias, @paul_irish, @reybango e @AndrewPerkins.