带过不少从零开始学 Linux 的新人,发现大家最开始需要的不是一堆复杂的配置,而是心里先有一张地图。今天这篇就拿 Linux 基础指令里最常用的 6 条作为起点,把文件、目录、路径这几件事彻底讲透,让你打开终端不再发慌。适合刚接触 Linux、第一次登录服务器、或者准备系统学习运维和开发的同学,也适合教别人入门的读者拿来当参考提纲。
这 6 条指令分别是:pwd、ls、cd、mkdir、touch、rm。它们单独看都特别简单,但组合起来就是一套完整的最小操作系统。理解了它们的逻辑,后面学权限、学管道、学文本处理都会顺很多。
1. 思路拆解:为什么入门必须先学这 6 条
1.1 终端操作的底层逻辑是"位置 + 内容 + 动作"
Linux 命令行的操作方式,和你在图形界面里点鼠标完全不一样。图形界面里你不需要关心"我在哪个文件夹",因为界面会直接告诉你当前在哪,双击就能进去。但在终端里,你所有的操作都是围绕一个"当前工作目录"展开的,你敲的每条指令,系统都要先判断:这个操作发生在哪里。
所以我把入门指令拆成三组来看:
- 位置组:
pwd负责回答"我在哪",cd负责回答"我要去哪"。 - 查看组:
ls负责回答"这里有什么"。 - 动作组:
mkdir负责"创建目录",touch负责"创建文件",rm负责"删除东西"。
这 6 条指令其实组成了一个人最基本的操作闭环:我到了一个地方,看看周围有什么,创建我需要的文件或目录,不需要了就删掉,然后去下一个地方。这个闭环熟练之后,你就能在 Linux 上完成很多日常管理工作了。
1.2 为什么先学这 6 条而不是先学 vim 或者配置网络
很多新手容易犯一个错误:一上来就学 vim、学防火墙、学各种服务配置。结果发现根本不知道自己在什么目录下、文件放哪里了、改完配置文件找不到了。所以我特别强调:先掌握这 6 条基础指令,再往深走,你会觉得一切都顺理成章。
有一个很直观的类比:这 6 条指令就像是你在 Linux 世界里的"腿"和"手"。pwd 是地图坐标,cd 是两条腿,ls 是眼睛,mkdir 和 touch 是手,rm 是清理工具。一个人还没学会走路,直接去学跑步,摔跤是必然的。
1.3 它们背后牵出一个关键概念:路径
学这 6 条指令的同时,你实际上在潜移默化地理解 Linux 的目录结构。Linux 所有东西都从根目录/开始,往下是一层一层的子目录。/home/用户名是普通用户的家目录,/etc放配置文件,/var放日志和变化的数据,/tmp放临时文件。
你会接触到两种路径写法:
- 绝对路径:从
/开始写,比如/home/ubuntu/project。 - 相对路径:从当前位置开始写,比如
project表示当前目录下的 project 子目录。
这 6 条指令练熟之后,这两种路径切换就会变成肌肉记忆,不需要再在脑子里反复换算。
2. 动手之前:准备好练习环境
2.1 本地虚拟机、云服务器、还是浏览器在线环境
练习 Linux 基础指令,最推荐的方式是本地虚拟机,因为你可以随便折腾,玩坏了快照恢复就行。云服务器也可以,但早期容易不小心把环境搞坏,所以操作时多一些谨慎。还有一种是浏览器里的在线终端,比如各类在线 Linux 练习环境,适合回家路上用手机也能敲两句。
我个人的建议是:理论上任何一种都可以,但本地虚拟机是容错率最高的选择。因为rm这个指令一旦用错,后果很直接,在虚拟机里你还能恢复,在线上环境就得靠备份了。
2.2 如何确认你已经进入终端并处于正确的登录身份
打开终端之后,先看一眼命令行提示符。不同发行版风格不同,但核心信息类似:
user@hostname:~$这一行的意思是:当前登录用户是 user,主机名是 hostname,当前工作目录是~(波浪号,代表家目录),最后的$表示普通用户权限。如果你看到的是#,那说明你当前是 root 用户,操作时必须格外小心,因为 root 用户不受权限限制,误删系统文件也不会被拦。
我见过很多新手一开始就用 root 练手,结果误删了目录还一脸懵。这里给一个实操心得:练习入门阶段,尽量用普通用户,等学到权限管理那部分,再专门开 root 环境做实验。
进入终端之后,先不要急着敲别的,先敲第一条指令:pwd。看看系统告诉你当前位置在哪,通常你会看到一个类似/home/用户名的路径。这一步就是第一篇内容的状态确认。
3. 6 大基础指令逐个拆解
3.1 pwd:确认当前位置
pwd是 print working directory 的缩写,作用只有一个:打印当前工作目录的绝对路径。
pwd /home/user理解这条指令,是建立终端方向感的第一步。很多在线环境上教学时,一些同学会面临这样的尴尬:跟着教程敲了半天的命令,结果文件都不知道创建到哪了,回头想找的时候,目录已经绕晕了。随手pwd一下,就能定位自己。
这里有一个贴士:刚进入终端、准备开始干活之前,先pwd确认一下,尤其是当你通过某些工具远程登录到服务器时,初始位置不一定是你以为的那个目录。我发现很多人一登录就直接ls,然后发现文件列表和自己预期的不一样,其实就是因为初始目录不对。
3.2 ls:看清目录里有什么
ls是 list 的缩写,用来列出目录内容。它大概是所有 Linux 指令里最早学会的一个,几乎每个教程都会用到。最简单的用法是直接敲:
ls得到当前目录下的文件和文件夹列表。但默认效果很朴素,不带任何颜色,也不区分文件还是目录。所以实际使用中,更多人会配合参数:
ls -l ls -a ls -lah-l是 long 格式,会显示文件的权限、属主、大小、修改时间等详细信息。-a是 all,把隐藏文件也显示出来(Linux 里以.开头的文件默认不显示)。-h是 human-readable,让文件大小显示成 K、M、G 这种便于阅读的形式。
把ls -lah组合在一起,就能看到完整而清晰的文件列表,这是我日常使用频率最高的一个组合键。
有人会问:什么是隐藏文件?其实 Linux 的隐藏文件不是安全意义上的"隐藏",只是默认不列出来而已。很多软件的配置都放在家目录下的隐藏文件里,比如.bashrc、.ssh等,文件名开头加一个点即可隐藏。
ls还可以指定目录,比如:
ls /etc ls /var/log/这也是一个很常见的用法:人不在那个目录里,但想直接查看那个目录的内容。它配合cd使用,可以让你快速浏览多个目录的内容而不用来回切换。
3.3 cd:切换工作目录
cd是 change directory 的缩写,改变当前工作目录。它和pwd正好是一对:cd负责移动,pwd负责确认移动后的结果。
cd /tmp pwd /tmpcd也支持几种特殊用法,入门阶段最好直接记熟:
cd ~或直接cd:回到当前用户的家目录。cd ..:回到上一层目录。cd -:回到上一次所在的目录。
我自己对cd -的评价很高,虽然它不如cd常见,但当你需要在两个目录之间来回切换时,比如一边看配置文件、一边看日志文件,cd -比重复敲完整路径省太多事。
有一个新手容易懵的地方:cd的参数严格来说是目录名,不能直接接文件名。比如你写cd file.txt,系统会提示 not a directory。正确做法是先确定目标是目录,再cd进去。
还有一点要特别注意:cd不区分大小写的情况不存在,Linux 是严格区分大小写的。CD、Cd、cd是三个完全不同的词,只有小写cd才是切换目录指令。这点有人觉得是小事,但在入门阶段养成区分大小写的习惯非常要紧,因为后面的指令、参数、文件名全都区分大小写。
3.4 mkdir:创建目录
mkdir是 make directory 的缩写,看名字就知道作用是创建空目录。用法如下:
mkdir mydir这个命令会在当前目录下创建一个名为 mydir 的目录。如果我在/home/user下执行它,那么它的绝对路径就是/home/user/mydir。
mkdir最常用的参数有两个:
-p:递归创建多级目录,作用是"如果父目录不存在,就一并创建"。-v:显示创建过程的详细信息。
递归创建是我在部署项目时特别常用的一项。比如我需要一次创建project/logs和project/data这两层目录,直接写:
mkdir -p project/logs project/data这样会自动创建 project,再创建 logs 和 data,省去了先创建 project 再逐个进入的麻烦。而如果你直接mkdir project/logs但 project 不存在,系统会报错说 no such file or directory。
还有一个细节:目录名里尽量别放空格,如果实在要放,用引号包起来或用下划线替代。比如:
mkdir "my project"目录名里有空格的话,后续进入或操作时都必须带引号,非常容易出错。我在实际教学中一般建议新人用my_project这样的命名方式,少踩一个隐藏坑。
3.5 touch:创建文件与刷新时间戳
touch是这 6 条指令里功能最容易被低估的一个。新手接触它,通常是为了创建空文件,比如:
touch readme.txt但 touch 真正做的事情,是修改文件的访问时间和修改时间为当前时间。如果文件不存在,它就顺便创建一个空文件。所以它同时具备两个功能:创建空文件 + 刷新时间戳。
这个特性在实际工作里有什么用?一个常见的场景:日志输出按天切分,有时需要提前生成一个空的日志文件来验证路径权限,这时touch就派上用场。另一个场景:刷新时间戳,让某些依赖文件时间做判断的构建工具认为文件已经更新过。
touch也支持一次创建多个文件:
touch a.txt b.txt c.txt以及配合花括号扩展:
touch {a,b,c}.txt涉及到一个入门小知识点:文件创建之后,是空的,没有内容。空文件怎么往里面写内容?那要涉及到重定向或者文本编辑器,属于后面章节的内容。但这里先用touch理解"文件名与内容是两回事"这个观念,对后续非常有帮助。
3.6 rm:删除文件与目录
rm是 remove 的缩写,用来删除文件或目录。它的威力很大,也是整个入门阶段最需要小心的指令。
删除单个文件:
rm test.txt删除目录:
rm -r mydir-r代表递归,意思是删除目录和目录里的所有内容。如果不加-r,rm只能删除文件,删除目录时会报错,提示是一个目录。
还有一个参数-f,force,强制删除,不提示任何确认。它的使用场景是删除一些只读文件时不需要系统反复询问。但新手千万别随意把-rf组合起来用。
我见过一个比较惊险的案例:某人想删除当前目录下某个子目录里的所有内容,结果因为路径写错,命令变成了rm -rf /,在 root 用户下执行,差点把整个系统删干净。好在现代一些系统对根目录的递归删除会有保护机制,但这个风险不能不提。
安全使用rm的心得如下:
- 删除前先
pwd和ls确认当前位置和内容。 - 使用相对路径时,心里要清楚相对的是哪一个目录。
- 重要数据目录,尽量少用
rm -r,优先用把目录改名的"软删除"方案。 - 定期备份的习惯比任何命令技巧都重要。
4. 实操演练:用这 6 条指令搭建一个项目目录
我安排一个新学员在 Linux 上初始化一个模拟项目环境,这个任务正好就能用上面 6 条指令完成。整个流程走一遍,你会发现这些指令组合起来效率很高,而且逻辑链条很清晰。
需求是这样的:在我家目录下创建 project 目录,里面放说明文件,再创建一个存放数据用的子目录。
步骤一:进入终端后,先确认自己当前在哪个位置:
pwd /home/user步骤二:看看家目录下已有哪些内容:
ls -lah步骤三:创建第一层目录:
mkdir -p project步骤四:进入该目录:
cd project步骤五:创建数据子目录,顺便创建两个目录分别放原始数据和结果数据:
mkdir -p data/raw data/result步骤六:创建项目的说明文件:
touch README.md创建完这些之后,我用ls -R来递归查看整个目录结构:
ls -R project: README.md data project/data: raw result到这里,这个空壳项目目录就建好了。你可能会觉得这很简单,但请注意,这个流程里每一个指令都在反复训练方向感和路径感。我见过不少学员,做了这一轮之后,对pwd、cd、ls的理解明显比零散地敲命令要扎实很多。
为了让基础更进一步,我们还可以把"清理"走一遍:假设 raw 这个目录建错了,想删掉它重新建:
rm -r data/raw mkdir -p data/raw到这一步,你会对递归删除、相对路径、以及删除与重建的逻辑有一个更完整的掌握。
5. 常见问题与踩坑实录
5.1 "No such file or directory" 到底是文件不存在还是路径不对
这是初学者遇见最多的一类报错。表面上是说"没有这个文件或目录",但实际可能有两种情况:一是路径写错了,二是相对路径没写对。
举个例子:当前在/home/user/project,你想查看/home/user/README.md,如果写成cat README,系统当然会告诉你没有。因为相对路径是相对于当前目录去找的,README如果在 project 下就不存在,而../README才是正确的写法。
遇到这类报错,我的排查顺序固定这么来:先pwd确认当前位置,再ls看看目标文件到底在哪,最后再决定用绝对路径还是相对路径。这条思路看起来简单,但实际能解决大多数新手问题。
5.2 删除了重要文件,还有救吗
这里必须明确:rm删除的文件不会进入回收站,它直接从文件系统里消失。这和图形界面把文件放进回收站完全不一样。
如果你使用的是虚拟机,最好的恢复方式是快照或者备份。如果是云服务器上的数据,只能依赖定期备份来恢复,没有第二种方案。所以我一直强调,删数据之前至少要有备份意识。
我还见过一个场景:有人想删除家目录下某个临时目录,然后手滑多敲了一级路径,结果把自己的整个家目录删了。这类事故几乎都是因为速度快、没确认,而不是因为命令不熟。所以缓慢操作、分步确认,比任何技巧都重要。
5.3 目录名和文件名里有特殊字符怎么办
比如目录名带了空格:my project,进入它的时候必须加引号:
cd "my project" cd 'my project'如果不加引号,系统会把它当成两个参数,提示目录不存在。如果文件名以横线开头,比如-temp.txt,直接rm -temp.txt会把-temp.txt当成命令参数,导致报错。解决办法是使用--分隔符:
rm -- -temp.txt--的意思是告诉系统,后面内容都当文件名处理,不再解析为选项参数。这个知识点虽然不算高频,但遇到了不明原因报错时,是很经典的排查方向。
5.4 为什么我 ls 看不到文件
最常见的原因是文件名以.开头,属于隐藏文件,默认不显示。用ls -a就能看到。
另一个情况是权限限制:当前用户对某个目录没有读取权限,执行ls会得到 permission denied。那就要先学后面章节的权限管理,或者检查一下自己是否登录了正确的用户。
还有一个容易混淆的场景:你创建了文件,然后cd到别的目录,再ls就看不到了。这不是文件丢了,而是你离开了文件所在的目录。此时用ls加上完整路径就能看到,比如:
ls /home/user/project/README.md5.5 tab 补全和方向键是你最好的朋友
如果只让我给新手一条实操建议,就是:命令不要完整手敲,多用 tab 键自动补全。输入cd pro后按一下 tab,如果只有一个匹配项,系统会自动补成project。如果有多个,再按两下 tab 显示所有候选。
方向键上下可以翻阅历史命令,这个功能节省的时间比你想象得多。很多新手敲错的命令,其实按上方向键再修改就行,根本不用重新打一遍。
这两个习惯本质上都在帮你减少出错机会,因为手敲越多,拼写错误的概率就越高,尤其在文件名比较长的时候。
5.6 误以为大小写不通用导致的各种报错
Linux 对大小写敏感,所以LS、Ls、ls三者行为完全不同。这种敏感性同样应用于文件名:Readme.txt和readme.txt是两个不同类型文件。
我见过一个真实案例,某个开发者一直用Readme.txt创建文件,后来写脚本引用readme.txt,每次都找不到文件。查了很久才发现是大小写不一致。入门阶段就养成统一的命名习惯,比如一律用小写文件名,可以有效规避这种低级错误。
6. 下一步该练什么
掌握这 6 条基础指令之后,建议接下来练这几块内容:
先是文件内容的查看:cat、less、head、tail。它们解决的是文件创建好了之后,怎么查看里面写的内容。然后是文本编辑:nano或vim,解决的是怎么在终端里直接写内容。再往后是文件复制与移动:cp、mv,它们和rm一起构成完整的文件管理能力。
还有一条主线是权限管理:chmod、chown,以及用户相关指令。这部分和入门阶段看到的权限信息直接挂钩,理解了之后再看ls -l的输出,就会有一种豁然开朗的感觉。
我在实际带新人的过程中发现,基础指令的关卡不在于记不记得住,而在于能不能"不假思索地组合"。不假思索的前提,就是反复练习上面这个最小项目流程。把pwd、ls、cd、mkdir、touch、rm的配合练成肌肉记忆之后,后边的每一个新指令都会往这片地图上继续添砖加瓦,这也是 Linux 学习里最值得先投入时间的地方。