news 2026/10/15 12:08:58

从零开始学 Linux(一):目录结构、常用命令与 VIM 编辑器上手

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零开始学 Linux(一):目录结构、常用命令与 VIM 编辑器上手

前言

刚接触 Linux 的时候,很多人会被它纯命令行的操作方式劝退 —— 没有桌面的文件双击,一切操作都要靠命令完成。但真正用熟之后会发现,这种高效的操作方式比图形界面快得多。作为大模型开发、后端运维的基础环境,Linux 是绕不开的基本功,这篇是我整理的入门阶段最常用的核心操作笔记,都是日常高频用到的内容。

一、先搞懂 Linux 的目录结构

和 Windows 把盘符分成 C 盘 D 盘不同,Linux 整个文件系统是一棵从根目录/长出来的树,所有文件、硬件设备都以文件的形式挂在这棵树上,Linux 有一个很重要的理念:一切皆文件。普通文件、目录、设备、进程信息,都可以通过文件或文件系统接口来访问。

不用一开始就把所有目录背下来,先记住几个高频用到的:

  • /bin、/sbin:存放系统自带的可执行命令,sbin是只有管理员能执行的系统管理命令
  • /home:普通用户的家目录,每个用户进去之后默认在自己的/home/用户名目录下
  • /root:超级管理员 root 的家目录,和普通用户的目录是分开的
  • /etc:系统所有的配置文件都存在这里,改环境变量、用户配置、服务配置基本都在这个目录下找
  • /usr:用户安装的软件默认装在这里,类似 Windows 的Program Files
  • /var:经常变动的文件,比如各种日志文件,排查问题的时候经常来这里
  • /tmp:临时文件目录,系统会自动清理这里的内容,重要文件别放这
  • /dev:所有硬件设备都在这里以文件形式存在,比如硬盘、网卡

工作中最常打交道的通常是:

  • /etc:改配置

  • /var/log:看日志

  • /home:放用户数据

  • /opt:装自己的软件

  • /tmp:临时测试

二、环境准备:远程连接与软件安装

实际工作中服务器一般都是放在机房或者云上,我们不会直接碰物理机,都是通过 SSH 远程连接操作。常用的工具有 FinalShell、Xshell 这些,输入服务器 IP、账号密码就能连上。

Ubuntu 系统默认用 APT 作为包管理器,装软件不用自己去官网下安装包,几条命令就搞定:

# 更新软件源列表 sudo apt update # 安装软件,-y表示不需要确认直接装 sudo apt install 软件名 -y # 卸载软件 sudo apt remove 软件名 -y

刚装好的 Ubuntu 如果没有ifconfig命令,就是因为没装net-tools工具包,跑一句sudo apt install net-tools -y就好。

sudo apt update # 更新软件包索引 sudo apt install net-tools # 安装 net-tools 软件包 sudo apt remove net-tools # 卸载 net-tools 软件包 sudo apt search nginx # 搜索 nginx 相关软件包 sudo apt show nginx # 查看 nginx 软件包详情

另外记住几个终端高频快捷键,能省很多事:

快捷键作用
Ctrl + L清屏,和输入clear效果一样
Ctrl + C停止当前进程
Tab自动补全命令、文件名,打错了按两下会弹出所有候选,防止输错
上下方向键查找历史命令
Ctrl + U清除当前输入

三、高频文件目录操作命令

日常操作中 80% 的时间都在和文件目录打交道,这些命令必须形成肌肉记忆:

0. 帮助命令

man ls # 查看 ls 命令的手册页 ls --help # 查看 ls 命令的简要帮助 help cd # 查看 Shell 内建命令 cd 的帮助

man手册页分章节,常见的有:

  • 第 1 章:用户命令

  • 第 2 章:系统调用

  • 第 3 章:库函数

  • 第 5 章:文件格式

  • 第 8 章:系统管理命令

例如:

man 1 write # 查看第 1 章中的 write 用户命令 man 2 write # 查看第 2 章中的 write 系统调用

