Linux基础
Linux系统由林纳斯·托瓦兹于1991年创建,其吉祥物为企鹅,内核完全开源免费。主要发行版包括RedHat、Ubuntu、CentOS和Deepin。Linux采用目录树结构,常用目录如/etc、/opt、/bin等。基础命令包括文件操作(ls、cd、pwd)、增删改(mkdir、touch、cp、mv、rm)和内容查看(cat、more、tail)。搜索命令which查找命令路径,find按条
文章目录
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 个字符:文件类型
-
普通文件d
目录,源自 directoryl
软链接,源自 link
- 第 2-10 个字符:权限(所有者、所属组、其他用户)
r
读,源自 readw
写,源自 writex
执行,源自 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 默认解压到当前路径
更多推荐
所有评论(0)