Bash-aliaser du kan ikke leve uden

0 Comments

et Bash-alias er en metode til at supplere eller tilsidesætte Bash-kommandoer med nye. Bash-aliaser gør det nemt for brugerne at tilpasse deres oplevelse i en posi. – terminal. De er ofte defineret i $hjem/.bashrc eller $HOME/bash_aliases (som skal indlæses af $HOME/.bashrc).de fleste distributioner tilføjer mindst nogle populære aliaser i standardindstillingen .bashrc fil af enhver ny brugerkonto. Dette er enkle til at demonstrere syntaksen for et Bash-alias:

alias ls="ls -F"
alias ll="ls -lh"

ikke alle distributioner leveres dog med forudbefolkede aliaser., Hvis du tilføjer aliaser manuelt, skal du indlæse dem i din nuværende Bash-session:

$ source ~/.bashrc

ellers kan du lukke din terminal og åbne den igen, så den genindlæser dens konfigurationsfil.

med de aliaser, der er defineret i dit Bash-initialiseringsscript, kan du derefter skrive ll og få resultaterne af ls-l, og når du skriver ls, får du i stedet for output fra almindelig gammel ls.

disse aliaser er gode at have, men de ridser bare overfladen af hvad der er muligt. Her er de top 10 Bash aliaser, at når du først har prøvet dem, vil du ikke være i stand til at leve uden.,

Opsæt først

før du begynder, skal du oprette en fil kaldet~/.bash_aliases:

$ touch ~/.bash_aliases

sørg derefter for, at denne kode vises i din~/.bashrc file:

if ; then
source $HOME/.bash_aliases
fi

Hvis du selv vil prøve nogen af aliaserne i denne artikel, skal du indtaste dem i din .bash_aliases fil, og derefter indlæse dem i din Bash session med kilden ~/.bashrc kommando.,

Sortér efter filstørrelse

Hvis du startede din computing liv med GUI-fil ledere, som Nautilus i GNOME, Finder i MacOS, eller Stifinder i Windows, så er du sandsynligvis vant til at sortere en liste af filer på grund af deres størrelse. Du kan også gøre det i en terminal, men det er ikke ligefrem kortfattet.

Tilføj dette alias til din konfiguration på en GNU-system:

alias lt="ls --human-readable --size -1 -S --classify"

Dette alias lt erstatter med en ls-kommandoen, der viser størrelsen af de enkelte punkter, og så sorterer den efter størrelse, i en enkelt kolonne, med en notation for at angive, hvilken slags fil., Læg dit nye alias, og så prøv det ud:

På MacOS eller BSD, ls kommandoen ikke har de samme muligheder, så dette alias virker i stedet:

alias lt="du -sh * | sort -h"

resultaterne af denne version er en smule anderledes ud:

$ 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

I virkeligheden, selv om Linux, at kommandoen er nyttigt, fordi ved hjælp af ls-lister, biblioteker og symbolske henvisninger, som er 0 i størrelse, som måske ikke den information, du rent faktisk ønsker. Det er dit valg.

tak til Brad ale .ander for denne alias id..

Vis kun monterede drev

monteringskommandoen plejede at være så enkel., Med kun en kommando kunne du få en liste over alle de monterede filsystemer på din computer, og den blev ofte brugt til en oversigt over, hvilke drev der var knyttet til en arbejdsstation. Det plejede at være imponerende at se mere end tre eller fire poster, fordi de fleste computere ikke har mange flere USB-porte end det, så resultaterne var håndterbare.,

Computere er en lidt mere kompliceret nu, og mellem LVM, fysiske drev, netværk, storage, og virtuelle filsystemer, resultaterne af bjerget kan være vanskeligt at fortolke:

for At løse dette problem, 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 bruger awk til at analysere outputtet fra bjerget efter kolonne nedsætte produktionen til hvad du sikkert på udkig efter (hvad harddiske, og ikke filsystemer, er monteret):

På MacOS, mount kommando for ikke at give frygtelig verbose output, så et alias kan være overkill., Men, hvis du foretrækker en kortfattet rapport, så prøv dette:

alias mnt="mount | grep -E ^/dev | column -t"

resultater:

Find en kommando i din grep historie

nogle gange skal du regne ud, hvordan til at gøre noget i den terminal, og lover dig selv, at du aldrig vil glemme, hvad du lige har lært. Så går der en time, og du har helt glemt, hvad du gjorde.søgning gennem din Bash historie er noget alle har at gøre fra tid til anden., Hvis du ved nøjagtigt, hvad du søger efter, kan du bruge Ctrl+R til at foretage en omvendt søgning gennem din historie, men nogle gange kan du ikke huske den nøjagtige kommando, du vil finde.

Her er et alias for at gøre opgaven lidt nemmere:

alias gh="history|grep"

Her er et eksempel på, hvordan man bruger det:

$ gh bash
482 cat ~/.bashrc | grep _alias
498 emacs ~/.bashrc
530 emacs ~/.bash_aliases
531 source ~/.bashrc

