Linux学习文档

本文最后更新于 2025年7月31日 晚上

Linux学习文档

一,目录

菜鸟: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:反向匹配,显示不匹配模式的行。
    • rR:递归查找目录中的文件。
    • 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
  • :wqZZ:保存并退出
  • :q!:强制退出(不保存)

4. 基本流程:

  • vim 文件名
  • i:进入插入模式,进行写作。
  • Esc :退出插入模式,返回普通模。
  • :wq :保存并退出。

二,Linux用户和权限

2.1 root用户及其权限

  • su - [用户名] :可以通过su命令切换到root 用户(默认),然后输入root 用户的密码。
    • exit:回退到上一个用户。
  • sudo command:在大多数现代Linux发行版中,推荐使用sudo来临时提升权限。sudo允许普通用户执行特定的命令,而无需直接切换到root
    • 需要给普通用户配置sudo配置:
      1. root用户下执行visudo 命令
      2. 在文件的最后添加:用户名 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
x1
w2
r4
模式chmod 数字权限说明
rwx7读写执行
rw-6读写
r-x5读执行
r–4只读
-wx3写执行
-w-2只写
–x1只执行
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:下载文件时保存文件。
  • 上面两个什么都可以下载,yumapt是下载包的。

3.8 端口

  • 公认端口:1~1023,内置服务或知名服务的端口。
  • 注册端口:1024~49151,可随意使用。
  • 动态端口:49152~65535,不绑定固定程序,临时使用。
    1. sudo yum install nmap
    2. 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.13top 命令名称,当前时间为 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 stCPU 使用情况: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)
NInice 值(影响优先级)
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文件)
      1. vi ~/.bashrc
      2. export PATH=$PATH:自定义路径
      3. source ~/.bashrc
    • 永久所有用户:(编辑profile文件)
      1. vi /etc/profile
      2. export PATH=$PATH:自定义路径
      3. 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学习文档/
作者
Jimes
发布于
2025年7月31日
许可协议