Bash aliassen je kunt niet leven zonder

0 Comments

een Bash alias is een methode om Bash commando ’s aan te vullen of te overschrijven met nieuwe commando’ s. Bash aliassen maken het gemakkelijk voor gebruikers om hun ervaring aan te passen in een POSIX terminal. Ze worden vaak gedefinieerd in $HOME/.bashrc of $HOME / bash_aliases (die moet worden geladen door $HOME/.bashrc).

De meeste distributies voegen tenminste enkele populaire aliassen toe in de standaard .bashrc-bestand van een nieuw gebruikersaccount. Dit zijn eenvoudige om de syntaxis van een bash alias aan te tonen:

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

niet alle distributies worden echter geleverd met vooraf ingevulde aliassen., Als je aliassen handmatig toevoegt, dan moet je ze in je huidige Bash sessie laden:

$ source ~/.bashrc

anders kun je je terminal sluiten en opnieuw openen zodat het zijn configuratiebestand opnieuw laadt.

met die aliassen gedefinieerd in je Bash initialisatie script, kun je dan ll typen en de resultaten van ls-l krijgen, en als je ls typt krijg je, in plaats van de uitvoer van gewone oude ls.

deze aliassen zijn geweldig om te hebben, maar ze krassen gewoon op het oppervlak van wat mogelijk is. Hier zijn de top 10 Bash aliassen die, zodra je ze probeert, zul je niet in staat zijn om te leven zonder.,

eerst instellen

voordat u begint, Maak een bestand aan met de naam~/.bash_aliases:

$ touch ~/.bash_aliases

zorg er dan voor dat deze code in je ~/verschijnt.bashrc-bestand:

if ; then
source $HOME/.bash_aliases
fi

Als u een van de aliassen in dit artikel voor uzelf wilt proberen, voer ze in uw .bash_aliases bestand, en laad ze vervolgens in uw Bash sessie met de bron~/.bashrc Commando.,

Sorteer op Bestandsgrootte

Als u uw computerleven begon met GUI-bestandsbeheerders zoals Nautilus in GNOME, de Finder in MacOS, of Verkenner in Windows, dan bent u waarschijnlijk gewend om een lijst met bestanden te sorteren op hun grootte. Je kunt dat ook in een terminal doen, maar het is niet precies beknopt.

voeg deze alias toe aan uw configuratie op een GNU-systeem:

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

deze alias vervangt lt door een ls-commando dat de grootte van elk item weergeeft, en sorteert het vervolgens op grootte, in een enkele kolom, met een notatie om het soort bestand aan te geven., Laad je nieuwe alias en probeer het uit:

op MacOS of BSD heeft het ls commando niet dezelfde opties, dus deze alias werkt in plaats daarvan:

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

de resultaten van deze versie zijn een beetje anders:

$ 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 feite is dat Commando nuttig, zelfs op Linux, omdat het gebruik van ls lijsten mappen en symlinks als 0 in grootte, wat mogelijk niet de informatie is die u eigenlijk wilt. Het is jouw keuze.

Met dank aan Brad Alexander voor dit alias idee.

Toon alleen aangekoppelde schijven

Het mount commando was vroeger zo eenvoudig., Met slechts één commando kon je een lijst krijgen van alle gemount bestandssystemen op je computer, en het werd vaak gebruikt voor een overzicht van welke schijven aan een werkstation waren gekoppeld. Vroeger was het indrukwekkend om meer dan drie of vier vermeldingen te zien, omdat de meeste computers niet veel meer USB-poorten hebben dan dat, dus de resultaten waren beheersbaar.,

Computers zijn nu wat ingewikkelder, en tussen LVM, fysieke schijven, netwerkopslag en virtuele bestandssystemen, kunnen de resultaten van mount moeilijk te ontleden zijn:

om dat probleem op te lossen, probeer een alias als deze:

