Linux操作系统基础知识1
第一章 简单使用Linux
1.1 shell命令提示符
例:
root :当前登录的账户名,root为管理员
server2:主机名,默认为localhost,此处我改成了server2
~ :该位置表示当前工作目录,~表示/root
提示符标志:#或
,表示账户身份。#表示root,
表示普通账户。
1.2 使用命令操作Linux系统
在终端窗口上输入命令,命令的格式:主命令 参数 操作对象
操作前,建议关闭网卡统一命名,变回 eth0、eth1、eth2,所有机器网卡命名规则一致,不用每次查网卡名称。
输入指令ip a,查看当前网卡接口名为ens33。
输入指令vim /boot/grub2/grub.cfg,在第100行代码的末尾加上net.ifnames=0,编辑完成后保存退出。
重连后再查看IP,此时网卡已经变成eth0。
1.2.1 切换目录——cd
例:输入指令cd /root切换到root 用户的家目录,专属超级管理员 root 的个人目录,只有 root 用户能完整读写。登录 root 后直接输 cd 不加参数,等价于 cd /root。
例:输入指令cd /切换到根目录,是系统最顶层,包含 boot、etc、root、home 等所有文件夹。
补充:
. 表示当前目录
. .表示上一级目录
./xxx代表当前目录下的 xxx 文件 / 文件夹
1.2.2 查看当前的工作目录——pwd
输入指令pwd,可看到当前工作在根目录。
1.2.3 浏览目录内容——ls
输入指令ls,可以查询当前目录下的所有内容。
1.3 重置root密码(rd.break方法)
第1步:重启虚拟机,在此界面按↑或↓键停止倒计时,按“e”键进入编辑。
第2步:找到刚刚加入的net.ifnames=0,在后面加上rd.break,按CTRL+x启动。
系统进入如下图所示的紧急模式。
第3步:以读写方式挂载/sysroot。
第4步:设置新密码。
第5步:输入两次exit退出。
等待重启,输入新密码即可登录。
第二章 Linux中执行命令
2.1 命令格式
主命令 参数 操作对象
对于命令的语法的一些符号的说明:
[] :表示的是可选
…: 表示的可以存在多个参数
|:表示是可选的
<>:必填
{}:表示作为一个整体存在的
2.2 查看命令帮助
2.2.1 查看bash内部命令帮助

2.2.2 命令–help

