Linux常用命令

Linux 命令是操作系统的核心,掌握常用命令能极大提升效率。下面分类介绍一些最常用和关键的 Linux 命令,并附上简单示例:

一、目录与文件导航

  1. pwd (Print Working Directory)

    • 功能: 显示你当前所在的目录(路径)。
    • 示例: pwd -> 输出 /home/username
  2. ls (List)

    • 功能: 列出当前目录下的文件和子目录。
    • 常用选项:
      • -l: 长格式显示(详细信息:权限、所有者、大小、修改时间)。
      • -a: 显示所有文件,包括隐藏文件(以 . 开头的文件)。
      • -h: 与 -l 一起使用,以人类可读的格式显示文件大小(如 K, M, G)。
    • 示例:
      • ls -> 列出当前目录内容
      • ls -l /etc -> 长格式列出 /etc 目录内容
      • ls -la ~ -> 列出家目录下所有文件(包括隐藏文件)的详细信息
  3. cd (Change Directory)

    • 功能: 切换当前工作目录。
    • 特殊符号:
      • cdcd ~: 切换到当前用户的家目录(/home/username)。
      • cd ..: 切换到上一级目录。
      • cd -: 切换到上一次所在的目录。
      • cd /path/to/directory: 切换到绝对路径指定的目录。
      • cd relative/path: 切换到相对于当前目录的路径。
    • 示例:
      • cd Documents -> 进入当前目录下的 Documents 子目录
      • cd /usr/bin -> 进入 /usr/bin 目录
      • cd .. -> 返回上级目录
      • cd -> 回家目录

