linux命令加法 linux减法命令

linux shell 自定义加法函数 急求

$?是返回最近一条命令的返回值,echo $total,$?的意思是返回echo $total的返回值,这里肯定是成功返回,自然是0了,如果需要fSum返回值,那么需要在fSum命令后直接$?即可.

创新互联是一家集网站建设,上党企业网站建设,上党品牌网站建设,网站定制,上党网站建设报价,网络营销,网络优化,上党网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

subShellInfo=$(fSum 3 2)

total=$?

echo $total,$?

那么就显示5 0

其中subShellInfo是子进程中所有输出信息,第一个$?是子进程返回值

Linux常用命令

常用的命令有好多啊,你刚开始学,不用特意的去记,用到什么学什么就好了。 当然非要列举,下面列举的100条,是来自百度经验上的。 希望对你有帮助。

 Linux常用命令大全100条:

1,echo “aa” 》 test.txt 和 echo “bb” 》》 test.txt

//》将原文件清空,并且内容写入到文件中,》》将内容放到文件的尾部

2,chmod go+w -R /home/zhangy //给组用户和其他用户添加写的权限

3,tar -tzvf test.tar.gz //列出归档内容

4,du -ah //查看文件列表大小

5,du -sh //查看所有文件的大小总和

6,echo ‘1+2’|bc -l //数学运算

7,uname -a //查看linux内核等的一些信息

8,badblocks -s /dev/sda //坏道扫描时显示进度

9,time command //查看命令的运行时间

10,ls -lrt //按时间的倒序排序

11,rsync -P //同步时显示进度

12.history -c //清楚历史命令

13,cd - //返回上次目录

14,tree //显示目录树

15,umount -n /mnt/hda2 //强制卸载

16,echo ~/ //显示用户的home目录

17,echo $[5*5] //算术运算

18,echo $((5*5)) //算术运算

19,eval ls;ps aux|grep httpd //这二个命令都能执行

20,free -m //有MB为单位显示内存

21,uptime

//显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载

22,加法运算

[root@krlcgcms01 mytest]# let a=34+3;

[root@krlcgcms01 mytest]# echo $a;

23,export //查看所有环境变量

24,echo $PATH //查看单个变量

25,cmp file1 file2 //文件内容比对

26,clear //清屏

27,echo 23423 |awk --re-interval ‘/[0-9]{3,}/’ //如果不加re-interval的话,不显示

28,cal //得到一个整齐的日历格式

29,wc -l //统计行数,wc -w 统计单词

30,echo “AaDCbd23” |tr “[A-Z]” “[a-z]” 大写变小写,echo “AaDCbdc23” |tr -c b-d =

将b-d之外的字符串替换成=

31,echo “ADSF” | iconv -f UTF8 -t GBK //把字符由utf8转成gbk

-f是from和简写,-t好像terminal的简写

32,cat -n file //内容的前面会显示行号

33,chattr +i file //只读,root用户也没法对其进行修改

34,lsattr file //查看文件属性

35,cat /etc/passwd |awk -F: ‘{print $1}’ //查看系统中所有用户

36,cat /etc/group //查看系统中所有的组

37,groups //查前当前用户所在的,所有组

38,usermod -g 组名 用户 //这种方式是覆盖的方式,用的时候要小心,如果用户A性于mysql usermod -g php

mysql这样的话只属于php了

39,usermod -G 组名 用户 //这种方式是增加的方式,如果用户A性于mysql usermod -g php

mysql这样的话,mysql就属于2个组了

40,bc //进入数学计算中去

41,umask 003 u权限是7,g权限是7,其他用户是4,也就是774,777-003=774

42,mkfs -t vfat /dev/hda6 //将移动硬盘里面的一个分区格式化成vfat格式

43,mount /dev/cdrom /media/cdrom //挂载cdrom

44,getent group 532 //通过组ID,来查找组信息

45,last //登录成功用户记录

46,lastb //登录不成功用户记录

47,dump -S /dev/sda2 //查看一下要备份/dev/sda2所要的容量

48,dump -0j -f /dev/hda2/sda2_bak.dump.bz2 /dev/sda2 //将sda2进行备份并压缩

49,restore -t -f /dev/hda2/sda2_bak.dump //查看备份信息

50,restore -r -f /dev/hda2/sda2_bak.dump //还原备份

51,fc-list //查看系统中安装的字体

