15 Speciale Tekens die U Moet Weten voor Bash

0
615

Als u wilt de meester van de Bash-shell onder Linux, macOS, of een ander UNIX-achtig systeem, de speciale karakters (zoals ~, *, | en >) zijn van cruciaal belang. Wij helpen je met het ontrafelen van deze cryptische Linux commando-sequenties en een held van de hiërogliefen.

Wat Zijn De Speciale Tekens?

Er zijn een set van tekens van de Bash-shell behandelt op twee verschillende manieren. Wanneer u deze intypen op de shell, ze dienen als instructies of opdrachten en vertellen de shell voor het uitvoeren van een bepaalde functie. Denk aan hen als één commando ‘ s.

Soms wilt u gewoon om het afdrukken van een karakter en het niet nodig hebben om op te treden als een magisch symbool. Er is een manier waarop je kunt gebruik maken van een karakter om zichzelf voor te stellen in plaats van de speciale functie.

We tonen u welke tekens zijn “speciale” of “meta-” tekens, evenals hoe u ze kunt gebruiken functioneel en letterlijk.

~ Home Directory

De tilde (~) is een verzamelnaam voor uw home directory. Het betekent dat u niet het volledige pad naar uw home directory in commando ‘ s. Waar u ook bent in het bestandssysteem, kunt u dit commando kunt gebruiken om naar uw home-directory:

cd ~

U kunt deze opdracht ook gebruiken met relatieve paden. Bijvoorbeeld, als je ergens in de file systeem dat niet onder uw home map wilt wijzigen om het archief in de map in uw werk-directory (tilde) om het te doen:

cd ~/werk/archief

. Huidige Directory

Een punt (.) geeft de huidige directory. Je ziet het in de directory listings als u de -a (alle) optie met ls.

ls-a

U kunt ook gebruik maken van de periode in commando ‘ s te vertegenwoordigen op het pad naar de huidige map. Bijvoorbeeld, als u wilt een script uitvoeren vanaf de huidige directory, je zou kunnen zeggen dat het als volgt:

./script.sh

Dit vertelt Bash te zoeken in de huidige map voor de script.sh -bestand. Deze manier, zal het niet zoeken in de mappen in het pad voor het afstemmen van een uitvoerbaar bestand of script.

.. Bovenliggende Map

De dubbele periode of “dubbele punt” (..) vertegenwoordigt de bovenliggende map van uw huidige. U kunt dit gebruiken om een niveau omhoog in de directory-boom.

cd ..

U kunt deze opdracht ook gebruiken met relatieve paden—bijvoorbeeld, als u wilt ga één niveau omhoog in de directory tree, en voer vervolgens een andere map op dat niveau.

U kunt ook gebruik maken van deze techniek om snel naar een map op hetzelfde niveau in de mapstructuur als uw huidige. U hop op eén niveau omhoog, en weer omlaag naar een andere map.

cd ../gc_help

/ Pad Scheidingsteken Directory

U kunt gebruik maken van een forward slash (/)—vaak gewoon een slash—te scheiden van de mappen in een padnaam.

ls ~/werk/archief

Een schuine streep staat voor de kortst mogelijke pad van de map. Omdat alles in de Linux-directory boom begint bij de root directory, u kunt deze opdracht gebruiken om te verplaatsen naar de root directory snel op:

cd /

# Opmerking of Trim Strings

