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 等)。

相关推荐
To_再飞行43 分钟前
K8s 调度管理
linux·云原生·kubernetes
2302_799525741 小时前
【Hadoop】Hadoop集群安装中出现的问题
linux·hadoop
刘一说1 小时前
Linux调试命令速查:Java/微服务必备
java·linux·微服务
枫の准大一1 小时前
【Linux游记】基础指令篇
linux
ypf52081 小时前
OrbStack 配置国内镜像加速
linux
Hello.Reader2 小时前
一文通关 Proto3完整语法与工程实践
java·linux·数据库·proto3
Hello.Reader2 小时前
一文吃透 Protobuf “Editions” 模式从概念、语法到迁移与实战
linux·服务器·网络·protobuf·editions
陌上花开缓缓归以2 小时前
linux ubi文件系统
linux
口嗨农民工2 小时前
exiftool 分析jpeg图片使用
linux
大明者省2 小时前
pycharm解释器使用anaconda建立的虚拟环境里面的python,无需系统里面安装python。
linux·python·pycharm