文章目录

1 Linux 系统概述

  • Linux 发行时间: 1991年
  • Linux 的创始人: 林纳斯·托瓦兹
  • Linux 的吉祥物: 企鹅
  • 官网地址: https://www.kernel.org/

Linux 发行版 = Linux 内核 + 系统库 + 系统软件

Linux 的内核完全开源免费,但是 Linux 的发行版不一定免费。

Linux 是目前服务器端用到的最多的操作系统,支持 7 * 24小时高性能服务。
常见的 Linux 发行版:

  • RedHat: 世界最大的 Linux 发行版厂商,已经被 IBM 收购
  • Ubuntu: 桌面操作系统做最好的
  • CentOS: 目前中国市场使用最多的 Linux 版本,目前已经被 RedHat 收购,但依然免费
  • Deepin: 深度公司开发的 Linux 版本,国内做的最好的 Linux 发行版

在这里插入图片描述

2 Linux 的目录结构

  • Linux 和 Windows, Mac 一样, 都是文件系统, 采用文件和文件夹的形式来管理数据
  • 只不过在 Linux 操作系统中,是没有盘符概念的,任何文件(文件夹)都是从根目录开始进行拆分的
  • 且 Linux 中采用的是目录树结构,Windows 中采用的是森系结构

Linux 中常用的目录结构:

  • /etc:存放 Linux 配置文件的目录
  • /opt:存放应用程序的目录
  • /bin:终端指令集存放的目录
  • /sbin:超级管理员用户使用的指令集,包括用户的创建删除等指令
  • /home:普通用户的家目录
  • /root:超级管理员的家目录,

在这里插入图片描述

3 基础命令

Linux指令的构成:command [-options] [arguments]

linux指令 = 命令(做什么) + 选项(怎么做) + 参数(对谁做)  

command: 命令名, 相应功能的英文单词或单词的缩写  
-options: 选项, 可用来对命令进行控制, 也可以省略  
arguments: 传给命令的参数, 可以是零个、一个或者多个

3.1 文件与目录操作

3.1.1 路径导航

ls(列出内容)

ls 源自 list,用于查看指定位置的文件和子目录

ls [-a -l -h] [路径信息]

-a  # all, 显示所有文件(包括以.开头的隐藏文件)
-l  # long format, 以长格式列出文件(权限、所有者、大小、修改时间等)
-h	# human-readable, 以人类可读的格式(如 KB、MB)显示文件大小(需配合 -l 使用)

选项可以随意自由组合,且选项的顺序可以随意调整。

ls		# 列出当前目录的文件和子目录(不包括隐藏的)
ls -lh  # 以长格式显示文件信息,并以易读的方式显示文件大小
ls -al  # 以长格式显示文件信息,包括隐藏文件
ls -alh # 以长格式显示文件信息,包括隐藏文件,并以易读的方式显示文件大小

ls 参数可以查看指定路径的文件信息:

ls /      # 查看根目录的文件和子目录
ls -a aa  # 显示当前目录下的 aa 目录中的文件内容,包括隐藏文件
ll        # 完全等价于 ls -l, 可以快速查看文件的详细信息(也可以搭配 -h -a 使用)
cd(切换目录)

cd 源自 change directory,用于改变工作目录

  • 绝对路径:从根目录出发,直到目标文件的目录层级
  • 相对路径:从当前目录出发,直到目标文件目录层级
cd [绝对路径或相对路径]

..    # 代表上一级目录
../   # 同上,代表上一级目录
./    # 代表当前路径,可以省略
  • cd 命令无需选项,只有参数,表示要切换到哪个目录下
  • cd 命令不写参数直接执行,表示回到用户的家目录
cd /etc  # 切换到 /etc 目录
cd       # 回家,root 账号家目录是 /root,其他账号家目录是 /home
cd ~     # 返回家目录,即 cd ~ 等价于 cd,都是回家
cd -     # 返回上一次操作的工作目录
pwd(当前路径)

