GNU/Linux >> Tutoriels Linux >  >> Linux

Faites des calculs dans le shell Linux avec GNU bc

La plupart des systèmes POSIX sont livrés avec GNU bc, un langage de traitement numérique de précision arbitraire. Sa syntaxe est similaire à C, mais il prend également en charge l'exécution interactive d'instructions et le traitement de données à partir du standard in (stdin ). Pour cette raison, c'est souvent la réponse à la question "Comment puis-je faire des maths dans le shell Linux ?" Ce style de réponse est courant en ligne :

$ echo "1+1" | bc
2

Bien que cela soit parfaitement valable, peu d'utilisateurs affirment que c'est élégant par rapport à quelque chose de plus intuitif, comme :

$ 1+1  #this does not work
2

Le mode interactif est un peu plus simple :

$ bc 
1+1
2
quit
$

Mais les modes interactifs ne correspondent pas toujours au flux de travail souhaité et intuitif de quelque chose de simple, comme simplement taper le calcul que vous voulez. Pour cela, je vous propose la calculatrice de Bluebat en pur Bash.

Ce que bc fournit en réalité est un langage mathématique pour le calcul avancé.

Fonctions avancées avec mathlib

Seul, bc fournit des fonctions mathématiques de base. Vous pouvez les tester en mode interactif :

$ bc
3^2
9
(3^2)*(9)/3
27

Utilisez le --mathlib option pour obtenir des fonctions avancées, y compris le sinus, le cosinus, la tangente, etc. En mode interactif, vous pouvez tester certains d'entre eux. Voici le cosinus de 90 :

c(90)
-.44807361612917015236

Le sinus de 9 :

s(9)
.41211848524175656975

Créer vos propres fonctions bc

Vous pouvez également créer vos propres fonctions dans bc. Les définitions de fonction commencent par define mot-clé et sont entourés d'accolades. Voici une fonction simple saisie dans une session interactive qui renvoie le nombre qui lui est donné :

$ bc
define echo(n) {
  return (n);
}

Dans la même session interactive, testez-le :

echo(2)
2
echo(-2)
-2

Instructions If en bc

Le langage bc a également une variété d'instructions de contrôle, dont la plus simple est if/else. La syntaxe peut sembler familière à première vue, mais il existe des subtilités dans la façon dont les accolades sont gérées. Notez que le autre clause d'une instruction if est entourée d'accolades, tandis que then clause n'est pas, mais les deux se terminent par un point-virgule. Voici une fonction pour trouver la valeur absolue d'un nombre n :

define abso(n) {
  if ( n > 0 ) return (n);
  { return (-n); }
}

Dans la même session interactive, testez-le :

abso(-5)
5
abso(5)
5

Importer des données dans bc

Travailler dans une session interactive est tolérable pour des calculs et des expérimentations rapides, mais vous perdez vos données lorsque vous quittez, et il est difficile de les modifier lorsque vous faites des erreurs. Heureusement, bc peut charger des variables et des fonctions à partir de fichiers externes.

Voici un fichier contenant deux variables (sol et foo ) et un abso personnalisé fonction pour trouver une valeur absolue :

sol=299792458

foo=42

define abso(n) {
  if ( n > 0 ) return (n);
  { return (-n); }
}

Enregistrez ceci dans un fichier appelé bcvars.bc , afin que vous puissiez l'importer dans une session bc interactive :

$ bc bcvars.bc
foo
42
sol
299792458
abso(-23)
23

Améliorez vos maths avec bc

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

Le langage bc est relativement simple, à condition que vous connaissiez suffisamment les mathématiques pour construire l'équation de tout ce que vous essayez d'accomplir. Alors que bc fournit par défaut des fonctions de base utiles et vous permet de créer les vôtres, vous pouvez réduire votre charge de travail en vous tenant sur les épaules de géants. Les fichiers chargés de nouvelles fonctions, à la fois pour les fondamentaux mathématiques ainsi que pour des tâches spécifiques (par exemple, le calcul des intérêts composés), sont disponibles sur la page GNU bc, et une documentation complète pour bc est disponible.

Si vous souhaitez faire de meilleurs calculs dans un shell, essayez bc. Cela ne fera pas de vous un génie des mathématiques, mais cela pourrait vous aider à le devenir plus facilement.


Linux
  1. Planification des tâches avec la commande Linux cron

  2. Planifier une tâche avec la commande Linux at

  3. Analyser le noyau Linux avec ftrace

  4. Partitionner un disque sous Linux avec GNU Parted

  5. Comment changer le shell par défaut sous Linux

Apprendre Linux avec le Raspberry Pi

Premiers pas avec le gestionnaire de fenêtres i3 sous Linux

Télécharger des fichiers avec Wget sur le shell Linux - Explication et exemples

Qu'est-ce que le Shell sous Linux ?

Comment installer Fish, le shell interactif convivial, sous Linux

Sécurisez Linux avec le fichier Sudoers