当前位置: 首页 > news >正文

解码Linux基础命令

Linux 基础命令

核心概念:终端、Shell 与内核的关系

Linux 中用户通过终端(Terminal)与系统交互,终端是运行Shell(命令解释器)的窗口,而 Shell 是连接用户与内核(Kernel)的桥梁:

  • 内核:系统核心,管理 CPU、内存、硬盘等硬件资源,无法直接被用户操作;
  • Shell:命令解释器(如 bash,Ubuntu 默认 Shell),接收用户输入的命令,翻译成内核能理解的指令,再将结果反馈给用户;
  • 终端:运行 Shell 的界面(如 GNOME Terminal),相当于 “Shell 的载体”,用户在终端中输入命令,Shell 在后台处理。

终端操作快捷键

  • Ctrl+Alt+T:打开新终端;
  • Ctrl+Shift+N:在当前路径下打开新终端;
  • Ctrl+L:清屏(与clear命令效果一致);
  • Ctrl+C:终止当前正在运行的命令(如终止ping)。

用户权限:普通用户与 root 用户

Linux 是多用户系统,不同用户权限不同,核心分为两类:

  • root 用户(超级用户):拥有系统最高权限,可修改任何文件、执行任何命令(如删除系统文件),提示符为#
  • 普通用户:仅能操作自己家目录(/home/用户名)下的文件,无法修改系统配置,提示符为$

权限切换命令