pwd 源自 print work directory,用于打印工作目录

pwd	    # 当前在哪个目录, 就打印什么路径.

3.1.2 增删改

mkdir(创建目录)

mkdir 源自 make directory,用于创建新文件夹

mkdir [-p] 目录名称
-p    # parents, 自动创建所需的父目录(如果不存在)

# 创建单级目录
mkdir aa            # 在当前目录下创建 aa 文件夹

# 创建多级目录
mkdir aa/bb/cc      # 创建多级目录,如果 aa/bb 目录不存在,则:报错
mkdir -p aa/bb/cc   # 自动创建所需要的目录
touch(创建文件)

touch 用于修改文件时间戳创建空文件

  • touch 可以创建一个新的文件,文件的扩展名随意,甚至可以是不存在的扩展名
  • touch 创建的文件如果存在不报错,但是没有新文件产生
# 创建单个文件
touch 1.txt        

# 一次性创建多个文件
touch 1.txt 2.jpg 3.mp3
cp(复制)

cp 源自 copy,用于拷贝文件或目录

cp 源文件 目标文件
cp -r 源目录 目标目录
-r      # recursive, 递归复制目录(包括子目录和文件)

# 拷贝文件
cp 1.txt /aa         # 拷贝 1.txt 到 /aa 目录下
cp 1.txt /aa/2.txt   # 拷贝 1.txt 到 /aa 目录下,并命名为 2.txt

# 拷贝目录
cp -r aa bb          # 递归拷贝 aa 文件夹到 bb 文件夹下
mv(移动/重命名)

mv 源自 move,用于 移动重命名文件文件和目录,类似于 windows 剪切。

mv 源文件 目标路径  # 将文件移动到目标路径
mv 旧名字 新名字    # 重命名(本质是在同一目录下移动)

# 移动
mv file.txt /tmp/          # 移动 file.txt 到 /tmp 目录
mv folder/ /backup/        # 移动 folder 到 /backup 目录

# 重命名
mv old.txt new.txt         # 文件重命名
mv old_dir/ new_dir/       # 目录重命名
rm(删除)

rm 源自 remove,用于 删除文件或目录

rm 文件名
rm -r 目录名
-r      # recursive, 递归删除目录(包括子目录和文件)
-f      # force, 强制删除,不进行询问

