75 Comandi, plugin, alias e strumenti di Zsh
Passo gran parte della mia giornata nel terminale, e la mia shell preferita è Zsh – una shell Unix altamente personalizzabile che contiene alcune caratteristiche molto potenti. Dato che sono uno sviluppatore pigroTM, sono sempre alla ricerca di modi per digitare meno e per automatizzare tutte le cose. Fortunatamente questo è qualcosa a cui Zsh si presta bene.
In questo post, condividerò con voi 75 comandi, plugin, alias e strumenti che si spera vi faranno risparmiare alcune sequenze di tasti e vi renderanno più produttivi nel vostro lavoro quotidiano.
Se non avete Zsh installato sulla vostra macchina, allora date un’occhiata a questo post, dove vi mostro come iniziare a lavorare.
15 cose che Zsh può fare fuori dalla scatola
Zsh condivide molte caratteristiche utili con Bash. Nessuna delle seguenti è unica per Zsh, ma sono comunque buone da sapere. Ti incoraggio ad iniziare ad usare la linea di comando per eseguire operazioni come quelle elencate qui sotto. All’inizio potrebbe sembrare più faticoso che usare una GUI, ma una volta che avrai preso la mano, non guarderai più indietro.
- Inserendo
cd
da qualsiasi punto del file system ti riporterà direttamente alla tua home directory. - Inserendo
!!
si aprirà l’ultimo comando. Questo è utile se un comando fallisce perché ha bisogno dei diritti di amministratore. In questo caso puoi digitaresudo !!
. - Puoi usare
&&
per concatenare più comandi. Per esempio,mkdir project && cd project && npm init -y
. - L’esecuzione condizionata è possibile usando
||
. Per esempio,git commit -m "whatever..." || echo "Commit failed"
. - Utilizzando uno switch
-p
con il comandomkdir
vi permetterà di creare cartelle madri secondo necessità. L’uso dell’espansione delle parentesi riduce la ripetizione. Per esempio,mkdir -p articles/jim/sitepoint/article{1,2,3}
. - Imposta le variabili d’ambiente su una base per comando come segue:
NODE_DEBUG=myapp node index.js
. Oppure, su una base per sessione, in questo modo:export NODE_DEBUG=myapp
. Puoi controllare che sia stato impostato digitandoecho $<variable-name>
. - Trasmetti l’output di un comando in un secondo comando. Per esempio,
cat /var/log/kern.log | less
per rendere leggibile un lungo log, ohistory | grep ssh
per cercare qualsiasi voce della cronologia contenente “ssh”. - Puoi aprire file nel tuo editor dal terminale. Per esempio,
nano ~/.zshrc
(nano),subl ~/.zshrc
(Sublime Text),code ~/.zshrc
(VS Code). Se il file non esiste, verrà creato quando premi Save nell’editor. - La navigazione è un’abilità importante da padroneggiare. Non fare affidamento solo sui tasti freccia. Per esempio, Ctrl + a ti porterà all’inizio di una linea.
- Dove invece Ctrl + e ti porterà alla fine.
- Puoi usare Ctrl + w per cancellare una parola (all’indietro).
- Ctrl + u rimuoverà tutto dal cursore all’inizio della linea.
- Ctrl + k cancellerà tutto dal cursore alla fine della linea. Questi ultimi tre possono essere annullati con Ctrl + y.
- Puoi copiare il testo con Ctrl + Shift + c. Questo è molto più elegante che cliccare con il tasto destro e selezionare Copia.
- Inversamente, puoi incollare il testo copiato con Ctrl + shift + v.
Prova a memorizzare queste combinazioni di tasti. Sarete sorpresi di quanto spesso vi torneranno utili.
15 alias personalizzati per aumentare la vostra produttività
Gli alias sono scorciatoie del terminale per comandi regolari. Puoi aggiungerli al tuo file ~/.zshrc
, poi ricaricare il tuo terminale (usando source ~/.zshrc
) perché abbiano effetto.
La sintassi per dichiarare un (semplice) alias è la seguente:
alias =''
Gli alias sono ottimi per comandi usati spesso, comandi lunghi, o comandi con una sintassi difficile da ricordare. Ecco alcuni di quelli che uso regolarmente:
- Un alias
myip
, che stampa il tuo attuale indirizzo IP pubblico sul terminale:alias myip='curl http://ipecho.net/plain; echo'
. - A
distro
alias per stampare informazioni sulla vostra distribuzione Linux:alias distro='cat /etc/*-release'
. - A
reload
alias, dato che non riesco mai a ricordare come ricaricare il mio terminale:alias reload='source ~/.zshrc'
. - Un alias
undo-git-reset
:alias undo-git-reset-head="git reset 'HEAD@{1}'"
. Questo annulla gli effetti dell’esecuzione digit reset HEAD~
. - Un alias per aggiornare gli elenchi dei pacchetti:
alias sapu='sudo apt-get update'
. - Un alias per rieseguire il comando precedente con
sudo
:alias ffs='sudo !!'
. - Perché sono pigro, ho dato l’alias
y
al comandoyarn
:alias y='yarn'
. Questo significa che posso clonare un repo, poi basta digitare y per tirare dentro tutte le dipendenze. L’ho imparato da Scott Tolinski su Syntax. - Non è uno di quelli che uso, ma questo alias spazza via la cartella
node_modules
e rimuove il filepackage-lock.json
, prima di reinstallare le dipendenze di un progetto:alias yolo='rm -rf node_modules/ && rm package-lock.json && yarn install'
. Come probabilmente sapete, yolo sta per You Only Live Once. - Un alias per aprire il mio file
.zshrc
per la modifica:alias zshconfig='subl $HOME/.zshrc'
. - Un alias per aggiornare la lista delle versioni di Ruby che rbenv può installare:
alias update-available-rubies='cd ~/.rbenv/plugins/ruby-build && git pull'
- Un alias per avviare un server nella directory corrente (non sono richiesti pacchetti npm):
alias server='python -m SimpleHTTPServer 8000'
. - Puoi anche creare un alias per aprire la documentazione nel tuo browser:
alias npmhelp='firefox https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/npm'
. - Un alias globale per convogliare l’output di un comando a
less
:alias -g L='| less'
. Puoi usarlo in questo modo:cat production.log L
. - Un alias globale per indirizzare l’output di un comando a
grep
:alias -g G='| grep'
. Puoi usarlo in questo modo:history G ssh
. - Puoi anche usare funzioni per creare alias. Il seguente (preso da qui) crea un alias che aggiunge, impegna e spinge il codice su GitHub:
bash
function acp() {
git add .
git commit -m ""
git push
}
Ci sono molti posti dove trovare altre idee per gli alias online. Per esempio, questa discussione su Hacker News, o questo post sulla produttività della linea di comando con Zsh.
15 cose fantastiche che puoi fare con (Oh My) Zsh
Oh My Zsh è un framework guidato dalla comunità per gestire la tua configurazione Zsh e viene fornito con migliaia di utili funzioni, helper, plugin e temi. Se hai intenzione di fare della shell Z il tuo driver quotidiano, dovresti davvero installare Oh My Zsh.
Qui ci sono quindici cose utili che Oh My Zsh può fare per te:
- Il comando
take
creerà una nuova directory e vi si trasferirà.take my-project
sostituiscemkdir my-project && cd my-project
. -
zsh_stats
ti darà una lista dei primi 20 comandi e quante volte sono stati eseguiti. - Oh My Zsh semplifica la navigazione nel tuo file system. Per esempio,
..
è un alias percd ..
. - Nello stesso modo,
...
ti sposta su due directory,....
ti sposta su tre, e.....
ti sposta su quattro. - Puoi omettere il
cd
quando navighi. Digitando/
, per esempio, ti porterà direttamente alla root del tuo filesystem. - È supportata anche la corrispondenza parziale. Per esempio, digitando
/h/j/De
e premendo TAB, poi Return, mi porta a/home/jim/Desktop/
. -
rd
è un alias perrmdir
emd
è un alias permkdir -p
. - Puoi digitare
d
per elencare le ultime directory usate da una sessione di terminale. - Puoi poi navigare verso una qualsiasi di queste usando
cd -n
, doven
è il numero della directory. - Il completamento del tab è un’altra grande caratteristica. Per esempio, digitando
ls -
e premendo TAB verranno elencate tutte le opzioni del comando, insieme ad un’utile descrizione di cosa fanno. Questo funziona anche percap
,rake
,ssh
, ekill
. - Scrivendo
alias
vengono elencati tutti i tuoi attuali alias. - Con globbing (una caratteristica di Zsh), puoi elencare i file con una particolare estensione. Per esempio,
ls *.html
elencherà tutti i file HTML nella directory corrente. Per includere le sottodirectory, cambia in:ls **/*.html
. - I qualificatori globali ti permettono di selezionare i tipi di file usando dei flag. Per esempio,
ls -l **/*(.x)
troverà tutti i file eseguibili nella directory corrente e tutte le sottodirectory. - È possibile cercare i file per data di modifica. Per esempio,
ls *(m-7)
elencherà tutti i file modificati nell’ultima settimana. - È possibile cercare i file per dimensione. Per esempio,
ls *(Lm+1)
troverà tutti i file con una dimensione maggiore di 1MB.
Usare i plugin per divertimento e profitto
Oh My Zsh è fornito con molti plugin. Dovresti dare un’occhiata a questi e investire un po’ di tempo per imparare quelli che aiuteranno il tuo flusso di lavoro.
Qui ci sono tre plugin che uso regolarmente, che forniscono una tonnellata di comode scorciatoie e alias.
10 Nifty Git Aliases
Il plugin git fornisce molti alias e diverse funzioni utili. Perché non passare in rassegna questi e tentare di memorizzare la vostra top ten? Ecco quelli che uso più spesso.
-
g
è un comodo alias pergit
. Questo significa che puoi digitare cose comeg clone <whatever>
invece digit clone <whatever>
. Potrebbero essere solo due battute, ma si sommano presto. -
gaa
è un alias pergit add all
. Io lo uso sempre. -
gb
è un alias pergit branch
, che elenca tutti i rami del repo corrente e ti mostra su quale sei. -
gcb
è un alias pergit checkout -b
, il comando che ti permette di creare un nuovo ramo. -
gcm
è un alias pergit checkout master
. Questo ti riporta al ramo master. -
gdca
è un alias pergit diff --cached
. Questo ti permette di diff qualsiasi file che hai messo in scena per il commit. -
gf
è un alias pergit fetch
. -
gm
è un alias pergit merge
. -
gp
è un alias pergit push
. Per sincronizzare un fork di un repo, si potrebbe fare:gf upstream
,gm upstream/master
, seguito dagp
. -
glog
è un alias pergit log --oneline --decorate --graph
, che vi darà un bel grafico di ramo git.
10 Pratici alias di npm
Il plugin npm fornisce anche il completamento di una serie di utili alias.
-
npmg
è un alias pernpm install --global
, che puoi usare per installare globalmente le dipendenze sul tuo sistema. Per esempio,npmg nodemon
. -
npmS
è un alias pernpm install --save
, che usi per installare le dipendenze e aggiungerle alla sezionedependencies
del tuopackage.json
. Nota che, a partire da npm 5.0.0, questo è il default quando si eseguenpm i <package>
. -
npmD
è un alias pernpm install --save-dev
, che usi per installare le dipendenze e aggiungerle alla sezionedevDependencies
del tuopackage.json
. -
npmO
è un alias pernpm outdated
, che controllerà il registro per vedere se qualche (o, specifici) pacchetti installati sono attualmente obsoleti. -
npmL
è un alias pernpm list
, che elencherà i pacchetti installati. -
npmL0
è un alias pernpm list --depth=0
, che elenca i pacchetti di primo livello. Questo è particolarmente utile per vedere quali moduli sono installati globalmente senza inondare il vostro terminale con un enorme albero delle dipendenze:npmL0 -g
. -
npmst
è un alias pernpm run start
, uno script npm spesso usato per avviare un’applicazione. -
npmt
è un alias pernpm run test
, che, come si può intuire, è usato per eseguire i test. -
npmR
è un alias pernpm run
. Da solo, questo comando elencherà tutti gli script npm disponibili di un progetto, insieme ad una descrizione di ciò che fanno. Usato insieme al nome di uno script, eseguirà quello script, Per esempio,npmR build
. -
npmI
è un alias dinpm init
. Questo vi farà un mucchio di domande, poi creerà unpackage.json
basato sulle vostre risposte. Usa il flag-y
per automatizzare il processo. Per esempio,npmI -y
.
10 Alias Rails/Rake per risparmiare tempo
Questo plugin aggiunge il completamento per il framework Ruby on Rails e il programma Rake, così come alcuni alias per i log e le variabili di ambiente.
-
rc
è un alias perrails console
, che ti permette di interagire con la tua applicazione Rails dalla CLI. -
rdc
è un alias perrake db:create
, che (a meno cheRAILS_ENV
sia impostato) crea i database di sviluppo e di test per la tua applicazione. -
rdd
è un alias perrake db:drop
, che elimina i database di sviluppo e di test della tua applicazione. -
rdm
è un alias perrake db:migrate
, che eseguirà qualsiasi migrazione di database in sospeso. -
rds
è un alias perrake db:seed
, che esegue il filedb/seeds.rb
per popolare il tuo database di sviluppo con i dati. -
rgen
è un alias perrails generate
, che genera codice boilerplate. Per esempio:rgen scaffold item name:string description:text
. -
rgm
è un alias perrails generate migration
, che genererà una migrazione di database. Per esempio:rgm add_description_to_products description:string
. -
rr
è un alias perrake routes
, che elenca tutte le rotte definite di un’applicazione. -
rrg
è un alias perrake routes | grep
, che vi permetterà di elencare e filtrare le rotte definite. Per esempio,rrg user
. -
rs
è un alias perrails server
, che lancia il server web predefinito di Rails.
Risorse aggiuntive
Il compito principale dei plugin elencati sopra è di fornire alias a comandi spesso utilizzati. Siate consapevoli che ci sono molti altri plugin là fuori che aumentano la vostra shell con funzionalità aggiuntive.
Qui ci sono quattro dei miei preferiti:
- sudo vi permette di prefissare facilmente i vostri comandi attuali o precedenti con
sudo
premendo ESC due volte. - autosuggestions suggerisce comandi mentre digitate in base alla cronologia e ai completamenti. Se il suggerimento è quello che state cercando, premete il tasto → per accettarlo. Un vero risparmio di tempo!
- command-not-found: se un comando non è riconosciuto nel
$PATH
, questo userà il pacchetto command-not-found di Ubuntu per trovarlo o suggerire errori di ortografia. - z è un comodo plugin che costruisce una lista delle tue cartelle più frequenti e recenti (le chiama “frecent”) e ti permette di saltare ad esse con un solo comando.
E non dimenticare, se passi molto tempo nel terminale, vale la pena investire qualche sforzo per renderlo visivamente attraente. Fortunatamente, Oh My Zsh viene fornito con un sacco di temi tra cui scegliere. Il mio preferito è Agnoster.
Puoi saperne di più sui temi nel mio articolo 10 Zsh Tips &Tricks: Configurazione, Personalizzazione &Uso.
Conclusione
Così ci siamo: 75 comandi Zsh, plugin, alias e strumenti. Spero che abbiate imparato un trucco o due lungo la strada, e vi incoraggio ad uscire dalle vostre GUI ed entrare nel terminale. È più facile di quanto sembri e un ottimo modo per aumentare la vostra produttività.
Se mi sono perso il vostro plugin preferito, o alias/comando che vi fa risparmiare tempo, fatemelo sapere su Twitter.
Volete ottenere ancora di più dal vostro toolkit? Dai un’occhiata a Visual Studio Code: End-to-End Editing and Debugging Tools for Web Developers di Wiley.