二、文件与目录操作

  1. mkdir (Make Directory)

    • 功能: 创建新目录。
    • 常用选项: -p: 创建多级目录(父目录不存在时一并创建)。
    • 示例:
      • mkdir new_folder -> 在当前目录创建 new_folder
      • mkdir -p project/docs/images -> 创建嵌套目录结构
  2. touch

    • 功能:
      1. 创建一个新的空文件(如果文件不存在)。
      2. 更新一个已存在文件的访问和修改时间戳(不改内容)。
    • 示例: touch file.txt -> 创建 file.txt 或更新其时间戳
  3. cp (Copy)

    • 功能: 复制文件或目录。
    • 常用选项:
      • -r-R: 递归复制目录及其内容(复制目录时必须用)。
      • -i: 覆盖前提示确认。
      • -v: 显示复制过程(verbose)。
    • 示例:
      • cp file.txt file_backup.txt -> 复制文件
      • cp -r old_dir new_dir -> 递归复制整个目录
      • cp -iv *.txt backup/ -> 交互式、详细地将所有 .txt 文件复制到 backup/ 目录
  4. mv (Move)

    • 功能:
      1. 移动文件或目录到新位置。
      2. 重命名文件或目录(在同一目录下移动)。
    • 常用选项: -i: 覆盖前提示确认; -v: 显示移动过程。
    • 示例:
      • mv file.txt /tmp/ -> 移动文件到 /tmp
      • mv oldname.txt newname.txt -> 重命名文件
      • mv -i dir1/ dir2/ -> 将 dir1 移动到 dir2 内(如果 dir2 存在)或重命名 dir1dir2(如果 dir2 不存在),覆盖前询问
  5. rm (Remove)

    • 功能: 删除文件或目录。⚠️ 非常危险!删除后通常很难恢复!
    • 常用选项:
      • -r-R: 递归删除目录及其内容(删除目录时必须用)。
      • -f: 强制删除,不提示确认(Force)。慎用!
      • -i: 删除前提示确认(Interactive)。
    • 示例: 极度谨慎!
      • rm unwanted_file.log -> 删除文件
      • rm -r old_project/ -> 删除目录及其所有内容(系统会提示确认目录删除)
      • rm -rf temp_data/ -> 强制递归删除目录,没有任何提示!极其危险!
      • rm -i *.tmp -> 交互式删除所有 .tmp 文件(每个文件删除前询问)
  6. cat (ConCATenate)

    • 功能:
      1. 在终端显示整个文件内容(适合小文件)。
      2. 合并多个文件内容并输出。
      3. 创建小文件(cat > file.txt,输入内容,按 Ctrl+D 结束)。
    • 示例:
      • cat config.conf -> 显示 config.conf 的内容
      • cat part1.txt part2.txt > combined.txt -> 合并 part1.txtpart2.txt 内容到 combined.txt
  7. less / more

    • 功能: 分页查看文件内容(比 cat 更适合大文件)。less 功能更强大(支持上下滚动、搜索等),是 more 的增强版,推荐优先使用 less
    • 操作(在 less 中):
      • 空格键 / Page Down: 向下翻一页
      • b / Page Up: 向上翻一页
      • /keyword: 向下搜索 "keyword"
      • ?keyword: 向上搜索 "keyword"
      • n: 跳转到下一个匹配项
      • N: 跳转到上一个匹配项
      • q: 退出
    • 示例: less large_log_file.log
  8. head

    • 功能: 显示文件的开头若干行(默认10行)。
    • 常用选项: -n : 指定显示的行数。
    • 示例: head -n 20 logfile.txt -> 显示 logfile.txt 的前 20 行
  9. tail

    • 功能: 显示文件的末尾若干行(默认10行)。监视日志文件更新特别有用!
    • 常用选项:
      • -n : 指定显示的行数。
      • -f / --follow: 实时跟踪文件末尾的新增内容(常用于查看持续写入的日志,按 Ctrl+C 停止)。
    • 示例:
      • tail error.log -> 显示 error.log 最后 10 行
      • tail -n 50 -f /var/log/syslog -> 显示系统日志最后 50 行,并持续跟踪新内容
  10. find

    • 功能: 在目录树中递归搜索文件和目录,功能极其强大。
    • 基本语法: find [起始目录] [搜索条件] [动作]
    • 常用搜索条件:
      • -name "pattern": 按文件名匹配(支持通配符 *, ?,需用引号括起)。
      • -type : 按类型搜索 (f 文件, d 目录)。
      • -mtime : 按修改时间搜索(天数,+7 表示7天前,-7 表示7天内)。
      • -size : 按文件大小搜索(如 +10M 大于10MB, -1G 小于1GB)。
    • 常用动作: -print (默认,打印路径), -exec command {} \; (对找到的文件执行命令)。
    • 示例:
      • find . -name "*.jpg" -> 在当前目录及子目录查找所有 .jpg 文件
      • find /var/log -type f -mtime -1 -> 在 /var/log 下查找最近1天内修改过的普通文件
      • find ~ -size +100M -exec ls -lh {} \; -> 在家目录查找大于100MB的文件并显示详细信息
  11. grep (Global Regular Expression Print)

    • 功能: 强大的文本搜索工具,在文件或输入流中查找匹配指定模式(字符串或正则表达式)的行。
    • 常用选项:
      • -i: 忽略大小写。
      • -r-R: 递归搜索目录中的文件。
      • -n: 显示匹配行所在的行号。
      • -v: 反向选择,显示包含匹配模式的行。
      • -l: 只打印包含匹配项的文件名。
      • -w: 匹配整个单词。
    • 示例:
      • grep "error" system.log -> 在 system.log 中查找包含 "error" 的行
      • grep -i -r "warning" /var/log/ -> 在 /var/log/ 下递归搜索忽略大小写的 "warning"
      • ps aux | grep "firefox" -> 结合管道,在进程列表中查找 "firefox" 进程

