Linux基础命令与目录命令

目录

(1)内部与外部命令

一、内部命令(Shell内置命令)

二、外部命令(独立可执行程序)

三、怎么快速区分它们?

四、区分这两个概念的实际用处

五、对比总结表

(2)命令格式

一、三个组成部分

[1. 命令名(Command)------ 你要"干什么"](#1. 命令名(Command)—— 你要“干什么”)

[2. 选项(Options)------ 怎么干(调节行为)](#2. 选项(Options)—— 怎么干(调节行为))

[3. 参数(Arguments)------ 对谁干(操作对象)](#3. 参数(Arguments)—— 对谁干(操作对象))

二、命令格式的"黄金法则"

[三、一个特殊但重要的格式:命令 --help 和 man 命令](#三、一个特殊但重要的格式:命令 --help 和 man 命令)

四、典型例子

五、进阶细节

六、总结

(3)基础命令

模块一:日常高频基础操作

模块二:文本查看与"三剑客"处理

[模块三:systemd 服务管理](#模块三:systemd 服务管理)

模块四:网络排查与下载

模块五:进程与资源监控

模块六:磁盘与文件系统

模块七:权限、用户与提权

模块八:压缩打包与软件管理

模块九:终端小技巧与辅助命令

模块十:实操小作业

(4)特殊符号

一、路径与目录快捷符号

二、通配符

三、数据流控制符号

四、命令连接与后台执行符号

五、引号与转义符

六、脚本与变量专用符号

七、两个"隐藏功能"符号

八、EOF

(5)目录命令

一、导航与查看

二、创建与删除目录

三、复制与移动目录

四、查看目录占用的空间大小

五、查找目录的位置

六、核心避坑提醒

(6)目录结构

一、根目录与用户目录(最常打交道)

二、系统配置与程序(系统核心)

三、动态数据与设备(系统运行时)

四、挂载点与可选软件(扩展功能)

[五、必须记住的 3 条"黄金法则"](#五、必须记住的 3 条“黄金法则”)

(7)目录管理

一、目录的创建与删除策略

二、目录的权限与归属管理

三、目录的空间监控与容量管理

四、目录的高级防护与维护

五、目录硬链接与软链接的区别

[六、目录管理的 3 条"铁律"](#六、目录管理的 3 条“铁律”)


(1)内部与外部命令

在Linux里,"内部命令"和"外部命令"这个区分,其实不是Linux内核定的,而是由你使用的"命令行解释器"(Shell,最常见的是bash)来定义的

打个比方:Shell就像一个大管家内部命令 是管家随身携带的"万能钥匙",随时能用,速度极快。 外部命令是放在仓库(硬盘)里的"专用工具",要用的时候管家得跑去仓库取出来,再拿回来用。

一、内部命令(Shell内置命令)

定义:这些命令的代码直接写在Shell(如bash)的程序内部。Shell一启动,它们就"常住内存"了。

特点

  • 速度极快:不需要去硬盘找文件,直接在内存里执行。

  • 不占用独立进程:直接在当前的Shell进程中运行,不会产生新的子进程(相当于管家自己动手)。

  • 无法用 which 找到路径:因为它们根本不在硬盘上。

最常用的内部命令举例

命令 作用
cd 切换目录
pwd 显示当前路径
echo 在屏幕上输出文本
exit 退出当前Shell
kill(部分) 发送信号(部分Shell内置了简化版)
type (重点) 用来判断一个命令是内部还是外部
read 读取用户输入
alias 设置命令别名

注意echokill 既是内部命令,也有对应的外部版本(在 /bin/echo/bin/kill)。但Shell会优先使用内部版本,除非你强制指定外部路径。


二、外部命令(独立可执行程序)

定义 :这些命令是存储在硬盘上的独立文件(通常是二进制程序或脚本),位于 /bin/usr/bin/sbin 等目录下。

特点

  • 需要读取硬盘 :每次执行时,Shell需要去 PATH 环境变量定义的目录里找到这个文件,然后加载到内存运行。

  • 会创建新进程:Shell会"分叉"出一个新的子进程去执行它,执行完再销毁(相当于管家派个小工去仓库拿工具干活)。

  • 有明确的路径 :可以用 whichwhereis 看到它在硬盘上的具体位置。

最常用的外部命令举例

命令 作用 通常路径
ls 列出文件 /usr/bin/ls
cp 复制文件 /usr/bin/cp
rm 删除文件 /usr/bin/rm
grep 文本搜索 /usr/bin/grep
vim 文本编辑器 /usr/bin/vim
top 查看系统状态 /usr/bin/top
python3 Python解释器 /usr/bin/python3
三、怎么快速区分它们?

别靠猜,用 type 这个内部命令来查,一查一个准。

在终端里敲:type 命令名

示例 1:查 cd

复制代码
[root@localhost ~]# type cd
cd is a shell builtin

看到 shell builtin,说明它是内部命令

示例 2:查 ls

复制代码
[root@localhost ~]# type ls
ls is aliased to `ls --color=auto'

这里显示它是"别名"。如果你想看它的真实身份,加上 -a 参数:

复制代码
[root@localhost ~]# type -a ls
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls

第二行 ls is /usr/bin/ls,说明它本质上是个外部命令

示例 3:查 which

复制代码
[root@localhost ~]# type which
which is /usr/bin/which

说明 which 本身是个外部命令(它在 /usr/bin/which)。

四、区分这两个概念的实际用处
  1. 写Shell脚本时的性能 :如果循环里大量调用外部命令(如 lsgrep),每调用一次就要创建一次进程,非常消耗CPU。这种情况下,尽量用内部命令(如 read、字符串处理功能)替代,脚本运行会快得多。

  2. 系统救援环境 :如果你不小心删除了 /usr/bin/ 下的文件(比如删掉了 ls),你可能会慌。但只要你还记得内部命令(如 cdechopwd),你就能在纯命令模式下用 echo 来查看环境变量,或用 type 来排查,依然能操作系统。

  3. 理解命令来源 :当你在网上看到一个命令时,如果不知道它是自带功能还是需要额外安装软件,用 type 一看就知道:如果是外部命令,路径在 /usr/bin/,那可能是系统自带的;如果路径在 /usr/local/bin/,那通常是你手动编译安装的。

五、对比总结表
对比维度 内部命令 (Builtin) 外部命令 (External)
存储位置 在Shell程序内部(内存) 在硬盘上(/bin, /usr/bin等)
执行速度 极快(无需读取硬盘) 较慢(需要读取硬盘,创建进程)
进程开销 无(在当前进程运行) 有(会fork出子进程)
是否可查路径 查不到(which查不出) 可以(whichwhereis都可查)
判断命令 type 命令 显示 shell builtin type 命令 显示 是/usr/bin/...
典型例子 cd, pwd, echo, read ls, cp, rm, grep, vim

(2)命令格式

Linux命令的标准格式非常统一,可以用一个通用公式来概括:

命令名 [选项] [参数]


一、三个组成部分
1. 命令名(Command)------ 你要"干什么"

这是必须写的,代表你想执行的操作,比如 ls(列出)、cd(切换)、rm(删除)。 注意 :Linux是严格区分大小写 的!lsLS 是完全不同的东西(LS通常不存在)。

2. 选项(Options)------ 怎么干(调节行为)

选项用来微调命令的"动作方式",通常以 --- 开头。

  • 短选项(单杠) :一个减号加一个字母,比如 -l-a-h

  • 长选项(双杠) :两个减号加一个单词,比如 --help--all--human-readable

示例ls -l(以长格式列出),ls --help(查看帮助)。

进阶窍门 :短选项可以合并 。比如 ls -l -a -h 可以写成 ls -lah(把字母攒在一起,省事)。但长选项不能合并,必须单独写,比如 --all --human-readable

3. 参数(Arguments)------ 对谁干(操作对象)

参数是命令作用的对象,通常是文件名、目录路径、用户名、IP地址等。

  • 有些命令不需要参数 (默认操作当前环境),比如 pwdtop

  • 有些命令必须带参数 ,比如 cd 后面必须跟一个目录,否则它不知道该去哪。

  • 有些命令可以带多个参数 ,比如复制命令:cp 源文件 目标文件(这里就有两个参数)。


二、命令格式的"黄金法则"

为了让写出的命令"一次就通",请记住这四条铁律:

  1. 顺序通常固定 :标准顺序是 命令 -> 选项 -> 参数 。虽然有些命令(如 grepfind)顺序略微灵活,但按这个顺序写,99%的情况都不会错。

  2. 空格隔开 :命令、选项、参数之间必须用空格 隔开。千万不能连在一起写(比如 ls-l 是错的,必须 ls -l)。

  3. 大小写敏感-r-R 在Linux里是两码事(-r通常是递归倒序,-R是递归全部),写错了命令会报错。

  4. 选项可以放在参数后面吗? 可以,但容易混淆。为了养成好习惯 ,强烈建议统一把选项放在参数前面。例如:ls -l /home(好习惯),而不是 ls /home -l(虽然也能跑,但不规范)。


三、一个特殊但重要的格式:命令 --helpman 命令

如果看到一个新命令,不知道怎么给它配选项和参数,记住这个万能格式:

  • 命令 --help :快速显示简短的用法说明,适合应急。例如 ls --help

  • man 命令 :显示完整的"用户手册"(Manual),内容非常详细,是最高权威。按 q 退出,按 / 后输入关键词搜索。

看完帮助后,会发现它们的格式描述里有个"套路",比如:

复制代码
ls [OPTION]... [FILE]...
  • [] 方括号表示可选项(可以写,也可以不写)。

  • ... 省略号表示可以写多个(比如可以接多个文件名)。

  • 没有方括号的,就是必须写的参数。


四、典型例子
命令实例 拆解分析
ls -l /home 命令 ls选项 -l(长格式),参数 /home(目标目录)
cp -r dir1 dir2 命令 cp选项 -r(递归复制),参数1 dir1(源),参数2 dir2(目标)
grep -i "error" /var/log/messages 命令 grep选项 -i(忽略大小写),参数1 "error"(搜索词),参数2 /var/log/messages(目标文件)
rm -rf /tmp/cache/ 命令 rm选项 -rf(组合:强制+递归),参数 /tmp/cache/(要删除的目录)

五、进阶细节
  1. 选项的"值" :有些选项后面必须跟一个值 。比如 useradd -u 1001 用户名-u 选项后面必须跟一个数字ID)。这种写法叫"带参数的选项"。

  2. 参数里的空格怎么办? 如果你的文件名或路径里带有空格(比如 My Documents),必须用双引号单引号 括起来,否则Linux会把空格当成分隔符,导致命令出错。正确写法:ls "My Documents"

  3. -- 的妙用 :有时你操作的文件名以 - 开头(比如文件名叫 -f),直接写 rm -f 会被误认为是选项。这时候加两个横杠 -- 表示"结束选项解析",后面全是参数。例如:rm -- -f(意思是删除名为 -f 的文件)。


六、总结

Linux命令就像跟系统说话:先喊名字(命令),再说怎么干(选项),最后说要干谁(参数)。

(3)基础命令

模块一:日常高频基础操作
命令 核心用法 备注
ls ls -lah(列出所有文件,含隐藏文件,大小易读,详细权限) 最常用
cd cd /etccd ..cd ~ 切换目录
pwd pwd 看自己身在何处
mkdir mkdir -p a/b/c 递归创建多级目录
cp cp -r 源目录 目标目录 复制文件夹
mv mv 旧名 新名 移动或改名
rm rm -rf 目录/文件 慎用!强制递归删除
touch touch file.txt 新建空文件或更新修改时间
ln ln -s 源文件 软链接名 创建软链接(快捷方式)

模块二:文本查看与"三剑客"处理
命令 核心用法 备注
cat cat file.txt 查看小文件
less less 大日志.log 分页查看(按 / 搜索,按 q 退出)
head / tail tail -f 日志.log -f 实时追踪日志(排障神技)
grep grep -r "404" /var/log/ 在文件内容里搜索关键词(-r 递归)
wc wc -l file.txt 统计文件有多少行
sort `sort file.txt uniq -c`
cut cut -d: -f1 /etc/passwd 按冒号分割,取第一列(截取用户名)
sed sed -i 's/旧/新/g' file.txt 文件内批量替换文本(极常用)
awk awk '{print $1, $3}' log.txt 按空格分割,取第1和第3列(高级文本提取)

模块三:systemd 服务管理

注:CentOS 7 以后都用这个管理服务,代替了以前旧的 service 命令。

命令 核心用法 备注
systemctl systemctl status nginx 查看服务运行状态(看是否启动了)
systemctl start/stop/restart nginx 启动/停止/重启服务
systemctl enable/disable nginx 设置开机自启/取消自启
systemctl reload nginx 平滑重载配置(不中断服务)
journalctl journalctl -u nginx -f 查看某个系统服务的详细日志(排障首选)

模块四:网络排查与下载
命令 核心用法 备注
ip ip addrip a 查看所有网卡的 IP 地址(替代废弃的 ifconfig
ping ping -c 4 baidu.com 测试网络是否能连通外网
ss ss -tuln 查看系统当前开放的端口(如 80、443、22)
lsof lsof -i :8080 查端口被谁占了(神器!看 8080 端口被哪个进程占用)
curl curl -I http://localhost 测试本地 Web 服务是否正常响应(-I 只显示响应头)
wget wget http://xxx.com/file.iso 下载文件
traceroute traceroute baidu.com 追踪数据包经过的路由节点(排查网络故障)
nslookup nslookup baidu.com 查询域名的 IP 解析记录(看 DNS 生效没)

模块五:进程与资源监控
命令 核心用法 备注
top top(按 1 看每个核心,按 q 退出) 实时看 CPU/内存占用
htop htop 比 top 更好看(需要单独安装)
ps `ps aux grep nginx`
kill kill -9 PID号 强制杀死卡死的进程
free free -h 查看物理内存和 Swap 交换分区使用情况
uptime uptime 看系统开机多久,以及 1/5/15 分钟的平均负载
dmesg `dmesg tail -20`

模块六:磁盘与文件系统
命令 核心用法 备注
df df -h 查看各分区还剩多少空间
df -i 看 inode 是否耗尽(有时磁盘有空间,但文件数满了就写不了,全靠这个查)
du du -sh * 查看当前目录下每个子文件夹的大小
lsblk lsblk 看磁盘分区结构树(哪些盘对应哪个分区)
mount mount /dev/sdb1 /mnt 挂载新硬盘到指定目录
fdisk fdisk -l 列出系统所有硬盘的分区表信息

模块七:权限、用户与提权
命令 核心用法 备注
chmod chmod 755 脚本.sh 给脚本加执行权限(数字法)
chown chown 用户名:组名 文件 修改文件的所有者和所属组
whoami whoami 看当前是谁
sudo sudo 命令 临时以管理员身份执行一条命令
su su - 用户名 切换用户(切换到 root 时需输入密码)
useradd useradd -m -s /bin/bash 新用户 新建一个用户并指定家目录和 Shell
passwd passwd 用户名 修改指定用户的登录密码
usermod usermod -aG wheel 用户名 把用户加入管理员组(赋予 sudo 权限)

模块八:压缩打包与软件管理
命令 核心用法 备注
tar 打包:tar -czvf 包名.tar.gz 目录/ 解压:tar -xzvf 包名.tar.gz -c 创建,-x 解压,-z gzip,-v 显示过程,-f 文件名
zip zip -r 包名.zip 目录/ 和 Windows 通用的压缩格式
unzip unzip 包名.zip 解压 zip 包
dnf/yum sudo dnf install 软件名 CentOS/Rocky 安装软件
sudo dnf remove 软件名 卸载软件
apt sudo apt install 软件名 Ubuntu/Debian 安装软件

模块九:终端小技巧与辅助命令
命令/快捷键 作用 备注
clear / Ctrl + L 清空屏幕(别敲错,Ctrl+L 最快) 必记
reset 重置整个终端(当界面乱码、光标乱跳时,敲这个瞬间恢复) 神器
history 看之前敲过的所有命令 配合 !100 可直接执行第 100 条命令
!! 再次执行上一条命令 省事
alias alias ll='ls -l' 给长命令起别名(临时生效,想永久需要写进 ~/.bashrc
export export PATH=$PATH:/my/bin 把某个路径加入系统可执行程序搜索路径
watch watch -n 2 free -h 每隔 2 秒自动刷一次命令结果(监控神器)
man / --help man lsls --help 一切命令的终极老师
模块十:实操小作业

如果你现在有一台装好的CentOS/Rocky,可以按顺序敲一遍这组"热身"命令:

复制代码
pwd                      # 看你在哪
mkdir test_lab           # 建个练习文件夹
cd test_lab              # 进去
touch hello.txt          # 建个空文件
echo "Hello Linux" > hello.txt   # 往里面写一行字
cat hello.txt            # 看看写进去没
cp hello.txt hello2.txt  # 复制一份
ls -l                    # 看两个文件的详细信息
rm hello2.txt            # 删掉副本
cd ..                    # 退出去
rmdir test_lab           # 删掉空目录(如果里面没东西的话)

(4)特殊符号

一、路径与目录快捷符号
符号 名称 含义与用法 示例
/ 斜杠 根目录 (所有文件的起点),也是路径分隔符 cd /(回到根目录)
~ 波浪号 当前用户的家目录 cd ~(回自己的家)
. 当前目录 ./start.sh(运行当前目录下的脚本)
.. 两点 上一级目录(父目录) cd ..(退回上一级)
- 减号 上一次所在的目录(来回切换神器) cd -(秒回上一个目录)

二、通配符
符号 名称 含义与用法 示例
\* 星号 代表任意多个字符(0个也可以) ls *.log(列出所有以.log结尾的文件)
? 问号 代表任意一个字符(且必须有) ls file?.txt(匹配 file1.txt, fileA.txt,不匹配 file10.txt)
[ ] 方括号 代表括号内任意一个字符 ls file[0-9].txt(匹配 file0.txt 到 file9.txt)

三、数据流控制符号
符号 名称 含义与用法 示例
**` `** 管道符 把左边命令的输出,作为右边命令的输入(最核心!)
> 覆盖重定向 把输出结果写入文件,覆盖原内容 echo "hello" > file.txt(把hello写进文件)
>> 追加重定向 把输出结果追加到文件末尾,不覆盖 echo "world" >> file.txt(追加到末尾)
< 输入重定向 从文件读取内容,作为命令的输入 sort < file.txt(从file读取内容并排序)
2> 错误重定向 只把报错信息(stderr)写入文件 cmd 2> error.log(把报错单独存起来)
&> 全重定向 把正常输出和报错信息都写入文件 cmd &> all.log(所有输出都存起来)

四、命令连接与后台执行符号
符号 名称 含义与用法 示例
; 分号 不管前一条命令是否成功,都按顺序执行下一条 cd /tmp; ls(先切目录,再列文件)
&& 逻辑与 前一条命令执行成功,才执行后一条(防误操作) mkdir newdir && cd newdir(创建成功才进去)
**` `** 逻辑或
& 后台运行 让命令在后台运行,不占用当前终端 ./long_script.sh &(把耗时的任务扔后台)

五、引号与转义符
符号 名称 含义与用法 示例
' 单引号 强引用 :括起来的内容,原样输出,不解析变量和特殊符号 echo '$HOME' ➜ 输出 $HOME(不是家目录路径)
" 双引号 弱引用 :括起来的内容,解析变量和命令,但保留空格 echo "我的家是 $HOME" ➜ 输出"我的家是 /home/user"
反引号 命令替换:执行里面的命令,把结果替换到当前位置(旧写法) echo "今天是 $(date)"(现代标准写法用 $()
\ 反斜杠 转义符:让后面的特殊符号失去特殊含义,变成普通字符 echo \* ➜ 输出 *(而不是把*当成通配符)

六、脚本与变量专用符号
符号 名称 含义与用法 示例
$ 美元符 取变量的值 echo $PATH(查看环境变量PATH的值)
${} 花括号 明确变量边界(防止变量名和后面的字母黏连) echo ${HOME}dir ➜ 输出 /home/userdir
$? 特殊变量 上一条命令的退出状态码(0表示成功,非0表示失败) command; echo $?(检查刚才的命令跑成功没)
$# 特殊变量 传递给脚本的参数个数 在脚本里用 $# 判断是否传够了参数
$0 特殊变量 脚本本身的文件名 在脚本里打印当前脚本的名字
$\* 特殊变量 所有参数列表(当成一个字符串) 在脚本中引用所有传入的参数
# 井号 注释符 :该行 # 后面的所有内容都不执行 # 这是一行注释(脚本里写说明用)

七、两个"隐藏功能"符号
符号 名称 含义与用法 示例
!! 双感叹号 执行上一条命令(省事神器) 忘了加 sudo?敲 sudo !! 即可用root权限重跑上一条命令
!$ 叹号+美元 代表上一条命令的最后一个参数 mkdir project ➜ 再敲 cd !$ 就等于 cd project
八、EOF

EOF(End Of File,文件结束标记) :在Linux中主要作为输入结束信号 (在交互式终端按 Ctrl+D 组合键,告知系统"我输入完了")和脚本多行定界符 (用 <<EOF ... EOF 包裹多行内容,整体传递给前方命令)。注意:在空白命令行连按两次 Ctrl+D 会直接退出当前终端会话,需谨慎使用。

示例:

复制代码
cat > /tmp/config.txt <<EOF
server_name myweb.com;
listen 80;
root /var/www/html;
EOF

说明 :把 EOF 之间的三行内容,一次性写入 /tmp/config.txt 文件。开始和结尾的 EOF 必须单独成行且完全一致。

(5)目录命令

一、导航与查看
命令 作用 常用搭配/示例
pwd 打印当前所在目录的绝对路径 pwd ➜ 输出 /home/user
cd 切换目录 cd /etc(去etc目录)、cd ..(回上一级)、cd ~cd(回用户家目录)
cd - 切换回上一次所在的目录(来回切换神器) cd -
ls 列出目录内容 ls -lah(最常用组合:显示所有隐藏文件、易读大小、详细权限)
二、创建与删除目录
命令 作用 常用搭配/示例
mkdir 新建空目录 mkdir myfolder
mkdir -p 递归创建多级目录(父目录不存在时自动创建) mkdir -p a/b/c/d
rmdir 删除目录(目录非空会报错) rmdir myfolder
rm -r 删除非空目录(递归删除,慎用) rm -r myfolder
rm -rf 强制、递归、无提示删除目录(高危操作!) rm -rf myfolder/
三、复制与移动目录
命令 作用 常用搭配/示例
cp -r 递归复制整个目录 (必须加 -r cp -r 源目录 目标目录
mv 移动目录,或重命名目录 mv old_dir new_dir(改名)、mv dir /tmp/(移动位置)
四、查看目录占用的空间大小
命令 作用 常用搭配/示例
du -sh 查看指定目录的总大小(易读格式) du -sh /home
du -h --max-depth=1 查看当前目录下所有子目录各自的大小 du -h --max-depth=1
五、查找目录的位置
命令 作用 常用搭配/示例
find 从根目录开始查找指定名称的目录 find / -type d -name "nginx"(全盘找名为nginx的目录)

六、核心避坑提醒
  1. 千万慎用 rm -rf / :这是"从根目录开始强制递归删除"的意思,一旦执行,整个系统所有文件全部消失,且没有任何确认提示。

  2. 目录名带有空格时 :必须用双引号括起来,否则会被当成多个参数。例如:cd "My Projects",而不是 cd My Projects

  3. ... 的含义. 代表"当前目录",.. 代表"上一级目录"(父目录)。这两个在复制和相对路径中极其常用。

(6)目录结构

Linux 的目录是一棵倒置的树 ,所有文件和目录都从根目录 / 开始。理解这棵树的"骨架",你就知道系统文件都放在哪了。


一、根目录与用户目录(最常打交道)
目录 作用 给你的提醒
/ 根目录,所有文件和目录的绝对起点 整个树的最顶部
/home/ 普通用户的家目录,存放用户私人文件 你日常写文档、存代码的地方
/root/ 超级管理员(root)的家目录 普通用户进不去,只有 root 能访问
/tmp/ 临时文件目录,系统重启后自动清空 临时存文件可以放这里,重启就没了

二、系统配置与程序(系统核心)
目录 作用 给你的提醒
/etc/ 系统配置文件目录,存放几乎所有软件的配置(如网络、用户密码) 不要乱删,改错配置可能导致系统无法启动
/bin/ 系统基础命令 (如 lscpmvrm 正常用户都能执行
/sbin/ 系统管理命令 (如 fdiskmount 只有 root 或 sudo 权限才能执行
/usr/ 存放用户安装的软件和库 (相当于 Windows 的 Program Files 里面还有 /usr/bin//usr/local/
/usr/local/ 管理员手动编译安装的软件通常放在这里 自己下载源码编译装软件,一般选这里

三、动态数据与设备(系统运行时)
目录 作用 给你的提醒
/var/ 存放经常变化的文件 ,如日志/var/log/)、缓存、数据库文件 排障时看 /var/log/messages/var/log/nginx/
/dev/ 设备文件目录 (如硬盘 /dev/sda、鼠标、键盘) Linux 中"一切皆文件",硬件在这里映射为文件
/proc/ 虚拟文件系统,存放当前系统的内核与进程信息(如 CPU、内存状态) /proc/cpuinfo/proc/meminfo
/sys/ 类似 /proc,存放系统硬件设备的详细信息 通常在排查驱动时查看
/boot/ 存放Linux 内核启动加载器(grub)相关文件 系统启动时依赖这里,不要删改

四、挂载点与可选软件(扩展功能)
目录 作用 给你的提醒
/mnt/ 临时挂载点,管理员临时挂载硬盘或 U 盘时用 比如 mount /dev/sdb1 /mnt
/media/ 可插拔设备挂载点,插上 U 盘或光驱时自动挂载在这里 现在很多 Linux 也自动挂载到 /run/media/
/opt/ 第三方大型商业软件的安装目录 比如你安装 Oracle、谷歌 Chrome 可能会放这里

五、必须记住的 3 条"黄金法则"
  1. 绝对路径 vs 相对路径

    • 绝对路径 :从 / 开始写(如 /etc/nginx/nginx.conf),在哪敲都一样。

    • 相对路径 :从当前目录开始(如 cd ../cd logs/),必须知道你现在在哪。

  2. 不要乱动 /etc/boot/root :这些是系统命脉,改错了系统可能直接起不来。日常操作都在 /home/你的用户名 下即可。

  3. 区分 usrvar/usr/ 放"装好的软件和库"(基本不自动变),/var/ 放"每天疯狂增长的日志和缓存"(经常变,注意空间)。

(7)目录管理

一、目录的创建与删除策略
操作 命令及核心参数 行为管理建议
创建 mkdir -p 路径 养成随手加 -p 的习惯,即使父目录不存在也能自动创建,避免报错
删除 rm -rf 目录 注意 :删除目录时尽量避免用 rm -rf /(危险) 想删非空目录时,先确认该目录没有重要数据 ,再用 rm -rf
移动/重命名 mv 源目录 目标目录 如果目标目录已存在,mv把源目录移进去 ; 如果目标路径不存在,mv 会直接改名。记住:mv 操作是瞬间完成的,不用担心断电损坏目录

二、目录的权限与归属管理

:目录的权限和文件不同。目录的 r 代表"能看(用 ls 列出)",w 代表"能在里面新建/删除文件",x 代表"能进入(用 cd 进去)"。没有 x 权限,就算你有 r 也进不去!

命令 用途 常见目录配置举例
chmod 755 目录 给目录赋予权限(所有者能看/进/改,其他人能看能进但不能改) Web根目录 (如 /var/www/html)常用的权限
chmod 750 目录 给目录赋予权限(所有者全权,同组人能看能进,其他人全禁) 公司内部共享目录常用
chown 用户:组 目录 修改目录的所有者和所属组 比如把 /home/project 的所有者改为 devuser
chgrp -R 组名 目录 递归修改目录及内部所有子目录的组 加上 -R 能递归把所有子目录都改成这个组
setfacl 高级权限(ACL):给特定的某个用户单独设置该目录的权限 例如:setfacl -m u:tom:rx /project(只给 tom 用户读和执行权限,不给其他人)
getfacl 查看目录上设定的 ACL 权限 配合 setfacl 使用

三、目录的空间监控与容量管理
命令 作用 监控指标
df -h 查看各个分区的总容量与可用空间 重点监控根目录 / 的使用率,超过 85% 就要警惕
du -sh * 查看当前目录下每个子目录占用的实际大小 用来快速定位是哪个目录"吃掉了"硬盘空间
df -i 查看 inode(索引节点)使用情况 核心技能 :当磁盘还有空间,但系统提示"磁盘已满"时,99% 是因为 inode 耗尽(小文件太多占满了编号),看 df -i 可以排查出来
lsattr 目录 查看目录的特殊隐藏属性 chattr +i /etc/resolv.conf(设为不可变,连 root 也不能改)

四、目录的高级防护与维护
工具/命令 作用 用法场景
chattr +i 给目录加不可变属性(Immutable) 即使你是 root,也没法删除、重命名、修改这个目录里的文件。防黑客篡改或自己手滑的神技
lsattr 查看目录上是否被加了特殊属性 如果发现 lsattr 输出中有 i,说明被锁了。解除用 chattr -i
rsync -av 目录的增量同步/备份 高效备份工具,只传输有变动的文件,常用于目录灾难恢复。例如:rsync -av /home/ /backup/home/
mount --bind 目录绑定挂载 把 A 目录的内容直接"镜像"到 B 目录,两边变动实时同步。常用于在一个盘空间不够时,把某个目录(如 /var/log)映射到另一个盘的目录下。

五、目录硬链接与软链接的区别
类型 软链接(Soft / Symbolic) 硬链接(Hard)
命令 ln -s 源目录 软链接名 ln 源目录 硬链接名注意:目录通常不允许硬链接ln -d 需要特殊权限,一般不用)
特点 相当于 Windows 快捷方式,指向源目录的路径 相当于给源目录的 inode 起了一个"第二个名字"
删除影响 删除源目录,软链接失效(变红) 删除源目录,硬链接仍然可用,指向原数据
跨分区 可以跨分区创建 不能跨分区

实战场景 :常把 /var/log/nginx 里的日志目录,用软链接 ln -s /data/logs/nginx /var/log/nginx 链接到独立的 /data 大硬盘分区上,解决日志撑爆根分区的问题。


六、目录管理的 3 条"铁律"
  1. 绝对不要裸删根目录rm -rf / 是终极毁灭指令;如果只想删除当前目录下的所有内容,应该用 rm -rf \* 或者 rm -rf ./\*,相对安全一点(但也需慎重)。

  2. 写脚本时,操作目录前先检查 :比如写定时清理日志脚本时,先判断目录是否存在,且路径是否正确(if [ -d "/var/log/nginx" ]; then...),防止因路径写错误删了系统目录。

  3. 规划目录时"分而治之" :生产环境中,强烈建议把 /home(用户数据)、/var(日志/数据库)、/tmp(临时文件)单独划分独立分区。这样即使某个目录空间被占满,也不会拖垮整个系统。

相关推荐
yunwei3717 小时前
实证研究:AI Agent 规则需要上下文与分层强制执行
linux·安全·ai编程
小张成长计划..17 小时前
【Linux】12:进程状态
linux·运维·服务器
会周易的程序员17 小时前
Libnodave S7 通信库:架构设计与实现解析
linux·c++·物联网·架构·c·s7·工业协议
云栖梦泽18 小时前
Camera驱动开发与应用开发中的零拷贝与DMA
linux·驱动开发·嵌入式硬件
农村小镇哥18 小时前
C#中的字符串格式化
服务器·开发语言·c#
小秋求学记.20 小时前
Linux_Ubuntu的相关问题
linux·运维·ubuntu
熊猫钓鱼>_>21 小时前
ArkTS 方舟编程语言 · 原创快速入门教程
运维·架构·ts·harmonyos·arkts·鸿蒙·js
β添砖java21 小时前
黑马Linux笔记
linux·运维·笔记
寒晓星21 小时前
【网络编程】UDP编程
linux·网络·网络协议·udp