Linux命令学习记录Word下载.docx
《Linux命令学习记录Word下载.docx》由会员分享,可在线阅读,更多相关《Linux命令学习记录Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
#创建f1的一个硬连接文件f2
[oracle@Linux]$ln-sf1f3
#创建f1的一个符号连接文件f3
当删除原始文件f1后,硬连接f2不受影响,但是符号连接f3文件无效
grep
作用
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep全称是GlobalRegularExpressionPrint,表示全局正则表达式版本,它的使用权限是所有用户。
格式
grep[options]
主要参数
[options]主要参数:
-c:
只输出匹配行的计数。
-I:
不区分大小写(只适用于单字符)。
-h:
查询多文件时不显示文件名。
-l:
查询多文件时只输出包含匹配字符的文件名。
-n:
显示匹配行及行号。
-s:
不显示不存在或无匹配文本的错误信息。
-v:
显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\:
忽略正则表达式中特殊字符的原有含义。
^:
匹配正则表达式的开始行。
$:
匹配正则表达式的结束行。
\<
:
从匹配正则表达式的行开始。
\>
到匹配正则表达式的行结束。
[]:
单个字符,如[A]即A符合要求。
[-]:
范围,如[A-Z],即A、B、C一直到Z都符合要求。
。
所有的单个字符。
*:
有字符,长度可以为0。
grep命令使用简单实例
$grep‘test’d*
显示所有以d开头的文件中包含test的行。
$grep‘test’aabbcc
显示在aa,bb,cc文件中匹配test的行。
$grep‘[a-z]\{5\}’aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
$grep‘w\(es\)t.*\1′aa
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(\1),找到就显示该行。
如果用egrep或grep-E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了。
grep-ipatternfiles:
不区分大小写地搜索。
默认情况区分大小写,
grep-lpatternfiles:
只列出匹配的文件名,
grep-Lpatternfiles:
列出不匹配的文件名,
grep-wpatternfiles:
只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep-Cnumberpatternfiles:
匹配的上下文分别显示[number]行,
greppattern1|pattern2files:
显示匹配pattern1或pattern2的行,
greppattern1files|greppattern2:
显示既匹配pattern1又匹配pattern2的行。
grep-npatternfiles即可显示行号信息
grep-cpatternfiles即可查找总行数
awk
是行处理器:
相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
awk[-F|-f|-v]‘BEGIN{}//{command1;
command2}END{}’file
[-F|-f|-v]大参数,-F指定分隔符,-f调用脚本,-v定义变量var=value
BEGIN初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
//匹配代码块,可以是字符串或正则表达式
{}命令代码块,包含一条或多条命令
;
多条命令使用分号分隔
END结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
$0表示整个当前行
$1每行第一个字段
NF字段数量变量
NR每行的记录号,多文件记录递增
FNR与NR类似,不过多文件记录不递增,每个文件都从1开始
\t制表符
\n换行符
FSBEGIN时定义分隔符
RS输入的记录分隔符,默认为换行符(即文本是按一行一行输入)
~匹配,与==相比不是精确比较
!
~不匹配,不精确比较
==等于,必须全部相等,精确比较
=不等于,精确比较
&
逻辑与
||逻辑或
+匹配时表示1个或1个以上
/[0-9][0-9]+/两个或两个以上数字
/[0-9][0-9]*/一个或一个以上数字
FILENAME文件名
OFS输出字段分隔符,默认也是空格,可以改为制表符等
ORS输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕
-F'
[:
#/]'
定义三个分隔符
awk命令使用简单实例
awk-F:
'
{print$1;
print$2}'
/etc/passwd//将每一行的前二个字段,分行输出,进一步理解一行一行处理文本
{print$1,$3,$6}'
OFS="
\t"
/etc/passwd//输出字段1,3,6,以制表符作为分隔符
awk-F"
:
{print"
Username:
$1"
\t\tUid:
$3}'
/etc/passwd//自定义输出
{printNF}'
/etc/passwd//显示每行有多少字段
{print$NF}'
/etc/passwd//将每行第NF个字段的值打印出来
awk-F:
NF==4{print}'
/etc/passwd//显示只有4个字段的行
NF>
2{print$0}'
/etc/passwd//显示每行字段数量大于2的行
awk'
{printNR,$0}'
/etc/passwd//输出每行的行号
{printNR,NF,$NF,"
$0}'
/etc/passwd//依次打印行号,字段数,最后字段值,制表符,每行内容
NR==5{print}'
/etc/passwd//显示第5行
NR==5||NR==6{print}'
/etc/passwd//显示第5行和第6行
route-n|awk'
NR!
=1{print}'
//不显示第一行
{if($1~/mail/){print$1}else{print$2}}'
/etc/passwd//if...else...
{{if(($10==12)&
($1=="
c"
))print$5}}'
/etc/passwd//逻辑与(或||),$10匹配12,并且$1为c
BEGIN{A=0;
B=0}{if($3>
100){A++;
print"
large"
}else{B++;
small"
}}END{printA,"
B}'
/etc/passwd//ID大于100,A加1,否则B加1
{if($3<
100)next;
elseprint}'
/etc/passwd//小于100跳过,否则显示
BEGIN{i=1}{if(i<
NF)printNR,NF,i++}'
/etc/passwd
while语句
BEGIN{i=1}{while(i<
NF)printNF,$i,i++}'
/etc/passwd
数组
netstat-anp|awk'
=1{a[$6]++}END{for(iina)printi,"
a[i]}'
=1{a[$6]++}END{for(iina)printf"
%-20s%-10s%-5s\n"
i,"
uniq
uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用。
也就是说,为了使uniq起作用,所有的重复行必须是相邻的。
uniq[-icu]
-i:
忽略大小写字符的不同;
-c:
进行计数
-u:
只显示唯一的行
uniq命令使用简单实例
sort
sort命令对File参数指定的文件中的行排序,并将结果写到标准输出。
如果File参数指定多个文件,那么sort命令将这些文件连接起来,并当作一个文件进行排序。
sort[-fbMnrtuk][fileorstdin]
-f:
忽略大小写的差异,例如A与a视为编码相同;
-b:
忽略最前面的空格符部分;
-M:
以月份的名字来排序,例如JAN,DEC等等的排序方法;
-n:
使用『纯数字』进行排序(默认是以文字型态来排序的);
-r:
反向排序;
就是uniq,相同的数据中,仅出现一行代表;
-t:
分隔符,默认是用[tab]键来分隔;
-k:
以那个区间(field)来进行排序的意思
sort命令使用简单实例
sort-t'
'
-k5test_yangjing.txt//以,来分隔的,第5栏来排序,默认以字符串排序
-k5ntest_yangjing.txt//以,来分隔的,第5栏来排序,以数字排序
sort-t'
'
-k6.2,6.4-k1r//先以第六个域的第2个字符到第4个字符进行正向排序,再基于第一个域进行反向排序
-k7–u//第七个域进行排序,然后去重
wc
统计文件里面有多少单词,多少行,多少字符。
利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。
wc[-lwm]
-c或--bytes或--chars只显示Bytes数;
-l:
仅列出行;
-w:
仅列出多少字(英文单字);
-m:
多少字符;
split
切割文件
split[--help][--version][-<
行数>
][-b<
字节>
][-C<
][-l<
][要切割的文件][输出文件名]
-<
或-l<
指定每多少行就要切成一个小文件。
-b<
指定每多少字就要切成一个小文件。
-C<
与-b参数类似,但切割时尽量维持每行的完整性。
--help 显示帮助。
--version 显示版本信息。
[输出文件名] 设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号。
w
显示目前登入系统的用户信息。
执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。
单独执行w指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
w[-fhlsuV][用户名称]
-f 开启或关闭显示用户从何处登入系统。
-h 不显示各栏位的标题信息列。
-l 使用详细格式列表,此为预设值。
-s 使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。
-u 忽略执行程序的名称,以及该程序耗费CPU时间的信息。
-V 显示版本信息。
more
mor显示输出的内容,然后根据窗口的大小进行分页显示,然后还能提示文件的百分比
more[参数选项][文件]
+num从第num行开始显示;
-num定义屏幕大小,为num行;
+/pattern从pattern前两行开始显示;
-c从顶部清屏然后显示;
-d提示Pressspacetocontinue,'
q'
toquit.(按空键继续,按q键退出),禁用响铃功能;
-l忽略Ctrl+l(换页)字符;
-p通过清除窗口而不是滚屏来对文件进行换页。
和-c参数有点相似;
-s把连续的多个空行显示为一行;
-u把文件内容中的下划线去掉
退出more的动作指令是q
tail
某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容
tail[-f][-cNumber|-nNumber|-mNumber|-bNumber|-kNumber][File]
-f该参数用于监视File文件增长。
-cNumber从Number字节位置读取指定文件
-nNumber从Number行位置读取指定文件。
-mNumber从Number多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。
-bNumber从Number表示的512字节块位置读取指定文件。
-kNumber从Number表示的1KB块位置读取指定文件。
-r逆序显示
find
查找文件或目录。
find指令用于查找符合条件的文件。
任何位于参数之前的字符串都将被视为欲查找的目录。
find[目录...][-amin<
分钟>
][-anewer<
参考文件或目录>
][-atime<
24小时数>
][-cmin<
][-cnewer<
参考文find[目录...][-amin<
][-ctime<
][-daystart][-depyh][-empty][-exec<
执行指令>
][-false][-fls<
列表文件>
][-follow][-fprint<
][-fprint0<
][-fprintf<
<
输出格式>
][-fstype<
文件系统类型>
][-gid<
群组识别码>
][-group<
群组名称>
][-help][-ilname<
范本样式>
][-iname<
][-inum<
inode编号>
][-ipath<
][-iregex<
][-links<
连接数目>
][-lname<
][-ls][-maxdepth<
目录层级>
][-mindepth<
][-mmin<
][-mount]
[-mtime<
][-name<
][-newer<
][-nogroup][noleaf][-nouser][-ok<
][-path<
][-perm<
权限数值>
][-print][-print0][-printf<
][-prune][-regex<
][-size<
文件大小>
][-true][-type<
文件类型>
][-uid<
用户识别码>
][-used<
日数>
][-user<
拥有者名称>
][-version][-xdev][-xtype<
]
-name
filename
#查找名为filename的文件
-perm
#按执行权限来查找
-user
username
#按文件属主来查找
-groupgroupname
#按组来查找
-mtime
-n+n
#按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime
#按文件访问时间来查GIN:
0px"
-ctime
#按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup
#查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser
#查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer
f1!
f2
找文件,-n指n天以内,+n指n天以前
#按文件创建时间来查找文件,-n指n天以内,+n指n天以前
#查更改时间比f1新但比f2旧的文件
-type
b/d/c/p/l/f
#查是块设备、目录、字符设备、管道、符号链接、普通文件
-size
n[c]
#查长度为n块[或n字节]的文件
-depth
#使查找在进入子目录前先行查找完本目录
-fstype
#查位于某一类型文件系统中的文件,这些文件系统类型通常可在/etc/fstab中找到
-mount
#查文件时不跨越文件系统mount点
-follow
#如果遇到符号链接文件,就跟踪链接所指的文件
-cpio
%;
#对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune
#忽略某个目录
find
-nameapril*
在当前目录下查找以april开始的文件
-name
april*
fprintfile
在当前目录下查找以april开始的文件,并把结果输出到file中
-nameap*-o-namemay*
查找以ap或may开头的文件
/mnt
-nametom.txt
-ftypevfat
在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
-namet.txt!
在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
/tmp
-namewa*-typel
在/tmp下查找名为wa开头且类型为符号链接的文件
/home
-mtime
-2
在/home下查最近两天内改动过的文件
find/home
-atime-1
查1天之内被存取过的文件
find/home-mmin
+60
在/home下查60分钟前改动过的文件
-amin
+30
查最近30分钟前被存取过的文件
-newer
tmp.txt
在/home下查更新时间比tmp.txt近的文件或目录
-anewer
在/home下查存取时间比tmp.txt近的文件或目录
-used
列出文件或目录被改动过之后,在2日内被存取过的文件或目录
-usercnscn
列出/home目录内属于用户cnscn的文件或目录
-uid
+501
列出/home目录内用户的识别码大于501的文件或目录
-group
cnscn
列出/home