Linux 一文快速入门

发布于:2025-04-13 ⋅ 阅读:(42) ⋅ 点赞:(0)

PS:本篇笔记总结了 Linux 的关键知识点,欢迎访问我的博客:Dasi’s Blog查看更多知识

Linux 介绍

什么是 Linux

Linux 是由芬兰人林纳斯·托瓦兹(Linus Torvalds)创建的操作系统内核(kernel),遵循 POSIX 标准,并继承了 Unix 的多用户、多任务、多线程、多 CPU 支持等设计,并且重新实现了 Unix 的功能和 API

Linux 最常用于服务器,并且具有绝对的统治地位

  1. 稳定:可以持久运行,不关机不崩溃
  2. 安全性高:用户权限分明,只有超级用户(root)具有全部权限
  3. 开源免费:企业可以根据自己需求魔改系统
  4. 轻量:不需要很高的配置,没有臃肿的界面和不必要的服务
  5. 自动化:支持 shell 脚本,自动化程度高

组成

Linux 发行版 = Kernel + GNU + Shell + 应用程序 + 包管理系统(常见的有 Ubuntu、CentOS 和 Debian)

在这里插入图片描述

Linux 内核:负责软件与硬件之间的交互,调度进程、管理内存、文件系统、网络等底层资源

GNU(GNU’s Not Unix):负责用户与内核之间的交互,是用户操作 Linux 内核的工具集,是由 Richard Stallman 发起的一个自由软件项目,目标是开发一个完全自由、拒绝专有软件且兼容 UNIX 的操作系统,提供了各种基础命令(ls、mv、chmod等)、编译器(GCC)、调试器(GDB)、C 标准库(glibc)、文本编辑器(nano)、构建工具(make)

Shell:负责将文本命令转化为机器指令,本义是外壳,又称为命令行解释器,可以自动执行一系列命令,实现任务自动化,常见的有 bash、sh、zsh 等

包管理系统(Package Manager):负责管理软件的安装、升级、配置和卸载,可以通俗地理解为是 Linux 的 “AppStore”,常见的有 apt、dnf 和 pacman

应用程序:利用内核 API 实现的各种软件,如图形用户界面(GNOME)、网络浏览器(Firefox)、办公软件(LibreOffice)、文件浏览器、集成开发环境(VSCode)等

开机

过程

  1. 加电开机:运行主板上的 BIOS,进行 POST,检查内存、CPU 和硬件是否正常,并初始化基本的硬件环境
  2. 引导加载器:读取并运行硬盘上 /boot 分区中的 Bootloader,负责将 Linux 内核加载到内存中,并将控制权转移给内核
  3. 内核初始化:内核开始初始化核心组件,如内存管理、设备驱动、文件系统等,然后启动第一个用户空间进程 init/systemd
  4. 设定系统级别:init/systemd 根据配置决定系统要进入哪个 runlevel/target
  5. 启动服务:系统按照配置顺序依次启动各种服务和守护进程,例如网络管理、时间同步、日志记录、声音系统、图形界面服务等
  6. 用户登录:所有服务启动完成后,系统会提供登录界面,用户输入用户名和密码进入用户空间,可以开始正常管理系统、运行程序、执行命令等

在这里插入图片描述

运行级别(runlevel) 运行目标(target) 定义
0 poweroff.target 关机
1 rescue.target 单用户模式,无网络,命令行界面,具有root权限,禁止远程登录,用于系统维护
2 multi-user.target 多用户模式,无网络,命令行界面
3 multi-user.target 多用户模式,有网络,命令行界面
4 multi-user.target 保留,供用户自定义
5 graphical.target 多用户模式,有网络,图形界面
6 reboot.target 重启

有关的命令为:

  • 切换目标
    sudo systemctl isolate <target>
    
  • 获取默认目标
    systemctl get-default
    
  • 切换默认目标
    sudo systemctl set-default <target>
    

命令元知识

命令的通用语法为

[command] [options] ([options_value]) [arguments]
  • command:命令
  • options:选项,以 - 或者 -- 开头,用来指示命令的执行方式
    • 可以在一个命令中提供多个选项,如 ls -l -a -t
    • 有些选项是没有选项值的,而有些选项是必须提供选项值的
    • 选项值必须紧跟在对应选项后面
    • 没有选项值的选项可以合并,如 ls -lat
  • arguments:参数,也就是命令作用的对象,可以理解为 command 就是一个函数,arguments 就是函数的传参

