Linux命令大全

按分类搜索文件与目录、权限、文本处理、进程、网络、压缩以及 vi/vim 编辑器快捷键等常用命令71个。

文件与目录

📁

ls

查看目录中的文件和文件夹列表。

基本语法与选项

  • 基本格式:`ls [选项] [路径]`
  • -l:显示文件大小、权限、修改时间等详细信息。
  • -a:显示所有文件,包括隐藏文件(以.开头的文件)。
  • -h:以易读单位(KB/MB)显示文件大小。

ls -al → 查看包含隐藏文件在内的详细列表。

📂

cd

切换当前工作目录。

基本语法与选项

  • 使用 `cd 路径` 切换到目标目录。
  • `cd ..` 切换到上级目录,`cd ~` 切换到主目录。
  • `cd -` 返回上一次所在的目录。

cd /var/log → 切换到 /var/log 目录。

📍

pwd

输出当前所在目录的完整路径。

基本语法与选项

  • 是 Print Working Directory 的缩写。
  • 在Shell脚本中也常用于将当前路径保存为变量。
🗂️

mkdir

创建新目录(文件夹)。

基本语法与选项

  • 使用 `mkdir 文件夹名` 创建文件夹。
  • 加上 -p 选项,即使中间路径不存在也能一次性创建。

mkdir -p project/src/utils → 一次性创建多层嵌套文件夹。

🗑️

rmdir

删除空目录。

基本语法与选项

  • 无法删除有内容的目录,此时需要使用 `rm -r`。
✨

touch

创建空文件,或更新已有文件的修改时间。

基本语法与选项

  • 若文件不存在则新建;若已存在,则仅将最后修改时间更新为当前时间。

touch notes.txt → 创建一个空文本文件。

📋

cp

复制文件或目录。

基本语法与选项

  • 格式为 `cp 源 目标`。
  • 必须加 -r 选项才能复制整个目录(文件夹)。
  • -i 选项会在覆盖同名文件前询问确认。

cp -r src backup → 将整个 src 文件夹复制为 backup。

➡️

mv

移动文件或目录,或对其重命名。

基本语法与选项

  • 在同一位置仅更改名称时相当于重命名文件;指定不同路径时则相当于移动。

mv old.txt new.txt → 重命名文件。

❌

rm

删除文件或目录。

基本语法与选项

  • 默认只能删除文件,删除目录需要加 -r(递归)选项。
  • -f 选项会不经确认强制删除,请谨慎使用。
  • 没有回收站概念,一旦删除很难恢复。

rm -rf old_folder → 强制删除文件夹及其全部内容(请谨慎使用)。

📄

cat

将文件内容原样输出到屏幕。

基本语法与选项

  • 也可以一次性连接输出多个文件(`cat a.txt b.txt`)。
  • 常用于快速查看较短文件的内容。
🔎

find

查找符合条件的文件或目录。

基本语法与选项

  • `find 路径 -name "模式"` 按名称搜索。
  • 可用 -type f(文件)/ -type d(目录)指定类型。
  • -mtime 选项可以按修改时间进行搜索。

find . -name "*.log" → 查找当前文件夹下所有扩展名为 .log 的文件。

🌳

tree

以树状结构一目了然地展示目录结构。

基本语法与选项

  • 部分发行版未预装,可能需要单独安装(例如:`apt install tree`)。
  • 可用 -L 数字 选项限制显示的文件夹深度。

权限与用户

🔐

chmod

更改文件或目录的访问权限(读/写/执行)。

基本语法与选项

  • 权限按所有者、群组、其他用户的顺序,分别用读(4)、写(2)、执行(1)相加表示。
  • 例如755表示所有者拥有全部权限,群组和其他用户只有读取和执行权限。
  • 也可以用符号(+ / -)指定,如 `chmod +x script.sh`。

chmod 755 script.sh → 赋予所有者读/写/执行权限,其余用户只有读/执行权限。

👤

chown

更改文件或目录的所有者(用户)。

基本语法与选项

  • 格式为 `chown 用户名 文件名`。
  • 也可用 `chown 用户:群组 文件名` 同时更改所有者和群组。

