很多人学Linux,不是输在理解,而是输在一开始就想背几百个命令。Linux命令确实多,日常上手其实不需要全部记住。我建议先掌握15个左右的核心命令:pwd、ls、cd、mkdir、touch、cat、cp、mv、rm、grep、find、tar、ps、kill、chmod。这15个命令能覆盖大部分文件管理、文本查找、进程控制和权限处理场景。接下来我会按一条完整可复现的操作线走一遍:先理解命令行运行逻辑,再处理文件,接着做搜索与打包,然后看进程,最后用管道和重定向把这些命令串起来。适合刚接触Linux、准备面试或者需要在服务器上做日常维护的人。按照这个顺序练一遍,会比到处抄命令笔记有效得多。
1. 先搞清楚命令行的运行逻辑,再记命令
1.1 命令的通用结构
命令行并不是靠死记硬背堆出来的。核心结构很简单:命令 [选项] [参数]。命令决定做什么,选项调整怎么做,参数告诉系统对谁做。比如ls -l /etc,ls是想列出目录内容,-l是用长格式显示更多信息,/etc是对应的目录。
shell会先解析你输入的这一行:把第一个单词当作命令,后面的-l和/etc交给命令去处理。理解这一层,你遇到command not found就不会慌。先看命令名是不是拼错了,再看路径是不是写对了,最后确认这个命令有没有安装。
同一个命令在不同发行版里细节可能不同,但核心参数大多通用。不确定的时候,先跑ls --help或man ls,不要一上来就硬背。命令帮助信息通常很长,你只需要挑自己关心的部分看。
下面这张表是15个基础命令的“坐标”,先不用背,后面每类都会展开:
| 命令 | 作用 | 典型场景 |
|---|---|---|
| pwd | 显示当前目录 | 登录后确认自己在哪个路径 |
| ls | 列出目录内容 | 查看当前目录有哪些文件和子目录 |
| cd | 切换目录 | 进入项目目录 |
| mkdir | 创建目录 | 新建项目目录或日志目录 |
| touch | 创建空文件或更新时间戳 | 快速生成配置文件占位 |
| cat | 查看文件内容 | 读取小文件 |
| cp | 复制文件或目录 | 备份配置 |
| mv | 移动或重命名 | 调整文件位置 |
| rm | 删除文件或目录 | 清理临时文件 |
| grep | 文本搜索过滤 | 从日志里找错误信息 |
| find | 查找文件 | 根据文件名或大小定位 |
| tar | 归档压缩和解包 | 备份目录或发布软件包 |
| ps | 查看进程快照 | 确认服务是否在运行 |
| kill | 结束进程 | 停止异常服务 |
| chmod | 修改权限 | 给脚本添加可执行权限 |
1.2 用 pwd 和 ls 确认自己在哪、看到什么
我登录服务器后的第一个动作,通常不是看命令列表,而是先执行pwd。pwd的全称是print working directory,显示当前所在目录。为什么先做这一步?因为很多操作都与路径有关,你如果不知道自己当前落在哪里,后续的cd、cp、rm都可能作用到错误位置。
ls是list的缩写,列出目录内容。基础用法是直接ls,但实际我更常用ls -lah。这几个选项分别表示:-l长格式,-a显示包括以点开头的隐藏文件,-h让文件大小以K、M、G这样的单位显示。
执行后输出类似:
drwxr-xr-x 2 user user 4.0K Apr 6 10:30 project -rw-r--r-- 1 user user 220 Apr 6 10:31 config.txt第一列第一位d表示目录,-表示文件;后面9个字符是权限,这个在权限章节细说。如果你看到Permission denied,别急着改权限,先看当前用户是不是文件属主。
这一节只需要记住两个动作:pwd看自己在哪,ls看周围有什么。命令行的“位置感”是从这两个命令开始的。
2. 文件管理是一整条操作链,别只记单个命令
2.1 cd 和 mkdir:先从一个干净的目录开始
cd是切换目录。进入目录用cd /path,回到用户主目录用cd ~或直接cd,回到上一次目录用cd -。新手容易在绝对路径和相对路径上绕。绝对路径以/开头,比如/home/user/project;相对路径从当前目录出发,比如../project。
mkdir是创建目录。单层目录直接mkdir demo;创建多级目录用mkdir -p a/b/c。-p很实用,父目录不存在时会一并创建,不会报错。
实际操作时可以连起来:
mkdir -p ~/demo/logs cd ~/demo/logs pwd先确认最终落点,再继续操作。我一般建完目录后会立刻执行pwd确认路径,避免后续相对路径出错。如果你发现mkdir创建目录后,想进入时提示No such file or directory,大概率是路径名打错了,或者当前所在目录和你预期不一样。先pwd,再ls,不要反复重试同一条命令。
2.2 touch 和 cat:创建文件、查看内容的最小组合
touch最常见的用途是创建一个空文件:touch README.md。它还有另一个作用:更新文件时间戳。如果你只想让某个文件时间变成现在,也可以用touch。文件存在时,touch不会清空内容,这一点要记住。
cat用于查看文件内容,适合小文件。cat /etc/hostname能直接输出内容。也可以一次看多个文件:cat a.txt b.txt会把内容按顺序拼在一起。
创建并查看的完整动作:
touch server.conf ls -l server.conf cat server.conf因为文件是空的,cat输出为空,这是正常现象。不要理解为命令没生效。对于大文件,cat会把内容全部刷到屏幕上,非常不友好。大文件更推荐less、head、tail,这些不属于基础15个,但等你有需求时一定要补上。现在的重点是用touch建文件、cat看内容,先形成最小闭环。
2.3 cp、mv、rm:复制、移动、删除的安全操作顺序
cp是复制,mv是移动或重命名,rm是删除。这三个命令的错误代价依次递增,尤其rm。
复制文件:cp source.txt target.txt。复制目录必须加-r:cp -r source_dir target_dir,因为目录里有子文件和子目录,需要递归复制。
mv既可以移动路径,也可以改文件名:mv server.conf config/server.conf,或者mv server.conf server_backup.conf。mv操作目录时不需要加-r,因为它只改路径记录,不涉及内容复制。
rm删除文件是永久的,不进回收站。删除目录要加-r,比如rm -r temp_dir;如果你确定这个目录不重要,可以rm -rf temp_dir,但-f会忽略不存在的文件和很多确认提示,风险很大。
我的习惯是删除前先ls确认:
ls -lh temp_dir rm -r temp_dir尤其是带变量、带通配符的命令,先echo展开看一眼,再执行真正的删除。很多事故不是rm命令不会,而是删错了对象。
3. 搜索和打包:从能操作文件到能处理大量文件
3.1 grep:从文本里快速挑出关键信息
grep是按文本内容做匹配的命令,也是排查日志时出场率最高的命令。基本用法:grep 模式 文件。模式建议加引号,避免空格和特殊字符被shell理解成别的东西。
常用选项有:-i忽略大小写,-n显示行号,-r递归查找目录,-c只统计匹配行数。比如:
grep -n "error" app.log grep -ri "root" /etc/nginx/第一条会显示app.log里包含error的行和行号;第二条会直接在nginx配置目录里递归查找root关键词,忽略大小写。
如果输出为空,先不要怀疑命令没跑。grep默认没有匹配到就不输出任何内容,这时可以先用-i或去掉模式中的特殊符号再试。再不行,看文件路径和权限。grep也经常配合管道使用,比如从进程列表里筛出中意的进程,这个放到第6章展开。
3.2 find:按名字、类型和大小定位文件
find是按条件查找文件的命令。基本结构:find 起始路径 条件。最常见的条件是按名字:
find . -name "*.conf"表示当前目录往下找所有.conf文件。注意这里*.conf匹配的是文件名,不是正则表达式。
-type可以指定类型:-type f表示文件,-type d表示目录。组合起来:
find /var/log -type f -name "*.log" 2>/dev/null末尾的2>/dev/null是把错误信息丢弃。很多系统目录当前用户无权访问,find会把Permission denied刷满屏,这个写法能让输出干净很多。
查找可能会比较慢,尤其是从根目录/开始找。我一般会先缩小范围:先查当前目录,再查/var/log或/etc这类可能的目录,不要一上来就全盘扫。如果只要找大文件,可以加-size条件,比如find / -size +1G,但这样的命令需要足够权限和耐心。
3.3 tar:打包压缩和解包的标准姿势
tar是归档命令,常和gzip组合成.tar.gz包。打包命令一般写:
tar -czvf backup.tar.gz ~/project-c创建归档,-z用gzip压缩