首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux基本指令

Linux基本指令

作者头像
Nullmian
发布2025-12-24 15:04:25
发布2025-12-24 15:04:25
1820
举报

一、操作系统概述

1. 什么是操作系统?
  • 操作系统是一款专门进行软硬件资源 "管理" 的软件系统,它通过对下层硬件资源的高效管理和调度,为上层应用程序提供稳定、统一的运行环境。
  • 操作系统本质上是一个"管理者",负责协调和管理计算机系统中的所有硬件和软件资源。
2. 操作系统在计算机体系中的位置与贯穿作用

在计算机软硬件层次结构中,操作系统处于承上启下的关键位置,贯穿整个计算栈:

代码语言:javascript
复制
应用软件 (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
复制
ls [选项] [目录或文件]
  • 选项
    • -l:详细列表显示(可简写为 ll
    • -a:显示所有文件(包括隐藏文件)
    • -d:显示目录本身而非内容
    • -F:在每个文件名后附上一个字符说明文件类型
  • 组合使用ls -la(显示所有文件的详细信息)

指令是可以携带选项的 → 通过选项获得更加详细的输出


通配符的使用
  • *:匹配任意字符
  • [文件名].*:匹配指定名称的任何扩展名文件
  • *.[文件后缀]:匹配指定后缀的任何文件

案例

代码语言:javascript
复制
ls *          # 列出所有文件
ls test.*     # 列出所有名为test的文件
ls *.c        # 列出所有.c后缀的文件

文件类型标识
  • d:目录文件
  • -:普通文件
  • .:隐藏文件(以点开头的文件)
  • *:可执行的普通文件(使用ls -F时显示)
  • /:目录(使用ls -F时显示)
  • l:符号链接文件
  • b:块设备文件
  • c:字符设备文件


2. 目录导航命令
pwd - 显示当前目录
代码语言:javascript
复制
pwd  # 打印当前工作目录

cd - 切换目录
代码语言:javascript
复制
cd [目录路径]
  • 常用路径
    • cd ..:返回上级目录
    • cd ~:返回用户家目录
    • cd -:返回上一个访问的目录
    • cd /:返回根目录
  • 路径概念:
    • 绝对路径:从根目录(/)开始的完整路径,具有唯一性
    • 相对路径:从当前目录开始的路径,随工作目录变化
    • 选择原则
      • 配置文件、脚本中建议使用绝对路径
      • 命令行操作常用相对路径提高效率

案例

代码语言:javascript
复制
cd ..                  # 返回上级目录(相对路径)
cd /home/user/linux/   # 使用绝对路径切换
cd ../day02/           # 使用相对路径切换


4. 文件操作命令
touch - 创建空文件
代码语言:javascript
复制
touch filename.txt  # 创建新文件或更新文件时间戳

mkdir - 创建目录
代码语言:javascript
复制
mkdir [选项] [dirname]
  • 选项
    • -p:递归创建多级目录
  • 案例:
代码语言:javascript
复制
mkdir dirname      # 创建单个目录
mkdir -p a/b/c/d   # 递归创建多级目录

rmdir - 删除空目录
代码语言:javascript
复制
rmdir [选项] [dirname]
  • 选项
    • -p:递归删除多级空目录
  • 案例:
代码语言:javascript
复制
rmdir dirname      # 删除空目录
rmdir -p a/b/c     # 递归删除空目录链

rm - 删除文件或目录
代码语言:javascript
复制
rm [选项] [filename/dirname]
  • 选项
    • -r:递归删除删除目录及其下所有文件
    • -f:强制删除,不提示
    • -i:删除前逐一询问确认
  • 案例:
代码语言:javascript
复制
rm filename        # 删除文件
rm -r dirname      # 递归删除目录及其内容
rm -f filename     # 强制删除,不提示
rm -i filename     # 删除前询问确认

注意rm是一个危险命令,Linux中没有回收站机制,删除后难以恢复



5. 文件拷贝与移动命令
cp - 拷贝目标文件/目录(同一目录下不能有重名文件)
代码语言:javascript
复制
cp [选项] [源文件或目录] [目标文件或目录]
  • 选项
    • -f:强制复制,覆盖已存在文件
    • -i:覆盖前询问用户
    • -r-R:递归复制目录及其内容

可以发现它和rm的选项几乎一模一样

  • 案例:
代码语言:javascript
复制
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
复制
mv [选项] 源文件或目录 目标文件或目录
  • 选项
    • -f:强制移动,覆盖已存在文件
    • -i:覆盖前询问用户
  • 案例
代码语言:javascript
复制
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/


6. 文件查看与编辑命令
cat - 查看目标文件内容
代码语言:javascript
复制
cat [选项] [文件名]
  • 选项
    • -n:给所有行编号
    • -b:给非空行编号
    • -s:不输出连续空行
  • 适用场景:
    • 适合查看小文件内容
  • 案例:
代码语言:javascript
复制
cat            # 键盘输入 1,则显示器输出 1

当 cat 后面无目标时,则默认从输入设备读取数据


nano - 简单文本编辑器
代码语言:javascript
复制
nano filename  # 使用nano编辑器

快捷键:Ctrl+X退出,Y保存,N不保存,Enter确定


输入/输出重定向命令
cat - 输入重定向
  • 输入重定向 <:从指定文件读取数据
代码语言:javascript
复制
cat < [文件名]        # 读取文件内容

cat < file.txt       # 从文件读取

现阶段我们可以近似认为 cat filename == cat filename


echo - 输出重定向
  • 输出重定向 >:清空目标文件后写入新内容
  • 追加重定向 >>:在目标文件末尾追加内容
代码语言:javascript
复制
echo [字符串] (> [文件名])  # 打印字符串或写入文件

echo "hello" > file.txt    # 覆盖写入
echo "world" >> file.txt   # 追加写入

//也可以用 printf -- 默认不带 换行符

使用 输出重定向 >时, 若目标文件不存在则会自动创建一个(类touch 功能)

  • 功能
    • 输出字符串到标准输出或文件
  • 特点
    • 默认带 换行符(与printf不同)
    • echo之后的内容统一当字符串处理 (echo helloecho "hello")

所以echo指令默认将信息输向显示器这个文件,重定向就是改变其目标文件 --- Linux 中一切皆文件


指令操作路径的通用性:
许多指令除了可以用选项修饰外,还可以直接操作指定路径下的文件
代码语言:javascript
复制
# 使用ls查看指定路径的文件
ls [目录]/[文件名]        # 查看指定路径下的文件
ls ../[文件名]           # 查看上级目录中的文件

# 使用rm删除指定路径的文件  
rm [目录]/[文件名]       # 删除指定路径下的文件
rm ../[文件名]          # 删除上级目录中的文件

# 其他命令同样适用
cat /path/to/file      # 查看指定路径文件内容
mkdir /path/to/dir    # 在指定路径创建目录

more - 分页查看文件
代码语言:javascript
复制
more [选项] [文件]

cat 功能类似,但more更适合用于查看大文本文件,支持分页显示

  • 选项
    • -n 对输出的所有行编号
  • 操作
    • 按回车逐行下翻(不支持上翻),按q退出

less - 高级分页查看
代码语言:javascript
复制
less [参数] [文件]

比more更强大,支持上下翻页和搜索

  • 选项
    • -i:忽略搜索时的大小写
    • -N:显示每行的行号
  • 操作
    • /字符串:向下搜索
    • ?字符串:向上搜索
    • n:重复前一个搜索
    • N:反向重复前一个搜索
    • q:退出

head - 查看文件开头
代码语言:javascript
复制
head [参数] [文件]

显示文件开头部分,默认显示前10行

  • 选项
    • -n<行数> 指定显示的行数

tail - 查看文件末尾
代码语言:javascript
复制
tail [参数] [文件]

显示文件末尾部分,默认显示后10行

  • 选项
    • -n<行数>:指定显示的行数
    • -f:循环读取,实时监控文件变化(常用于查看日志)

组合使用案例

代码语言:javascript
复制
# 获取文件的第50行内容
seq 1 100 > test # 生成1到100的序列装入test

# 方法1:使用临时文件
head -n50 test > tmp
tail -n1 tmp

# 方法2:使用管道
head -n50 test | tail -n1


7. 时间与日期命令
date - 显示或设置时间
代码语言:javascript
复制
date [选项]... [+格式]
  • 显示格式
    • %H : 小时(00..23)
    • %M : 分钟(00..59)
    • %S : 秒(00..61)
    • %X : 相当于 %H:%M:%S
    • %d : 日 (01..31)
    • %m : 月份 (01..12)
    • %Y : 完整年份 (0000..9999)
    • %F : 相当于 %Y-%m-%d
  • 设置时间(需要root权限):
代码语言:javascript
复制
date -s "2023-10-15 12:30:00"
  • 时间戳操作
代码语言:javascript
复制
date +%s              # 获取当前时间戳
date -d@1508749502    # 时间戳转换为时间
cal - 显示日历
代码语言:javascript
复制
cal [选项] [[月] 年]

显示公历日历



8. 程序编译与执行
gcc - C程序编译
代码语言:javascript
复制
gcc source.c -o output  # 编译C程序
程序执行
代码语言:javascript
复制
./output  # 执行编译后的程序


9. 用户信息命令
whoami - 显示当前用户
代码语言:javascript
复制
whoami  # 显示当前登录用户名
用户目录结构
  • root用户:家目录为 /root(只能有一个管理员)
  • 普通用户:家目录为 /home/username(可以有多个用户)


10. 目录结构可视化
tree - 树状显示目录结构
代码语言:javascript
复制
# 首先安装tree工具(需要root权限)
yum install -y tree

# 使用tree命令
tree [目录名]  # 以树状形式显示目录结构


11. 清屏命令
clear - 清空终端屏幕
代码语言:javascript
复制
clear  # 清空当前终端显示内容


12. 手册查看命令

Linux中有很多选项,我们不可能全记住,此时我们就能通过查阅数据手册来获取帮助

man - 查阅指令/函数的手册文档
代码语言:javascript
复制
man [选项] [命令/函数]
  • 选项
    • -k:根据关键字搜索联机帮助
    • num:只在第num章节找
    • -a:显示所有章节的内容
  • 手册章节
  1. 普通命令
  2. 系统调用(如open,write)
  3. 库函数(如printf,fread)
  4. 特殊文件(/dev下的设备文件)
  5. 文件格式(如passwd文件的字段含义)
  6. 游戏
  7. 附件和全局变量
  8. 系统管理命令(只能由root使用)

若不指定章节,man会从第1章开始逐个搜索,直到找到匹配项 使用Ctrl + Z退出手册




五、Linux 目录结构理解

树形目录结构

Linux 采用树形目录结构,特点包括:

  • 根目录(/)为唯一起点
  • 中间节点都是非空目录
  • 叶子节点是文件或空目录
  • 路径具有唯一性(每个节点只有一个父节点)

Linux的目录结构整体是一个多叉树

  • 叶子节点:空目录、非空目录或普通文件
  • 中间节点:一定是非空目录
  • 所有对文件的增删查改,本质都是对这棵多叉树的增删查改
  • 定位文件通常使用路径进行定位,路径是唯一的
特殊目录
  • .:当前目录
  • ..:上级目录
  • ~:当前用户家目录



六、文件系统概念深入

文件 = 属性 + 内容
  • 即使空文件也占用磁盘空间:文件属性(元数据)也需要存储空间
  • 文件属性包括:文件名、大小、权限、时间戳、所有者等
  • 文件操作包括对内容和对属性的操作

就像在C语言中创建了一个变量,即使没初始化,也会占据内存空间(如int类型占4字节),创建空文件时,系统也需要存储其属性信息。

所有 ls + 选项的操作都是针对文件属性的,因为它们主要显示文件的元数据信息而非文件内容。

文件操作的本质

在 Linux 中,所有文件操作本质上都是对多叉树结构的增删查改。




七、操作界面快捷键

  • Alt + Enter:打开/取消Shell全屏显示
  • Ctrl + Shift + C/V:复制/粘贴(需要加Shift键)
  • Ctrl + C:强制终止当前命令
  • Ctrl + Z:退出手册或暂停当前进程

案例

代码语言:javascript
复制
while :; do echo "hello linux"; done  # 无限循环输出

# 使用Ctrl+C终止该命令

八、安全删除实践

创建回收站机制

通过修改~/.bashrc文件,可以实现rm命令的安全改造:

代码语言:javascript
复制
vim ~/.bashrc  # 修改配置文件

# 添加以下内容:
mkdir -p ~/.trash  # 创建回收站目录

alias rm=trash     # 将rm重定向到trash函数
alias ur=undelfile # 设置恢复命令

undelfile() {
  mv -i ~/.trash/\$@ ./
}

trash() {
  mv $@ ~/.trash/
}

这样配置后:

  • rm命令会将文件移动到~/.trash目录而不是直接删除
  • ur命令可以恢复被"删除"的文件



九、推荐学习资源

经典书籍
  1. 《现代操作系统》 - Andrew S. Tanenbaum
  2. 《操作系统精髓与设计原理》 - William Stallings
  3. 《深入理解计算机系统》 - Randal E. Bryant
  4. 《鸟哥的Linux私房菜》 - 适合初学者的字典级参考书
实践建议
  1. 多使用命令行操作,培养熟练度
  2. 理解每个命令的参数和选项含义
  3. 学会查阅手册页:man command
  4. 尝试编写Shell脚本自动化常见任务



十、学习路径建议

  1. 采用对比学习:采用Linux命令行操作和Windows图形界面操作对比的方式来学习
  2. 掌握基础操作:先掌握基本文件和目录操作
  3. 理解权限系统:理解用户权限和文件权限系统
  4. 学习文本处理:学习文本处理工具(grep, sed, awk)
  5. 掌握系统监控:掌握进程管理和系统监控
  6. 脚本编程:学习Shell脚本编程
  7. 深入原理:深入了解Linux系统原理

通过系统学习和不断实践,逐步建立起对Linux操作系统的深入理解,为后续的系统编程和网络编程打下坚实基础


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、操作系统概述
    • 1. 什么是操作系统?
    • 2. 操作系统在计算机体系中的位置与贯穿作用
    • 3. 操作系统的必要性
  • 二、操作系统类比理解
    • 企业架构类比
    • 优秀操作系统的衡量标准
  • 三、Linux 操作系统特点
    • 1. 交互方式
    • 2. 设计哲学
  • 四、Linux 基础命令详解
    • 理解Linux指令的本质
    • 1. 文件目录操作命令
      • ls - 列出目录内容
      • 通配符的使用
      • 文件类型标识
    • 2. 目录导航命令
      • pwd - 显示当前目录
      • cd - 切换目录
    • 4. 文件操作命令
      • touch - 创建空文件
      • mkdir - 创建目录
      • rmdir - 删除空目录
      • rm - 删除文件或目录
    • 5. 文件拷贝与移动命令
      • cp - 拷贝目标文件/目录(同一目录下不能有重名文件)
      • mv - 移动并重命名文件
    • 6. 文件查看与编辑命令
      • cat - 查看目标文件内容
      • nano - 简单文本编辑器
    • 输入/输出重定向命令
      • cat - 输入重定向
      • echo - 输出重定向
    • 指令操作路径的通用性:
      • 许多指令除了可以用选项修饰外,还可以直接操作指定路径下的文件:
      • more - 分页查看文件
      • less - 高级分页查看
      • head - 查看文件开头
      • tail - 查看文件末尾
    • 7. 时间与日期命令
      • date - 显示或设置时间
      • cal - 显示日历
    • 8. 程序编译与执行
      • gcc - C程序编译
      • 程序执行
    • 9. 用户信息命令
      • whoami - 显示当前用户
      • 用户目录结构
    • 10. 目录结构可视化
      • tree - 树状显示目录结构
    • 11. 清屏命令
      • clear - 清空终端屏幕
    • 12. 手册查看命令
      • man - 查阅指令/函数的手册文档
  • 五、Linux 目录结构理解
    • 树形目录结构
    • 特殊目录
  • 六、文件系统概念深入
    • 文件 = 属性 + 内容
    • 文件操作的本质
  • 七、操作界面快捷键
  • 八、安全删除实践
    • 创建回收站机制
  • 九、推荐学习资源
    • 经典书籍
    • 实践建议
  • 十、学习路径建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档