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 nmap
nmap 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 ~/.bashrc
export PATH=$PATH:自定义路径
source ~/.bashrc
- 永久所有用户:(编辑
profile
文件)vi /etc/profile
export PATH=$PATH:自定义路径
source /etc/profile
- 临时:
3.12 文件的上传和下载
- finalshell中拖拽较快。
sudo apt install lrzsz
sz 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学习文档/