Hoe u uw Linux-terminal als rekenmachine gebruikt - Oplosser voor wiskundige uitdrukkingen (2023)

Kun jij de onderstaande wiskundige uitdrukking zelf oplossen zonder een apparaat te gebruiken? Neem zoveel tijd als je nodig hebt - maar geen gereedschap toegestaan:

( ( 11 + 97 ) + ( 2 * 63 ) - ( 7 / 93 ) * ( 8 - 25 ) / ( 9 * 64 ) ) * ( ( 64 / 34 ) + ( 94 - 20 ) - ( 23 + 98 ) * ( 199 * 928 ) / ( 92 * 26 ) ) * ( ( ( 2 * 1 ) / 2 ) - 1 )

Complimenten voor jou als je het zelf hebt opgelost. Ik weet zeker dat je boos op me zult zijn nadat je hebt ontdekt dat het resultaat van deze lange uitdrukking zojuist op nul is geëvalueerd.

Dus wat als u uw browser zou gebruiken om het antwoord te vinden? Hoe lang zou dat duren?

Het zoeken naar deze uitdrukking op Google duurde minder dan een seconde om het antwoord te krijgen (met een 500MBPS-verbinding) samen met 5,21,00,000 resultaten.

Hoe u uw Linux-terminal als rekenmachine gebruikt - Oplosser voor wiskundige uitdrukkingen (1)

Yahoo gaf ons het antwoord in minder dan 500 ms, samen met 1.480.000.000 zoekresultaten.

Hoe u uw Linux-terminal als rekenmachine gebruikt - Oplosser voor wiskundige uitdrukkingen (2)

Bing heeft niet eens iets teruggestuurd.

Maar mijn terminal en systeemcalculator waren bijna onmiddellijk in het vinden van het antwoord (duurde <10 ms).

Het gebruik van de terminal is een van de snelste manieren om een ​​wiskundige uitdrukking te evalueren. Maar veel ontwikkelaars weten niet dat u wiskundige uitdrukkingen kunt oplossen met uw terminal.

In dit artikel leer je hoe je wiskundige problemen oplost in de Linux-terminal.

Hoe een wiskundige uitdrukking in de Linux-terminal te evalueren

U kunt deuitdropdracht om wiskundige uitdrukkingen in uw terminal te evalueren. Wiskundige basisbewerkingen zoals optellen, aftrekken, vermenigvuldigen, delen en modulus werken allemaal met deuitdrcommando.

Laten we elk van deze bewerkingen even bekijken:

uitdr 12 + 8 # Optellenuitdr 20 - 10 # Aftrekkenuitdr 5 \* 2 # Vermenigvuldigenuitdr 8 \/ 4 # Delenuitdr 5 \% 3 # Modulus
Hoe u uw Linux-terminal als rekenmachine gebruikt - Oplosser voor wiskundige uitdrukkingen (3)

Door elk van deze opdrachten in de terminal uit te voeren, wordt het antwoord van die uitdrukking geëvalueerd en geretourneerd (zoals u kunt verifiëren in de bijgevoegde schermafbeelding).

U denkt misschien: "Waarom is er een schuine streep naar achteren (\) voor de laatste 3 bewerkingen (Vermenigvuldigen, Delen en Modulus)?"

Een schuine streep naar achteren bij het programmeren wordt in principe gebruikt om karakters te ontwijken. Laten we het voorbeeld nemen van het vermenigvuldigingssymbool (*). "*" wordt gebruikt in reguliere expressies, wat in feite betekent dat alle bestanden en mappen worden opgenomen.

Hier is een snel voorbeeld:

cp ./* ../back-up/

Als u de bovenstaande opdracht uitvoert, worden alle bestanden en mappen in de huidige map naar de back-upmap gekopieerd.

Evenzo heeft elk symbool zijn eigen betekenis. Als u een schuine streep naar achteren (\) gebruikt, ontsnapt u aan het normale gebruikspatroon. Dit is de reden dat de meeste symbolen worden voorafgegaan door een schuine streep naar achteren.

Maar, vraag je je misschien af, is dit alles wat dit commando kan doen?

Het antwoord is nee. Ik heb een voorbeeld van de uitdrukkingen gedeeld, maar we zouden andere kunnen gebruiken en de resultaten in een fractie van een seconde krijgen.

Hoe een logische uitdrukking in de terminal te evalueren

Naast het vinden van de resultaten van een wiskundige uitdrukking, kunt u deze opdracht gebruiken om een ​​logische uitdrukking te evalueren.

Met deze opdracht kunnen logische uitdrukkingen met <, <=, >, >=, =, != worden geëvalueerd.

Laten we even kijken hoe het werkt:

expr 2 \< 1expr 29320 \> 23820expr 29320 \>= 29320expr 29320 \< 29320expr 29320 \<= 29320expr 293202 \= 293203expr 293202 \!= 293203
Hoe u uw Linux-terminal als rekenmachine gebruikt - Oplosser voor wiskundige uitdrukkingen (4)

De opdracht retourneert "1" als de expressie resulteert in waar en "0" als deze resulteert in onwaar.

Uit de bovenstaande commando's kunt u opmaken dat alle logische operatoren worden geëscaped met een schuine streep naar achteren (\).

Wat doen de speciale logische operatoren?

Ik heb je gedachten gelezen. Je denkt: "Ik weet van logische operatoren. Wat zijn de speciale logische operatoren?".

Welnu, de speciale logische operatoren zijn:

  • EN (&)
  • OF (|)

Vanuit programmeerperspectief evalueert de AND-operator waar als beide zijden van de operator waar zijn. De OR-operator evalueert naar waar als een van de zijden naar waar evalueert.

Hier is de tabel voor uw referentie. Sommige mensen zijn er misschien bekend mee1En0. Voor die mensen, vervang FALSE door0en WAAR met1.

X Y X OF Y X EN Y
ONWAAR ONWAAR ONWAAR ONWAAR
ONWAAR WAAR WAAR ONWAAR
WAAR ONWAAR WAAR ONWAAR
WAAR WAAR WAAR WAAR

Maar ze hebben een heel ander gebruik met deuitdrcommando. Laten we er snel naar kijken.

Deuitdropdracht werkt vergelijkbaar met de bovenstaande tabel. Maar er is een uitzondering voor een bepaald geval. Deze opdracht komt nooit meer terug1als een uitdrukking resulteert in waar, retourneert het in plaats daarvan een argument.

Evaluerenexpr ARG1 | ARG2geeft ARG1 terug als ARG1 geen van beide isnulnoch0, anders retourneert het ARG2. Aan de andere kant evaluerenexpr ARG1 & ARG2geeft ARG1 terug als geen van beide argumenten dat isnulof0. Het keert terug0anders.

Laten we enkele voorbeelden bekijken met de logische OR-operator:

uitdr 1 \| 2 # Geeft als resultaat het eerste argument (1)expr 0 \| 2 # Retourneert het tweede argument (2) aangezien het eerste argument 0expr "" \| is 2 # Retourneert het tweede argument (2) aangezien het eerste argument null is (lege tekenreeks [""] wordt beschouwd als null in terminal)expr 100 \| 78# Geeft als resultaat het eerste argument 100expr "" \| "" # Retourneert 0 omdat beide argumenten null zijn ("")
Hoe u uw Linux-terminal als rekenmachine gebruikt - Oplosser voor wiskundige uitdrukkingen (5)

De bovenstaande schermafbeelding geeft bewerkingen weer met de logische OR-operator (|). Als je dat leest, heb je misschien nog een paar vragen:

Wat is het doel van het gebruik van lege dubbele aanhalingstekens ("") in de uitdrukking?

Lege dubbele aanhalingstekens vertegenwoordigen eennulwaarde in bash. Dus, zoals eerder gezegd, als het eerste argument null is, wordt het tweede argument geretourneerd.

Wat als beide argumenten nul zijn?

Bij het evalueren van beide argumenten met null-waarden, wordt zowel de logische OR- als de AND-operator geretourneerd0.

Laten we een paar voorbeelden bekijken met de logische AND-operator:

expr 1 \& 2 # Retourneert eerste argument (1)expr 1 \& 0 # Retourneert 0 als één (tweede) argument is 0expr 0 \& 1 # Retourneert 0 als één (eerste) argument is 0expr "" \& 1# Retourneert 0 als één (eerste) argument null is ("")expr 1 \& ""# Geeft 0 terug als één (tweede) argument null is ("")expr "" \| "" # Retourneert 0 omdat beide argumenten null zijn ("")
Hoe u uw Linux-terminal als rekenmachine gebruikt - Oplosser voor wiskundige uitdrukkingen (6)

Stringbewerkingen uitvoeren met deuitdrCommando

Deuitdrcommando is niet beperkt tot wiskundige en logische bewerkingen. Het kan ook stringbewerkingen uitvoeren.

Patroonafstemming met Regex

Deuitdropdracht kan controleren of een tekst overeenkomt met een regex-patroon. Het retourneert het overeenkomende patroon van de tekst als het bestaat of retourneert een lege regel.

De syntaxis om de regex te verifiëren is:

expr STRING: REGEXPorexpr komt overeen met STRING REGEXP
Hoe u uw Linux-terminal als rekenmachine gebruikt - Oplosser voor wiskundige uitdrukkingen (7)

U kunt dit bereiken door gebruik te maken van deovereenkomsttrefwoord of door een puntkomma (:) tussen de tekenreeks en het regex-patroon.

U kunt ook de puntkomma gebruiken om het aantal tekens te vinden dat overeenkomt tussen de twee teksten.

Hier is een voorbeeld:

expr Onthoud: Remo # Retourneert 0expr Onthoud: Rem # Retourneert 3
Hoe u uw Linux-terminal als rekenmachine gebruikt - Oplosser voor wiskundige uitdrukkingen (8)

Vind de lengte van een tekst

U kunt deexpr lengtecommando om de lengte van de gegeven tekst te vinden.

expr lengte Linuxexpr lengte "Linux leren is leuk"
Hoe u uw Linux-terminal als rekenmachine gebruikt - Oplosser voor wiskundige uitdrukkingen (9)

U kunt de tekst direct achter de invoerenexpr lengtecommando als het geen spaties heeft. Als de tekst spaties bevat, plaatst u deze tussen dubbele aanhalingstekens (""), anders krijgt u een foutmelding.

Zoek een teken in een tekst

U kunt een bepaald teken uit een bepaalde tekst vinden met behulp van deexpr-indexcommando. Het geeft de plaats terug waar het personage bestaat.

expr index STRING CHAR
Hoe u uw Linux-terminal als rekenmachine gebruikt - Oplosser voor wiskundige uitdrukkingen (10)

Vergeet niet dat deexpr-indexopdracht voert een hoofdlettergevoelige zoekopdracht uit en retourneert de eerste overeenkomende index van een teken uit de tekst.

Extraheer een subtekenreeks uit een tekenreeks

Het extraheren van een substring uit een string is eenvoudig te gebruikenuitdrcommando. Als u de tekenreeks, startindex en het aantal tekens dat na de startindex moet worden afgekapt, invoert, wordt de verwachte subtekenreeks geretourneerd.

expr substr Timmerman 4 3 # Geeft pen terug
Hoe u uw Linux-terminal als rekenmachine gebruikt - Oplosser voor wiskundige uitdrukkingen (11)

Conclusie

In dit artikel heb je de use cases van deuitdrcommando.

Als je mijn tutorial leuk vond, kun je je abonneren op mijn nieuwsbrief op mijnpersoonlijke websiteom meer van dergelijke inzichtelijke artikelen rechtstreeks in uw inbox te ontvangen. Je vindt er ook een geconsolideerde lijst van al mijn blogposts.

Top Articles
Latest Posts
Article information

Author: The Hon. Margery Christiansen

Last Updated: 07/10/2023

Views: 5925

Rating: 5 / 5 (70 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: The Hon. Margery Christiansen

Birthday: 2000-07-07

Address: 5050 Breitenberg Knoll, New Robert, MI 45409

Phone: +2556892639372

Job: Investor Mining Engineer

Hobby: Sketching, Cosplaying, Glassblowing, Genealogy, Crocheting, Archery, Skateboarding

Introduction: My name is The Hon. Margery Christiansen, I am a bright, adorable, precious, inexpensive, gorgeous, comfortable, happy person who loves writing and wants to share my knowledge and understanding with you.