chown user1 file.txt → 将 file.txt 的所有者改为 user1。

👥

chgrp

更改文件或目录所属的群组。

基本语法与选项

  • 格式为 `chgrp 群组名 文件名`。
🛡️

sudo

以管理员(root)权限执行命令。

基本语法与选项

  • 据说是 "Substitute User DO" 的缩写。
  • 用于更改系统设置、安装软件包等普通用户权限无法完成的操作。
  • 执行前会要求输入当前登录账户的密码。
🔄

su

切换到其他用户(默认是root)。

基本语法与选项

  • 只输入 `su` 会尝试切换到 root,输入 `su 用户名` 则切换到指定账户。
  • 与sudo不同,需要输入目标账户本身的密码。
🙋

whoami

输出当前登录用户的名称。

基本语法与选项

  • 在脚本或远程服务器连接时,可用于快速确认当前使用的是哪个账户。

文本处理与搜索

🔍

grep

在文件或输入内容中查找包含特定字符串(模式)的行。

基本语法与选项

  • 基本格式为 `grep "模式" 文件名`。
  • -i 选项忽略大小写进行搜索。
  • -r 选项递归搜索目录中的所有文件。
  • -n 选项会同时显示匹配行的行号。

grep -rn "TODO" ./src → 在 src 文件夹下的所有文件中查找包含 TODO 的行及其行号。

✂️

sed

按照规则替换或编辑文本的流编辑器。

基本语法与选项

  • 最常用的形式是字符串替换:`sed 's/old/new/g' 文件`
  • 末尾的g表示替换该行中所有匹配项。
  • 加上 -i 选项会直接修改原文件,而不是输出到屏幕。

sed -i 's/foo/bar/g' file.txt → 将 file.txt 中所有的 foo 替换为 bar 并保存。

🧮

awk

按行和列(字段)处理文本的编程语言兼命令。

基本语法与选项

  • 默认以空格为基准,将每行拆分为字段(`$1`、`$2`……)处理。
  • 常用于从日志文件中提取特定列。

awk '{print $1}' access.log → 只输出每行的第一个字段。

⬇️

tail

只输出文件末尾的几行。

基本语法与选项

  • 默认是10行。
  • 实时查看日志文件时常用 -f(follow)选项。

tail -f /var/log/syslog → 实时持续显示日志文件中新增加的内容。

🔀

sort

按行对文本进行排序。

基本语法与选项

  • 默认按字典顺序排序。
  • -n 选项按数值排序。
  • -r 选项反转排序顺序(倒序)。
🧹

uniq

将连续重复的行合并为一行。

基本语法与选项

  • 对未排序的数据无法正常生效,通常与 `sort` 配合使用(`sort file | uniq`)。
  • -c 选项会同时显示重复的次数。
🔢

wc

统计文件的行数、单词数和字符(字节)数。

基本语法与选项

  • -l 只输出行数,-w 只输出单词数,-c 只输出字节数。

wc -l file.txt → 输出文件的总行数。

📜

less

可以按屏幕滚动查看文件内容的查看器。

基本语法与选项

  • 与cat不同,不会一次性将整个文件读入内存,因此打开大文件也很快速轻便。
  • 用方向键滚动,用 `/搜索词` 在文件内搜索,按q退出。
🆚

diff

按行比较两个文件的内容,显示差异。

基本语法与选项

  • 会显示哪些行被添加、删除或修改,便于比较代码或配置文件。

diff old.txt new.txt → 显示两个文件之间不同的行。

进程与系统

⚙️

ps

显示当前正在运行的进程列表。

基本语法与选项

  • `ps aux` 是最常用的形式,会详细显示所有用户的全部进程。

ps aux | grep nginx → 在运行中的进程里只查找名称包含 nginx 的进程。

📊

top

按CPU、内存使用量实时显示正在运行的进程。

基本语法与选项

  • 屏幕会定期自动刷新,按q退出。
  • 更易用的改进版 htop 也被广泛使用(需单独安装)。
🛑

kill

向进程发送信号使其终止。

基本语法与选项

  • 格式为 `kill 进程ID(PID)`。
  • 如果默认信号无法终止,可使用 -9(强制终止)选项。