help用于 Shell 内建命令:

help cd # 查看内建命令 cd 的帮助信息

1. 基础路径查看

  • pwd:显示你当前在哪个目录,打印绝对路径
pwd # 显示当前工作目录的绝对路径
  • cd 路径:切换目录,cd ~或者直接cd是直接回到自己的家目录,cd ..回到上一级,cd -回到上一次待过的目录
cd /etc # 切换到 /etc 目录 cd ~ # 切换到当前用户的家目录 cd - # 切换回上一次所在的目录 cd .. # 切换到上一级目录 cd /var/log # 切换到 /var/log 目录

2. 查看目录内容

ls是 list 的缩写,最常用的两个参数:

  • ls -a:显示所有文件,包括以.开头的隐藏文件
  • ls -l:长格式显示,能看到文件的权限、所有者、大小、修改时间,Ubuntu 里ll是ls -al的别名,直接敲ll更方便
ls # 列出当前目录下的文件和目录 ls -l # 以长格式列出详细信息 ls -a # 列出所有文件,包括隐藏文件 ls -lh # 以人类可读格式显示文件大小 ls -R # 递归列出子目录内容

3. 文件与目录的增删复制

  • mkdir 目录名:创建目录,加-p参数可以一次性创建多级不存在的目录,比如mkdir -p a/b/c
  • touch 文件名:创建一个空文件
mkdir /data/app # 创建 /data/app 目录 mkdir -p /data/app/logs/2026 # 递归创建多层目录 touch /data/app/readme.md # 创建空文件 readme.md
  • cp 源文件 目标位置:复制文件,复制整个目录要加-r递归
  • rm 文件:删除文件,删除目录加-r,加-f是强制删除不弹确认

提醒:rm -rf是高危命令,删之前一定要确认路径,别手滑删到系统目录

  • mv 源文件 目标位置:移动文件,同目录下用 mv 就是重命名
cp app.conf app.conf.bak # 复制文件 app.conf 为 app.conf.bak cp -r /data/app /backup/app # 递归复制目录 /data/app 到 /backup/app mv old.txt new.txt # 将 old.txt 重命名为 new.txt mv /data/app /opt/app # 将 /data/app 移动到 /opt/app rm file.txt # 删除文件 file.txt rm -r /tmp/test # 递归删除目录 /tmp/test rm -f file.txt # 强制删除文件,不提示

4. 查看文件内容

  • cat 文件名:把整个文件内容一次性输出到终端,适合看小文件
  • tail 文件名:默认看文件最后 10 行,加-n 行数指定看多少行,加-F是实时跟踪文件新增内容,看线上日志的时候特别好用
cat /etc/hosts # 显示 /etc/hosts 文件内容 cat -n /etc/passwd # 显示 /etc/passwd 并加上行号 less /var/log/syslog # 分页查看日志文件 tail -n 20 /var/log/app.log # 查看文件末尾 20 行 tail -f /var/log/app.log # 实时追踪文件新增内容
  • 输出重定向:命令 > 文件是把输出覆盖写到文件里,命令 >> 文件是追加到文件末尾,不会覆盖原来的内容
echo "hello linux" # 在终端输出 hello linux echo "hello" > a.txt # 将 hello 覆盖写入 a.txt echo "world" >> a.txt # 将 world 追加到 a.txt 末尾

5. 软链接

软链接相当于 Windows 的快捷方式,用ln -s 原文件路径 链接名创建,ll 查看的时候会看到链接指向原文件,删除软链接的时候直接rm 链接名就行,别在软链接后面加/,不然会误删原目录里的内容。

ln -s /opt/app/current /opt/app/releases/v1 # 创建软链接 v1 指向 current

6. 历史命令

history # 查看当前用户执行过的历史命令

四、VIM 编辑器:终端里的必备编辑器