Meestal wordt het gebruik van de hash of hekje (#) om te vertellen van de shell wat volgt is een reactie, en het moet niet op te treden. Je kunt het gebruiken in shell-scripts en—minder nuttig—op de opdrachtregel.

# Dit wordt genegeerd door de Bash shell

Het is niet echt genegeerd, maar, omdat het ‘ s toegevoegd aan uw opdracht geschiedenis.

U kunt ook gebruik maken van de hash op de trim van een string-variabele en verwijder een deel van de tekst uit het begin. Deze opdracht maakt u een teken reeks variabele genoemd this_string.

In dit voorbeeld geven we de tekst “Dave Geek!” om de variabele.

this_string=”Dave Geek!”

Deze opdracht maakt gebruik van echo afdrukken van de woorden “How-To” het terminal venster. Het haalt de waarde die is opgeslagen in de variabele via een parameter uitbreiding. Omdat we aan de hash en de tekst “Dave,” de afwerking van dat deel van de string, voordat het doorgegeven aan echo.

echo-Hoe-Naar ${this_string#Dave}

Dit verandert niets aan de waarde die is opgeslagen in de variabele string; het is alleen van invloed op wat ‘ s verzonden naar de echo. We kunnen gebruik maken van echo afdrukken van de waarde van de variabele een keer en check dit:

echo $this_string

? Enkel Teken Wildcard

Bash shell ondersteunt drie wildcards, waarvan het vraagteken (?). U jokertekens gebruikt voor het vervangen van tekens in de bestandsnaam sjablonen. Een bestandsnaam met een wildcard vormen een template die overeenkomt met een bereik van bestandsnamen, in plaats van slechts één.

Het vraagteken wildcard staat voor precies één teken. Beschouw de volgende bestandsnaam sjabloon:

ls badge?.txt

Dit vertaalt zich als “een lijst van alle bestanden met een naam die begint met ‘badge’ en wordt gevolgd door een willekeurig teken, voordat de extensie.”

Het is geschikt voor de volgende bestanden. Merk op dat sommige cijfers en enkele letters na de “badge” – gedeelte van de bestandsnaam. Het vraagteken wildcard zal overeenkomen met letters en cijfers.

Dat bestandsnaam sjabloon komt niet overeen ‘badge.txt’ hoewel, omdat de bestandsnaam geen enkel teken tussen “badge” en de extensie van het bestand. Het vraagteken wildcard moet overeenkomen met een overeenstemmende tekens in de bestandsnaam.

U kunt ook gebruik maken van het vraagteken om te zoeken naar alle bestanden met een bepaald aantal tekens in de bestandsnamen. Dit geeft een overzicht van alle tekst-files bevatten precies vijf tekens in de bestandsnaam:

ls ?????.txt

* Teken Reeks Wildcard

U kunt gebruik maken van de asterisk (*) wildcard te staan voor een willekeurige reeks tekens, waaronder geen tekens. Beschouw de volgende bestandsnaam sjabloon:

ls badge*

Dit komt overeen met alle van de volgende:

Het komt overeen met “badge.txt” omdat de wildcard staat voor een willekeurige reeks tekens of geen tekens.

Dit commando komt overeen met alle bestanden met de naam “source” ongeacht de extensie van het bestand.

ls bron.*

[]- Tekenset Wildcard

Zoals hierboven is beschreven, kunt u gebruik maken van het vraagteken te vertegenwoordigen elk enkel karakter en de asterisk voor een reeks van tekens (inclusief geen tekens).

U kunt de vorm van een joker met de vierkante haken ( [] ) en de tekens die ze bevatten. De desbetreffende teken in de bestandsnaam moet dan overeenkomen met ten minste één van de personages in het jokerteken ingesteld.

In dit voorbeeld is de opdracht vertaalt: “een bestand met een “.png” – extensie van een bestandsnaam die begint met ‘ pipes_0,” en waar het volgende teken is voor 2, 4 of 6.”

ls badge_0[246].txt

U kunt gebruik maken van meer dan één set beugels per bestandsnaam sjabloon:

ls badge_[01][789].txt

U kunt ook bereiken in het teken ingesteld. De volgende opdracht selecteert bestanden met de nummers 21 tot en met 25, en 31 tot en met 35 in de bestandsnaam.

ls badge_[23][1-5].txt

De Shell Opdracht Separator

U kunt het type zoveel opdrachten als u wilt op de commando-regel, zo lang als je elkaar scheiden met een puntkomma (;). We doen dit in het volgende voorbeeld:

ls > count.txt; wc -l count.txt; rm count.txt

Merk op dat de tweede opdracht wordt uitgevoerd, zelfs als het eerste niet lukt, de derde wordt uitgevoerd, zelfs als de tweede mislukt, enzovoort.

Als u wilt stoppen met de volgorde van uitvoering als een opdracht niet lukt, gebruik dan een dubbele ampersand (&&) in plaats van een puntkomma:

de cd ./doesntexist && cp ~/Documenten/rapporten/* .

& Achtergrond

Nadat u een commando uit in een terminal window en het is voltooid, keert u terug naar de opdrachtprompt. Normaal, dit duurt slechts een moment of twee. Maar als u het starten van een andere toepassing, zoals gedit, kunt u geen gebruik maken van uw terminal venster totdat u de toepassing sluit.

U kunt echter wel een toepassing starten als een achtergrond proces en gebruik blijven maken van de terminal-venster. Om dit te doen, voeg gewoon een teken aan de opdrachtregel:

gedit command_address.pagina &

Bash toont u het proces ID van wat gelanceerd, en vervolgens keert u terug naar de commando-regel. U kunt dan bij het gebruik van uw terminal venster.

< Input Redirection

Veel Linux-commando ‘ s accepteren een bestand als parameter en neem de gegevens uit dat bestand. De meeste van deze commando ‘ s kunnen ook input van een stream. Om een stream maken, gebruikt u de linker-groter dan teken ( < ), zoals getoond in het volgende voorbeeld, om te buigen naar een bestand in een opdracht:

sorteren < words.txt

Wanneer u een opdracht heeft input doorgestuurd naar het, kan zich anders gedragen dan tijdens het lezen van een bestand met de naam.

Als we gebruik maken van toilet te tellen van woorden, lijnen en tekens in een bestand, het drukt de waarden en vervolgens de bestandsnaam. Als we het omleiden van de inhoud van het bestand naar de wc, wordt dezelfde numerieke waarden, maar weet niet de naam van het bestand waaruit de gegevens afkomstig zijn. Het kan niet afdrukken van een bestandsnaam.

Hier zijn enkele voorbeelden van hoe u kunt gebruik maken van wc:

wc words.txt
wc < words.txt

> Uitvoer Omleiden

U kunt gebruik maken van de haakse beugel ( > ) voor het omleiden van de output van een commando (meestal in een bestand); hier is een voorbeeld:

ls > files.txt
kat files.txt

Het omleiden van de uitvoer kan ook doorverwijzen foutmeldingen als u een cijfer (2 in ons voorbeeld) met >. Hier is hoe het te doen:

wc doesntexist.txt 2> errors.txt
kat errors.txt

GERELATEERD: Wat Zijn stdin, stdout en stderr op Linux?

| Pijp

Een “pipe” ketens opdrachten samen. Het neemt de uitvoer van een opdracht en voert het naar het volgende als input. Het aantal doorgesluisd opdrachten (de lengte van de ketting) is arbitrair.

Hier gebruiken we de kat te voeden de inhoud van de words.txt bestand in grep, die extracten elke regel bevat met een lagere – of hoofdletters “C.” grep zal dan door deze lijnen te sorteren. sorteren is met de-r (reverse) – optie, zodat de gesorteerde resultaten zullen worden weergegeven in omgekeerde volgorde.

We getypte het volgende:

kat words.txt | grep [cC] | sort-r

! Pijpleiding NIET logisch en de Geschiedenis van de Operator

Het uitroepteken (!) een logische operator die middelen NIET.

Er zijn twee commando ‘ s in de command line:

[ ! -d ./back-up ] && mkdir ./back-up

  • De eerste opdracht is de tekst binnen de vierkante haken;
  • De tweede opdracht is de tekst die volgt op de dubbele ampersands &&.

De eerste opdracht gebruikt ! als een logische operator. De vierkante haken geven aan dat het een test gaat worden gemaakt. De -d (directory) optie test voor de aanwezigheid van een map met de naam backup. De tweede opdracht maakt u de map.

Omdat de dubbele ampersands het scheiden van de twee commando ‘ s, Bash voert alleen de tweede als de eerste slaagt. Echter, dat is het tegenovergestelde van wat we nodig hebben. Als de test voor de “backup” map lukt, hoeven we niet op te maken. En als de test voor de “backup “map mislukt, de tweede opdracht niet worden uitgevoerd, en de ontbrekende map niet worden gemaakt.

Dit is waar de logische operator ! in de plaats komt. Het fungeert als een logische NIET. Dus, als de test slaagt (d.w.z. de map bestaat), de ! salto ‘ s, die GEEN succes,” dat is fout. Zo, de tweede opdracht is niet geactiveerd.

Als de map test mislukt (d.w.z. dat de map niet bestaat), de ! wijzigingen in het antwoord op de “NIET fout”, dat is succes. Dus de opdracht voor het maken van de ontbrekende map is uitgevoerd.

Dat is weinig ! verrassend veel punch wanneer u dat wilt!

Controleer de status van de back-up map, gebruikt u het commando ls bekeken worden en de optie-l (lange lijst) en -d (directory) opties, zoals hieronder weergegeven:

ls -l -d-back-up

U kunt ook commando ‘ s van uw opdracht geschiedenis met het uitroepteken. De geschiedenis van de opdracht worden uw opdracht geschiedenis, en vervolgens typt u het nummer van de opdracht die u wilt opnieuw uitvoeren met ! om het uit te voeren, zoals hieronder weergegeven:

!24

De volgende re-runs van de vorige opdracht:

!!

$ Variabele Expressies

In de Bash shell, het creëren van variabelen aan te houden waarden. Sommige, zoals de omgeving van de variabelen, altijd bestaan, en u kunt ze op elk moment open je een terminal venster. Deze waarden bevatten, zoals uw gebruikersnaam, home directory, en het pad.

U kunt gebruik maken van de echo te zien dat de waarde van een variabele heeft—net vóór de naam van een variabele met het dollar-teken ($), zoals hieronder weergegeven:

echo $USER
echo $HOME
echo $PATH

Om een variabele te maken, je moet het een naam en een waarde voor het te houden. U hoeft niet met het dollar-teken om een variabele te maken. U alleen toevoegen $ wanneer u verwijst naar een variabele, zoals in het volgende voorbeeld:

ThisDistro=Ubuntu
MyNumber=2001
echo $ThisDistro
echo $MyNumber

Toevoegen accolades ( {} ) rond het dollar-teken en het uitvoeren van een parameter uitbreiding te verkrijgen van de waarde van de variabele en andere veranderingen van de waarde.

Dit maakt een variabele die in het bezit van een string van tekens, zoals hieronder weergegeven:

MyString=123456qwerty

Gebruik de volgende opdracht om de echo van de tekenreeks naar het terminal venster:

echo ${MyString}

Om terug te keren de reeks begint op de positie 6 van de hele string, gebruik je het volgende commando (er is een nul-offset, dus de eerste positie is nul):

echo ${myString:6}

Als u wilt de echo van een reeks die begint op positie nul en bevat de volgende zes tekens, gebruik je het volgende commando:

echo ${myString:0:6}

Gebruik de volgende opdracht om de echo een reeks die begint op positie vier en bevat de volgende vier tekens:

echo ${myString:4:4}

Vermelding Van Speciale Tekens

Als u gebruik wilt maken van een speciaal teken, zoals een letterlijke (niet-bijzondere) karakter, je moet het vertellen van de Bash-shell. Dit is de zogenaamde citeren, en er zijn drie manieren om het te doen.

Als u door de tekst tussen aanhalingstekens (“…”), dit voorkomt dat Bash handelen op de meeste van de speciale tekens, en ze afdrukken. Een opmerkelijke uitzondering, hoewel, is het dollar-teken ($). Het is nog functies als het teken voor variabele expressies, dus u kunt de waarden van de variabelen in de output.

Bijvoorbeeld deze opdracht wordt afgedrukt met de datum en tijd:

echo “Vandaag is $(date)”

Als u door de tekst tussen enkele aanhalingstekens ( ‘ … ‘ ), zoals hieronder weergegeven, stopt de functie van alle speciale tekens:

echo ” Vandaag is het $(datum)’

U kunt gebruik maken van een backslash ( ) om te voorkomen dat het volgende karakter van het functioneren als een speciaal teken. Dit is de zogenaamde “ontsnappen” het teken; zie het voorbeeld hieronder:

echo “Vandaag is het $(date)”

Denk aan speciale tekens als zeer korte opdrachten. Als u te onthouden van het gebruik, het kan profiteren van jouw kennis van de Bash-shell—en andermans scripts—enorm.

GERELATEERD: 37 Belangrijke Linux-Commando ‘ s die U Moet Weten

LEES VERDER

  • “Het Gebruik van de vinger Opdracht op Linux
  • “Chrome Snelkoppelingen Die U Moet Weten
  • “Waarom Zou Je Overclock Uw RAM (dat is Makkelijk!)
  • “Hoe te om te Verhogen Uw MacBook Opslag
  • “Het Uitschakelen Veeg het Typen op de iPhone-Toetsenbord