Sortér efter ændring

Det sker hver mandag: Du kommer til at arbejde, du sidder ved din computer, åbner du en terminal, og du opdager, at du har glemt hvad du gjorde sidste fredag., Hvad du har brug for er et alias for at liste de senest ændrede filer.

Du kan bruge kommandoen ls til at oprette et alias for at hjælpe dig med at finde, hvor du slap:

alias left="ls -t -1"

udgangen er enkel, selvom du kan udvide den med indstillingen –long, hvis du foretrækker det., Det alias, som anført, viser dette:

$ left
demo.jpeg
demo.xcf
design-proposal.md
rejects.txt
brainstorm.txt
query-letter.xml

Tæller filer

Hvis du har brug for at vide, hvor mange filer du har i en mappe, løsningen er en af de mest klassiske eksempler på UNIX-kommando opførelsen: Du kan liste filer med ls kommando -, kontrol-output til kun at være én kolonne med -1, og derefter rør, der udgang til toilet (antal ord) kommandoen til at tælle, hvor mange linjer af enkelte filer, der er.

det er en strålende demonstration af, hvordan UNI. – filosofien giver brugerne mulighed for at bygge deres egne løsninger ved hjælp af små systemkomponenter., Denne kommandokombination er også meget at skrive, hvis du tilfældigvis gør det flere gange om dagen, og det fungerer ikke nøjagtigt for et bibliotek med mapper uden at bruge indstillingen-R, der introducerer nye linjer til output og gør øvelsen ubrugelig.

i stedet gør dette alias processen let:

alias count="find . -type f | wc -l"

denne tæller filer, ignorerer mapper, men ikke indholdet af mapper. Hvis du har en projektmappe, der indeholder to mapper, der hver indeholder to filer, returnerer aliaset fire, fordi der er fire filer i hele projektet.,

$ ls
foo bar
$ count
4

Opret et Python virtuelt miljø

har du kode i Python?

har du kode i Python meget?

Hvis du gør det, ved du, at oprettelse af et virtuelt Python-miljø i det mindste kræver 53 tastetryk.
Det er 49 for mange, men det er nemt omgås med to nye aliaser kaldet ve og va:

alias ve="python3 -m venv ./venv"
alias va="source ./venv/bin/activate"

Kører ve opretter en ny mappe, der hedder venv, der indeholder de sædvanlige virtuelle miljø filsystem til Python3., Va alias aktiverer miljø i dit nuværende shell:

$ cd my-project
$ ve
$ va
(venv) $

Tilføj en kopi statuslinjen

Alle stikker sjov på fremskridt, barer, fordi de er berygtede for at være ukorrekte. Og alligevel, inderst inde, ser vi alle ud til at have dem. UNI.cp-kommandoen har ingen statuslinje, men den har a-V-mulighed for verbositet, hvilket betyder, at den gentager navnet på hver fil, der kopieres til din terminal. Det er et ret godt hack, men det virker ikke så godt, når du kopierer en stor fil og vil have en indikation af, hvor meget af filen der endnu ikke er overført.,PV-kommandoen giver en statuslinje under kopiering, men den er ikke almindelig som standardapplikation. På den anden side er rsync-kommandoen inkluderet i standardinstallationen af næsten alle posi. – systemer, der er tilgængelige, og det er bredt anerkendt som en af de smarteste måder at kopiere filer både eksternt og lokalt.

bedre endnu, det har en indbygget statuslinje.,

alias cpv="rsync -ah --info=progress2"

ved Hjælp af denne “alias” er det samme som ved hjælp af 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 ved hjælp af denne kommando er, at rsync kopier af filer og mapper uden -r-flag, der cp ellers ville kræve.

Beskyt dig selv mod filfjernelsesulykker

Du bør ikke bruge kommandoen rm. Rm-manualen siger endda det:

advarsel: hvis du bruger ‘rm’ til at fjerne en fil, er det normalt muligt at gendanne indholdet af den fil., Hvis du vil have mere sikkerhed for, at indholdet virkelig er uopretteligt, skal du overveje at bruge ‘shred’.

Hvis du vil fjerne en fil, skal du flytte filen til din papirkurv, ligesom du gør, når du bruger et skrivebord.posi.gør det nemt, fordi papirkurven er en tilgængelig, faktisk placering i dit filsystem. Denne placering kan ændre sig, afhængigt af din platform: på en FreeDesktop, papirkurven er placeret på~/.lokal/del /Papirkurv, mens det på MacOS er~/.,Papirkurv, men uanset hvad er det bare en mappe, hvor du placerer filer, du vil have ude af syne, indtil du er klar til at slette dem for evigt.

dette enkle alias giver dig mulighed for at smide filer i papirkurven fra din terminal:

alias tcn="mv --force -t ~/.local/share/Trash "