在服务器上改配置文件,没有图形化编辑器,VIM 是绕不开的工具。它有三种工作模式,搞懂模式切换就入门了:

  1. 一般模式(默认打开就是这个模式):进来之后不能直接输入文字,只能做复制、删除、移动光标的操作
    • yy复制当前行,p粘贴,dd删除当前行
    • u撤销上一步操作
    • gg跳到文件开头,G跳到文件末尾
  2. 编辑模式:在一般模式下按i/a/o这些键就会进入编辑模式,左下角会出现INSERT提示,这时候才能正常输入文字,按Esc退回一般模式
  3. 命令模式:在一般模式下按:进入,光标会跑到窗口最下面,常用操作:
    • :w保存,:q退出,:wq保存退出
    • :q!强制退出不保存修改
    • :set nu显示行号,:set nonu关闭行号

打开文件:

vim /etc/hosts # 使用 vim 编辑 /etc/hosts 文件

常用操作:

操作说明
i光标前插入
a光标后插入
o下一行插入
Esc回到一般模式
:w保存
:q退出
:wq保存并退出
:q!强制退出不保存
dd删除当前行
yy复制当前行
p粘贴
u撤销
:set nu显示行号
:%s/old/new/g全局替换

刚用 VIM 的时候最容易卡在这里:按了半天发现没法输入文字,就是因为忘了从一般模式按i进入编辑模式。

五、压缩解压与路径处理

tar是最常用的打包压缩工具:

tar -zcvf app.tar.gz /data/app # 将 /data/app 打包并 gzip 压缩为 app.tar.gz tar -zxvf app.tar.gz # 解压 app.tar.gz 到当前目录 tar -zxvf app.tar.gz -C /opt # 解压 app.tar.gz 到 /opt 目录

参数含义:

  • -z:gzip 压缩

  • -c:创建包

  • -x:解包

  • -v:显示过程

  • -f:指定文件名

  • -C:解压到指定目录

路径处理:

basename /data/app/conf/app.conf # 提取路径中的文件名,输出 app.conf dirname /data/app/conf/app.conf # 提取路径中的目录部分,输出 /data/app/conf

basename取文件名,dirname取目录名,写脚本时很常用。

六、用户与用户组

Linux 是多用户系统。每个用户有自己的账号、家目录和权限。

1. root 用户

root 是系统的超级管理员,拥有最高权限,能改任何文件、装任何软件。但 Ubuntu 默认是锁定 root 账号的,日常操作都用普通用户,需要高权限的时候临时加sudo就行,避免误操作把系统搞崩。

sudo apt update # 以 root 权限执行 apt update

如果确实要切到 root 身份,用su - root,这个命令会把 root 的环境变量也一起带过来,比su root更彻底;用完了输exit就切回普通用户。

su - root # 切换到 root 并加载其环境变量 su root # 切换到 root 但不加载环境变量 exit # 退出当前用户,返回上一个用户

su -会加载目标用户的环境变量,su只切换身份。

2. 用户管理常用命令

所有用户信息都存在/etc/passwd文件里,常用操作:

  • useradd 用户名:创建新用户,加-m参数会自动在 /home 下创建这个用户的家目录
  • passwd 用户名:给这个用户设置登录密码
sudo useradd -m devops # 创建用户 devops,并创建家目录 sudo passwd devops # 为 devops 设置密码
  • id 用户名:查看这个用户的 UID、所属组信息
id devops # 查看 devops 的用户 ID、组 ID 等信息 cat /etc/passwd # 查看系统中所有用户信息
  • userdel 用户名:删除用户,加-r参数会把用户的家目录一起删掉
sudo userdel devops # 删除用户 devops,保留家目录 sudo userdel -r devops # 删除用户 devops,同时删除家目录
  • 如果想让某个普通用户也能用 sudo 执行高权限命令,把他加到/etc/sudoers配置文件里就行。
  • 修改用户名:
sudo usermod -l newname oldname # 将用户名 oldname 改为 newname

3. 用户组管理

