Problème :
De temps en temps, j'ai besoin de faire de l'arithmétique simple dans un environnement de ligne de commande. PAR EXEMPLE. étant donné la sortie suivante :
Disk /dev/sdb: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 106MB 105MB fat32 hidden, diag
2 106MB 64.1GB 64.0GB ext4
3 64.1GB 192GB 128GB ext4
5 236GB 256GB 20.0GB linux-swap(v1)
Comment calculer simplement sur la ligne de commande la taille de l'espace non alloué entre les partitions 3 et 5 ?
Ce que j'ai déjà essayé :
avant JC
bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
236-192
44
quit
où le gras ci-dessus est tout ce que j'ai besoin de taper pour faire un simple 236-192
comme bc 1+1
echos File 1+1 is unavailable.
expr
expr 236 - 192
où je dois taper des espaces avant et après l'opérateur sous la forme expr 1+1
renvoie simplement 1+1
.
Réponse acceptée :
Vous pouvez réduire considérablement la quantité de verbosité impliquée dans l'utilisation de bc
:
$ bc <<<"236-192"
44
$ bc <<<"1+1"
2
(en supposant que votre shell le supporte).
Si vous préférez avoir cela comme fonction :
$ c() { printf "%sn" "$*" | bc }
$ c 1+1
2
Stockez le c
définition dans votre fichier de démarrage de shell préféré si vous souhaitez qu'il soit toujours disponible.