126 votes

Une calculatrice en ligne de commande pour Ubuntu ?

Je recherche une calculatrice capable d'effectuer des calculs dans le terminal lui-même, sans autres préfixes et suffixes supplémentaires.

Par exemple : Si je tape quelque chose comme 10000-9000 dans le terminal, la réponse devrait être 1000.

Je le répète, j'ai juste besoin d'une calculatrice rapide en terminal, sans aucun caractère ajouté. Je sais que si je passe à Python, cela peut se faire mais je ne le veux pas de cette manière.

21voto

Utilisez le gcalccmd de gnome-calculator (>=13.04) ou gcalctool (<13.04). Je pense que le paquet est installé par défaut

% gcalccmd
> 2+3
5
> 3/2
1.5
> 3*2
6
> 2-3
1
>

11voto

user530873 Points 697

Voici un Shell Shell rapide pour cela :

#!/bin/bash
echo "$@" | bc

Enregistrez ce fichier sous le nom de "c", puis placez-le quelque part dans votre chemin (comme /bin), puis marquez-le comme exécutable.

# nano /bin/c
# chmod +x /bin/c

À partir de maintenant, vous pouvez exécuter des calculs dans le terminal comme ceci :

$ c 10000-9000
1000

10voto

mlambie Points 491

Une autre solution que je n'ai pas vue mentionnée ici est Qalculate (qalc) .

sudo apt-get install qalc

pour la version CLI,

sudo apt-get install qalculate-gtk

pour l'interface graphique.

Il dispose d'un grand nombre de fonctionnalités telles que :

  • le soutien à unités : par exemple 20 m / s * 12 h = 864 kilom
  • intégré constantes comme pi , e , c , avogadro
  • de nombreux éléments intégrés fonctions : par exemple sin(pi) = 0 , gamma(4) = 6 , 5! = 120 , log(1024, 2) = 10
  • la conversion des unités, par exemple

> 120 in
120 * inch = 120 in
> convert cm
120 in = 304.8 centim

  • calcul symbolique par exemple (x + y)^2 = x^2 + 2xy + y^2
  • l'intégration, par exemple integrate 3*x^2 = x^3 , diff sin(x), pi
  • aide intégrée, par exemple help convert , help integrate
  • tabulation des commandes
  • tout est traduit, par exemple, mon système est en néerlandais, ce qui me permet d'écrire à la fois factorial(5) y faculteit(5) .
  • et plus encore...

Vous dites que vous voulez l'utiliser sans préfixe, eh bien... vous pouvez l'utiliser avec un préfixe :

$ qalc 5 ft + 3 cm (5 * foot) + (3 * centim) = 1.554 m

ainsi que de l'exécuter en tant que repl.

8voto

Mark Plotnick Points 989

Voici une modification de la partie appropriée de /etc/bash.bashrc (sur Ubuntu 10.04) qui va modifier le fichier command_not_found gestionnaire pour exécuter l'évaluateur d'expression de Shell si le premier caractère de la commande inconnue est un nombre ou - o + .

Vous serez en mesure de faire n'importe quelle arithmétique Shell de cette façon ; voir http://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmétique pour une liste d'opérateurs arithmétiques.

Notez que si l'expression que vous voulez évaluer contient un * vous devrez citer le * con \ ou des guillemets puisque le Shell fera une expansion du nom de fichier avant de décider de la commande à exécuter. Même chose pour les autres opérateurs comme >> .

Mettez ceci dans votre ~/.bashrc puis tapez . ~/.bashrc et l'essayer.

# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found ]; then
    function command_not_found_handle {
        if [[ $1 == [0-9+-]* ]]; then
           echo $(( $@ ))
        elif [ -x /usr/lib/command-not-found ]; then
           /usr/bin/python /usr/lib/command-not-found -- $1
           return $?
        elif [ -x /usr/share/command-not-found ]; then
           /usr/bin/python /usr/share/command-not-found -- $1
           return $?
        else
           return 127
        fi
    }
fi

Exemple de sortie : (Je suis en train de taper cta (une faute de frappe, juste pour vérifier que notre nouveau gestionnaire command_not_found essaiera toujours de rechercher des commandes inconnues).

mp@ubuntu:~$ cta
No command 'cta' found, did you mean:
 Command 'cda' from package 'xmcd' (universe)
 Command 'cat' from package 'coreutils' (main)
cta: command not found
mp@ubuntu:~$ 9000-1000
8000

7voto

Yet Another User Points 2591

dc ! Il fait partie de coreutils, donc il est installé sur OS X, Ubuntu, et à peu près TOUT le reste. C'est une calculatrice RPN, donc si vous n'aimez pas ça, ce n'est pas pour vous.

Très basique sont les suivantes (la page de manuel contient toute la syntaxe que je n'ai pas incluse, y compris l'exponentiation)

Vous n'avez besoin que d'espaces entre les chiffres. Ils sont ignorés dans tous les autres cas.

La saisie d'un nombre le pousse au sommet de la pile.

+ Adds top 2 items in stack, then pushes result to stack (`2 4 +p` outputs 6)
- Subtracts top 2 items in stack, then pushes result to stack (`4 2 -p` outputs 2)
* Multiplies top 2 items in stack, then pushes result to stack (`6 5 *p` outputs 30)
/ Divides top 2 items in stack, then pushes result to stack (`54 7 /p` outputs 8)
p Print top item in stack, without destroying it
c Clear stack
r Swap top 2 items on stack
d Duplicate top item on stack
k Pops top item off stack, using it to determine precision (so 10 k would print 10 numbers after the decimal point). Default is 0, so it won't do floating point math by default.
n Pops top value off stack, then sends to stdout without a trailing newline
f Dump stack. Useful for finding what something does

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X