三、系统信息与进程管理

  1. ps (Process Status)

    • 功能: 报告当前进程的快照信息。
    • 常用选项组合: aux (BSD 风格) 或 -ef (Unix 风格),显示所有用户的详细进程信息。
    • 示例: ps aux -> 列出所有运行中的进程详细信息(USER, PID, %CPU, %MEM, COMMAND 等)
  2. top / htop (enhanced top)

    • 功能: 动态、实时显示系统中进程的资源占用情况(CPU、内存等),类似任务管理器。htoptop 的现代化、交互性更强的替代品(通常需要安装)。
    • 操作: 运行后,按 q 退出,按 k 终止进程(需输入PID),按 F/? 查看帮助。htop 界面更友好,支持鼠标操作。
  3. kill

    • 功能: 向进程发送信号以终止或控制进程。最常用的是发送终止信号(SIGTERM, 信号 15)或强制终止信号(SIGKILL, 信号 9)。
    • 语法: kill [选项]
    • 常用选项: -9-SIGKILL: 发送 SIGKILL 信号强制立即终止进程(进程无法捕获或忽略,应作为最后手段)。
    • 示例:
      • kill 1234 -> 向 PID 为 1234 的进程发送 SIGTERM 信号,请求它正常终止。
      • kill -9 5678 -> 强制杀死 PID 为 5678 的进程。
  4. free

    • 功能: 显示系统内存(RAM)和交换空间(Swap)的使用情况。
    • 常用选项: -h: 以人类可读格式显示(G, M)。
    • 示例: free -h
  5. df (Disk Free)

    • 功能: 报告文件系统的磁盘空间使用情况(挂载点、总大小、已用、可用、使用百分比)。
    • 常用选项: -h: 以人类可读格式显示。
    • 示例: df -h -> 查看所有挂载点的磁盘空间
  6. du (Disk Usage)

    • 功能: 估算文件或目录占用的磁盘空间。
    • 常用选项:
      • -h: 以人类可读格式显示。
      • -s--summarize: 只显示总计大小。
      • --max-depth=: 指定深入目录的层级。
    • 示例:
      • du -sh /home/username -> 显示用户家目录的总大小
      • du -h --max-depth=1 /var -> 显示 /var 下第一级子目录的大小
  7. uname (UNIX name)

    • 功能: 打印系统信息(内核名称、版本、硬件架构等)。
    • 常用选项: -a--all: 显示所有信息。
    • 示例: uname -a

四、网络管理

  1. ping

    • 功能: 测试与另一台网络主机(通过 IP 地址或域名)的网络连接(可达性和延迟)。发送 ICMP Echo 请求包并等待回复。
    • 常用选项: -c : 指定发送多少次包后停止(默认会一直发送,按 Ctrl+C 停止)。
    • 示例: ping -c 4 google.com -> 向 google.com 发送 4 个 ping 包并显示结果
  2. ifconfig (旧) / ip (新)

    • 功能: 查看和配置网络接口(网卡)信息(IP 地址、MAC 地址、状态等)。
    • 说明: ifconfig 属于过时的 net-tools 包,逐渐被更强大的 ip 命令(来自 iproute2 包)取代。
    • 常用 ip 子命令:
      • ip addr showip a: 显示所有网络接口的地址信息。
      • ip link show: 显示链路层(Layer 2)信息。
      • ip route show: 显示路由表。
    • 示例: ip a -> 显示所有网络接口的详细信息
  3. netstat (旧) / ss (新)

    • 功能: 显示网络连接、路由表、接口统计等信息。
    • 说明: netstat 也属于 net-toolsss (socket statistics) 是其现代替代品,速度更快。
    • 常用选项 (ss):
      • -t: 显示 TCP 连接。
      • -u: 显示 UDP 连接。
      • -l: 显示监听(LISTENING)状态的套接字。
      • -n: 以数字形式显示地址和端口(不解析主机名和服务名)。
      • -p: 显示使用套接字的进程信息(需要 sudo)。
    • 示例:
      • ss -tunlp -> 查看所有正在监听的 TCP/UDP 端口及其对应的进程(需 sudo)
      • netstat -tulnp (旧方式)
  4. wget

    • 功能: 通过 HTTP、HTTPS、FTP 协议从网络下载文件。支持递归下载(镜像网站)。
    • 常用选项: -O : 指定下载后的文件名; -c: 断点续传。
    • 示例: wget https://example.com/largefile.iso -> 下载文件
  5. curl (Client URL)

    • 功能: 强大的数据传输工具,支持多种协议(HTTP, HTTPS, FTP, SCP, SFTP 等)。常用于与 Web API 交互、测试端点、下载/上传文件、获取网页内容等,比 wget 更侧重协议交互。
    • 常用选项: -o : 将输出保存到文件; -O: 使用远程文件名保存; -I: 只获取响应头信息; -L: 跟随重定向。
    • 示例:
      • curl -O https://example.com/file.txt -> 下载文件并保持原名
      • curl -I https://example.com -> 获取网站响应头
      • curl https://api.example.com/data -> 获取 API 返回的 JSON/XML 数据(常在终端显示)

