Linux学习
pwd命令(print working directory)打印工作目录,即显示目前所处的地址
从普通用户转为超级用户:
方法一:使用sudo -i,最常用的安全方式,无需知道 root 密码,输入当前普通用户的密码即可切换(前提:该用户已在sudo权限列表中),切换后直接进入 root 的家目录(/root)。
方法二:su -或su root,需要知道root 用户的密码,输入后切换到 root 身份,同样进入/root目录(su不加-仅切换身份,不切换环境变量,不推荐)。
从超级用户转为普通用户:
方法一:su -用户名:例如su - zhangsan,从 root 切换到普通用户 zhangsan,并进入其家目录(/home/zhangsan)。
方法二:直接输入exit:退出当前 root 身份,回到之前的普通用户(如果是用sudo -i切换的,exit后直接返回普通用户环境)。
sudo与su的区别: sudo:临时授权,普通用户执行单个命令时临时获取root权限(例如sudo apt install vim安装软件),操作记录会保存在/var/log/auth.log中,便于追溯,安全性高。 su:完全切换身份,一旦输入root密码,就拥有完整的root权限,且操作无单独日志(除非额外配置),误操作风险更高,适合需要长期执行多个root命令的场景(但仍建议用sudo -i替代,因为sudo可控制用户能执行的命令范围)。
Linux文件系统结构,核心逻辑:Everything is file
Linux不像Windows用C盘、D盘区分存储分区,而是将所有硬件设备(如硬盘、U盘、打印机)、系统资源(如进程、内存)都抽象成 “文件”,统一放在一个树状目录结构中(根目录/是所有目录的起点)。 例如:插入U盘后,不会显示“E盘”,而是将其“挂载”到/mnt或/media目录下,通过访问该目录即可操作U盘(本质是访问 “设备文件”)。
部分目录介绍:
bin(binary)存放二进制文件(可执行命令)
存放所有用户都能使用的基础命令,如ls(查看目录)、cd(切换目录)、cp(复制文件),这些命令在系统启动时就会加载,即使没有挂载其他分区也能使用。
boot(存放核心文件) 存放 Linux 启动必需的文件,如内核文件(vmlinuz)、启动引导程序(grub),修改此目录下的文件可能导致系统无法启动,需格外谨慎。
dev(device)存放设备文件
所有硬件设备的 “入口”:
硬盘:/dev/sda(第一块硬盘)、/dev/sdb1(第二块硬盘的第一个分区)
键盘:/dev/input/event0
终端:/dev/tty1(第一个虚拟终端)
etc(存放系统/配置文件)
系统级配置的核心目录,例如:
用户信息:/etc/passwd(所有用户列表)、/etc/shadow(用户密码加密存储)
软件配置:/etc/apt/sources.list(Ubuntu 软件源配置) 系统服务:/etc/systemd/system(服务启动配置)
home(普通用户家目录)
每个普通用户的“个人文件夹”,路径为/home/用户名,例如用户 zhangsan 的家目录是/home/zhangsan,用户在此目录下拥有完全读写权限(可创建文件、安装个人软件)。
lib(library)存放库文件
存放程序运行依赖的共享库文件(类似 Windows 的.dll文件),例如libc.so(C 语言标准库),如果删除关键库文件,依赖它的程序会无法运行。
lost+found: 仅在ext 系列文件系统(如 ext4)中存在,当系统意外崩溃(如断电)导致文件损坏时,Linux 会将恢复的 “碎片文件” 存放在此目录,需手动检查是否有可恢复的重要文件(默认空目录,无损坏时无需关注)。
mnt(mount)挂载目录(方便找)
用于临时挂载外部设备(如 U 盘、移动硬盘),例如将 U 盘挂载到/mnt/usb:sudo mount /dev/sdb1 /mnt/usb,卸载时用sudo umount /mnt/usb。
proc(类似windows注册表功能)
存放系统实时状态信息(并非磁盘文件,而是存在于内存中,重启后消失),例如:
查看 CPU 信息:cat /proc/cpuinfo
查看内存使用:cat /proc/meminfo
查看进程:ls /proc/1(进程 ID 为 1 的系统进程信息)
root(超级用户家目录)
root 用户的个人目录,相当于普通用户的/home/用户名,但 root 权限更高,可直接操作系统所有文件(普通用户默认无法访问/root)。
sbin(存放管理命令)
存放只有 root 能使用的系统管理命令,如fdisk(分区管理)、ifconfig(网络配置)、reboot(重启系统),普通用户执行需加sudo(如sudo ifconfig)。
tmp(存放临时文件,对所有用户开放)
所有用户都可读写的 “临时文件夹”,系统会定期自动清理(或重启后清空),适合存放临时生成的文件(如下载的临时安装包、程序运行日志),例如/tmp/my_temp_file.txt。
var(variable)可变容量文件(自动变化)
存放内容会动态增长的文件,主要包括:
日志:/var/log(系统日志、软件日志,如/var/log/syslog系统日志)
缓存:/var/cache(软件缓存,如/var/cache/apt)
邮件:/var/mail(用户邮件存储)
绝对路径与相对路径:
绝对路径:从根目录/ 开始的完整路径,相当于“全地址”,无论当前在哪个目录,都能通过绝对路径准确找到文件。 示例:/home/zhangsan/Documents/note.txt(无论当前在/tmp还是/etc,输入这个路径都能找到该文件)
相对路径:从当前所在目录开始的路径,相当于 “相对位置”,依赖于当前目录,路径中不包含/开头。 示例:如果当前在/home/zhangsan,那么Documents/note.txt就是相对路径(等价于绝对路径/home/zhangsan/Documents/note.txt)。
| 命令 | 作用描述 | 实例 |
|---|---|---|
cd .. |
进入 “上一层目录”(父目录) | 当前在/home/zhangsan/Documents,执行cd ..后进入/home/zhangsan。 |
cd . |
进入 “当前目录”(无实际移动,常用于命令中指定当前目录,如cp file.txt ./dir) |
当前在/tmp,执行cd .后仍在/tmp,无变化。 |
cd - |
回到 “上一次所处的目录”(目录切换的 “撤销”) | 从/home/zhangsan切换到/etc后,执行cd -会回到/home/zhangsan。 |
cd ~ |
进入 “当前用户的家目录”(~是家目录的缩写) |
普通用户执行cd ~进入/home/用户名,root 用户执行cd ~进入/root。 |
cd / |
直接进入 “根目录” | 无论当前在哪个目录,执行cd /后都会到根目录(所有目录的起点)。 |
| 如何快速判断路径类型? | ||
看开头:以/开头 → 绝对路径;以目录名 / 文件名开头 → 相对路径。 |
||
例:/usr/bin(绝对)、../lib(相对,..表示上一层)、./test.sh(相对,./表示当前目录)。 |
rwxrwxrwx(用户/组/其他),分为 3 组,分别对应所有者(user)、所属组(group)、其他用户(other)
所有者(u),第 1-3 位,文件的创建者,拥有最高优先级的权限(例如rwx表示所有者可读写执行)。
所属组(g),第 4-6 位,与所有者同组的用户,权限由组设置(例如rw-表示组用户可读写,不可执行)。
其他用户(o),第 7-9 位,除所有者和所属组外的所有用户,权限最严格(例如r--表示其他用户仅可读)。
| 权限 | 对文件的作用 | 对目录的作用 |
|---|---|---|
r |
可读取文件内容(如cat file) |
可列出目录下的文件(如ls dir) |
w |
可修改文件内容(如vim file) |
可在目录下创建 / 删除文件(如touch dir/newfile) |
x |
可执行文件(如./test.sh) |
可进入目录(如cd dir) |
| 权限数字表示法(简化操作) | ||
除了字符(rwx),权限还能用数字表示(每组权限对应一个数字,便于用chmod命令修改): |
||
r = 4,w = 2,x = 1,-(无权限)= 0 |
||
| 每组权限的数字是三者之和,例如: | ||
rwx = 4+2+1 = 7 |
||
rw- = 4+2+0 = 6 |
||
r-- = 4+0+0 = 4 |
||
因此,rwxrwxrwx对应的数字是777(所有人都有全部权限),rwxr-xr--对应的数字是754(所有者 7,组 5,其他 4)。 |
修改权限的命令(chmod)
常用语法:chmod [权限数字/字符] 文件名
示例:
- 给test.sh文件设置 “所有者可读写执行,组用户可读执行,其他用户仅可读”:chmod 754 test.sh
- 给目录docs的 “其他用户添加写权限”:chmod o+w docs(o代表其他用户,+w代表添加写权限)
- 撤销file.txt的 “组用户执行权限”:chmod g-x file.txt(g代表组用户,-x代表撤销执行权限)
man(manual,手册),用于查看各类命令的详细介绍与用法 按q退出手册
重定向 > < >> 管道 rm(删除命令) <<输入多行内容 cat << EOF EOF
touch
mkdir创建目录
* 通配符 以及其扩展 []{}