dette alias bruger et lidt kendt mv-flag, der giver dig mulighed for at angive den fil, du vil flytte, som det sidste argument, idet du ignorerer det sædvanlige krav om, at filen skal vises først., Nu kan du bruge din nye kommando til at flytte filer og mapper til din systems Papirkurven:

$ ls
foo bar
$ tcn foo
$ ls
bar

Nu den fil, der er “væk”, men kun indtil du indser i en kold sved, at du stadig har brug for det. På det tidspunkt kan du redde filen fra dit system Papirkurv; sørg for at tippe Bash og mv udviklere på vej ud.Bemærk: Hvis du har brug for en mere robust Papirkurv kommando med bedre FreeDesktop overholdelse, se Trashy.

forenkle din Git-arbejdsgang

alle har en unik arbejdsgang, men der er normalt gentagne opgaver uanset hvad., Hvis du arbejder med Git regelmæssigt, så er der nok en sekvens, du finder dig selv at gentage temmelig ofte. Måske finder du dig selv at gå tilbage til hovedgrenen og trække de seneste ændringer igen og igen i løbet af dagen, eller måske finder du dig selv at oprette tags og derefter skubbe dem til fjernbetjeningen, eller måske er det noget helt andet.uanset hvilken Git-incantation du er blevet træt af at skrive, kan du muligvis lindre nogle smerter med et Bash-alias., Stort set takket være dens evne til at videregive argumenter til kroge, Git har et rigt sæt introspektive kommandoer, der redder dig fra at skulle udføre uhyggelige feats i Bash.

for eksempel, mens du måske kæmper for at finde et projekts topniveau-mappe i Bash (som for Bash er en helt vilkårlig betegnelse, da det absolutte topniveau til en computer er rodmappen), kender Git sit øverste niveau med en simpel forespørgsel., Hvis du studerer på Git-kroge, finder du dig selv i stand til at finde ud af alle slags oplysninger, som Bash ikke ved noget om, men du kan udnytte disse oplysninger med et Bash-alias.,

Her er et alias for at finde det øverste niveau i et Git-projekt, uanset hvor i det projekt, du arbejder i for øjeblikket, og klik derefter på skift mappe for at det, ændre til master-branch, og udføre en Git pull:

alias startgit="cd `git rev-parse --show-toplevel` && git checkout master && git pull"

Denne form for alias er på ingen måde et alment nyttigt alias, men det viser, hvordan en relativt simpel alias kan fjerne en masse besværlig navigation, kommandoer, og venter på bliver bedt om.

et enklere og sandsynligvis mere universelt alias vender dig tilbage til Git-projektets øverste niveau., Dette alias er nyttigt, fordi når du arbejder på et projekt, bliver dette projekt mere eller mindre dit “midlertidige hjem” – bibliotek. Det skal være så enkel at gå “hjem”, som det er at gå til din privatadresse, og her er et alias for at gøre det:

alias cg="cd `git rev-parse --show-toplevel`"

Nu kommandoen cg tager dig til toppen af din Git-projekt, uanset hvor dybt ind i sin mappe struktur, du har ned.,

Ændre mapper og få vist indholdet på samme tid

Det var engang (angiveligt) er foreslået af en førende videnskabsmand, at vi kunne løse mange af planetens energi problemer ved at udnytte den energi, som brugt af nørder skrive cd efterfulgt af ls.
det er et almindeligt mønster, fordi generelt når du ændrer mapper, har du impulsen eller behovet for at se, hvad der er omkring.

men “gå” din computers katalogtræ behøver ikke at være en start-og-stop-proces.

denne er snyd, fordi det slet ikke er et alias, men det er en god undskyldning at udforske Bash-funktioner., Mens aliaser er fantastisk til hurtige udskiftninger, Bash giver dig mulighed for at tilføje lokale funktioner i din .bashrc-fil (eller en separat funktionsfil, som du indlæser .bashrc, ligesom du gør dine aliaser fil).

for at holde tingene modulære skal du oprette en ny fil kaldet~/.bash_functions og derefter få din .,bashrc indlæse det:

if ; then
source $HOME/.bash_functions
fi

I de funktioner fil, skal du tilføje denne kode:

Læg funktion i din Bash session, og derefter prøve det:

$ source ~/.bash_functions
$ cl Documents
foo bar baz
$ pwd
/home/seth/Documents
$ cl ..
Desktop Documents Downloads

$ pwd
/home/seth

Funktioner er meget mere fleksible end aliaser, men med denne fleksibilitet kommer ansvaret for at sikre, at din kode giver mening, og gør, hvad du forventer. Aliaser er beregnet til at være enkle, så hold dem nemme, men nyttige. For alvorlige ændringer af, hvordan Bash opfører sig, skal du bruge funktioner eller brugerdefinerede shell-scripts, der er gemt på et sted i din vej.,

for posten er der nogle kloge hacks til at implementere cd-og ls-sekvensen som et alias, så hvis du er tålmodig nok, er himlen grænsen, selv ved hjælp af ydmyge aliaser.

start aliasing og funktion


Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *