你好,这里是新人 Sunfor

这篇是我最近对于Linux 基础指令 权限管理的学习心得和错题整理
有任何错误欢迎指正,欢迎交流!
会持续更新,希望对你有所帮助,我们一起学习,一起进步

前言

在这里插入图片描述

引言

在数字世界的底层, Linux是那个沉默却无处不在的基石 。从全球 超90%的云端服务器,到你掌中的安卓手机,其强大的 **稳定性、灵活性与开源灵魂 **,驱动着现代科技的运转
理解Linux,绝非仅仅记忆几十条命令,而是掌握一种“一切皆文件”的哲学,一套精细的权限管控体系,和通过Shell组合命令以高效解决问题的艺术
本文将带你穿透迷雾,从核心概念到40+必备命令,快速构建起你对Linux的清晰认知。无论你是开发者、运维人员还是技术爱好者,这都是你掌握数字世界底层逻辑的关键一步。

一、Linux是什么?

当你第一次接触Linux时,你可能会好奇:

“Linux到底是什么?为什么几乎所有服务器、后端系统、云平台都在用它?”

Linux 是一种 开源操作系统,最早由芬兰学生 Linus Torvalds 在 1991 年发布。它的本质是一个 内核(Kernel),负责管理硬件、内存、进程、文件系统等基础功能。为了让普通人能使用,会再搭配工具、命令、软件包等,组成我们常见的 Linux 发行版,如 Ubuntu、CentOS、Debian 等。

由于稳定、安全、可定制性强,Linux已成为:

  • 服务器和元计算平台的主流系统
  • 超级计算机的唯一选择
  • Andriod手机的底层
  • 程序员、运维、安全工程师最常用的开发环境

在这里插入图片描述

二、40+常用Linux基础指令

掌握Linux,从学会一套基础指令开始
这些指令组成了你与系统之间最直接的沟通方式,就像日常生活的语言一样

  • 想看目录 -> 用ls
  • 想移动文件 -> 用mv
  • 想找错日志 -> 用grep
  • 想看系统是否撑得住 -> 用top

下面将以分类+示例+必会技巧的方式呈现 让初学者也能轻松上手,高阶使用者也可以快速复习知识框架

2.1 文件与目录操作

这是Linux最基础、也是最频繁的操作:移动、查看、创建、删除…

在这里插入图片描述
在这里插入图片描述

技巧:相对路径 vs 绝对路径
Linux的路径概念很重要 搞懂这个能减少50%的操作困扰

cd /var/log #绝对路径,从/开始
cd ../ #相对路径 回到上一级
pwd #不知道自己在哪时使用

2.2 文件内容查看

Linux世界里,一切皆文件
因此会“看文件”,比会“打开Word”更重要

在这里插入图片描述在这里插入图片描述
实战场景:实时观察日志更新

tail -f /var/log/nginx/access.log

2.3 文本搜索与处理

很多人觉得Linux 输出“密密麻麻”,其实你不需要全部“看”,只需要`过滤”

在这里插入图片描述

经典组合:统计某个错误出现次数

grep -i "error" log.txt | wc -l

2.4 系统状态与运行监控

当系统“卡住”“满载”“跑不动”“cpu爆表”时,这些命令就是我们用来检测的听诊器

在这里插入图片描述在这里插入图片描述在这里插入图片描述
__排查磁盘满了:谁占了空间?

du -sh ./* | sort -h

2.5 常用指令汇总

在这里插入图片描述

Shell与命令行运行原理(核心概念)

在Linux 中,所有命令的执行都离不开一个角色: Shell
如果把 Linux 系统比作发动机,那么 Shell 就是驾驶舱,你对系统的所有操作,几乎都是通过它完成的
这一部分不仅讲清 什么是 Shell,更重点讲清 命令到底是怎样被执行的
理解这一点,你会在之后学习权限、脚本、重定向等内容时轻松许多

3.1 Shell是什么?

Shell 是一种命令解释器
它的功能可以用一句话总结:
在这里插入图片描述
在这里插入图片描述

常见Shell类型
在这里插入图片描述
查看自己用的是哪个Shell

echo $SHELL

3.2 Shell 处理命令的完整流程(核心)

下面进入最关键内容:
当你敲下 一条命令,Shell 内部到底发生了什么?

ls -al /var/log

① 接收输入(Read)
你敲命令 + 回车后,Shell 获得整行文本:

ls -al /var/log

② 分词与解析(Parse)
Shell 会根据空格、引号等规则把命令拆开:
在这里插入图片描述
Shell还会识别:

引号 “…”、变量 $HOME、通配符 *、管道 |、重定向 >、<、命令替换 $(…)

③ 确定命令来源(Lookup)
Shell 会判断:

  • 是 内建命令?
  • 是 外部命令(独立可执行文件)?

举个例子
在这里插入图片描述
在这里插入图片描述
如果是外部命令,Shell 会根据 `$PATH`` 环境变量寻找它。
在这里插入图片描述
Shell 会按顺序查找 ls 这个二进制文件所在位置