其中有些选项是大部分命令都支持的,注意不是全部!

  • -h 或 --help:显示帮助说明
  • –version:显示版本信息
  • -v:显示执行过程,verbose 意味冗长的
  • -f:强制执行,force
  • -r 或 -R:递归执行,recursive
  • -i:执行前要求用户确认,interactive

命令前缀不属于命令语法结构,而是在 shell 显示的环境信息,常见格式为

[username]@[hostname]:[path][symbol]
  • username:显示当前登录用户的用户名
  • hostname:表示当前机器的主机名
  • path:显示当前工作目录的路径,其中 ~ 表示用户的主目录
  • symbol:用于指示命令行等待输入,$ 表示为普通用户,# 表示为超级用户

Linux 文件/目录管理

系统目录介绍

在 Linux 中,一切都是文件,只是执行方式不同而已

  • /:根目录,所有文件和目录都从这里开始
  • /bin:存放系统启动和基本操作所需的核心程序和命令
  • /sbin:存放仅超级用户使用的系统管理所需的核心程序和命令
  • /lib:存放库文件
  • /boot:存放内核和启动加载器
  • /dev:存放外部设备文件,提供对硬件设备的接口
  • /etc:存放系统和程序的全局配置文件
  • /usr:存放用户级应用程序和文件
  • /run:存放系统运行时生成的临时文件
  • /var:存放经常变化的数据,如日志、缓存等
  • /tmp:存放临时文件,系统重启后通常会被自动清空
  • /home:存放普通用户的主目录
  • /opt:存放可选的附加软件或第三方应用程序

在这里插入图片描述

查看目录内容:ls

ls [options] [dirname/filename]
选项 全称 说明
-l –format=long 以长格式显示,包含权限、所有者、大小、修改时间等详细信息
-a –all 显示所有文件,包括隐藏文件(以.开头)
-h –human-readable 文件大小以KB、MB、GB显示
-t –sort=time 按修改时间排序,默认新文件在前
-r –reverse 反转排序结果,配合-t时让旧文件在前
-R –recursive 递归显示子目录内容

如果不指定目录名或文件名,则默认展示当前目录

每个文件属性按照顺序分别为:

  1. 文件类型
    • -:普通文件
    • d:目录文件,dictionary
    • l:符号链接,link
    • c:字符设备,char
    • b:块设备,block
    • s:套接字,socket
    • p:管道文件,pipe
  2. 文件权限:三个为一组,每组都代表 rwx(readable, writeable, executable),如果存在权限则显示字母,否则显示 -,其中每组分别代表
    • 属主(user):创建该文件的人
    • 属组(group):与属主供处于同一个用户组的用户
    • 其他(others):不在属主所处用户组的其他用户
  3. 硬链接数:表示有多少个目录条目指向这个文件
  4. 属主和属组:创建文件的用户名和该文件所属的用户组
  5. 文件大小:单位是字节,对目录而言是 4096,对普通文件就是实际大小
  6. 最后修改时间:显示月+日+时间,如果修改时间离当前时间超过半年,会显示年份替代时间
  7. 文件名:就是文件或目录的名字,如果是链接,后面会有 -> 指向目标路径

在这里插入图片描述

查看目录路径:pwd

pwd 没有参数,就是简单的查看当前的完整绝对路径

切换目录路径:cd

cd [path]
path 形式 说明
切换到当前用户的主目录
~ 切换到当前用户的主目录
返回上级目录
…/… 返回上上级目录
- 返回上一次所在目录
/ 切换到根目录
相对路径 进入指定的相对路径目录
/绝对路径 进入指定的绝对路径目录

Linux 路径是大小写敏感的

创建目录:mkdir

mkdir 就是在当前目录下创建一个子目录,如果需要创建多级目录,需要提供选项 -p

销毁目录/文件:rm

选项 作用
删除文件或空目录
-i 交互模式,提示是否确认删除
-r 递归删除目录及其内容
-f 强制删除,不提示确认
-rf 递归+强制,删除一切,终极指令

rmdir 命令用于删除空目录,目录非空会提示失败

复制目录/文件:cp

