linux常用命令.docx

上传人:b****6 文档编号:6094727 上传时间:2023-01-03 格式:DOCX 页数:14 大小:204.50KB
下载 相关 举报
linux常用命令.docx_第1页
第1页 / 共14页
linux常用命令.docx_第2页
第2页 / 共14页
linux常用命令.docx_第3页
第3页 / 共14页
linux常用命令.docx_第4页
第4页 / 共14页
linux常用命令.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

linux常用命令.docx

《linux常用命令.docx》由会员分享,可在线阅读,更多相关《linux常用命令.docx(14页珍藏版)》请在冰豆网上搜索。

linux常用命令.docx

linux常用命令

计算器bc

一般情况下,我们使用不带任何参数的bc命令。

bc

如果需要bc不输出提示信息,可以加上-q参数:

bc-q

如果要使用强大的数学库,比如计算三角函数,需要加上-l参数:

bc-l

因为bc本身是一个命令解释器,要退出它只要直接输入quit回车或者按Ctrl+D终止。

使用示例

示例一命令行方式使用bc

[root@localhostcentos39]#bc

bc1.06

Copyright1991-1994,1997,1998,2000FreeSoftwareFoundation,Inc.

ThisisfreesoftwarewithABSOLUTELYNOWARRANTY.

Fordetailstype`warranty'.

3+4

7

3-4

-1

3*4

12

3/4

0

scale=2;3/4     #保留小数点精度只对除法、取余、乘幂有效

.75

3/4

.75

3%4

0

scale=0

3%4

3

3^4

81

Ctrl+D

[root@localhostcentos39]#

示例二通过管道使用bc来计算

[root@localhostcentos39]#echo3*4|bc

(standard_in)1:

parseerror

[root@localhostcentos39]#echo"3*4"|bc

12

[root@localhostcentos39]#echo"scale=7;355/113"|bc

3.1415929

[root@localhostcentos39]#

示例三进制转换

[root@rhel55~]#echo"ibase=16;FFFF"|bc

65535

[root@rhel55~]#echo"obase=16;1000"|bc

3E8

[root@rhel55~]# 

我们用到bc的ibase和obase方法。

 

  ibase是输入数字的进制,而obase就是输出数字的进制了。

很好记,i是input,o是output。

 

  如果用一条命令来转数字,可以用echo命令和管道结合bc。

如下:

 

  10进制转2进制:

 

  $echo"obase=2;ibase=10;100"|bc1100100

 

  10进制转16进制:

 

  $echo"obase=16;ibase=10;100"|bc64

 

  16进制转10进制:

 

  $echo"ibase=16;obase=2;F1"|bc11110001

 

  注意,16进制数字的F要大写,如果小写结果是不对的。

像最上面没有指定的时候,默认是10进制。

示例四将多个表达式写在一个文件中一起计算

[root@rhel55~]#cattest.bc

123*321

123/321

scale=4;123/321

 

[root@rhel55~]#bctest.bc

bc1.06

Copyright1991-1994,1997,1998,2000FreeSoftwareFoundation,Inc.

ThisisfreesoftwarewithABSOLUTELYNOWARRANTY.

Fordetailstype`warranty'.

39483

0

.3831

Ctrl+D

[root@rhel55~]#

[root@rhel55~]#cattest.bc|bc

39483

0

.3831

[root@rhel55~]#

示例五一个计算三角形面积的Bash脚本

先复习一下初中的知识:

b表示三角形的底,h表示三角形的高,那么三角形的面积计算公式是b*h/2。

 

文件:

area_of_triangle.sh

Bash代码 

#!

/bin/bash 

  

#Shellprogram/scripttoreadthebaseandheightofatraingleandfinditsarea 

#------------------------------------------------------------------------- 

#Copyright(c)2005nixCraftproject

//cyberciti.biz/fb/> 

#ThisscriptislicensedunderGNUGPLversion2.0orabove 

#------------------------------------------------------------------------- 

#ThisscriptispartofnixCraftshellscriptcollection(NSSC) 

#Visithttp:

//bash.cyberciti.biz/formoreinformation. 

#------------------------------------------------------------------------- 

#Formulainfo:

http:

//www.mste.uiuc.edu/dildine/heron/triarea.html 

#Area=(1/2)xBasexHeight 

 

echo-n"Enterbaseofatriangle:

readb 

 

echo-n"Enterheightofatriangle:

readh 

 

#calculateitanddisplayback 

area=$(echo"scale=2;(1/2)*$b*$h"|bc) 

echo"Areaofatriangleis$area" 

  

 

[root@smsgwacademic]#./area_of_triangle.sh

Enterbaseofatriangle:

123

Enterheightofatriangle:

321

Areaofatriangleis19741.50

[root@smsgwacademic]#

 示例六使用bc命令的脚本片段

Bash代码 

#usage:

calc_sum 

#计算两个数的和 

calc_sum() 

bc-q<

$1+$2 

EOF 

 

#usage:

calc_free 

