Linux基础知识
Linux系统下的目录结构以及各个目录的存放数据
指令行前缀的含义
gec:用户名称
ubuntu:主机名称
:~表示当前所处的路径(~表示是家目录)
$:普通用户 #:表示超级用户
普通用户-->超级用户
使用命令:sudo -s
变化: 用户名:gec(自己的名字) --> root 用户标识: $ --> #
超级用户才能在根目录里创建修改文件
超级用户-->普通用户
使用命令:su 自己的用户名
变化: 用户名:root --> gec(自己的名字) 用户标识: # --> $
目录构成
| 目录 | 核心作用 | 备注 / 存放内容 |
|---|---|---|
/bin | 基础工具目录 | 存放系统最基本的命令(如ls,cp),所有用户均可执行。 |
/sbin | 管理员工具目录 | 存放系统管理命令(如fdisk,mount),通常仅root用户可使用。 |
/dev | 设备文件目录 | 存放硬件设备(如硬盘、键盘、鼠标)的抽象文件,/dev/null就在这里。 |
/proc | 进程信息目录 | 虚拟文件系统,存放内核与进程的状态信息(如内存、CPU),是系统运行时的“画像”。 |
/sys | 内核与驱动信息 | 类似/proc,更侧重于硬件设备、驱动及内核对象的实时信息。 |
/etc | 系统配置文件 | 存放系统及大部分软件的配置文件(如passwd,fstab),相当于系统的“注册表”。 |
/var | 动态数据目录 | 存放经常变化的数据,如系统日志 (/var/log)、邮件、打印队列。 |
/boot | 系统启动文件 | 存放开机引导加载程序(BootLoader)及 Linux 内核文件 (vmlinuz)。 |
/lib | 基础库文件 | 存放/bin和/sbin命令所需的共享库文件(类似于 Windows 的.dll文件)。 |
/root | 管理员家目录 | 超级管理员root的个人主目录,普通用户无权访问。 |
/home | 普通用户家目录 | 存放所有普通用户的个人文件夹(如/home/gec)。 |
/mnt | 临时挂载目录 | 通常用于手动挂载外部设备(如 U 盘、网络共享文件夹)。 |
/tmp | 临时文件目录 | 存放程序运行时的临时文件,系统重启后通常会清空。 |
/cdrom | 光驱挂载目录 | 早期的光驱默认挂载点,现在多为/media目录下。 |
/usr | 用户程序目录 | 存放用户安装的应用程序、库及文档,是 Linux 中最大的目录之一。 |
Linux常用命令
1、pwd:打印当前所在的路径
2、ls:
ls -a:查看当前路径下的所有文件(把隐藏文件(以‘.’开头的文件)显示出来)
'.':当前文件目录
'..':上一个文件目录
在文件前面带.的表示隐藏文件e.g .bashrc
ls -l:以列表的形式罗列当前路径下的文件大小
也可以组合起来使用
ls -al(显示所有文件,包括隐藏文件,并且显示所有详细信息)
解析:
-rw-rw-r-- 1 gec gec 189 Jul 18 2021 a.cpp
-rw-rw-r--
第1位数据:
-:普通存储文件(存储在硬盘的文件)
d:目录文件(文件夹)(蓝色字体)
l:软链接文件(类似快捷方式,点击之后就会跳转到对应的东西)
第2-4位:文件拥有者的权限rwx
第5-7位:同组用户的权限rwx
第8-10位:其他用户的权限rwx
硬链接:可以被访问的个数
a.cpp:数字为1--只能有一个访问的位置
大小:189 Byte
更新日期:Jul 18 2021
3、cd:change dirctory(改变路径)
cd 需要前往的目标路径
cd ..回到上一级目录
cd .当前目录
cd -:退回到上一次的路径
cd只能切换路径,但是无法打开文件
4、cp:copy(复制拷贝)
cp 需要拷贝的文件(复制谁) 需要拷贝到的路径(到哪里去)
cp 文件夹 目标路径 -r:将文件夹里面的所有东西一起拷贝过去
cp 目标 不存在的文件:将目标文件夹重新命名然后保存在路径下(备份)
5:mv:move(移动)
mv 目标文件 目标路径:将目标文件移动到目标路径中(如果存在的话原来的文件就会被覆盖掉)
mv 目标文件 不存在的文件:将目标文件重命名
6、rm:remove(删除)
对单个文件进行删除时:
rm 要删除的文件名称
对文件夹进行删除时需要加上 -rf:(其中 r表示递归f表示强制):
rm 要删除的文件夹 -rf
解释:
7.echo
用途:在终端上输出
8.sudo
sudo 可以用于切换为超级用户
sudo -s
也可以让普通用户临时拥有超级用户的权限
如在根目录下创建文件
9.mv
1.剪切/移动
mv 被移动的文件路径 需要移动到的路径
2.重命名
mv 需要修改名称的文件 修改名称后的文件
10.chmod
用于修改文件的权限
chmod 文件的权限 需要修改的文件名称
chmod 文件夹的权限 文件夹名称 -R (注意,这里是R)
11.连接
软链接(符号链接):可以理解为Windows里的快捷方式。它是一个独立的文件,但内容只存储了“指向目标文件的路径”。如果原文件被删,软链接就会失效(变成红色闪烁状态)。
硬链接:可以理解为给同一个文件数据起了个别名。它和原文件完全平级,指向硬盘上同一块数据区域。删除原文件,硬链接依然可以正常访问数据,直到所有硬链接都被删除,数据才会真正被释放。
创建软连接
ln -s 原文件 软连接的名字
创建硬连接
ln 原文件 硬连接的名字
举例
echo "Hello" > file.txt
ln -s file.txt soft_link # 创建软链接
ln file.txt hard_link # 创建硬链接rm file.txt # 删除原文件
cat soft_link # ❌ 报错:软链接失效
cat hard_link # ✅ 输出 "Hello":硬链接依然有效
| 对比维度 | 软链接 | 硬链接 |
|---|---|---|
| 本质 | 独立的文件,存储路径 | 文件数据的另一个名字(别名) |
| 依赖原文件 | 依赖,原文件删则失效 | 不依赖,删原文件仍有效 |
| 文件类型 | l开头(链接文件) | 与原文件类型相同(如-普通文件) |
| 指向目录 | ✅可以指向目录 | ❌不可以指向目录(防止循环递归) |
| 跨文件系统 | ✅ 可以跨分区 | ❌ 不能跨分区(inode 仅在本分区有效) |
| inode 编号 | 与原文件不同 | 与原文件相同 |
12.压缩文件
| 参数 | 全称 | 作用 |
|---|---|---|
-c | Create | 创建新的打包文件(压缩包) |
-x | eXtract | 解包(解压) |
-t | lisT | 查看压缩包内的文件列表 |
-j | bzip2 | 使用bzip2算法压缩/解压(生成.tar.bz2,压缩率更高,速度较慢) |
-z | gzip | 使用gzip算法压缩/解压(生成.tar.gz,压缩率适中,速度较快,最常用) |
-f | File | 必须放在最后,指定压缩包的文件名。后面紧跟文件名 |
-C | Change directory | 解压时指定目标路径(大写 C) |
-v | Verbose | (可选)显示过程详细信息(你的笔记未提,但推荐加上) |
在linux中常见的2种压缩包格式
.bz2 和 .gz
| 特性 | .tar.bz2(bzip2) | .tar.gz(gzip) |
|---|---|---|
| 压缩率 | 更高(文件更小) | 适中 |
| 速度 | 较慢(更耗 CPU) | 较快 |
| 使用场景 | 对空间要求苛刻的归档(如大量文本日志) | 日常使用、软件分发(最常用 |
常用的压缩命令
tar -jcf xxx.tar.bz2 文件名1 文件名2 ....... (压缩为bzip2类型)
tar -zcf xxx.tar.gz 文件名1 文件名2 ....... (压缩为gzip类型)
常用的解压命令
tar -jxf xxx.tar.bz2 -C 你要解压到的路径
tar -zxf xxx.tar.gz -C 你要解压到的路径
查看压缩包内的内容
tar -tf 压缩包的名字
13.查找以及搜索
find:用于寻找文件
find 指定路径(必须) 匹配条件(可选) 执行动作(可选)
对于匹配条件,可以有很多种
| 类别 | 条件格式 | 示例 | 说明 |
|---|---|---|---|
| 文件名 | -name "模式" | -name "*.c" | 区分大小写 |
-iname "模式" | -iname "stdio.h" | 忽略大小写 | |
| 文件类型 | -type 类型 | -type f(普通文件)-type d(目录)-type l(链接文件) | 筛选文件或目录 |
| 文件大小 | -size [±]大小 | -size +100M(大于 100MB)-size -1k(小于 1KB) | 单位:c(字节)、k、M、G |
| 修改时间 | -mtime [±]天数 | -mtime -3(3 天内修改)-mtime +30(30 天前修改) | 以天为单位 |
| 权限 | -perm 权限值 | -perm 0644(精确匹配)-perm -0644(至少包含这些权限) | 八进制权限 |
| 用户/组 | -user 用户名-group 组名 | -user root | 按所有者筛选 |
| 多个条件 | -a(与,默认)-o(或)!(非) | -name "*.c" -a -size +1k-name "*.txt" -o -name "*.log" | 逻辑组合 |
grep:用于寻找文件中的内容
grep [选项] "搜索模式" [目标文件......]
常见的选项
| 选项 | 英文全称 | 作用 | 示例 |
|---|---|---|---|
-n | Number | 显示匹配行的行号 | grep -n "error" log.txt |
-H | Header | 显示文件名 | grep -H "main" *.c |
-r | Recursive | 递归搜索目录下的所有文件 | grep -r "TODO" ./src/ |
-i | Ignore case | 忽略大小写 | grep -i "warning" log.txt |
-v | Invert | 反向匹配(显示不含模式的行) | grep -v "debug" log.txt |
-w | Word | 只匹配整个单词(不匹配单词的一部分) | grep -w "main" *.c(不会匹配maintain) |
-c | Count | 只统计匹配的行数,不显示内容 | grep -c "error" log.txt |
-l | List | 只显示文件名(不显示匹配行内容) | grep -l "main" *.c |
-E | Extended regex | 使用扩展正则表达式(支持|、+等) | grep -E "error|warning" log.txt |
-A n | After | 显示匹配行后面 n 行 | grep -A 3 "error" log.txt |
-B n | Before | 显示匹配行前面 n 行 | grep -B 2 "error" log.txt |
-C n | Context | 显示匹配行前后各 n 行 | grep -C 3 "error" log.txt |
--color | 高亮显示 | 默认在终端自动高亮匹配的关键词 | grep --color=auto "error" log.txt |
14.查看文件的内容
cat
cat [选项](可选) [文件名1] [文件名2] ......
cat适合查看短文件,不适合查看大文件。
| 场景 | 推荐工具 | 原因 |
|---|---|---|
| 文件只有几行 | cat | 快速查看,非常方便 |
| 文件有几百行 | cat会刷屏,推荐less或head | 内容太多,看不全,翻不到开头 |
| 文件有几万行 | 绝对不要用cat | 会卡死终端,大量无用信息滚动 |
如果需要查看大文件
less file.txt # 分页查看(按空格翻页,q 退出)
head file.txt # 查看文件前 10 行
tail file.txt # 查看文件后 10 行
15.别名
alias就是让你给 Linux 命令取"小名",unalias 删除命令的别名
创建别名
alias 要取的别名='命令'
取消别名
unalias 需要取消的别名
16.重启ubuntu
reboot
17.查看或修改ubuntu的ip地址
查看ip
ifconfig
典型输出
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet192.168.2.200netmask255.255.255.0broadcast192.168.2.255
inet6 fe80::20c:29ff:fe12:3456 prefixlen 64 scopeid 0x20
ether00:0c:29:12:34:56 txqueuelen 1000 (Ethernet)
RX packets12345 bytes 9876543 (9.4 MB)
TX packets6789 bytes 1234567 (1.2 MB)
| 字段 | 含义 |
|---|---|
ens33 | 网卡名称(Ubuntu 虚拟网卡) |
inet | IP 地址(192.168.2.200) |
netmask | 子网掩码 |
broadcast | 广播地址 |
ether | MAC 地址(物理地址) |
UP | 网卡已启用(如果是DOWN表示禁用) |
RX packets | 接收数据包统计 |
TX packets | 发送数据包统计 |
临时修改IP地址(想要修改必须是超级用户/借用超级用户权限)
sudo ifconfig 网卡名 IP地址
18.查看文件大小
du 文件名 [选项]
| 选项 | 含义 | 单位 | 示例 |
|---|---|---|---|
-b | Bytes | 字节(精确) | du -b file.txt |
-k | Kilobytes | KB(1024 字节) | du -k file.txt |
-m | Megabytes | MB(1024 KB) | du -m file.txt |
-h | Human readable | 自动选择 KB/MB/GB(最常用!) | du -h file.txt |
-s | Summary | 只显示总计,不列出子目录 | du -sh /home |
-a | All | 显示所有文件(含子目录下的) | du -ah /home |
-c | Combine | 显示总计(最后一行输出总和) | du -ch *.log |
--exclude=pattern | 排除匹配的文件 | 跳过某些文件 | du -sh --exclude=*.mp4 |
-d n | 显示深度为n层 | 控制查看目录层级 | du -hd 1 /home |