kill -9 1234 → 强制终止PID为1234的进程。

💥

killall

通过进程名称一次性终止多个进程。

基本语法与选项

  • 即使不知道PID,仅凭可执行文件名称就能终止进程,非常方便。

killall firefox → 终止所有名为 firefox 的进程。

🧾

jobs

显示当前终端会话中在后台运行或已停止的任务列表。

基本语法与选项

    ⏯️

    bg / fg

    将已停止的任务以后台(bg)或前台(fg)方式继续执行。

    基本语法与选项

    • 用Ctrl+Z暂停任务后,可以用 `bg` 在后台继续运行,或用 `fg` 重新调到前台。
    🧰

    systemctl

    在基于systemd的Linux系统中管理服务(守护进程)。

    基本语法与选项

    • `systemctl start/stop/restart 服务名` 用于启动、停止、重启服务。
    • `systemctl status 服务名` 用于查看当前状态。
    • `systemctl enable 服务名` 用于设置开机自动启动。

    systemctl restart nginx → 重启 nginx 服务。

    💽

    df

    显示磁盘(文件系统)的总容量和使用情况。

    基本语法与选项

    • 加上 -h 选项可以易读单位(如GB)显示容量。

    df -h → 以GB/MB为单位显示各磁盘分区的使用情况。

    📦

    du

    显示文件或目录占用的空间。

    基本语法与选项

    • 用 `du -sh 文件夹名` 可以一目了然地查看整个文件夹的总大小。
    🧠

    free

    显示系统的内存(RAM)使用情况。

    基本语法与选项

    • 加上 -h 选项可以易读单位显示。

    网络

    📶

    ping

    向指定地址发送信号,检查网络连接状态和响应速度。

    基本语法与选项

    • 会持续显示响应时间,直到按下Ctrl+C。

    ping google.com → 持续检查到 google.com 的响应时间。

    🌐

    curl

    向URL请求数据并获取响应的命令,常用于API测试等场景。

    基本语法与选项

    • 默认会将响应内容输出到屏幕。
    • 用 -O 选项可将响应保存为文件,用 -I 选项可只查看响应头。

    curl -I https://example.com → 只查看该网站的响应头。

    ⬇️

    wget

    下载URL指向的文件。

    基本语法与选项

    • 相比curl更专注于文件下载。
    • 下载中途中断时,可用 -c 选项续传。
    🔑

    ssh

    安全地连接(远程登录)到远程服务器。

    基本语法与选项

    • 通信内容经过加密,可以安全地操控远程服务器。

    ssh user@192.168.0.10 → 以 user 账户连接到该IP的服务器。

    📤

    scp

    利用SSH在本地与远程服务器之间安全地复制文件。

    基本语法与选项

    • 格式为 `scp 源 目标`,服务器端路径写作 `user@主机:路径`。

    scp file.txt user@server:/home/user/ → 将本地文件传输到远程服务器。

    🧭

    ip / ifconfig

    查看网络接口的IP地址等配置信息。

    基本语法与选项

    • `ip addr` 是新版发行版的标准命令,`ifconfig` 是旧版发行版使用的方式(部分发行版需要单独安装)。
    🔌

    netstat / ss

    查看当前打开的网络连接和端口状态。

    基本语法与选项

    • `ss` 是取代netstat的新命令,运行速度更快。
    🛰️

    traceroute

    显示数据包到达目的地所经过的网络路径(中转节点)。

    基本语法与选项

    • 用于确认网络延迟或故障发生在哪个区间。

    压缩与其他

    📦

    tar

    将多个文件打包成一个归档文件,或将其解包。

    基本语法与选项

    • 打包和压缩常常同时进行,记住选项组合会很方便。
    • c=创建,x=解压,z=gzip压缩,v=显示进度,f=指定文件名。
    • 例如:-czvf(压缩并打包)、-xzvf(边解压边解包)。

    tar -czvf backup.tar.gz ./project → 将 project 文件夹用gzip压缩为 backup.tar.gz。

    🗜️

    gzip / gunzip

    将文件压缩为 .gz 格式(gzip),或解压(gunzip)。

    基本语法与选项

    • 只能压缩单个文件,打包多个文件时常与tar搭配使用。
    🎁

    zip / unzip

    以 .zip 格式压缩或解压文件、文件夹。

    基本语法与选项

    • 与Windows等其他操作系统兼容性良好的压缩格式。

    unzip archive.zip → 将 archive.zip 的内容解压到当前文件夹。

    🕘

    history

    显示此前输入过的命令列表。

    基本语法与选项

    • 输入 `!编号` 可以重新执行history中对应编号的命令。
    🏷️

    alias

    为常用的长命令注册一个简短的别名。

    基本语法与选项

    • 注册到Shell配置文件(如 ~/.bashrc)中,每次打开新终端时都会自动生效。

    alias ll="ls -al" → 注册后只需输入 ll 即可执行 ls -al。

    📚

    man

    查看命令的官方使用说明(手册)。

    基本语法与选项

    • 用方向键滚动,用 `/搜索词` 在说明书内搜索,按q退出。

    man ls → 查看 ls 命令的全部选项和用法。

    💬

    echo

    将字符串或变量的值输出到屏幕。

    基本语法与选项

    • 在Shell脚本中也常用于确认某个值,或向文件追加内容。

    echo "text" >> file.txt → 在 file.txt 末尾追加一行内容为 text。

    📌

    which

    查找某个命令实际执行时所对应的程序文件路径。

    基本语法与选项

    • 当同名命令安装了多个版本时,可用于确认实际执行的是哪个文件,非常有用。

    which python3 → 显示 python3 命令实际执行的文件路径。

    vi/vim 编辑器

    📝

    vi 기본 모드

    vi(vim)有命令模式、插入模式、命令行模式三种模式,所有操作都是在这些模式之间切换完成的。

    基本语法与选项

    • 打开文件后默认处于命令模式(无法直接输入文字)。
    • 按下 i、a 等键会切换到插入模式,此时可以输入文字。
    • 在插入模式下按Esc会返回命令模式。
    • 在命令模式下按冒号(:)会切换到命令行模式,用于输入保存、退出等命令。

    vi file.txt → 打开 file.txt 并运行 vi。

    ✍️

    i / a / I / A

    切换到插入模式,开始输入文字。

    基本语法与选项

    • i:从光标位置的「前面」开始插入。
    • a:从光标位置的「后面」开始插入。
    • I:从行首开始插入,A:从行尾开始插入。
    🔙

    Esc

    从插入模式等其他模式返回命令模式。

    基本语法与选项

    • vi的几乎所有操作都在命令模式下进行,因此养成完成操作后先按Esc回到命令模式,再进行下一步操作的习惯会很有帮助。
    🧭

    h / j / k / l

    将光标逐格移动(左/下/上/右)。

    基本语法与选项

    • h:左,j:下,k:上,l:右。
    • 这种方式是为了不让手离开基准键位就能快速移动而设计的,用来代替方向键。
    🏃

    w / b / e, 0 / $

    按单词或行为单位移动光标。

    基本语法与选项

    • w:移动到下一个单词的开头,b:移动到上一个单词的开头。
    • e:移动到当前(或下一个)单词的结尾。
    • 0:移动到行首,$:移动到行尾。
    📄

    gg / G / :숫자

    在整篇文档范围内一次性跳转到目标位置。

    基本语法与选项

    • gg:跳转到文档的第一行。
    • G:跳转到文档的最后一行。
    • 输入 `:数字` 后按Enter,可直接跳转到该行号。

    :42 → 跳转到第42行。

    ✂️

    dd

    删除(剪切)当前行。

    基本语法与选项

    • 被删除的行会复制到临时存储区(寄存器),可用p粘贴。
    • 配合数字使用时(`3dd`),可一次删除多行。
    📋

    yy

    复制当前行(yank)。

    基本语法与选项

    • 与dd不同,只复制不删除。
    • 加上数字如 `3yy`,可一次复制多行。
    📥

    p / P

    粘贴复制或删除的内容。

    基本语法与选项

    • p:粘贴到光标「之后」的行/位置。
    • P:粘贴到光标「之前」的行/位置。
    ↩️

    u / Ctrl+r

    撤销或重做操作。

    基本语法与选项

    • u:撤销(undo)刚才的操作。
    • Ctrl+r:重做(redo)被撤销的操作。
    🔡

    x

    删除光标所在的一个字符。

    基本语法与选项

    • 便于立即修正简短的打字错误。
    • 加上数字如 `3x`,可一次删除多个字符。
    🖍️

    v / V

    切换到用于选择范围的可视模式。

    基本语法与选项

    • v:按字符为单位选择范围。
    • V:按行为单位选择范围。
    • 选择范围后按d(删除)、y(复制)等,会应用到整个选定区域。
    🔁

    :%s/old/new/g

    在整篇文档或指定范围内查找并替换字符串。

    基本语法与选项

    • 省略%时只应用于当前行,省略g时每行只替换第一个匹配项。
    • 末尾加c(`:%s/old/new/gc`)时,会在替换前逐一确认。

    :%s/foo/bar/g → 将文档中所有的 foo 替换为 bar。

    💾

    :w / :q / :wq / :q!

    保存操作内容或退出编辑器。

    基本语法与选项

    • :w — 保存当前内容。
    • :q — 退出编辑器(在没有更改的情况下)。
    • :wq (或 ZZ) — 保存并退出。
    • :q! — 不保存更改并强制退出。

    :wq → 保存并退出 vi。

    🔢

    :set number

    在每行开头显示行号。

    基本语法与选项

    • 用 `:set number`(或 `:set nu`)开启,用 `:set nonumber` 再次关闭。
    🔂

    .

    按句点(.)键可以原样再重复一次刚才所做的编辑操作。

    基本语法与选项

    • 需要在文档多处重复应用相同修改时尤其有用。

    本页面涵盖哪些内容?

    在终端中经常遇到、却总记不住选项的Linux命令,按照文件与目录(ls、cd、cp等基本操作)→权限与用户(chmod、sudo等访问控制)→文本处理与搜索(grep、sed、awk等)→进程与系统(ps、top、systemctl等)→网络(ping、curl、ssh等)→压缩与其他(tar、history、alias等)→vi/vim 编辑器(模式切换、光标移动、保存退出快捷键等) 的顺序进行了整理。点击上方的分类标签,或在搜索框中输入命令,即可快速找到你需要的内容。

    为什么不同发行版的命令感觉略有差异?

    本页面的命令在包括Ubuntu、Debian系在内的大多数Linux发行版,以及macOS终端上都基本以相同方式运行。 不过,像 tree 这样的命令并非预装,可能需要单独安装;而 ifconfig 这样的命令, 在较新的发行版中正逐渐被 ip 等新命令取代。如果某个命令无法运行,请先确认是否需要通过 发行版的包管理器(apt、dnf等)进行安装。

    注意事项

    本页面作为教育性内容,介绍常用Linux命令的基本用法。尤其是像 rm -rf 这样会删除文件 或更改系统的命令,一旦误用可能造成难以恢复的损失,因此建议在实际系统上执行前务必再次确认命令和路径。 更详细的选项说明,也请参考各命令对应的 man 手册页。

    常见问题

    这些命令在Windows命令提示符(cmd)中也能直接使用吗?

    不能。Windows的cmd或PowerShell语法不同。不过,在Windows 10及以上系统安装WSL(Windows Subsystem for Linux)后,就可以在真正的Linux环境中直接使用本页面的命令。

    为什么sudo总是反复要求输入密码?

    出于安全考虑,sudo的认证在经过一定时间(默认约15分钟)后会失效,因此会再次要求输入密码。这是为了防止在无需每次确认的情况下执行需要管理员权限的命令,从而避免对系统造成重大误操作。

    本页面没有的命令可以在哪里查到?

    目前暂未提供该语言版本专属的联系页面。您可以先在终端中输入 man 命令名,即可立即查看该命令的官方说明文档。

    vi和vim是同一个东西吗?

    vim(Vi IMproved)是在原始vi编辑器基础上,增加了语法高亮、多级撤销、插件等多种功能的改进版本。在大多数现代Linux发行版中,即使以 vi 这个名称运行,实际上打开的也是vim,因此本页面的快捷键在两种情况下都可以照常使用。