cp [options] [source1 source2 ...] [destination]
选项 作用
-r 递归复制目录及其内容
-i 交互模式,覆盖前提示确认
-f 强制覆盖,不提示
-n 禁止覆盖已有文件
-v 显示复制过程
-u 仅当源文件比目标文件新时才复制

cp 的用法示例

cp -r dir1/ dir2/ # 复制目录
cp a.txt b.txt    # 复制文件在当前目录
cp a.txt /tmp/    # 复制文件到指定目录
cp file1 file2 file3 /backup/ # 复制多个文件到指定目录

cp 允许指定多个源,但只允许指定一个目的地

更新文件:touch 和 mv

touch 用于新建文件或改变文件时间戳

touch [options] [filename]
touch newfile.txt # 创建单个空白文件
touch file{1..3}.txt # 创建多个空白文件
touch -d "2023-04-01 12:34:56" file.txt # 更改时间戳
touch -t 20230401124356 file.txt # 更改时间戳
touch -r file.txt file2.txt # 更改时间戳
选项 作用
-d 指定字符串来更新,如 “2023-04-11 12:00”
-t 指定时间格式来更新,如 202404111200
-r 指定另一个文件的时间戳来更新

mv 用于移动文件或重命名文件

mv [options] [filename] [newfilename/dirname]
mv file.txt /path/
mv oldname.txt newname.txt
选项 作用
-i 交互模式,覆盖前提示确认
-f 强制覆盖,不提示
-n 禁止覆盖已有文件
-v 显示操作过程

Linux 文本处理

文本显示:cat、less/more、head/tail

cat 用于快速显示小文件的全部内容,也可以拼接多个文件一起输出

cat [options] [filename]
选项 功能
-n 显示行号
-A 显示所有字符

less/more 用于分页查看大文件,支持向上、向下滚动,搜索关键词,跳转到指定行,退出时不刷新终端内容

cat [filename]
按键 功能
q 退出
Space 向下翻页
b 向上翻页
↑ / ↓ 上下滚动一行
g 跳转到文件开头,位于顶部
G 跳转到文件末尾,作为底部
n 跳转到下一个匹配项,位于顶部
N 跳转到上一个匹配项,位于顶部
g 跳转到第number行,位于顶部
/关键词 向下搜索
?关键词 向上搜索
h 显示帮助

head/tail 用于查看文件前/后几行,默认为10行,利用选项 -n N 可以指定行数

head [options] [filename]
tail [options] [filename]

文本搜索:grep

grep 全称 Global Regular Expression Print,即全局正则表达式查找打印,用于在文本中查找匹配内容,并把含有它的整行打印出来

grep [options] ["pattern"] [filename]
选项 说明
-i 忽略大小写
-n 显示行号
-v 反向匹配,显示不包含匹配内容的行
-r 递归搜索目录下的所有文件
-l 只显示匹配的文件名,不显示内容
-c 只显示匹配行的数量
-E 支持扩展正则表达式

文本统计:wc、cut、uniq、sort

这些命令的语法都为

[command] [options] [filename]

wc 用于计数文本内容,如行数、字段数、字节数

选项 说明
-l 统计行数
-w 统计字段数,以空格分隔
-c 统计字节数

cut 用于按列提取文本字段

选项 说明
-f 必须的,指定要提取的字段编号
-d 可选的,指定字段分隔符,默认为制表符

uniq 用于去除相邻的重复行,通常配合 sort 使用

选项 说明
-c 显示每行出现的次数
-d 仅显示相邻且重复的行
-u 仅显示相邻且不重复的行

sort 用于对文本行进行排序,支持字典序、数字、反向等排序方式

选项 说明
-n 按数值排序
-r 反向排序(降序)
-u 去重排序

文本修改

Linux 用户管理

查看用户:groups、whoami、id

  • whoami:显示当前终端登录的用户名
  • groups:显示当前用户所属的所有用户组
  • id:显示 UID、GID 及所属组等详细信息

用户操作:useradd、userdel、usermod、passwd

这些命令的语法都为

[command] [options] [username]

useradd 用于新建用户账号

选项 说明
-m 自动创建用户的 home 目录
-d 指定用户主目录,必须存在,否则要搭配 -m
-s 指定默认 shell,如 /bin/bash
-G 添加到附加用户组
-u 指定 UID
-d 指定 home 目录路径
-c 指定一段注释性描述