五、权限管理

  1. chmod (Change Mode)

    • 功能: 更改文件或目录的访问权限(读 r=4, 写 w=2, 执行 x=1)。
    • 两种主要模式:
      • 符号模式: 更直观 (u/g/o/a) (+/-/=) (r/w/x)
        • u: 所有者 (user) g: 所属组 (group) o: 其他用户 (others) a: 所有用户 (all)
        • +: 添加权限 -: 移除权限 =: 设置精确权限
        • 示例:
          • chmod u+x script.sh -> 给所有者添加执行权限
          • chmod go-w file.txt -> 移除组和其他用户的写权限
          • chmod a=r file.txt -> 设置所有用户只有读权限
      • 八进制(数字)模式: 更简洁 (所有者权限)(组权限)(其他用户权限) (每个权限是 rwx 对应的数字之和)
        • 示例:
          • chmod 755 script.sh -> 所有者: rwx (7), 组: r-x (5), 其他用户: r-x (5) (常用可执行文件/脚本)
          • chmod 644 config.conf -> 所有者: rw- (6), 组: r-- (4), 其他用户: r-- (4) (常用普通文件)
  2. chown (Change Owner)

    • 功能: 更改文件或目录的所有者和/或所属组。
    • 语法: chown [新所有者][:新所属组]
    • 常用选项: -R: 递归更改目录及其内容。
    • 示例:
      • chown user1 file.txt -> 将 file.txt 的所有者改为 user1
      • chown :developers project/ -> 将 project/ 目录的所属组改为 developers
      • chown -R user2:www-data /var/www/ -> 递归更改 /var/www/ 下所有文件的所有者为 user2,所属组为 www-data
  3. sudo (SuperUser DO)

    • 功能: 以超级用户(root)或其他用户的权限执行命令(需要当前用户在 sudoers 配置中被授权)。用于执行需要管理员权限的操作。
    • 示例: sudo apt update -> 以 root 权限更新软件包列表
    • 重要: 谨慎使用 sudo,尤其是 rm 等危险命令。

六、压缩与解压

  1. tar (Tape ARchiver)

    • 功能: 将多个文件打包成一个归档文件(.tar),并可结合压缩程序(如 gzip, bzip2, xz)进行压缩。
    • 常用选项:
      • -c: 创建新的归档文件 (Create)。
      • -x: 解压归档文件 (eXtract)。
      • -f : 指定归档文件名 (File)。
      • -v: 显示处理过程 (Verbose)。
      • -z: 使用 gzip 压缩/解压 (.tar.gz.tgz)。
      • -j: 使用 bzip2 压缩/解压 (.tar.bz2.tbz2)。
      • -J: 使用 xz 压缩/解压 (.tar.xz.txz)。
    • 示例:
      • 打包并压缩: tar -czvf archive.tar.gz dir1/ file1.txt -> 创建 archive.tar.gz,包含 dir1/file1.txt (gzip压缩)
      • 解压: tar -xzvf archive.tar.gz -> 解压 archive.tar.gz (自动识别压缩格式解压) 到当前目录
      • 仅打包: tar -cvf backup.tar important_files/ -> 创建未压缩的 backup.tar
  2. gzip / gunzip

    • 功能: gzip 压缩文件(生成 .gz 文件),gunzip 解压 .gz 文件。通常用于压缩单个文件(tar 负责打包多个文件再用 gzip 压缩)。
    • 示例:
      • gzip large.log -> 压缩 large.loglarge.log.gz (原文件删除)
      • gunzip large.log.gz -> 解压 large.log.gzlarge.log
  3. zip / unzip

    • 功能: 创建和解压 .zip 压缩包(跨平台常用)。
    • 示例:
      • zip -r project.zip project/ -> 递归压缩 project/ 目录为 project.zip
      • unzip project.zip -> 解压 project.zip 到当前目录

