linux部分命令.docx

上传人:b****4 文档编号:4227077 上传时间:2023-05-06 格式:DOCX 页数:16 大小:24.34KB
下载 相关 举报
linux部分命令.docx_第1页
第1页 / 共16页
linux部分命令.docx_第2页
第2页 / 共16页
linux部分命令.docx_第3页
第3页 / 共16页
linux部分命令.docx_第4页
第4页 / 共16页
linux部分命令.docx_第5页
第5页 / 共16页
linux部分命令.docx_第6页
第6页 / 共16页
linux部分命令.docx_第7页
第7页 / 共16页
linux部分命令.docx_第8页
第8页 / 共16页
linux部分命令.docx_第9页
第9页 / 共16页
linux部分命令.docx_第10页
第10页 / 共16页
linux部分命令.docx_第11页
第11页 / 共16页
linux部分命令.docx_第12页
第12页 / 共16页
linux部分命令.docx_第13页
第13页 / 共16页
linux部分命令.docx_第14页
第14页 / 共16页
linux部分命令.docx_第15页
第15页 / 共16页
linux部分命令.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

linux部分命令.docx

《linux部分命令.docx》由会员分享,可在线阅读,更多相关《linux部分命令.docx(16页珍藏版)》请在冰点文库上搜索。

linux部分命令.docx

linux部分命令

1.

[root@testroot]#grep[-acinv]'搜寻字符串'filename

参数说明:

-a:

将binary档案以text档案的方式搜寻数据

-c:

计算找到'搜寻字符串'的次数

-i:

忽略大小写的不同,所以大小写视为相同

-n:

顺便输出行号

-v:

反向选择,亦即显示出没有'搜寻字符串'内容的那一行!

eg:

//[]以及[^]以及[]

1.grep-n't[ae]st'regular_express.txt

2.last|greproot

3.grep-n'oo'regular_express.txt

4.grep-n'[^g]oo'regular_express.txt//如果我不想要oo前面有g的话呢?

此时,可以利用在集合字符的反向选择[^]来

5.grep-n'[^a-z]oo'regular_express.txt//前面不要小字

6.grep-n'[0-9]'regular_express.txt//取得有数字的行

///行首与行尾字符^$

1.grep-n'^the'regular_express.txt

2.grep-n'\.$'regular_express.txt

3.grep-n'^$'regular_express.txt//空白行

4.grep-v'^$'/etc/syslog.conf|grep-v'^#'//去取空行,和#开头的行

////任意一个字符.与重复字符*

*代表的是『重复0个或多个前面的RE字符』

『.』则代表『绝对有一个任意字符』的意思

grep-n'ooo*'regular_express.txt//至少两个o以上的字符串

//限定连续RE字符范围{}

grep-n'o\{2\}'regular_express.txt//假设我要找到两个o的字符串

2.格式化打印:

printf

[root@linux~]#printf'打印格式'实际内容

参数:

关于格式方面的几个特殊样式:

      \a   警告声音输出

      \b   退格键(backspace)

      \f   清除屏幕(formfeed)

      \n   输出新的一行

      \r   亦即Enter按键

      \t   水平的[tab]按键

      \v   垂直的[tabl]按键

      \xNNNN为两位数的数字,可以转换数字成为字符。

关于C程序语言内,常见的变数格式

      %ns  那个n是数字,s代表string,亦即多少个字符;

      %ni  那个n是数字,i代表integer,亦即多少整数字数;

      %N.nf那个n与N都是数字,f代表floating(浮点),如果有小数字数,

            假设我共要十个位数,但小数点有两位,即为%10.2f啰!

范例:

范例一:

将刚刚上头的数据变成档案,仅列出姓名与成绩:

(用[tab]分隔

[root@linux~]#printf'%s\t%s\t%s\t%s\t%s\t\n'`catprintf.txt`

Name    Chinese        English        Math   Average

DmTsai  80     60     92     77.33

VBird   75     55     80     70.00

Ken     60     90     70     73.33

#假设我将上面的档案存成printf.txt档案档名,则可利用上面的案例,

#将每个单字中间以[tab]按键隔开。

由上面的输出来看,虽然第二行以后是OK的,

#但是第一行则因为某些单字长度较长,所以就无法对齐了!

而%s表示以字符串(string)

#的方式来展现该内容。

而每个内容则以\t即[tab]来隔开啊!

范例二:

将上述资料关于第二行以后,分别以字符串、整数、小数点来显示:

[root@linux~]#printf'%10s%5i%5i%5i%8.2f\n'`catprintf.txt|\

>grep-vName`

   DmTsai   80   60   92   77.33

    VBird   75   55   80   70.00

      Ken   60   90   70   73.33

#这个时候的输出可就有趣了!

我将几个内容分成不同的数据格式来输出,

#最有趣的应该是%8.2f这个项目了!

我可以针对不同的小数字数来进行格式输出,

#例如变成底下的样子时,您自己试看看,会是输出什么结果喔!

#printf'%10s%5i%5i%5i%8.1f\n'`catprintf.txt|grep-vName`

范例三:

列出数值45代表的字符为何?

[root@linux~]#printf'\x45\n'

E

#这东西也很好玩~他可以将数值转换成为字符,如果您会写script的话,

#可以自行测试一下,由20~80之间的数值代表的字符是啥喔!

3.sed工具简介

[root@linux~]#sed[-nefr][动作]

参数:

-n:

使用安静(silent)模式。

在一般sed的用法中,所有来自STDIN

的数据一般都会被列出到屏幕上。

但如果加上-n参数后,则只有经过

sed特殊处理的那一行(或者动作)才会被列出来。

-e:

直接在指令列模式上进行sed的动作编辑;

-f:

直接将sed的动作写在一个档案内,-ffilename则可以执行filename内的

sed动作;

-r:

sed的动作支持的是延伸型正规表示法的语法。

(预设是基础正规表示法语法)

-i:

直接修改读取的档案内容,而不是由屏幕输出。

动作说明:

[n1[,n2]]function

n1,n2:

不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作

是需要在10到20行之间进行的,则『10,20[动作行为]』

function有底下这些咚咚:

a:

新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)~

c:

取代,c的后面可以接字符串,这些字符串可以取代n1,n2之间的行!

d:

删除,因为是删除啊,所以d后面通常不接任何咚咚;

i:

插入,i的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行);

p:

打印,亦即将某个选择的数据印出。

通常p会与参数sed-n一起运作~

s:

取代,可以直接进行取代的工作哩!

通常这个s的动作可以搭配

正规表示法!

例如1,20s/old/new/g就是啦!

范例:

范例一:

将/etc/passwd的内容列出,并且我需要打印行号,同时,请将第2~5行删除!

[root@linux~]#nl/etc/passwd|sed'2,5d'

1root:

x:

0:

0:

root:

/root:

/bin/bash

6sync:

x:

5:

0:

sync:

/sbin:

/bin/sync

7shutdown:

x:

6:

0:

shutdown:

/sbin:

/sbin/shutdown

.....(后面省略).....

#看到了吧?

因为2-5行给他删除了,所以显示的数据中,就没有2-5行啰~

#另外,注意一下,原本应该是要下达sed-e才对,没有-e也行啦!

#同时也要注意的是,sed后面接的动作,请务必以''两个单引号括住喔!

#而,如果只要删除第2行,可以使用nl/etc/passwd|sed'2d'来达成,

#至于第3到最后一行,则是nl/etc/passwd|sed'3,$d'的啦!

范例二:

承上题,在第二行后(亦即是加在第三行)加上『drinktea?

』字样!

[root@linux~]#nl/etc/passwd|sed'2adrinktea'

1root:

x:

0:

0:

root:

/root:

/bin/bash

2bin:

x:

1:

1:

bin:

/bin:

/sbin/nologin

drinktea

3daemon:

x:

2:

2:

daemon:

/sbin:

/sbin/nologin

#嘿嘿!

在a后面加上的字符串就已将出现在第二行后面啰!

那如果是要在第二行前呢?

#nl/etc/passwd|sed'2idrinktea'就对啦!

范例三:

在第二行后面加入两行字,例如『Drinkteaor.....』『drinkbeer?

[root@linux~]#nl/etc/passwd|sed'2aDrinkteaor......\

>drinkbeer?

'

1root:

x:

0:

0:

root:

/root:

/bin/bash

2bin:

x:

1:

1:

bin:

/bin:

/sbin/nologin

Drinkteaor......

drinkbeer?

3daemon:

x:

2:

2:

daemon:

/sbin:

/sbin/nologin

#这个范例的重点是,我们可以新增不只一行喔!

可以新增好几行~

#但是每一行之间都必须要以反斜线\来进行新行的增加喔!

所以,上面的例子中,

#我们可以发现在第一行的最后面就有\存在啦!

那是一定要的喔!

范例四:

我想将第2-5行的内容取代成为『No2-5number』呢?

[root@linux~]#nl/etc/passwd|sed'2,5cNo2-5number'

1root:

x:

0:

0:

root:

/root:

/bin/bash

No2-5number

6sync:

x:

5:

0:

sync:

/sbin:

/bin/sync

#没有了2-5行,嘿嘿嘿嘿!

我们要的数据就出现啦!

范例五:

仅列出第5-7行

[root@linux~]#nl/etc/passwd|sed-n'5,7p'

5lp:

x:

4:

7:

lp:

/var/spool/lpd:

/sbin/nologin

6sync:

x:

5:

0:

sync:

/sbin:

/bin/sync

7shutdown:

x:

6:

0:

shutdown:

/sbin:

/sbin/shutdown

#为什么要加-n的参数呢?

您可以自行下达sed'5,7p'就知道了!

(5-7行会重复输出)

#有没有加上-n的参数时,输出的数据可是差很多的喔!

范例六:

我们可以使用ifconfig来列出IP,若仅要eth0的IP时?

[root@linux~]#ifconfigeth0

eth0Linkencap:

EthernetHWaddr00:

51:

FD:

52:

9A:

CA

inetaddr:

192.168.1.12Bcast:

192.168.1.255Mask:

255.255.255.0

inet6addr:

fe80:

:

250:

fcff:

fe22:

9acb/64Scope:

Link

UPBROADCASTRUNNINGMULTICASTMTU:

1500Metric:

1

.....(以下省略).....

#其实,我们要的只是那个inetaddr:

..那一行而已,所以啰,利用grep与sed来捉

[root@linux~]#ifconfigeth0|grep'inet'|sed's/^.*addr:

//g'|\

>sed's/Bcast.*$//g'

#您可以将每个管线(|)的过程都分开来执行,就会晓得原因啰!

#去头去尾之后,就会得到我们所需要的IP亦即是192.168.1.12啰~

范例七:

将/etc/man.config档案的内容中,有MAN的设定就取出来,但不要说明内容。

[root@linux~]#cat/etc/man.config|grep'MAN'|sed's/#.*$//g'|\

>sed'/^$/d'

#每一行当中,若有#表示该行为批注,但是要注意的是,有时候,

#批注并不是写在第一个字符,亦即是写在某个指令后方,如底下的模样:

#『shutdown-hnow#这个是关机的指令』,批注#就在指令的后方了。

#因此,我们才会使用到将#.*$这个正规表示法!

范例八:

利用sed直接在~/.bashrc最后一行加入『#Thisisatest』

[root@linux~]#sed-i'$a#Thisisatest'~/.bashrc

#上头的-i参数可以让你的sed直接去修改后面接的档案内容喔!

而不是由屏幕输出。

#至于那个$a则代表最后一行才新增的意思。

4.declare宣告变量内容

[test@testtest]#declare[-afirx]

参数说明:

-a:

定义为数组array

-f:

定义为函数function

-i:

定义为整数integer

-r:

定义为『只读』

-x:

定义为透过环境输出变量

范例:

[test@testtest]#declare-ia=3

[test@testtest]#declare-ib=5

[test@testtest]#declare-ic=$a*$b

[test@testtest]#echo$c

15<==变成数字啰!

5.read的功能就是『依据您在键盘输入的结果input到变量内容中』

6.条件式判断:

if...then...fi,case.....esac

if[条件判断一]&&(||)[条件判断二];then      <==if是起始的意思,后面可以接若干个判断式,使用&&或||

   执行内容程序

elif[条件判断三]&&(||)[条件判断四];then    <==第二段的判断,如果第一段没有符合就来此搜寻条件

   执行第二段内容程序

else                                           <==当前两段都不符合时,就以这段内容来执行!

   执行第三段内容程序

fi                                             <==结束ifthen的条件判断!

eg:

echo"Pressytocontinue"

readyn

if["$yn"="y"];then

       echo"scriptisrunning..."

else

       echo"STOP!

"

fi

---------------------------逻辑判断式--------------------

if[!

-elogical];then//断定到底有没有档案(用-e)

       touchlogical

       echo"Justmakeafilelogical"

       exit1

elif[-elogical]&&[-flogical];then//名称是属于目录或者是档案(-d-f),

       rmlogical

       mkdirlogical

       echo"removefile==>logical"

       echo"andmakedirectorylogical"

       exit1

elif[-elogical]&&[-dlogical];then

       rm-rflogical

       echo"removedirectory==>logical"

       exit1

else

       echo"Doesherehaveanything?

"

fi

-----使用case...esac的方式

case种类方式(string)in         <==开始阶段,那个种类方式可分成两种类型,通常使用$1这一种直接下达类型!

   种类方式一)

      程序执行段

      ;;                    <==种类方式一的结束符号!

   种类方式二)

      程序执行段

      ;;

   *)

      echo"Usage:

{种类方式一|种类方式二}"    <==列出可以利用的参数值!

      exit1

esac                        <==这个case的设定结束处!

eg:

case$1in                                  <==使用直接下达指令型态!

one)

       echo"yourchoiceisone"

       ;;

two)

       echo"yourchoiceistwo"

       ;;

three)

       echo"yourchoiceisthree"

       ;;

*)

       echo"Usage{one|two|three}"      <==列出可以使用的参数(如果使用者下达错误的参数时)

       exit1

esac

7.循环:

for....do....done,while...do...done,until...do...done,

for((条件一;条件二;条件三))declare-is#<==变量宣告

for((i=1;i<=100;i=i+1))

do

       s=s+i

done

echo"Thecountis==>$s"

____________________-

LIST="TomyJonyMaryGeoge"

foriin$LIST

do

       echo$i

done

----将你的Linux主机上的账号(account)印出来呢

account=`cut-d":

"-f1/etc/passwd|sort`

echo"Thefollowingisyourlinuxserver'saccount"

foriin$account

do

       echo$i

done

 

while[condition1]&&{||}[condition2]...//当条件相同的时候,就继续做!

declare-ii

declare-is

while["$i"!

="101"]

do

       s=s+i

       i=i+1

done

echo"Thecountis==>$s"

until[condition1]&&{||}[condition2]...//until:

直到条件相同的时候才离开程序

declare-ii

declare-is

until["$i"="101"]

do

       s=s+i

       i=i+1

done

echo"Thecountis==>$s"

-----------

echo"PressY/ytostop"

until["$yn"="Y"]||["$yn"="y"]

do

       readyn

done

echo"Stophere"

先查看一下/root/test/logical这个名称是否存在;

1.若不存在,则建立一个档案,使用touch来建立,建立完成后离开;

2.如果存在的话,判断该名称是否为档案,若为档案则将之删除后建立一个档案,档名为logical,之后离开;

3.如果存在的话,而且该名称为目录,则移除此目录!

if[!

-elogical];then

       touchlogical

       echo"Justmakeafilelogical"

       exit1

elif[-elogical]&&[-flogical];then

       rmlogical

       mkdirlogical

       echo"removefile==>logical"

       echo"andmakedirectorylogical"

       exit1

elif[-elogical]&&[-dlogical];then

       rm-rflogical

       echo"removedirectory==>logical"

       exit1

else

       echo"Doesherehaveanything?

"

fi

8.script如何debug

sh[-nvx]scripts

-n:

不要执行scripts,查询scripts内的语法,若有错误则予以列出!

-v:

在执行scripts之前,先将scripts的内容显示在屏幕上;

-x:

将有使用到的scripts内容显示在屏幕上,与-v稍微不同!

9.groupadd

groupadd[-gGID]groupname

参数说明:

-gGID:

自行设定GID的大小

范例:

[root@test/root]#groupadd-g55te

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2