#计算费用,单价0.05元 

calc_fee() 

bc-q<

0.05*$1 

EOF 

   

 

将以上代码粘贴到终端。

[root@web~]##usage:

calc_sum

[root@web~]##计算两个数的和

[root@web~]#calc_sum()

>{

>bc-q<

>$1+$2

>EOF

>}

[root@web~]#

[root@web~]##usage:

calc_free

[root@web~]##计算费用,单价0.05元

[root@web~]#calc_fee()

>{

>bc-q<

>0.05*$1

>EOF

>}

[root@web~]#

[root@web~]#

[root@web~]#calc_sum123321

444

[root@web~]#calc_fee1000

50.00

[root@web~]#

示例七使用数学库

有文章称可以计算100位的圆周率pi值。

[root@web~]#echo"scale=100;a

(1)*4"|bc

Runtimeerror(func=(main),adr=11):

Functionanotdefined.

[root@web~]#echo"scale=100;a

(1)*4"|bc-l

3.141592653589793238462643383279502884197169399375105820974944592307\

8164062862089986280348253421170676

[root@web~]#

 

杀进程

首先,用ps查看进程,方法如下:

$ps-ef

……

smx      1822    1 011:

38?

       00:

00:

49gnome-terminal

smx      1823 1822 011:

38?

       00:

00:

00gnome-pty-helper

smx      1824 1822 011:

38pts/0   00:

00:

02bash

smx      1827    1 411:

38?

       00:

26:

28/usr/lib/firefox-3.6.18/firefox-bin

smx      1857 1822 011:

38pts/1   00:

00:

00bash

smx      1880 1619 011:

38?

       00:

00:

00update-notifier

……

smx     11946 1824 021:

41pts/0   00:

00:

00ps-ef

或者:

$ps-aux

……

smx      1822 0.1 0.8 5848418152?

       Sl  11:

38  0:

49gnome-terminal

smx      1823 0.0 0.0  1988  712?

       S   11:

38  0:

00gnome-pty-helper

smx      1824 0.0 0.1  6820 3776pts/0   Ss  11:

38  0:

02bash

smx      1827 4.3 5.8398196119568?

      Sl  11:

38 26:

13/usr/lib/firefox-3.6.18/firefox-bin

smx      1857 0.0 0.1  6688 3644pts/1   Ss  11:

38  0:

00bash

smx      1880 0.0 0.6 4153612620?

       S   11:

38  0:

00update-notifier

……

smx     11953 0.0 0.0  2716 1064pts/0   R+  21:

42  0:

00ps-aux

此时如果我想杀了火狐的进程就在终端输入:

$kill-s91827

其中-s9制定了传递给进程的信号是9,即强制、尽快终止进程。

各个终止信号及其作用见附录。

1827则是上面ps查到的火狐的PID。

简单吧,但有个问题,进程少了则无所谓,进程多了,就会觉得痛苦了,无论是ps-ef还是ps-aux,每次都要在一大串进程信息里面查找到要杀的进程,看的眼都花了。

进阶篇:

改进1:

把ps的查询结果通过管道给grep查找包含特定字符串的进程。

管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。

$ps-ef|grepfirefox

smx      1827    1 411:

38?

       00:

27:

33/usr/lib/firefox-3.6.18/firefox-bin

smx     12029 1824 021:

54pts/0   00:

00:

00grep--color=autofirefox

这次就清爽了。

然后就是

$kill-s91827

改进2——使用pgrep:

一看到pgrep首先会想到什么?

没错,grep!

pgrep的p表明了这个命令是专门用于进程查询的grep。

$pgrepfirefox

1827

看到了什么?

没错火狐的PID,接下来又要打字了:

$kill-s91827

改进3——使用pidof:

看到pidof想到啥?

没错pidof xx,字面翻译过来就是xx的PID。

$pidoffirefox-bin

1827

和pgrep相比稍显不足的是,pidof必须给出进程的全名。

然后就是老生常谈:

$kill-s91827

无论使用ps然后慢慢查找进程PID还是用grep查找包含相应字符串的进程,亦或者用pgrep直接查找包含相应字符串的进程PID,然后手动输入给kill杀掉,都稍显麻烦。

有没有更方便的方法?

有!

改进4:

$ps-ef|grepfirefox|grep-vgrep|cut-c9-15|xargskill-s9

说明:

“grepfirefox”的输出结果是,所有含有关键字“firefox”的进程。

“grep-vgrep”是在列出的进程中去除含有关键字“grep”的进程。

“cut-c9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。

“xargskill-s9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill-s9”命令的参数,并执行该命令。

“kill-s9”会强行杀掉指定进程。

难道你不想抱怨点什么?

没错太长了

改进5:

知道pgrep和pidof两个命令,干嘛还要打那么长一串!

$pgrepfirefox|xargskill-s9

改进6:

$ps-ef|grepfirefox|awk'{print$2}'|xargskill-9

kill:

Nosuchprocess

有一个比较郁闷的地方,进程已经正确找到并且终止了,但是执行完却提示找不到进程。