alias mnt="mount | awk -F" " "{ printf \"%s\t%s\n\",\$1,\$3; }" | column -t | egrep ^/dev/ | sort"

deze alias gebruikt awk om de uitvoer van mount per kolom te ontleden, waardoor de uitvoer wordt gereduceerd tot wat u waarschijnlijk zoekt (welke harde schijven, en geen bestandssystemen, zijn aangekoppeld):

op macOS biedt het Mount commando geen erg uitgebreide uitvoer, dus een alias kan overkill zijn., Als u echter een beknopt rapport verkiest, probeer dan dit:

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

de resultaten:

zoek een commando in uw grep geschiedenis

soms zoek je uit hoe je iets in de terminal kunt doen, en beloof jezelf dat je nooit zult vergeten wat je net hebt geleerd. Na een uur ben je helemaal vergeten wat je gedaan hebt.

het doorzoeken van je Bash geschiedenis is iets wat iedereen van tijd tot tijd moet doen., Als u precies weet wat u zoekt, kunt u Ctrl + R gebruiken om een omgekeerde zoekopdracht door uw geschiedenis te doen, maar soms kunt u zich niet precies herinneren welk commando u wilt vinden.

Hier is een alias om die taak een beetje makkelijker te maken:

alias gh="history|grep"

Hier is een voorbeeld van hoe het te gebruiken:

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

Sorteer op wijzigingstijd

Het gebeurt elke Maandag: je gaat aan het werk, je gaat zitten achter je computer, je opent een terminal, en je merkt dat je bent vergeten wat je deed het afgelopen vrijdag., Wat je nodig hebt is een alias om de meest recent gewijzigde bestanden weer te geven.

u kunt het ls commando gebruiken om een alias te maken om u te helpen vinden waar u gebleven was:

alias left="ls -t -1"

De uitvoer is eenvoudig, hoewel u het kunt uitbreiden met de –long optie als u dat wilt., De alias, zoals vermeld, geeft het volgende weer:

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

Count files

Als u wilt weten hoeveel bestanden u in een map hebt, is de oplossing een van de meest klassieke voorbeelden van Unix-opdrachtconstructie: u toont bestanden met het ls-Commando, controleert de uitvoer om slechts één kolom te zijn met de optie -1, en pipe die uitvoer naar het wc-Commando (word count) om te tellen hoeveel regels afzonderlijke bestanden er zijn.

het is een briljante demonstratie van hoe de UNIX filosofie gebruikers in staat stelt om hun eigen oplossingen te bouwen met behulp van kleine systeemcomponenten., Deze commando combinatie is ook veel om te typen als je het toevallig meerdere keren per dag doet, en het werkt niet precies voor een directory van directory ‘ s zonder gebruik te maken van de-R optie, die nieuwe regels introduceert aan de uitvoer en de oefening nutteloos maakt.

in plaats daarvan maakt deze alias het proces eenvoudig:

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

deze naam telt bestanden en negeert mappen, maar niet de inhoud van mappen. Als je een projectmap hebt met twee mappen, die elk twee bestanden bevatten, geeft de alias er vier terug, omdat er vier bestanden in het hele project zitten.,

$ ls
foo bar
$ count
4

Maak een Python virtuele omgeving

codeert u in Python?

codeert u veel in Python?

als je dat doet, dan weet je dat het creëren van een Python virtuele omgeving op zijn minst 53 toetsaanslagen vereist.
dat is 49 te veel, maar dat wordt gemakkelijk omzeild met twee nieuwe aliassen genaamd ve en va:

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

het uitvoeren van ve maakt een nieuwe map aan, genaamd venv, die het gebruikelijke virtuele omgevingsbestandssysteem voor Python3 bevat., De VA alias activeert de omgeving in uw huidige shell:

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

voeg een kopie voortgangsbalk

toe iedereen steekt plezier in voortgangsbalk omdat ze schandelijk onnauwkeurig zijn. En toch, diep van binnen, lijken we ze allemaal te willen. Het UNIX CP commando heeft geen voortgangsbalk, maar het heeft wel een-v optie voor verbosity, wat betekent dat het de naam weergeeft van elk bestand dat naar je terminal wordt gekopieerd. Dat is een vrij goede hack, maar het werkt niet zo goed als je het kopiëren van een groot bestand en willen een indicatie van hoeveel van het bestand nog moet worden overgedragen.,

het PV commando geeft een voortgangsbalk tijdens het kopiëren, maar het is niet gebruikelijk als standaard toepassing. Aan de andere kant, de rsync-opdracht is opgenomen in de standaard installatie van bijna elk POSIX-systeem beschikbaar, en het wordt algemeen erkend als een van de slimste manieren om bestanden te kopiëren, zowel op afstand en lokaal.

beter nog, het heeft een ingebouwde voortgangsbalk.,

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

het gebruik van deze alias is hetzelfde als het gebruik van het CP Commando:

$ cpv bigfile.flac /run/media/seth/audio/
3.83M 6% 213.15MB/s 0:00:00 (xfr#4, to-chk=0/4)

een interessant neveneffect van het gebruik van dit commando is dat rsync zowel bestanden als mappen kopieert zonder de-r vlag die cp anders nodig zou hebben.

Bescherm uzelf tegen file removal accidents

u moet het rm commando niet gebruiken. De RM handleiding zegt het zelfs:

waarschuwing: als je ‘rm’ gebruikt om een bestand te verwijderen, is het meestal mogelijk om de inhoud van dat bestand te herstellen., Als u meer zekerheid wilt dat de inhoud echt onherstelbaar is, overweeg dan om ‘versnipperen’te gebruiken.

Als u een bestand wilt verwijderen, moet u het bestand naar de prullenbak verplaatsen, net als wanneer u een bureaublad gebruikt.

POSIX maakt dit gemakkelijk, omdat de prullenbak een toegankelijke, actuele locatie in uw bestandssysteem is. Die locatie kan veranderen, afhankelijk van uw platform: op een FreeDesktop bevindt de prullenbak zich op ~/.lokaal / share / Prullenbak, terwijl op MacOS is het~/.,Prullenbak, maar hoe dan ook, het is gewoon een directory waarin je bestanden plaatst die je uit het zicht wilt totdat je klaar bent om ze voor altijd te wissen.

deze eenvoudige alias biedt een manier om bestanden in de prullenbak te gooien vanaf uw terminal:

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

deze alias gebruikt een weinig bekende MV-vlag die u in staat stelt om het bestand dat u wilt verplaatsen als het laatste argument te geven, waarbij de gebruikelijke eis wordt genegeerd dat dat bestand als eerste wordt weergegeven., Nu kunt u uw nieuwe commando gebruiken om bestanden en mappen naar uw systeem Prullenbak te verplaatsen:

$ ls
foo bar
$ tcn foo
$ ls
bar

nu is het bestand “gone,” maar alleen totdat u in het zweet beseft dat u het nog steeds nodig hebt. Op dat punt, kunt u het bestand te redden van uw systeem Prullenbak; zorg ervoor dat de Bash en MV ontwikkelaars tip op de weg naar buiten.

Opmerking: Als u een robuuster Prullenbak commando met betere FreeDesktop compliance nodig hebt, zie Trashy.

vereenvoudig je Git workflow

Iedereen heeft een unieke workflow, maar er zijn meestal repetitieve taken, ongeacht wat., Als je op regelmatige basis met Git werkt, dan is er waarschijnlijk een reeks die je vrij vaak herhaalt. Misschien ga je terug naar de master branch en trek je de laatste wijzigingen gedurende de dag keer op keer, of misschien maak je tags en push je ze dan naar de remote, of misschien is het iets heel anders.

Het maakt niet uit welke Git incantation je moe bent geworden van het typen, je kunt misschien wat pijn verlichten met een bash alias., Grotendeels dankzij de mogelijkheid om argumenten door te geven aan hooks, heeft Git een rijke set introspectieve commando ‘ s die je behoeden voor het uitvoeren van griezelige prestaties in Bash.

bijvoorbeeld, terwijl je misschien moeite hebt om in Bash de top-level directory van een project te vinden (wat, wat Bash betreft, een volledig willekeurige aanduiding is, aangezien het absolute top niveau van een computer de root directory is), kent Git zijn top niveau met een eenvoudige query., Als je Git hooks bestudeert, zul je merken dat je in staat bent om allerlei soorten informatie te vinden waar Bash niets van weet, maar je kunt die informatie gebruiken met een Bash alias.,

Hier is een alias om het hoogste niveau van een Git project te vinden, ongeacht waar in dat project je op dit moment werkt, en om vervolgens de directory te wijzigen, naar de master branch te veranderen, en een git pull uit te voeren:

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

Dit soort alias is geenszins een universeel bruikbare alias, maar het laat zien hoe een relatief eenvoudige alias veel moeizame navigatie, commando ‘ s en wachten op prompts kan elimineren.

een eenvoudigere, en waarschijnlijk meer universele alias geeft je terug naar het hoogste niveau van het GIT project., Deze alias is handig omdat wanneer je aan een project werkt, dat project min of meer je “tijdelijke home” directory wordt. Het zou net zo eenvoudig moeten zijn om “home” te gaan als het is om naar je echte home te gaan, en hier is een alias om het te doen:

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

nu neemt het commando cg je mee naar de top van je Git project, ongeacht hoe diep je in de directory structuur bent neergedaald.,

wijzig directory ‘ s en bekijk de inhoud tegelijkertijd

het werd ooit (naar verluidt) voorgesteld door een toonaangevende wetenschapper dat we veel van de energieproblemen van de planeet konden oplossen door gebruik te maken van de energie die geeks besteden aan het typen van cd gevolgd door ls.
Het is een algemeen patroon, omdat over het algemeen wanneer je van directory ‘ s verandert, je de impuls of de behoefte hebt om te zien wat er in de buurt is.

maar de mappenstructuur van uw computer” lopen ” hoeft geen start-en-stopproces te zijn.

Deze speelt vals, omdat het helemaal geen alias is, maar het is een geweldig excuus om Bash functies te verkennen., Terwijl aliassen zijn geweldig voor snelle vervangingen, Bash kunt u lokale functies toe te voegen in uw .bashrc bestand (of een aparte functies bestand dat u in te laden .bashrc, net zoals je je aliassen bestand doet).

om dingen modulair te houden, maakt u een nieuw bestand aan met de naam~/.bash_functies en dan heb je .,bashrc load it:

if ; then
source $HOME/.bash_functions
fi

voeg in het functiebestand deze code toe:

Laad de functie in uw Bash-sessie en probeer het vervolgens uit:

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

$ pwd
/home/seth

functies zijn veel flexibeler dan aliassen, maar met die flexibiliteit komt de verantwoordelijkheid voor u om ervoor te zorgen dat uw code zinvol is en doet wat u verwacht. Aliassen zijn bedoeld om eenvoudig te zijn, dus houd ze gemakkelijk, maar nuttig. Voor ernstige wijzigingen in hoe Bash zich gedraagt, gebruikt u functies of aangepaste shell-scripts die zijn opgeslagen op een locatie in uw pad.,

voor de goede orde, er zijn enkele slimme hacks om de cd-en ls-reeks als een alias te implementeren, dus als je geduldig genoeg bent, dan is de hemel de limiet zelfs met eenvoudige aliassen.

start aliasing en werking


Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *