linuxlinux

Cu comanda potrivită, puteți face orice, de la matematică simplă la calcule destul de complexe pe Linux.

Linia de comandă Linux oferă câteva instrumente foarte utile pentru a vă permite să efectuați calcule matematice. Acest tutorial prezintă o serie de comenzi pe care le puteți utiliza și demonstrează câteva tehnici pentru a vă face calculele fără probleme.

Comanda expr

Cea mai evidentă comandă pentru a face matematică pe linia de comandă Linux este expr ca în „expresie”. Funcționează cu expresii aritmetice și oferă răspunsuri aproape instantanee la solicitările dumneavoastră chiar și atunci când calculele sunt destul de complexe. Iată câteva exemple destul de simple. Observați bara oblică inversă necesară pentru a preveni interpretarea asteriscului ca un wild card.

$ expr 11 \* 11
121
$ expr 11 \* 11 \* 11
1331

În plus, nu este nevoie de caracterele bară oblică inversă, în afară de a prefața caracterul „wild card” (*). Celelalte caractere care reprezintă calcule numerice nu le necesită.

$ expr 11 \* 11 - 3
118

Iată câteva comparații ale modului în care funcționează acești operatori.

$ expr 7 + 4
11
$ expr 7 - 4
3
$ expr 7 / 4
1
$ expr 7 % 4
3
$ expr 7 \* 4
28

A patra operație de mai sus (%) oferă restul pentru cea de dinainte (/).

De asemenea, puteți atribui valori variabilelor și puteți utiliza acele nume de variabile în calculele dumneavoastră, așa cum se arată în exemplele de mai jos.

$ num1=11
$ num2=17
$ expr $num1 + $num2
28

Comanda time

Folosind comanda time, puteți măsura cât de repede durează operația de înmulțire cu patru numere de mai jos. Se termină în câteva miimi de secundă pe Raspberry Pi 4

time expr 123 \* 245 \* 88 \* 314
832690320

real    0m0.006s
user    0m0.004s
sys     0m0.003s

Compararea șirurilor cu expr

Comanda expr oferă, de asemenea, o modalitate de a compara șirurile, dar rețineți că trebuie furnizat mai întâi șirul mai lung.

$ expr Linux : Linux
5
$ expr LinuxNow : Linux
5
$ expr Linux : LinuxNow
0

Obțineți ajutor

Puteți obține ajutor la utilizarea comenzii expr utilizând opțiunea –-help (expr –-help). Cea mai mare parte va explica cum funcționează diferitele expresii. Include explicații precum acestea:

Usage: expr EXPRESSION
  or:  expr OPTION

      --help        display this help and exit
      --version     output version information and exit

Print the value of EXPRESSION to standard output.  A blank line below
separates increasing precedence groups.  EXPRESSION may be:

  ARG1 | ARG2       ARG1 if it is neither null nor 0, otherwise ARG2

  ARG1 & ARG2       ARG1 if neither argument is null or 0, otherwise 0

  ARG1 < ARG2       ARG1 is less than ARG2
  ARG1 <= ARG2      ARG1 is less than or equal to ARG2
  ARG1 = ARG2       ARG1 is equal to ARG2
  ARG1 != ARG2      ARG1 is unequal to ARG2
  ARG1 >= ARG2      ARG1 is greater than or equal to ARG2
  ARG1 > ARG2       ARG1 is greater than ARG2

  ARG1 + ARG2       arithmetic sum of ARG1 and ARG2
  ARG1 - ARG2       arithmetic difference of ARG1 and ARG2

  ARG1 * ARG2       arithmetic product of ARG1 and ARG2
  ARG1 / ARG2       arithmetic quotient of ARG1 divided by ARG2
  ARG1 % ARG2       arithmetic remainder of ARG1 divided by ARG2

  STRING : REGEXP   anchored pattern match of REGEXP in STRING

  match STRING REGEXP        same as STRING : REGEXP
  substr STRING POS LENGTH   substring of STRING, POS counted from 1
  index STRING CHARS         index in STRING where any CHARS is found, or 0
  length STRING              length of STRING
  + TOKEN                    interpret TOKEN as a string, even if it is a
                               keyword like 'match' or an operator like '/'

  ( EXPRESSION )             value of EXPRESSION

Beware that many operators need to be escaped or quoted for shells.
Comparisons are arithmetic if both ARGs are numbers, else lexicographical.
Pattern matches return the string matched between \( and \) or null; if
\( and \) are not used, they return the number of characters matched or 0.

Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is null
or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation <https://www.gnu.org/software/coreutils/expr>
or available locally via: info '(coreutils) expr invocation'

Comenzile de mai jos sunt exemple de comenzi expr.

$ expr 60 / 30 \* 100
200
$ expr 20 / 30 \* 100
0

Hopa! Ce s-a întâmplat în al doilea exemplu de mai sus? Comanda expr nu va păstra numerele mai mici de 0. Deci, trebuie să utilizați o altă comandă.

Comanda bc

Comanda bc poate fi folosită atunci când trebuie să vedem zecimale. Valoarea scalei vă permite să specificați câte zecimale doriți să vedeți.

$ echo "scale = 2; 30 * 75 / 40" | bc
56.25
$ echo "scale = 3; 30 * 75 / 40" | bc
56.250

Comanda Factor

Comanda factor calculează factorii care înmulțiți vor rezulta în numărul inițial.

$ factor 81
81: 3 3 3 3
$ factor 123
123: 3 41

Comanda Bash

Rețineți că puteți face și câteva calcule numerice simple folosind bash, așa cum se arată în acest script de bază. Observați cum comparația numerică este închisă în paranteze duble.

#!/bin/bash

echo -n "x: "
read x
echo -n "y: "
read y

if (( x > y )); then
    echo "x > y"
else
    echo "x ! > y"
fi

Concluzii

Puteți face orice, de la calcule simple la calcule destul de complexe pe Linux. Doar alegeți comanda potrivită pentru a ușura sarcina și fiți gata pentru un răspuns surprinzător de rapid.

De Madalin

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *