重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
linxu下的grep命令其实是一个搜索文件文本的工具。下面由我为大家整理了linux的grep命令的详细解释的相关知识,希望对大家有帮助!
创新互联建站专注于企业全网营销推广、网站重做改版、曲周网站定制设计、自适应品牌网站建设、H5开发、商城网站定制开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为曲周等各大城市提供网站开发制作服务。
一、linux中的grep命令的详细解释
1.作用
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
2.格式
grep [options]
3.主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\:从匹配正则表达 式的行开始。
\:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。
二、linux中的grep命令的详解实例
1.grep命令使用简单实例
$ grep ‘test’ d*
显示所有以d开头的文件中包含 test的行。
$ grep ‘test’ aa bb cc
显示在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′就可以了。
2.grep命令使用复杂实例
假设您正在’/usr/src/Linux/Doc’目录下搜索带字符 串’magic’的文件:
$ grep magic /usr/src/Linux/Doc/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
其中文件’sysrp.txt’包含该字符串,讨论的是 SysRQ 的功能。
默认情况下,’grep’只搜索当前目录。如果 此目录下有许多子目录,’grep’会以如下形式列出:
grep: sound: Is a directory
这可能会使’grep’ 的输出难于阅读。这里有两种解决的办法:
明确要求搜索子目录:grep -r
或忽略子目录:grep -d skip
如果有很多 输出时,您可以通过管道将其转到’less’上阅读:
$ grep magic /usr/src/Linux/Documentation/* | less
这样,您就可以更方便地阅读。
有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,’grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 CTRL c ,然后再试。
下面还有一些有意思的命令行参数:
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
grep -n pattern files 即可显示行号信息
grep -c pattern files 即可查找总行数
这里还有些用于搜索的特殊符号:
\ 和 \ 分别标注单词的开始与结尾。
例如:
grep man * 会匹配 ‘Batman’、’manic’、’man’等,
grep ‘\man’ * 匹配’manic’和’man’,但不是’Batman’,
grep ‘\man\’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
‘^’:指匹配的字符串在行首,
‘$’:指匹配的字符串在行 尾,
Linux常用指令---grep(搜索过滤) (转)
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
1.命令格式:
grep [option] pattern file
2.命令功能:
用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。
3.命令参数:
-a --text #不要忽略二进制的数据。
-A显示行数 --after-context=显示行数 #除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b --byte-offset #在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B显示行数 --before-context=显示行数 #除了显示符合样式的那一行之外,并显示该行之前的内容。
-c --count #计算符合样式的列数。
-C显示行数 --context=显示行数或-显示行数 #除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d 动作 --directories=动作 #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e范本样式 --regexp=范本样式 #指定字符串做为查找文件内容的样式。
-E --extended-regexp #将样式为延伸的普通表示法来使用。
-f规则文件 --file=规则文件 #指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F --fixed-regexp #将样式视为固定字符串的列表。
-G --basic-regexp #将样式视为普通的表示法来使用。
-h --no-filename #在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H --with-filename #在显示符合样式的那一行之前,表示该行所属的文件名称。
-i --ignore-case #忽略字符大小写的差别。
-l --file-with-matches #列出文件内容符合指定的样式的文件名称。
-L --files-without-match #列出文件内容不符合指定的样式的文件名称。
-n --line-number #在显示符合样式的那一行之前,标示出该行的列数编号。
-q --quiet或--silent #不显示任何信息。
-r --recursive #此参数的效果和指定“-d recurse”参数相同。
-s --no-messages #不显示错误信息。
-v --revert-match #显示不包含匹配文本的所有行。
-V --version #显示版本信息。
-w --word-regexp #只显示全字符合的列。
-x --line-regexp #只显示全列符合的列。
-y #此参数的效果和指定“-i”参数相同。
4.规则表达式:
grep的规则表达式:
^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.* #一起用代表任意字符。
[] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\(..\) #标记匹配字符,如'\(love\)',love被标记为1。
\ #锚定单词的开始,如:'\
\ #锚定单词的结束,如'grep\'匹配包含以grep结尾的单词的行。
x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
\w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b #单词锁定符,如: '\bgrep\b'只匹配grep。
POSIX字符:
为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是[A-Za-z0-9]的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。
[:alnum:] #文字数字字符
[:alpha:] #文字字符
[:digit:] #数字字符
[:graph:] #非空字符(非空格、控制字符)
[:lower:] #小写字符
[:cntrl:] #控制字符
[:print:] #非空字符(包括空格)
[:punct:] #标点符号
[:space:] #所有空白字符(新行,空格,制表符)
[:upper:] #大写字符
[:xdigit:] #十六进制数字(0-9,a-f,A-F)
5.使用实例:
实例1:查找指定进程
命令:
ps -ef|grep svn
输出:
[root@localhost ~]# ps -ef|grep svn
root 4943 1 0 Dec05 ? 00:00:00 svnserve -d -r /opt/svndata/grape/
root 16867 16838 0 19:53 pts/0 00:00:00 grep svn
[root@localhost ~]#
说明:
第一条记录是查找出的进程;第二条结果是grep进程本身,并非真正要找的进程。
实例2:查找指定进程个数
命令:
ps -ef|grep svn -c
ps -ef|grep -c svn
输出:
[root@localhost ~]# ps -ef|grep svn -c
2
[root@localhost ~]# ps -ef|grep -c svn
2
[root@localhost ~]#
说明:
实例3:从文件中读取关键词进行搜索
命令:
cat test.txt | grep -f test2.txt
输出:
[root@localhost test]# cat test.txt
hnlinux
peida.cnblogs.com
ubuntu
ubuntu linux
redhat
Redhat
linuxmint
[root@localhost test]# cat test2.txt
linux
Redhat
[root@localhost test]# cat test.txt | grep -f test2.txt
hnlinux
ubuntu linux
Redhat
linuxmint
[root@localhost test]#
说明:
输出test.txt文件中含有从test2.txt文件中读取出的关键词的内容行
实例3:从文件中读取关键词进行搜索 且显示行号
命令:
cat test.txt | grep -nf test2.txt
输出:
[root@localhost test]# cat test.txt
hnlinux
peida.cnblogs.com
ubuntu
ubuntu linux
redhat
Redhat
linuxmint
[root@localhost test]# cat test2.txt
linux
Redhat
[root@localhost test]# cat test.txt | grep -nf test2.txt
1:hnlinux
4:ubuntu linux
6:Redhat
7:linuxmint
[root@localhost test]#
说明:
输出test.txt文件中含有从test2.txt文件中读取出的关键词的内容行,并显示每一行的行号
实例5:从文件中查找关键词
命令:
grep 'linux' test.txt
输出:
[root@localhost test]# grep 'linux' test.txt
hnlinux
ubuntu linux
linuxmint
[root@localhost test]# grep -n 'linux' test.txt
1:hnlinux
4:ubuntu linux
7:linuxmint
[root@localhost test]#
说明:
实例6:从多个文件中查找关键词
命令:
grep 'linux' test.txt test2.txt
输出:
[root@localhost test]# grep -n 'linux' test.txt test2.txt
test.txt:1:hnlinux
test.txt:4:ubuntu linux
test.txt:7:linuxmint
test2.txt:1:linux
[root@localhost test]# grep 'linux' test.txt test2.txt
test.txt:hnlinux
test.txt:ubuntu linux
test.txt:linuxmint
test2.txt:linux
[root@localhost test]#
说明:
多文件时,输出查询到的信息内容行时,会把文件的命名在行最前面输出并且加上":"作为标示符
实例7:grep不显示本身进程
命令:
ps aux|grep \[s]sh
ps aux | grep ssh | grep -v "grep"
输出:
[root@localhost test]# ps aux|grep ssh
root 2720 0.0 0.0 62656 1212 ? Ss Nov02 0:00 /usr/sbin/sshd
root 16834 0.0 0.0 88088 3288 ? Ss 19:53 0:00 sshd: root@pts/0
root 16901 0.0 0.0 61180 764 pts/0 S+ 20:31 0:00 grep ssh
[root@localhost test]# ps aux|grep \[s]sh]
[root@localhost test]# ps aux|grep \[s]sh
root 2720 0.0 0.0 62656 1212 ? Ss Nov02 0:00 /usr/sbin/sshd
root 16834 0.0 0.0 88088 3288 ? Ss 19:53 0:00 sshd: root@pts/0
[root@localhost test]# ps aux | grep ssh | grep -v "grep"
root 2720 0.0 0.0 62656 1212 ? Ss Nov02 0:00 /usr/sbin/sshd
root 16834 0.0 0.0 88088 3288 ? Ss 19:53 0:00 sshd: root@pts/0
说明:
实例8:找出已u开头的行内容
命令:
cat test.txt |grep ^u
输出:
[root@localhost test]# cat test.txt |grep ^u
ubuntu
ubuntu linux
[root@localhost test]#
说明:
实例9:输出非u开头的行内容
命令:
cat test.txt |grep ^[^u]
输出:
[root@localhost test]# cat test.txt |grep ^[^u]
hnlinux
peida.cnblogs.com
redhat
Redhat
linuxmint
[root@localhost test]#
说明:
实例10:输出以hat结尾的行内容
命令:
cat test.txt |grep hat$
输出:
[root@localhost test]# cat test.txt |grep hat$
redhat
Redhat
[root@localhost test]#
说明:
实例11:输出ip地址
命令:
ifconfig eth0|grep -E "([0-9]{1,3}\.){3}[0-9]"
输出:
[root@localhost test]# ifconfig eth0|grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
inet addr:192.168.120.204 Bcast:192.168.120.255 Mask:255.255.255.0
[root@localhost test]# ifconfig eth0|grep -E "([0-9]{1,3}\.){3}[0-9]"
inet addr:192.168.120.204 Bcast:192.168.120.255 Mask:255.255.255.0
[root@localhost test]#
说明:
实例12:显示包含ed或者at字符的内容行
命令:
cat test.txt |grep -E "ed|at"
输出:
[root@localhost test]# cat test.txt |grep -E "peida|com"
peida.cnblogs.com
[root@localhost test]# cat test.txt |grep -E "ed|at"
redhat
Redhat
[root@localhost test]#
说明:
实例13:显示当前目录下面以.txt 结尾的文件中的所有包含每个字符串至少有7个连续小写字符的字符串的行
命令:
grep '[a-z]\{7\}' *.txt
输出:
[root@localhost test]# grep '[a-z]\{7\}' *.txt
test.txt:hnlinux
test.txt:peida.cnblogs.com
test.txt:linuxmint
[root@localhost test]#
实例14:日志文件过大,不好查看,我们要从中查看自己想要的内容,或者得到同一类数据,比如说没有404日志信息的
命令:
grep '.' access1.log|grep -Ev '404' access2.log
grep '.' access1.log|grep -Ev '(404|/photo/|/css/)' access2.log
grep '.' access1.log|grep -E '404' access2.log
输出:
[root@localhost test]# grep “.”access1.log|grep -Ev “404” access2.log
说明:上面3句命令前面两句是在当前目录下对access1.log文件进行查找,找到那些不包含404的行,把它们放到access2.log中,后面去掉’v’,即是把有404的行放入access2.log
grep(global search regular expression(RE)and print out the line 即:全面搜索正则表达式并把行打印出来)命令是一个强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep [option] pattern file
-a:不要忽略二进制数据
-An:除了显示匹配的行外,还显示之后的n行
-b:在符合条件的行之前,显示该行第一个字符的编号
-Bn:除了显示符合条件的行外,还显示之前的n行
-c:计算符合条件的列数
-Cn:除了显示符合条件的行外,显示该行之前和之后各n行
-H:显示匹配行所属文件名
-i:不区别大小写
-n:列出符合条件的行,并显示行号
-r:查询文件夹的内容
-x:只显示全行符合的行
-o:只显示匹配到的内容
递归搜索
grep -r -n "ql2500" .
参考自 linux学习笔记24---命令grep
命令格式: 命令 [-选项] [参数]
如:ls -la /usr
**说明: **
大部分命令遵从该格式
多个选项时,可以一起写 eg:ls –l –a à ls –la
简化选项与完整选项(注:并非所有选项都可使用完整选项) eg:ls –all à ls –a
作用:切换用户身份
语法:su [选项] 用户名
-c 仅执行一次命令,而不切换用户身份
$ su – root
env
$ su – root –c “useradd longjing”
文件或目录的CRUD
英文:change directory 命令路径:内部命令 执行权限:所有用户
作用: 切换目录
语法:cd [目录] / 切换到根目录
.. 回到上一级目录
. 当前目录
~ 当前用户的宿主目录(eg:# cd ~用户名 进入某个用户的家目录)
英文:list 命令路径:/bin/ls 执行权限:所有用户
作用:显示目录文件
语法:ls [-alrRd] [文件或目录]
-a all 显示所有文件,注意隐藏文件,特殊目录.和..
-l(long) 显示详细信息
-R(recursive) 递归显示当前目录下所有目录
-r (reverse) 逆序排序
-t(time) 按修改时间排序(降序)
英文:print working directory 命令路径:/bin/pwd 执行权限:所有用户
作用:显示当前工作目录
语法:pwd [-LP]
-L 显示链接路径,当前路径,默认
-P 物理路径
eg:# cd /etc/init.d
英文:make directories 命令路径:/bin/mkdir 执行权限:所有用户
作用:创建新目录
语法:mkdir [-p] 目录名
-p 父目录不存在情况下先生成父目录 (parents)
eg: mkdir linux/test 如果目录linux不存在,则报错,使用参数-p即可自动创建父目录。
命令路径:/bin/touch 执行权限:所有用户
作用:创建空文件或更新已存在文件的时间
语法:touch 文件名
eg:touch a.txt b.txt touch {a.txt,b.txt} 同时创建多个文件
创建带空格的文件 eg:touch "program files" 在查询和删除时也必须带双引号
注意:生产环境中,文件名,一定不要加空格
英文:copy 命令路径:/bin/cp 执行权限:所有用户
作用:复制文件或目录
语法:cp [–rp] 源文件或目录 目的目录
-r -R recursive 递归处理,复制目录
-p 保留文件属性 (原文件的时间不变)
eg:
1,相对路径 cp –R /etc/* . cp –R ../aaa ../../test/
2,,绝对路径 cp –R / ect/service /root/test/aa/bb
英文:move 命令路径:/bin/mv 执行权限:所有用户
作用:移动文件或目录、文件或目录改名
语法:mv 源文件或目录 目的目录
英文:remove 命令路径:/bin/rm 执行权限:所有用户
作用:删除文件
语法: rm [-rf] 文件或目录
-r (recursive)删除目录,同时删除该目录下的所有文件
-f(force) 强制删除文件或目录 即使原档案属性设为唯读,亦直接删除,无需逐一确认
注意:工作中,谨慎使用rm –rf 命令。
扩展点 :删除乱码文件
一些文件乱码后使用rm -rf 依然无法删除
此时,使用ll -i 查找到文件的inode节点
然后使用find . -inum 查找到的inode编号 -exec rm {} -rf ;
就能顺利删除了
英文:concatenate 命令路径:/bin/cat 执行权限:所有用户
作用:显示文件内容
语法:cat [-n] [文件名]
-n 显示行号
eg:cat /etc/services
命令路径:/bin/more 执行权限:所有用户
作用:分页显示文件内容
语法:more [文件名]
空格或f 显示下一页
Enter键 显示下一行
q或Q 退出
命令路径:/usr/bin/head 执行权限:所有用户
作用:查看文件前几行(默认10行)
语法:head [文件名]
-n 指定行数
eg:head -20 /etc/services head –n 3 /etc/services
命令路径:/usr/bin/tail 执行权限:所有用户
作用:查看文件的后几行
语法:tail [文件名]
-n 指定行数
-f (follow) 动态显示文件内容
获取一个大文件的部分文件,可使用head或tail命令
head -n 100 /etc/services config.log
英文: link 命令路径:/bin/ln 执行权限:所有用户
作用:产生链接文件
语法:
ln -s [源文件] [目标文件] 创建软链接 源文件 使用 绝对路径
ln [源文件] [目标文件] 创建硬链接
eg:ln -s /etc/service ./service.soft
创建文件/etc/service的软链接service.soft
eg:/etc/service /service.hard
创建文件/etc/service的硬链接/service.hard
软连接类似于windows下的快捷方式
软连接文件格式:
lrwxrwxrwx. 1 root root 13 Jul 20 07:50 service - /etc/services
1 硬链接数量,如果该文件没有硬链接,就只有本身一个硬链接。
13链接文件的长度
格式解析(特征):
1, 软连接的文件类型是 l(软连接),软连接文件的权限 都是 lrwxrwxrwx
2,- 箭头指向到源文件
真正的权限取决于对源文件的权限
时间值为创建软连接的时间
软连接可以跨文件系统生成
硬链接特征
1,相当于 cp -p +同步更新
2,通过i节点识别,与源文件有相同的inode节点
3,硬链接不能跨分区,ln /home/test/issuels /boot/test (错误)
4,不能针对目录使用 ln /tmp/ aa.hard (无法将目录/tmp 生成硬链接)
删除软连接
rm -rf symbolic_name
英文:manual 命令路径:/usr/bin/man 执行权限:所有用户
作用:获取命令或配置文件的帮助信息
语法:man [命令/配置文件]
eg:man ls man services
(查看配置文件时,不需要配置文件的绝对路径,只需要文件名即可)
调用的是more命令来浏览帮助文档,按空格翻下一页,按回车翻下一行,按q退出。
使用/加上关键的参数可直接定位搜索, n 查找下一个,shift+n 查找上一个
eg: /-l 直接查看-l的介绍
扩展:man的级别 (帮助文档的类型, 了解1 5即可)
man man-pages 查看每一种类型代表的含义 man文档的类型(1~9)
1是命令,5是配置文件 man优先显示命令,可指定帮助类型
eg:man 5 passwd (5代表配置文件级别)
[图片上传失败...(image-6718d2-1624438708895)]
help 查看shell内置命令的帮助信息
eg:help cd
内置命令,使用whereis,which,man都不能查看
type 命令 查看内部命令还是外部命令
命令名 --help 列举该命令的常用选项
eg: cp --help
命令路径:/bin/find 执行权限:所有用户
作用:查找文件或目录
语法:find [搜索路径] [匹配条件]
如果没有指定搜索路径,默认从当前目录查找
find命令选项
-name 按名称查找 精准查找
eg:find /etc -name “init” 在目录/etc中查找文件init
-iname 按名称查找
find查找中的字符匹配:
*:匹配所有
?:匹配单个字符
eg:find /etc -name “init???” 在目录/etc中查找以init开头的,且后面有三位的文件
模糊匹配的条件,建议使用单引号或双引号括起来。如果*被转义,可使用 单双引号括住查询条件,或者使用*。
eg: # find . –name *g
-size ****按文件大小查找
以block为单位,一个block是512B, 1K=2block +大于 -小于 不写是等于
eg:find /etc -size -204800 在etc目录下找出大于100MB的文件
100MB=102400KB=204800block
**-type ** 按文件类型查找
f 二进制文件l 软连接文件 d 目录 c 字符文件
eg: find /dev -type c
find****查找的基本原则 :
占用最少的系统资源,即查询范围最小,查询条件最精准
eg:
如果明确知道查找的文件在哪一个目录,就直接对指定目录查找,不查找根目录/
命令路径:/bin/grep 执行权限:所有用户
作用:在文件中搜寻字串匹配的行并输出
语法:grep [-cinv] '搜寻字符串' filename
选项与参数:
-c :输出匹配行的次数(是以行为单位,不是以出现次数为单位)
-i :忽略大小写,所以大小写视为相同
-n :显示匹配行及行号
-v :反向选择,显示不包含匹配文本的所有行。
eg:grep ftp /etc/services
eg:#grep -v ^# /etc/inittab 去掉文件行首的#号
eg:# grep -n “init”/etc/inittab 显示在inittab文件中,init匹配行及行号
eg:# grep -c“init”/etc/inittab 显示在inittab文件中,init匹配了多少次
命令路径:/usr/bin/which 执行权限:所有用户
作用: 显示系统命令所在目录(绝对路径及别名)
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令
alias ls='ls --color=auto'
/bin/ls
/usr/bin/which: no zs in (/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/ch/bin)
命令路径:/usr/bin/whereis 执行权限:所有用户
作用:**搜索命令所在目录 配置文件所在目录 及帮助文档路径 **
eg: which passwd 和 whereis passwd
eg:查看/etc/passwd配置文件的帮助,就用 man 5 passwd
英文:GNU zip 命令路径:/bin/gzip 执行权限:所有用户
作用:压缩(解压)文件,压缩文件后缀为.gz
gzip只能压缩文件,不能压缩目录;不保留原文件
语法:gzip 文件
-d将压缩文件解压(decompress)
解压使用gzip –d或者 gunzip
命令路径:/usr/bin/bzip2 执行权限:所有用户
作用: 压缩(解压)文件,压缩文件后缀为.bz2
语法:bzip2 [-k] [文件]
-k:产生压缩文件后保留原文件(压缩比高)
-d 解压缩的参数(decompress)
解压使用bzip2 –d或者 bunzip2
命令路径:/usr/bin/zip 执行权限:所有用户
作用: 压缩(解压)文件,压缩文件后缀为.zip
语法:zip 选项[-r] [压缩后文件名称] [文件或目录]
-r压缩目录
eg:zip services.zip /etc/services 压缩文件;
zip -r test.zip /test 压缩目录
如果不加-r选项,压缩后的文件没有数据。
解压使用unzip
命令路径:/bin/tar 执行权限:所有用户
作用:文件、目录打(解)包
语法:tar [-zcf] 压缩后文件名 文件或目录
-c 建立一个压缩文件的参数指令(create),后缀是.tar
-x 解开一个压缩文件的参数指令(extract)
-z 以gzip命令压缩/解压缩
-j 以bzip2命令压缩/解压缩
-v 压缩的过程中显示文件(verbose)
-f file 指定文件名,必选项
1, 单独的打包 ,解包 tar –cf tar –xf
2, 打包之后,进行压缩 gzip bzip2
3, 一步到位 tar –zcvf tar -zxvf
tar -cf -xf 单独 压缩 解压缩
tar -z 以gzip打包目录并压缩 文件格式.tar.gz(.tgz)
tar -j 以bzip2打包目录并压缩 文件格式.tar.bz2
eg:tar -zcvf dir1.tar.gzdir1 使用gzip将目录dir1压缩成一个打包并压缩文件dir1.tar.gz
eg: tar -cvf bak.tar . 将当前目录的文件打包为bak.tar
eg: tar -xvf bak.tar 解压
eg: tar -zcvf bak.tar.gz bak.tar 或 gzip bak.tar使用gzip将打包文件bak.tar压缩为bak.tar.gz
eg: tar -jcvf bak.tar.bz2 bak.tar 或 bzip2 bak.tar 使用bzip2将打包文件bak.tar压缩为bak.tar.bz2
eg: tar -rvf bak.tar /etc/password 将/etc/password追加文件到bak.tar中(r)
eg:tar -cjvf test.tar.bz2 test 生成test.tar.bz2的压缩文件
eg:tar -xjf test.tar.bz2 解压
最常用: tar + gzip
tar –zcvf 压缩
tar –zxvf 解压
补充:
1,文件路径, 压缩包带文件路径
2,源文件是保留的,不会被删除
**shutdown **[选项] 时间
选项: -c: 取消前一个关机命令
-h:关机
-r:重启
eg:
shutdown -h now 立即关机 shutdown -h 20:30 定时关机
其他关机命令 halt poweroff init 0
其他重启命令
**reboot **重启系统 reboot -h now立即重启
init 6
注意:生产环境中,关机命令和重启命令谨慎执行。
善于查看man help等帮助文档
利用好Tab键 自动补全
掌握好一些快捷键
ctrl + c(停止当前进程)
ctrl + z 挂起当前进程,放后台
ctrl + r(查看命令历史) history
ctrl + l(清屏,与clear命令作用相同)
方向箭头 上 下 可以查看执行过的命令
ctrl + a 行首 ctrl + e 行尾
ctrl + k 清除 ctrl+ w 清除单词
vim/vi是Unix / Linux上最常用的文本编辑器而且功能非常强大。
只有命令,没有菜单。
《大碗》编辑器版
周围的同事不是用VI就是Emacs,你要是用UltraEdit都不好意思跟人家打招呼...什么插件呀、语法高亮呀、拼写检查呀,能给它开的都给它开着,就是一个字:酷!你说这么牛X的一东西,怎么着学会也得小半年吧。半年!?入门都远着呢!能学会移动光标就不错了,你还别说耗不起,就这还是左右移动!!!
:
[图片上传失败...(image-a08366-1624438708894)]
命令模式:又称一般模式
编辑模式:又称底行模式,命令行模式
|
命令
|
作用
|
|
a
|
在光标后附加文本
|
|
A(shift + a)
|
在本行行末附加文本 行尾
|
|
i
|
在光标前插入文本
|
|
I(shift+i)
|
在本行开始插入文本 行首
|
|
o
|
在光标下插入新行
|
|
O(shift+o)
|
在光标上插入新行
|
|
命令
|
作用
|
|
:set nu
|
设置行号
|
|
:set nonu
|
取消行号
|
|
gg
G
|
到第一行
到最后一行
|
|
nG
|
到第n行
|
|
:n
|
到第n行
|
|
命令
|
作用
|
|
:w
|
保存修改
|
|
:w new_filename
|
另存为指定文件
|
|
:w a.txt
|
内容追加到a.txt文件中 文件需存在
|
|
:wq
|
保存修改并退出
|
|
shift+zz(ZZ)
|
快捷键,保存修改并退出
|
|
:q!
|
不保存修改退出
|
|
:wq!
|
保存修改并退出(文件所有者可忽略文件的只读属性)
|
不保存并退出:
1, 有修改,但是修改后的内容是不保存的
2, 有突发情况,导致窗口退出。修改文件之后,直接删除同名的.swp文件
|
命令
|
作用
|
|
x
|
删除光标所在处字符 nx 删除光标所在处后n个字符
|
|
dd
|
删除光标所在行,ndd删除n行
|
|
:n1,n2d
|
删除指定范围的行(eg :1,3d 删除了123这三行)
|
|
dG
|
删除光标所在行到末尾的内容
|
|
D
|
删除从光标所在处到行尾
|
|
命令
|
作用
|
|
yy、Y
|
复制当前行
|
|
nyy、nY
|
复制当前行以下n行
|
|
dd
|
剪切当前行
|
|
ndd
|
剪切当前行以下n行
|
|
p、P
|
粘贴在当前光标所在行下 或行上
|
|
命令
|
作用
|
|
r
|
取代光标所在处字符
|
|
R(shift + r)
|
从光标所在处开始替换字符,按Esc结束
|
|
u
|
undo,取消上一步操作
|
|
ctrl+r
|
redo,返回到undo之前
|
|
命令
|
作用
|
|
/string
|
向后搜索指定字符串 搜索时忽略大小写 :set ic
|
|
?string
|
向前搜索指定字符串
|
|
n
|
搜索字符串的下一个出现位置,与搜索顺序相同
|
|
N(Shift + n)
|
搜索字符串的上一个出现位置,与搜索顺序相反
|
|
:%s/old/new/g
|
全文替换指定字符串
|
|
:n1,n2s/old/new/g
|
在一定范围内替换指定字符串
|
% 指全文,s 指开始,g 指全局替换
eg: :41,44/yang/lee/c 从41行到44行,把yang替换为lee,询问是否替换
eg: :41,44/yang/lee/g 同上,不询问,直接替换
使用替换命令来添加删除注释
:% s/^/#/g 来在全部内容的行首添加 # 号注释
:1,10 s/^/#/g 在1~10 行首添加 # 号注释
vi里面怎么查命令??
:!which cp
vi里面怎么导入命令的结果?
:r !which cp
v 可视字符模式
V****(shift+v) 可视行模式,选择多行操作
**ctrl+v **可视块模式(列模式),操作列
I或者O进入插入模式。
1,图形化界面
2,setup 命令虚拟界面
3,修改配置文件(以网络方式为NAT示例)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.2.129
NETMASK=255.255.255.0
GATEWAY=192.168.2. 2 #网段2任意,IP地址2固定,网段为vmnet8的设置的IP网段
DNS1=114.114.114.114
DNS2=8.8.8.8
重启网络生效:
service network restart
命令路径:/bin/ping 执行权限:所有用户
作用:测试网络的连通性
语法:ping 选项 IP地址
-c 指定发送次数
ping 命令使用的是icmp协议,不占用端口
eg: # ping -c 3 127.0.0.1
英文:interface configure 命令路径:/sbin/ifconfig 执行权限:root
作用:查看和设置网卡网络配置
语法:ifconfig [-a] [网卡设备标识]
-a:显示所有网卡信息
ifconfig [网卡设备标识] IP地址 修改ip地址
英文:network statistics 命令路径:/bin/netstat 执行权限:所有用户
作用:主要用于检测主机的网络配置和状况
-a all显示所有连接和监听端口
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 使用数字方式显示地址和端口号
-l (listening) 显示监控中的服务器的socket
eg:# netstat -tlnu 查看本机监听的端口
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
协议 待收数据包 待发送数据包 本地ip地址:端口 远程IP地址:端口
netstat –antpl
临时生效:
hostname 主机名
[图片上传失败...(image-ceed36-1624438708893)]
永久生效:修改配置文件
vi /etc/sysconfig/network
[图片上传失败...(image-2b9d9e-1624438708893)]
修改主机名和ip地址之间的映射关系
vi /etc/hosts
192.168.2.120 node-1.edu.cn node-1
可配置别名
[图片上传失败...(image-ec86cf-1624438708893)]
进程和程序的区别:
1、程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。
2、程序和进程无一一对应关系。一个程序可以由多个进程共用;另一方面,一个进程在活动中有可顺序地执行若干个程序。
进程和线程的区别:
进程: 就是正在执行的程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
线程: 轻量级的进程;进程有独立的地址空间,线程没有;线程不能独立存在,它由进程创建;相对讲,线程耗费的cpu和内存要小于进程。
进程管理的作用?
判断服务器的健康状态
查看系统所有的进程
杀死进程
作用:查看系统中的进程信息
语法:ps [-auxle]
常用选项
查看系统中所有进程
ps应用实例 # ps -u or ps -l 查看隶属于自己进程详细信息
作用: 查看当前进程树
语法:pstree [选项]
-p 显示进程PID
-u 显示进程的所属用户
作用:查看系统健康状态
显示当前系统中耗费资源最多的进程,以及系统的一些负载情况。
语法:top [选项]
-d 秒数,指定几秒刷新一次,默认3秒(动态显示)
作用:关闭进程
语法:kill [-选项] pId
kill -9 进程号(强行关闭) 常用
kill -1 进程号(重启进程)
添加用户
语法:useradd [选项] 用户名
修改密码命令
语法:passwd [选项] [用户名]
用户密码:生产环境中,用户密码长度8位以上,设置大小写加数字加特殊字符,要定期更换密码。
ys^h_L9t
删除用户
-r 删除账号时同时删除宿主目录(remove)
作用:用于查看Linux文件系统的状态信息,显示各个分区的容量、已使用量、未使用量及挂载点等信息。看剩余空间
语法:df [-hkam] [挂载点]
-h(human-readable)根据磁盘空间和使用情况 以易读的方式显示 KB,MB,GB等 -k 以KB 为单位显示各分区的信息,默认
-M 以MB为单位显示信息 -a 显示所有分区包括大小为0 的分区
作用:用于查看文件或目录的大小(磁盘使用空间)
语法:du [-abhs] [文件名目录]
-a 显示子文件的大小
-h以易读的方式显示 KB,MB,GB等
-s summarize 统计总占有量
eg:
du -a(all) /home 显示/home 目录下每个子文件的大小,默认单位为kb
du -b /home 以bytes为单位显示/home 目录下各个子目录的大小
du -h /home 以K,M,G为单位显示/home 文件夹下各个子目录的大小
du -sh /home 以常用单位(K,M,G)为单位显示/home 目录的总大小 -s summarize
df命令和du命令的区别:
df命令是从文件系统考虑的,不仅考虑文件占用的空间,还要统计被命令或者程序占用的空间。
du命令面向文件,只计算文件或目录占用的空间。
作用:查看内存及交换空间使用状态
语法: free [-kmg]
选项:
-k: 以KB为单位显示,默认就是以KB为单位显示
-m: 以MB为单位显示
-g: 以GB为单位显示
清理缓存命令:
echo 1 /proc/sys/vm/drop_caches
1、linux命令如果记不得,可以使用man命令来查看某个命令的使用。但对应初学者往往看不懂或者不知道什么场景下使用
2、输入find -name *history,意思是查询当前目录及子目录下所有以history结尾的文件
3、输入find -name mysql*,意思是查询当前目录及子目录下所有以mysql开头的文件
4、输入find -name mysql* -o -name *history,中间加个-o表示或的意思,就是以mysql开头或history结尾的文件
5、上面是例子没有搜索目录,默认是当前目录下,可以加上目录位置来指定特地的目录下搜索
6、有时候经常会需要查询最近10分钟修改过的文件,则可以输入find -mmin -10命令来查询
7、最后介绍下,在系统磁盘不足的情况下,需要清理大的垃圾临时文件时,如搜索大于100M的文件,find -type f -size +100M -print0 | xargs -0 du -h,结果如图所示
扩展资料
Linux简介:
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。
参考资料来源:百度百科:Linux简介
就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)看目录信息等等
常用参数搭配:
实例:
(changeDirectory),命令语法:cd [目录名]。说明:切换当前目录至dirName
实例:
查看当前工作目录路径
实例:
创建文件夹
实例:
删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用rm 来删除文件,通常仍可以将该文件恢复原状
rm [选项] 文件…
常用参数搭配:
实例:
删除空目录,一个目录被删除之前必须是空的。(注意,rm -r dir 命令可以代替rmdir,但是很危险,万一它突然就不是空的咧?),另外删除某目录时必须具有对父目录的写权限。
实例:
rmdir -p watch/avi删掉avi目录,watch目录就空掉了,那还看什么?所以干脆把watch目录一起删掉,眼不见为不净嘛。
mv命令是move的缩写,可以用来移动文件或者将文件改名,是Linux系统下常用的命令,经常用来备份文件或者目录。
命令功能:
视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。
命令参数:
实例:
将源文件复制至目标文件,或将多个源文件复制至目标目录。
注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在shell脚本中,如果不加-i参数,则不会提示,而是直接覆盖!
命令参数:
实例:
cat主要有三大功能:
命令参数:
实例:
功能类似于cat, more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示
命令参数:
常用操作命令:
实例:
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
命令参数:
实例:
head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
常用参数:
实例:
从指定点开始将文件写到标准输出。使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容。
常用参数:
实例:
用于改变linux系统文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用ls -l test.txt查找。
以文件log2012.log为例:
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log
第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。
常用参数:
权限范围:
权限代号:
实例:
tar命令是类Linux中比价常用的解压与压缩命令。
常用参数:
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
下面的参数-f是必须的
常见解压/压缩命令
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。
常用参数:
实例:
显示磁盘空间使用情况。获取硬盘被占用了多少空间,目前还剩下多少空间等信息,如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示。
常用参数:
实例:
du命令也是查看使用空间的,但是与df命令不同的是,du能看到的文件只是一些当前存在的,没有被删除的,他计算的大小就是当前他认为存在的所有文件大小的累加和。du命令是对文件和目录磁盘使用的空间的查看。
常用参数:
实例:
ln命令用于将一个文件创建链接,链接分为软链接和硬链接,命令默认使用硬链接。当在不同目录需要该文件时,就不需要为每一个目录创建同样的文件,通过ln创建的链接(link)减少磁盘占用量。
软链接:
硬链接:
需要注意:
常用参数:
实例:
显示或设定系统的日期与时间
命令参数:
实例:
可以用户显示公历(阳历)日历,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份。
常用参数:
实例:
强大的文本搜索命令,grep(Global Regular Expression Print)全局正则表达式搜索。
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
命令格式:
grep [option] pattern file|dir
常用参数:
实例:
wc(word count)功能为统计指定的文件中字节数、字数、行数,并将统计结果输出。
命令格式:
wc [option] file..
命令参数:
实例:
ps(process status),用来查看当前运行的进程状态,一次性查看,如果需要动态连续结果使用top。
linux上进程有5种状态:
ps工具标识进程的5种状态码:
命令参数:
实例:
显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等。
常用参数:
发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。
常用参数:
实例:
显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。
命令参数:
实例:
Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。如果你想确认系统上的 Web 服务有没有起来,你可以查看80端口有没有打开。以上功能使 netstat 成为网管和系统管理员的必备利器。
命令参数:
实例