Linux常用命令-续2
Linux常用命令-帮助命令
1. 帮助命令
1.1. man
[root@localhost ~]# man [选项] 命令
选项:
-f: 查看命令拥有哪个级别的帮助
-k: 查看和命令相关的所有帮助
man ls # 查看ls的相关介绍
man -f 命令 或 whatis 命令
#查看命令拥有哪个级别的帮助
man -k 命令 或 apropos 命令
#查看和命令相关的所有帮助
1.2. info
info是一套书,在使用info之后,可以对文件进行查找操作,主要的快捷键如下
info
1.3. help
只能获取内置命令的帮助
查看命令的位置操作:内部和外部命令
1.4.--help
命令 --help #查看该命令帮助
2.搜索
2.1. whereis和which
- whereis 命令可以在查找到二进 制命令的同时,查找到帮助文档的位置
- 而 which 命令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令。
# alias可以查看系统中所有命令的别名
alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
type 命令 #可查看命令的其他名称
2.2 locate命令
- 优点:按照数据库搜索,搜索速度快,消耗资源小
- 数据库位置/var/lib/mlocate/mlocate.db,可以使用 updatedb 命令强制更新数据库。
- 缺点:只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照权限、大小、修改时间等搜索文件。
locate 命令的基本信息如下。
- 命令名称:locate。
- 英文原意:find files by name。
- 所在路径:/usr/bin/locate。
- 执行权限:所有用户。
- 功能描述:按照文件名搜索文件。
updatedb # 强制更新locate数据库
# locate配置文件
[root@localhost ~]# vi /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
#开启搜索限制,也就是让这个配置文件生效
PRUNEFS = "……"
#在 locate 执行搜索时,禁止搜索这些文件系统类型
PRUNENAMES = "……"
#在 locate 执行搜索时,禁止搜索带有这些扩展名的文件
PRUNEPATHS = "……"
#在 locate 执行搜索时,禁止搜索这些系统目录
2.3find搜索
find 命令的基本信息如下。
命令名称:find。
英文原意:search for files in a directory hierarchy。
所在路径:/bin/find。
执行权限:所有用户。
2.3.1 按照文件名搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-name: 按照文件名搜索
-iname: 按照文件名搜索,不区分文件名大小写
-inum: 按照 inode 号搜索
知道i节点号和知道文件名称
ls -i abc
find -inum [数字项]
2.3.2.按照文件大小搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-size [+|-]大小: 按照指定大小搜索文件
这里的“+”的意思 是搜索比指定大小还要大的文件,“-”的意思是搜索比指定大小还要小的文
件。
[root@localhost ~]# man find
-size n[cwbkMG]
File uses n units of space. The following suffixes can be used:
'b' for 512-byte blocks (this is the default if no suffix is used)
#这是默认单位,如果单位为 b 或不写单位,则按照 512 Byte 搜索
'c' for bytes
#搜索单位是 c,按照字节搜索
'w' for two-byte words
#搜索单位是 w,按照双字节(中文)搜索
'k' for Kilobytes (units of 1024 bytes)
#按照 KB 单位搜索,必须是小写的 k
'M' for Megabytes (units of 1048576 bytes)
#按照 MB 单位搜索,必须是大写的 M
'G' for Gigabytes (units of 1073741824 bytes)
#按照 GB 单位搜索,必须是大写的 G
2.3.3 按照修改时间搜索
Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个时间,我们也可以按照时间来搜索文件。
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-atime [+|-]时间: 按照文件访问时间搜索
-mtime [+|-]时间: 按照文件数据修改时间搜索
-ctime [+|-]时间: 按照文件状态修改时间搜索
2.3.4 按照权限搜索
命令格式。
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-perm 权限模式: 查找文件权限刚好等于“权限模式”的文件
-perm -权限模式:查找文件权限全部包含“权限模式”的文件
-perm +权限模式:查找文件权限包含“权限模式”的任意一个权限的文件
2.3.5 按照所有者和所属组搜索
外来文件不存在所有者
find /root/ -nouser
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-uid 用户 ID: 按照用户 ID 查找所有者是指定 ID 的文件
-gid 组 ID: 按照用户组 ID 查找所属组是指定 ID 的文件
-user 用户名: 按照用户名查找所有者是指定用户的文件
-group 组名: 按照组名查找所属组是指定用户组的文件
-nouser: 查找没有所有者的文件
按照所有者和所属组搜索时,“-nouser”选项比较常用,主要用于查找垃圾文件。
只有一种情况例外,那就是外来文件。比如光盘和 U 盘中的文件如果是由 Windows 复制的,在Linux 中查看就是没有所有者的文件;再比如手工源码包安装的文件,也有可能没有所有者
2.3.6 按照文件类型搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-type d: 查找目录
-type f: 查找普通文件
-type l: 查找软链接文件
2.4 find的逻辑运算
1)-a:and 逻辑与
find 命令也支持逻辑运算符选项,其中-a 代表逻辑与运算,也就是-a 的两个条件都成立,find 搜
索的结果才成立。举个例子:
[root@localhost ~]# find . -size +2k -a -type f
#在当前目录下搜索大于 2KB,并且文件类型是普通文件的文件
2)-o:or 逻辑或
-o 选项代表逻辑或运算,也就是-o 的两个条件只要其中一个成立,find 命令就可以找到结果。例
如:
[root@localhost ~]# find . -name cangls -o -name bols
./cangls
./bols
#在当前目录下搜索文件名要么是 cangls 的文件,要么是 bols 的文件
3)-not:not 逻辑非
-not 是逻辑非,也就是取反的意思。举个例子:
[root@localhost ~]# find . -not -name cangls
-not 可以写成 [ ! ]
#在当前目录下搜索文件名不是 cangls 的文件
find 搜索路径 [选项] 搜索内容 [选项] 搜索内容
find /root/ -nouser -a -perm 775
2.5find的其他
注意 https://blog.csdn.net/bai_ye_/article/details/118100069
最后的反斜杠和花括号之间存在空格
命令1的结果作为命令2 的操作对象
使用ok选项可以更好的提示下一步的文件操作
2.6 grep
搜索文件中的数据
[root@localhost ~]# grep [选项] "搜索内容" 文件名
选项:
-i: 忽略大小写
-n: 输出行号
-v: 反向查找
--color=auto: 搜索出的关键字用颜色显示
2.7 find和grep的区别
find 也是搜索命令,那么 find 命令和 grep 命令有什么区别呢?
2.7.1 find 命令
find 命令用于在系统中搜索符合条件的文件名,如果需要模糊查询,则使用通配符进行匹配,通配符是完全匹配(find 命令可以通过-regex 选项,把匹配规则转为正则表达式规则,但是不建议如此)
2.7.2 grep 命令
grep 命令用于在文件中搜索符合条件的字符串,如果需要模糊查询,则使用正则表达式进行匹配,正则表达式是包含匹配。
通配符
* 匹配若干个字符
?匹配任意一个字符
[] 匹配中括号中任意一个字符。例如,[abc]代表一定匹配一个字符,或者是 a,或者是 b,或者是 c
[-] 匹配中括号中任意一个字符,-代表一个范围。例如,[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号内的一个字符。例如,[^0-9]代表匹配一个不是数字的字符
find / -name "a[bc]c"
find / -name "a[1-9]c"
find / -name "a[^]c"
find / -name "a[^0-9]c"
正则表达式
? 匹配前一个字符重复 0 次,或 1 次(?是扩展正则,需要使用 egrep 命令)
* 匹配前一个字符重复 0 次,或任意多次
[] 匹配中括号中任意一个字符。例如,[abc]代表一定匹配一个字符,或者是 a,或者是 b,或者是 c
[-] 匹配中括号中任意一个字符,-代表一个范围。例如,[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号内的一个字符。例如,[^0-9]代表匹配一个不是数字的字符
^ 匹配行首
$ 匹配行尾
2.7.3 搜索实例
# 创建文件abc
# 文件abc中写入内容
# 对abc中的内容进行检索
touch abc
vim abc
grep [选项] "搜索内容" 文件名
grep -v aBc "abc" # 取反搜索
grep -i abc "abc" # 忽略大小写
find ./ -name abc # find搜索得到的是文件准确名称的搜索,是完全匹配
grep abc abc # grep搜索文件中的内容是含有abc的数据,是含有匹配
通配符案例
# 通配符进行匹配,目的是实现文件名称的模糊查找,加入通配符之后,可以实现文件名称的通配符查找
765 touch abc # 创建文件
766 touch aaaa # 创建文件
767 touch abb # 创建文件
768 ls # 查看文件路径下的内容
# 使用通配符实现文件名称的匹配 其中常用的是*?[]^等符号
769 find ./ -name a # 按照文件名称完全匹配
771 find ./ -name "a*" # 使用通配符进行文件名称的模糊匹配
find . -name "a?c" # ?是匹配一个字符
788 find . -name "a[1-9]c"
789 find . -name "a[a-z]c"
790 find . -name "a[abcd]c"
791 find . -name "a[^q]c"
792 find . -name "a[^3]c"
正则案例
# 在abc中进行文件编辑,添加若干字符内容,随后进行正则匹配测试
vim abc
# 包含匹配* ,[字符*]输出所有的有字符的项目,会包含所有的项
grep "a*" abc # 匹配前一个内容是*的存在
grep "aa*" abc # 匹配最少一个a的内容
grep "^aa*" abc # 匹配a为行首的内容
# ?是扩展正则,在其中需要让?实现,使用的应该是egrep命令
grep "^11?" abc # ^ 行首匹配
grep "[0-9]$" abc # $ 行尾匹配
2.8 管道符:补充命令
# | 管道符命令 管道符是[|],命令1的结果作为命令2的操作对象
# 管道符的操作是文本流操作,find命令不支持管道符操作,所以在find后面添加-exec模拟管道符
# 管道符的操作对象是文本流
ll /etc/ | more # 分屏显示命令结果
# 管道符后方是对字符串文本进行的操作,所以使用grep进行操作
补充:netstat
[root@localhost ~]# netstat [选项]
选项:
-a: 列出所有网络状态,包括 Socket 程序
-c 秒数: 指定每隔几秒刷新一次网络状态
-n: 使用 IP 地址和端口号显示,不使用域名与服务名
-p: 显示 PID 和程序名
-t: 显示使用 TCP 协议端口的连接状况
-u: 显示使用 UDP 协议端口的连接状况
-l: 仅显示监听状态的连接
-r: 显示路由表
# 查看当前启用的网络端口
netstat -tuln
# 确认本机是否开启了某项服务
netstat -tuln | grep 22 # 查看22端口是否已经开启,需要正则过滤掉其他端口
netstat -an | grep ESTABLIS # 过滤下远程登陆的用户
netstat -an | grep ESTABLIS | wc -l # wc -l 统计行号有多少,两层的管道符嵌套
3.命令的别名
命令格式:
[root@localhost ~] alias
#查询命令别名
[root@localhost ~] alias 别名='原命令'
#设定命令别名
例如:
[root@localhost ~] alias ser='service network restart'
#用 ser 别名,替代 service network restart 命令
# 用命令定义的别名,是临时生效的,要想永久生效,需要写入环境变量配置文件~/.bashrc