52,find 。/ -type f -exec grep -q “root” {} ; -exec echo {} ;

//查找目录下文件所包涵的字符串

53,vmstat 5 //每5显示一下次系统信息,cpu,memory,i/o等

54,top 后 在shift + P 所占进程的排序显示

55,top 后 在shift + M 所占内存的排序显示

56,iptraf -g //查看各个接口的流量

57,ostat -d -x /dev/sda2 2 //用iostat查看磁盘/dev/sda2的磁盘i/o情况,每两秒刷新一次

58, paste -sd ‘|||n’ test //文件的每4行转换成1行,并用|隔开

59,lsof -i :22 //知道22端口现在运行什么程序

60,lsof -c abc //显示abc进程现在打开的文件

61,lsof -p 12 //看进程号为12的进程打开了哪些文件

63,route //查看路由信息

64,ifup //开启网卡

65,ifdown //关闭网卡

66,route del -net 172.168.0.0 netmask 255.255.0.0 dev eth0 //删除

172.168这个网段

67,route add -net 172.168.10.0 netmask 255.255.255.0 dev eth0 //增加一个路由

68,netstat -tunl //列出监听的网络服务端口

69,netstat -tun //列出已连接的网络服务端口

70,nmap -sP 172.30.4.0/24 //在这个网段内有多少用户在我的主机上操作,一个不错的安全检查工具

71,vgdisplay //查看系统中的可用空间

72,lvextend -L+20G /dev/tank/part1 //向part1这个分区增加20G的空间

73,lvresize -L-10G /dev/tank/part2 //向part2这个分区减少10G的空间

74,pvdisplay //查看磁盘信息

75,mplayer -loop 10 /mnt/song/music/花儿开了.mp3 //循环播放10遍

76,pacman -S firefox -nd //nd去掉依赖

77,wget -c //断点下载

78,chroot /mnt/ubuntu //改变根目录到/mnt/ubuntu

79,ctrl+a //命令行下,光标称动到开头

80,ctrl+e //命令行下,光标移动结尾

81,cut -d: -f 1-4 test //用:分割文件,取分割后的1-4列

82,file /home/zhangy/test.php //用于查看文件的一些基本信息

83,touch test.txt //创建一个空文件 text.txt

84,htpasswd -cbd /usr/local/nginx/conf/authfile //创建访问控制文件

85,df //查看磁盘空间,和当前的磁盘数

86,fdisk -l //查看所有磁盘数

87,alsamixer //进入后,m键可以实现静音

88,killall httpd //把所有httpd进程杀掉

89,killall -9 mysqld_safe //有些进程超级用户也停止不了,-9是强制删除

90,mirror /mysql //下载mysql目录

91,mirror -R /mysql //上传mysql目录

92,rmmod pcspkr //关掉tab提示音

93,modprobe pcspkr //开启tab提示音

94,gpasswd -a zhangy wheel //将zhangy这个用户添加到wheel这个组

95,dd if=/dev/zero of=/virtual/ubuntu.virt.img bs=1M count=4096

//创建一个4G的IMG镜像

96,lspic //显示pci设备

97,lsusb //显示usb设备

98,history | less //less根more有点像,感觉less用着更舒服点

99,ln -s //如果忘了-s就变成硬链接了

100,tar zxvf test.tar.gz -C /home/zhangy //将内容解压到指定目录

Linux 里面命令行打开计算器 怎么输入

linux命令行计算器

详细文档请 man bc

在windows下,大家都知道直接运行calc,(c:\windows\system32\calc.exe),可以打开计算器。

注:

calculate vt.vi.

计算;calculator n. 计算器。calc就是这个计算的简写。

Ca在化学中是代表钙元素,calcium 

钙(20号元素,符号Ca)。两者有什么联系呢?

calculate 来自calculus,原义是做算术运算的小石子,是calx(石灰石)的小称。

那么在linux系统下,有无与windows下calc.exe类似的计算器呢?

下面总结linux下的三个命令,来介绍一下linux下的计算方法:

1)bc

bc在默认的情况下是个交互式的指 令。在bc工作环境下,可以使用以下计算符号:

+ 加法

- 减法

* 乘法

/ 除法

^ 指数

% 余数

如:

#

bc

bc 1.06

Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation,

Inc.

This is free software with ABSOLUTELY NO WARRANTY.