2.2.3 命令man
man命令用来提供在线帮助,使用权限是所有用户。使用man命令可以调阅其中的帮助信息。
2.2.4 命令info
info与man的用途相同,都是用来查询命令的用法或者是文件的格式。不同的是,info是将文件数据拆成一个一个的段落,每个段落用自己的页面来撰写, 并且在各个页面中还有类似网页的超链接来跳到各不同的页面中,每个独立的页面也被称为一个节点。
2.3 命令date
date命令用于显示或设置系统的时间与日期。
格式:date -参数 +显示日期时间格式参数
常见参数:
| 参数 | 作用 |
|---|---|
| %Y | 完整年份(例如:2020) |
| %m | 月份(1~12) |
| %d | 本月中的第几天 |
| %H | 小时(00~23) |
| %M | 分钟(00~59) |
| %j | 今年中的第几天 |
| %X | 相当于%H:%M:%S |
| %Z | 显示时区 |
| %A | 星期几 (Sunday-Saturday) |
| %p | 显示本地AM或PM |
例:
2.4 命令timedatectl
timedatectl命令用于设置系统的时间,英文全称为time date control。
例:
可用指令timedatectl set-timezone Asia/Shanghai设置时区,再用指令timedatectl status查看系统时间与时区:
2.5 命令cal
cal 年份,显示这一年的日历。
cal 月份 年份,显示某年某月的日历。
2.6 命令ls
命令ls用于查看目录下的内容,格式:ls -参数 操作对象
参数
| 参数 | 功能 |
|---|---|
| -l | 以长格形式显示文件和目录的详细信息,ls命令默认只显示名称的短格式。 |
| -d | 显示指定目录本身的信息,而不显示目录下的各个文件和子目录的信息。 |
| -c | 按文件的修改时间排序后,予以显示。 |
| -h | 以更人性化的方式显示出目录或文件的大小,默认的大小单位为字节,使用-h选项后将显示为K、M等单位。此选项需要和-l选项结合使用才能体现出结果。 |
| -R | 以递归的方式显示指定目录及其子目录中的所有内容。 |
| -a | 显示所有子目录和文件的信息,包括名称以“.”开头的隐藏目录和隐藏文件。 |
| -A | 与-a选项的作用类似,但不显示表示当前目录的“.”和表示父目录的“…”。 |
| -i | 显示文件索引节点号(inode)。一个索引节点代表一个文件,在linux中保存在磁盘分区中的文件都给它分配一个编号,称为索引节点号inode。 |
| -s | 按照文件大小排序 |
执行 ll = 执行 ls -l
提示:-R会消耗CPU,故一般不建议用。
也可两个参数合并简写,如:ls -dl /root 表示以长格式,只查看目录自身信息,不列出目录内文件。
例:
ls浏览后颜色表示:
- 白色:普通文件
- 蓝色:目录
- 红色:压缩包文件
- 黄色:设备文件
- 绿色:可执行文件
第三章 linux文件类型和根目录结构
根目录底下的文件最好不要动,大概率会影响系统运行。
3.1 Linux文件类型
| 第一个字符 | 文件类型 | 说明 |
|---|---|---|
| - | 普通文件 | 类似于Windows的记事本 |
| d | 目录文件 | 类似于windows文件夹 |
| c | 字符设备文件 | 串行端口设备,顺序读写,键盘 |
| b | 块设备文件 | 可供存储的接口设备,随机读写,硬盘 |
| p | 管道文件 | 用于进程间的通信 |
| s | 套接字文件 | 通常用于网络上的通信。可以启动一个程序来监听客户端的要求,客户端可以通过套接字来进行数据通信 |
| l | 符号链接又叫软链接,和原文件不是一个文件 | 例如Windows的快捷方式,如果原始文件被删除,所有指向它的符号链接也就都被破坏了。软链接有自己的node,是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径。符号链接可以跨越文件系统,也可以为目录建立。 |
| 硬链接 | 只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为inode)。当移动或者删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在件结构中的位置。 |
3.2 Linux系统的目录结构
3.2.1 Linux目录结构的特点
Linux使用树形目录结构来组织和管理文件。整个系统只有一个根目录(树根),用“/”表示。其他所有分区以及外部设备(如硬盘、光驱等)都是以根目录为起点,挂接在目录树的某个目录中的,通过访问挂载点目录,即可实现对这些分区的访问。
常见目录用途
| 文件名 | 描述 |
|---|---|
| / | Linux文件系统的最上层根目录,其他所有目录均是该目录的子目录 |
| /boot | 存放系统启动时所需的文件,这些文件若损坏常会导致系统无法启动,一般不要改动 |
| /root | 超级用户的个人目录,普通用户没有权限访问 |
| /home | 存放一般用户的个人目录 |
| /bin | Binary的缩写,存放普通用户可执行的程序或命令 |
| /sbin | 和/bin类似,这些文件往往用来进行系统管理,只有root可使用 |
| /lib | 是库(library)英文缩写,存放系统的各种库文件 |
| /lib64 | 存放系统本身需要用到64位程序的共享函数库(library) |
| /usr | 一般用户程序安装所在的目录,用于安装各种应用程序 |
| /opt | 该目录通常提供给较大型的第三方应用程序使用,例如Sun Staroffice、Corel WordPerfect,这可避免将文件分散至整个文件系统 |
| /etc | 存放了系统管理时要用到的各种配置文件和子目录 |
| /var | 通常各种系统日志文件放在这里 |
| /run | 保存自系统启动以来描述系统信息的文件 |
| /dev | dev 是设备(device)的英文缩写。包含所有的设备文件 |
| /mnt和/media | 可以临时将别的文件系统挂在这个目录下,即为其他的文件系统提供安装点 |
| /tmp | 用来存放不同程序执行时产生的临时文件 |
| /srv | srv 是服务(server)的简写,服务启动之后需要访问的数据目录 |
| /sys | 本目录是将内核的一些信息映射文件,以供应用程序所用 |
| /proc | 可以在这个目录下获取系统信息 |
3.2.2 路径以及工作目录
3.2.2.1 路径
路径表示某个文件(或目录)在目录结构中所处的位置,指从树型目录中的某个目录层次到达某一文件或子目录的一条线路,由以“/”为分隔符的多个目录名构成。
路径可分为绝对路径和相对路径。
绝对路径是指以根目录“/”为起点来表示系统中某个文件(或目录)的位置的方式。
相对路径是以当前目录为起点,表示系统中某个文件或目录在目录结构中的位置的方式。
例:图中红色方框中的指令为相对路径,蓝色方框为绝对路径。cd -为快速切换回上一次所在的目录。可以看到两条指令指向同一个目录。
3.2.2.2 工作目录
使用pwd命令查看用户当前所处的位置。
使用cd命令更改当前的工作目录,即切换目录。
详情可见本文1.2.1和1.2.2。
第四章 从命令行管理文件
4.1文件命名规则
1.不能使用/来当文件名,/是用来做根的,也是用来做路径分隔符的。
2.文件名不能超过255个字符。
3.区分大小写file File FILE fIle root Root ROOT rOOt ROOT。
4.目录也是文件,在同一路径下,两个不同类型文件不能同名。
4.2 创建链接文件
4.2.1 硬链接
4.2.1.1 原理
Linux系统允许多个文件指向同一个inode,即允许一个文件拥有多个有效地路径名,是指向原始文件inode的指针。
4.2.1.2 查看方法
ll 文件名 或 stat 文件名
例:
可以看到此时链接数为1。
4.2.1.3 建立硬链接
格式:ln -参数 源文件 目标链接文件
例:链接建立后再次查看,此时链接数为2.。
注意:
1.硬链接建立后,删除源文件后数据依然可以访问,只有硬链接为0时,数据就无法访问了。
2.硬链接不能给目录建立。
3.不可以在不同的文件系统内建立硬链接,由于inode是当前文件在本文件系统的索引值即只能在本分区使用,所以硬链接不能跨越文件系统。
使用指令查看建立硬链接的两个文件对应的incode编号,发现其编号相同,访问其中任何一个文件,其底层磁盘映射的位置是相同的。
4.2.2 软链接
4.2.2.1 原理
软链接是一种符号连接,类似于windows的快捷方式,仅包含所链接的路径名。
4.2.2.2 建立软链接
格式:ln -s 源文件 目标连接名
例:
从中可以看出m2文件与m1文件编码不同。
例:
注意:目标链接名必须是存在的,否则无法生效。
此时找到正确的位置,重新建立软链接即可。
注意:软链接只是一种指向关系,删除软链接,只是删除指向关系,源数据依然可以访问,删除源文件则数据不可访问。
4.2.3 软硬链接的区别
1.硬链接中源文件与链接文件公用一个inode号,是同一个文件,软链接中源文件与链接文件拥有不同inode号,是2个不同的文件。
2.软链接的指向关系可以查看,硬链接不可以查看。
3.链接数不同,硬链接数会增加,软链接数不会增加。
4.文件大小不同,硬链接文件大小与源文件一样。
5.软链接不受任何文件系统的影响,任何用户都可以创建指向目录的软链接。
4.3 目录操作命令
4.3.1 创建目录
格式:mkdir [-p] [/路径/] 目录名
例:创建一个名为dir1的目录。
例:在dir1目录下创建多级子目录,可用tree指令查看,tree指令的详细用法见4.4.2。
注意:rm -f只删除文件、软链接,不能删文件夹,rm -fr可递归强制删除。
4.3.2 du命令
格式: du [参数] [目录名]
参数:
| 选项 | 功能 |
|---|---|
| -a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录。 |
| -s | 只统计每个文件所占用空间总的大小,而不是统计每个子目录、文件的大小。 |
| -h | 以K,M,G为单位显示磁盘使用情况,以提高信息的可读性。 |
例:
注意:/boot/代表/boot 目录本身,完整目录对象。/boot/*代表目录下所有一级文件、子文件夹(不含隐藏文件),不包含 /boot 目录本身。
4.4 新建文件
4.4.1 touch创建普通文件
如果文件已存在,stat可以查看文件的详细信息。
例:
access:访问文件的时间,查看文件内容(cat)会更新
modify:修改内容的时间,文件内容被改变了会更新
change:修改文件元数据的时间
若文件不存在,则用touch创建文件。
格式:
touch 文件名1 文件名2 文件名3
touch {文件名1,文件名2,文件名3}
例:
touch p1.txt
touch p2.txt p3.txt p4.txt
touch {p5,p6,p7}.txt
touch abc {1…100}创建abc1,abc2,…,abc99,abc100。
4.4.2 tree命令
tree命令用于显示目录下文件的树形拓扑图及摘要。
格式:== tree 参数 路径==
参数
-a : 所有文件包含显示隐藏文件
-f : 列出文件的完整路径内容
-d :只显示目录
-L : 设置显示最大深度,如:tree -f -L 2
例:
4.4.3 dd命令
4.4.3.1 创建大容量文件
dd命令用于制作指定个数及容量的空文件。
格式:dd if=来源 of=新文件名 count=数据块个数 bs=块容量
/dev/shm/ 是 Linux 系统下的一个内存文件系统(RAM-backed filesystem,通常挂载为 tmpfs)。它利用物理内存和交换分区(Swap)来存储数据,而不是持久化存储设备(如硬盘或 SSD)。用df指令查看文件系统磁盘空间使用情况,能快速了解各个挂载点的总容量、已用空间、剩余空间等信息。可见/dev/shm/挂载在tmpfs(临时文件系统)上,占用空间大小为物理内存总量的一半。

free -m 是 Linux 系统中用来查看内存(RAM)和交换分区(Swap)使用情况的命令。-m 参数表示以 MiB(兆字节) 为单位显示数据。可以看到此时可使用的物理内存Mem大小为1683M。
使用dd指令制作100M空数据文件,再查看物理内存大小,可见此时可用物理内存减少了100M。
4.4.3.2 做备份
首先确认50G的磁盘在/dev/sda,并且有分区表存在。
切出/dev/shm目录,因为此目录中是内存,新建的文件放在其中再重启会消失。从/dev/sda将磁盘分区表备份到mbr。
提示:MBR(Master Boot Record,主引导记录) 是存储在硬盘第一个扇区的一个特殊数据结构。你可以把它理解为硬盘的“目录”或“启动管家”,计算机通电后,会首先读取这部分信息,以确定如何启动操作系统以及硬盘是如何分区的。它主要由以下三部分组成:
主引导程序(446 字节):包含可执行的机器码,负责在启动时检查分区表、定位并加载活动分区的引导程序,从而启动操作系统。
磁盘分区表(64 字节):记录硬盘的分区信息。由于每条分区记录占16字节,因此MBR分区表最多只能记录4个主分区的信息。
有效标志(2 字节):固定为0x55AA,用于BIOS确认该扇区是一个有效的MBR。
此时用全0覆盖掉/dev/sda中的全部字节,相当于破坏掉分区表。再查看磁盘分区表信息,已无分区表。
将mbr中数据写入/dev/sda,再查看磁盘分区表信息,此时分区恢复,系统可正常使用。
4.5 删除文件
格式:rm 参数 文件名
用法:
- 删除文件: rm 文件名
- 删除目录:rm -r 目录名
- 强制删除不确认:rm -f 文件名
注意
- 删除前必须确认路径及名称
- 删除文件时必须将文件名及扩展名写全
4.6 数据流和重定向
4.6.1 数据流
- 标准输入(standard input,简称stdin):默认情况下,标准输入指从键盘获取的输入,代码为0。
- 标准输出(standard output,简称stdout):默认情况下,命令执行所回传正确的信息会输出到屏幕上,代码为1。
- 标准错误输出(standard error output,简称stderr):默认情况下,标准错误输出可理解为命令执行失败后,所回传的错误信息会输出到屏幕上,代码为2。
4.6.2 重定向操作符
重定向操作符可以将命令输入和输出数据流从默认设备重定向到其他位置。其本身不是命令,而是命令中附加的可改变命令的输入和输出对象的特殊符号。
- 输出重定向操作符:
>>> - 输入重定向操作符:
<<<
用法
-
命令 >文件 或 命令 1>文件 : 将命令执行后的结果不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件。
-
命令 2>文件 : 将命令执行后所产生的错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件。
-
命令 2>/dev/null : 将命令执行后所产生的错误信息不在默认的屏幕上显示,而是写入到空设备文件(黑洞)中,即将输出的错误信息丢弃掉。
-
命令 &>文件 或 命令 >&文件 : 将命令执行后的正确输出信息和错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件。
-
命令 >>文件 : 将命令执行后的正确输出信息以追加的方式写入到指定的文件中,不覆盖原文件内容,若指定的文件不存在,则自动创建该文件。
-
命令 <文件 : 使命令从指定的文件中读取数据作为输入。
-
命令 <<结束标识字符串 : 在命令行读取数据作为输入,直到遇到指定的结束标识字符串。
例1:覆盖
例2:追加
例3:错误输出重定向
切换到普通用户,可以看到同时有正确和错误信息存在。红色均为错误信息。将错误信息丢弃,仅剩正确信息。
例4:也可将正确和错误信息分别输出到不同文档中。
例5:
标准输入重定向<<并不表示追加,而是表示输入结束的意思,即作为一个结束符。
4.6.3 echo命令将标准输出重定向到文件
echo:向终端设备上输出字符串或变量提取后的值
格式:
- echo “字符串”
- echo “$量”
例1:查看路径
例2:
4.7 tee命令读取数据输出到文件
例1:把标准输入的内容原样输出到标准输出,同时写入到 test1.txt 文件中。红色方框中均为标准输出,其余为标准输入。输入结束按下CTRL+D。
例2:追加
4.8 管道符 |
用于两个命令或者多个命令相连接,将管道符左边命令的输出作为管道符右边命令的输入。
例1:统计行数
例2:管道符仅允许正确的信息通过。在统计行数时,仅统计出2行正确信息。
若想统计所有信息行数,可用2>&1,表示将标准错误重定向到标准输出当前所指向的目标位置。
4.9 vim文本编辑器
4.9.1 vim编辑器的三种模式
-
命令模式:也成为了阅读模式,可以控制光标移动,对文本进行查看、删除、复制粘贴等操作(默认)
-
编辑模式:也称为插入模式,可以对文本进行编辑
-
末行模式:保存、退出、设置编辑环境
-
进入的顺序
- 刚打开文件后进入的为命令模式(默认)
- 命令模式点击i’键进入输入模式,点击Esc返回命令模式
- 命令模式中点击冒号进入末行模式,点击Esc返回
- 输入模式与末行模式不可以相互进入
4.9.2 命令模式的快捷键
4.9.2.1 光标跳转按键
| 功能 | 按键 |
|---|---|
| 光标按单个字符移动 | ↑、↓、←、→ |
| 光标按照单词向后跳转 | w |
| 光标按照单词向前跳转 | b |
| 光标跳转至行首 | ^ |
| 光标跳转至行尾 | $ |
| 文档首行第一个字符 | gg |
| 文档最后一行第一个字符 | G |
| 跳转到指定行 | 行号gg 或者 行号G |
4.9.2.2 复制、粘贴、删除
| 功能 | 按键 |
|---|---|
| 删除光标所在行 | dd |
| 删除从光标处开始的n行 | 数字dd |
| 删除光标前至行首字符 | d^ |
| 删除光标及之后的所有字符 | d$ |
| 复制光标所在行 | yy |
| 复制从光标处开始的n行 | 数字yy |
| 将缓冲区的内容粘贴到光标所在行的下一行 | p(小写) |
| 将缓冲区的内容粘贴到光标所在行的上一行 | P(大写) |
| 撤销操作 | u |
4.9.2.3 编辑模式的快捷键
- 可通过如下任意一种功能键从命令模式切换到编辑模式
- 按ESC键可从编辑模式切换到命令模式
| 功能 | 按键 |
|---|---|
| 在光标前插入 | i |
| 在光标所在行行首第一个非空字符前插入 | I(大写字母i) |
| 在光标后插入 | a |
| 在光标所在行末尾插入 | A |
| 在光标所在行上一行插入 | O(大写字母) |
| 在光标所在行下一行插入 | o(小写字母) |
| 删除光标所在字符并进入插入模式 | s(小写字母) |
| 删除当前行并进入插入模式 | S(大写字母) |
4.9.2.3 末行模式的快捷键
- 按
:或者/可从命令模式切换到末行模式 - 按esc键可从末行模式切换到命令模式。
4.9.2.4 查找关键字并替换
| 功能 | 按键 |
|---|---|
| 从上而下查找字符串“word”(可按n键定位到下一个匹配的的字符串) | /word |
| 将当前行中查找到的第一个字符“old”替换为“new” | : s /old/new |
| 将当前行中查找到的所有字符“old”替换为“new” | : s /old/new/g |
| 在行号“n1,n2”范围内替换所有的字符串“old”为“new” | :n1,n2 s/old/new/g |
| 将整个文件内的字符串“old”替换为“new” | :% s/old/new/g |
注:冒号后直接输入即可,因编辑器显示问题,因而有两处加了空格。
4.9.2.5 保存退出
| 功能 | 按键 |
|---|---|
| 退出vi/vim编辑器,未对文件做任何编辑操作才可退出 | :q |
| 不保存文档内容,强制退出vi/vim编辑器 | :q! |
| 保存文件 | :w |
| 将文件另存为/dir/file | :w /dir/file |
| 保存文件内容并退出vi/vim编辑器 | :wq 或者 ZZ |
| 强制保存并退出 | :wq! |
4.9.2.6 vim分屏
垂直分割:vnew 水平分割:new
直接输入vim指令进入如下页面,输入:vnew按回车,切为左右两屏。

再输入:文件名,即可在左半屏打开此文件。
按ctrl+w键,再按→键,输入:r 文件名,即可在右半屏打开对应的文件。
输入:new可以再将右半屏分为上下两屏。
按ctrl+w键,光标可以在各个屏之间切换。
4.9.2.7 其他操作
| 功能 | 按键 |
|---|---|
| 在当前文件中读入其他文件内容 | :r /dir/file |
| 查找含有"word"的行并删除 | :g/word/d |
| 显示行号 | :set nu |
| 关闭行号显示 | :set nonu |
| 删除n1-n2行内容 | :n1,n2 d |
| 复制n1-n2行到第n行后面 | :n1,n2 co n |
例:使用vim编写c程序,实现编译执行
建立test.c文件,在文件中写入程序。

编译并运行查看结果。
4.9.3 vim的配置文件
[root@server ~]# vim /etc/vimrc(全局生效)或者 vim ~/.vimrc(局部生效)
想调制参数时,只要将以下指令写入上述文件即可。
set hlsearch "高亮度反白
set backspace=2 "可随时用退格键删除
set autoindent "自动缩排
set tabstop=4 "缩进
set softtabstop=4 softtabstop是“逢4空格进1制表符”,前提是你tabstop=4
set shiftwidth=4 自动缩进空格长度
set mouse=a "使用鼠标
set selection=exclusive
set selectmode=mouse,key
set ruler "可显示最后一行的状态
set showmode "左下角那一行的状态
set nu "可以在每一行的最前面显示行号啦!
set bg=dark "显示不同的底色色调
syntax on "进行语法检验,颜色显示
例:查看/etc/fstab文件,此时不显示行号。

编辑~/.vimrc文件,写入set nu。

此时再重新查看/etc/fstab文件,显示行号。
4.9.4 vim 的异常处理
在test文件中写入一些内容,正常保存退出。

重新打开,按ctrl+z键模拟异常退出。
此时再尝试打开,出现异常。
按Q键退出,查看目录下的所有文件,包括那些以点(.)开头的隐藏文件。可以看到".test.swp"就在其中。
删除".test.swp"文件再次打开,此时恢复正常。
第五章 文件内容显示
5.1 浏览普通文件
5.1.1 cat命令
用于查看文件内容,适合数据量较少的文件。
格式:cat 参数 文件名
参数:
- -n:显示行号,加上
- -b:文件中所有非空行增加行号,编号从1开始
例:
5.1.2 tac命令
用于倒叙访问文件内容。
格式:tac 参数 文件名
参数:
- -s:指定分隔符,按自定义分隔符反转
- -r:将分隔符视为正则表达式
- -b:将分隔符放在每段的前面,而不是后面
例:
5.1.3 more 命令
用于翻页查看文件内容,适合内容较多的文件查看。
格式:more 文件名
注意:使用回车则一行一行查看,使用空格则整页查看,点击q键退出查看。
5.1.4 less命令
作用:同more命令
格式:less 文件名
注意:可以使用上下键进行浏览,点击q退出浏览。
5.1.5 head命令
用于查看文档前n行的内容。
格式:head -数字 文件名
例:
5.1.6 tail命令
用于看文档后n行内容
格式:tail -参数 文件名
参数
- -数字:查看倒数行数
- -f:动态刷新, 实时显示日志文件并且能动态更新
例:在一个终端中打开系统日志。
打开一个新的终端,记录一份日志。
此时再看第一个终端打开的日志,可以看见手动记录的新日志。
5.1.7 file命令
用于查看文件类型。
格式:file -参数 文件名
文件类型:
- ASCII file :ASCII文本字符文件
- empty:空文件
- block special :块设备文件
- character special :字符设备文件
- diretory:目录
例:
5.1.8 stat命令
用于显示文件属性信息。
格式:stat 文件名
注意:一般通过该命令查看大小、Inode、硬链接、软连接
例:
5.2 文件内容过滤显示—grep
用于在指定的普通文件中查找并显示含有指定字符串的行,也可与管道符一起使用。
格式:grep 参数 查找条件 文件名
参数
| 选项 | 说明 |
|---|---|
| -c | 仅显示找到的行数 |
| -i | 忽略大小写 |
| -n | 显示行号 |
| -v | 反向选择——仅列出没有“关键词”的行 |
| -A | -A 2 搜索时显示匹配到的那一行以及下2行 |
| -B | -B 2 搜索时显示匹配到的那一行以及上2行 |
| -C | -C 2 搜索时显示匹配到的那一行以及上下2行 |
例1:找到含有root的行。
例2:统计含有root的行数。
例3:过滤掉含有root的行。
使用特殊符号匹配
| 匹配模式 | 说明 |
|---|---|
| grep h 文件名 | 查找文件里有字符h的行 |
| grep ^ [q] 文件名 | 匹配以q开始的行 |
| grep ^ [qf] 文件名 | 匹配以q或者f开头的行 |
| grep ^ [ ^qf ] 文件名 | 不匹配以q或者f开头的行 |
| grep ^ [0-9] 文件名 | 匹配以数字开头的行 |
| grep q$ 文件名 | 匹配以q结束的行 |
| grep ^$ | 过滤空白行 |
| grep -r h ./* | 如果要明确搜索当前目录中的子目录有h的行 |
| grep -d s kip h ./* | 忽略当前目录下的子目录下的普通文件 |
5.3 切割显示——cut
用于按列提取文本内容。
格式:cut -d “分隔符” -f列数字 文件名
例:/etc/passwd文件在保存用户数据信息时,每一项值之间是采用冒号来间隔的。
按列搜索,不仅要使用-f参数来设置需要看的列数,还需要使用-d参数来设置间隔符号。这里我们间隔符号设为:,列数设为1,可查看第一列。
也可同时查看多列,列数用逗号隔开即可。
5.4 排序显示——sort
用于对文本内容进行排序显示。
格式:sort 参数 文件名
参数
| 选项 | 作用 |
|---|---|
| -f | 忽略大小写 |
| -b | 忽略缩进与空格 |
| -n | 以数值型排序 |
| -r | 反向排序 |
| -u | 去除重复行 |
| -t | 指定间隔符 |
| -k | 设置字段范围 |
例:可以将passwd文件按第三列数字的大小进行排序。
5.5 去重显示——uniq
用于去除文本中连续的重复行。
格式:uniq -参数 文件名
例:
5.6 文件中字符替换显示——tr
用于从标准输入读取数据,经过替换或者删除后,将结果输出到标准输出。
格式:tr -参数 替换内容 新内容
参数
- -c :反选设定字符,符合 “替换内容” 的部份不做处理,不符合的剩余部份才进行转换
- -d :删除指令字符
- -s :缩减连续重复的字符成指定的单个字符
例:小写字母全部转换成大写字母。
第六章 文件的其它操作命令
6.1 文本内容统计——wc
用于统计指定文本文件的行数、字数或字节数。
格式:wc 参数 文件名
参数:
| 选项 | 作用 |
|---|---|
| -l | 只显示行数 |
| -w | 只显示单词数 |
| -c | 只显示字节数 |
例:不加参数,行数、单词数、字节数均统计。
6.2 复制文件或目录——cp
格式:cp 参数 源文件 目标文件
参数
| 选项 | 功能 |
|---|---|
| -a | 通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录 |
| -d | 拷贝时保留链接 |
| -f | 在覆盖已经存在的目标文件时不提示 |
| -i | 在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝 |
| -p | 除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中 |
| -r | 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名 |
例:
6.3 移动文件或目录——mv
用于剪切或重命名文件。
格式:mv [选项] 源文件名称 目标文件名称
注意:剪切操作不同于复制操作,因为它会把源文件删除掉,只保留剪切后的文件。如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实本质就是对文件进行了重命名操作。
例:首先查看文件中的内容,将其移动到/etc目录下。
在/etc中检索,显示有此文件,查看文件内容,可以确认移动成功。
6.4 查找文件路径
6.4.1 whereis命令
用于搜索系统命令的可执行文件路径和说明文档。
格式:whereis 命令名
6.4.2 which命令
用于搜索系统命令的可执行文件。
格式:which 命令名
例:
6.5 查找文件——find
用于按照文件名、大小、时间、权限、类型、所属者、所属组来搜索文件。
格式:find 查找路径 查找条件 具体条件 操作
注意
- find命令默认的操作是print输出
- find是检索文件的,grep是过滤文件中字符串
参数
| 参数 | 作用 |
|---|---|
| -name | 根据文件basename匹配名称 |
| -size | 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件) |
| -mtime [+|-]n | 匹配修改内容的时间(-4指小于等于4天内的文件名;+4,大于等于5天前的文件名;4指前4~5那一天的文件) |
| -atime [+|-]n | 匹配访问文件的时间 |
| -ctime [+|-]n | 匹配修改文件权限的时间 |
| -newer f1 !f2 | 匹配比文件f1新但比f2旧的文件 |
| -perm | 匹配权限(mode为完全匹配,-mode为包含即可) |
| -user | 匹配所有者 |
| -group | 匹配所有组 |
| -nouser | 匹配无所有者的文件 |
| -nogroup | 匹配无所属组的文件 |
| -type b/d/c/p/l/f | 匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件) |
| -depth | 先从该目录子目录下查找,再查找该目录 |
| -maxdepth levels -mindepth levels |
最多查找多少层目录;最少查找多少层目录 |
| -delete | 将找到的文件删除,如果是目录只能删除找到的空目录。 |
| -exec …… {}; | 后面可跟用于进一步处理搜索结果的命令 |
示例
- 按照文件名搜索
- -name: 按照文件名搜索
- -iname: 按照文件名搜索,不区分文件名大小写
- -inum: 按照 inode 号搜索
- 没有那个文件或目录:find命令在执行时,在内存中自己产生的临时文件,执行完既消失
- 注意:搜索位置越大,消耗系统资源越多,在生产服务器上搜索的时候,尽量不在根目录下搜索,把搜索的范围尽量控制在最小
例1:/目录下检索名为passwd的文件。
例2:/etc下检索host开头的文件。
-
按照文件大小搜索
- -size [+|-]大小: 按照指定大小搜索文件,“+”的意思是搜索比指定大小还要大的文件, “-”的意思是搜索比指定大小还要小的文件
- 单位:可以通过man find 查看size参数的单位
例3:从根目录(/)开始,查找所有大小超过 100 MB 的文件。
-
按照修改时间搜索
- -atime [+|-]时间: 按照文件访问时间搜索
- -mtime [+|-]时间: 按照文件数据修改时间搜索
- -ctime [+|-]时间: 按照文件状态修改时间搜索
- -newer file: 把比file修改时间更新的文件列出来
-
注意:时间范围问题
- -5:代表 5 天内修改的文件。
- 5:代表前 5~6 天那一天修改的文件。
- +5:代表 6 天前修改的文件。
例4:从根目录(/)开始,查找所有在过去10天内被修改过、并且是空文件或空目录的对象。
-
按照权限搜索
- -perm 权限模式: 查找文件权限刚好等于“权限模式”的文件 ,常用
- -perm -权限模式: 查找文件权限全部包含“权限模式”的文件
- -perm +权限模式: 查找文件权限包含“权限模式”的任意一个权限的文件
- 如果要在整个系统中搜索权限中包括SUID权限的所有文件,只需使用-4000即可:
例5:从根目录(/)开始,查找所有设置了 SUID(Set User ID)权限位的文件
-
按照所有者和所属组搜索
- -uid 用户 ID: 按照用户 ID 查找所有者是指定 ID 的文件
- -gid 组 ID: 按照用户组 ID 查找所属组是指定 ID 的文件
- -user 用户名: 按照用户名查找所有者是指定用户的文件
- -group 组名: 按照组名查找所属组是指定用户组的文件
- -nouser: 查找没有所有者的文件 ,常用,主要用于查找垃圾文件,还有一种情况就是外来文件,比如光盘和U盘中的文件如果是由Windows复制来的(也就是文件是由windows建立的),在Linux中查看就是没有所有者的文件;再比如手工源码包安装的文件,也有可能没有所有者(由其他系统打的源码包)
例6:在当前目录中查找所有者为 root 的文件和目录。
-
按照文件类型搜索
- -type d: 查找目录
- -type f: 查找普通文件
- -type l: 查找软链接文件
例7:查找当前用户家目录下所有子目录。
逻辑运算符
- -a: and 逻辑与
- -o: or 逻辑或
- -not: not 逻辑非
- 优先级:与>或>非
例8:在 /etc目录下,查找所有文件名以字母e开头或者以字母f开头的文件或目录。
- exec参数
用于把find命令搜索到的结果交由紧随其后的命令作进一步处理,类似于管道符,该参数必须为带减号的长参数,使用-exec命令结尾必须为\ ;
例9:将/root目录下的属于root账户的文件检索出来后拷贝到/目录下的find1目录中。
6.6 压缩和解压缩
6.6.1 压缩——zip
格式:zip FILE
但在Linux中一般不使用zip来压缩。
6.6.2 解压缩——unzip
格式:unzip FILE
6.6.3 压缩——gzip
格式:gzip 参数 文件名
参数:
- -d 解压(等同于 gunzip)
- -k 保留原文件(压缩后原文件不删除)
- -v 显示压缩率
- -r 递归压缩目录下的所有文件(注意:不会打包成一个文件,而是把目录里每个文件单独压缩)
6.6.4 压缩——bzip2
格式:bzip2 参数 文件名
参数:
- -d 解压(等同于 bunzip2)
- -k 保留原文件(压缩后原文件不删除)
- -v 显示压缩率
- -r 递归压缩目录下的所有文件(注意:不会打包成一个文件,而是把目录里每个文件单独压缩)
- -c 输出到标准输出(配合重定向保留原文件)
- -f 强制覆盖已存在的输出文件
- -t 测试压缩文件的完整性(不解压)
6.7 归档命令tar
格式:==tar 参数 [args]
常用参数
| 选项 | 功能 |
|---|---|
| -c | 创建.tar格式的包文件 |
| -x | 释放.tar格式的包文件 |
| -t | 查看包中的文件列表 |
必选参数
| 选项 | 功能 |
|---|---|
| -f | 用于指定打包文件名。 当与-c选项一起使用时,创建的tar包文件使用该选项指定的文件名 当与-x选项一起使用时,则释放该选项指定的tar包文件 |
辅助参数
| 选项 | 功能 |
|---|---|
| -v | 表示在命令执行时显示详细的提示信息 |
| -p | 打包时保留文件及目录的权限 |
| z | 调用gzip程序,以gzip格式压缩或解压缩文件(.tar.gz) |
| -j | 调用bzip2程序,以bzip2格式压缩或解压缩文件(.tar.bz2) |
| -J | 使用xz压缩或解压缩文件(.tar.xz),xz的压缩率通常比bzip2更高 |
| -C(大写字母C) | 和-x选项一起使用,表示释放包时指定释放的目标路径 |
额外参数
打包时排除某个文件
tar cf 文件名.tar --exclude=路径/文件 路径
注:此处的路径前后需要保持保持一致,统一使用绝对路径或者相对路径
提示:压缩只能针对文件,不能针对目录,且在压缩后会删除原文件。故需要先用tar指令打包再压缩。
例1:先打包再压缩。
解压缩再解包。
例2:可以打包之后立即压缩。
解压缩后直接解包。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)