GNU/Linux >> Tutoriales Linux >  >> Linux

Haz matemáticas en el shell de Linux con GNU bc

La mayoría de los sistemas POSIX vienen con GNU bc, un lenguaje de procesamiento numérico de precisión arbitraria. Su sintaxis es similar a C, pero también admite la ejecución interactiva de sentencias y el procesamiento de datos del estándar en (stdin ). Por esa razón, a menudo es la respuesta a la pregunta "¿Cómo hago operaciones matemáticas en el shell de Linux?" Este estilo de respuesta es común en línea:

$ echo "1+1" | bc
2

Si bien eso es perfectamente válido, pocos usuarios argumentan que es elegante en comparación con algo más intuitivo, como:

$ 1+1  #this does not work
2

El modo interactivo es un poco más fácil:

$ bc 
1+1
2
quit
$

Pero los modos interactivos no siempre se ajustan al flujo de trabajo deseado e intuitivo de algo simple, como simplemente escribir el cálculo que desea. Para esto, sugiero la calculadora de Bluebat en Bash puro.

Lo que bc proporciona en realidad es un lenguaje matemático para cálculos avanzados.

Funciones avanzadas con mathlib

Por sí solo, bc proporciona funciones matemáticas básicas. Puedes probarlos en el modo interactivo:

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

Utilice el --mathlib opción para obtener funciones avanzadas, incluyendo seno, coseno, tangente y más. En el modo interactivo, puedes probar algunos de ellos. Aquí está el coseno de 90:

c(90)
-.44807361612917015236

El seno de 9:

s(9)
.41211848524175656975

Creando tus propias funciones bc

También puede crear sus propias funciones en bc. Las definiciones de funciones comienzan con define palabra clave y se encierran entre llaves. Aquí hay una función simple ingresada en una sesión interactiva que devuelve cualquier número que se le dé:

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

En la misma sesión interactiva, pruébalo:

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

sentencias if en bc

El lenguaje bc también tiene una variedad de declaraciones de control, la más simple de las cuales es if/else. La sintaxis puede parecer familiar a primera vista, pero hay sutilezas en la forma en que se manejan las llaves. Tenga en cuenta que el else La cláusula de una sentencia if está encerrada entre llaves, mientras que then la cláusula no lo es, pero ambas terminan con un punto y coma. Aquí hay una función para encontrar el valor absoluto de un número n :

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

En la misma sesión interactiva, pruébalo:

abso(-5)
5
abso(5)
5

Importación de datos en bc

Trabajar en una sesión interactiva es tolerable para cálculos rápidos y experimentación, pero pierde sus datos cuando sale y es difícil editarlos cuando comete errores. Afortunadamente, bc puede cargar variables y funciones desde archivos externos.

Aquí hay un archivo que contiene dos variables (sol y foo ) y un abso personalizado función para encontrar un valor absoluto:

sol=299792458

foo=42

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

Guárdelo en un archivo llamado bcvars.bc , para que pueda importarlo a una sesión interactiva de bc:

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

Potencia tus matemáticas con bc

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

El lenguaje bc es relativamente simple, siempre que sepa suficientes matemáticas para construir la ecuación para lo que sea que esté tratando de lograr. Si bien bc proporciona funciones básicas útiles de forma predeterminada y le permite crear las suyas propias, puede reducir su carga de trabajo subiéndose a hombros de gigantes. Los archivos cargados con nuevas funciones, tanto para fundamentos matemáticos como para tareas específicas (por ejemplo, cálculo de interés compuesto), están disponibles en la página GNU bc, y la documentación completa para bc está disponible.

Si está interesado en hacer mejores matemáticas en un caparazón, pruebe bc. No te convertirá en un genio de las matemáticas, pero puede que sea más fácil convertirte en uno.


Linux
  1. Programación de tareas con el comando cron de Linux

  2. Programar una tarea con Linux al mando

  3. Analizar el kernel de Linux con ftrace

  4. ¿Cómo cambio el nombre de los archivos con espacios usando el shell de Linux?

  5. ¿Plantillas con Linux en un script de Shell?

Aprende Linux con la Raspberry Pi

Primeros pasos con el administrador de ventanas i3 en Linux

Descargar archivos con Wget en Linux Shell - Explicación y ejemplos

¿Qué es el Shell en Linux?

Cómo instalar Fish, The Friendly Interactive Shell, en Linux

Asegure Linux con el archivo Sudoers