linux常用命令
命令提示符和命令的基本格式
-
命令的提示符
[root@localhost ~]#
- []:提示符的分隔符号,没有任何特殊含义
- root:当前的登录用户,这里指的是root账号登录
- @:分隔符号
- localhost:当前简写主机名
- ~:当前所处的目录,只显示最后一个目录
- #:命令提示符,此符号表示登录用户的权限等级如果是超级用户就是#,如果是普通用户就是$
- 超级用户的家目录:/root
- 普通用户的家目录:/home/用户名
-
命令的基本格式
[root@localhost ~]# 命令 [选项] [参数]
- 选项的作用:使用命令各种不同的功能
- 参数的作用:参数是命令的操作对象,一般文件、目录、用户和进程等都可以作为参数被命令操作。没有参数则默认在当前位置
管道符:补充命令
命令格式: 命令1|命令2
命令1的正确输出作为命令2的操作对象
[root@localhost~]# ll /etc/ | more
[root@localhost~]# ll /etc | grep yum
find命令不支持管道符
目录操作命令
ls命令
ls是最常见的目录操作命令,主要是用来显示目录下的内容。这个命令的基本信息如下:
-
命令名称:ls
-
英文原意:list
-
所在路径:usr/bin/ls
-
执行权限:所有用户
-
功能描述:显示目录下的内容
[root@localhost~]# ls [选项] [文件名或目录名] 选项: -a: 显示所有文件 --color=when: 支持颜色输出,when的值默认是always(总是显示颜色),也可以是never(从不显示颜色)和auto(自动) -d: 显示目录信息,而不是目录下的文件 -h: 人性化显示,按照我们习惯的单位显示文件大小 -i: 显示文件的i节点号 -l: 长格式显示
cd命令
cd是切换当前所在目录的命令,这个命令的基本信息如下:
- 命令名称:cd
- 英文原意:change directory
- 所在路径:Shell内置命令
- 执行权限:所有用户
- 功能描述:切换所在目录
[root@localhost~]# cd [目录名]
特殊符号 | 作用 | 特殊符号 | 作用 |
---|---|---|---|
~ | 代表用户的家目录 | . | 代表当前目录 |
- | 代表上次所在目录 | … | 代表上一级目录 |
mkdir命令
mkdir是创建目录的命令,其基本信息如下:
- 命令名称:mkdir
- 英文原意:make directories
- 所在路径:/usr/bin/mkdir
- 执行权限:所有用户
- 功能描述:创建空目录
[root@localhost~]# mkdir [选项] 目录名
选项:
-p: 递归建立所需目录
rmdir命令
删除目录的命令rmdir,其基本信息如下:
- 命令名称:rmdir
- 英文原意:remove empty directories
- 所在路径:/usr/bin/rmdir
- 执行权限:所有用户
- 功能描述:删除空目录
[root@localhost~]# rmdir [选项] 目录名
选项:
-p: 递归删除目录
tree命令
tree命令以树形结构显示目录下的文件,其基本信息如下:
- 命令名称:tree
- 英文原意:list contents of directories in a tree-like format
- 所在路径:/usr/bin/tree
- 执行权限:所有用户
- 功能描述:显示目录树
[root@localhost~]# tree /etc/
文件操作命令
touch命令
touch的意思是触摸,如果目录中没有这个文件,那么就会创建一个空文件;如果文件已存在,那么就会修改文件的时间戳,所以不应该把touch看作一个新建文件的命令,其基本信息如下:
- 命令名称:touch
- 英文原意:change file timestamps
- 所在路径:/usr/bin/touch
- 执行权限:所有用户
- 功能描述:修改文件的时间戳或创建文件
[root@localhost~]# touch [选项] 文件名或目录名
选项:
-a: 只修改文件的访问时间(Access Time)
-c: 如果文件不存在,则不建立新文件
-d: 把文件的时间修改为指定时间
-m: 只修改文件的数据修改时间
stat命令
查看文件的基本信息,可以看到文件的访问时间、数据修改时间、状态修改时间这三个时间,其基本信息如下:
- 命令名称:stat
- 英文原意:display file or file system status
- 所在路径:usr/bin/stat
- 执行权限:所有用户
- 功能描述:显示文件或文件系统的详细信息、
[root@localhost~]# stat [选项] 文件名或目录名
选项:
-f: 查看文件所在的文件系统信息,而不是查看文件的信息
cat命令
cat用来查看文件内容,这个命令的基本信息如下:
- 命令名称:cat
- 英文原意:concatenate files and print on the standard output
- 所在路径:usr/bin/cat
- 执行权限:所有用户
- 功能描述:合并文件并打印输出到标准输出
[root@localhost~]# cat [选项] 文件名
选项:
-A: 相当于vET选项的集合,列出所有的隐藏符号
-E: 列出每行结尾的回车符$
-n: 显示行号
-T: 把Tab键用^I显示出来
-v: 列出特殊字符
more命令
当使用cat命令时无法看见文件的全部内容,就可以使用more命令来分屏查看文件内容,其基本信息如下:
- 命令名称:more
- 英文原意:file perusal filter for crt viewin
- 所在路径:/usr/bin/more
- 执行权限:所有用户
- 功能描述:分屏显示文件内容
[root@localhost~]# more 文件名
less命令
less命令和more命令类似,只不过less是分行显示命令,其基本信息如下:
- 命令名称:less
- 英文原意:opposite of more
- 所在路径:/usr/bin/less
- 执行权限:所有用户
- 功能描述:分行显示文件内容
[root@localhost~]# less 文件名
head命令
head命令用来显示文件的开头,其基本信息如下:
- 命令名称:head
- 英文原意:output the first part of files
- 所在路径:/usr/bin/head
- 执行权限:所有用户
- 功能描述:显示文件的开头内容
[root@localhost~]# head [选项] 文件名
选项:
-n: 行数,从文件头开始,显式指定行数(head命令默认显示文件开头10行的内容,想显示更多 -n 就可以了)
-v: 显示文件名
tail命令
显示文件结尾,与head对应,其基本信息如下
- 命令名称:tail
- 英文原意:output the last part of files
- 所在路径:/usr/bin/tail
- 执行权限:所有用户
- 功能描述:显示文件结尾的内容
[root@localhost~]# tail [选项] 文件名
选项:
-n: 行数,从结尾开始,显示指定行数
-f: 监听文件的新增内容
ln命令
- 命令名称:ln
- 英文原意:make links between file
- 所在路径:/usr/bin/ln
- 执行权限:所有用户
- 功能描述:在文件之间建立链接
[root@localhost~]# ln [选项] 源文件 目标文件
选项:
-s: 建立软链接,如果不加s,则建立硬链接
-f: 强制,如果目标文件已经存在,则删除目标文件后再建立链接文件
如果创建硬链接
[root@localhost~]# touch cangls
[root@localhost~]# ln /root/cangls /tmp/
#建立硬链接文件,目标文件没有写文件名,那么就和原名一致
#也就是说/root/cangls和/tmp/cangls是硬链接文件
如果创建软链接软链接文件的源文件必须写成绝对路径,硬链接则没有这样的要求
[root@localhost~]# touch bols
[root@localhost~]# ln -s /root/bols /tmp/
#建立软链接文件
硬链接和软链接
硬链接
[root@localhost ~]# touch test
#创建源文件
[root@localhost ~]# ln /root/test /tmp/test-hard
#给源文件建立硬链接文件/tmp/test-hard
[root@localhost ~]# ll -i /root/test /tmp/test-hard
395514 -rw-r--r-- 2 root root 0 Jul 12 16:09 /root/test
395514 -rw-r--r-- 2 root root 0 Jul 12 16:09 /tmp/test-hard
#查看两个文件的详细信息,发现这两个文件的inode号是一样的
每个文件的inode号都是不一样的,但是在硬链接的两个文件的i节点号是一样的。
![](https://ajin2610.oss-cn-nanjing.aliyuncs.com/ajin/硬链接的示意图.png)
- 在硬链接中不论是修改源文件还是修改硬链接文件,另一个文件的数据都会发生改变
- 不论是删除源文件还是删除硬链接文件,只要还有一个文件存在,这个文件都可以被访问
- 硬链接不会建立新的inode信息,也不会更改inode总数
- 硬链接不能跨文件系统(分区)建立,在不同的文件系统中,inode号是重新计算的
- 硬链接不能链接目录
软链接
[root@localhost ~]# touch check
#建立源文件
[root@localhost ~]# ln -s /root/check /tmp/check-soft
#建立软链接文件
[root@localhost ~]# ll -id /root/check /tmp/check-soft
395532 -rw-r--r-- 1 root root 0 Jul 12 16:49 /root/check
395539 lrwxrwxrwx 1 root root 11 Jul 12 16:50 /tmp/check-soft -> /root/check
#软链接和源文件的i节点号不一致,并且软链接通过 - > 来标识出源文件的位置
# 在软链接的权限位中lrwxrwxrwx,开头的l就代表软链接文件
软链接相较于硬链接更具有区分度,同时软链接限制也相对少一点,比如软链接可以链接目录,也可以跨分区来建立软链接
- 在软链接中不论是修改源文件还是修改软链接文件,另一个文件的数据都会发生改变
- 删除软链接文件,源文件不受影响。而删除源文件,软链接将找不到实际的数据,从而会显示文件不存在
- 软链接会建立自己的inode和block,只是软链接的block中不存储实际的文件数据,而是存储源文件的文件名及inode号
- 软链接可以链接目录
- 软链接可以跨分区
- 软链接特征明显
目录和文件都能操作的命令
rm命令
rm是强大的删除命令,文件和目录都可以删除。这个命令的基本信息如下:
- 命令名称:rm
- 英文原意:remove files or directories
- 所在路径:/usr/bin/rm
- 执行权限:所有用户
- 功能描述:删除文件或目录
[root@localhost~]# rm [选项] 文件或目录
选项:
-f: 强制删除(force)
-i: 交互删除,在删除之前询问用户
-r: 递归删除,可以删除目录(recursive)
cp命令
cp是用于复制命令,其基本信息如下:
- 命令名称:cp
- 英文原意:copy files and directories
- 所在路径:/usr/bin/cp
- 执行权限:所有用户
- 功能描述:复制文件和目录
[root@localhoat~]# cp [选项] 源文件 目标文件
选项:
-a: 相当于-dpr选项的集合
-d: 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接
-i: interactive询问,如果目标文件已存在,将会询问是否覆盖
-l: 把目标文件建立为源文件的硬链接文件,而不是复制原文件
-s: 把目标文件建立为源文件的软链接文件,而不是复制原文件
-p: 复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间)
-r: 递归复制,用于复制目录
mv命令
mv是用来移动文件的命令,其基本信息如下:
- 命令名称:mv
- 英文原意:move (rename) files
- 所在路径:/usr/bin/mv
- 执行权限:所有用户
- 功能描述:移动文件或改名
[root@localhoat~]# mv [选项] 源文件 目标文件
选项:
-f: 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖
-i: 交互移动,询问是否覆盖
-n: 如果目标文件已经存在,则不会覆盖移动,而且不询问用户
-v: 显示详细信息
权限管理命令
权限位的含义
[root@localhost ~]# ll
drwxr-xr-x. 2 root root 6 Jul 11 08:38 Desktop
权限位如果不计算最后的.(这个点表示该文件收SELinux保护),那么就只有10位
第一位代表文件类型
Linux不像Windows使用后缀名来标识文件类型,而是使用权限位的第一位表示文件类型,详细文件名可以使用info ls
来查看
- -:普通文件
- b:块设备文件,这是一种特殊设备文件,存贮设备都是这种文件,如分区文件/dev/sda1就是这种文件
- c:字符设备文件,这也是一种特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。
- d:目录文件,linux中一切皆文件,所以目录也是一种文件
- l:软连接文件
- p:管道符文件,这是一种极少见的特殊设备文件
- s:套接字文件,这也是一种特殊设备文件,一些服务支持Socket访问,就会产生这样的文件。
第2-4位代表文件所有者的权限
- r:代表read,是读取权限
- w:代表write,是写权限
- x:代表execute,是执行权限
如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限
第5-7位代表文件所属组的权限
- r:代表read,是读取权限
- w:代表write,是写权限
- x:代表execute,是执行权限
如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限
第8-10位代表其他人的权限
- r:代表read,是读取权限
- w:代表write,是写权限
- x:代表execute,是执行权限
如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限
基本权限的命令
chmod命令
修改权限信息的命令,其基本信息如下:
- 命令名称:chomd
- 英文原意:change file mode bits
- 所在路径:/usr/bin/chmod
- 执行权限:所有用户
- 功能描述:修改文件的权限模式
[root@localhost~]# chmod [选项] 权限模式 文件名
选项:
-R: 递归设置权限,也就是给予目录中的所有文件设定权限
普通用户可以修改所有者是自己的文件的权限
普通用户不能修改文件的所有者,哪怕文件是属于自己的。只有root才能修改文件所有者。
权限模式
chmod 命令的权限模式的格式是[ugoa] [[±=] [perms]],也就是[用户身份] [[赋予方式] [权限]]的格式,我们来解释一下。
🎈用户身份:
- -u:代表所有者(user)
- -g:代表所属组(group)
- -o:代表其他人(other)
- -a:代表全部身份(all)
🎈赋予方式:
- +:加入权限
- -:减去权限
- =:设置权限
🎈权限:
- -r:读取权限(read)
- -w:写入权限(write)
- -x:执行权限(execute)
😊数字权限:
数字权限的赋予方式是最简单的,但是不如之前的字母权限好记、直观。
- 4:代表r读取
- 2:代表w写入
- 1:代表x执行
😊常用权限:
数字权限的赋予方式更加简单,但是需要用户对这几个数字更加熟悉。其实常用权限也并不多,只有如下几个:
- 644:这是文件的基本权限,代表所有者拥有读写权限,而所属组和其他人只能读
- 755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限。
- 777:这是最大权限,要尽力避免给文件或目录赋予这种权限,会存在安全隐患
基本权限的含义
首先,读,写,执行权限对文件和目录的作用是不同的
权限对文件的作用
- 读(r):对文件有读的权限,代表可以读取文件的数据。如果把权限对应到命令上,那么一旦对文件有读的权限,就可以对文件执行cat、more、less、head、tail等命令查看文件内容
- 写(w):对文件有写的权限,代表可以修改文件的数据,如果把权限对应到命令上,那么一旦对文件有写的权限,就可以对文件执行vim、echo等修改文件数据的命令。但是对文件有写的权限并不能删除文件,要对文件的上级目录有写的权限
- 执行(x):对文件有执行权限,代表文件拥有执行权限,可以运行。在linux中,只要文件有执行权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,不仅需要x权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行权限是最高权限。
权限对目录的作用
- 读(r):对目录有读的权限,代表可以看看目录下的内容,也就是可以查看目录下有哪些子目录和子文件。如果把权限对应到命令上,那么一旦对目录拥有了读权限,就可以在目录下执行ls命令,查看目录下的内容
- 写(w):对目录有写权限,代表可以修改目录下的数据,也就是可以在目录中新建、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写权限,就可以在目录下执行 touch、rm、cp、mv 命令。对目录来说,写权限是最高权限。
- 执行(x):目录是不能运行的,对目录有了执行权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行,就可以对目录cd,进入目录
执行权限对于目录来说是必需的,所以目录的权限只有0、5、7三种
所有者和所属组命令
chown
chown可以修改文件和目录的所有者和所属组,其基本信息如下:
- 命令名称:chown
- 英文原意:change file owner and group
- 所在路径:/usr/bin/chown
- 执行权限:所有用户
- 功能描述:修改文件和目录的所有者和所属组
[root@local~]# chown [选项] 所有者:所属组 文件或目录
选项
-R: 递归设置权限,也就是给子目录中的所有文件设置权限
普通用户可以修改所有者是自己的文件的权限。
但是普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行。
chgrp
chgrp是修改文件和目录的所属组的命令,其基本信息如下:
- 命令名称:chgrp
- 英文原意:change group ownership
- 所在路径:/usr/bin/chown
- 执行权限:所有用户
- 功能描述:修改文件和目录的所属组
[root@local~]# chgrp user file
#将文件file的所属组改为user
umask默认权限
默认八进制显示; -S 用字母表示;
先了解一下新建文件和目录的默认最大权限。
-
对文件来讲,新建文件的默认最大权限是666,没有执行权限。这是因为执行权限对文件来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予。
-
对目录来讲,新建目录的默认最大权限是777。这是因为对目录而言,执行权限仅仅代表进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险
按照官方的标准算法,umask默认权限需要使用二进制进行逻辑与和逻辑非联合运算才可以得到正确的新建文件和目录的默认权限。这种方法既不好计算,也不好理解
这里还是按照权限字母来讲解umask权限的计算方法。超级用户的umask值为002,我们就按照普通用户默认的umask值是022来分别计算一下新建文件和目录的默认权限吧:
- 文件的默认权限最大只能是666,而umask的值是022
-rw-rw-rw- 减去 -----w–w- 等于-rw-r–r–
- 目录的默认权限最大可以是777,而umask的值是022
drwxrwxrwx 减去 d----w–w- 等于 drwx-r-xr-x
注意:umask默认权限的计算绝不是数字直接相减。
例如umask是033呢?
文件的默认权限最大只能是666,而umask的值是033
如果直接数字加减,那么权限是633,而3不可能出现在权限数字里
-rw-rw-rw-减去-----wx-wx等于-rw-r–r—
帮助命令
man命令
man是最常见的帮助命令,也是Linux最主要的帮助命令,其基本信息如下:
- 命令名称:man
- 英文原意:format anddisplay the on-line manual pages
- 所在路径:/usr/bin/man
- 执行权限:所有用户
- 功能描述:显示联机帮助手册
[root@localhost~]# man [选项] 命令
选项:
-f:查看命令拥有哪个级别的帮助
-k:查看和命令相关的所有帮助
快捷键 | 作用 |
---|---|
上箭头 | 向上移动一行 |
下箭头 | 向下移动一行 |
PgUp | 向上翻一页 |
PgDn | 向下翻一页 |
g | 移动到第一页 |
G | 移动到最后一页 |
q | 退出 |
/字符串 | 从当前页向下搜索字符串 |
?字符串 | 从当前页向上搜索字符串 |
n | 当搜索字符串时,可以使用n键找到下一个字符串 |
N | 当搜索字符串时,使用N键反向查询字符串,就是/为向上搜索,?为向下搜索 |
man命令帮助的级别
级别 | 作用 |
---|---|
1 | 普通用户可以执行的系统命令和可执行文件的帮助 |
2 | 内核可以调用的函数和工具的帮助 |
3 | C语言函数的帮助 |
4 | 设备和特殊文件的帮助 |
5 | 配置文件的帮助 |
6 | 游戏的帮助 |
7 | 杂项的帮助 |
8 | 超级用户可以执行的系统命令的帮助 |
9 | 内核的帮助 |
info命令
info命令也可以获得命令的帮助,但是info帮助的信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一个小章节
快捷键 | 作用 |
---|---|
上箭头 | 向上移动一行 |
下箭头 | 向下移动一行 |
PgUp | 向上翻一页 |
PgDn | 向下翻一页 |
Tab | 再有*符号的节点间进行切换 |
Enter | 进入有*符号的子页面,查看详细帮助信息 |
u | 进入上一层信息,(回车是进入下一层信息) |
n | 进入下一小节信息 |
p | 进入上一小节信息 |
? | 查看帮助信息 |
q | 退出 |
help命令
help只能获取shell内置命令的帮助,其基本信息如下:
- 命令名称:help
- 英文原意:help
- 所在路径:shell内置命令
- 执行权限:所有用户
- 功能描述:显示shell内置命令的帮助
[root@localhost~]# help 内置命令
可以用type区分内置命令与外部命令
–help命令
绝大多数命令都可以使用“–help”选项来查看帮助,这也是一种获取帮助的方法。
输出的帮助信息基本上是man命令的信息简要版
搜索命令
whereis命令
是搜索系统命令的命令,也就是说whereis不能搜索普通文件,而只能搜索系统命令,其基本信息如下:
- 命令名称:whereis
- 英文原意:locate the binary, source, and manual page files for a command
- 所在路径:/usr/bin/whereis
- 执行权限:所有用户
- 功能描述:查找二进制命令,源文件和帮助文档的命令
[root@localhost~]# where [选项] 命令
选项:
-b:只查找二进制命令
-m:只查找帮助文档
which命令
which也是搜索系统命令的命令,和whereis命令的区别在于:
- whereis命令可以在查找到二进制命令的同时,查找到帮助文档的位置;
- 而which命令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令
- 命令名称:which
- 英文原意:shows the full path of (shell) commands
- 所在路径:/usr/bin/which
- 执行权限:所有用户
- 功能描述:列出命令的所在路径
[root@localhost~]# which ls
alias ls='ls --color=auto'
/bin/ls
locate命令
locate命令才是可以按照文件名搜索普通文件的命令,其基本信息如下:
- 命令名称:locate
- 英文原意:find files by name
- 所在路径:/usr/bin/locate
- 执行权限:所有用户
- 功能描述:按照文件名搜索文件
[root@localhost~]# locate [选项] 文件名
选项:
-i:忽略大小写
-
优点:按照数据库搜索,搜索速度快,消耗资源小。数据库位置/var/lib/mlocate/mlocate.db,可以使用updatedb命令强制更新数据库。
-
缺点:只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照权限、大小、修改时间等搜索文件。
在locate查找文件时,一些新建的文件有可能查找不到,因为locate命令只在数据库中查找,所以要更新数据库updatedb
。
在linux中,locate命令默认没有必要搜索一些类似网盘、光盘、临时目录的目录。
find命令
find是linux中十分强大的命令,可以通过各种方式在硬盘中搜索文件,其基本信息如下:
- 命令名称:find
- 英文原意:search for files in a directory hierarchy
- 所在路径:/usr/bin/find
- 执行权限:所有用户
- 功能描述:在目录中搜索文件
按照文件名搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-name: 按照文件名搜索
-iname: 按照文件名搜索,不区分文件名大小写
-inum: 按照 inode 号搜索
按照文件大小搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-size [+|-]大小: 按照指定大小搜索文件
这里的“+”的意思是搜索比指定大小还要大的文件,“-”的意思是搜索比指定大小还要小的文件。
find 命令的单位:
[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
按照修改时间搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-atime [+|-]时间: 按照文件访问时间搜索
-mtime [+|-]时间: 按照文件数据修改时间搜索
-ctime [+|-]时间: 按照文件状态修改时间搜索
这三个时间的区别我们在 stat 命令中已经解释过了,
这里用 mtime 数据修改时间来举例,重点说说“[+-]”时间的含义。
-5: 代表 5 天内修改的文件。
5: 代表前 5~6 天那一天修改的文件。
+5: 代表 6 天前修改的文件。
![](https://ajin2610.oss-cn-nanjing.aliyuncs.com/ajin/linux%20find命令.png)
按照权限搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-perm 权限模式: 查找文件权限刚好等于“权限模式”的文件
-perm -权限模式: 查找文件权限全部包含“权限模式”的文件
-perm +权限模式: 查找文件权限包含“权限模式”的任意一个权限的文件
按照所有者和所属组搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-uid 用户 ID: 按照用户 ID 查找所有者是指定 ID 的文件
-gid 组 ID: 按照用户组 ID 查找所属组是指定 ID 的文件
-user 用户名: 按照用户名查找所有者是指定用户的文件
-group 组名: 按照组名查找所属组是指定用户组的文件
-nouser: 查找没有所有者的文件
🤡 按照所有者和所属组搜索时,“-nouser”选项比较常用,主要用于查找垃圾文件。只有一种情况例外,那就是外来文件。比如光盘和 U 盘中的文件如果是由 Windows 复制的,在Linux中查看就是没有所有者的文件;再比如手工源码包安装的文件,也有可能没有所有者
按照文件类型搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-type d: 查找目录
-type f: 查找普通文件
-type l: 查找软链接文件
逻辑运算符搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-a: and 逻辑与
-o: or 逻辑或
-not: not 逻辑非
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
#在当前目录下搜索文件名不是 cangls 的文件
-exec和-ok选项
1)-exec 选项
这里我们主要讲解两个选项“-exec”和“-ok”,这两个选项的基本作用非常相似。我们先来看
看“-exec”选项的格式。
[root@localhost ~]# find 搜索路径 [选项] 搜索内容 -exec 命令 2 {} \;
其次,这个选项的作用其实是把 find 命令的结果交给由“-exec”调用的命令 2 来处理。“{}”就
代表 find 命令的查找结果。
2)-ok 选项
“-ok”选项和“-exec”选项的作用基本一致,区别在于:“-exec”的命令 2 会直接处理,而不询
问;“-ok”的命令 2 在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行。
grep命令
在文件中提取和匹配符合条件的字符串行,其基本信息如下:
- 命令名称:grep
- 英文原意:Globally search a Regular Expression and Print
- 所在路径:/usr/bin/grep
- 执行权限:所有用户
- 功能描述:文件中提取和匹配符合条件的字符串行
[root@localhost ~]# grep [选项] "搜索内容" 文件名
选项:
-i: 忽略大小写
-n: 输出行号
-v: 反向查找
--color=auto: 搜索出的关键字用颜色显示
find和grep的区别
-
find命令
find命令用于在系统中搜索符合条件的文件名,如果需要模糊查询,则使用通配符进行匹配。搜索时文件名是完全匹配的(find命令可以通过-regex选项,把匹配规则转为正则表达式规则,但是不建议如此)。
-
grep命令
grep命令用于在文件中搜索匹配符合要求的字符串,如果需要模糊查询,则使用正则表达式进行匹配,搜索是字符串是包含匹配的。
通配符和正则表达式的区别
通配符:用于匹配文件名,完全匹配
通配符 | 作用 |
---|---|
? | 匹配一个任意字符 |
* | 匹配0个或任意多个任意字符,也就是可以匹配任何内容 |
[] | 匹配中括号中任意一个字符,例如,[abc]就是匹配abc中的任意一个字符 |
[-] | 匹配中括号中任意一个字符,-代表一个范围,例如,[a-z]表示匹配a-z中的任意一个字符 |
[^] | 逻辑非,表示匹配不是中括号中的一个字符 |
正则表达式:用于匹配字符串,包含匹配
正则符 | 作用 |
---|---|
? | 匹配一个字符重复0次,或1次 |
* | 匹配前一个字符重复0次,或任意多次 |
[] | 匹配中括号中任意一个字符,例如,[abc]就是匹配abc中的任意一个字符 |
[-] | 匹配中括号中任意一个字符,-代表一个范围,例如,[a-z]表示匹配a-z中的任意一个字符 |
[^] | 逻辑非,表示匹配不是中括号内的一个字符 |
^ | 匹配行首 |
$ | 匹配行尾 |
压缩和解压缩命令
在Linux中不以后缀名来区分文件,后缀名主要用来帮助管理员区分压缩格式
.zip
不常见
压缩 zip
压缩命令就是zip,其基本信息如下:
- 命令名称:zip
- 英文原意:package and compress (archive) files。
- 所在路径:/usr/bin/zip
- 执行权限:所有用户
- 功能描述:压缩目录或文件
[root@localhost ~]# zip [选项] 压缩包名 源文件或源目录
选项:
-r: 压缩目录
例子:
[root@localhost ~]# zip ana.zip anaconda-ks.cfg
解压 unzip
".zip"格式的解压缩命令是unzip,其基本信息如下:
- 命令名称:unzip
- 英文原意:list,test and extract compressed files in a ZIP archive
- 所在路径:/usr/bin/unzip
- 执行权限:所有用户
- 功能描述:列表、测试和提取压缩文件中的文件
[root@localhost~]# unzip [选项] 压缩包名称
选项:
-d: 指定解压缩位置
例子:
[root@localhost~]# unzip -d /tmp/ ana.zip
.gz
不会打包
压缩gzip
使用gzip命令进行压缩,其基本信息如下:
- 命令名称:gzip
- 英文原意:compress or expand files
- 所在路径:/usr/bin/gzip
- 执行权限:所有用户
- 功能描述:压缩文件或目录
[root@localhost~]# gzip [选项] 源文件
选项:
-c: 将压缩数据输出到标准输出中,可以用于保留源文件
-d: 解压缩
-r: 压缩目录
例子:
[root@localhost ~]# gzip -c anaconda-ks.cfg > anaconda-ks.cfg.gz
#使用-c 选项,但是不让压缩数据输出到屏幕上,而是重定向到压缩文件中
#这样可以在压缩文件的同时不删除源文件
解压缩 gunzip
如果要解压缩“.gz”格式,那么使用“gzip -d 压缩包”和“gunzip 压缩包”命令都可以。其基本信息如下:
- 命令名称:gunzip
- 英文原意:compress or expand files
- 所在路径:/usr/bin/gunzip
- 执行权限:所有用户
- 功能描述:解压缩文件或目录
例子:
[root@localhost ~]# gunzip install.log.gz
[root@localhost ~]# gzip -d anaconda-ks.cfg.gz
两个命令都可以解压缩“.gz”格式
.bz2
不能压缩目录
压缩bzip2
- 命令名称:bzip2
- 英文原意:a block-sorting file compressor
- 所在路径:/usr/bin/bzip2
- 执行权限:所有用户
- 功能描述:.bz2 格式的压缩命令
[root@localhost ~]# bzip2 [选项] 源文件
选项:
-d: 解压缩
-k: 压缩时,保留源文件
-v: 显示压缩的详细信息
例如:
[root@localhost ~]# bzip2 anaconda-ks.cfg
#压缩成.bz2 格式
[root@localhost ~]# bzip2 -k install.log.syslog
#保留源文件压缩
解压缩bunzip2
- 命令名称:bunzip2
- 英文原意:a block-sorting file compressor。
- 所在路径:/usr/bin/bunzip2
- 执行权限:所有用户
- 功能描述:.bz2 格式的解压缩命令
[root@localhost ~]# bunzip2 anaconda-ks.cfg.bz2
[root@localhost ~]# bzip2 -d install.log.syslog.bz2
#两个命令都可以解压缩
.tar
只打包
打包
- 命令名称:tar
- 英文原意:tar
- 所在路径:/usr/bin/tar
- 执行权限:所有用户
- 功能描述:打包与解包命令
[root@localhost ~]# tar [选项] [-f 压缩包名] 源文件或目录
选项:
-c: 打包
-f: 指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名
-v: 显示打包文件过程
[root@localhost ~]# tar -cvf anaconda-ks.cfg.tar anaconda-ks.cfg
#打包,不会压缩
解包
[root@localhost ~]# tar [选项] 压缩包
选项:
-x: 解打包
-f: 指定压缩包的文件名
-v: 显示解打包文件过程
-t: 测试,就是不解打包,只是查看包中有哪些文件
-C(大) 目录:指定解打包位置
例如
[root@localhost ~]# tar -xvf anaconda-ks.cfg.tar
#解打包到当前目录下
.tar.gz和.tar.bz2
使用 tar 命令直接打包压缩。
命令格式如下:
[root@localhost ~]# tar [选项] 压缩包 源文件或目录
选项:
-z: 压缩和解压缩“.tar.gz”格式
-j: 压缩和解压缩“.tar.bz2”格式
例如:.tar.gz 格式
[root@localhost ~]# tar -zcvf tmp.tar.gz /tmp/
#把/tmp/目录直接打包压缩为“.tar.gz”格式
[root@localhost ~]# tar -zxvf tmp.tar.gz
#解压缩与解打包“.tar.gz”格式
例如:.tar.bz2 格式
[root@localhost ~]# tar -jcvf tmp.tar.bz2 /tmp/
#打包压缩为“.tar.bz2”格式,注意压缩包文件名
[root@localhost ~]# tar -jxvf tmp.tar.bz2
#解压缩与解打包“.tar.bz2”格式
再举几个例子:
[root@localhost ~]# mkdir test
[root@localhost ~]# touch test/abc
[root@localhost ~]# touch test/bcd
[root@localhost ~]# touch test/cde
#建立测试目录和测试文件
[root@localhost ~]# tar -zcvf test.tar.gz test/
#压缩
[root@localhost ~]# tar -ztvf test.tar.gz
#只查看,不解压
[root@localhost ~]# tar -zxvf test.tar.gz -C /tmp
#解压缩到指定位置
[root@localhost ~]# tar -zxvf test.tar.gz -C /tmp test/cde
#只解压压缩包中的特定文件,到指定位置
关机和重启的命令
sync数据同步
- 命令名称:sync
- 英文原意:flush file system buffers
- 所在路径:/bin/sync
- 执行权限:所有用户
- 功能描述:刷新文件系统缓冲
shutdown命令
- 命令名称:shutdown
- 英文原意:bring the system down
- 所在路径:/sbin/shutdown
- 执行权限:超级用户
- 功能描述:关机和重启
[rootlocalhost~]# shutdown [选项] 时间 [警告信息]
选项:
-c: 取消已经执行的shutdown命令
-h: 关机
-r: 重启
reboot命令
[rootlocalhost~]# reboot
#重启
halt和poweroff命令
这两个都是关机命令,直接使用即可,但是这两个命令不会完整关闭和保存系统的服务,不建议使用
[rootlocalhost~]# halt
[rootlocalhost~]# poweroff
#关机
init命令
init是修改linux运行级别的命令,也可以用于关机和重启。这个命令并不安全,不建议使用。
[rootlocalhost~]# init 0
[rootlocalhost~]# init 6
#调用系统的0级别和6级别,分别表示关机和重启
常用网络命令
配置ip地址
ip地址是计算机在互联网中唯一的地址编码。每台计算机如果需要接入网络和其他计算机进行数据通信,就必须配置唯一的公网IP地址
配置ip地址有两种方法:
-
setup工具
-
vim /etc/sysconfig/network-scripts/ifcfg-eth0
手工修改配置文件配置完成后使用
service network restart
重启网络服务对于复制镜像有可能需要重置UUID(唯一识别符)
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 #删除 MAC 地址行 也就是HWADDR行 [root@localhost ~]# rm -rf /etc/udev/rules.d/70-persistent-net.rules #删除 MaC 地址和 UUID 绑定文件 [root@localhost ~]# reboot #重启 Linux
ifconfig命令
最主要的作用就是查看 IP 地址的信息,直接输入 ifconfig 命令即可
- 命令名称:ifconfig
- 英文原意:configure a network interface
- 所在路径:/sbin/ifconfig
- 执行权限:超级用户
- 功能描述:配置网络接口
[root@localhost ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
#标志 最大传输单元
inet 192.168.252.20 netmask 255.255.255.0 broadcast 192.168.252.255
#IP 地址 子网掩码 广播地址
inet6 fe80::546e:994b:30c:e2f7 prefixlen 64 scopeid 0x20<link>
#IPv6 地址(目前没有生效)
ether 00:0c:29:aa:d2:96 txqueuelen 1000 (Ethernet)
#MAC 地址
RX packets 3728 bytes 310958 (303.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
#接收的数据包情况
TX packets 3051 bytes 1495119 (1.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#发送的数据包情况
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
#本地回环网卡
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 8 bytes 696 (696.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8 bytes 696 (696.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ping命令
主要通过ICMP协议进行网络探测,测试网络中主机的通信情况。ping命令的基本信息如下:
- 命令名称:ping
- 英文原意:send ICMP ECHO_REQUEST to network hosts
- 所在路径:/bin/ping
- 执行权限:所有用户
- 功能描述:向网络主机发送ICMP请求
[root@localhost ~]# ping [选项] IP
选项:
-b:后面加入广播地址,用于对整个网段进行探测
-c 次数:用于指定ping的次数
-s 字节:指定探测包的大小
例如可以使用“-b”选项,后面加入广播地址,探测整个网段有多少主机是可以和我们通信
[root@localhost ~]# ping -b -c 3 192.168.103.255
#探测192.168.103.0/24网段有多少主机是可以和我们通信
ss命令
ss是网络状态查看命令,既可以查看到本机开启的端口,也可以查看有哪些客户端连接。
- 命令名称:ss
- 英文原意:another utility to investigate sockets
- 所在路径:/usr/sbin/ss
- 执行权限:超级用户
- 功能描述:查询网络访问
[rootlocalhost~]# ss [选项]
选项:
-a:列出所有网络状态,包括Socket程序
-n:使用IP地址和端口号显示,不使用域名与服务名
-p:显示PID和程序名
-t:显示使用TCP协议端口的连接状况
-u:显示使用UDP协议端口的连接状况
-l:代表查看监听状态
例子
#查看本机所有网络连接
[root@localhost ~]# ss -an
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
nl UNCONN 0 0 0:1031 *
nl UNCONN 0 0 0:0 *
nl UNCONN 0 0 0:1031 *
nl UNCONN 4352 0 4:1680 *
nl UNCONN 768 0 4:0 *
nl UNCONN 0 0 6:0 *
nl UNCONN 0 0 7:0 *
nl UNCONN 0 0 7:818 *
nl UNCONN 0 0 7:1 *
nl UNCONN 0 0 7:818 *
nl UNCONN 0 0 7:1 *
nl UNCONN 0 0 9:1 *
nl UNCONN 0 0 9:0 *
···省略部分内容···
#协议 状态 接收队列 发送队列 本机IP地址和端口号 远程IP地址和端口号
例子
#查看本机开启的端口
[root@localhost ~]# ss -tuln
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:68 *:*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 100 127.0.0.1:25 *:*
tcp LISTEN 0 128 [::]:22 [::]:*
tcp LISTEN 0 100 [::1]:25 [::]:*
#协议 状态 接收队列 发送队列 本机IP地址和端口号 远程IP地址和端口号
例子
#查看本机开启的端口与正在进行的连接
[root@localhost ~]# ss -tuan
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:68 *:*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 100 127.0.0.1:25 *:*
tcp ESTAB 0 36 192.168.133.135:22 192.168.133.1:1509
#ESTAB 状态,代表这个连接正在进行。也就是133.1通过1509端口正在连接133.135的22端口
tcp LISTEN 0 128 [::]:22 [::]:*
tcp LISTEN 0 100 [::1]:25 [::]:*