七、帮助与学习

  1. man (Manual)

    • 功能: 查看命令、函数、配置文件等的详细帮助手册(manual pages)。最权威的参考!
    • 语法: man [章节号]
    • 操作:空格键 翻页,/keyword 搜索,n/N 下一个/上一个匹配项,q 退出。
    • 示例: man ls -> 查看 ls 命令的详细手册
  2. --help-h

    • 功能: 大多数命令都支持此选项,显示该命令的快速使用帮助和选项摘要(通常比 man 更简洁)。
    • 示例: ls --help

八、强大的工具:管道 (|) 和重定向 (>, >>, <)

  • 管道 | 将一个命令的输出作为另一个命令的输入。
    • 示例: ps aux | grep nginx -> 列出所有进程,然后筛选出包含 "nginx" 的行。cat access.log | grep "404" | wc -l -> 统计 access.log 中 404 错误的次数。
  • 重定向 > 将命令的输出覆盖 写入到文件(文件不存在则创建)。
    • 示例: ls -l > filelist.txt -> 将 ls -l 的结果保存到 filelist.txt(覆盖原内容)。
  • 重定向 >> 将命令的输出追加 到文件末尾。
    • 示例: echo "New entry" >> log.txt -> 将 "New entry" 添加到 log.txt 文件末尾。
  • 重定向 < 将文件内容作为命令的输入。
    • 示例: sort < unsorted_list.txt -> 对 unsorted_list.txt 文件内容进行排序并输出到屏幕。

总结与建议

  • 勤用 man--help 遇到不熟悉的命令或选项,这是最好的老师。
  • 谨慎使用 rm (尤其是 -rf)、chmodchownsudo 错误的操作可能导致数据丢失或系统问题。
  • 理解管道和重定向: 这是组合命令、处理文本、自动化任务的核心魔法。
  • 实践是王道: 在安全的测试环境(虚拟机、个人电脑)中多动手尝试。
  • 学习 Shell 脚本: 当命令组合变得复杂时,写成脚本 (.sh) 可以大大提高效率和复用性。

这涵盖了 Linux 中最常用和基础的一批命令。掌握它们,你就能高效地在命令行下完成大部分日常管理和开发任务了!随着深入学习,你会发现更多强大的工具(如 awk, sed, rsync, scp, ssh, cron 等)。

相关推荐
江公望15 分钟前
Linux kernel regcache_cache_only()函数详解
linux
liuyunluoxiao1 小时前
基于生产者消费者模型的线程池【Linux操作系统】
linux
程序员黄老师2 小时前
Ubuntu 24.04上安装 Intelligent Pinyin 中文输入法
linux·运维·ubuntu
HONG_YANG2 小时前
ERPNext 介绍、安装和维护建议
linux
HONG_YANG2 小时前
ERPNext 搭建教程:Linux 一键部署与维护
linux
Enti7c2 小时前
什么是void,什么时候使用void类型?never和void的区别
linux·运维·ubuntu
scilwb4 小时前
基于Isaac Sim场景的Coverage Path Planning 项目部署完整指南
linux
知北游天5 小时前
Linux:多线程---同步&&生产者消费者模型
java·linux·网络
kfepiza5 小时前
`nmcli con add type vlan`中的: `ifname` , `dev` ,`vlan.parent`, `id`,`vlan.id`
linux·网络协议·tcp/ip
kfepiza5 小时前
Linux的NetworkManager的`nmcli connection add` 笔记250712
linux·网络协议·tcp/ip