Linux常用命令-续2

Linux常用命令-帮助命令

1. 帮助命令

1.1. man

[root@localhost ~]# man [选项] 命令
选项:
-f: 查看命令拥有哪个级别的帮助
-k: 查看和命令相关的所有帮助

man ls # 查看ls的相关介绍
man -f 命令 或 whatis 命令
#查看命令拥有哪个级别的帮助
man -k 命令 或 apropos 命令
#查看和命令相关的所有帮助

image-20240513103723146

1.2. info

info是一套书,在使用info之后,可以对文件进行查找操作,主要的快捷键如下

info

image-20240513104523992

1.3. help

只能获取内置命令的帮助

查看命令的位置操作:内部和外部命令

image-20240513104721104

image-20240513104828655

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 命令 #可查看命令的其他名称

image-20240513105939216

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 执行搜索时,禁止搜索这些系统目录

image-20240513110610018

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 [数字项] 

image-20240513180002219

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 [+|-]时间: 按照文件状态修改时间搜索

image-20240513180700195

2.3.4 按照权限搜索

命令格式。
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-perm 权限模式: 查找文件权限刚好等于“权限模式”的文件
-perm -权限模式:查找文件权限全部包含“权限模式”的文件
-perm +权限模式:查找文件权限包含“权限模式”的任意一个权限的文件

image-20240513181237916

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

最后的反斜杠和花括号之间存在空格

image-20240513190714329

命令1的结果作为命令2 的操作对象

image-20240513191320590

image-20240513191610442

使用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的数据,是含有匹配

image-20240516080004714

通配符案例

# 通配符进行匹配,目的是实现文件名称的模糊查找,加入通配符之后,可以实现文件名称的通配符查找
  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"

image-20240516080747438

image-20240516080835043

image-20240516081054940

正则案例

# 在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

4.快捷键

image-20240516085236865

posted @ 2024-05-16 09:01  何夕_DL  阅读(3)  评论(0编辑  收藏  举报