④ 创建子进程执行命令(Fork + Exec)
当命令确定下来后,Shell 会:

  • 创建一个 子进程
  • 子进程加载并执行程序文件
  • 而 Shell 本身作为 父进程 保持运行,等待结果。

这一概念解释了为什么:

  • Shell 不会因为程序崩溃而退出
  • 可以同时运行多个命令
  • 可以用 & 把进程放后台

⑤ 程序执行 → 产生输出(Run)

程序运行,并把结果输出到:
标准输出 stdout(屏幕)
标准错误 stderr(报错)
标准输入 stdin(用户输入)

在刚在的例子中

ls -al /var/log

会输出文件列表。
重定向与管道本质都是改变这三个文件描述符的流向。

⑥ Shell 取回退出码(Exit Status)并等待下一条命令

每条命令执行完都会返回一个整数:
0:成功
非 0:失败(错误类型依命令而定)

查看上一条命令的退出码:

echo $?

在这里插入图片描述
完整的命令执行流程图
在这里插入图片描述

3.3 Shell内建命令 vs 外部命令

内建命令:由Shell本身实现,不需要外部文件

例如:cd、echo、export、alias、pwd、history、jobs
特征:

  • 执行更快
  • 必须作为Shell的一部分存在
  • 不依赖文件系统

外部命令:存放在Linux的某个目录中

例如:ls、grep、python、gcc

/bin
/usr/bin
/usr/local/bin

查看命令类型:

type ls

3.4 重定向、管道:为什么它们能“串”起来?

① 输出重定向 > >>

ls > out.txt #覆盖写入
ls >> out.txt #追加写入

原理:程序本来把output写进stdout,Shell把stout从“屏幕”改成“文件”,所有数据直接写入文件

② 输入重定向 <

cat < file.txt

stdin改成文件内容,程序从文件读,而不是键盘

③ 管道 |(之后会更详细的介绍)

ps aux | grep nginx

原理:
A命令的stdout -> 连接到管道
B命令的stdin <- 从管道读取内容

在上述例子中

ps aux | grep nginx
ps aux -> 输出进程列表
grep nginx -> 输入中筛选关键词