每个用户创建的时候,系统会自动给他建一个和用户名同名的组。组的作用就是给一批统一权限的用户批量分配权限,不用一个个单独设置。

  • groupadd 组名:新建组
  • groupdel 组名:删除组
  • usermod -g 组名 用户名:把用户加到指定组里 所有组的信息都存在/etc/group文件里。
sudo groupadd devteam # 创建用户组 devteam sudo groupdel devteam # 删除用户组 devteam sudo groupmod -n newteam devteam # 将组名 devteam 改为 newteam sudo usermod -g devteam devops # 将用户 devops 的主组改为 devteam

查看组:

cat /etc/group # 查看系统中所有组信息

4. sudo 权限

编辑/etc/sudoers可以给普通用户提权:

sudo visudo # 安全地编辑 /etc/sudoers 文件

添加:

devops ALL=(ALL) NOPASSWD:ALL

这样devops使用sudo时不需要重复输入密码。生产环境要谨慎配置。

七. 文件权限

1. 文件权限:搞懂 rwx 就不会再懵

用ll查看文件的时候,最前面的 10 个字符就是文件的类型和权限,比如-rwxr-xr--:

-rwxr-xr-- 1 devops devteam 1024 Oct 10 10:00 app.sh
  • 第一个字符:文件类型,-是普通文件,d是目录,l是软链接
  • 后面 9 个字符分成三组,每组三个:分别是文件所有者的权限、文件所属组的权限、其他所有人的权限
  • 三个权限位分别是r读、w写、x执行,对应的数字是r=4, w=2, x=1,加起来就能用数字代表权限,比如rwxr-xr--就是754

含义:

  • 第 1 位:文件类型,-普通文件,d目录,l软链接

  • 第 2-4 位:属主权限

  • 第 5-7 位:属组权限

  • 第 8-10 位:其他用户权限

rwx对应:

  • r:读,4

  • w:写,2

  • x:执行,1

这里有个很容易踩的坑:

  • 对于文件来说,w权限是能改文件内容,但不代表能删除这个文件 —— 删除文件需要对文件所在的目录有w权限
  • 对于目录来说,r权限是能列出目录里的内容,w权限是能在这个目录里新建、删除文件,x权限是能进入这个目录

修改权限的三个命令:

  • chmod 权限文件:修改文件的权限,比如chmod 755 test.sh,或者chmod u+x test.sh给所有者加执行权限,加-R参数递归修改整个目录里所有文件的权限
  • chown 所有者:所属组 文件:修改文件的所有者和所属组,比如chown -R app:app /opt/myapp把整个目录的归属给 app 用户
  • chgrp 组名 文件:单独修改文件的所属组
chmod u+x app.sh # 给属主增加执行权限 chmod g-w app.sh # 去掉属组的写权限 chmod o+r app.sh # 给其他用户增加读权限 chmod 750 app.sh # 设置权限为 rwxr-x--- chmod -R 755 /data/app # 递归设置 /data/app 权限为 rwxr-xr-x

修改所有者:

sudo chown devops app.sh # 将 app.sh 的所有者改为 devops sudo chown -R devops:devteam /data/app # 递归修改所有者和所属组

修改所属组:

sudo chgrp devteam app.sh # 将 app.sh 的所属组改为 devteam

注意:目录的x权限表示可以进入目录,w表示可以在目录内创建、删除、重命名文件。

八. 搜索与查找

1. 查找命令:find

  • find 搜索范围 -name "文件名":按文件名递归查找,支持通配符,比如find / -name "*.log"找系统里所有日志文件

按文件名查找:

find /data -name "*.log" # 在 /data 下查找所有 .log 文件

按用户查找:

find /home -user devops # 查找属于 devops 的文件

按时间查找:

find /data -mtime -7 # 查找 7 天内修改过的文件

2.grep 与管道

配合管道符|把前一个命令的输出传给后一个命令过滤,grep 关键词是文本过滤的核心工具。

比如ps aux | grep nginx就是从所有进程里找 nginx 相关的进程,加-n参数显示匹配的行号

