linux知识点
一、 Linux系统的目录结构
1.bin
/bin:存放系统启动和日常使用的必备命令(如ls、cd、cp),所有用户均可执行。
2.boot
/boot:包含系统启动文件(内核、引导加载程序):内核文件(vmlinuz)、引导加载程序(grub)、初始化内存文件系统(initrd/initramfs)、启动配置文件(如grub.cfg)
3.dev
/dev:将硬件设备抽象为文件,通过操作文件访问设备。如硬盘、U盘、键盘、鼠标等
4.etc
/etc:存放系统和软件的配置文件(非运行时数据)包括网络配置,用户信息、软件配置等
5.home
/home:普通用户的主目录(如 /home/user1)
6.lib
/lib:存放系统和命令依赖的共享库文件 (32位)
共享库是一种可被多个程序同时使用的代码和数据集合
核心作用:
大多数应用程序在运行时需要调用共享库中的函数、类或资源
共享库允许不同程序共享同一套代码,避免重复存储,从而减少磁盘空间占用和内存消耗
操作系统内核模块(如驱动程序)的动态加载也依赖于lib目录中的库文件,确保硬件设备能被正确识别和使用。
存放系统启动和基本运行所需的核心共享库(如内核模块、启动程序依赖库),例如:
libc.so:C 标准库
libkernel.so:内核相关库
libudev.so:设备管理库
7.lib64
/lib64:是lib的子目录对应lib目录的64 位系统库文件
8.media
/media:可移动设备(如 U 盘、光盘)的临时挂载点
9.mnt
/mnt:临时挂载其他文件系统的目录
10.opt
/opt:第三方软件的安装目录
11.proc
/proc:虚拟文件系统,存储内核和进程信息
12.root
/root:超级用户(root)的主目录,独立于/home,避免普通用户访问权限问题。
13.run
/run:系统运行时的临时文件(重启后清空)
14.sbin
/sbin:系统管理员专用命令(如 shutdown, ifconfig)
15.sys
/sys:虚拟文件系统,提供内核设备树接口,用于查看和修改硬件设备属性
16.tmp
/tmp:临时文件目录(通常重启后清空)
17.usr
/usr:用户程序和文件的主目录(类似 Windows 的 Program Files)
18.var
/var:可变数据目录(如系统日志、用户邮件、数据库文件、持久化临时文件)
二、 LInux文件基本属性
1.文件基本权限
每个文件有三种基本权限,四种表示:
r(读取权限):当前用户组拥有读权限。
w(写入权限):当前用户组已拥有写权限。
x(执行权限): 决定了用户是否能够将文件作为程序或脚本执行。
-(无权限):表示当前组无权限
1). 执行权限x的知识点
对于普通文件:
系统允许用户将其作为可执行程序运行,如二进制程序(如 /bin/ls、/usr/bin/python3)和
脚本文件(如 .sh、.py、.pl 等)
对于目录文件:
x 权限 决定用户是否能够进入(cd)该目录或访问其内容。
如果目录没有 x 权限,即使有 r 权限,也无法查看其内部文件列表。
2.权限类型分组
权限分为三组:所有者(User),所属组(Group),其他用户(Others)
文件格式:[权限字符串] [硬链接数] [所有者] [所属组] [文件大小] [修改时间] [文件名与链接目标]
示例
| 权限字符串 | 硬链接数 | 所有者 | 所属组 | 文件大小 | 修改时间 | 文件名与链接目标 |
|---|---|---|---|---|---|---|
| lrwxrwxrwx. | 1 | root | root | 7 | Jan 9 2023 | bin -> usr/bin |
1). 权限字符串(首字符+权限部分)总共有 10 个字符,格式为:[d/-][rwx][rwx][rwx]
第 1 位:文件类型
d:目录(Directory)
-:普通文件
l:符号链接(Link)
b:块设备(如硬盘)
c:字符设备(如键盘)
p:管道文件(pipe)
s:套接字文件(socket)
第 2-4 位:所有者(User) 的权限
第 5-7 位:所属组(Group) 的权限
第 8-10 位:其他用户(Others) 的权限
每种权限代表一种数字:r=4,w=2,x=1,-=0
示例
| 权限字符串 | 数字 | 含义 |
|---|---|---|
| drwxr-xr-x | 755 | 目录,所有用户可浏览,但只有所有者可修改。 |
| drwxrwxrwx | 777 | 目录,所有者、所属组、其他用户都可以修改。 |
| drwx------ | 700 | 目录,只有所有者有所有权限,其他用户无法访问。 |
| -rwxr-xr-x | 755 | 文件,所有用户可执行,但只有所有者可修改。 |
| -rw-r--r-- | 644 | 文件,只有所有者可修改,其他用户只能读取。 |
2).硬链接数
表示有多少个文件名指向该文件的inode 节点。
对于符号链接,此值通常为 1(因为软链接本身是独立文件,指向目标路径)。
3).所有者(root)
该文件的所有者用户名(本例中为root用户)。
4).所属组(root)
该文件所属的用户组名(本例中为root组)。
5).文件大小(7)
对于普通文件,单位为字节(Byte);
对于符号链接,此值为目标路径的字符串长度(本例中usr/bin共 7 个字符)。
6).修改时间(Jan 9 2023)
表示文件内容最后一次被修改的时间,格式为月 日 年或月 日 时:分(超过 6 个月会显示年份)。
7).文件名与链接目标(bin -> usr/bin)
左侧:文件名(bin);
右侧:符号链接指向的目标路径(-> usr/bin),表示bin链接到/usr/bin目录。
3.修改权限:chown/chmod命令
chown:用于改变文件或目录的所有者(user)和所属组(group),需要 root 权限 执行。
chmod:命令用于改变文件或目录的访问权限,有 数字模式 和 符号模式 两种用法。
1.chown
语法:chown [选项] [所有者][:[所属组]] 文件/目录
常用参数:
-R:递归修改目录及其子内容的权限
-v:显示详细操作过程
--reference=FILE:引用另一个文件的权限设置
示例
1).修改所有者
chown user1 file.txt # 将 file.txt 的所有者改为 user1
chown -R user1 mydir/ # 递归将 mydir 目录下所有内容的所有者改为 user1
2).同时修改所有者和所属组
chown user1:developers project/ # 将目录project的所有者改为 user1,所属组改为 developers
chown :admins config.ini # 将文件config.int仅修改所属组为 admins(所有者不变)
3).通过引用其他文件的所有者
chown --reference=template.txt newfile.txt # 让 newfile.txt 拥有和 template.txt 相同的所有者
2.chmod
1).数字模式:通过三位数字快速设置权限:chmod [选项] 权限数字 文件/目录
示例
chmod 755 script.sh # 所有者:读写执行(7),组和其他:读执行(5)
chmod 640 config.ini # 所有者:读写(6),组:读(4),其他:无权限(0)
chmod 400 private.key # 仅所有者有读权限
2).符号模式:通过符号指定用户组和权限操作:chmod [用户组][+|-|=][权限] 文件/目录
用户组符号:
u:所有者(user)
g:所属组(group)
o:其他用户(others)
a:所有用户(all)
权限操作符:
+:添加权限
-:移除权限
=:设置为指定权限
示例
chmod u+x script.sh # 为所有者添加执行权限
chmod g-w,o-rwx file.txt # 移除组的写权限和其他用户的所有权限
chmod a=rwx shared_dir # 所有用户拥有读写执行权限
特殊权限位(SUID/SGID/Sticky Bit)
在三位数字前可以加第四位,表示特殊权限:
4:SUID(Set User ID)
让程序以所有者的身份运行(如 /usr/bin/passwd)
2:SGID(Set Group ID)
目录下创建的文件自动继承目录的所属组
1:Sticky Bit
仅文件所有者可删除文件(如 /tmp 目录)
示例
chmod 4755 /usr/local/bin/program # 设置 SUID 位,让普通用户以程序所有者权限执行
chmod 2775 shared_folder/ # 设置 SGID 位,确保团队成员创建的文件属于同一组
chmod 1777 /tmp # 设置 Sticky Bit,防止误删公共目录文件
三、 常用的管理、查看文件与目录的相关命令
1.查看命令
ls -l # 查看详细信息(权限、所有者、大小、修改时间)
ls -a # 显示隐藏文件(以.开头的文件)
ls -lh # 以人类可读的格式显示文件大小(如1K、2M)
ls -R # 递归显示子目录内容
2.目录操作
cd /path/to/directory # 绝对路径切换
cd relative/path # 相对路径切换
cd .. # 返回上一级目录
cd - # 返回上次所在目录
cd # 直接进入用户主目录(等价于 cd ~)
pwd # 显示当前工作目录
mkdir directory_name # 创建目录
mkdir -p dir1/dir2/dir3 # 递归创建多级目录
3.文件操作
cp source_file destination_file # 复制文件
cp -r source_dir destination_dir # 递归复制目录
rm file_name # 删除文件
rm -r directory_name # 递归删除目录(慎用)
rm -rf directory_name # 强制递归删除(危险!)
mv old_name new_name # 重命名文件/目录
mv file_path new_location # 移动文件/目录
4.文件内容查看
cat file.txt # 显示文件全部内容
head -n 10 file.txt # 显示文件前10行
tail -f log.txt # 实时监控文件追加内容(常用于日志)
less file.txt # 分页查看文件(可向上/向下滚动)
more file.txt # 分页查看文件(只能向下滚动)
wc -l file.txt # 统计文件行数
四、 vim的基础操作
1.进入插入模式:
i:在光标前插入
a:在光标后插入
o:在当前行下方插入新行
O:在当前行上方插入新行
2.保存与退出:
:w:保存文件
:q:退出(未修改时)
:wq 或 :x:保存并退出
:q!:强制退出(不保存修改)
3.光标移动:
h(左)、j(下)、k(上)、l(右)
w:跳到下一个单词开头
b:跳到上一个单词开头
$:跳到行尾
^:跳到行首
G:跳到文件末尾
1G 或 gg:跳到文件开头
4.文本编辑:
dd:删除当前行
yy:复制当前行
p:粘贴复制的内容
u:撤销上一步操作
Ctrl+r:重做(恢复撤销)
/keyword:搜索关键字(n 下一个,N 上一个)
实用技巧
分屏操作:
:split 或 :sp # 水平分屏
:vsplit 或 :vsp # 垂直分屏
Ctrl+w+方向键 # 在分屏间切换
设置行号
:set number 或 :set nu # 显示行号
:set nonumber 或 :set nonu # 隐藏行号
替换文本
:%s/old/new/g # 全文替换old为new
:%s/old/new/gc # 全文替换,每次替换前确认

浙公网安备 33010602011771号