其中awk'{print$2}'的作用就是打印(print)出第二列的内容。

根据常规篇,可以知道ps输出的第二列正好是PID。

就把进程相应的PID通过xargs传递给kill作参数,杀掉对应的进程。

改进7:

难道每次都要调用xargs把PID传递给kill?

答案是否定的:

$kill-s9`ps-aux|grepfirefox|awk'{print$2}'`

改进8:

没错,命令依然有点长,换成pgrep。

$kill-s9`pgrepfirefox`

改进9——pkill:

看到pkill想到了什么?

没错pgrep和kill!

pkill=pgrep+kill。

$pkill-9firefox

说明:

"-9"即发送的信号是9,pkill与kill在这点的差别是:

pkill无须“s”,终止信号等级直接跟在“-“后面。

之前我一直以为是"-s9",结果每次运行都无法终止进程。

改进10——killall:

killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。

pkill或者pgrep只要给出进程名的一部分就可以终止进程。

$killall-9firefox

 

Sort排序

linuxsort命令的用法

如果有一个文件的内容是这样:

  [rocrocket@rocrocketprogramming]$catfacebook.txt

  banana:

30:

5.5

  apple:

10:

2.5

  pear:

90:

2.3

  orange:

20:

3.4

  这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。

  那么我想以水果数量来排序,也就是以第二列来排序,如何利用sort实现?

  幸好,sort提供了-t选项,后面可以设定间隔符。

  指定了间隔符之后,就可以用-k来指定列数了。

  [rocrocket@rocrocketprogramming]$sort-n-k2-t:

facebook.txt

  apple:

10:

2.5

  orange:

20:

3.4

  banana:

30:

5.5

  pear:

90:

2.3

  我们使用冒号作为间隔符,并针对第二列来进行数值升序排序,结果很令人满意。

 

sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始!

  1sort的工作原理

  sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

  [rocrocket@rocrocketprogramming]$catseq.txt

  banana

  apple

  pear

orange

[rocrocket@rocrocketprogramming]$sortseq.txt

  apple

  banana

  orange

  pear

  2sort的-u选项

  它的作用很简单,就是在输出行中去除重复行。

  [rocrocket@rocrocketprogramming]$catseq.txt

  banana

  apple

  pear

  orange

  pear

  [rocrocket@rocrocketprogramming]$sortseq.txt

  apple

  banana

  orange

  pear

  pear

  [rocrocket@rocrocketprogramming]$sort-useq.txt

  apple

  banana

  orange

  pear

  pear由于重复被-u选项无情的删除了。

  3sort的-r选项

  sort默认的排序方式是升序,如果想改成降序,就加个-r就搞定了。

  [rocrocket@rocrocketprogramming]$catnumber.txt

  1

  3

  5

  2

  4

  [rocrocket@rocrocketprogramming]$sortnumber.txt

  1

  2

  3

  4

  5

  [rocrocket@rocrocketprogramming]$sort-rnumber.txt

 5

  4

  3

  2

  1

  4sort的-o选项

  由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sortfilename>newfile。

  但是,如果你想把排序结果输出到原文件中,用重定向可就不行了。

  [rocrocket@rocrocketprogramming]$sort-rnumber.txt>number.txt

  [rocrocket@rocrocketprogramming]$catnumber.txt

  [rocrocket@rocrocketprogramming]$

  看,竟然将number清空了。

  就在这个时候,-o选项出现了,它成功的解决了这个问题,让你放心的将结果写入原文件。

这或许也是-o比重定向的唯一优势所在。

  [rocrocket@rocrocketprogramming]$catnumber.txt

  1

  3

  5

  2

  4

  [rocrocket@rocrocketprogramming]$sort-rnumber.txt-onumber.txt

  [rocrocket@rocrocketprogramming]$catnumber.txt

  5

  4

  3

  2

  1

  5sort的-n选项

  你有没有遇到过10比2小的情况。

我反正遇到过。

出现这种情况是由于排序程序将这些数字按字符来排序了,排序程序会先比较1和2,显然1小,所以就将10放在2前面喽。

这也是sort的一贯作风。

  我们如果想改变这种现状,就要使用-n选项,来告诉sort,“要以数值来排序”!

  [rocrocket@rocrocketprogramming]$catnumber.txt

  1

  10

  19

  11

  2

  5

  [rocrocket@rocrocketprogramming]$sortnumber.txt

  1

  10

  11

  19

  2

  5

  [rocrocket@rocrocketprogramming]$sort-nnumber.txt

  1

  2

  5

  10

  11

  19

  6sort的-t选项和-k选项

  

  7其他的sort常用选项

  -f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写

  -c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1

  -C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1

-M会以月份来排序,比如JAN小于FEB等等

-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。

批量改文件扩展名

查看文件夹大小

du-ksh文件名

清理死节点

1、suomadmin

2、Cd/etc/

3、SudoDaemonKeeperkill

4、SudoDaemonKeeper

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1