cat /var/log/app.log | grep "ERROR" # 在日志中过滤包含 ERROR 的行 grep -n "ERROR" /var/log/app.log # 显示包含 ERROR 的行及行号 grep -i "timeout" /var/log/app.log # 忽略大小写搜索 timeout

管道|把前一个命令的输出交给后一个命令处理:

ps -ef | grep nginx # 查看 nginx 相关进程

九. 系统监控与进程管理

服务跑起来之后经常要排查问题,这几个命令天天用:

1. 磁盘与内存

  • df -h:查看磁盘各个分区的使用情况,以人类可读的 G/M 单位显示
  • du -h 目录:查看某个目录占了多大磁盘空间
du -sh /var/log # 查看 /var/log 总占用大小 du -ah /data | sort -rh | head -n 20 # 列出 /data 下最大的 20 个文件/目录

du=disk usage,作用:查看磁盘占用大小(不是查看文件内容,是看文件 / 目录占了多少硬盘空间)

拆参数(du的选项)

  • -s:summary 汇总,只显示总计大小,不递归列出里面每一个子文件 / 子目录
  • -h:human-readable 人类可读,自动用 K/M/G 单位展示,而不是原始字节
  • -a:all 全部,不仅统计目录,所有文件都单独列出来(默认 du 只统计目录)
  • free -m:查看内存使用情况,单位是 MB

2. 进程管理

  • ps -aux:查看系统所有进程的 CPU、内存占用情况
  • ps -ef:查看进程的父进程 ID,用来梳理进程树
  • kill 进程号:终止进程,加-9是强制杀掉进程
  • killall 进程名:直接按进程名杀所有同名进程
  • top:实时监控系统状态,按 CPU 占用排序默认,按 M 是按内存占用排序,按 q 退出,相当于 Linux 下的任务管理器
ps -aux # 查看系统中所有进程的详细状态 ps -ef # 查看进程及父进程关系 ps -ef | grep java # 过滤出 java 相关进程

展示字段说明:

  • USER:用户

  • PID:进程号

  • %CPU:CPU 占用

  • %MEM:内存占用

  • STAT:状态

  • COMMAND:命令

结束进程:

kill 12345 # 正常结束 PID 为 12345 的进程 kill -9 12345 # 强制杀死 PID 为 12345 的进程 killall nginx # 按名称杀死所有 nginx 进程

查看系统负载和实时进程:

top # 实时显示系统进程和资源占用 top -d 1 # 每 1 秒刷新一次 top -p 12345 # 只监控 PID 12345

进入 top 界面之后,在 top 交互界面里常用按键:

  • P:按 CPU 排序

  • M:按内存排序

  • N:按 PID 排序

  • q:退出

3. 网络相关

  • ifconfig:查看本机 IP 地址
ip addr # 查看所有网络接口的 IP 地址 ifconfig # 查看网络接口信息(需安装 net-tools)
  • ping 地址:测试网络通不通
ping www.baidu.com # 测试与百度的网络连通性 ping -c 4 192.168.1.1 # 只发送 4 个 ping 包
  • netstat -nlp | grep 端口号:查看某个端口被哪个进程占用了,部署服务的时候端口冲突经常要查这个
sudo netstat -nlp | grep 8080 # 查看 8080 端口占用情况 # -n:numeric 数字形式,不解析域名、主机名(加快速度,直接显示 IP,不反向解析) # -l:listening 只看监听状态的端口(服务正在打开等待连接的端口) # -p:program 显示进程 PID + 程序名(需要 root 权限,所以加 sudo) sudo ss -lntp | grep 8080 # 用 ss 命令查看 8080 端口监听 #ss 是 netstat 的替代品(性能更好,推荐优先用 ss) #-l:listening,只展示监听端口 #-n:numeric,数字 IP / 端口,不域名解析 #-t:tcp,只筛选 TCP 协议(UDP 用 `-u`) #-p:program,显示进程 PID 和程序名(同样需要 sudo) #只输出 TCP 监听,过滤掉 UDP,输出更干净

