Linux基础命令与目录命令

目录

(1)内部与外部命令

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

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

三、怎么快速区分它们?

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

五、对比总结表

(2)命令格式

一、三个组成部分

1. 命令名(Command)—— 你要“干什么”

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

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

二、命令格式的“黄金法则”

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

四、典型例子

五、进阶细节

六、总结

(3)基础命令

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

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

模块三:systemd 服务管理

模块四:网络排查与下载

模块五:进程与资源监控

模块六:磁盘与文件系统

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

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

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

模块十:实操小作业

(4)特殊符号

一、路径与目录快捷符号

二、通配符

三、数据流控制符号

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

五、引号与转义符

六、脚本与变量专用符号

七、两个“隐藏功能”符号

八、EOF

(5)目录命令

一、导航与查看

二、创建与删除目录

三、复制与移动目录

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

五、查找目录的位置

六、核心避坑提醒

(6)目录结构

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

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

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

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

五、必须记住的 3 条“黄金法则”

(7)目录管理

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

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

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

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

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

六、目录管理的 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
python3Python解释器/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 builtintype 命令 显示 是/usr/bin/...
典型例子cd, pwd, echo, readls, 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(递归复制),参数1dir1(源),参数2dir2(目标)
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)基础命令

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

模块二:文本查看与“三剑客”处理
命令核心用法备注
catcat file.txt查看小文件
lessless 大日志.log分页查看(按 / 搜索,按 q 退出)
head / tailtail -f 日志.log-f 实时追踪日志(排障神技)
grepgrep -r "404" /var/log/在文件内容里搜索关键词(-r 递归)
wcwc -l file.txt统计文件有多少行
sortsort file.txt | uniq -c排序后去重,并统计重复次数
cutcut -d: -f1 /etc/passwd按冒号分割,取第一列(截取用户名)
sedsed -i 's/旧/新/g' file.txt文件内批量替换文本(极常用)
awkawk '{print $1, $3}' log.txt按空格分割,取第1和第3列(高级文本提取)

模块三:systemd 服务管理

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

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

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

模块五:进程与资源监控
命令核心用法备注
toptop(按 1 看每个核心,按 q 退出)实时看 CPU/内存占用
htophtop比 top 更好看(需要单独安装)
psps aux | grep nginx查看指定进程是否存在,及其 PID 号
killkill -9 PID号强制杀死卡死的进程
freefree -h查看物理内存和 Swap 交换分区使用情况
uptimeuptime看系统开机多久,以及 1/5/15 分钟的平均负载
dmesgdmesg | tail -20查看系统内核级别的报错日志(排查硬件死机问题)

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

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

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

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

三、数据流控制符号
符号名称含义与用法示例
|管道符把左边命令的输出,作为右边命令的输入(最核心!)cat log.txt | grep "error"(在日志里搜error)
>覆盖重定向把输出结果写入文件,覆盖原内容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(创建成功才进去)
||逻辑或前一条命令执行失败,才执行后一条command || echo "执行失败"(失败了就报警)
&后台运行让命令在后台运行,不占用当前终端./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递归复制整个目录(必须加 -rcp -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(临时文件)单独划分独立分区。这样即使某个目录空间被占满,也不会拖垮整个系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

持敬chijing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值