四、Linux权限体系( 重点

Linux的权限系统是整个操作系统的安全基础。无论是管理文件、运行服务、部署程序还是维护服务器,你都必须理解权限的结构、规则和思想

4.1 为什么需要权限

Linux是一个 多用户、多任务 的操作系统。在一个系统中,你可能会同时看到:普通用户、管理员(root)、系统服务账号、脚本、程序、守护进程
如果没有权限系统,任意用户都能:删除他人文件、修改系统配置、读取敏感数据、覆盖可执行程序、杀死系统进程
这将带来严重的安全隐患与稳定性风险
因此 Linux通过 用户/组/权限 三级设计,为系统构筑起稳固的安全模型,是操作系统稳定运行的基石
一句话理解:

Linux的权限体系用来限制谁能对什么做什么

#查看当前用户
whoami
#切换用户(需知对方密码)
su username
#退出切换,返回原用户
exit
#root用户切换到任何用户无需密码
su - normaluser

4.2 权限的对象(作用在哪里)

Linux权限控制的对象主要有两类:
(1)文件(File)
几乎一切可见的内容:文本、代码、图片、二进制文件
对文件的权限决定:谁可以读取内容、谁可以修改内容、谁可以执行它作为程序

#创建测试文件
touch test.txt
echo "This is secret data" > secret.txt
#查看文件权限
ls -l test.txt

在这里插入图片描述

(2)目录(Directory)
目录本身也有权限,且与文件权限含义不同
对目录的权限决定:谁能列出该目录下的内容(read)、谁能进入该目录(execute)、谁能在该目录下创建/删除文件(write)
目录权限是Linux权限体系中最容易混淆但非常重要的部分

#创建测试目录
mkdir mydir
ls -ld mydir

在这里插入图片描述

4.3 权限类型详解:r/w/x的不同含义

文件权限的含义

权限符号对文件的影响
读取r查看文件内容(cat, less, vi等)
写入w修改文件内容(echo, vim等)
执行x作为程序或脚本运行(./script)
# 示例:文件权限实践
echo "#!/bin/bash" > script.sh
echo "echo 'Hello World'" >> script.sh

# 当前只有读写权限
ls -l script.sh

#添加执行权限
chmod u+x script.sh
ls -l script.sh

#尝试执行
./script.sh

在这里插入图片描述
目录权限的含义

权限符号对目录的影响
读取r列出目录内容(ls)
写入w创建/删除文件(touch, rm)
执行x进入目录并访问文件(cd, cat)
# 目录权限实验
mkdir testdir
cd testdir
touch file1.txt file2.txt
cd ..

# 场景1:只有r权限(常见错误)
chmod 500 testdir  # r-x------ (只有所有者可读和执行)
ls -ld testdir
ls testdir/        # 可以列出内容
cd testdir         # 可以进入

chmod 400 testdir  # r-------- (只有读权限)
ls -ld testdir
ls testdir/        # 可以列出内容
cd testdir         # 失败!权限被拒绝
cat testdir/file1.txt  # 失败!需要目录的x权限

# 场景2:只有x权限
chmod 100 testdir  # --x------
ls -ld testdir
ls testdir/        # 失败!需要r权限
cd testdir         # 成功!可以进入
cat file1.txt      # 成功!只要知道文件名就可以访问

# 场景3:只有w权限(危险!)
chmod 200 testdir  # -w-------
ls testdir/        # 失败
cd testdir         # 失败

4.4 权限表示法:符号法与数字法

在这里插入图片描述
符号表示法(ugoa + - = rwx)
最直观的权限修改方式:

# 语法:chmod [ugoa][+-=][rwx] 文件
# u: user(所有者), g: group(组), o: others(其他), a: all(所有)

# 示例:
touch file.txt

# 给所有者添加执行权限
chmod u+x file.txt

# 给组移除写权限
chmod g-w file.txt

# 设置其他用户只有读权限
chmod o=r file.txt

# 同时设置多种权限
chmod u=rwx,g=rx,o=r file.txt

# 所有用户添加执行权限
chmod a+x file.txt

# 查看结果
ls -l file.txt

数字表示法(八进制计算)
适合脚本和批量操作:

权限二进制八进制
0000
–x0011
-w-0102
-wx0113
r–1004
r-x1015
rw-1106
rwx1117
# 常用权限组合
chmod 755 script.sh    # rwxr-xr-x (所有者全权,其他人读执行)
chmod 644 config.txt   # rw-r--r-- (所有者可读写,其他人只读)
chmod 700 private.txt  # rwx------ (仅所有者访问)
chmod 777 dangerous.sh # rwxrwxrwx (所有人全权,不安全!)

# 目录权限示例
chmod 755 public_dir/   # 公共目录:可进入并查看内容
chmod 700 private_dir/  # 私有目录:仅所有者访问
chmod 1777 tmp_dir/     # 粘滞位:所有人都可创建,但只能删除自己的文件

4.5 实际场景应用

场景1:创建安全的配置文件

# 配置文件应只允许所有者修改,其他人只读
echo "DB_PASSWORD=secret123" > database.conf
chmod 600 database.conf  # rw-------
ls -l database.conf

场景2:团队协作目录

# 创建团队共享目录
mkdir team_shared
chmod 775 team_shared  # rwxrwxr-x
sudo chown :developers team_shared  # 设置组为developers

# 组成员可以自由操作,其他人只能查看
ls -ld team_shared

场景3:安全的脚本管理

# 创建系统维护脚本
cat > backup.sh << 'EOF'
#!/bin/bash
echo "Starting backup..."
# 备份逻辑
echo "Backup completed"
EOF

# 设置合理权限
chmod 750 backup.sh  # 所有者可读写执行,组员可读执行,其他人无权限
sudo chown root:admin backup.sh

五、Linux 目录结构的含义(轻量但重要)

Linux目录结构是一个从/根目录开始的树状系统。每个目录都承担待定作用,理解他们可以帮助你更快定位文件、避免误删关键内容
下面是最常见的系统目录含义(掌握这些就够用):

目录作用说明
/根目录,一切路径的起点
/home普通用户的家目录,例如 /home/zhang
/rootroot超级用户的家目录
/etc系统配置文件所在,如 passwd、ssh 配置等
/bin基础命令(如 ls、cp、mv),所有用户可用
/sbin系统管理命令(多为 root 使用)
/usr/bin绝大多数应用程序的可执行文件
/usr/sbin系统管理类程序
/var可变文件,如日志、缓存、服务数据
/tmp临时文件,系统可自动清理
/lib系统运行所需的共享库文件
/boot系统启动相关文件,如内核
/dev把硬件抽象成文件,如 /dev/sda
/mnt、/media挂载点,用于挂载磁盘、U盘等

一句话总结:

Linux 的目录不是随便放的,每个目录都是为某类文件“预定的房间”。理解结构能让你像老司机一样快速找到系统的“零件”。

六、路径 / 重定向 / 管道:Shell 操作核心

Shell 的强大,体现在它能够随时组合命令、处理数据,而这些能力都来自三个关键概念:路径、重定向、管道。

6.1 路径:绝对 vs 相对

路径是 Shell 中最基础也最常用的概念。
(1)绝对路径(从根开始)
以 / 开头:

/home/user/project
/etc/nginx/nginx.conf #不会受到当前目录影响。

(2)相对路径(基于当前位置)

./file.txt     当前目录
../            上一层目录
../../log      上上层目录下的 log #最易混淆但很常用,尤其写脚本时。

6.2 重定向:> 和 >> 把输出写到文件

默认情况下,命令输出到终端;重定向可以把输出写到文件。
(1)输出重定向(覆盖)

echo "hello" > a.txt

(2)追加重定向

echo "hello" >> a.txt

(3)错误输出重定向

command 2> error.log

(4)标准输出与错误输出同时重定向

command > all.log 2>&1

6.3 管道:把命令像积木一样拼接(之后细讲)

管道 | 用于“把前一个命令的输出作为下一个命令的输入”。

小结

到这里,我们已经搭建起 Linux 的核心知识框架,而这,只是一个开始。Linux 真正的魅力,在于脚本自动化、服务管理、网络运维和线上部署。接下来,我会继续分享更深入、更实战的内容。大家可以跟着我一起学习哇

接下来这一段其实是我这段时间得小小感想(大家可以选择不看了)
进入大三 太多事情映入眼帘 马上就面临着就业、考公、考研,各种各样的选择,站在这个岔路口,我也不知道怎么选,本来坚定的心也被各种因素影响,但迷茫和焦虑都是正常的,这是我们成长的必经之路

怎样才是对呢,我只知道我现在不会的还有很多,需要学习的地方也有很多,没有时间去后悔当初,只能好好把握每一个当下,我们都会成为理想中的自己的!共勉!

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