DevToolBox免费
博客

Linux命令指南:开发者必备命令行参考

14 分钟阅读作者 DevToolBox

Linux 命令指南 — 开发者必备命令行参考手册

全面的 Linux 命令行工具参考手册,涵盖文件系统导航、文本处理、进程管理、网络命令、权限管理、SSH 远程连接和 Shell 效率技巧,附带真实示例。

TL;DR 速览

本指南涵盖开发者每天都会用到的核心 Linux 命令——从文件系统导航、文件管理,到文本处理、进程管理、权限配置和 SSH 远程访问。每个命令都附有实用标志和真实示例,聚焦开发者工作流场景。

核心要点

  • findgrep 是最通用的搜索工具,尽早掌握它们的标志参数
  • 管道(|)可以串联命令,构建强大的单行命令
  • chmodchown 控制访问权限,理解八进制和符号模式的区别
  • ps auxtopkill 是进程管理三件套
  • SSH 密钥认证 + ~/.ssh/config 让远程工作更流畅
  • alias 和 Shell 函数能节省大量重复输入
  • 大文件或增量传输时,rsync 优于 scp
  • 执行破坏性命令前,始终用 --dry-runecho 预演

简介

Linux 命令行是开发者工具箱中最强大的工具之一。无论是将应用部署到生产服务器、自动化构建流水线、调试问题,还是高效管理文件,掌握终端命令是区分高效开发者与普通开发者的关键。

本指南作为全面参考手册,涵盖日常使用的核心命令。每个命令都展示了实用标志和真实示例,不仅展示语法,更解释何时为何使用该命令,重点关注开发者工作流。

1. 文件系统导航

高效在 Linux 文件系统中移动是所有操作的基础。这些命令帮助你定位自己的位置并找到文件。

ls — 列出目录内容

ls 是使用最频繁的命令,列出当前或指定路径下的文件和目录。

# 基本列表 ls # 长格式(含权限、所有者、大小、日期) ls -l # 包含隐藏文件(点文件) ls -la # 人性化文件大小 ls -lh # 按修改时间排序(最新在前) ls -lt # 逆序(最旧在前) ls -ltr # 列出指定目录 ls -la /var/log

cd, pwd, find, locate

# 切换到主目录 cd ~ # 返回上一个目录 cd - # 打印当前目录 pwd # 按名称查找文件 find /home -name "config.json" # 按扩展名查找 find . -name "*.log" # 查找最近7天修改的文件 find . -mtime -7 # 快速全局查找(使用索引) locate nginx.conf sudo updatedb # 更新索引

2. 文件操作

cp, mv, rm, mkdir, touch, ln

# 复制文件 cp source.txt dest.txt cp -r mydir/ /backup/ # 递归复制目录 cp -p file.txt /backup/ # 保留时间戳和权限 # 移动/重命名 mv oldname.txt newname.txt mv file.txt /tmp/ # 删除(谨慎使用!) rm file.txt rm -rf mydir/ # 强制递归删除 rm -i file.txt # 交互确认 # 创建目录 mkdir myproject mkdir -p /var/log/myapp/2024 # 含父目录 # 创建空文件 touch newfile.txt # 创建符号链接 ln -s /path/to/original symlink ln original.txt hardlink.txt # 硬链接

3. 文本处理

Linux 文本处理工具极其强大,通过管道组合使用可构成完整的数据转换流水线。

cat, grep, sed, awk

# cat: 显示文件内容 cat file.txt cat -n file.txt # 显示行号 # grep: 搜索文本模式 grep "error" logfile.txt grep -i "Error" logfile.txt # 不区分大小写 grep -r "TODO" ./src/ # 递归搜索 grep -n "function" app.js # 显示行号 grep -v "debug" logfile.txt # 反向匹配 grep -E "error|warning" app.log # 扩展正则 # sed: 流编辑器 sed 's/old/new/g' file.txt # 替换所有 sed -i 's/localhost/prod.db/g' .env # 原地修改 sed '/^#/d' config.txt # 删除注释行 sed -n '10,20p' file.txt # 打印指定行 # awk: 模式处理 awk -F',' '{print $2}' data.csv # 打印第2列 awk '$3 > 100' data.txt # 过滤行 awk '{sum += $3} END {print sum}' data.txt # 求和 awk -F: '{print $1, $7}' /etc/passwd # 处理passwd

cut, sort, uniq, wc

