返回文章列表

Linux 学习笔记(一):基础入门

2026年6月26日16 分钟阅读

Linux 发展简史

Unix 的诞生(1969)

1969 年,Ken Thompson 和 Dennis Ritchie 在贝尔实验室用汇编语言写出了 Unix 的原型。1973 年,Dennis Ritchie 用 C 语言重写了 Unix,使其具备了可移植性,Unix 开始在学术界和企业广泛传播。

GNU 计划与自由软件运动(1983)

1983 年,Richard Stallman 发起 GNU 计划(GNU's Not Unix),目标是创建一个完全自由的类 Unix 操作系统。GNU 开发了 GCC(编译器)、Emacs(编辑器)、Bash(Shell)等核心工具,但缺少一个关键部分——内核

Linux 内核诞生(1991)

1991 年,芬兰大学生 Linus Torvalds 出于学习目的,开发了一个 Unix-like 内核,最初在 Minix 新闻组发布:

"I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones."

同年 9 月 17 日,Linux 0.01 版公开发布,约 1 万行代码。Linus 采用 GPL 许可证,使其与 GNU 工具链结合,形成了完整的操作系统。

命名由来

Linus 最初想将内核命名为 Freax(Free + Unix),但他的同事 Ari Lemmke 在给 FTP 服务器创建目录时,觉得 Freax 不好听,直接用了 Linus 的名字 + Unix,取名为 Linux

重要里程碑

年份事件
1991Linus Torvalds 发布 Linux 0.01
1992Linux 采用 GPL 许可证
1993Slackware、Debian 发行版诞生
1994Linux 1.0 发布(176,250 行代码)
1996Tux 企鹅被选为 Linux 官方吉祥物
1998开源(Open Source)概念正式提出
2001Linux 2.4 发布,支持 USB、蓝牙
2003Linux 2.6 发布,SMP、NUMA 支持
2005Git 版本控制系统诞生
2007Android 基于 Linux 内核发布
2024Linux 6.x 持续演进

Tux——Linux 官方吉祥物
Tux——Linux 官方吉祥物

Tux(Torvalds UniX)是 Linux 的官方吉祥物,由 Larry Ewing 在 1996 年创作。Linus 曾开玩笑说想被企鹅咬一口,于是这只胖企鹅成了开源世界的标志。

主流发行版

发行版特点包管理
Debian稳定、社区驱动,Ubuntu 的基础apt
Ubuntu用户友好、新手首选apt
CentOS / RockyRHEL 上游,企业服务器yum / dnf
Fedora新技术先行dnf
Arch Linux滚动更新,进阶用户pacman
Alpine极简,Docker 首选apk
openEuler华为开源,信创生态核心yum / dnf

速查卡片

想做什么用这个命令
查看当前目录pwd
列出文件ls -lh
切换目录cd /path
复制文件cp -r src dst
移动/重命名mv old new
删除文件rm -rf dir
创建目录mkdir -p a/b/c
查看文件cat file / less file
跟踪日志tail -f app.log
搜索内容grep -r "关键词" .
查看帮助man 命令
提权执行sudo 命令
安装软件apt install 软件名
修改权限chmod 755 file
查看进程ps -ef | grep 关键词
终止进程kill -9 PID
启动服务systemctl start 服务名
查看日志journalctl -xe
编辑文件vim 文件名
保存退出 vimEsc → :wq
查看端口ss -tlnp
远程连接ssh user@host
编辑定时任务crontab -e
查看磁盘df -h
搜索文件find / -name "*.log"
打包压缩tar -czvf a.tar.gz dir
关机shutdown -h now
设置别名alias ll='ls -lh'

第一周:上手

目标是能在终端中自由移动、查看文件、做基本操作。

1.1 命令行快捷键

快捷键功能
Ctrl + L清屏(等效 clear
Ctrl + D退出当前登录
Tab自动补全命令/路径
Ctrl + A跳到行首
Ctrl + E跳到行尾
Ctrl + U删除到行首
Ctrl + K删除到行尾
Ctrl + W删除前一个单词
Ctrl + R搜索历史命令
Ctrl + C终止当前命令
Ctrl + Z暂停当前命令
/ 上/下一条历史命令

1.2 路径概念

  • 绝对路径:以根目录 / 为起点,如 /home/user/file.txt
  • 相对路径:以当前目录为起点,如 docs/file.txt../other/
  • 家目录~ 表示当前用户主目录,通常是 /home/用户名
  • 当前目录. 表示当前目录,.. 表示上级目录

1.3 man — 查看帮助

bash
1man 命令名        # 显示命令的详细手册
2man -k 关键词      # 搜索相关命令(按关键词)

进入 man 页面后按 q 退出,按空格翻页。

1.4 目录操作

pwd — 显示当前目录

bash
1pwd

cd — 切换工作目录

bash
1cd        # 进入用户主目录
2cd /      # 进入根目录
3cd ~      # 进入用户主目录
4cd -      # 返回进入此目录之前所在的目录
5cd ..     # 返回上级目录
6cd ../..  # 返回上两级目录

ls — 列出目录内容

bash
1ls        # 列出当前目录(隐藏文件除外)
2ls -a     # 显示所有文件,包括隐藏文件(. 开头)
3ls -l     # 以长格式显示详细信息(权限、大小、时间)
4ls -lh    # 人类可读文件大小(K、M、G)
5ls -la    # 以列形式显示所有文件
6ls -d     # 仅显示目录本身
7ls -R     # 递归显示子目录内容
8ls -S     # 按文件大小排序
9ls -t     # 按修改时间排序(最新在前)

ls -l 输出解释:

-rwxr-xr--  1 user group  4096 Jun 26 10:00 file.txt
^^^^^^^^^  权限(类型+所有者+组+其他)
           ^ 硬链接数
              ^^^^ 所有者
                   ^^^^ 所属组
                        ^^^^ 大小
                             ^^^^^^^^^^^ 修改时间
                                           ^^^^^^^^ 文件名

1.5 文件操作

touch — 创建空文件或更新时间戳

bash
1touch filename
2touch {a,b,c}.txt            # 创建 a.txt b.txt c.txt
3touch note_{1..5}.txt        # 创建 note_1.txt ~ note_5.txt

mkdir — 创建目录

bash
1mkdir dirname           # 创建单级目录
2mkdir -p parent/child   # 递归创建多层级目录

rmdir — 删除空目录

bash
1rmdir dirname   # 只能删除空目录

rm — 删除文件或目录

高危命令,没有回收站,删除后无法恢复。

bash
1rm file            # 删除文件
2rm -f file         # 强制删除(不提示)
3rm -i file         # 交互式删除(逐个确认)
4rm -r dir          # 递归删除目录及子目录
5rm -rf dir         # 强制递归删除(⚠️ 小心使用)
6rm -v file         # 显示删除过程

支持通配符 *

  • *.txt — 匹配所有 .txt 结尾的文件
  • data* — 匹配以 data 开头的文件
  • *2024* — 匹配文件名含 2024 的文件

cp — 复制文件或目录

bash
1cp source target              # 复制文件
2cp -r source_dir target_dir   # 递归复制目录
3cp -a source_dir target_dir   # 保留属性递归复制
4cp -i source target           # 覆盖前询问

mv — 移动或重命名

同一目录内移动 = 重命名。

bash
1mv source target     # 移动或重命名
2mv -i source target  # 覆盖前询问
3mv -b source target  # 覆盖前备份

1.6 查看文件

cat — 输出文件内容

bash
1cat file          # 显示内容
2cat -n file       # 显示行号
3cat f1 f2 > f3    # 合并多个文件

more / less — 分页查看

bash
1more file     # 按空格翻页,按 q 退出(只能向下)
2less file     # 更强大,支持上下键、搜索(/ 搜索)

head / tail — 首尾部分

bash
1head -n 10 file    # 前 10 行
2tail -n 10 file    # 后 10 行
3tail -f file       # 实时跟踪新增内容(查看日志最常用)

1.7 grep — 搜索文本

bash
1grep "pattern" file         # 在文件中搜索
2grep -r "pattern" dir       # 递归搜索目录
3grep -i "pattern" file      # 忽略大小写
4grep -n "pattern" file      # 显示行号
5grep -c "pattern" file      # 统计匹配行数
6grep -v "pattern" file      # 反向匹配(不含 pattern)
7grep -E "pat1|pat2" file    # 匹配多个模式

1.8 重定向

bash
1命令 > file       # 覆盖写入(将命令的输出写入文件)
2命令 >> file      # 追加写入
3命令 2> file      # 错误输出重定向
4命令 &> file      # 所有输出(含错误)重定向
5命令 < file       # 从文件读取输入作为命令的输入

1.9 管道 |

将左侧命令的输出作为右侧命令的输入。

bash
1命令A | 命令B
2
3cat file | grep keyword      # 过滤文件内容
4ls | wc -l                   # 统计文件数
5ps -ef | grep nginx          # 在进程列表中查找 nginx

1.10 echo — 输出内容

bash
1echo "hello world"    # 输出字符串
2echo $HOME            # 输出变量值
3echo `pwd`            # 反引号内作为命令执行
4echo $(pwd)           # 更现代的写法
5echo -e "a\nb\nc"     # 解析转义字符(换行)

1.11 文件类型与命令定位

file — 查看文件真实类型

bash
1file 文件名    # 不依赖扩展名,显示真实类型(如 JPEG、ASCII text)

which — 查找命令所在路径

bash
1which 命令名    # 如 which ls → /usr/bin/ls

type — 查看命令类型

bash
1type 命令名    # 显示是内置命令、别名还是外部程序

1.12 alias — 命令别名

bash
1alias                     # 列出所有已设别名
2alias ll='ls -lh'         # 设置别名
3alias rm='rm -i'          # 给 rm 加保护(删除前确认)
4unalias ll                # 取消别名
5
6# 永久生效:将 alias 命令写进 ~/.bashrc

练一练 1

  1. 用一条命令列出当前目录下所有文件,按修改时间排序(最新的在前)
  2. 创建一个嵌套目录 project/src/utils,然后在里面创建一个空文件 helper.py
  3. 查看 /etc/passwd 的前 5 行
  4. grep/etc/passwd 中搜索包含你的用户名的行
  5. ls -l错误输出重定向到 error.log(故意加一个不存在的路径)

第二周:提权与安装

学会切换用户、安装软件、管理用户和权限。

2.1 su / sudo — 用户切换与提权

su — 切换用户

bash
1su - [用户名]    # 切换到目标用户(- 加载环境变量)
2su -            # 切换到 root(需输入 root 密码)
  • 普通用户 → 其他用户:需要输入目标用户密码
  • root → 普通用户:无需密码
  • 退出当前用户:exitCtrl + D

sudo — 提权执行

普通用户通过 sudo 以 root 身份执行命令(需配置)。

bash
1sudo 命令                 # 以 root 执行
2sudo -i                   # 切换到 root shell

配置 sudo 免密:

bash
1# root 用户执行 visudo
2visudo
3
4# 文件末尾添加一行:
5用户名 ALL=(ALL) NOPASSWD: ALL
6
7# :wq 保存退出

设置 root 密码:

bash
1sudo passwd root

2.2 apt — 软件包管理

Ubuntu/Debian 系使用,需要 root 权限(加 sudo)。

bash
1sudo apt update               # 更新软件源
2sudo apt upgrade              # 升级全部软件
3sudo apt install 软件名        # 安装
4sudo apt remove 软件名         # 卸载(保留配置)
5sudo apt purge 软件名          # 卸载(删除配置)
6sudo apt search 关键词         # 搜索
7sudo apt info 软件名           # 查看软件包信息
8sudo apt autoremove            # 清理无用依赖
9sudo apt full-upgrade          # 完整系统更新

2.3 用户与组管理

以下命令需要 root 权限。

bash
1# 组操作
2groupadd 组名         # 创建组
3groupdel 组名         # 删除组
4
5# 用户操作
6useradd -m 用户名               # 创建用户并创建家目录
7useradd -m -g 组名 用户名        # 指定所属组
8userdel -r 用户名               # 删除用户及家目录
9passwd 用户名                   # 设置或修改密码
10usermod -aG 组名 用户名         # 将用户追加到附属组
11chsh -s /bin/bash 用户名        # 更改登录 shell
12
13# 查看
14id [用户名]          # 用户 ID、组 ID、附属组
15getent passwd        # 查看所有用户
16getent group         # 查看所有用户组

getent passwd 输出格式(7 段):

用户名:密码(x):用户ID:组ID:描述信息:HOME目录:默认Shell

2.4 rwx 权限详解

权限数值文件文件夹
r(读)4查看内容(cat)列出内容(ls)
w(写)2修改内容新建/删除/重命名内部文件
x(执行)1作为程序执行进入目录(cd)

2.5 chmod / chown / umask

chmod — 修改权限

只有文件所有者或 root 可以修改。

bash
1chmod [-R] 权限 文件或目录

符号表示法:

bash
1chmod u+x file             # 给所有者加执行
2chmod g-w file             # 移除组写权限
3chmod o+r file             # 给其他用户加读
4chmod u=rwx,g=rx,o=x file  # 精确设置 rwxr-x--x
5chmod -R u=rwx,g=rx,o=x dir   # 递归设置目录

数字表示法:

数字权限数字权限
7rwx3-wx
6rw-2-w-
5r-x1--x
4r--0---
bash
1chmod 755 file    # rwxr-xr-x(常用)
2chmod 644 file    # rw-r--r--(常用)
3chmod 700 file    # rwx------

chown — 修改所有者

bash
1chown [-R] [用户][:][] 文件或目录
2
3chown root file              # 仅改用户
4chown :root file             # 仅改组
5chown root:root file         # 同时修改
6chown -R user:group dir      # 递归修改

umask — 默认权限掩码

bash
1umask          # 查看当前掩码(默认 0022)
2umask 0027     # 设置掩码
  • 文件创建默认权限 = 666 - umask
  • 目录创建默认权限 = 777 - umask

2.6 wc — 数量统计

bash
1wc file       # 行数、单词数、字节数
2wc -l file    # 只统计行数
3wc -w file    # 只统计单词数
4wc -c file    # 只统计字节数

练一练 2

  1. 创建一个新用户 study 并设置密码,然后用 su 切换到该用户
  2. sudo apt install 安装一个软件(如 htop),然后卸载它
  3. 创建一个文件,用 chmod 600 改成仅自己可读写,再用 ls -l 验证
  4. 查看当前用户有哪些附属组:id 命令
  5. 统计 /etc/passwd 文件有多少行

继续阅读:Linux 学习笔记(二):进阶操作与系统管理 →

发表评论