Bash aliaser du ikke kan leve uten
En Bash alias er en metode for å supplere eller overordnede Bash-kommandoer med nye. Bash aliaser gjøre det enkelt for brukerne å tilpasse sine erfaringer i et POSIX-terminal. De er ofte definert i $HOME/.bashrc eller $HOME/bash_aliases (som må lastes av $HOME/.bashrc).
de Fleste distribusjoner minst legge til noen populære aliaser i standard .bashrc filen til en ny brukerkonto. Disse er enkle å demonstrere syntaksen for en Bash alias:
alias ls="ls -F"
alias ll="ls -lh"
Ikke alle distribusjoner skip med forhåndsutfylt aliaser, skjønt., Hvis du vil legge til aliaser manuelt, må du legge dem inn i din nåværende Bash session:
$ source ~/.bashrc
hvis ikke, kan du lukke din terminal og re-åpne den slik at den laster sin konfigurasjonsfil.
Med de aliaser definert i Bash-initialisering skript, kan du deretter type ll og få resultatene av ls -l, og når du skriver ls får du, i stedet for produksjon av ren gamle ls.
De aliaser er flott å ha, men de bare skrape i overflaten av hva som er mulig. Her er topp 10 Bash aliaser at, når du prøver dem, vil du ikke være i stand til å leve uten.,
Sett opp første
Før du begynner må du opprette en fil som heter ~/.bash_aliases:
$ touch ~/.bash_aliases
Så, sørg for at denne koden vises i din ~/.bashrc file:
if ; then
source $HOME/.bash_aliases
fi
Hvis du ønsker å prøve noen av aliaser i denne artikkelen for deg, skriv dem inn .bash_aliases filen, og deretter laste dem inn i din Bash økt med kilden ~/.bashrc kommando.,
Sorter etter filstørrelse
Hvis du startet din computing liv med GUI-fil ledere som Nautilus i GNOME, Finder i MacOS, eller Explorer i Windows, så er du sannsynligvis brukes til å sortere en liste over filer av deres størrelse. Du kan gjøre det på en terminal som godt, men det er ikke akkurat tydelige.
Legg til dette aliaset til konfigurasjonen på en GNU-systemet:
alias lt="ls --human-readable --size -1 -S --classify"
Dette alias erstatter lt med en ls-kommandoen som viser størrelsen av hvert element, og deretter sorterer etter størrelse, i en enkelt kolonne, med en notasjon for å indikere hvilken type fil., Legg til din nye alias, og deretter prøve det ut:
På MacOS eller BSD, ls-kommandoen ikke har de samme alternativene, så dette alias fungerer i stedet:
alias lt="du -sh * | sort -h"
resultatene av denne versjonen er litt annerledes:
$ 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
faktisk, selv på Linux, at kommandoen er nyttig, fordi du bruker ls-lister, kataloger og symlinker som å være 0 i størrelse, noe som ikke kan være informasjon du faktisk ønsker. Det er ditt valg.
Takk for Brad Alexander for denne alias idé.
Vis bare monterte stasjoner
mount-kommandoen brukes for å være så enkelt., Med bare én kommando, kan du få en liste over alle monterte filsystemer på datamaskinen, og det var ofte brukt for en oversikt over hvilke stasjoner ble festet til en arbeidsstasjon. Det pleide å være imponerende å se mer enn tre eller fire ganger fordi de fleste datamaskiner har ikke mange flere USB-porter enn det, så resultatene var håndterbare.,
Datamaskiner er litt mer komplisert nå, og mellom LVM, fysiske harddisker, nettverk og lagring, og virtuelle filsystemer, resultatene av fjellet kan være vanskelig å analysere:
for Å løse det problemet, kan du prøve et alias som dette:
alias mnt="mount | awk -F" " "{ printf \"%s\t%s\n\",\$1,\$3; }" | column -t | egrep ^/dev/ | sort"
Dette alias bruker awk til å analysere resultatet av mount av kolonnen, å redusere utgang til hva du sannsynligvis ute etter (hva harddisker, og ikke filsystemer, er montert):
På MacOS, mount-kommandoen ikke gi veldig detaljert utgang, så et alias kan være overkill., Imidlertid, hvis du foretrekker en konsis, rapport, kan du prøve dette:
alias mnt="mount | grep -E ^/dev | column -t"
resultatene:
Finn en kommando i ditt grep historie
noen Ganger vil du finne ut hvordan du skal gjøre noe i terminalen, og lover deg at du aldri glemme hva du nettopp har lært. Deretter en time går, og du har helt glemt hva du gjorde.
Søker gjennom Bash historie er noe alle har å gjøre fra tid til annen., Hvis du vet nøyaktig hva du leter etter, kan du bruke Ctrl+R for å gjøre et søk bakover gjennom din historie, men noen ganger du ikke kan huske det nøyaktige kommandoen du ønsker å finne.
Her er et alias for å gjøre oppgaven litt enklere:
alias gh="history|grep"
Her er et eksempel på hvordan du bruker det:
$ gh bash
482 cat ~/.bashrc | grep _alias
498 emacs ~/.bashrc
530 emacs ~/.bash_aliases
531 source ~/.bashrc
Sorter etter modifikasjon tid
Det skjer hver mandag: Du kommer til å jobbe, du setter deg ned ved datamaskinen, kan du åpne en terminal, og du finner ut at du har glemt hva du gjorde sist fredag., Det du trenger er et alias for å liste opp de nylig endrede filer.
Du kan bruke ls-kommandoen for å opprette et alias for å hjelpe deg med å finne hvor du slapp:
alias left="ls -t -1"
output er enkelt, selv om du kan utvide den med –lang alternativet hvis du foretrekker det., Alias, som nevnt, viser dette:
$ left
demo.jpeg
demo.xcf
design-proposal.md
rejects.txt
brainstorm.txt
query-letter.xml
Telle filer
Hvis du trenger å vite hvor mange filer du har en katalog, løsningen er en av de mest klassiske eksempler på UNIX-kommando konstruksjon: Du liste filer med ls kommando -, kontroll-sin produksjon til å være bare én kolonne med -1 alternativ, og trykk deretter rør det ut til wc (word count) – kommandoen til å telle hvor mange linjer i enkelt-filer det er.
Det er en glimrende demonstrasjon av hvordan UNIX filosofi tillater brukere å bygge sine egne løsninger ved hjelp av små systemkomponenter., Denne kommandoen kombinasjon er også mye å skrive hvis du skje for å gjøre det flere ganger om dagen, og det ikke akkurat arbeid for en katalog av kataloger uten å bruke -R-alternativet, som introduserer nye linjer til utgang og gjør øvelsen ubrukelig.
i Stedet, dette alias gjør prosessen enkel:
alias count="find . -type f | wc -l"
Dette teller filer, ignorerer kataloger, men ikke innholdet i kataloger. Hvis du har et prosjekt mappe som inneholder to kategorier, som hver inneholder to filer, alias returnerer fire, fordi det er fire filer i hele prosjektet.,
$ ls
foo bar
$ count
4
Opprette en Python-virtuelle miljøet
har du kode i Python?
har du kode i Python mye?
Hvis du gjør det, da vet du at du oppretter en Python-virtuelle miljøet krever, i det minste, 53 tastetrykk.
Det er 49 for mange, men som er lett å omgås med to nye aliaser kalles ve og va:
alias ve="python3 -m venv ./venv"
alias va="source ./venv/bin/activate"
å Kjøre ve lager en ny mappe, kalt venv, som inneholder vanlige virtuelt miljø filsystem for Python3., Det va alias aktiverer miljø i din nåværende shell:
$ cd my-project
$ ve
$ va
(venv) $
Legg til en kopi fremgang bar
Alle kakker gøy på fremgang barer fordi de er infamously unøyaktig. Og likevel, dypt nede, vi alle ser ut til å ha dem. UNIX-cp-kommandoen har ingen fremgang bar, men det har a-v alternativet for detaljnivå, noe som betyr at det gjenspeiler navnet på hver fil blir kopiert til din terminal. Det er en ganske god hack, men det fungerer ikke så godt når du kopierer en stor fil, og ønsker en viss indikasjon på hvor mye av filen har ennå å bli overført.,
pv-kommandoen gir en fremgang bar under kopiering, men det er ikke vanlig som et standard program. På den annen side, rsync-kommandoen er inkludert i standard-installasjonen av nesten alle POSIX-system tilgjengelig, og det er allment anerkjent som en av de smarteste måtene å kopiere filer både eksternt og lokalt.
enda Bedre, den har en innebygd i fremgang.,
alias cpv="rsync -ah --info=progress2"
ved Hjelp av denne alias er det samme som å bruke cp-kommandoen:
$ cpv bigfile.flac /run/media/seth/audio/
3.83M 6% 213.15MB/s 0:00:00 (xfr#4, to-chk=0/4)
En interessant bivirkning av å bruke denne kommandoen er at rsync kopier både filer og mapper uten -r flagg som cp ellers ville kreve.
Beskytte deg selv fra fil fjerning ulykker
Du bør ikke bruke rm-kommandoen. Rm manuell selv sier så:
Advarsel: Hvis du bruker rm’ for å fjerne en fil, er det vanligvis mulig å gjenopprette innholdet i denne filen., Hvis du vil ha mer sikkerhet for at innholdet er virkelig ikke kan gjenopprettes, bør du vurdere å bruke «shred’.
Hvis du vil fjerne en fil, bør du flytte filen til Papirkurven, akkurat som du gjør når du bruker en stasjonær pc.
POSIX gjør dette enkelt, fordi Søppel er et lett tilgjengelig, faktiske plasseringen i filsystemet. Denne plasseringen kan endre seg, avhengig av din plattform: På en FreeDesktop, Papirkurven ligger i ~/.local/share/Søppel, mens på MacOS det er ~/.,Søppel, men uansett, det er bare en katalog der du kan plassere filer som du ønsker ut av syne før du er klar for å slette dem for alltid.
Denne enkle alias gir en måte å kaste filer til Papirkurven fra din terminal:
alias tcn="mv --force -t ~/.local/share/Trash "
Dette alias bruker en lite kjent mv flagg som gjør det mulig for deg å gi den filen du ønsker å flytte som det siste argumentet, ignorerer de vanlige krav for at filen skal vises først., Nå kan du bruke din nye kommandoen til å flytte filer og mapper til systemet Søppel:
$ ls
foo bar
$ tcn foo
$ ls
bar
Nå fil er «borte», men bare inntil du innser i en kald svette at du fortsatt trenger det. På dette punktet, kan du gjenopprette filen fra ditt system Søppel, så pass på å tips Bash og mv utviklere på vei ut.
Merk: Hvis du trenger en mer robust Søppel kommando med bedre FreeDesktop samsvar, se Trashy.
Forenkle Git arbeidsflyt
Alle har en unik arbeidsflyt, men det er vanligvis repeterende oppgaver uansett hva., Hvis du arbeider med Git på en jevnlig basis, så er det sannsynligvis noen sekvens du finne deg selv gjentatte ganske ofte. Kanskje du finner deg selv å gå tilbake til master gren og å trekke de siste endringene over og over igjen i løpet av dagen, eller kanskje du finner deg selv å lage tags og deretter skyve dem til den eksterne, eller kanskje det er noe helt annet.
uansett hva Git besvergelse du har blitt lei av å skrive, du kan være i stand til å lindre noen smerte med en Bash alias., I stor grad takket være sin evne til å passere argumenter og kroker, Git har et rikt sett av innadvendt kommandoer som kan spare deg fra å måtte utføre forbløffende prestasjon i Bash.
For eksempel, mens du kan slite med å finne, i Bash, et prosjekt top-level katalogen (som, så langt som Bash er opptatt av, er en helt vilkårlig betegnelse, siden den absolutt høyeste nivå til en datamaskin er rotkatalogen), Git kjenner sin øverste nivå med en enkel spørring., Hvis du studerer opp på Git kroker, vil du finne deg selv i stand til å finne ut alle typer informasjon som Bash vet ingenting om, men du kan utnytte denne informasjonen med en Bash alias.,
Her er et alias for å finne det øverste nivået i en Git prosjekt, uansett hvor i det prosjektet du jobber, og deretter til endre katalogen til det, kan du endre til master gren, og utføre en Git pull:
alias startgit="cd `git rev-parse --show-toplevel` && git checkout master && git pull"
Denne typen alias er på ingen måte et universelt nyttig alias, men det viser hvordan en relativt enkel alias kan eliminere mye av arbeidskrevende navigasjon, kommandoer, og venter på ber.
En enklere og sannsynligvis mer universell, alias, går du tilbake til Git prosjektet på øverste nivå., Dette alias er nyttig fordi når du arbeider på et prosjekt, at prosjektet mer eller mindre blir ditt midlertidige hjem» – katalogen. Det bør være så enkelt å gå «hjem» som det er å gå til den faktiske hjem, og her er et alias for å gjøre det:
alias cg="cd `git rev-parse --show-toplevel`"
Nå kommandoen cg tar deg til toppen av Git prosjekt, uansett hvor dypt inn i sin katalog struktur du har senket seg.,
Endre kataloger og vise innholdet på samme tid
Det var en gang (angivelig) er foreslått av en ledende forsker på at vi kan løse mange av verdens energiproblemer ved å utnytte energi brukt av geeks å skrive cd etterfulgt av ls.
Det er et felles mønster, fordi vanligvis når du endrer kataloger, du har impuls eller behovet for å se hva som er rundt.
Men «walking» datamaskinens directory tree trenger ikke å være en start-og stopp-prosessen.
Dette er juks, fordi det ikke er et alias på alle, men det er en god unnskyldning til å utforske Bash funksjoner., Mens aliaser er stor for rask erstatninger, Bash lar deg legge til lokale funksjoner i din .bashrc fil (eller en separat funksjoner fil som du legger inn .bashrc, akkurat som du gjør din aliaser fil).
for Å holde ting modulære, kan du opprette en ny fil kalt ~/.bash_functions, og deretter få .,bashrc legg det:
if ; then
source $HOME/.bash_functions
fi
I funksjoner-fil, legge til denne koden:
Fyll-funksjonen i din Bash-økten, og deretter prøve det ut:
$ source ~/.bash_functions
$ cl Documents
foo bar baz
$ pwd
/home/seth/Documents
$ cl ..
Desktop Documents Downloads
$ pwd
/home/seth
Funksjoner er mye mer fleksible enn aliaser, men med den fleksibilitet som kommer ansvaret for å sikre at koden din er fornuftig og gjør hva du forventer. Aliaser er ment å være enkel, så hold dem enkle, men nyttige. For alvorlige endringer til hvordan Bash oppfører seg, bruke funksjoner eller egendefinerte shell skript som er lagret på et sted i din VEI.,
For posten, det er noen smarte triks for å gjennomføre cd-og ls-sekvens som et alias, så hvis du er tålmodig nok, så himmelen er grensen selv bruker ydmyke aliaser.