For details type `warranty'.

3+6           

=加法

9

4+2*3          =加法、乘法

10

(4+2)*3        =加法、乘法(优先)

18

4*6/8         

=乘法、除法

3

10^3         

=指数

1000

18%5           =余数

3+4;5*2;5^2;18/4     

=一行输入多个计算,用;相隔。

7

10

25

4

quit            =退出

# bc

bc 1.06

Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation,

Inc.

This is free software with ABSOLUTELY NO WARRANTY.

For details type `warranty'.

scale=3        

=设小数位

1/3

.333

quit

以上是交互的计算,那到也可以 不进行交互而直接计算出结果。

A.用echo和|法,如:

# echo "(6+3)*2" |bc

18

# echo 15/4 |bc

3

# echo "scale=2;15/4"

|bc

3.75

# echo "3+4;5*2;5^2;18/4"

|bc

7

10

25

4

另外,

bc除了scale来设定小数位之外,还有ibase和obase来其它进制的运算。

如:

//将16进制的A7输出为10进制, 注意,英文只能大写

# echo "ibase=16;A7"

|bc

167

//将2进制的11111111转成10进制

# echo "ibase=2;11111111"

|bc

255

//输入为16进制,输出为2进制

# echo "ibase=16;obase=2;B5-A4"

|bc

10001

对于bc还有补充,在bc --help中还可以发现:bc后可以接文件名。如:

# more calc.txt

3+2

4+5

8*2

10/4

# bc calc.txt

5

9

16

2

2)expr

expr命令可不光能计算加减乘除哦,还有很多表达式,都可以计算出结果,不过有一点需要注意,在计算加减乘除时,不要忘了使用空格和转义。下

面直接用实例来介绍一下expr的运算,如:

# expr 6 +

3      

(有空格)

9

# expr 2 \*

3     

(有转义符号)

6

# expr 14 % 9

5

# a=3

# expr

$a+5         

(无空格)

3+5

# expr $a +

5        

(变量,有空格)

8

#

a=`expr 4 + 2`

echo $a

6

# expr $a + 3

9

另外,expr对于字串的操作(计算)也是很方便的,如:

//字串长度

# expr length

"yangzhigang.cublog.cn"

21

//从位置处抓取字串

# expr substr "yangzhigang.cublog.cn"

1 11

yangzhigang

//字串开始处

# expr index

"yangzhigang.cublog.cn" cu

13

3)dc

用dc来进行计算的人可以不多,因为dc与bc相比要复杂,但是在进行简单的计划时,是差不多的,不算难。dc为压栈操作,默认也是交互的,但

也可以用echo和|来配合打算。

如:

# dc

3

2+

p

5

4*

p

20

quit

# echo 3 2+ 4* p |dc

20

4)echo

echo用来进行回显,是周知的事。上面也配合bc来进行计算。其实echo也可以单独进行简单的计算,如:

# echo $((3+5))

8

# echo $(((3+5)*2))

16

echo还可以进行变量的计算,如:

# a=10

# b=5

# echo $(($a+$b))

15

# echo $a+$b

10+5

# echo $a+$b |bc

15

//计算前天的日期

#  echo `date