# cut: 提取字段 cut -d',' -f1,3 data.csv # 提取第1和第3字段 cut -c1-10 file.txt # 前10个字符 # sort: 排序 sort file.txt # 字母序 sort -n numbers.txt # 数字序 sort -rh sizes.txt # 逆序人性化大小 sort -u file.txt # 去重排序 # uniq: 过滤重复行(需先排序) sort file.txt | uniq # 去重 sort file.txt | uniq -c # 统计出现次数 sort file.txt | uniq -d # 仅显示重复行 # wc: 计数 wc -l file.txt # 行数 wc -w file.txt # 单词数 wc -c file.txt # 字节数

4. 进程管理

ps, top, kill, nohup

# 查看所有进程 ps aux # 按CPU使用率排序 ps aux --sort=-%cpu | head -10 # 实时监控(交互式) top htop # 增强版,更友好 # 按名称杀进程 pkill nginx killall node pkill -9 python # 强制杀 # 按PID杀进程 kill PID kill -9 PID # 强制杀(SIGKILL) # 后台运行并免疫挂断信号 nohup ./server.sh & nohup python app.py > app.log 2>&1 & # 作业控制 Ctrl+Z # 暂停当前进程 bg %1 # 恢复到后台 fg %1 # 恢复到前台 jobs # 列出后台作业

5. 权限与所有权

chmod, chown, chgrp

# chmod: 修改权限(八进制) chmod 755 script.sh # rwxr-xr-x chmod 644 config.txt # rw-r--r-- chmod 600 ~/.ssh/id_rsa # rw------- (私钥) chmod -R 755 /var/www/html # 递归设置 # chmod: 符号模式 chmod +x script.sh # 添加执行权限 chmod u+x,g-w file.txt # 用户+x,组-w chmod a+r file.txt # 所有人+读 # chown: 修改所有者 chown newuser file.txt chown newuser:newgroup file.txt chown -R www-data:www-data /var/www/html # chgrp: 修改所属组 chgrp www-data /var/www/html
八进制符号表示含义常用场景
755rwxr-xr-x所有者全权,其他人读+执行目录、可执行脚本
644rw-r--r--所有者读写,其他只读配置文件、Web资源
600rw-------仅所有者读写SSH私钥、密钥文件
400r--------仅所有者只读证书文件

6. 网络命令

curl, wget, ping, ss, ip

# curl: 数据传输 curl https://api.example.com/users # GET请求 curl -X POST https://api.example.com -H "Content-Type: application/json" -d '{"name":"Alice"}' # POST JSON curl -H "Authorization: Bearer TOKEN" url # 带认证 curl -O https://example.com/file.tar.gz # 下载文件 curl -L https://example.com # 跟随重定向 curl -v https://example.com # 详细调试 # wget: 文件下载 wget https://example.com/file.tar.gz wget -c https://example.com/file.iso # 断点续传 wget -b https://example.com/file.iso # 后台下载 # ping: 测试连通性 ping google.com ping -c 4 8.8.8.8 # ss: 查看网络连接(netstat现代替代品) ss -tuln # 监听中的TCP/UDP端口 ss -tp # 显示进程名 ss -tnp state established # 已建立的连接 # ip: 网络接口管理 ip addr show # 显示所有接口 ip route show # 路由表 ip link set eth0 up # 启用接口

7. 磁盘与内存

# df: 文件系统使用情况 df -h # 人性化格式 df -Th # 含文件系统类型 # du: 目录/文件磁盘用量 du -sh . # 当前目录总大小 du -sh /var/log # 指定目录大小 du -sh * | sort -h # 当前目录各项大小并排序 du -h --max-depth=1 /home # 深度1 # free: 内存使用 free -h # 人性化格式 watch -n 1 free -h # 实时监控 # lsblk: 块设备列表 lsblk lsblk -f # 含文件系统类型和挂载点

8. 包管理

# apt (Debian/Ubuntu) sudo apt update # 更新包列表 sudo apt upgrade # 升级所有包 sudo apt install nginx # 安装 sudo apt remove nginx # 卸载 sudo apt purge nginx # 卸载含配置文件 apt search keyword # 搜索 # yum/dnf (RHEL/CentOS/Fedora) sudo yum update sudo yum install httpd sudo dnf install nginx # dnf为yum现代替代 # brew (macOS) brew update brew install node brew upgrade node brew uninstall node brew list

9. SSH 与远程访问

# 基本连接 ssh user@hostname ssh -p 2222 user@host # 指定端口 ssh -i ~/.ssh/id_rsa user@host # 使用密钥 # 远程执行命令 ssh user@host "ls -la /var/www" # SSH隧道(本地端口转发) ssh -L 8080:localhost:80 user@host # ~/.ssh/config 示例 Host myserver HostName 192.168.1.100 User deploy Port 2222 IdentityFile ~/.ssh/deploy_key # 配置后直接使用:ssh myserver # scp: 安全复制 scp file.txt user@host:/remote/path/ scp user@host:/remote/file.txt ./ scp -r ./mydir user@host:/home/user/ # rsync: 增量同步(推荐用于大文件) rsync -avz ./src/ user@host:/var/www/app/ rsync -avz --delete ./src/ user@host:/var/www/ # 删除目标多余文件 rsync -avzn ./src/ user@host:/var/www/ # 演练模式 rsync -avz --exclude='node_modules' ./src/ user@host:/app/