passwd 用于设置或修改用户密码

选项 说明
-l 锁定口令,即禁用账号
-u 口令解锁
-d 使账号无口令
-f 强迫用户下次登录时修改口令

passwd 命令会先询问原密码,验证后再要求用户输入两遍新密码,如果两次输入的密码一致,则将这个密码指定给用户

usermod 用于修改已有用户的设置

选项 说明
-l 修改用户名
-s 修改默认 shell
-d 修改 home 目录
-G 修改附加组(替换原组)
-aG 追加附加组(不替换)

userdel 用于删除系统用户

选项 说明
-r 连带删除 home 目录和邮件文件(若存在)

组操作:groupadd、groupdel、groupmod

这些命令的语法都为

[command] [options] [groupname]

groupadd 用于新建用户组

选项 说明
-g 指定 GID(组ID)
-f 若组已存在不报错,继续执行
-r 创建系统组(GID 通常小于 1000)

groupdel 用于删除用户组,没有选项

groupmod 用于修改已有用户组

选项 说明
-n 新组名 修改组名称
-g 新GID 修改组的 ID(不推荐修改已广泛使用的组)

将用户添加到组:gpsswd

gpasswd 用于管理组成员,向组添加或移除用户

gpasswd [options] [username] [groupname]
选项 说明
-a 用户名 组名 添加用户到指定组
-d 用户名 组名 将用户从组中移除
-A 用户1,用户2 指定组管理员(逗号分隔)
-M 用户列表 直接定义组成员(覆盖原有成员)

Linux 权限管理

修改权限:chmod

chmod 用于修改文件或目录的访问权限

  • 数字模式:r:4, w:2 ,x:1,将这三个权限值相加得到权限的数字表示,例如 7 表示具有读、写、执行,5 表示具有读和执行
  • 符号模式:u代表属主,g代表属组,o代表其他,a表示全部,+表示添加权限,-表示去除权限,=表示设定权限
# 将 file.txt 权限设置为 -rwxr-xr-- 
chmod u=rwx,g=rx,o=r file.txt
# 将 file.txt 权限设置为 -rwxrwx---
chmod 770 file.txt 

修改属:chgrp、chown

chown 用于更改文件的属主,也可以同时修改属组

chown [用户名] [filename]
chown [用户名]:[组名] [filename]

chgrp 单独修改属组,不会修改属主

chown [组名] [filename]

权限削减:umask

umask 决定了从默认权限削弱了多少

  • 文件:666,rw-rw-rw-(新建文件没有执行权限,因为新文件很有可能出错)
  • 目录:777,rwxrwxrwx
umask 077
touch secret.txt
ls -l secret.txt
# 输出:只有自己可读可写
-rw------- ...

Linux 软件包管理

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,但大部分 apt 执行需要超级管理员权限

(sudo) apt [options] [command] [package ...]

常见选项

选项 功能
-y 自动回答 “yes”,无需人工确认
-q 静默模式,减少输出信息
-s 仅模拟执行,不实际安装或更改
-f 尝试修复已损坏的依赖
-V 显示详细版本信息
–version 查看版本
–autoremove 配合其他命令自动清理不需要的依赖包
–reinstall 重新安装已安装的软件包
–no-install-recommends 只安装核心依赖,不安装建议包

需要超级管理员权限的命令

命令 作用
update 更新本地软件源索引
upgrade 升级已安装的软件
install 安装软件包
remove 卸载软件包,但是保留配置文件
purge 卸载并清除配置
autoremove 删除不再需要的依赖包
clean 清理缓存(全部 .deb 包)

不需要超级管理员权限的命令

命令 作用
show 查看包的详细信息
search 搜索软件包名
list 列出包信息
list --installed 查看已安装软件
help 查看说明

Linux 系统信息查看

命令 功能描述
uname 显示内核相关信息,包括内核版本、主机名、架构等
uptime 查看系统运行时长
date 显示或设置系统日期和时间
who 显示当前登录用户信息
ss 查看网络连接和网络状态
lscpu 列出CPU架构信息,如核心数、线程数、型号、频率等
free 显示内存使用情况,包括总内存、已用内存和空闲内存
df 显示文件系统的磁盘空间使用情况,通常配合-h参数人性化显示
ifconfig 查看或配置网络接口信息
top 实时显示系统进程及系统资源使用情况