GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Rechnen Sie in der Linux-Shell mit GNU bc

Die meisten POSIX-Systeme verfügen über GNU bc, eine numerische Verarbeitungssprache mit beliebiger Genauigkeit. Seine Syntax ähnelt C, unterstützt aber auch die interaktive Ausführung von Anweisungen und die Verarbeitung von Daten aus dem Standard in (stdin ). Aus diesem Grund ist es oft die Antwort auf die Frage "Wie mache ich Mathematik in der Linux-Shell?" Dieser Antwortstil ist online üblich:

$ echo "1+1" | bc
2

Das ist zwar vollkommen richtig, aber nur wenige Benutzer argumentieren, dass es im Vergleich zu etwas Intuitiverem elegant ist, wie z. B.:

$ 1+1  #this does not work
2

Der interaktive Modus ist etwas einfacher:

$ bc 
1+1
2
quit
$

Aber interaktive Modi passen nicht immer zu dem gewünschten und intuitiven Workflow von etwas Einfachem, wie zum Beispiel das einfache Eintippen der gewünschten Berechnung. Dafür schlage ich den Taschenrechner von Bluebat in reiner Bash vor.

Was bc tatsächlich bietet, ist eine mathematische Sprache für fortgeschrittene Berechnungen.

Erweiterte Funktionen mit Mathlib

Allein, bc bietet grundlegende mathematische Funktionen. Sie können sie im interaktiven Modus testen:

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

Verwenden Sie --mathlib Option für erweiterte Funktionen, einschließlich Sinus, Cosinus, Tangens und mehr. Im interaktiven Modus können Sie einige davon testen. Hier ist der Kosinus von 90:

c(90)
-.44807361612917015236

Der Sinus von 9:

s(9)
.41211848524175656975

Erstellen eigener bc-funktionen

Sie können auch Ihre eigenen Funktionen in bc erstellen. Funktionsdefinitionen beginnen mit define Schlüsselwort und sind in geschweiften Klammern eingeschlossen. Hier ist eine einfache Funktion, die in eine interaktive Sitzung eingegeben wird und die gegebene Zahl zurückgibt:

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

Testen Sie es in derselben interaktiven Sitzung:

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

If-Anweisungen in bc

Die bc-Sprache hat auch eine Vielzahl von Steueranweisungen, von denen die einfachste if/else ist. Die Syntax mag auf den ersten Blick vertraut erscheinen, aber es gibt Feinheiten bei der Behandlung von geschweiften Klammern. Beachten Sie, dass else -Klausel einer if-Anweisung wird in geschweiften Klammern eingeschlossen, während die then -Klausel nicht, aber beide werden mit einem Semikolon abgeschlossen. Hier ist eine Funktion, um den Absolutwert einer Zahl n zu finden :

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

Testen Sie es in derselben interaktiven Sitzung:

abso(-5)
5
abso(5)
5

Importieren von Daten in bc

Das Arbeiten in einer interaktiven Sitzung ist für schnelle Berechnungen und Experimente erträglich, aber Sie verlieren Ihre Daten, wenn Sie sie beenden, und es ist schwierig, sie zu bearbeiten, wenn Sie Fehler machen. Glücklicherweise kann bc Variablen und Funktionen aus externen Dateien laden.

Hier ist eine Datei mit zwei Variablen (sol und foo ) und ein benutzerdefiniertes abso Funktion, um einen absoluten Wert zu finden:

sol=299792458

foo=42

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

Speichern Sie dies in einer Datei namens bcvars.bc , damit Sie es in eine interaktive BC-Sitzung importieren können:

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

Verstärken Sie Ihre Mathematik mit bc

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Die bc-Sprache ist relativ einfach, vorausgesetzt, Sie wissen genug Mathematik, um die Gleichung für das zu konstruieren, was Sie erreichen möchten. Während bc standardmäßig nützliche Grundfunktionen bereitstellt und Ihnen ermöglicht, eigene zu erstellen, können Sie Ihren Arbeitsaufwand reduzieren, indem Sie auf den Schultern von Giganten stehen. Dateien, die mit neuen Funktionen geladen sind, sowohl für mathematische Grundlagen als auch für spezielle Aufgaben (zum Beispiel das Berechnen von Zinseszinsen), sind auf der GNU bc-Seite verfügbar, und die vollständige Dokumentation für bc ist verfügbar.

Wenn Sie daran interessiert sind, in einer Shell besser zu rechnen, versuchen Sie es mit bc. Es wird Sie nicht zu einem Mathematikgenie machen, aber es könnte es einfacher machen, eines zu werden.


Linux
  1. Planen von Aufgaben mit dem Linux-Cron-Befehl

  2. Planen Sie eine Aufgabe mit dem Linux-Befehl at

  3. Analysieren Sie den Linux-Kernel mit ftrace

  4. Partitionieren Sie ein Laufwerk unter Linux mit GNU Parted

  5. Templating mit Linux in einem Shell-Skript?

Lernen Sie Linux mit dem Raspberry Pi

Erste Schritte mit dem i3 Window Manager unter Linux

Herunterladen von Dateien mit Wget auf der Linux-Shell - Erklärung und Beispiele

Was ist die Shell unter Linux?

So installieren Sie Fish, die freundliche interaktive Shell, unter Linux

Sichern Sie Linux mit der Sudoers-Datei