+%Y%m%d`

20090813

#  echo `date +%Y%m%d`-2

20090813-2

#  echo `date +%Y%m%d`-2

|bc

20090811

5)AWK

awk在处理文件的时,可以进行运算,那当然也可以单单用来计算了,如:

# awk 'BEGIN{a=3+2;print

a}'

5

# awk 'BEGIN{a=(3+2)*2;print

a}'

10

Awk 支持常见的运算符, 如 + (加),- (减), * (乘), / (除), ^ 或 ** (乘方), % (取模)

等等。 此外, awk 也提供了一些常用的数学函数, 比如 sin(x), cos(x), exp(x), log(x),

sqrt(x), rand()。 使用这些运算符和函数可以直接进行一些简单的运算:

# echo | awk '{print

8+6}'

14

# echo | awk '{print

8/6}'

1.33333

# echo | awk '{print

9%5}'

4

请放心使用

有问题的话请追问

满意请及时采纳,谢谢

linux多线程中加法操作是原子操作吗

其声明如下:

type __sync_fetch_and_add (type *ptr, type value, ...)

type __sync_fetch_and_sub (type *ptr, type value, ...)

type __sync_fetch_and_or (type *ptr, type value, ...)

type __sync_fetch_and_and (type *ptr, type value, ...)

type __sync_fetch_and_xor (type *ptr, type value, ...)

type __sync_fetch_and_nand (type *ptr, type value, ...)

type __sync_add_and_fetch (type *ptr, type value, ...)

type __sync_sub_and_fetch (type *ptr, type value, ...)

type __sync_or_and_fetch (type *ptr, type value, ...)

type __sync_and_and_fetch (type *ptr, type value, ...)

type __sync_xor_and_fetch (type *ptr, type value, ...)

type __sync_nand_and_fetch (type *ptr, type value, ...)

这两组函数的区别在于第一组返回更新前的值,第二组返回更新后的值。

type可以是1,2,4或8字节长度的int类型,即:

int8_t / uint8_t

int16_t / uint16_t

int32_t / uint32_t

int64_t / uint64_t

后面的可扩展参数(...)用来指出哪些变量需要memory barrier,因为目前gcc实现的是full barrier(类似于linux kernel 中的mb(),表示这个操作之前的所有内存操作不会被重排序到这个操作之后),所以可以略掉这个参数。

bool __sync_bool_compare_and_swap (type *ptr, type oldval type newval, ...)

type __sync_val_compare_and_swap (type *ptr, type oldval type newval, ...)

这两个函数提供原子的比较和交换,如果*ptr == oldval,就将newval写入*ptr,

第一个函数在相等并写入的情况下返回true.

第二个函数在返回操作之前的值。

__sync_synchronize (...)

发出一个full barrier.

关于memory

barrier,cpu会对我们的指令进行排序,一般说来会提高程序的效率,但有时候可能造成我们不希望得到的结果,举一个例子,比如我们有一个硬件设备,它有4个寄存器,当你发出一个操作指令的时候,一个寄存器存的是你的操作指令(比如READ),两个寄存器存的是参数(比如是地址和size),最后一个寄存器是控制寄存器,在所有的参数都设置好之后向其发出指令,设备开始读取参数,执行命令,程序可能如下:

write1(dev.register_size,size);

write1(dev.register_addr,addr);

write1(dev.register_cmd,READ);

write1(dev.register_control,GO);

如果最后一条write1被换到了前几条语句之前,那么肯定不是我们所期望的,这时候我们可以在最后一条语句之前加入一个memory barrier,强制cpu执行完前面的写入以后再执行最后一条:

write1(dev.register_size,size);

write1(dev.register_addr,addr);

write1(dev.register_cmd,READ);

__sync_synchronize();

write1(dev.register_control,GO);

memory barrier有几种类型:

acquire barrier : 不允许将barrier之后的内存读取指令移到barrier之前(linux kernel中的wmb())。

release barrier : 不允许将barrier之前的内存读取指令移到barrier之后 (linux kernel中的rmb())。

full barrier : 以上两种barrier的合集(linux kernel中的mb())。

还有两个函数:

type __sync_lock_test_and_set (type *ptr, type value, ...)

将*ptr设为value并返回*ptr操作之前的值。

void __sync_lock_release (type *ptr, ...)

将*ptr置0

示例程序:

#include stdio.h

#include pthread.h

#include stdlib.h

static int count = 0;

void *test_func(void *arg)

{

int i=0;

for(i=0;i20000;++i){

__sync_fetch_and_add(count,1);

}

return NULL;

}

int main(int argc, const char *argv[])

{

pthread_t id[20];

int i = 0;

for(i=0;i20;++i){

pthread_create(id[i],NULL,test_func,NULL);

}

for(i=0;i20;++i){

pthread_join(id[i],NULL);

}

printf("%d\n",count);

return 0;

}

linux shell 两个文件内容做加减法

awk '{getline s "第一个文件"

split(s,array)

for (i=1;i=NF;i++) $i=$i-array[5+i]

print }' 第二个文件

结果

9761 98.895 10 1 98.896

linux date命令,加减法

我在自己机器上试了,发给你:

date +%Y%m%d%H%M%S -d "`date +%Y%m%d` +695 second"

加上695秒之后结果是20121218001135 零点11分35秒。

这里695你自己换自己需要的,也可以做成$参数。

注意:"`date 这里双引号右边是反引号,也就是Tab上面那个键,我不知道你的Linux水平,所以提示一下。


分享题目:linux命令加法 linux减法命令
URL地址:http://hbruida.cn/article/dosohsp.html