GNU/Linux >> Linux Esercitazione >  >> Linux

Fai calcoli nella shell Linux con GNU bc

La maggior parte dei sistemi POSIX viene fornita con GNU bc, un linguaggio di elaborazione numerica di precisione arbitraria. La sua sintassi è simile a C, ma supporta anche l'esecuzione interattiva di istruzioni e l'elaborazione di dati da standard in (stdin ). Per questo motivo, è spesso la risposta alla domanda "Come faccio a fare matematica nella shell di Linux?" Questo stile di risposta è comune online:

$ echo "1+1" | bc
2

Sebbene sia perfettamente valido, pochi utenti sostengono che sia elegante rispetto a qualcosa di più intuitivo, come:

$ 1+1  #this does not work
2

La modalità interattiva è un po' più semplice:

$ bc 
1+1
2
quit
$

Ma le modalità interattive non sempre si adattano al flusso di lavoro desiderato e intuitivo di qualcosa di semplice, come la semplice digitazione del calcolo desiderato. Per questo, suggerisco la calcolatrice di Bluebat in puro Bash.

Ciò che bc fornisce effettivamente è un linguaggio matematico per calcoli avanzati.

Funzioni avanzate con mathlib

Da solo, bc fornisce funzioni matematiche di base. Puoi testarli in modalità interattiva:

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

Usa il --mathlib opzione per ottenere funzioni avanzate, inclusi seno, coseno, tangente e altro. Nella modalità interattiva, puoi testarne alcuni. Ecco il coseno di 90:

c(90)
-.44807361612917015236

Il seno di 9:

s(9)
.41211848524175656975

Creazione delle tue funzioni bc

Puoi anche creare le tue funzioni in bc. Le definizioni delle funzioni iniziano con define parola chiave e sono racchiusi tra parentesi graffe. Ecco una semplice funzione inserita in una sessione interattiva che restituisce qualsiasi numero gli sia stato assegnato:

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

Nella stessa sessione interattiva, provalo:

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

Se dichiarazioni in bc

Il linguaggio bc ha anche una varietà di istruzioni di controllo, la più semplice delle quali è if/else. La sintassi può sembrare familiare a prima vista, ma ci sono sottigliezze nel modo in cui vengono gestite le parentesi graffe. Nota che l'altro La clausola di un'istruzione if è racchiusa tra parentesi graffe, mentre then la clausola non lo è, ma entrambe vengono terminate con un punto e virgola. Ecco una funzione per trovare il valore assoluto di un numero n :

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

Nella stessa sessione interattiva, provalo:

abso(-5)
5
abso(5)
5

Importazione di dati in bc

Lavorare in una sessione interattiva è tollerabile per calcoli e sperimentazioni veloci, ma perdi i tuoi dati quando esci ed è difficile modificarli quando commetti errori. Fortunatamente, bc può caricare variabili e funzioni da file esterni.

Ecco un file contenente due variabili (sol e foo ) e un abso personalizzato funzione per trovare un valore assoluto:

sol=299792458

foo=42

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

Salvalo in un file chiamato bcvars.bc , così puoi importarlo in una sessione interattiva bc:

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

Potenzia la tua matematica con bc

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

Il linguaggio bc è relativamente semplice, a condizione che tu conosca abbastanza matematica per costruire l'equazione per qualsiasi cosa tu stia cercando di realizzare. Mentre bc per impostazione predefinita fornisce utili funzioni di base e ti consente di crearne di tue, puoi ridurre il tuo carico di lavoro stando sulle spalle dei giganti. I file caricati con nuove funzioni, sia per i fondamenti matematici che per compiti specifici (ad esempio, il calcolo dell'interesse composto), sono disponibili dalla pagina GNU bc ed è disponibile la documentazione completa per bc.

Se sei interessato a fare calcoli matematici migliori in una shell, prova bc. Non ti trasformerà in un genio della matematica, ma potrebbe solo renderti più facile diventarlo.


Linux
  1. Pianificazione delle attività con il comando cron di Linux

  2. Pianifica un'attività con il comando Linux at

  3. Nozioni di base su Linux:come scaricare file sulla shell con Wget

  4. Come modificare la shell predefinita in Linux

  5. Come posso rinominare i file con spazi utilizzando la shell di Linux?

Impara Linux con Raspberry Pi

Iniziare con il window manager i3 su Linux

Scarica file con Wget sulla shell Linux - Spiegazione ed esempi

Che cos'è la shell in Linux?

Come installare Fish, la shell interattiva amichevole, in Linux

Proteggi Linux con il file Sudoers