linux部分命令.docx
- 文档编号:10390414
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:16
- 大小:24.34KB
linux部分命令.docx
《linux部分命令.docx》由会员分享,可在线阅读,更多相关《linux部分命令.docx(16页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 部分 命令