Linux 基本指令详解
操作系统是一款专门进行软硬件资源 “管理”的软件系统,它通过对下层硬件资源的高效管理和调度,为上层应用程序提供稳定、统一的运行环境。操作系统本质上是一个"管理者",负责协调和管理计算机系统中的所有硬件和软件资源。
一、操作系统概述
1. 什么是操作系统?
- 操作系统是一款专门进行软硬件资源 “管理” 的软件系统,它通过对下层硬件资源的高效管理和调度,为上层应用程序提供稳定、统一的运行环境。
- 操作系统本质上是一个"管理者",负责协调和管理计算机系统中的所有硬件和软件资源。
2. 操作系统在计算机体系中的位置与贯穿作用
在计算机软硬件层次结构中,操作系统处于承上启下的关键位置,贯穿整个计算栈:
代码语言:javascript
AI代码解释
应用软件 (MS Office、VS Code、浏览器等)
↓ ← 系统调用接口(贯穿点)
操作系统 (Windows、Linux、macOS) ← 核心管理者
↓ ← 设备驱动接口(贯穿点)
设备驱动 (网卡、声卡、显卡驱动)
↓ ← 硬件抽象层(贯穿点)
硬件 (CPU、内存、硬盘、外设)
几乎我们所有的软件行为,最终都与操作系统直接或间接相关,因为:
- 资源访问必须通过操作系统:应用程序不能直接访问硬件
- 系统调用是唯一入口:所有硬件操作都需要通过系统调用接口
- 操作系统提供抽象:隐藏硬件细节,提供统一的编程接口
- 操作系统确保安全:防止恶意程序破坏系统或其他程序
3. 操作系统的必要性
早期计算机直接通过硬件电路控制,随着硬件功能不断完善和结构复杂化,需要专门的软件来协助硬件控制和管理,操作系统应运而生。它通过设备驱动实现模块化的硬件管理。
二、操作系统类比理解
企业架构类比
- 应用软件:各部门员工(完成具体工作任务)
- 操作系统:公司总经理(统筹规划,分配资源)
- 设备驱动:部门经理(将总经理指令转化为具体任务)
- 硬件:基层员工(实际执行具体操作)
优秀操作系统的衡量标准
- 稳定性:能够长时间持续运行不崩溃
- 高效性:资源利用率高,响应速度快
- 安全性:提供良好的安全保护和隔离机制
三、Linux 操作系统特点
1. 交互方式
- 命令行界面 (CLI):Linux 的主要交互方式,高效且灵活
- 图形化界面 (GUI):可选组件,如 GNOME、KDE 等
无论是图形化界面还是命令行界面,其本质上都是一样的 → 而命令行操作更加贴近操作系统
2. 设计哲学
- 一切皆文件:硬件设备、进程等都以文件形式呈现(**比如:**显示器、键盘、普通文件……)
- 小型、单一目的的程序:每个程序只做好一件事
- 通过管道连接程序:组合简单程序完成复杂任务
凡是能被读写的都可以认为是文件
四、Linux 基础命令详解
理解Linux指令的本质
- 指令就是可执行程序:Linux是由C语言编写的,指令是在系统中特定路径下存在的可执行文件
- 指令的执行过程:系统会在预定路径(如
/usr/bin/)中查找对应指令 - 自定义指令:将自己写的可执行程序放入系统搜索目录,就可以直接通过文件名运行
- 查看指令路径:使用
which [指令]查找指令所在路径 - 指令别名:使用
alias [name]=[指令]可以临时重命名指令
ls -l == ll的原因:ll通常是ls -l的预设别名(alias),用于简化操作。可以使用alias命令查看系统中的所有指令别名。
1. 文件目录操作命令
ls - 列出目录内容
代码语言:javascript
AI代码解释
ls [选项] [目录或文件]
- 选项:
-l:详细列表显示(可简写为ll)-a:显示所有文件(包括隐藏文件)-d:显示目录本身而非内容-F:在每个文件名后附上一个字符说明文件类型
- 组合使用:
ls -la(显示所有文件的详细信息)
指令是可以携带选项的 → 通过选项获得更加详细的输出
通配符的使用
*:匹配任意字符[文件名].*:匹配指定名称的任何扩展名文件*.[文件后缀]:匹配指定后缀的任何文件
案例:
代码语言:javascript
AI代码解释
ls * # 列出所有文件
ls test.* # 列出所有名为test的文件
ls *.c # 列出所有.c后缀的文件
文件类型标识
d:目录文件-:普通文件.:隐藏文件(以点开头的文件)*:可执行的普通文件(使用ls -F时显示)/:目录(使用ls -F时显示)l:符号链接文件b:块设备文件c:字符设备文件
2. 目录导航命令
pwd - 显示当前目录
代码语言:javascript
AI代码解释
pwd # 打印当前工作目录
cd - 切换目录
代码语言:javascript
AI代码解释
cd [目录路径]
- 常用路径:
cd ..:返回上级目录cd ~:返回用户家目录cd -:返回上一个访问的目录cd /:返回根目录
- 路径概念:
- 绝对路径:从根目录(
/)开始的完整路径,具有唯一性 - 相对路径:从当前目录开始的路径,随工作目录变化
- 选择原则:
- 配置文件、脚本中建议使用绝对路径
- 命令行操作常用相对路径提高效率
- 绝对路径:从根目录(
案例:
代码语言:javascript
AI代码解释
cd .. # 返回上级目录(相对路径)
cd /home/user/linux/ # 使用绝对路径切换
cd ../day02/ # 使用相对路径切换
3. 文件操作命令
touch - 创建空文件
代码语言:javascript
AI代码解释
touch filename.txt # 创建新文件或更新文件时间戳
mkdir - 创建目录
代码语言:javascript
AI代码解释
mkdir [选项] [dirname]
- 选项:
-p:递归创建多级目录
- 案例:
代码语言:javascript
AI代码解释
mkdir dirname # 创建单个目录
mkdir -p a/b/c/d # 递归创建多级目录
rmdir - 删除空目录
代码语言:javascript
AI代码解释
rmdir [选项] [dirname]
- 选项:
-p:递归删除多级空目录
- 案例:
代码语言:javascript
AI代码解释
rmdir dirname # 删除空目录
rmdir -p a/b/c # 递归删除空目录链
rm - 删除文件或目录
代码语言:javascript
AI代码解释
rm [选项] [filename/dirname]
- 选项:
-r:递归删除删除目录及其下所有文件-f:强制删除,不提示-i:删除前逐一询问确认
- 案例:
代码语言:javascript
AI代码解释
rm filename # 删除文件
rm -r dirname # 递归删除目录及其内容
rm -f filename # 强制删除,不提示
rm -i filename # 删除前询问确认
注意:
rm是一个危险命令,Linux中没有回收站机制,删除后难以恢复
4. 文件拷贝与移动命令
cp - 拷贝文件/目录 → 目标文件/目录
代码语言:javascript
AI代码解释
cp [选项] [源文件或目录] [目标文件或目录]
目标目录下不能有重名文件
- 选项:
-f:强制复制,覆盖已存在文件-i:覆盖前询问用户-r或-R:递归复制目录及其内容
可以发现它和
rm的选项几乎一模一样
- 案例:
代码语言:javascript
AI代码解释
cp file1.txt file2.txt # 拷贝单个文件
cp -r dir1/ dir2/ # 递归拷贝目录
cp file1.txt file2.txt /home/user/dest/ # 拷贝多个文件到目录
cp file1.txt /nonexistent_dir/ # 错误:目标目录不存在
补充说明:
- 当使用
cp命令同时指定多个源文件/目录时,最后一个参数必须是已存在的目标目录 - 系统会将所有指定的源文件/目录复制到该目标目录中
- 如果最后一个参数不是目录或目录不存在,命令将执行失败并报错
mv - 剪切并重命名文件或目录
代码语言:javascript
AI代码解释
mv [选项] 源文件或目录 目标文件或目录
- 选项:
-f:强制移动,覆盖已存在文件-i:覆盖前询问用户
- 案例:
代码语言:javascript
AI代码解释
mv file.txt /path/to/destination/ #移动文件
mv oldname.txt newname.txt #重命名文件
mv file.txt /path/to/newname.txt #移动并重命名
所有的 mv 操作都可以统一视为**“剪切并重命名”** 重命名文件 → 将该文件剪切并重命名于当前目录
mv oldname.txt newname.txt→mv oldname.txt ./newname.txt/
5. 文件查看与编辑命令
cat - 查看目标文件内容
代码语言:javascript
AI代码解释
cat [选项] [文件名]
- 选项:
-n:给所有行编号-b:给非空行编号-s:不输出连续空行
- 适用场景:
- 适合查看小文件内容
- 案例:
代码语言:javascript
AI代码解释
cat # 键盘输入 1,则显示器输出 1
cat filename.txt # 查看文件内容
当 cat 后面无目标时,则默认从输入设备读取数据
nano - 简单文本编辑器
代码语言:javascript
AI代码解释
nano filename # 使用nano编辑器
快捷键:Ctrl+X退出,Y保存,N不保存,Enter确定
输入/输出重定向命令
cat - 输入重定向
- 输入重定向
<:从指定文件读取数据
代码语言:javascript
AI代码解释
cat < [文件名] # 读取文件内容
cat < file.txt # 从文件读取
现阶段我们可以近似认为
cat filename == cat filename
echo - 输出重定向
- 输出重定向
>:清空目标文件后写入新内容 - 追加重定向
>>:在目标文件末尾追加内容
代码语言:javascript
AI代码解释
echo [字符串] (> [文件名]) # 打印字符串或写入文件
echo "hello" > file.txt # 覆盖写入
echo "world" >> file.txt # 追加写入
//也可以用 printf -- 默认不带 换行符
使用 输出重定向
>时, 若目标文件不存在则会自动创建一个**(类touch 功能)**
- 功能:
- 输出字符串到标准输出或文件
- 特点:
- 默认带 换行符(与printf不同)
- echo之后的内容统一当字符串处理 (
echo hello→echo "hello")
所以
echo指令默认将信息输向显示器这个文件,重定向就是改变其目标文件 — Linux 中一切皆文件
指令操作路径的通用性:
许多指令除了可以用选项修饰外,还可以直接操作指定路径下的文件:
代码语言:javascript
AI代码解释
# 使用ls查看指定路径的文件
ls [目录]/[文件名] # 查看指定路径下的文件
ls ../[文件名] # 查看上级目录中的文件
# 使用rm删除指定路径的文件
rm [目录]/[文件名] # 删除指定路径下的文件
rm ../[文件名] # 删除上级目录中的文件
# 其他命令同样适用
cat /path/to/file # 查看指定路径文件内容
mkdir /path/to/dir # 在指定路径创建目录
more - 分页查看文件
代码语言:javascript
AI代码解释
more [选项] [文件]
和
cat功能类似,但more更适合用于查看大文本文件,支持分页显示
- 选项:
-n对输出的所有行编号
- 操作:
- 按回车逐行下翻**(不支持上翻)**,按
q退出
- 按回车逐行下翻**(不支持上翻)**,按
less - 高级分页查看
代码语言:javascript
AI代码解释
less [参数] [文件]
比more更强大,支持上下翻页和搜索
- 选项:
-i:忽略搜索时的大小写-N:显示每行的行号
- 操作:
/字符串:向下搜索?字符串:向上搜索n:重复前一个搜索N:反向重复前一个搜索q:退出
head - 查看文件开头
代码语言:javascript
AI代码解释
head [参数] [文件]
显示文件开头部分,默认显示前10行
- 选项:
-n<行数>指定显示的行数
tail - 查看文件末尾
代码语言:javascript
AI代码解释
tail [参数] [文件]
显示文件末尾部分,默认显示后10行
- 选项:
-n<行数>:指定显示的行数-f:循环读取,实时监控文件变化(常用于查看日志)
组合使用案例:
代码语言:javascript
AI代码解释
# 获取文件的第50行内容
seq 1 100 > test # 生成1到100的序列装入test
//不用 less 搜索如何获取文件中间部分内容?
# 方法1:使用临时文件
head -50 test > tmp
tail -1 tmp
# 方法2:使用管道 |是
head -50 test | tail -1
管道也可以看成一个临时文件,用于传输数据 — 右侧 → 左侧 支持流水线工作
6. 文件搜索命令
find - 在指定路径下查找文件
代码语言:javascript
AI代码解释
find [目录] [选项] [操作]
find命令功能强大,提供了相当多的查找条件 ---- 只要有访问权限就能查
- 常用选项:
-name:按照文件名查找文件
- 特点:
- 即使系统中含有网络文件系统(NFS),find命令在该文件系统中同样有效
- 遍历大的文件系统可能会花费很长时间,建议放在后台执行
- 功能强大,支持多种复杂的查找条件组合
案例:
代码语言:javascript
AI代码解释
// 按文件名匹配
find ~ -name test.c # 从 /home 目录开始查找名为 test.c 的文件
// 按文件后缀匹配
find ~ -name *.c # 从 /home 目录开始查找文件后缀为 .c 的文件
// 在其他路径查找
find /usr/bin -name ls # 从 /usr/bin 目录开始查找名为 ls 的文件
注意:find命令可能访问磁盘,消耗资源较多
which - 在指令路径下查找(例如:/usr/bin……)
代码语言:javascript
AI代码解释
which [选项] [命令名]
which命令用于查找可执行文件的绝对路径
- 常用选项:
-a:显示所有匹配的路径,而不仅仅是第一个
- 特点:
- 专门用于查找可执行文件(命令)
- 只在PATH环境变量指定的路径中查找
- 查找速度快,资源消耗少
案例:
代码语言:javascript
AI代码解释
which ls # 查找ls命令的路径
which grep # 查找grep命令的路径
which -a python # 查找所有名为python的可执行文件路径
which git # 查找git命令的路径
whereis - 在系统特定路径下查找
代码语言:javascript
AI代码解释
whereis [选项] [文件名]
whereis命令用于查找程序的二进制文件、源代码文件和手册页
- 常用选项:
-b:只查找二进制文件-m:只查找手册页文件-s:只查找源代码文件
- 特点:
- 功能介于which和find之间
- 在标准系统目录中查找(如/bin, /usr/bin, /usr/local/bin等)
- 可以同时查找二进制文件、源代码和手册页
- 查找速度较快
案例:
代码语言:javascript
AI代码解释
whereis ls # 查找ls相关的所有文件
whereis -b gcc # 只查找gcc的二进制文件
whereis -m printf # 查找printf的手册页
whereis python # 查找python相关的所有文件
总结对比:
find:功能最强大,可在任意指定路径深度搜索,支持复杂条件which:专门用于查找可执行命令,只在PATH路径中搜索whereis:在系统标准目录中查找程序的二进制、源码和手册页
grep - 文本搜索指令
代码语言:javascript
AI代码解释
grep [选项] [目标字符串] [目标文件]
grep命令是强大的文本搜索工具:在文本文件中搜索字符串,并将匹配行打印出来
- 常用选项:
-i:忽略大小写的不同,所以大小写视为相同-n:顺便输出行号-v:反向选择,亦即显示出没有’搜寻字符串’内容的那一行
案例:
代码语言:javascript
AI代码解释
grep "hello" file.txt # 在file.txt中搜索包含"hello"的行
grep -i "error" logfile.log # 忽略大小写搜索"error"
grep -n "function" script.js # 显示匹配行及行号
grep -v "debug" config.conf # 显示不包含"debug"的行
7. 压缩与解压命令
zip/unzip - ZIP格式压缩解压
代码语言:javascript
AI代码解释
# 压缩
zip 压缩文件.zip 目录或文件
# 解压
unzip 压缩文件.zip [-d 目标目录]
- 常用选项:
-r:递归处理,将指定目录下的所有文件和子目录一并处理
案例:
代码语言:javascript
AI代码解释
zip test2.zip test2/* # 将test2目录压缩
unzip test2.zip -d /tmp # 解压到tmp目录
tar - 打包/解包命令
代码语言:javascript
AI代码解释
tar [-cxtzjvf] 文件与目录... [参数]
参数:
-c:建立一个压缩文件的参数指令(create的意思)-x:解开一个压缩文件的参数指令-t:查看tarfile里面的文件-z:是否同时具有gzip的属性?亦即是否需要用gzip压缩?-j:是否同时具有bzip2的属性?亦即是否需要用bzip2压缩?-v:压缩的过程中显示文件-f:使用档名,在f之后要立即接档名-C:解压到指定目录
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)