# 删除文件
rm 1.txt    # 删除当前目录下的 1.txt
rm /*.txt   # 删除根目录下的所有 .txt 文件

# 删除文件夹
rm -r aa    # 删除当前目录下的 aa 文件夹
rm -rf /bb  # 强制删除根目录下的 bb 文件夹不进行提示

# 一次性删除多个
rm -rf /*              # 通过 * 通配符删除所有文件
rm 1.txt 2.jpg 3.mp3   # 一次性删除这三项文件

3.1.3 内容查看

cat(全量查看)

cat 源自 concatenate,连接、查看文件内容,常用于查看小型文本文件

  • 一次性输出全部内容,大文件显示不全,且过于消耗内存,适合小文件
cat 文件名
-n  # number, 显示行号
more(分页查看)

more 是一个分页查看工具,主要用于查看中型文本文件

  • 分页查看文件,支持手动翻页,更加灵活,但同样消耗内存。
more 文件名
# Enter          向下一行
# D(down)/Space  向下一页
# B(back)        向上一页
# Q(quit)        退出
tail(查看尾部,日志监控)

tail 意为“尾部”,用于查看文件末尾内容 ,适合监控日志文件或实时查看新增内容。

tail [-n NUM -f] 文件名
-n NUM   # number, 显示末尾 NUM 行(默认 10), n 可以省略,简写为 -NUM
-f       # follow, 实时跟踪文件更新

tail 1.txt           # 查看文件末尾 10 行(默认)
tail -5 1.txt        # 查看文件末尾 5 行
tail -100f log.txt   # 动态查看文件末尾 100 行

3.2 搜索与过滤

3.2.1 文件搜索

which(查找命令路径)

which 用于查找命令的完整路径

which 命令名

which ls        # 输出:/usr/bin/ls
which ifconfig  # 输出:/usr/sbin/ifconfig
find(按条件递归查找文件)

find 通过条件筛选,用于查找符合条件的文件和目录

  • 不指定路径时:默认从当前目录递归搜索
find [路径] [筛选条件]
-name 按名称过滤
-size 按大小过滤  
	-size +100M 大于100MB  
	-size -1G 小于1GB
-type 按类型过滤  
	-type f 文件  
	-type d 目录 

# 按名称搜索
find / -name 'abc*'         # 查找根目录下所有 abc 开头的文件
find /path -name "*.txt"    # 查找 /path 目录下所有 .txt 文件

# 按大小搜索
find / -size +1G            # 查找根目录下大于 1GB 的文件
find ~ -size -10M           # 查找家目录下小于 10MB 的文件

# 按类型搜索
find / -type d -name "log"  # 搜索名为 log 的目录

3.2.2 内容过滤

grep(文本匹配)

grep 源自 global regular expression print(全局正则表达式打印),用于搜索符合条件的文本并打印所在行

grep [-n] "要搜索的内容" 文件名
-n       # number, 显示行号


# 1.txt 内容:
# hello world code
# python world good

grep 'world' 1.txt  
# 打印内容:
# hello world code
# python world good

grep -n 'python' 1.txt
# 打印内容: 2: python world good
wc(行/词/字节统计)

wc 源自 word count,用于统计文本行数、单词数、字节数

  • 单词按照空格划分
  • 在默认的 UTF-8 编码下,1汉字 = 3字节,1汉字 = 1字符
wc [-l -w -c -m] 文件名
-l             # line, 行数
-w             # word, 单词数
-c             # character, 字节数
-m             # multibyte, 字符数
 
# 1.txt 内容:hello world
wc 1.txt       # 输出:1 2 12 ,分别代表行数、单词数、字节数
wc -wlc 1.txt  # 同上,包括 -lwc 都一样,没有顺序之分

3.3 文本打印

echo(输出文本/变量)

echo 意为“回声”,功能类似于 Python 的 print,用于 输出文本或变量内容到标准输出(屏幕)

echo [-n -e] '内容'
-n	不自动换行(末尾不加换行符)
-e	启用转义字符(如 \n 换行)

# 输出文本到屏幕
echo "Hello, World!"      # 输出:Hello, World!
echo - e "Hello\nWorld!"  # 输出两行

# 输出变量到屏幕
name='zhu'                # = 两侧不能有空格
echo "my name is $name"   # 使用 $ 表示变量,输出:my name is zhu

3.4 数据流控制

3.4.1 >/>>(输出重定向)

重定向通过符号控制数据的输入/输出方向,用于控制数据的流向(如输出到文件或管道)。

  • 重定向是命令与文件间的传递,用于保存输出或读取文件输入
>     # 覆盖写入文件(若文件不存在则创建)
>>    # 追加到文件末尾

# 快速创建文件
echo "This is line 1" > 1.txt

# 追加文本
echo "This is line 2" >> 1.txt

# 重定向输出
ls /usr/bin > cmd.txt   # 将输出信息重定向到 cmd.txt 中,相当于写入

3.4.2 |(管道符)

管道(Pipe | )用于将 前一个命令的输出 作为 后一个命令的输入,实现多命令协作处理数据。

  • 管道符是命令与命令间的传递,用于多命令协作
命令1 | 命令2 | 命令3...

ls / | wc -w    # 输出:20,统计根目录下的目录数
# 1.txt 内容:
# hello world
# python world good
cat 1.txt | grep 'python' | wc -w   # 输出:3,先查文件,再过滤,再统计单词

3.4.3 `/$()(命令替换)

反引号`用于 命令替换,可以将 命令的输出结果 作为字符串嵌入到其他命令中,现代脚本中可以使用 $( ) 语法。

echo `ls / | wc -w`
echo $(ls / | wc -w)
# 输出:20

3.5 vi/vim 命令

vi 全称叫: Visual Interface,类似于 windows 的记事本,是 Linux 中最经典的文本编辑器。
vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性。

  • 如果文件路径表示的文件不存在,那么此命令会用于编辑新文件
  • 如果文件路径表示的文件存在,那么此命令用于编辑已有文件
vi 文件名
vim 文件名

vi / vim 编辑器的三种工作模式:

  • 命令模式(默认/Command mode)
    从键盘上输入的任何字符都被当做命令来解释,但输入的命令并不回显在屏幕上。若输入的字符不是 vi 的合法命令,vi 会响铃报警。
  • 输入模式(Insert mode)
    也就是所谓的编辑模式、插入模式。用户输入的任何字符都被 vi 当做文件内容保存起来,并将其显示在屏幕上。
  • 底线命令模式(Last line mode)
    底线命令模式也称命令行模式。此时 vi 会在屏幕最后一行显示一个:作为末行模式的说明符,等待用户输入命令,多数文件管理命令都是在此模式下执行的。

在这里插入图片描述

  • 命令模式:
    • iao 进入编辑模式
    • : 进入底线命令模式
    • dd 删除当前行
    • ndd 向下删除 n 行
    • yy 复制当前行
    • nyy 向下复制 n 行
    • p 粘贴
    • gg 回到行首(文件开头)
    • G 回到行尾(文件结尾)
    • u 撤销
    • Ctrl+r:反撤销
    • /文本:查询文本并高亮显示
  • 底线命令模式:
    • :q 退出不保存
    • :q! 强制退出不保存
    • :wq write quit 退出并保存(快捷键ZZ
    • :set nu 显示行号
    • :set nonu 隐藏行号
    • :noh/:nohl no highlight,取消高亮显示
  • 输入模式:
    • ESC 回到命令模式

3.6 命令手册

大多数手册都是全英文的,可以通过重定向符:man ls > ls-man.txt,输出手册到文件,然后通过翻译软件查看。

# 查看帮助文档.  
# 格式: 命令名 --help  
ls --help# 查看帮助手册  
# 格式: man 命令名  manual,手册
man ls

4 用户和权限

在 Linux 系统中,拥有最大权限的账户名为:root(超级管理员)。
普通用户的权限,一般在其 HOME 目录内是不受限的,一旦出了 HOME 目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。

4.1 用户和用户组

Linux系统中可以:

  • 配置多个用户
  • 配置多个用户组
  • 用户可以加入多个用户组中

在这里插入图片描述

Linux中关于权限的管控级别有2个级别,分别是:

  • 针对用户的权限控制
  • 针对用户组的权限控制

4.1.1 用户组管理

getent group(查看所有用户组)

getent 源自 get entries(entry: 条目)。

getent group
groupadd(创建用户组)
groupadd 组名
groupdel(删除用户组)
groupdel 组名

4.1.2 用户管理

getent passwd(查看所有用户)
getent passwd
useradd(创建用户)
useradd [-g 组名] 用户名
-g   # group,指定用户所在组。不写会创建和用户名一模一样的组名,并添加用户到该组中
userdel(删除用户)
userdel [-r] 用户名
-r   # remove,删除用户的同时,把 /home 目录下该用户的目录也删除
usermod(修改用户属性)

usermod 源自 user modify

usermod -aG 组名 用户名
-aG    # append group,追加用户到附加组
id(查看用户)
id [用户名]    # 不指定用户名会查看自身
passwd(修改用户密码)
passwd 用户名

4.1.3 切换用户及借调权限

su(切换用户)

su 源自 swith user,用于切换用户

  • 使用普通用户,切换到其它用户需要输入密码,如切换到 root 用户
  • 使用 root 用户切换到其它用户,无需密码,可以直接切换
su [用户名]      # 省略用户名表示切换到 root

切换用户后,可以通过 exit 命令退回上一个用户,也可以使用快捷键:Ctrl + D

sudo(借调权限)

sudo 源自 superuser do,临时借调权限,为普通的命令授权,临时以 root 身份执行

sudo 要执行的命令

权限记录在 etc 目录下的 sudoers 文件中,root 用户可以通过 visudo 命令修改。如果没有权限, 则会记录该行为到日志。

4.2 查看权限信息

使用 ll 显示如下信息结构:

文件类型和权限 硬链接数 所有者  所属组  文件大小  最后修改时间   文件名/目录名
-rw-r--r--       1     user   group   1234    Jul 29 10:00  file.txt
drwxr-xr-x       2     user   group   4096    Jul 28 15:32  my_folder
  1. 第 1 个字符:文件类型
    • - 普通文件
    • d 目录,源自 directory
    • l 软链接,源自 link
  2. 第 2-10 个字符:权限(所有者、所属组、其他用户)
    • r 读,源自 read
    • w 写,源自 write
    • x 执行,源自 execute
    • -

在这里插入图片描述

注意: 文件/目录的所有者和所属组是两个独立的属性,所有者并不是一定要在所属组内。

4.3 修改权限信息

4.3.1 chmod(修改文件权限)

chmod 源自 change mode,用于修改文件或目录的访问权限,即读(r)、写(w)、执行(x)权限。

chmod [-R] [权限设置] 文件/目录
-R 递归修改目录及其内容权限
  • 符号模式(ugo+rwx)
chmod u=rwx,g=rx,o=x 1.txt  # 所有者:rwx, 所属组:r-x, 其它用户: --x
chmod -x 1.txt			    # 所有者, 所属组, 其它权限都去掉 x 权限
chmod u+x,g-r,o=rw 1.txt	# 所有者 +x 权限, 所属组 -r 权限, 其它权限为: rw-
  • 数字模式(八进制)
数字 权限 含义
4 r
2 w
1 x 执行
0 - 无权限
# 三类用户(所有者 / 组 / 其他用户)分别对应一个数字,组合成三位数
# 7 = 4 (r) + 2 (w) + 1 (x) = rwx
chmod 764 file.txt  # 所有者:rwx,组:rw-,其他:r--
chmod 777 1.txt		# 俗称: 满权限.

4.3.2 chown(修改文件归属)

chown源自 change owner,用于修改文件或目录的所有者所属用户组

普通用户无法修改所属为其它用户或组,所以此命令只适用于 root 用户执行。

chown [-R] [用户] [:用户组] 文件/目录
-R 递归修改目录及其内容所属

chown zhangsan 1.txt   # 改变文件所有者
chown :python  1.txt   # 改变文件所属组
chown lisi:dev 1.txt   # 改变所有者和组
chown -R wangwu aa     # 改变所有者,包括目录子级

5 Linux 实用操作

5.1 常用快捷键

Ctrl + C      # 强制结束(执行)
Ctrl + L      # 清屏,等价于 clear
Ctrl + D      # 强制登出账号,回到上一个账号,等价于 exit

Ctrl + A      # 跳转到命令 行首
Ctrl + E      # 跳转到命令 行尾
Ctrl + ←      # 上一个单词
Ctrl + →      # 下一个单词

history       # 查看历史命令
!命令名		  # 在历史命令中匹配最近的命令
Ctrl + r      # 在历史命令中搜索命令

5.2 软件安装与服务管理

5.2.1 yum(软件包管理)

yum 是 Yellowdog Updater, Modified 的缩写,基于 rpm (Red Hat Package Manager) 的高级封装,自动解决依赖 + 仓库管理。类似于 windows 或 mac 的应用商店,直接从中查找并安装。

功能 命令示例 说明
安装软件 yum install package 安装指定软件包及其依赖
更新软件 yum update package 更新指定软件包(不指定则更新所有)
卸载软件 yum remove package 删除软件包(保留配置文件)
搜索软件 yum search keyword 根据关键词搜索软件包
列出已安装 yum list installed 显示所有已安装的软件包
yum [-y] [install | update | remove | search] 包名
-y     # yes,在安装过程中自动回答 yes

yum -y install wget   # 通过 yum 安装 wget

Debian/Ubuntu 系统中使用 apt 包管理工具,和 yum 格式一样,更改为 apt 即可。

5.2.2 systemctl(服务管理)

systemctl 源自 system control,是 Linux 系统中用于管理 systemd 系统和服务管理器的核心工具。

功能 命令示例 说明
启动服务 systemctl start nginx 启动服务
停止服务 systemctl stop nginx 停止服务
重启服务 systemctl restart nginx 重启服务
查看状态 systemctl status nginx 显示服务运行状态和日志片段
启用开机自启 systemctl enable nginx 设置服务开机自启动
禁用开机自启 systemctl disable nginx 取消服务开机自启动
systemctl [start | stop | restart | status | enable | disable] 服务名

# 常用服务
NetworkManager	   # 主网络服务
network			   # 副网络服务
firewalld		   # 防火墙
sshd			   # 远程连接服务

# 关掉防火墙并取消开机自启动
systemctl stop firewalld
systemctl disable firewalld

5.3 网络操作

5.3.1 诊断工具

ifconfig(ip配置)

ifconfig 源自 interface configuration,用于查看和配置网络接口

ifconfig
ping(连通性测试)

ping 源自 Packet InterNet Groper ,发送 ICMP 请求包,测试网络是否通畅及延迟

ping [-c Num] 域名 | ip
-c Num    # count,发送 N 次请求后停止

ping -c 3 baidu.com   # 向百度发送 3 次请求测试连通性
netstat(端口监听)

netstat 源自 network statistics,用于查看网络连接、监听端口、路由信息

  • IP地址,设备在网络中的唯一标识
  • 端口号,程序在设备上的唯一标识
netstat -anp   # 查看本机所有端口号
-anp           # 来源: all network port

netstat -anp | grep 3306    # 使用 grep 过滤查看 3306 端口号占用情况

计算机程序之间的通讯,通过 IP 只能确定计算机,但是无法确定具体的程序。通过端口可以确定计算机上具体的程序,确保程序之间进行沟通。
Linux 系统端口号范围: 0 ~ 65535,其中0 ~ 1023已经被用作系统端口或者保留端口了。

5.3.2 数据传输

wget(下载文件)

wget 源自 web get,用于从网络上下载文件,支持 HTTP、HTTPS、FTP。

wget url地址

wget https://img-home.csdnimg.cn/images/20201124032511.png   # 下载图片
curl(发送请求)

curl 源自 client URL,用于模拟浏览器发送请求,常用于测试 API、下载网页内容等,支持多种协议(HTTP、FTP、SFTP、SMTP)。

curl url地址

curl https://www.bilibili.com/    # 爬取哔哩哔哩网页代码
lrzsz(上传和下载)

lrzsz 源自 Linux Receive ZMODEM Send ZMODEM,也就是 Linux ZMODEM 收发工具,用于在终端环境中上传(rz)或下载(sz)文件

rz           # 弹出文件选择窗口,选择文件后自动上传到当前目录
sz 文件名 	 # 弹出保存对话框,选择保存路径即可

或者在 FinalShell、Tabby 等工具中直接拖拽即可上传下载。

在这里插入图片描述

5.4 进程管理

程序运行在操作系统中,是被操作系统所管理的。为方便管理运行的程序,每一个程序在运行的时候都会被操作系统注册为系统中的一个进程,并会为每一个进程都分配一个独有的 PID。

5.4.1 ps(查看进程)

ps 源自 process status,用于显示当前系统的进程状态信息

ps [-e -f]
-e       # every,列出所有进程
-f       # full format,显示完整格式

ps -ef                # 查看本机运行的所有进程
ps -ef | grep mysql	  # 查看本机和MySQL相关的进程.

5.4.2 kill(结束进程)

向进程发送信号(默认 SIGTERM),用于终止或控制进程

信号编号 信号名 作用
1 SIGHUP 重启进程(重新加载配置)
2 SIGINT 中断进程(等同 Ctrl+C
9 SIGKILL 强制终止(不可被忽略)
15 SIGTERM 优雅终止(默认信号)
kill [-编号] PID

kill -9 进程的 PID	# 强制杀死进程,不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。

5.5 软链接和硬链接

ln 源自 link,用于文件共享

  • 软链接:是一个独立的文件,内容为源文件的路径
  • 硬链接:是文件系统的目录项,直接指向源文件的 inode
特性 软链接(Symbolic Link) 硬链接(Hard Link)
本质 类似 Windows 的快捷方式 是原始文件的另一个名称(指向相同 inode)
inode 号 与源文件不同(新 inode) 与源文件相同(共享 inode)
源文件删除 软链接失效(“断链”) 硬链接仍有效(数据未删除)
文件大小 存储链接路径的字节数(较小) 不额外占用空间(与源文件共享数据块)
命令 ln -s 源文件 链接名 ln 源文件 链接名
  • 软链接:若源文件被删除,软链接变成“悬空链接”(无法访问)
  • 硬链接:删除源文件后,硬链接仍能访问数据(直到所有硬链接被删除)
# 软链接,类似于 windows 的快捷方式
ln -s 要链接文件/目录的路径 软链接名

# 将 ipcfg 配置文件创建软链接 ip 
ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 ip


# 硬链接,原始文件的别名,有点类似 C++ 的引用
ln 要链接文件的路径 硬链接名

# 创建 a.txt 的硬链接 b.txt
ln a.txt b.txt

inode(Index Node)是 Linux/Unix 文件系统中的一种元数据结构,用于存储文件的核心属性(如权限、大小、所有者、数据块位置等),但不包含文件名。每个文件或目录都有一个唯一的 inode,通过 inode 号标识。

5.6 压缩与解压缩

区分压缩协议好坏, 可以参考三个维度: 压缩速度(写),解压速度(读),压缩后文件占比。

5.6.1 tar

tar [-c -x -f -v -z] 目标文件 源文件或目录
-c	   # create,创建新的归档文件(打包)
-x	   # extract,解压归档文件
-f	   # file,指定归档文件名(必须直接跟文件名,如 -f archive.tar)
-v	   # verbose,显示操作过程的详细信息
-z	   # gzip,使用 gzip 压缩/解压(生成 .tar.gz 或 .tgz 文件),文件更小
-C	   # directory,指定解压到的目录(需放在选项最后)
  • 压缩
tar -cvf 压缩包名.tar 要被压缩的文件1 文件2 文件夹        # 打包文件不压缩
tar -zcvf 压缩包名.tar.gz 要被压缩的文件1 文件2 文件夹    # 打包并用 gzip 压缩
  • 解压
# 不指定 -C 默认解压到当前路径
tar -xvf 压缩包名.tar [-C 解压路径]      # 解压 tar 压缩包
tar -zxvf 压缩包名.tar.gz [-C 解压路径]  # 解压 tar.gz 压缩包

5.6.2 zip

  • 压缩
zip [-r] 压缩包名.zip 要被压缩的文件1 文件2 文件夹
-r    # 被压缩的包含文件夹的时候,需要使用-r选项
  • 解压
unzip 压缩包名.zip [-d 解压路径]
-d    # 不指定 -d 默认解压到当前路径
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