Linux下的计算命令整理

在Linux系统下,经常会有一些计算需求,那么下面就简单梳理下几个常用到的计算命令

(1)bc命令
bc命令是一种支持任意精度的交互执行的计算器语言。bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下
常用参数选项:
-i:强制进入交互式模式;
-l:定义使用的标准数学库;
-w:对POSIX bc的扩展给出警告信息;
-q:不打印正常的GNU bc环境信息;
-v:显示指令版本信息;
-h:显示指令的帮助信息。

在bc工作环境下,可以使用以下计算符号:
+    加法
-     减法
*    乘法
/     除法
^    指数
%   余数
其中,在做“除法计算”或“余数计算”时,可以使用scale指定小数点之后的位数(默认为0,即整数)

实例说明:

[[email protected] ~]# bc -v
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
[[email protected] ~]# bc <<< 5*4
20
[[email protected] ~]# bc <<< 5+4
9
[[email protected] ~]# bc <<< 50-14
36
[[email protected] ~]# bc <<< 50/10
5
[[email protected] ~]# bc <<< 50/3
16
[[email protected] ~]# bc <<< 3^3
27

如下,进入交互模式:
也可以一行输入多个计算,用逗号;相隔。

[[email protected] ~]# 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‘.
3+10
13
10-5
5
10*10
100
10^2
100
10/2
5
10/3
3
scale=4
10/3
3.3333
10%3
.0001
3+4;5*2;5^2;18/4
7
10
25
4.5000
10^3;100+50;4000-598;33*8;899/34
1000
150
3402
264
26.4411

以上是使用交互的计算,也可以不进行交互而直接计算出结果。
1)结合echo和|符合
[[email protected] ~]# echo "(6+3)*2" |bc
18
[[email protected] ~]# echo 15/4 |bc
3
[[email protected]ver ~]# echo "scale=2;15/4" |bc
3.75
[[email protected] ~]# echo "scale=2;100/30*100-98;20+45;90-70;15^2" |bc
235.00
65
20
225
[[email protected] ~]# echo "3+4;5*2;5^2;18/4" |bc
7
10
25
4
2)bc除了scale来设定小数位之外,还有ibase和obase来其它进制的运算。
如下实例:
将16进制的A7输出为10进制, 注意,英文只能大写
[[email protected] ~]# echo "ibase=16;A7" |bc
167
将2进制的11111111转成10进制
[[email protected] ~]# echo "ibase=2;11111111" |bc
255
输入为16进制,输出为2进制
[[email protected] ~]# echo "ibase=16;obase=2;B5-A4" |bc
10001

3)除此之外bc后可以接文件名(指定包含计算任务的文件)

[[email protected] ~]# cat calc.txt
20+89
56-17
34*45
30/8
2^5
scale=5
100/3
200%17
[[email protected] ~]# bc calc.txt
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‘.
109
39
1530
3
32
33.33333
.00010

不打印正常的GNU信息
[[email protected] ~]# bc -q calc.txt
109
39
1530
3
32
33.33333
.00010

[[email protected] ~]# bc -q < calc.txt
109
39
1530
3
32
33.33333
.00010
[[email protected] ~]#

4)也可以使用HERE 命令:

[[email protected] ~]# bc << HERE
> 30+56
> 30-14
> 30*5
> scale=3
> 30/7
> 10%3
> 2^7
HERE
86
16
150
4.285
.001
128

5)可以使用内置的变量last引用上一次的结果:

[[email protected] ~]# echo "50*4;last+100" | bc
200
300

last也可以用点号代替:

[[email protected] ~]# echo "50*4;.+100" | bc
200
300

6)脚本模拟计算器

[[email protected] ~]# cat bc.sh
#!/bin/bash
bc << EOF
scale=2
[email protected]
EOF
[[email protected] ~]# chmod 755 bc.sh
[[email protected] ~]# ./bc.sh 10*2
20
[[email protected] ~]# ./bc.sh 10+32
42
[[email protected] ~]# /bin/bash bc.sh 100/3
33.33
[[email protected] ~]# /bin/bash -x bc.sh 100%13
+ bc
.03
时间: 2024-08-08 13:44:37