命令 作用 注意事项
sudo su 普通用户切换为 root 用户 需当前用户在sudoers配置文件中(Ubuntu 默认初始用户在其中),输入当前用户密码(不回显)
su 用户名 root 用户切换为普通用户 无需密码,直接切换
exit 从 root 用户退回普通用户 或按Ctrl+D快捷键
sudo 命令 普通用户临时以 root 权限执行单个命令 避免长期使用 root 导致误操作(如sudo apt install vim

sudo 的关键说明

  • sudo 的配置文件是/etc/sudoers,修改需用sudo visudo(避免直接用 gedit 导致语法错误);
  • 普通用户执行 sudo 时,密码有效期为 5 分钟(5 分钟内再次用 sudo 无需输密码);
  • 禁止随意给普通用户添加 sudo 权限,防止误操作删除系统文件。

命令格式:通用结构与选项规则

Linux 命令的基本格式:用户名@主机名:当前路径$ 命令 [选项] [参数]

  • 命令:核心操作(如ls查看目录、cd切换目录),全为小写(如LS无效);
  • 选项:调整命令功能,分两种格式:
    • 短格式:以  开头,单个字母(如ls -l,显示详细信息);
    • 长格式:以 - 开头,完整单词(如ls --list,与ls -l功能相同);
  • 参数:命令的操作对象(如文件、目录,如ls /home,查看/home目录内容)。

示例ls -la /homels是命令,-la是选项(-l详细信息 +-a显示隐藏文件),/home是参数。

帮助手册:快速查询命令用法

无需死记命令,通过以下两种方式获取帮助:

简单帮助:命令 --help

显示命令的核心选项与用法,适合快速查询(如忘记选项含义)。示例ls --help:查看ls命令的所有选项及说明;cp --help:查看cp命令的复制规则。

详细手册:man 命令

显示命令的完整手册(包括功能、选项、示例、相关文件),需先安装 man 工具:sudo apt install man-db manpages-de-dev manpages-posix

man 手册章节含义(数字代表章节,可指定章节查看):

章节号 内容类型分类 核心说明(含关键权限/场景) 示例(命令/文件 + 作用说明)
1 普通用户命令 所有用户可直接执行(无需特殊权限),涵盖日常文件操作、文本处理、目录管理等基础功能 - man 1 ls(查看 ls 命令用法)
- man 1 grep(查看 grep 文本搜索命令用法)
2 系统调用(内核接口) 操作系统内核对外暴露的底层接口,需通过编程语言(如 C)调用,用于硬件操作、资源调度(如文件/进程) - man 2 open(查看文件打开的内核接口参数)
- man 2 fork(查看进程创建的内核接口逻辑)
3 库函数(标准/第三方) 由编程语言标准库(如 C 标准库)或第三方库提供,非内核接口,用于通用编程需求(如字符串/IO) - man 3 printf(查看 C 标准库输出函数用法)
- man 3 strlen(查看字符串长度计算函数用法)
4 特殊文件(设备/格式) 主要对应 /dev 目录下的设备文件(如磁盘、终端、空设备),及少数特殊文件格式定义 - man 4 tty(查看终端设备文件 /dev/tty 说明)
- man 4 null(查看空设备 /dev/null 用法)
5 配置文件/文件系统 系统核心配置文件的语法规则、格式说明,及文件系统目录结构解释(如 /etc 下配置) - man 5 passwd(查看 /etc/passwd 用户配置文件格式)
- man 5 fstab(查看磁盘挂载配置 /etc/fstab 语法)
6 游戏/屏保程序 系统自带的终端娱乐工具,无实际系统功能,仅用于终端消遣 - man 6 fortune(查看“随机名言生成”游戏用法)
- man 6 cowsay(查看“字符画牛说话”程序用法)
7 杂项(协议/概念) 不适合归入其他章节的通用内容,涵盖网络协议、数据格式、系统概念(如权限、正则) - man 7 ascii(查看 ASCII 字符表)
- man 7 regex(查看正则表达式语法规则)
- man 7 http(查看 HTTP 协议基础规范)
8 系统管理命令 需 root 权限或 sudo 临时权限,用于系统维护(用户管理、服务控制、磁盘分区等核心操作) - man 8 sudo(查看权限切换命令用法)
- man 8 useradd(查看创建系统用户命令用法)
- man 8 fdisk(查看磁盘分区命令用法)
9 内核例程(内核文档) 内核内部函数、数据结构或模块说明,非对外公开的标准接口,仅用于内核开发/调试 - man 9 printk(查看内核打印函数用法)
- man 9 kmalloc(查看内核内存分配函数用法)

示例man ls:查看ls命令的详细手册;man 2 read:查看 “读取文件” 系统调用的手册。

常用基础命令

用户切换:su/sudo

  • 普通用户→root:sudo su(输入当前用户密码);
  • root→普通用户:su gec(gec 是用户名)或exit
  • 临时执行 root 命令:sudo apt install vim(安装 vim 编辑器)。

查看目录:ls(list)

功能:显示目录下的文件 / 目录,默认显示当前目录。常用选项与示例:

选项 功能 示例
无选项 显示当前目录下非隐藏文件 / 目录 ls
-lll 长格式显示(权限、大小、修改时间等) ll /home(查看 /home 详细信息)
-a 显示隐藏文件(以.开头的文件) ls -a(显示当前目录隐藏文件)
-h 人性化显示文件大小(KB/MB/GB) ls -lh(显示大小单位)

image

注意:Linux 中 “一切皆文件”,文件类型通过ll结果的首字符区分:

首字符(ls -l 显示) 文件类型 核心定义 关键特点 典型示例
- 普通文件 存储实际数据的基础文件类型,涵盖文本、二进制、多媒体等所有非特殊用途的数据载体 - 无特殊标识,仅存数据;
- 后缀名(如 .c/.txt)非强制,仅用于区分用途;
- 可直接通过 cat/vim 等工具读写
demo.c(C语言源文件)、a.out(编译后的二进制程序)、test.txt(文本文件)、image.jpg(图片文件)
b 块设备文件 映射“按块读写”的硬件设备(如磁盘、U盘),是用户空间操作硬件的核心接口文件 - 读写单位为“块”(如 512字节/4KB),带缓存;
- 需 root 权限才能操作;
- 直接关联硬件,删除会导致设备无法访问
/dev/sda(第一块物理硬盘)、/dev/sdb1(第二块硬盘的第一个分区)、/dev/mmcblk0(SD卡设备)
c 字符设备文件 映射“按字符读写”的硬件设备(如键盘、终端),实现硬件与用户空间的实时数据交互 - 读写单位为“单个字符”,无缓存;
- 实时响应输入输出(如键盘按键即时传递);
- 包含虚拟设备(如 /dev/zero
/dev/tty(当前终端)、/dev/console(系统控制台)、/dev/ttyUSB0(USB转串口)、/dev/zero(生成空字符的虚拟设备)
d 目录文件 存放文件/子目录的“容器”,本质是记录子项路径、权限的索引表 - 可通过 cd 命令进入;
- 默认权限通常为 rwxr-xr-x(所有者可读写执行,其他仅读执行);
- 新建目录默认含 .(当前)和 ..(父目录)
~/Desktop(桌面目录)、/home(普通用户家目录)、/etc(系统配置目录)、/tmp(临时文件目录)
l 软链接文件 类似Windows快捷方式,仅存储“指向原文件的路径”,不占用实际数据空间 - 原文件删除后,软链接失效(显示“断链”,颜色通常为红色);
- 建议用绝对路径创建(避免移动后失效);
- 链接文件大小为路径字符串长度
link -> ~/demo.c(指向 demo.c 的软链接)、/usr/bin/python3 -> /usr/bin/python3.8(Python版本切换软链接)
p 管道文件 用于“同一主机内两个进程间通信”的临时文件,数据传递后自动清空 - 半双工通信(数据单向流动,需两个进程分别读/写);
- 数据不持久化,读完即删;
- 需通过 mkfifo 命令创建
mkfifo mypipe(创建名为 mypipe 的管道)、/tmp/pipe1(脚本间临时通信的管道文件)
s 套接字文件 支持“跨进程通信”的文件类型,可实现本地进程间(如容器间)或网络主机间通信 - 全双工通信(数据双向同时传输);
- 是网络编程核心(如 TCP/UDP 通信);
- 服务进程退出后,套接字文件需手动删除
/var/run/docker.sock(Docker服务本地套接字)、/var/run/mysqld/mysqld.sock(MySQL本地套接字)

切换目录:cd(change directory)

功能:切换当前工作目录,路径分两种:

  • 绝对路径:从根目录/开始(如/home/gec/Desktop);
  • 相对路径:从当前目录开始(如./code..代表上级目录)。

常用用法示例:

命令 功能 示例场景
cd 目录路径 切换到指定目录 cd /home/gec(绝对路径)
cd ~ 切换到当前用户的家目录 cd ~(普通用户家目录是/home/gec
cd .. 切换到上级目录 当前在/home/gec,执行后到/home
cd - 切换到上一次所在的目录 /home/tmp,执行后回/home
cd . 留在当前目录(无实际作用,仅语法存在) cd .

创建目录:mkdir(make directories)

功能:创建空目录,支持递归创建。常用选项与示例:

选项 功能 示例
无选项 创建单个目录 mkdir test(当前目录创建 test)
-p 递归创建多级目录(父目录不存在则自动创建) mkdir -p /home/gec/code/demo(创建 demo 及父目录 code)
-m 手动设置目录权限(默认权限由 umask 决定) mkdir -m 755 test(test 权限为 rwxr-xr-x)

注意:权限755含义见chmod命令部分。

创建文件:touch

功能:① 创建空文件;② 更新已有文件的修改时间(不改变内容)。
示例:

  • touch demo.c:当前目录创建空文件demo.c
  • touch a.txt b.py:同时创建a.txtb.py
  • touch demo.c:若demo.c已存在,更新其修改时间为当前时间。

删除文件 / 目录:rm(remove)

功能:永久删除文件 / 目录(无回收站,谨慎使用!)。
常用选项与示例:

选项 功能 示例
无选项 删除单个文件 rm a.txt(删除 a.txt)
-i 删除前提示(避免误删) rm -i demo.c(删除前询问 Y/N)
-f 强制删除(不提示,用于只读文件) rm -f read-only.txt
-r 递归删除目录及所有内容(删除目录必须用) rm -r test(删除 test 目录及内容)
-rf 强制递归删除(危险!避免用于系统目录) rm -rf /tmp/old(删除 /tmp 下的 old 目录)

危险提示rm -rf /会删除整个系统的所有文件,绝对禁止执行!

移动 / 重命名:mv(move)

功能:① 移动文件 / 目录到指定路径;② 同一目录下重命名。
常用选项与示例:

选项 功能 示例
无选项 移动文件到目录 mv demo.c /home/gec/code(将 demo.c 移到 code 目录)
无选项 重命名(同一目录) mv demo.c hello.c(将 demo.c 重命名为 hello.c)
-i 目标文件存在时提示是否覆盖 mv -i hello.c /home/gec(若 /home/gec 有 hello.c,询问覆盖)
-n 目标文件存在时不覆盖(不提示) mv -n hello.c /home/gec(存在则不移动)

复制文件 / 目录:cp(copy)

功能:复制文件 / 目录到指定路径,复制目录需-r选项。
常用选项与示例:

选项 功能 示例
无选项 复制单个文件到目录 cp hello.c /home/gec/code(复制 hello.c 到 code 目录)
-r 递归复制目录及内容 cp -r code /home/gec/backup(复制 code 目录到 backup)
-i 目标文件存在时提示覆盖 cp -i hello.c /home/gec(存在则询问)
-u 仅复制 “源文件比目标文件新” 的文件(更新备份) cp -u code/* /home/gec/backup(仅更新较新文件)

查看当前路径:pwd(print working directory)

功能:显示当前所在目录的绝对路径(避免 “迷路”)。
示例: 当前在/home/gec/Desktop,执行pwd后输出:/home/gec/Desktop

查看文件内容:cat/more/less

命令 功能 适用场景 示例
cat 一次性显示所有内容 小文件(如代码、配置文件) cat demo.c(查看 demo.c 内容)
cat -n 显示内容并带行号 查看代码行号 cat -n demo.c
cat -A 显示不可见字符(如 Windows 换行符^M 排查跨系统文件格式问题 cat -A test.sh(查看脚本隐藏字符)
more 分页显示(空格翻页,q退出) 中文件(如日志) more /var/log/syslog
less 分页显示(上下键滚动,q退出) 大文件(如系统日志) less /var/log/dmesg

系统时间:date

功能:查看或设置系统时间。
示例:

  • 查看时间:date(输出格式:2024年 05月 20日 星期一 14:30:00 CST);
  • 设置时间:sudo date -s "2024-05-20 14:30:00"(需 root 权限,仅临时生效,重启后恢复)。

文件权限:chmod(change mode)

功能:修改文件 / 目录的权限,Linux 权限分三类用户:

  • u(owner):文件所有者;
  • g(group):文件所属组;
  • o(others):其他用户;
  • a(all):所有用户(默认)。

权限类型:

  • r(read,读):4;
  • w(write,写):2;
  • x(execute,执行):1;
  • (无权限):0。

示例

  • chmod 755 demo.c:所有者rwx(7=4+2+1),所属组和其他用户r-x(5=4+0+1);
  • chmod u+x demo.sh:给所有者添加执行权限(脚本需执行权限才能运行);
  • chmod g-w test.txt:给所属组移除写权限;
  • chmod a=r demo.c:所有用户仅保留读权限。

查看权限ll demo.c(结果首 10 字符为权限,如-rwxr-xr-x,第 1 位是文件类型,后 9 位分 3 组对应 u/g/o)。

查看分区:df(disk free)

功能:查看文件系统的磁盘占用情况(如剩余空间、挂载点)。
常用选项:

  • h:人性化显示(KB/MB/GB);
  • a:显示所有文件系统(包括临时文件系统)。

示例:df -h(输出各分区的大小、已用、可用空间,如/dev/sda5是根分区,/boot/efi是启动分区)。

创建链接:ln(link)

功能:给文件创建链接,分两种类型:

类型 特点 适用场景 示例
硬链接 与原文件共享同一个 inode(文件元信息),删除原文件不影响硬链接;不能跨文件系统 备份重要文件(如配置文件) ln demo.c demo.hard(创建 demo.c 的硬链接)
软链接 类似 Windows 快捷方式,仅存储原文件路径;删除原文件则软链接失效;需用绝对路径 快速访问深层目录 / 文件 ln -s /home/gec/code demo.link(创建 code 目录的软链接)

注意:软链接用相对路径时,若软链接文件移动,会因路径失效无法访问,因此建议用绝对路径。

查找文件:find

功能:在指定路径下按条件查找文件(如名称、类型、大小)。
常用选项与示例:

选项 功能 示例
-name 按文件名查找(支持通配符* sudo find / -name "*.h"(根目录下找所有.h 文件,需 root 权限)
-type 按文件类型查找(f = 普通文件,d = 目录) find /home -type d -name "test"(/home 下找名为 test 的目录)
-size 按文件大小查找(+ 表示大于,- 表示小于) find /tmp -size +10M(/tmp 下找大于 10MB 的文件)

注意:查找根目录(/)时需用sudo,否则会因权限不足报错(如find: '/run/user/1000/doc': Permission denied)。

压缩解压:tar

功能:归档(打包)+ 压缩 / 解压,常用压缩格式:

  • .tar:仅归档,不压缩;
  • .tar.gz:gzip 压缩(压缩率中等,速度快);
  • .tar.bz2:bzip2 压缩(压缩率高,速度慢)。

核心选项(-f必须在最后,指定归档文件名):

选项 功能
-c 创建归档文件(打包)
-x 提取归档文件(解包 / 解压)
-z 用 gzip 压缩 / 解压(.tar.gz)
-j 用 bzip2 压缩 / 解压(.tar.bz2)
-v 显示操作过程(可选,方便查看进度)
-f 指定归档文件名(必须在最后)

示例

  • 压缩:tar czf code.tar.gz /home/gec/code(将 code 目录压缩为 code.tar.gz);
  • 解压:tar xzf code.tar.gz(解压 code.tar.gz 到当前目录);
  • 查看归档内容:tar tf code.tar.gz(不解压,查看压缩包内的文件);
  • bzip2 压缩:tar cjf data.tar.bz2 /home/gec/data
  • bzip2 解压:tar xjf data.tar.bz2

查找命令路径:which

功能:查找系统中可执行命令的绝对路径(如lscd的位置)。
示例:

  • which ls(输出:/usr/bin/ls,表示ls命令在/usr/bin目录下);
  • which gcc(查找编译器gcc的路径,若未安装则提示 “Command not found”)。

查看文件类型:file

功能:判断文件类型(如文本、二进制、压缩文件),避免仅凭后缀名判断错误。
示例:

  • file demo.c(输出:demo.c: C source, ASCII text,表示是 C 语言源文件);
  • file code.tar.gz(输出:code.tar.gz: gzip compressed data,表示是 gzip 压缩文件);
  • file /dev/sda(输出:/dev/sda: block special,表示是块设备文件)。

网络配置:ip/ifconfig

  • ifconfig:旧版命令,需安装net-toolssudo apt install net-tools,用于查看 / 设置 IP;
    • 示例:ifconfig ens33 192.168.5.2(临时将网卡 ens33 的 IP 设为 192.168.5.2,重启失效);
  • ip:新版命令(系统自带),功能更全面:ip addr(查看所有网卡的 IP 信息,替代ifconfig);
    • ip link set ens33 up(启用网卡 ens33);
    • ip route(查看路由表,如默认网关)。

注意ifconfig设置的 IP 仅临时生效,重启虚拟机后恢复,永久生效需用 Netplan。

网络测试:ping

功能:向目标主机发送 ICMP 数据包,测试网络连通性。
示例:

  • 测试外网:ping www.baidu.com(能收到回复表示外网通,按Ctrl+C停止);
  • 测试内网:ping 192.168.5.1(测试与物理机的连通性);
  • 限制次数:ping -c 4 www.baidu.com(仅发送 4 个数据包,自动停止)。

结果判断

  • 成功:显示64 bytes from 183.2.172.185: icmp_seq=1 ttl=128 time=10.6 ms
  • 失败:显示ping: www.baidu.com: Temporary failure in name resolution(DNS 解析失败,需检查 DNS 配置)。

查看进程:ps(process state)

功能:查看系统中运行的进程(如 PID、命令、用户)。常用选项与示例:

选项 功能说明(含风格/核心信息+适用场景) 示例
无选项 仅显示当前终端关联的进程(极简视图),适合快速查看当前终端运行的进程 ps(可查看:PID(进程ID)、TTY(关联终端)、TIME(进程占用CPU时间)、CMD(进程命令))
aux BSD风格,显示所有用户的所有进程,含资源占用信息,日常查系统整体进程最常用 ps aux(可查看:USER(进程所有者)、%CPU(CPU占用率)、%MEM(内存占用率)、PID(进程ID)、COMMAND(进程命令))
-ef System V风格,显示所有进程及父进程关联,适合追溯进程启动源(如查找进程的父进程) ps -ef grep vim(可查看:UID(用户ID)、PID(进程ID)、PPID(父进程ID)、CMD(进程命令),示例中7654即为vim进程的PPID)

示例

  • ps aux | grep firefox(查找火狐浏览器的进程,PID 用于终止进程);
  • 终止进程:sudo kill 1234(1234 是进程 PID,强制终止用kill -9 1234)。

命令别名:alias

功能:给常用命令设置别名,简化输入(如将ls -la设为ll)。
示例:

  • 临时别名(当前终端有效):alias ll='ls -la'(输入ll等同于ls -la);
  • 永久别名(所有终端有效):
    • 编辑用户配置文件:gedit ~/.bashrc
    • 在文件末尾添加:alias ll='ls -la'alias cp='cp -i'(复制时自动提示覆盖);
    • 使配置生效:source ~/.bashrc(无需重启终端)。

注意~/.bashrc是用户级配置,仅当前用户生效;系统级配置在/etc/bashrc,所有用户生效(需sudo修改)。

清屏:clear/Ctrl+L

功能:清除终端屏幕内容(仅隐藏历史输出,并非删除)。
示例:clear(清屏);Ctrl+L(快捷键,与clear效果相同,更便捷)。

编辑文件:gedit(图形化)/vim(命令行)

  • gedit:图形化编辑器,类似 Windows 记事本,适合新手:gedit demo.c(打开 / 创建 demo.c,编辑后按Ctrl+S保存);
  • vim:命令行编辑器,功能强大(详细说明如下)。

vi/vim 编辑器详解

vim 是 vi 的增强版,支持语法高亮、多窗口编辑、正则查找,是 Linux 开发的必备工具(如编写代码、修改配置文件)。

安装 vim

Ubuntu 默认安装 vi,vim 需手动安装:sudo apt install vim

验证安装:vim --version(显示版本信息表示安装成功)。

vim 的三种工作模式

vim 有三种核心模式,切换关系如下:命令模式 ←(Esc)→ 插入模式(输入 i/a/o 等);命令模式 →(按:)→ 编辑模式(输入 w/q 等命令);

image

命令模式(默认模式)

打开文件后默认进入此模式,可执行以下操作:

  • 移动光标:方向键或h(左)、j(下)、k(上)、l(右);
  • 快速移动:gg(到文件首行)、G(到文件尾行)、nG(到第 n 行,如5G到第 5 行);
  • 文本操作:复制(yy)、删除(dd)、撤销(u)。

插入模式(编辑文本)

从命令模式进入插入模式的快捷键(按Esc返回命令模式):

快捷键 功能描述
i 在光标当前位置插入文本(光标后内容后移)
I 在光标所在行的行首插入文本
a 在光标当前位置插入文本
A 在光标所在行的行尾插入文本
o 在光标所在行的下方新建一行并插入文本
O 在光标所在行的上方新建一行并插入文本

编辑模式(保存 / 退出 / 查找)

从命令模式按:进入此模式(左下角显示:),输入命令后按回车执行,自动返回命令模式:

命令 功能描述
:w 保存文件(不退出)
:w! 强制保存(当文件只读时,需 root 权限)
:q 退出 vim(未修改文件时)
:q! 强制退出(不保存修改,放弃编辑)
:wq 保存并退出
:wq! 强制保存并退出
:x 保存并退出(与:wq相同,更简洁)
:set nu 显示行号(临时生效,关闭文件后失效)
:set ic 查找时忽略大小写(ic=ignore case)

vim 常用操作(命令模式)

文本选择与删除

快捷键 功能描述 示例
x 删除光标所在位置的单个字符 光标在a上,按x删除a
dd 删除光标所在行(整行删除) dd(删除当前行,放入剪贴板)
ndd 删除当前行及后续 n-1 行(共 n 行) 3dd(删除当前行 + 下 2 行)
dG 删除光标所在行到文件尾的所有内容 dG(清空文件后半部分)
D 删除光标位置到行尾的内容 光标在行首,按D删除整行内容
:n1,n2d 删除第 n1 行到第 n2 行的内容(编辑模式命令) :5,10d(删除 5-10 行)

注意:删除的内容会放入 vim 剪贴板,可通过p粘贴。

复制与粘贴

快捷键 功能描述 示例
yy 复制光标所在行(整行复制) yy(复制当前行到剪贴板)
nyy 复制当前行及后续 n-1 行(共 n 行) 2yy(复制当前行 + 下 1 行)
yw 复制光标所在位置的单词(到单词结尾) 光标在单词首字母,按yw复制单词
p 将剪贴板内容粘贴到光标 复制后按p粘贴到当前行下方
P(大写) 将剪贴板内容粘贴到光标 复制后按P粘贴到当前行上方

查找与替换

查找文本

  • 命令模式按/,输入要查找的内容,按回车开始查找(向前查找);示例:/printf(查找所有printf关键字);
  • 命令模式按?,输入要查找的内容,按回车开始查找(向后查找);示例:?include(从光标位置向后查找include);
  • 查找后按n(同一方向继续查找)、N(相反方向查找);
  • 忽略大小写查找:编辑模式输入:set ic,恢复大小写敏感输入:set noic

替换文本

编辑模式输入替换命令(格式::范围s/原内容/新内容/选项):

命令 功能描述 示例
:s/a/b/g 替换当前行所有abg=global,全局) :s/printf/puts/g(当前行替换)
:n1,n2s/a/b/g 替换第 n1-n2 行所有ab :5,10s/int/char/g(5-10 行替换)
:%s/a/b/g 替换整个文件所有ab%= 所有行) :%s/old/new/g(全文件替换)
:%s/a/b/gc 替换全文件ab,每次替换前询问(c=confirm) :%s/hello/hi/gc(询问后替换)

撤销与反撤销

快捷键 功能描述 示例
u 撤销上一次操作(如误删后按u恢复) 删行后按u恢复该行
Ctrl+r 反撤销(恢复被撤销的操作) u后按Ctrl+r,重新执行操作

vim 个性化配置(永久生效)

通过修改~/.vimrc文件(用户级配置),实现语法高亮、显示行号等功能:

步骤 1:创建并编辑~/.vimrc

vim ~/.vimrc

步骤 2:添加配置内容

set nu          " 显示行号
set ic          " 查找时忽略大小写
set autoindent  " 自动缩进(编写代码时,新行与上一行对齐)
set tabstop=4   " Tab键宽度为4个空格
set shiftwidth=4 " 自动缩进时的宽度为4个空格
set expandtab   " 将Tab键转换为空格(避免不同编辑器Tab宽度不一致)
set cursorline  " 高亮光标所在行(方便定位)
syntax on       " 开启语法高亮(不同类型文件显示不同颜色,如C代码)

步骤 3:生效配置

保存退出~/.vimrc后,重新打开 vim 即可生效;若已打开 vim,执行:source ~/.vimrc立即生效。

实战:用 vim 编写并编译 C 程序

步骤 1:创建 C 文件

vim demo.c(进入 vim,默认命令模式)。

步骤 2:编写代码

i进入插入模式,输入以下代码:

#include <stdio.h>int main() {printf("Hello, Linux!\n");return 0;
}

步骤 3:保存退出

Esc返回命令模式,按:进入编辑模式,输入:wq保存并退出。

步骤 4:编译运行

  • 安装编译器gccsudo apt install gcc
  • 编译代码:gcc demo.c -o demo(生成可执行文件demo);
  • 运行程序:./demo(输出:Hello, Linux!)。
http://www.hskmm.com/?act=detail&tid=27527

相关文章:

  • 基于 C++ 的高雷诺数湍流直接数值模拟求解器设计与性能优化 - 实践
  • 由等概率(a,b)生成等概率(c,d)
  • AI/LLM应用安全与合规产品(AI安全网关|AI安全围栏|AI应用防火墙) 2025最新推荐
  • 10.8 CSP-S模拟27 改题记录
  • 《可复制的领导力》
  • 经营分析会 - 智慧园区
  • 自动评估问答模型的技术突破
  • Ivanti EPM移动版12.5.0.0身份验证绕过漏洞分析与利用
  • 运行Udacity的MPC控制项目指南(project_10)在Ubuntu 18.04环境下
  • 深入解析:Java 将 PDF 转换为 PDF/A:数字文档归档的基石
  • 入门正当时!MQTT协议轻量简洁,但应用绝不简单
  • 英语阅读
  • CF1832D2 Red-Blue Operations (Hard Version) 模拟赛题目分析
  • 网络流最小割,无向图建图法,求最小割点转换求最小割边
  • 实验1 C语言开发环境使用和数据类型、运算符、表达式
  • 深度学习概述 - -一叶知秋
  • 烧录神器来了!量产工具使用教程,新手也能秒懂
  • 看论文随笔Incendio: Priority-Based Scheduling for Alleviating Cold Start in Serverless Computing
  • C#性能优化基础:内存诊断(dump)
  • 2025年企业级LLM内容安全防护指南:鉴冰AI FENCE流式网关技术深度解析
  • 完整教程:FPGA学习笔记——图像处理之亮度调节(Gamma)
  • Kubernetes Ingress:管理集群外部访问的入口网关
  • 搜索选讲
  • vue打包的项目,从根目录进去路由可访问,浏览器直接打开这个路由不可访问
  • IObit Uninstaller一款强大的卸载工具!IObit Uninstaller卸载工具,IObit Uninstaller下载安装教程
  • 网络配置不再难:4G/Wi-Fi/以太网/虚拟网卡全指南
  • 计算几何
  • 2025开关按钮厂家最新推荐榜:开关按钮,带灯开关按钮,防水开关按钮,防爆开关按钮,防腐开关按钮等全种类覆盖,高品质设计与卓越性能口碑之选
  • 一种排查java.lang.OutOfMemoryError: Metaspace的方法
  • First Blog Post