10. Shell 效率技巧

# alias: 命令快捷方式 alias ll='ls -la' alias gs='git status' alias ..='cd ..' # 永久添加到 ~/.bashrc 或 ~/.zshrc echo "alias ll='ls -la'" >> ~/.bashrc source ~/.bashrc # history: 命令历史 history history 20 # 最近20条 Ctrl+R # 交互搜索历史 !! # 重新执行上条命令 !42 # 执行历史编号42的命令 # 管道与重定向 ls -la | grep ".txt" # 管道 command > output.txt # 重定向(覆盖) command >> output.txt # 追加 command 2> errors.log # 重定向stderr command > out.log 2>&1 # stdout+stderr都重定向 command | tee output.txt # 输出到文件同时继续传递 # xargs: 批量执行 find . -name "*.log" | xargs rm -f cat urls.txt | xargs curl -O find . -name "*.txt" -print0 | xargs -0 wc -l # 处理含空格的文件名 # 实用单行命令 grep -rn "TODO" ./src --include="*.ts" # 查找所有TODO tail -f /var/log/nginx/access.log # 实时查看日志 lsof -i :3000 # 查看3000端口使用 pkill -f node # 杀死所有node进程 history | awk '{print $2}' | sort | uniq -c | sort -rn | head -10 # 最常用命令

常见问题解答

如何在 Linux 中按文件名查找文件?

使用 find 命令:find /path -name "filename.txt"。不区分大小写搜索用 -iname。搜索当前目录:find . -name "*.log"locate 命令使用预建索引,全局搜索更快,使用前需运行 sudo updatedb

cp 和 mv 有什么区别?

cp 复制文件,原文件保留不变。mv 移动或重命名文件,原位置的文件被移走。复制目录用 cp -r;只需重命名而不需要保留副本时用 mv

如何查看 Linux 磁盘使用情况?

df -h 查看文件系统级别的磁盘占用。用 du -sh /path 查看特定目录大小,du -sh * | sort -h 列出当前目录各项大小并排序。

如何按名称杀死进程?

使用 pkill 进程名killall 进程名。先找 PID:pgrep 进程名ps aux | grep 进程名,再 kill PID。强制杀:kill -9 PIDpkill -9 进程名

chmod 755 是什么意思?

设置权限:所有者可读/写/执行(7=4+2+1),组可读/执行(5=4+0+1),其他人可读/执行。这是目录和可执行脚本的标准权限。使用 chmod +x 文件名 可快速添加执行权限。

如何在文件中搜索文本?

使用 grep "模式" 文件名。递归搜索目录:grep -r "模式" /路径。加 -n 显示行号,-i 不区分大小写,-l 只列出匹配文件名,-E 使用扩展正则表达式。

如何使用 SSH 连接远程服务器?

使用 ssh 用户名@主机名。指定端口加 -p。密钥认证:ssh -i ~/.ssh/id_rsa user@host。创建 ~/.ssh/config 配置主机别名,避免每次重复输入参数。

如何使用管道和重定向?

管道(|)将前一命令的输出传给下一命令。用 > 重定向到文件(覆盖),>> 追加。用 2> 重定向错误输出,> file 2>&1 同时重定向 stdout 和 stderr。用 tee 同时写入文件并继续传递管道。

𝕏 Twitterin LinkedIn
这篇文章有帮助吗?

保持更新

获取每周开发技巧和新工具通知。

无垃圾邮件,随时退订。

试试这些相关工具

%20URL Encoder/Decoder#Hash GeneratorB→Base64 Encoder

相关文章

Vim指南:开发者完整Vim/Neovim教程

掌握Vim和Neovim。涵盖模式、导航、编辑、文本对象、宏、寄存器、分屏、标签、.vimrc配置、init.lua和telescope/coc.nvim等顶级插件的完整教程。

SSH密钥生成器:生成和管理SSH密钥 — 完整指南

掌握SSH密钥生成和管理。含ssh-keygen、Ed25519/RSA对比、SSH配置、node-forge、Python paramiko、Git SSH设置、隧道、证书式SSH和安全最佳实践完整指南。

Docker命令:从基础到生产的完整指南

掌握Docker的完整命令指南。含docker run/build/push、Dockerfile、多阶段构建、卷、网络、Docker Compose、安全、注册表和生产部署模式。