Linux是开发必备的操作系统,无论是服务器部署、代码调试,还是日常文件管理,都离不开常用命令。本文聚焦开发高频场景,筛选最实用的命令,每个命令搭配清晰说明和示例,适合日常查阅、复习。
一、基础操作
核心:掌握「终端切换、目录操作、系统信息查看」,覆盖开发中最基础的终端使用场景,命令简洁,无需复杂参数。
1.1 终端基础与系统信息
1. 切换终端(远程连接常用)
远程连接服务器后,快速切换终端或退出连接,避免误操作。
bash
# 退出当前终端/远程连接(常用,避免直接关闭窗口)
exit
# 切换到root用户(获取最高权限,执行敏感操作时使用)
su root
# 或使用sudo临时获取root权限(推荐,更安全)
sudo 具体命令(如:sudo rm -rf 文件名)
2. 查看系统信息(排查环境问题必备)
快速查看系统版本、CPU、内存、磁盘信息,适配环境部署、问题排查场景。
bash
# 查看Linux系统版本(centos/ubuntu通用)
cat /etc/os-release
# 查看CPU信息(核心数、型号,部署服务时参考)
lscpu
# 查看内存使用情况(重点看used、free,避免内存不足)
free -h # -h:以人类易读的格式显示(如GB、MB)
# 查看磁盘使用情况(查看分区、剩余空间,避免磁盘满)
df -h
# 查看当前系统时间(同步日志、定时任务时使用)
date
1.2 目录操作
开发中频繁切换目录、查看目录内容,命令简洁,牢记即可快速上手。
1. 切换目录(cd)
bash
# 切换到指定目录(绝对路径,从根目录开始)
cd /home/xxx/project # 示例:切换到项目目录
# 切换到当前用户的家目录(常用,快速回到默认目录)
cd ~
# 切换到上一级目录(常用,返回上一层)
cd ..
# 切换到上一次所在的目录(快速回退)
cd -
2. 查看目录内容(ls)
bash
# 查看当前目录下的所有文件/目录(不显示隐藏文件)
ls
# 查看当前目录下的所有文件/目录(包括隐藏文件,常用)
ls -a
# 查看详细信息(权限、大小、修改时间,排查文件问题时使用)
ls -l # 可简写为 ll(大部分Linux系统支持)
# 按文件大小排序查看(从大到小,排查大文件)
ls -lhS # -h:易读格式,S:按大小排序
3. 创建/删除目录(mkdir/rmdir)
bash
# 创建单个目录(如:创建项目目录)
mkdir project
# 递归创建多级目录(常用,避免逐个创建)
mkdir -p /home/xxx/project/src # -p:递归创建父目录
# 删除空目录(仅能删除空目录,实用性较低)
rmdir 目录名
# 强制删除非空目录(常用,谨慎使用,删除后无法恢复)
rm -rf 目录名 # -r:递归删除,-f:强制删除,不提示
二、文件管理(开发核心场景)
开发中频繁操作文件:创建、编辑、查看、复制、移动、删除,这部分是重点,必须熟练掌握,避免误删文件。
2.1 文件创建与编辑
1. 创建文件(touch/vim)
bash
# 创建空文件(常用,快速创建配置文件、日志文件)
touch 文件名(如:touch config.js、touch app.log)
# 使用vim编辑文件(创建并编辑,开发中最常用)
vim 文件名(如:vim index.js)
# vim操作补充(新手必看):
# 1. 进入vim后,按 i 进入编辑模式(可输入内容)
# 2. 编辑完成后,按 Esc 退出编辑模式
# 3. 输入 :wq 保存并退出(w:保存,q:退出)
# 4. 输入 :q! 强制退出(不保存,误操作时使用)
2.2 文件查看(cat/less/more)
查看文件内容,适配不同场景:小文件直接查看,大文件(如日志)分页查看。
bash
# 查看小文件内容(一次性显示所有内容,常用)
cat 文件名(如:cat config.js)
# 查看大文件内容(分页查看,支持上下滚动,常用)
less 文件名(如:less app.log)
# less操作补充:
# 1. 上下箭头:滚动查看内容
# 2. /关键词:搜索文件中的关键词(如:/error 搜索错误日志)
# 3. q:退出查看
# 分页查看文件(逐页显示,按空格翻页)
more 文件名
2.3 文件复制与移动(cp/mv)
bash
# 复制文件(常用,备份配置文件、复制代码文件)
cp 源文件路径 目标路径(如:cp config.js /home/xxx/backup)
# 复制目录(递归复制,备份项目目录时使用)
cp -r 源目录路径 目标路径(如:cp -r project /home/xxx/backup)
# 移动文件/目录(相当于"剪切",常用)
mv 源路径 目标路径(如:mv index.js src/、mv project /home/xxx/newdir)
# 重命名文件/目录(本质是移动操作,常用)
mv 旧文件名 新文件名(如:mv app.log app_old.log)
2.4 文件删除(rm)
谨慎使用,删除后无法恢复,尤其是root用户下的删除操作。
bash
# 删除单个文件(常用,删除无用文件)
rm 文件名(如:rm temp.txt)
# 强制删除文件(不提示,避免删除时反复确认)
rm -f 文件名(如:rm -f temp.txt)
# 强制删除目录及目录下所有内容(谨慎使用!)
rm -rf 目录名(如:rm -rf tempdir)
2.5 搜索文件/内容(find/grep)
开发中频繁搜索文件位置、搜索文件中的关键词(如日志中的错误信息)。
bash
# 搜索文件(按文件名搜索,常用)
find 搜索路径 -name "文件名"(如:find /home -name "config.js")
# 模糊搜索(如:搜索所有.js后缀的文件)
find /home -name "*.js"
# 搜索文件中的关键词(常用,排查日志、配置文件)
grep "关键词" 文件名(如:grep "error" app.log)
# 忽略大小写搜索
grep -i "关键词" 文件名(如:grep -i "error" app.log)
# 显示关键词所在的行号(便于定位)
grep -n "关键词" 文件名(如:grep -n "error" app.log)
# 递归搜索目录下所有文件中的关键词(如:搜索项目中所有包含"user"的文件)
grep -r "关键词" 目录名(如:grep -r "user" project/)
三、进程管理(部署服务必备)
开发中部署服务(如Java、Node.js服务)后,需查看进程、杀死进程、查看端口占用,避免服务冲突。
3.1 查看进程(ps/top)
bash
# 查看当前所有进程(详细信息,常用)
ps -ef
# 查看指定进程(按进程名搜索,如:查看node进程)
ps -ef | grep "node" # | 管道符,将前一个命令的输出作为后一个命令的输入
# 实时查看进程占用(CPU、内存占用,排查服务卡顿)
top # 实时刷新,按q退出
# top操作补充:按P(大写)按CPU占用排序,按M按内存占用排序
3.2 杀死进程(kill)
服务异常、端口占用时,需杀死对应进程,重新启动服务。
bash
# 先查看进程ID(PID),再杀死进程(常用,精准杀死)
ps -ef | grep "node" # 找到进程的PID(第二列)
kill 进程ID(如:kill 12345)
# 强制杀死进程(进程无法正常退出时使用,谨慎)
kill -9 进程ID(如:kill -9 12345)
# 批量杀死指定进程(如:杀死所有node进程)
ps -ef | grep "node" | grep -v grep | awk '{print $2}' | xargs kill -9
3.3 查看端口占用(netstat/ss)
部署服务时,常遇到端口被占用的问题,需查看端口占用进程并杀死。
bash
# 查看所有端口占用情况(常用)
netstat -tulnp # -t:TCP,-u:UDP,-l:监听中,-n:显示端口号,-p:显示进程名
# 查看指定端口占用情况(如:查看8080端口是否被占用)
netstat -tulnp | grep 8080
# 简化查看指定端口占用(部分系统支持,更简洁)
ss -tulnp | grep 8080
四、权限控制
Linux文件/目录有严格的权限控制,开发中需设置文件权限(如可执行、可读可写),避免权限不足导致服务无法启动。
bash
# 查看文件/目录权限(常用,了解当前权限)
ls -l 文件名/目录名(如:ls -l config.js)
# 权限说明(如:rwxr-xr--):
# 第一个rwx:文件所有者权限(r:读,w:写,x:执行)
# 第二个r-x:同组用户权限
# 第三个r--:其他用户权限
# 修改文件/目录权限(常用,chmod + 权限组合)
chmod 755 文件名(如:chmod 755 app.sh) # 所有者可读可写可执行,其他用户可读可执行
chmod 644 文件名(如:chmod 644 config.js)# 所有者可读可写,其他用户只读
# 简化修改权限(常用)
chmod +x 文件名(如:chmod +x app.sh) # 给文件添加可执行权限(部署脚本时常用)
chmod -x 文件名(如:chmod -x app.sh) # 取消文件可执行权限
chmod +w 文件名(如:chmod +w config.js)# 给文件添加写权限
# 修改文件/目录所有者(常用,解决权限不足问题)
chown 用户名:用户组 文件名/目录名(如:chown root:root project/)
五、远程操作
开发中常远程连接服务器,上传/下载文件、远程执行命令,核心掌握SSH连接、SCP上传下载。
5.1 远程连接服务器(SSH)
bash
# 远程连接服务器(常用,默认端口22)
ssh 用户名@服务器IP(如:ssh root@192.168.1.100)
# 连接指定端口的服务器(端口非22时使用)
ssh -p 端口号 用户名@服务器IP(如:ssh -p 2222 root@192.168.1.100)
# 免密登录(可选,提升效率,避免每次输入密码)
# 1. 本地生成密钥对(仅首次执行)
ssh-keygen -t rsa # 一路回车,生成密钥对(默认在 ~/.ssh 目录下)
# 2. 将公钥上传到服务器
ssh-copy-id 用户名@服务器IP(如:ssh-copy-id root@192.168.1.100)
# 后续连接无需输入密码
5.2 上传/下载文件(SCP)
本地与服务器之间传输文件(如:上传项目代码、下载日志文件)。
bash
# 本地文件上传到服务器(常用)
scp 本地文件路径 用户名@服务器IP:服务器目标路径(如:scp project.zip root@192.168.1.100:/home/xxx/)
# 本地目录上传到服务器(递归上传)
scp -r 本地目录路径 用户名@服务器IP:服务器目标路径(如:scp -r project root@192.168.1.100:/home/xxx/)
# 服务器文件下载到本地(常用)
scp 用户名@服务器IP:服务器文件路径 本地目标路径(如:scp root@192.168.1.100:/home/xxx/app.log ~/backup/)
# 服务器目录下载到本地(递归下载)
scp -r 用户名@服务器IP:服务器目录路径 本地目标路径(如:scp -r root@192.168.1.100:/home/xxx/project ~/backup/)
六、进阶技巧(提升开发效率)
这些技巧能节省日常操作时间,避免重复输入,适合熟练基础命令后使用。
bash
# 1. 命令历史(查看之前执行过的命令,避免重复输入)
history # 查看所有历史命令
!命令序号 # 执行历史中的指定命令(如:!100 执行第100条命令)
!关键词 # 执行最近一次包含该关键词的命令(如:!ssh 执行最近一次ssh命令)
# 2. 命令别名(给常用命令设置别名,简化输入)
alias ll='ls -l' # 给ls -l设置别名ll,后续输入ll即可执行ls -l
alias rm='rm -i' # 给rm设置别名,删除时提示(避免误删)
# 注意:临时别名仅当前终端有效,永久生效需编辑 ~/.bashrc 文件,添加别名后执行 source ~/.bashrc
# 3. 管道符(|):将前一个命令的输出作为后一个命令的输入(常用)
ps -ef | grep "node" # 查看node进程
ls -l | grep ".js" # 查看当前目录下所有.js文件
# 4. 重定向(> / >>):将命令输出写入文件
echo "test" > test.txt # 覆盖写入文件(原有内容会被删除)
echo "test2" >> test.txt # 追加写入文件(原有内容保留)
cat app.log > app_bak.log # 将日志文件备份
七、常见问题与避坑指南
问题1:权限不足(Permission denied)
解决:使用sudo获取root权限(如:sudo rm -rf 文件名),或修改文件/目录权限(chmod/chown)。
问题2:端口被占用,服务启动失败
解决:先查看端口占用进程(netstat -tulnp | grep 端口号),再杀死对应进程(kill -9 进程ID),重新启动服务。
问题3:误删文件/目录,如何恢复?
解决:Linux默认没有回收站,删除后无法直接恢复,需借助第三方工具(如extundelete),但成功率有限。建议删除前备份,或使用rm -i 命令(删除时提示)。
问题4:远程连接失败(Connection refused)
解决:检查服务器IP是否正确、端口是否开放(如22端口)、服务器是否正常运行,或重新配置SSH服务。
避坑重点
-
root用户下慎用rm -rf 命令,尤其是 rm -rf /(会删除系统所有文件,导致系统崩溃);
-
修改文件/目录权限时,避免设置过高权限(如777,所有用户均可读写执行,存在安全风险);
-
远程上传/下载文件时,注意路径是否正确,避免上传到错误目录;
-
执行批量操作(如批量杀死进程)时,先确认命令无误,避免误杀重要进程。
八、总结
开发日常使用Linux,核心掌握「基础操作+文件管理+进程管理+远程操作」,80%的场景都能覆盖。本文所有命令均为实操高频款,可直接复制使用,无需记忆复杂参数,重点是理解场景、规范操作,避免误操作导致的损失。