干了这么多年Linux,经常碰到刚入行的同事问我:“Linux命令那么多,到底该学哪些?”说实话,网上各种“命令大全”一搜一大把,但绝大多数都是把man手册翻译了一遍,看着厚厚一页,真正用到的时候还是抓瞎。我平时工作里最常用的,翻来覆去其实就那么几十条。这篇文章我就从实际运维和日常开发的角度,把这些年真正高频、能救命的命令整理出来,不讲虚的,每条都告诉你它是干什么的、为什么这么用、踩过什么坑,希望能给正在啃命令的你一条捷径。
无论你是刚接触服务器的新手,还是被分配了Linux环境开发任务的程序员,或者是准备面试的运维实习生,这份清单都适用。我尽量做到:常用命令全覆盖,关键参数有解释,坑点有提示。这样你在实操的时候,可以把它当成一份随时查阅的速查手册。
1. 文件与目录操作:每天打交道最多的基础命令
文件和目录操作是Linux的基石,这部分不熟练,后面什么都白搭。网上的命令大全里这部分列了几十条,但真正高频的其实就那么几个,我挨个说。
1.1 删除文件夹的命令到底怎么用才安全
“linux删除文件夹命令”常年霸占热搜榜,原因很简单——rm命令太危险了。我见过不止一次,有人想把当前目录下的临时文件删掉,结果rm -rf /tmp/* /var/tmp/*中间多打了个空格,差点把根目录删了。
先看最基础的用法:
bash复制# 删除空目录
rmdir empty_dir
# 删除文件
rm file.txt
# 递归删除目录及其内容(最常用,也最危险)
rm -r dir_name
# 强制删除,不提示确认
rm -rf dir_name
关于rm -rf,网上有个梗叫“删库跑路”,虽然是玩笑,但真不是危言耸听。我的建议是:在root权限下,能不敲rm -rf就不敲,尤其不要在路径后面用变量。比如你写了个脚本rm -rf $DIR/*,万一$DIR没赋值成功,命令就变成了rm -rf /*,系统直接报废。
我自己有个习惯,删除重要目录前,先执行ls确认路径,再用pwd看下当前位置。另外,但凡是在生产服务器上删东西,我几乎不用rm,而是用一个更安全的方案——先mv到/tmp或者一个专门的trash目录,观察几天确实没用了再真正删。这个习惯帮我避免了很多次“手滑事故”。
注意:
rm -rf对软链接也有效,删除软链接本身不会删除链接指向的真实文件,但如果你在路径末尾加了斜杠(比如rm -rf symlink/),那删的就是目标目录里的内容了,这点特别容易踩坑。
1.2 新建文件和目录的几个常用姿势
创建文件有几种方式,不同场景用不同方法。
bash复制# 创建单个空文件
touch newfile.txt
# 批量创建文件
touch file1.txt file2.txt file3.txt
# 创建多层目录(-p参数最关键,父目录不存在时自动创建)
mkdir -p /data/logs/2024/08
# 同时创建多个目录
mkdir -p /data/{images,videos,docs}
这里mkdir -p中的-p是parents的缩写,这个参数一定要养成习惯带上。如果不加-p,上级目录不存在时直接报错,一次次的错误提示会让你怀疑人生。
touch命令还有个妙用:当你要基于某个现有文件修改时间戳来触发编译或日志切割时,touch -t 202408010000 file.log可以指定精确时间。这个在排查问题时很有用,比如你怀疑某个日志文件被改动过,可以通过时间戳判断。
1.3 文件和目录查看:ls、du、find三板斧
ls大家都会用,但要提醒几个容易被忽略的参数:
bash复制# 显示所有文件(包括隐藏文件)
ls -a
# 显示详细信息,并以人类可读的大小显示
ls -lh
# 按时间排序(最新在前)
ls -lt
# 递归列出所有子目录
ls -R
查看目录大小,用du比ls更直观:
bash复制# 查看当前目录下各子目录大小,-h表示人类可读,-s表示汇总,-d指定深度
du -sh *
du -h --max-depth=1 /data
# 找出当前目录下最大的前5个文件
du -ah . | sort -rh | head -5
这个命令组合是我排查磁盘占用时的经典开场动作。很多时候磁盘告警,一执行du -sh *,立马就能定位到是哪个目录在疯长。
find是文件查找的神器,参数比Windows的搜索强大太多:
bash复制# 按文件名查找(-iname忽略大小写)
find /data -name "*.log"
# 按文件大小查找(大于100MB的文件)
find /data -size +100M
# 按修改时间查找(最近7天内修改过的)
find /data -mtime -7
# 找到并执行操作(比如删除7天前的旧日志)
find /data/logs -name "*.log" -mtime +30 -delete
注意find的-delete参数,和rm一样危险,必须确认筛选条件没问题再执行。我一般在用-delete之前,会先不加这个参数跑一遍,确认输出的文件列表是对的,才真正执行删除。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 用户与权限管理:新建用户到权限控制的完整链路
“linux新建用户”也是高频搜索词。用户权限这块,既是新人容易懵的地方,也是面试爱考的点。这部分命令不多,但每个都牵涉安全,必须讲透。
2.1 新建用户的完整流程与常见坑
新建一个用户,不只是执行一条useradd命令就完了。很多新手建完用户,登录发现没有家目录,或者没有密码,一脸懵。实际上,一套完整的新用户流程是:
bash复制# 创建用户并同时创建家目录,指定默认shell
useradd -m -s /bin/bash username
# 设置或修改密码
passwd username
# 查看用户信息(确认创建成功)
id username
这里-m参数是create home directory,必须带上,否则不会自动生成/home/username目录。-s指定登录shell,如果忘了指定,默认可能是/bin/sh,在有些系统上提示符啥的都比较简陋,体验不好。
还有一个非常容易忽略的点:useradd和adduser的区别。在Debian/Ubuntu系里,adduser是一个交互式脚本,会自动创建家目录、设置密码、创建用户组,更推荐新手使用。而在CentOS/RHEL系里,adduser只是useradd的软链接,啥都不会帮你做。所以你在网上搜命令时,看到这两种写法不统一,不是人家错了,是系统发行版不一样,这个一定要分清楚。
用户建好后,如果要让他有sudo权限:
bash复制# 方法一:直接编辑sudoers文件
visudo
# 在文件中添加:username ALL=(ALL) ALL
# 方法二:加入sudo组(CentOS/RHEL上wheel组,Ubuntu上sudo组)
usermod -aG wheel username
usermod -aG sudo username
