linux学习心得第5篇
2011-09-17 14:39
288 查看
前7章的一些重点总结:
cat 查看文件的方式是dump的,将整个文件倾泻到屏幕上的,如果内容比较长的话,通常也就会滚屏而过了
less,more 是分页查看文件的
less 是可以根据你所设定的模式来搜索字符串,可以向前、后翻页。这个经常用
more 默认是只能向后翻页
head # head -n 20 查看文件的前20行
tail # tail -n 20 查看文件的尾部后20行
# tail -f 查看完毕后,并不结束,而是等待显示新增的内容,所以经常用来查看一个正在处于增长状态的日志信息,crtl+c来推出
cut 命令用来将文件切成N段,并取其中的某些特定字段的
cut -d 指定分隔符,以什么为依据来分隔
-f[n-m] 指定我们切割后要选取的段号,通常和-d搭配使用
例子:
cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
……
-c[n-m]指定从第几个字符到第几个字符
如 # cut -c2-6 /etc/passwd
表示选取/etc/passwd文件中任一行中第二到第六个字符
wc 命令 ,做统计一个文件中出现的行数、字数、字节数
例子:我们要统计/etc/下目录的个数
# ls -l /etc | grep -v "^total" | wc -l
这样就统计出来在/etc下文件的个数
sort命令 排序命令
可以将一个文本文件中的内容按照一定的顺序<默认升序>进行排序,按字符a~z的顺序,注意sort排序功能是在缓存中进行的,例如sort /etc/passwd
系统先将/etc/passwd这个文件放入缓存中,然后排序、显示到屏幕上。这对原文件没有任何影响。
如果我们要保存我们拍过顺序的文件,可以使用输出重定向>
sort /etc/passwd > ./sortpasswd
sort -o /etc/passwd /tmp/passwd.sort 保存
-r 逆序排序
-n 以数值来排序 如果不指定-n的话,我们对待0~9以ASCII码得形式来排序,默认以ASCII字符串为标准来排序。
-f 忽略大小写的
-u 把重复的行给去了 注意空白字符对我们来说是不可见的,但是对sort是可见的,注意空白的字符。
-t : 可以指定以什么来分段的,这里指定以:来分段的,但是默认是以空格来分段的
-k 可以指定以第几段来排序,一般和-t配合使用
例子:以/etc/passwd中UID大小来排序
sort -n -t : -k 3 /etc/passwd
uniq 命令的 也是可以排序的,而且是除去重复行来排序的,注意这里的重复行是指连在一起的,相同的才叫重复行, # sort sort.txt | uniq
但是uniq也有自己的一些特点,他可以显示出来每一行所被重复的次数,这时运用命令 "uniq -c"来显示特定行所重复的次数,运用"uniq -u"表示只显示没有重复的行,而运用 "uniq -d"表示只显示重复的行
grep: 全局搜索正则表达式,并打印之
grep [option] 'pattern' filename
在文本文件filename中去寻找匹配'pattern'格式的字符串,并将包含该字符串的那一行都显示出来
grep仅仅是支持基本的正则表达式,如果要让其支持扩展的需要-E选项
egrep=grep -E
fgrep[fast grep]=grep -F
"^$"这个是表示空白行,以开头开头,以结束结束
grep -v 显示出不被匹配到的语句
-i 忽略大小写
-A 显示上下文的
-B
-C
--color= auto<自动加颜色> never<不加颜色> 默认是会用颜色高亮的显示出来匹配到的串
例子:
#grep --color=audo 'r..t' /etc/passwd
会将/etc/passwd中符合'r..t'模式的字符串所在行显示出来,并且所匹配的字符串默认用红色来注明。如果要改颜色的话
# export GREP_COLOR='01;32'
#grep --color=audo 'r..t' /etc/passwd
会将/etc/passwd中符合'r..t'模式的字符串所在行显示出来,并且所匹配的字符串默认用绿色来注明。
3前景色 2表示颜色
1表示红色 2表示绿色 3表示蓝色
颜色是定制的,但是要导出个变量GREP_COLOR
例子: 我想在/etc目录下查找一个文件,文件名字中包含了pass字符串
#ls /etc | grep --color=auto 'pass'
passwd
passwd-
#
所以我们的grep通常和管道命令结合起来使用,此外我们还知道,在我们执行任何一个命令的时候,当我们这个命令执行结束以后,会有命令本身的返回值和命令是否成功的状态值<echo $?查看 0表示成功1表示失败> 。但是在有些时候我们仅仅需要的是命令执行后的状态,而不需要执行结果,这是我们需要重定向,如:
# grep --color=auto 'r..t' /etc/passwd > /dev/null
# echo $?
0
其中/dev/null是一个黑洞,可以塞任何东西,这条命令是通常用来抛弃掉返回值,但仍旧寻得到状态值用的
例子:假如我想从/etc/passwd这个文件中查找有没有一个叫做'stu'的用户,如果使用 #grep 'stu' /etc/passwd > /dev/null的话,也会将student这个用户给找出来,然后#echo $? 也显示为0.所以这样用是不恰当的,应当使用:
# cut -d: -f1 /etc/passwd | grep "^stu\>"
stu
#
egrep
不支持\{m\} 、\{m,n\}、\(……\) 这种表达式,而是将其化简了不需要\ ,取而代之的是{m}、{m,n}
例如:# egrep 'r.{2}t' /etc/passwd
不使用 # egrep 'r.\{2\}t' /etc/passwd 这种模式
但是 扩展的()和\(……\)意义是不样的 \(……\)在标准正则表达式中表示引用
而扩展的()的用法如下:
# egrep 'l(ov){2,3}er' /etc/passwd
表示在/etc/passwd这个文件中寻找 lovovover lovover 这两个字符
但是在标准正则表达式中是无法用# grep 'l(ov)\{2,3\}er' /etc/passwd 命令的
另外,我们在扩展表达式中可以用 + ? 来表示匹配的次数的
? ----->表示0或1次 如a?root 前面的a是可有可无的,但是broot是可以匹配的
+ ----->表示1~任意次
| 或者
例子:让你在文件中找到
"like you liker"或"love you lover"
# egrep "l(ik)|(ov)e "
注意,这一点弄的不好!!注意查资料
正则表达式<reg>
怎么强调正则表达式的作用都不为过
1 基本的正则表达式 grep
2 扩展的正则表达式 egrep
这两类支持的元字符是不同的
基本的正则表达式
元字符:就是一些 它所表示的意思不是他本身的意义 的一些字符
例如 * 、globing<文件名通配>{注意:但是正则表达式中的元字符和文件通配符的意义往往不一样}
1> . 表示任意单个字符
例如:r..t 和它匹配的有root rabt 等等
[] 例如 [abc]root 则aroot broot croot都是匹配的。 而abroot中的因后面broot字符是匹配的,所以abroot是匹配的
[^abc]root 表示用来匹配除了abc之外的字符 ^表示非
2> .* 表示任意长度任意字符 正则表达式中*表示做匹配次数的,默认是任意个 >=0
例如 a*root 和它匹配的有 aroot root aaroot aaaroot 但是abroot是不能匹配的,如果是
a.*root 则 abroot就是匹配的
3> p\{n\} 这个可以精确的匹配确定字符p并个数n的方式 例子:a\{2\}root 和它能匹配的就只能是aaroot
4> p\{m,n\} 这个表示匹配确定字符p,不少于m次,不多于n次
例子: a\{3,4\}root 所以和它匹配的就有:
aaaroot aaaaroot
p\{n,\} 这个表示匹配字符P最少n次,多则不限
5> 锚钉符
^root 表示root必须要出现在行首
root$ 表示root必须出现在行尾
\<root 表示root必须出现在词首
root\> 表示root必须出现在词尾
\<root\> 表示root出现在词首和词尾
\broot=\<root
root\b=root\>
\(...\) 前项引用
例子:
要匹配 love …… lover 的正则表达式是 \(love\).*\1r ----> \1 表示引用\(love\)中 的love字符
要同时匹配 like you liker 和 love you lover
cat 查看文件的方式是dump的,将整个文件倾泻到屏幕上的,如果内容比较长的话,通常也就会滚屏而过了
less,more 是分页查看文件的
less 是可以根据你所设定的模式来搜索字符串,可以向前、后翻页。这个经常用
more 默认是只能向后翻页
head # head -n 20 查看文件的前20行
tail # tail -n 20 查看文件的尾部后20行
# tail -f 查看完毕后,并不结束,而是等待显示新增的内容,所以经常用来查看一个正在处于增长状态的日志信息,crtl+c来推出
cut 命令用来将文件切成N段,并取其中的某些特定字段的
cut -d 指定分隔符,以什么为依据来分隔
-f[n-m] 指定我们切割后要选取的段号,通常和-d搭配使用
例子:
cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
……
-c[n-m]指定从第几个字符到第几个字符
如 # cut -c2-6 /etc/passwd
表示选取/etc/passwd文件中任一行中第二到第六个字符
wc 命令 ,做统计一个文件中出现的行数、字数、字节数
例子:我们要统计/etc/下目录的个数
# ls -l /etc | grep -v "^total" | wc -l
这样就统计出来在/etc下文件的个数
sort命令 排序命令
可以将一个文本文件中的内容按照一定的顺序<默认升序>进行排序,按字符a~z的顺序,注意sort排序功能是在缓存中进行的,例如sort /etc/passwd
系统先将/etc/passwd这个文件放入缓存中,然后排序、显示到屏幕上。这对原文件没有任何影响。
如果我们要保存我们拍过顺序的文件,可以使用输出重定向>
sort /etc/passwd > ./sortpasswd
sort -o /etc/passwd /tmp/passwd.sort 保存
-r 逆序排序
-n 以数值来排序 如果不指定-n的话,我们对待0~9以ASCII码得形式来排序,默认以ASCII字符串为标准来排序。
-f 忽略大小写的
-u 把重复的行给去了 注意空白字符对我们来说是不可见的,但是对sort是可见的,注意空白的字符。
-t : 可以指定以什么来分段的,这里指定以:来分段的,但是默认是以空格来分段的
-k 可以指定以第几段来排序,一般和-t配合使用
例子:以/etc/passwd中UID大小来排序
sort -n -t : -k 3 /etc/passwd
uniq 命令的 也是可以排序的,而且是除去重复行来排序的,注意这里的重复行是指连在一起的,相同的才叫重复行, # sort sort.txt | uniq
但是uniq也有自己的一些特点,他可以显示出来每一行所被重复的次数,这时运用命令 "uniq -c"来显示特定行所重复的次数,运用"uniq -u"表示只显示没有重复的行,而运用 "uniq -d"表示只显示重复的行
grep: 全局搜索正则表达式,并打印之
grep [option] 'pattern' filename
在文本文件filename中去寻找匹配'pattern'格式的字符串,并将包含该字符串的那一行都显示出来
grep仅仅是支持基本的正则表达式,如果要让其支持扩展的需要-E选项
egrep=grep -E
fgrep[fast grep]=grep -F
"^$"这个是表示空白行,以开头开头,以结束结束
grep -v 显示出不被匹配到的语句
-i 忽略大小写
-A 显示上下文的
-B
-C
--color= auto<自动加颜色> never<不加颜色> 默认是会用颜色高亮的显示出来匹配到的串
例子:
#grep --color=audo 'r..t' /etc/passwd
会将/etc/passwd中符合'r..t'模式的字符串所在行显示出来,并且所匹配的字符串默认用红色来注明。如果要改颜色的话
# export GREP_COLOR='01;32'
#grep --color=audo 'r..t' /etc/passwd
会将/etc/passwd中符合'r..t'模式的字符串所在行显示出来,并且所匹配的字符串默认用绿色来注明。
3前景色 2表示颜色
1表示红色 2表示绿色 3表示蓝色
颜色是定制的,但是要导出个变量GREP_COLOR
例子: 我想在/etc目录下查找一个文件,文件名字中包含了pass字符串
#ls /etc | grep --color=auto 'pass'
passwd
passwd-
#
所以我们的grep通常和管道命令结合起来使用,此外我们还知道,在我们执行任何一个命令的时候,当我们这个命令执行结束以后,会有命令本身的返回值和命令是否成功的状态值<echo $?查看 0表示成功1表示失败> 。但是在有些时候我们仅仅需要的是命令执行后的状态,而不需要执行结果,这是我们需要重定向,如:
# grep --color=auto 'r..t' /etc/passwd > /dev/null
# echo $?
0
其中/dev/null是一个黑洞,可以塞任何东西,这条命令是通常用来抛弃掉返回值,但仍旧寻得到状态值用的
例子:假如我想从/etc/passwd这个文件中查找有没有一个叫做'stu'的用户,如果使用 #grep 'stu' /etc/passwd > /dev/null的话,也会将student这个用户给找出来,然后#echo $? 也显示为0.所以这样用是不恰当的,应当使用:
# cut -d: -f1 /etc/passwd | grep "^stu\>"
stu
#
egrep
不支持\{m\} 、\{m,n\}、\(……\) 这种表达式,而是将其化简了不需要\ ,取而代之的是{m}、{m,n}
例如:# egrep 'r.{2}t' /etc/passwd
不使用 # egrep 'r.\{2\}t' /etc/passwd 这种模式
但是 扩展的()和\(……\)意义是不样的 \(……\)在标准正则表达式中表示引用
而扩展的()的用法如下:
# egrep 'l(ov){2,3}er' /etc/passwd
表示在/etc/passwd这个文件中寻找 lovovover lovover 这两个字符
但是在标准正则表达式中是无法用# grep 'l(ov)\{2,3\}er' /etc/passwd 命令的
另外,我们在扩展表达式中可以用 + ? 来表示匹配的次数的
? ----->表示0或1次 如a?root 前面的a是可有可无的,但是broot是可以匹配的
+ ----->表示1~任意次
| 或者
例子:让你在文件中找到
"like you liker"或"love you lover"
# egrep "l(ik)|(ov)e "
注意,这一点弄的不好!!注意查资料
正则表达式<reg>
怎么强调正则表达式的作用都不为过
1 基本的正则表达式 grep
2 扩展的正则表达式 egrep
这两类支持的元字符是不同的
基本的正则表达式
元字符:就是一些 它所表示的意思不是他本身的意义 的一些字符
例如 * 、globing<文件名通配>{注意:但是正则表达式中的元字符和文件通配符的意义往往不一样}
1> . 表示任意单个字符
例如:r..t 和它匹配的有root rabt 等等
[] 例如 [abc]root 则aroot broot croot都是匹配的。 而abroot中的因后面broot字符是匹配的,所以abroot是匹配的
[^abc]root 表示用来匹配除了abc之外的字符 ^表示非
2> .* 表示任意长度任意字符 正则表达式中*表示做匹配次数的,默认是任意个 >=0
例如 a*root 和它匹配的有 aroot root aaroot aaaroot 但是abroot是不能匹配的,如果是
a.*root 则 abroot就是匹配的
3> p\{n\} 这个可以精确的匹配确定字符p并个数n的方式 例子:a\{2\}root 和它能匹配的就只能是aaroot
4> p\{m,n\} 这个表示匹配确定字符p,不少于m次,不多于n次
例子: a\{3,4\}root 所以和它匹配的就有:
aaaroot aaaaroot
p\{n,\} 这个表示匹配字符P最少n次,多则不限
5> 锚钉符
^root 表示root必须要出现在行首
root$ 表示root必须出现在行尾
\<root 表示root必须出现在词首
root\> 表示root必须出现在词尾
\<root\> 表示root出现在词首和词尾
\broot=\<root
root\b=root\>
\(...\) 前项引用
例子:
要匹配 love …… lover 的正则表达式是 \(love\).*\1r ----> \1 表示引用\(love\)中 的love字符
要同时匹配 like you liker 和 love you lover
相关文章推荐
- Linux 命令学习心得
- linux驱动学习心得--以I2C做实例
- 20155228 基于VirtualBox安装Ubuntu和学习linux命令的学习经历和心得
- linux下raid学习心得和raid0的实现
- 我在大学毕业后学习Linux系统的心得经验
- Linux进程学习心得
- 学习了LINUX下用C语言遍历文件夹,一些心得
- linux学习心得之目录树开端与/etc(图文)
- linux 学习心得1
- 如何学习linux的建议 linux 学习心得
- Linux下C编程学习心得
- Linux学习心得(二)
- 【学习心得】linux下多客户端批量操作脚本(含expect交互)
- linux 学习心得(一)
- linux下面 磁盘管理 学习心得
- 学习了LINUX下用C语言遍历文件夹,一些心得
- linux下内存管理学习心得(二)
- linux 学习心得(4)
- linux学习心得(三)
- [置顶] 一周时间Linux学习心得