Alias Bash non puoi vivere senza
Un alias Bash è un metodo per integrare o sovrascrivere i comandi Bash con quelli nuovi. Bash alias rendono facile per gli utenti di personalizzare la loro esperienza in un terminale POSIX. Sono spesso definiti in HOME HOME/.bashrc o HOME HOME / bash_aliases (che deve essere caricato da HOME HOME/.bashrc).
La maggior parte delle distribuzioni aggiunge almeno alcuni alias popolari nel default .file bashrc di qualsiasi nuovo account utente. Questi sono semplici per dimostrare la sintassi di un alias Bash:
alias ls="ls -F"
alias ll="ls -lh"
Non tutte le distribuzioni vengono fornite con alias pre-popolati, tuttavia., Se si aggiungono alias manualmente, è necessario caricarli nella sessione Bash corrente:
$ source ~/.bashrc
Altrimenti, è possibile chiudere il terminale e riaprirlo in modo che ricarichi il file di configurazione.
Con quegli alias definiti nello script di inizializzazione Bash, puoi quindi digitare ll e ottenere i risultati di ls-l, e quando digiti ls ottieni, invece dell’output di ls vecchio semplice.
Questi alias sono fantastici da avere, ma graffiano solo la superficie di ciò che è possibile. Ecco i primi 10 alias Bash che, una volta provati, non sarai in grado di vivere senza.,
Imposta prima
Prima di iniziare, crea un file chiamato~/.bash_aliases:
$ touch ~/.bash_aliases
Quindi, assicurati che questo codice appaia nel tuo~/.file bashrc:
if ; then
source $HOME/.bash_aliases
fi
Se volete provare uno qualsiasi degli alias in questo articolo per te, inserirli nel vostro .file bash_aliases, quindi caricarli nella sessione Bash con l’origine ~/.comando bashrc.,
Ordina per dimensione file
Se hai iniziato la tua vita di calcolo con file manager GUI come Nautilus in GNOME, il Finder in macOS o Explorer in Windows, probabilmente sei abituato a ordinare un elenco di file in base alle loro dimensioni. Puoi farlo anche in un terminale, ma non è esattamente succinto.
Aggiungi questo alias alla tua configurazione su un sistema GNU:
alias lt="ls --human-readable --size -1 -S --classify"
Questo alias sostituisce lt con un comando ls che visualizza la dimensione di ogni elemento, e quindi lo ordina per dimensione, in una singola colonna, con una notazione per indicare il tipo di file., Caricare il nuovo alias, e poi provare:
Su MacOS o BSD, il comando ls non hanno le stesse opzioni, quindi questo alias funziona invece:
alias lt="du -sh * | sort -h"
I risultati di questa versione sono un po ‘ diverso:
$ du -sh * | sort -h
0 compile
0 COPYING
0 install-sh
0 missing
4.0K configure.ac
4.0K dot-gitlab.ci.yml
4.0K flatpak.path.patch
4.0K git-portal.spec
4.0K info.slackermedia.Git-portal.json
4.0K Makefile.am
8.0K README.md
12K config.log
16K bin
24K Makefile
24K Makefile.in
32K config.status
36K LICENSE
44K aclocal.m4
60K share
140K configure
476K autom4te.cache
In effetti, anche su Linux, il comando è utile, perché l’utilizzo di ls elenca le directory e i collegamenti simbolici a 0 in dimensioni, che non possono essere le informazioni che vuoi. E ‘ una tua scelta.
Grazie a Brad Alexander per questa idea alias.
Visualizza solo unità montate
Il comando mount era così semplice., Con un solo comando, è possibile ottenere un elenco di tutti i filesystem montati sul computer, ed è stato spesso utilizzato per una panoramica di quali unità sono state collegate a una workstation. Era impressionante vedere più di tre o quattro voci perché la maggior parte dei computer non ha molte più porte USB di quelle, quindi i risultati erano gestibili.,
i Computer sono un po ‘ più complicato ora, e tra LVM, fisica unità di archiviazione di rete, e filesystem virtuali, i risultati del monte può essere difficile da analizzare:
Per risolvere il problema, provare un alias come questo:
alias mnt="mount | awk -F" " "{ printf \"%s\t%s\n\",\$1,\$3; }" | column -t | egrep ^/dev/ | sort"
Questo alias usa awk per analizzare l’output di mount da colonna ridurre la portata di quello che probabilmente cercando (quali hard disk, e non i file system montati):
Su MacOS, il comando mount non fornisce terribilmente output dettagliato, in modo che un alias può essere eccessivo., Tuttavia, se preferisci un rapporto succinto, prova questo:
alias mnt="mount | grep -E ^/dev | column -t"
I risultati:
Trova un comando nella tua cronologia grep
A volte capisci come fare qualcosa nel terminale e prometti a te stesso che non dimenticherai mai quello che hai appena imparato. Poi passa un’ora e hai completamente dimenticato quello che hai fatto.
La ricerca attraverso la cronologia Bash è qualcosa che tutti devono fare di volta in volta., Se sai esattamente cosa stai cercando, puoi usare Ctrl + R per fare una ricerca inversa nella cronologia, ma a volte non riesci a ricordare il comando esatto che vuoi trovare.
Ecco un alias per rendere il compito un po ‘ più facile:
alias gh="history|grep"
Ecco un esempio di utilizzo:
$ gh bash
482 cat ~/.bashrc | grep _alias
498 emacs ~/.bashrc
530 emacs ~/.bash_aliases
531 source ~/.bashrc
Ordina per data di modifica
succede ogni lunedì: Si inizia a lavorare, ci si siede al computer, aprire un terminale, e ci si accorge di aver dimenticato ciò che si stava facendo, venerdì scorso., Quello che ti serve è un alias per elencare i file modificati più di recente.
Puoi usare il comando ls per creare un alias per aiutarti a trovare dove avevi interrotto:
alias left="ls -t -1"
L’output è semplice, anche se puoi estenderlo con l’opzione long long se preferisci., L’alias, come elencato, mostra questo:
$ left
demo.jpeg
demo.xcf
design-proposal.md
rejects.txt
brainstorm.txt
query-letter.xml
Conta file
Se hai bisogno di sapere quanti file hai in una directory, la soluzione è uno dei più classici esempi di costruzione dei comandi UNIX: elenca i file con il comando ls, controlla che il suo output sia solo una colonna con l’opzione -1, e poi convoglia l’output al comando wc (word count) per contare quante righe di singoli file ci sono.
È una brillante dimostrazione di come la filosofia UNIX consenta agli utenti di costruire le proprie soluzioni utilizzando piccoli componenti di sistema., Questa combinazione di comandi è anche molto da digitare se ti capita di farlo più volte al giorno, e non funziona esattamente per una directory di directory senza usare l’opzione-R, che introduce nuove linee all’output e rende l’esercizio inutile.
Invece, questo alias rende il processo facile:
alias count="find . -type f | wc -l"
Questo conta i file, ignorando le directory, ma non il contenuto delle directory. Se si dispone di una cartella di progetto contenente due directory, ognuna delle quali contiene due file, l’alias restituisce quattro, perché ci sono quattro file nell’intero progetto.,
$ ls
foo bar
$ count
4
Crea un ambiente virtuale Python
Codifichi in Python?
Codifichi molto in Python?
Se lo fai, allora sai che la creazione di un ambiente virtuale Python richiede, per lo meno, 53 sequenze di tasti.
Sono 49 troppi, ma sono facilmente aggirabili con due nuovi alias chiamati ve e va:
alias ve="python3 -m venv ./venv"
alias va="source ./venv/bin/activate"
L’esecuzione di ve crea una nuova directory, chiamata venv, contenente il solito filesystem dell’ambiente virtuale per Python3., L’alias va attiva l’ambiente nella shell corrente:
$ cd my-project
$ ve
$ va
(venv) $
Aggiungi una barra di avanzamento della copia
Tutti prendono in giro le barre di avanzamento perché sono infamamente imprecise. Eppure, in fondo, tutti sembrano volerli. Il comando cp UNIX non ha alcuna barra di avanzamento, ma ha l’opzione a-v per la verbosità, il che significa che riecheggia il nome di ogni file copiato sul tuo terminale. Questo è un trucco abbastanza buono, ma non funziona così bene quando si copia un file di grandi dimensioni e si desidera un’indicazione di quanto del file deve ancora essere trasferito.,
Il comando pv fornisce una barra di avanzamento durante la copia, ma non è comune come applicazione predefinita. D’altra parte, il comando rsync è incluso nell’installazione predefinita di quasi tutti i sistemi POSIX disponibili ed è ampiamente riconosciuto come uno dei modi più intelligenti per copiare i file sia da remoto che localmente.
Meglio ancora, ha una barra di avanzamento integrata.,
alias cpv="rsync -ah --info=progress2"
Usare questo alias equivale a usare il comando cp:
$ cpv bigfile.flac /run/media/seth/audio/
3.83M 6% 213.15MB/s 0:00:00 (xfr#4, to-chk=0/4)
Un effetto collaterale interessante dell’uso di questo comando è che rsync copia sia i file che le directory senza il flag-r che cp richiederebbe altrimenti.
Proteggersi da incidenti di rimozione dei file
Non si dovrebbe usare il comando rm. Il manuale rm dice anche così:
Attenzione: Se si utilizza ‘rm’ per rimuovere un file, di solito è possibile recuperare il contenuto di quel file., Se vuoi maggiori garanzie che i contenuti siano veramente irrecuperabili, considera l’utilizzo di ‘shred’.
Se si desidera rimuovere un file, è necessario spostare il file nel Cestino, proprio come si fa quando si utilizza un desktop.
POSIX rende questo facile, perché il Cestino è una posizione accessibile e reale nel tuo filesystem. Tale posizione può cambiare, a seconda della piattaforma: su un FreeDesktop, il Cestino si trova a ~/.locale / condividi / Cestino, mentre su macOS è~/.,Cestino, ma in entrambi i casi, è solo una directory in cui si inseriscono i file che si desidera fuori dalla vista fino a quando si è pronti a cancellarli per sempre.
Questo semplice alias fornisce un modo per lanciare i file nel Cestino da terminale:
alias tcn="mv --force -t ~/.local/share/Trash "
Questo alias usa un po ‘ conosciuto mv flag che consente di fornire il file che si desidera spostare come argomento finale, ignorando il requisito usuale che il file elencati prima., Ora puoi usare il tuo nuovo comando per spostare file e cartelle nel Cestino del sistema:
$ ls
foo bar
$ tcn foo
$ ls
bar
Ora il file è “andato”, ma solo fino a quando non ti rendi conto in un sudore freddo che ne hai ancora bisogno. A quel punto, è possibile salvare il file dal Cestino del sistema; essere sicuri di punta gli sviluppatori Bash e mv sulla via d’uscita.
Nota: se hai bisogno di un comando Trash più robusto con una migliore conformità FreeDesktop, vedi Trashy.
Semplifica il tuo flusso di lavoro Git
Tutti hanno un flusso di lavoro unico, ma di solito ci sono attività ripetitive indipendentemente da cosa., Se lavori con Git su base regolare, probabilmente c’è qualche sequenza che ti ritrovi a ripetere abbastanza frequentemente. Forse ti ritrovi a tornare al ramo master e a tirare le ultime modifiche più e più volte durante il giorno, o forse ti ritrovi a creare tag e poi a spingerli sul telecomando, o forse è qualcos’altro interamente.
Non importa quale incantesimo Git ti sia stancato di digitare, potresti essere in grado di alleviare un po ‘ di dolore con un alias Bash., In gran parte grazie alla sua capacità di passare argomenti agli hook, Git ha un ricco set di comandi introspettivi che ti salvano dal dover eseguire imprese misteriose in Bash.
Ad esempio, mentre potresti avere difficoltà a individuare, in Bash, la directory di primo livello di un progetto (che, per quanto riguarda Bash, è una designazione del tutto arbitraria, poiché il livello superiore assoluto di un computer è la directory principale), Git conosce il suo livello superiore con una semplice query., Se studi su Git hooks, ti troverai in grado di scoprire tutti i tipi di informazioni di cui Bash non sa nulla, ma puoi sfruttare tali informazioni con un alias Bash.,
Ecco un alias per trovare il livello superiore di un progetto Git, non importa dove nel progetto che si sta lavorando, e quindi per cambiare directory, modificare il branch master, ed esegui Git pull:
alias startgit="cd `git rev-parse --show-toplevel` && git checkout master && git pull"
Questo tipo di alias non è affatto universalmente utile alias, ma dimostra come un semplice alias in grado di eliminare un sacco di navigazione faticosa, comandi, e in attesa di istruzioni.
Un alias più semplice, e probabilmente più universale, ti riporta al livello superiore del progetto Git., Questo alias è utile perché quando stai lavorando su un progetto, quel progetto diventa più o meno la tua directory” casa temporanea”. Dovrebbe essere semplice andare “home” come lo è andare alla tua vera casa, ed ecco un alias per farlo:
alias cg="cd `git rev-parse --show-toplevel`"
Ora il comando cg ti porta in cima al tuo progetto Git, non importa quanto in profondità nella sua struttura di directory tu abbia disceso.,
Cambiare directory e visualizzare il contenuto allo stesso tempo
Una volta è stato (presumibilmente) proposto da uno scienziato leader che potremmo risolvere molti dei problemi energetici del pianeta sfruttando l’energia spesa dai geek digitando cd seguito da ls.
È un modello comune, perché generalmente quando si cambiano le directory, si ha l’impulso o la necessità di vedere cosa c’è intorno.
Ma “camminare” nell’albero delle directory del tuo computer non deve essere un processo start-and-stop.
Questo è barare, perché non è affatto un alias, ma è un’ottima scusa per esplorare le funzioni Bash., Mentre gli alias sono grandi per sostituzioni rapide, Bash consente di aggiungere funzioni locali nel vostro .file bashrc (o un file di funzioni separato in cui si carica .bashrc, proprio come fai il tuo file di alias).
Per mantenere le cose modulari, creare un nuovo file chiamato ~/.bash_functions e poi avere il vostro .,bashrc lo carica:
if ; then
source $HOME/.bash_functions
fi
Nel file functions, aggiungi questo codice:
Carica la funzione nella tua sessione Bash e poi provala:
$ source ~/.bash_functions
$ cl Documents
foo bar baz
$ pwd
/home/seth/Documents
$ cl ..
Desktop Documents Downloads
$ pwd
/home/seth
Le funzioni sono molto più flessibili degli alias, ma con questa flessibilità ti viene la responsabilità di assicurarti che il tuo codice abbia senso e faccia quello che ti aspetti. Gli alias sono pensati per essere semplici, quindi tienili facili, ma utili. Per modifiche gravi al comportamento di Bash, utilizzare funzioni o script di shell personalizzati salvati in una posizione nel percorso.,
Per la cronaca, ci sono alcuni hack intelligenti per implementare la sequenza cd e ls come alias, quindi se sei abbastanza paziente, allora il cielo è il limite anche usando umili alias.