Linux下的计算命令整理的相关文章

Linux Centos6.x 下常用查询命令整理

Linux Centos6.x 下常用查询命令整理 ---- 1.系统基本信息 ---- 查看 系统版本 cat /etc/redhat-release [[email protected] ~]# cat /etc/redhat-release CentOS release 6.9 (Final) 查看 处理器架构 arch 或 uname -m [[email protected] ~]# arch x86_64 [[email protected] ~]# uname -m x86_64

Linux的经典shell命令整理

Linux的经典shell命令整理 1.删除0字节文件find -type f -size 0 -exec rm -rf {} \; 2.查看进程按内存从大到小排列ps -e -o “%C : %p : %z : %a”|sort -k5 -nr 3.按cpu利用率从大到小排列ps -e -o “%C : %p : %z : %a”|sort -nr 4.打印说cache里的URLgrep -r -a jpg /data/cache/* | strings | grep “http:” | aw

Linux 下的dd命令使用详解

dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解     一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. if=文件名:输入文件名,缺省为标准输入.即指定源文件.< if=input file > 2. of=文件名:输出文件名,缺省为标准输出.即指定目的文件.< of=output file >

linux下使用fdisk命令进行磁盘分区

linux下使用fdisk命令进行磁盘分区 目录 分区类型 分区方法表示 文件系统 fdisk命令分区过程 分区类型 主分区:总共最多只能分四个 扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个.但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用. 逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,Linux最多支持59个逻辑分区,如果是IDE硬盘,Linux最多支持59个逻辑分区,如果是SCSI硬盘Linux最多支持11个逻辑分区 分区方法表示

linux下修改rm命令防止误删除

前言:相信很多朋友都遇到过在linux下用rm命令误删除文件的时候,此刻的心中仿佛有无数的羊驼在奔腾.那么怎么防止这种情况发生呢?当然是有方法的,我们可以写一个shell脚本,改变一下rm命令的作用. 第一步: 先在home目录下创建一个叫username名字的目录(当然名字可以自定义),具体命令为:sudo mkdir username(自定义的名字) 这时候记得要用命令:sudo chmod 777 username(自定义的名字)来改变一下你的目录权限,因为在home目录下刚创建的目录是没

Linux下使用ps命令来查看Oracle相关的进程

Linux下可以使用ps命令来查看Oracle相关的进程 Oracle Listener 这个命令会列出Oracle Net Listener的进程 [[email protected] www.linuxidc.com ~]$ ps -ef | grep tnslsnr oracle    1999 29986  0 09:47 pts/2    00:00:00 grep tnslsnr oracle    3647     1  0 Jul03 ?        00:00:34 /u01

linux下的shell命令的编写,以及java如何调用linux的shell命令(java如何获取linux上的网卡的ip信息)

程序员都很懒,你懂的! 最近在开发中,需要用到服务器的ip和mac信息.但是服务器是架设在linux系统上的,对于多网口,在获取ip时就产生了很大的问题.下面是在windows系统上,java获取本地ip的方法.贴代码: package com.herman.test; import java.net.InetAddress; /** * @see 获取计算机ip * @author Herman.Xiong * @date 2014年5月16日 09:35:38 */ public class

Linux下使用crontab命令以及Python脚本实现自动签到

关于这一部分, 我首先介绍下如何实现使用Python脚本实现签到功能其实,linux下有个命令叫做curl,完全可以完成模拟签到的功能,但是为了练习Python,我就用Python来写了.有这个想法完全是因为实验室的学长开发了一款App,上边收个起床签到,还有排名,为了能那个首签... 言归正传 首先,因为是手机上的App, 所以,我们需要抓包看下它具体的URL以及发送的内容是什么,关于这部分内容我就不在赘述了,我实现的功能主要有模拟发布状态和模拟签到两种功能,两个的URL也是不同的.为了不让学

Linux下常用SVN命令

1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain  --username qinxiaohui 简写:svn co 2.往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) svn add *.php(添加当前目录下所有的php文件) 3.将改动的文件提交到版本库 svn commit -m "L