十. 定时任务:crontab 自动化执行

想让系统定时自动跑脚本,比如每天凌晨备份日志、清理临时文件,就用 crontab:

crontab -e #编辑当前用户的定时任务 crontab -l #查看当前用户的所有定时任务 定时任务的格式是五个时间位加要执行的命令: crontab -r #删除当前用户的所有定时任务

定时任务的格式是五个时间位加要执行的命令:

* * * * * command │ │ │ │ │ │ │ │ │ └── 星期几 0-7 │ │ │ └──── 月 1-12 │ │ └────── 日 1-31 │ └──────── 小时 0-23 └────────── 分钟 0-59
0 2 * * * /data/scripts/backup.sh # 每天凌晨 2 点执行备份脚本 */10 * * * * /data/scripts/health_check.sh # 每 10 分钟执行一次健康检查 30 8 * * 1-5 /data/scripts/report.sh # 周一到周五 8:30 执行报表脚本

注意:crontab 的环境变量和交互式 Shell 可能不同,脚本里建议使用绝对路径,并在脚本中显式设置PATH。

十一、小结

这一篇覆盖了 Linux 入门、目录结构、远程连接、APT、帮助命令、文件目录操作、Vim、压缩解压、用户权限、搜索查找、磁盘网络进程和定时任务。下一篇学习 Shell 脚本编程和文本处理。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 12:08:46

Python自动化临时文件管理方案设计与实现

1. 临时文件管理的痛点与自动化价值 每天打开电脑,桌面上总会出现一堆莫名其妙的临时文件——下载的安装包、解压后的文件夹、截图、会议记录草稿...这些数字垃圾就像办公室里的便利贴,随手创建却很难系统清理。我曾统计过团队开发人员的本地环境&#x…

作者头像 李华
网站建设 2026/10/15 12:07:59

C++策略模式实战:电商促销系统的三种进阶变体

1. 策略模式基础与变体需求在C开发中遇到需要动态切换算法或行为的场景时,策略模式(Strategy Pattern)是最常用的设计模式之一。传统策略模式通过定义算法接口、实现具体策略类和使用上下文类来解耦算法实现,但在实际工程中我们常…

作者头像 李华
网站建设 2026/10/15 12:07:30

Flutter Icon组件开发指南与性能优化

1. Icon组件在Flutter开发中的核心价值 在移动应用开发领域,视觉元素的精细程度直接影响用户体验。Flutter的Icon组件作为基础UI构件,其重要性常被开发者低估。实际上,一个精心设计的图标系统能够提升应用的专业感,增强用户界面的…

作者头像 李华
网站建设 2026/10/15 12:07:19

旋转排序数组的最小值查找算法与实践

1. 问题背景与核心挑战旋转排序数组是算法面试中的经典题型,它考察的不仅是对二分查找的理解深度,更是对边界条件处理的严谨程度。这类问题在实际工程中也有广泛应用,比如在日志分析系统中快速定位时间戳分界点,或者处理因网络延迟…

作者头像 李华
网站建设 2026/10/15 12:07:03

苹果CMS泛目录秒收站群程序:模板机制、部署与爬虫优化实战

简介:这份资源是面向苹果CMS V10站点运营者与开发者的影视泛目录秒收站群程序,主打智能页面管理与运行效率提升,适合需要批量搭建泛目录站群、优化收录与访问速度的中高级用户。程序直接兼容所有苹果CMS V10原生模板,无需额外编写…

作者头像 李华
网站建设 2026/10/15 12:07:00

无可挑剔的标准:一份可执行的高质量交付打磨指南

这几年带过不少项目,也帮人审过很多稿子、产品页面、活动方案。每次看到一份东西“好像还行,但就是差一点”,我脑子里就会蹦出一个词:impeccable。这个词直译是“无可挑剔”,但我更愿意把它理解为一种交付状态——一个…

作者头像 李华