Linux学习文档
本文最后更新于 2025年7月31日 晚上
Linux学习文档
一,目录
1.1 目录结构
Linux只有一个顶级目录:根目录(/)斜杠/,反斜杠\。
/ ——
—dev
—…
例如:/user/file/hello.txt
1.2 命令基础
- 命令格式:
command [-options] [parameter]command:命令本身。-options:选项,可选。parameter:命令的参数,可选。ls -l /home/jimes(以列表的形式显示/home/jimes目录内的内容)
1.3 ls命令(列出目录及文件名)
ls [-a -l -h] [路径]a:全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来。h:与-l一起使用时,以人类可读的格式显示文件大小(如 KB、MB)。l:列表形式列出,包含文件的属性与权限等等数据。- 使用方式:
-al , -a -l , -la
- 使用方式:
1.4 cd与pwd命令(切换与展示)
cd [路径]- 不写路径表示回到用户的
Home目录。
- 不写路径表示回到用户的
pwd:打印当前工作目录。
绝对路径:以根目录为起点,路径描述以/ 开头。
相对路径:以当前目录为起点,路径描述无需以/ 开头。
- 特殊路径符号:
/:根目录,文件系统的顶层目录,所有文件和目录都是从根目录开始的。.:当前目录,指示当前工作目录。..:上级目录,上二级cd../..。~:当前用户的主目录。例如,如果你的用户名是user,则~就是/home/user。
1.5 mkdir命令(创建目录)
mkdir [-p] 路径-p选项可选,表示自动创建不存在的父目录。- 创建文件夹需要修改权限,请确保操作均在
Home目录内。
1.6 文件操作命令
1. 查看文件
cat <filename>:查看文件内容。more <filename>:分页查看文件内容,空格翻页,q退出。less <filename>:分页查看文件内容(可以上下滚动)。head <filename>:查看文件的前10行。tail [-options] <filename>:查看文件的后10行。-f:实时查看文件内容(如日志文件)。-n:查看最后n行(默认为 10 行)。-c <num>:按最后num个字节显示内容,而不是按行。
file <filename>:查看文件的类型。
2. 创建文件
touch <filename>:创建空文件(如果文件存在则更新修改时间)。echo "text" > <filename>:将文本写入文件(如果文件不存在则创建,存在则覆盖)。echo "text" >> <filename>:将文本追加到文件的末尾。
3. 删除文件
rm <filename>:删除文件。rm -f <filename>:强制删除文件,不提示。rm -r <directory>:递归删除目录。rm -rf <directory>:强制递归删除目录及其内容。
4. 复制文件
cp <source> <destination>:复制文件。cp -r <source_directory> <destination_directory>:递归复制目录。
5. 移动/重命名文件
mv <source> <destination>:移动或重命名文件。mv <filename> <new_filename>:重命名文件。
1.7 查找命令
which <command>:用于查找命令的路径。- 查找范围:
$PATH环境变量中的目录。
- 查找范围:
find <起始目录> -name <filename>:在指定的目录下查找文件或目录。- 结合通配符
*:find /home -name "*.txt” - 按大小查找:
find <起始目录> -type f -size <大小>type f:限制只搜索文件(而不是目录)。**
+**:大于指定的大小。**
-**:小于指定的大小。无:等于指定的大小。
k(小写):千字节(KB),例如
+10k表示大于 10KB。M:兆字节(MB),例如
-10M表示小于 10MB。G:千兆字节(GB),例如
+10G表示大于 10GB。
- 结合通配符
1.8 文本处理命令
grep [-options] <关键字> <文件路径>:过滤拥有关键字的文件行。i:忽略大小写,进行不区分大小写的匹配。v:反向匹配,显示不匹配模式的行。r或R:递归查找目录中的文件。l:只列出包含匹配的文件名,不显示匹配的内容。n:显示匹配行的行号。c:只显示匹配行的数量。H:显示文件名(如果多个文件被查找)。o:只输出匹配的部分,而不是整行。w:匹配整个单词。
wc [-options] [文件路径]:统计文件的单词数量,行数等。- 文件路径可以有多个,分别输出。
l:显示文件中的行数。w:显示文件中的字数。c:显示文件中的字节数。m:显示文件中的字符数(与字节数不同,特别是对于多字节字符编码)。L:显示文件中最长的行的长度。
- 管道符:
|,将左边命令的输出传递给右边命令作为输入。- 右边命令的输入空着,可以嵌套,从左到右执行。
grep "pattern" filename | wc -l:统计某个文件中包含 “pattern” 的行数。grep -o "pattern" filename | wc -l:查找文件中某个单词的出现次数。ls | wc -l:查看当前目录下的文件列表,并计算文件数量。
1.9 文本输出命令
echo [-option] [输出内容]:输出文本或变量值。n:不在输出后添加换行符。e:启用反斜杠转义字符(如\n表示换行,\t表示制表符等)。E:禁用反斜杪转义字符(默认)。
- 反引号
command:被包围的字符作为命令执行,不作为普通字符。 - 重定向符:
- 文件不存在会创建该文件。
>(覆盖重定向):将输出重定向到文件,并覆盖文件内容。>>(追加重定向):将输出追加到文件末尾,而不会覆盖文件已有内容。
1.10 vim编辑器
vim 文件路径:编辑文件(无则创建)。
1. 普通模式下的命令
- 移动光标
h:左移j:下移k:上移l:右移w:按单词移动到下一个单词的开头b:按单词回到前一个单词的开头0:移动到行首$:移动到行尾
- 删除文本
x:删除当前字符dd:删除当前行dw:删除光标所在位置的单词d$:删除从光标当前位置到行尾的内容
- 复制与粘贴
yy:复制当前行p:粘贴到当前行的下方P:粘贴到当前行的上方
- 撤销与重做
u:撤销Ctrl + r:重做
- 查找
/:搜索文本(例如:/hello查找 “hello”)n:查找下一个匹配项N:查找上一个匹配项
2. 插入模式下的命令
- 按
i进入插入模式 - 按
Esc返回普通模式
3. 命令模式下的命令
:w:保存文件:q:退出 Vim:wq或ZZ:保存并退出:q!:强制退出(不保存)
4. 基本流程:
vim 文件名i:进入插入模式,进行写作。Esc:退出插入模式,返回普通模。:wq:保存并退出。
二,Linux用户和权限
2.1 root用户及其权限
su - [用户名]:可以通过su命令切换到root用户(默认),然后输入root用户的密码。exit:回退到上一个用户。
sudo command:在大多数现代Linux发行版中,推荐使用sudo来临时提升权限。sudo允许普通用户执行特定的命令,而无需直接切换到root。- 需要给普通用户配置
sudo配置:- 在
root用户下执行visudo命令 - 在文件的最后添加:
用户名 ALL=(ALL) NOPASSWD:ALL
- 在
- 需要给普通用户配置
2.2 用户与用户组(需root权限)
sudo groupadd groupname:创建用户组。sudo groupdel groupname:删除用户组。sudo useradd [-选项] username:创建用户。-m:为用户创建Home目录,如果不指定,系统不会自动创建Home目录。-d:为用户指定一个自定义的Home目录。- 用法:
sudo useradd -d /custom/directory username
- 用法:
-g:指定用户的主组。如果组不存在,useradd会自动创建该组。-G:为用户指定附加组。多个组用逗号分隔,不加空格。-u:为用户指定一个特定的 UID(用户ID)。-c:为用户添加描述性信息,如全名或职位等。
sudo userdel [选项] 用户名:删除用户。-r:同时删除Home目录。
id [用户名]:查看用户。sudo usermod [选项] 用户名:修改用户属性。-l:修改用户名。sudo usermod -l newname oldname
-d:修改Home路径。-s:修改默认登录Shell。-g:修改主组。-G:修改附加组(替换现有组)。-aG:添加附加组(追加)。-c:修改用户描述(注释)。
查询全局信息:
getent passwd [用户名]:查询所有用户(指定用户)。- 实例输出:
johndoe:x:1001:1001:John Doe:/home/johndoe:/bin/bash 用户名:密码:用户ID:组ID:描述信息:Home目录:执行终端(默认bash)
- 实例输出:
getent group [组名]:查询所有组(指定组)。组名称:组认证(显示x):组ID
查询主机名解析
getent hosts example.com- 返回形式类似:
93.184.216.34 example.com
- 返回形式类似:
查询网络服务
getent services ssh- 输出示例:
ssh 22/tcp
- 输出示例:
2.3 查看权限控制信息
- 输入:
ls -l - 输出:**
-rwxr-xr--** 1 user group 1234 Jul 29 10:00 filename
各字段含义:
rwxr-xr--:权限字段- 第一位表示类型( 为文件,
d为目录) - 接下来每 3 个字符表示所有者、所属组、其他用户的权限(r=读,w=写,x=执行,-=无权限)
- 第一位表示类型( 为文件,
user:所有者group:所属组
2.4 修改权限控制
chmod [-R] 权限 文件/文件夹:更改文件或目录权限-R:对文件夹内的全部内容执行相同操作chmod u+x,g-w,o=r,a+x file- 给用户增加执行权限;去掉组的写权限;设置其他人权限为只读;所有人增加执行权限。
chmod 515 file
| 权限 | 数值 |
|---|---|
| 无权限 | 0 |
| x | 1 |
| w | 2 |
| r | 4 |
| 模式 | chmod 数字 | 权限说明 |
|---|---|---|
| rwx | 7 | 读写执行 |
| rw- | 6 | 读写 |
| r-x | 5 | 读执行 |
| r– | 4 | 只读 |
| -wx | 3 | 写执行 |
| -w- | 2 | 只写 |
| –x | 1 | 只执行 |
| — | 0 | 无权限 |
chown [-R] [新用户][:新组] 文件或文件夹:更改文件或目录的拥有者和所属组(只适用于root用户)-R:对文件夹内的全部内容执行相同操作
三,Linux实用操作
3.1 快捷键
- 强制停止:
Ctrl+c - 退出或登出:
Ctrl+d - 历史命令搜索:
history - 命令前缀:
!,自动执行上一次匹配的命令(!p,最近的以p为开头的命令) - 匹配历史命令:
Ctrl+r,先快捷键,再输入匹配- 回车键直接执行
- 左右键得到命令
- 光标移动快捷键:
- 跳到命令开头:
Ctrl+a - 跳到命令结尾:
Ctrl+e - 向左一个单词:
Ctrl+左箭头 - 向右一个单词:
Ctrl+右箭头
- 跳到命令开头:
- 清屏:
Ctrl+l
3.2 软件安装
- CentOS:
yum [-y] [install | remove | search] 软件包名-y:自动确认- 需要root权限
- Ubuntu:
apt [-y] [install | remove | search] 软件包名
3.3 systemctl命令
systemctl [start|stop|status|enable|disable] <服务名>start:启动stop:关闭status:查看状态enbale:开机自启disable:关闭开机自启
3.4 软链接(快捷方式)
ln -s 参数1 参数2-s:创建软链接- 参数1:被链接的文件(夹)
- 参数2:要链接去的地方
3.5 日期和时区
date [-d] [+格式化字符串]:显示时间。-d参数:按指定的日期字符串显示时间。如date -d "+1 day"。+格式化字符串:用于控制输出时间的格式。- 例:
date "+%Y-%m-%d %H:%M:%S"
| 格式符 | 含义 |
|---|---|
%Y | 年(四位) |
%y | 年(两位) |
%m | 月(01-12) |
%d | 日(01-31) |
%H | 小时(00-23) |
%M | 分钟(00-59) |
%S | 秒(00-60) |
%s | 自 Unix 纪元(1970-01-01 00:00:00 UTC)起的秒数 |
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime:修改时区为上海东八区
3.6 IP地址和主机名
ifconfig:查看IP地址(首个inet)。hostname:显示主机名。sudo hostnamectl set-hostname new-hostname:修改主机名。- 域名解析(主机名映射) :
- 以管理员方式打开记事本。
- 通过记事本打开host文件(”C:\Windows\System32\drivers\etc\hosts”)。
- 添加映射,因为先查看本机再查询DNS服务器。
- 配置固定IP地址:第四章-07-配置Linux固定IP地址_哔哩哔哩_bilibili
3.7 网络请求与下载
ping [-c num] ip或主机名-c:检查的次数。
wget [-b] url:下载网络文件。-b:后台下载。
curl [-O] url:发送http请求(类似打开网页)。-O:下载文件时保存文件。
- 上面两个什么都可以下载,
yum和apt是下载包的。
3.8 端口
- 公认端口:1~1023,内置服务或知名服务的端口。
- 注册端口:1024~49151,可随意使用。
- 动态端口:49152~65535,不绑定固定程序,临时使用。
sudo yum install nmapnmap 127.0.0.1:扫描对外端口。
sudo ss -tulpn:查看所有监听中的端口。sudo ss -tulpn | grep ':8080’:查看谁在监听8080端口。
3.9 进程管理
ps -ef:查看所有进程信息。-e:显示全部。-f:展示所有信息。
ps aux:查看所有进程信息,会有CPU占用信息。kill [-9] ID号:关闭进程。-9:强制关闭。
3.10 主机状态监控
top:系统资源监控。- 前五行:
| 行数 | 内容 | 说明 |
|---|---|---|
| 第 1 行 | top - 14:39:58 up 6 min, 2 users, load average: 0.06, 0.17, 0.13 | top 命令名称,当前时间为 14:39:58,系统已运行 6 分钟,有 2 个用户登录,系统负载分别为过去 1/5/15 分钟的平均负载 |
| 第 2 行 | Tasks: 175 total, 1 running, 174 sleeping, 0 stopped, 0 zombie | 当前有 175 个进程:其中 1 个运行中,174 个休眠,0 停止,0 僵尸进程(zombie) |
| 第 3 行 | %Cpu(s): 0.3 us, 1.4 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st | CPU 使用情况:us: 用户空间占用sy: 系统内核占用ni: 优先级调整占用id: 空闲wa: IO等待hi: 硬件中断si: 软件中断st: 被虚拟机偷走 |
| 第 4-5 行 | KiB Mem: 995892 total, 187672 free, 394912 used, 413308 buff/cacheKiB Swap: 2098172 total, 2098172 free, 0 used, 391852 avail Mem | 内存和交换分区(Swap)情况:Mem: 总物理内存,空闲,已用,缓冲区和缓存Swap: 总交换空间,空闲,已用,当前可用内存(包括缓存释放后的) |
- 五行后:
| 字段 | 含义 |
|---|---|
| PID | 进程 ID |
| USER | 所属用户 |
| PR | 优先级(priority) |
| NI | nice 值(影响优先级) |
| VIRT | 虚拟内存使用量 |
| RES | 实际物理内存使用量 |
| SHR | 共享内存使用量 |
| S | 状态(R=运行,S=睡眠,Z=僵尸) |
| %CPU | 占用 CPU 百分比 |
| %MEM | 占用内存百分比 |
| TIME+ | 占用 CPU 总时间 |
| COMMAND | 启动命令或进程名 |
- -选项:
| 选项 | 功能说明 |
|---|---|
-p | 只显示某个 PID 的进程信息。示例:top -p 1234 |
-d | 设置刷新间隔时间(单位秒),默认是 5 秒。示例:top -d 2(每 2 秒刷新一次) |
-c | 显示完整的启动命令(COMMAND),默认只显示程序名。重复按 c 也能切换。 |
-n | 指定刷新次数,执行完后退出。示例:top -n 3(刷新 3 次后退出) |
-b | 批处理模式,非交互式运行(适合写入文件或脚本自动采集)。通常与 -n 联用。示例:top -b -n 3 > /tmp/top.tmp |
-i | 不显示闲置(idle)或僵尸(zombie)进程。 |
-u | 只显示指定用户的进程。示例:top -u yourname |
- 交互操作:
| 键 | 作用说明 |
|---|---|
P | 按 CPU 使用率排序(默认) |
M | 按内存使用率排序 |
T | 按运行时间排序 |
k | 杀死进程(输入 PID) |
r | 改变进程优先级(nice) |
1 | 显示每个 CPU 核心的使用情况 |
c | 显示完整命令行(再按一次恢复) |
h 或 ? | 显示帮助 |
q | 退出 top |
df [-h]:磁盘信息监控。-h:人性化单位显示。
sar -n DEV 1 5:网络监控。n DEV:表示查看网络设备(接口)统计。1:是采样间隔,单位秒。5:是采样次数。
| 字段名 | 含义 |
|---|---|
| IFACE | 网络接口名(如 eth0、lo、ens33 等) |
| rxpck/s | 接收的数据包数/秒 |
| txpck/s | 发送的数据包数/秒 |
| rxkB/s | 接收的千字节数/秒 |
| txkB/s | 发送的千字节数/秒 |
| rxcmp/s | 接收的压缩包数/秒 |
| txcmp/s | 发送的压缩包数/秒 |
| rxmcst/s | 接收的多播包数/秒 |
| %ifutil | 网络接口利用率百分比 |
3.11 环境变量
- 执行命令会目录中挨个搜索要执行的命令并执行。
env | grep PATH:查看环境变量,key-value型结构。echo $PATH:取到环境变量。$:取变量,${PATH}asdf
- 添加环境变量:
- 临时:
export PATH=$PATH:自定义路径 - 永久当前用户:(编辑
.bashrc文件)vi ~/.bashrcexport PATH=$PATH:自定义路径source ~/.bashrc
- 永久所有用户:(编辑
profile文件)vi /etc/profileexport PATH=$PATH:自定义路径source /etc/profile
- 临时:
3.12 文件的上传和下载
- finalshell中拖拽较快。
sudo apt install lrzszsz filename:从服务器下载文件到本地。rz:从本地上传文件到服务器。
3.13 文件的压缩和解压
.tar :简单封装。
.tar.gz :极大压缩。
tar [-c -v -x -f -z -C] 参数1 参数2 … 参数N-c:创建压缩文件,用于压缩模式。-v:显示压缩、解压过程。-x:解压模式,与-c冲突。-f:要进行操作的文件,该参数必须是最后一个。-z:gzip模式,一般在第一个。-C:选择解压的目的地。- 例:
tar -cvf test.tar 1.txt 2.txt 3.txt - 例:
tar -zxvf test.tar.gz -C ./home/it
zip [-r] 参数1 参数2 … 参数N:适用于跨平台。-r:压缩的内容包含文件夹。
unzip [-d] 参数-d:解压去的地方。
Linux学习文档
https://jimes.cn/2025/07/31/Linux学习文档/