De krachtigste eigenschap van de Linux Bash-shell is de mogelijkheid om bestanden te omzeilen en hun invoer en uitvoer efficiënt om te leiden. Linux gebruikt speciale tekens of symbolen die bekend staan als metatekens die een speciale betekenis toevoegen aan een shell-opdracht met betrekking tot het zoeken naar bestanden en de verbinding van opdrachten.
De metatekens zijn handig bij het weergeven, verwijderen en kopiëren van bestanden op Linux. De functie van elk metateken verschilt echter, afhankelijk van de opdracht waarmee u het gebruikt.
Dit artikel biedt een uitgebreide handleiding over verschillende soorten metatekens in Linux. Ten slotte leggen we uit hoe deze speciale tekens helpen bij het verbinden en uitbreiden van opdrachten.
Met de Linux-shell kunt u toetsaanslagen opslaan tijdens het typen van opdrachten door metatekens tussen bestanden of mapnamen te gebruiken. Deze tekens helpen u naar een groep bestanden of een map te verwijzen om een lijst te maken, te verplaatsen of andere activiteiten uit te voeren.
Dit zijn enkele metakarakters die overeenkomen met bestanden die de Linux-shell kan interpreteren:
- * (sterretje): Komt overeen met een of meerdere keren dat een teken voorkomt
- ? (Vraagteken): Komt overeen met een enkel teken of een patroon
- [ ] (Vierkante haakjes): Komt overeen met elk door een koppelteken gescheiden nummer, symbool of alfabet dat tussen de vierkante haken is opgegeven
Een ideale manier om metatekens in Linux te oefenen, is door een nieuwe lege map aan te maken in de /tmp map.
sudo mkdir /tmp/meta
Navigeer nu naar de /tmp/meta directory met behulp van het cd-commando en maak nieuwe lege bestanden met touch, als volgt:
touch apple.txt cider.sh azijn.php cat.txt lemon.txt juice.sh catfish.sh
Gebruik de volgende opdrachten om de "*" metateken en geef de outputs weer:
ls c*
Uitgang:
meerval.sh cat.txt cider.sh
ls c*h
Uitgang:
meerval.sh cider.sh
ls *r*
Uitgang:
cider.sh azijn.php
sudo rm *p*
De bovengenoemde opdracht verwijdert alle bestanden met de letter "p" in de naam. U kunt de wijziging als volgt verifiëren met de opdracht ls:
ls
Uitgang:
meerval.sh cat.txt cider.sh sap.sh citroen.txt
Hier zijn enkele voorbeelden van de "?" metateken voor patroonafstemming:
Is een? *
Uitgang:
appel.txt
is c? t*
Uitgang:
meerval.sh cat.txt
Het laatste commando komt overeen met elk bestand dat begint met C en heeft t als de derde letter (cat.txt, catfish.sh, etc.).
Gebruik nu de [av]* optie met de opdracht ls om alle bestanden weer te geven die beginnen met ofwel een of v, als volgt:
ls [av]*
Uitgang:
appel.txt azijn.sh
U kunt de bovenstaande opdracht wijzigen om alleen bestanden weer te geven die eindigen op de letter t:
ls [ac]*[t]
Uitgang:
apple.txt meerval.txt kat.txt
Op dezelfde manier kunt u de door koppeltekens gescheiden letters gebruiken om bereiken en lijstbestanden als volgt te definiëren:
ls [a-j]*
Uitgang:
apple.txt catfish.sh cat.txt cider.sh juice.sh
Voor een beter begrip van omleiding in Bash heeft elk proces in Linux bestandsdescriptors, ook wel standaardinvoer genoemd (stdin/0), standaarduitvoer (stevig/1), en standaardfout (stderr/2). Ze bepalen de oorsprong van de opdrachtinvoer en beslissen waar de uitvoer en foutmeldingen naartoe worden gestuurd.
De omleidingsmetatekens helpen u deze acties te wijzigen door de inhoud I/O-stroom om te leiden. Over het algemeen leest de Linux-shell de opdrachtinvoer van het toetsenbord en schrijft de uitvoer naar het scherm. Met de invoeromleiding kan de opdracht de inhoud van een bestand lezen in plaats van een toetsenbord, terwijl de uitvoeromleiding de uitvoer van de opdracht naar een bestand opslaat.
Met andere woorden, met de metatekens voor het omleiden van Linux-bestanden kunt u de inhoud omleiden naar (>) en van (<) de bestanden. De drie primaire omleidingsmetatekens zijn:
- <: stuurt de bestandsinhoud naar de opdracht. Bijvoorbeeld de opdrachtuitvoer voor minder .bashrc is hetzelfde als minder < .bashrc.
- >: Stuurt de opdrachtuitvoer naar het bestand. Het bevel ls /etc > lists.txt slaat de uitvoer op in het bestand lists.txt.
- >>: Voegt de opdrachtuitvoer toe aan de bestandsinhoud.
wc staat voor woordentelling en u kunt het gebruiken om het verschil tussen het bestand voor en na het toevoegen aan de uitvoer weer te geven.
Verwant: Standaard I/O op Linux begrijpen
Met het metateken voor de uitbreiding van accolades kunt u de tekens uitbreiden over mappen, bestandsnamen of andere opdrachtregelargumenten. U kunt bijvoorbeeld een nieuwe map maken beugel binnen in de /tmp map en maak als volgt een set bestanden met behulp van de aanraakopdracht:
sudo mkdir /tmp/brace; cd /tmp/brace
aanraaktest{1,2,3,4,5}
Nu kunt u controleren of touch de bestanden heeft gemaakt of niet met de opdracht ls.
ls
Uitgang:
test1 test2 test3 test4 test5
U kunt meerdere lijsten specificeren om bestandsnamen te genereren op basis van de combinaties van de elementen in de lijst. Bijvoorbeeld:
raak {appel, cider, azijn} aan. {fruit, vloeistof, zuur}
raak {a, b, c} aan.{1,2,3}
Met de laatste opdracht worden de volgende bestanden in de huidige map gemaakt:
De eerste opdracht gebruikt twee sets accolades om bestandsnamen in elke set met de andere te associëren. U kunt het laatste commando ook schrijven als raak {a..c} aan.{1..3} om het bereik tussen a en c en 1 en 3 op te geven.
Naast het maken van bestanden, kunt u accolade-uitbreiding ook gebruiken om bestanden te verwijderen of naar andere locaties te kopiëren.
Hier is een tabel met enkele bekende metatekens voor opdrachtverbinding en uitbreiding met hun namen, beschrijving en voorbeelden om te oefenen:
Naam | Beschrijving | Voorbeeld |
---|---|---|
Pijp (|) | Verbindt commando-uitgang als ingang met het andere commando. | cat /etc/passwd | grep wortel |
Puntkomma (;) | Maakt uitvoering van opeenvolgende opdrachten mogelijk, de een na de ander. | cd /etc; ls -la; chmod +x /tmp/script.php |
ampersand (&) | Voert de processen of opdrachten op de achtergrond uit. | vind / -perm -u=s -type f & |
Dollar ($) | Breidt de rekenkundige uitdrukking uit en geeft deze door aan de shell | echo "het totale aantal bestanden in deze map is: $(ls | wc -l)" |
Null-omleiding (2>) | Stuurt standaard foutmeldingen naar het /dev/null-bestand | uw_opdracht 2>/dev/null |
Omtrek (^) | Komt overeen met elk patroon dat begint met de uitdrukking gevolgd door ^ | cd /etc/ssh; ls | grep ^s |
Linux-metatekens zijn ook bekend als jokertekens die een speciale betekenis aan de opdrachten toevoegen en hun gedrag bepalen. Metakarakters optimaliseren de werkprestaties van een gebruiker in een productieve omgeving, terwijl ze rond bestanden/mappen werken en de Linux-shell-commando's verbinden/uitbreiden.
Bovendien zijn metatekens ook de bouwstenen van reguliere expressies. Ook is het leren over metatekens en hun gebruik een belangrijke vaardigheid om te hebben als je een pro-Linux-gebruiker wilt worden.
Wilt u uw Python-workflow versnellen met een paar eenvoudige opdrachten? Reguliere expressies zijn je vriend.
Lees volgende
- Linux
- Linux Elementair
- Linux Bash Shell
Rumaisa is freelance schrijver bij MUO. Ze heeft veel hoeden gedragen, van wiskundige tot liefhebber van informatiebeveiliging, en werkt nu als SOC-analist. Haar interesses omvatten lezen en schrijven over nieuwe technologieën, Linux-distributies en alles wat met informatiebeveiliging te maken heeft.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Klik hier om je te abonneren