尧图精选

Linux终端入门:mkdir与touch新建目录和文件的实战指南

🕒 发布时间:2026/10/2 3:02:05 📁 来源:尧图网络
Linux终端入门之新建目录与文件先问一句你第一次打开Linux终端的时候是不是对着黑乎乎的窗口发了好一阵呆光标在那儿一闪一闪好像等着你输入什么神秘的咒语。实际上它确实在等你输入——等你输入的第一批命令多半逃不开两条新建目录、新建文件。终端里新建目录和文件这个技能看似基础到不能再基础但它其实是整个Linux操作体系的敲门砖。你不会mkdir和touch后面所有的Linux常用命令、Shell脚本、系统配置都会像没打地基的楼一样盖不上去。会了之后你会发现原来装系统、部署服务、写脚本那些看起来很唬人的操作底层逻辑都绕不开“先建个目录放东西”、“先建个文件写配置”这两步。凡是打算认真把Linux当工具用的人——不管是后端开发、运维、嵌入式还是刚把Linux装进虚拟机里打算折腾一下的新手——都值得把这块彻底吃透。这篇东西我不打算写成那种翻来覆去念手册的教程而是想以过来人的角度把我在终端里建目录、建文件过程中踩过的坑、想明白的道理一次性捋给你。1. 为什么非要在终端里新建目录和文件很多人会有疑惑文件资源管理器里右键新建文件夹它不香吗为什么非得在一个黑色窗口里敲命令这个问题问得很好答案也很直接因为你迟早会遇到没有图形界面的场景而且你在终端里新建目录和文件从来不只是“为了建一个文件夹”而是为了把后续操作嵌套进去。1.1 终端操作的真实场景最常见的场景是什么远程登录一台服务器不管是腾讯云、阿里云的轻量服务器还是公司机房里的老旧机器你手头只有一个SSH终端没有桌面。这时候你需要在/home下新建一个项目目录在里面再建几个子目录放配置文件写启动脚本——全程都是命令行操作。还有另一种场景你想在服务器上部署一个应用官方文档给你的第一步往往是“mkdir -p /opt/myapp cd /opt/myapp”你连这都看不懂后面就别提了。在这类场景里终端操作不是可选项是唯一选项。而且熟练之后你会发现终端里“新建目录新建文件”的效率其实是高于鼠标的。比如你要一次性创建目录树project/{src,docs,scripts}鼠标要点好多下终端里一条命令就搞定了。这不是炫技是真的省时间。1.2 先认清“当前目录”这个概念新手在终端里最常犯的糊涂是搞不清楚命令到底在哪里生效。你在终端里输入mkdir test系统会在哪个地方创建这个test目录答案是在你的当前工作目录。这个目录就是终端提示符里通常会显示的那个路径。你可以这样理解每开一个终端窗口你就相当于站在这台电脑文件系统中的某个位置上。你输入的命令默认都是“站在当前位置操作当前脚下的东西”。想确认自己站在哪儿输入pwdprint working directory打印工作目录。想看脚下有什么输入ls。这个理解非常关键因为很多人第一次在终端里建完目录跑到图形界面的“文件管理器”里死活找不到建出来的目录原因就是两边的“位置”不是同一个。比如你在某个终端里位于/tmp/abc但你的文件管理器打开的是~/Downloads当然找不到。每个终端窗口的当前目录就像你手里的一个定位光点——建目录这种命令全看光点指在哪儿。1.3 少用rm多学ls既然说到终端命令必须先立一个规矩在终端里操作文件和目录一定要对危险命令有敬畏心。尤其是rm -rf这个组合那可是真的有“一键送走全部数据”的本事。我见过不止一个新人在练习新建目录和文件的阶段突然上头想试试删目录结果把整个虚拟机的系统目录给删了直接起不来。所以我的建议是练习阶段你可以大胆地mkdir、touch但rm这个命令至少在头一个星期里碰都别碰。真想清理从安全一点的rmdir删空目录开始等理解了绝对路径、相对路径、通配符的含义之后再碰rm。这个习惯可以帮你避开很多悔不当初的意外。2. mkdir新建目录的核心命令详解mkdir 是 “make directory” 的缩写直译就是“造一个目录”。这是你在Linux终端里学到的第一个命令级技能用法本身不难但里面有几个参数和逻辑值得拆开说透。2.1 mkdir基本用法一次建一个目录最基本的用法是mkdir [目录名]。比如当前目录下没有learn这个目录你输入mkdir learn按下回车当前目录下就多了一个名为learn的空目录。想确认建没建成功输入ls或者ls -l看一眼就行。这里有个新手常见的问题目录名能不能是中文答案是可以但我不推荐。终端环境、脚本编码、命令补全遇到中文目录名很容易出现乱七八糟的问题。别给自己找事目录名用英文小写字母加短杠是最稳的。比如my-project、linux_test这种。另外一个常见问题是目录名能不能以点开头比如.git、.config这种目录以点开头的是隐藏目录平时用ls看不到要加ls -a才看得到。Linux里大量配置文件都是用点开头命名的你以后多半会用到。现在记住这个知识点后面能省不少排查时间。2.2 -p参数递归创建多级目录mkdir最核心的参数是-p全称是--parents意思是“父级目录一并创建”。举个例子你想一次性创建a/b/c这么一条三层目录结构如果你先mkdir a再mkdir a/b再mkdir a/b/c也不是不行但效率太低而且一旦遗漏某一级后面的命令就报错。这时候直接用mkdir -p a/b/c就够了系统会自动把中间缺失的a、b目录都补上。就算a目录早就存在命令也不会报错直接跳过已存在的部分。这个-p参数在后面的实践里几乎天天遇到。比如部署一个Java项目你要经常建这样的目录结构mkdir -p /opt/myapp/{bin,conf,logs,data}这一条命令直接建出了4个目录。花括号{}是终端自带的扩展语法叫花括号展开它会自动把{bin,conf,logs,data}展开成四个名字等价于四条mkdir命令。这个技巧在日常操作中效率极高后面我会再多举几个例子。2.3 -m参数创建时直接指定权限mkdir还有一个参数-m用于创建目录的同时设置权限位。比如你要创建一个只对当前用户开放的私有目录可以这样mkdir -m 700 private这个命令创建出的private目录权限是700也就是只有文件所有者能读写执行同组用户和其他用户一概没权限。新手可能对权限数字还很陌生我用最简单的方式解释一下Linux的权限用三位数字表示比如755、700、644第一位是“用户自己”第二位是“同组人”第三位是“其他人”。数字从0到7代表读4、写2、执行1的加总。关于这个我多说一句新手如果不是很清楚自己在做什么尽量少用-m用系统默认权限即可。默认权限已经考虑了安全和易用的平衡等你理解了umask再自己控制不迟。2.4 易错点文件名带空格、特殊字符的处理这个坑我几乎在每个人身上都见过。如果你在终端里输入mkdir my folder注意my和folder之间加了一个空格系统不会帮你创建名为“my folder”的目录而是会创建两个各自独立的目录一个叫my另一个叫folder。为什么会这样因为终端默认用空格把参数切开的。一条命令中每个被空格分隔的内容都被当作一个独立的参数处理。想创建名字里带空格的目录需要给整个名字加引号或者用反斜杠转义像这样mkdir my folder mkdir my\ folder我其实不建议你创建带空格的目录名因为后面进入、操作、引用它的时候每个地方都要小心翼翼地处理。但你必须知道这个原理否则以后读到别人脚本里带引号的文件路径会一头雾水。目录名里也不要带像/、:这种特殊字符。/在Linux里是绝对路径的分隔符你建目录时用了它就相当于往下一层继续建了。想建a/b目录至少要mkdir -p a/b才行直接mkdir a/b会报“No such file or directory”因为a不存在系统不知道你要在哪里建b。3. 新建文件的几种典型方法touch命令与重定向新建目录用mkdir那新建文件呢最常用的命令是touch。不过touch这个命令的“本来面目”其实不是建文件而是更新文件的时间戳。你刚接触它可以优先掌握它“顺手建文件”的用法但背后的机制最好也了解一下因为后面学着学着你会发现它另一面特别有用。3.1 touch命令创建空文件的基础用法touch的用法特别简单touch hello.txt这条命令会在当前目录下创建一个名为hello.txt的空文件。如果hello.txt已经存在这行命令不会报错也不会清空文件内容只会把它的“最后修改时间”更新为当前时间。这个特性在实战中挺有讲究。比如你想验证一个日志轮转机制是否生效可以用touch把某个日志文件的修改时间改到日志轮转策略会认为它该被处理的状态来测试系统行为。又比如你想建一堆占位文件来检测磁盘空间满时的系统表现touch也是利器。所以别只把它当“创建空文件工具”它的时间戳能力是独一份的。创建一个文件之后你可以用ls -l看它的详细信息。你会发现它的初始大小是0。这个细节很重要Linux的文件创建和内容写入是两回事。touch只是把“文件目录项”建好了内容还是空的。后续你得用echo、cat、vi/vim这些方式往里面写入内容。3.2 重定向符号用echo和cat直接写入内容如果你不只是想建个空文件还想顺便往里面写点字推荐从小技巧开始记用重定向。比如echo hello linux hello.txt的含意是“把左边命令的输出覆盖写入右边的文件”。如果hello.txt不存在系统会自动创建它。如果已经存在会直接把内容覆盖掉。覆盖操作是不可逆的原内容会瞬间消失。如果你还想保留原有内容在后面追加新内容用echo another line hello.txt这个追加操作在日常操作里太常用了比如往配置文件末尾补一行内容或者把某条命令的运行结果存进日志文件ls -l file_list.txt注意不管是用还是如果目标文件的老目录不存在系统都会报错。所以新建文件前通常要先用mkdir把目录结构安排好或者确保当前目录正确。这个先后顺序也是后面综合实战的核心思路。3.3 vi/vim想编辑文件内容时的正确选择touch建空文件echo写简单内容但如果要写稍微复杂一点的文本——比如一段配置、几行代码、一份说明文档——再用echo就太难受了。终端的编辑器常见的vi/vim或者nano才是正选。新手可以先从nano开始因为它的操作模式更符合直觉。nano file.txt进入编辑器直接打字写完按住CtrlX按提示输入Y确认保存再按回车退出完事。vim虽然功能更强大但它的模式切换普通模式、插入模式、命令行模式对新手的理解成本略高。不过我得说vim你在Linux这条路上迟早要掌握很多服务器上根本没有nano但几乎都有vim。我的建议是先用nano把前面的命令熟悉起来等你对i进入插入模式、Esc退出、:进入命令模式、w保存、q退出这些基础操作形成肌肉记忆后再过渡到vim。这个过程不用急熟能生巧。3.4 适合新手的三个文件练习学完touch、echo、重定向、nano之后我建议你立刻做一组小练习把这几个操作串起来第一步在终端里mkdir -p /tmp/training/{docs,scripts}建立训练目录。第二步cd /tmp/training/docs进入文档目录用touch readme.txt创建一个空文档再用echo study log readme.txt写入一行内容。第三步cd ../scripts进入脚本目录用nano建一个简单的hello.sh。内容可以只写一行echo hello from shell。第四步回到/tmp/training执行两个查看命令ls -R看整体目录树以及cat docs/readme.txt确认文件内容已经写入了。这套练习做完你基本就把“在终端里建目录、在目录里建文件、往文件里写内容、查看结果”这条链路完整走了一遍它也是之后所有终端操作的基础框架。4. 综合实战从零搭起一个项目的目录结构只学会单个命令还不够你得学会组合使用才会真切体会到“终端操作真方便”。这一节我会带你把前面学的命令串起来模拟一次真实的项目初始化。核心场景是你收到一个任务要在服务器上搭建一个新服务的目录骨架并创建几个基本的说明文件和配置文件。4.1 一次性搭出项目目录树假设产品叫order-service你希望它的目录结构是这样的/opt/order-service/ ├── bin/ # 放可执行脚本 ├── conf/ # 放配置文件 ├── logs/ # 放运行日志 └── data/ # 放业务数据最简单的方式就是把之前说过的那条mkdir -p命令派上用场sudo mkdir -p /opt/order-service/{bin,conf,logs,data}这里用sudo是因为/opt目录默认归root所有普通账号没有写入权限。新手请记住这个判断流程当系统报Permission denied时第一反应检查你对目标目录有没有操作权限而不是只看命令本身对不对。创建之后用tree命令查看目录树最直观。如果你的系统没有tree可以用find /opt/order-service -type d代替或者退一步用ls -R /opt/order-service。4.2 填充关键文件配置、脚本与说明文档目录建好之后开始往里面填充文件。这一步正好把touch、echo、cat、nano全部用上。先在conf里放一个最基础的配置文件。假设你是给一个Java服务准备配置可以用nano创建nano /opt/order-service/conf/app.yml写入类似下面的内容server: port: 8080 mode: dev log: level: info保存退出。接着给bin目录放一个启动脚本雏形。用nano创建/opt/order-service/bin/start.sh#!/bin/bash echo order-service starting... cd /opt/order-service # 实际项目里这里会放真正的启动命令比如 java -jar xxx.jar然后给它执行权限chmod x /opt/order-service/bin/start.sh这一步是因为Linux下的脚本文件默认没有执行位创建完通常要用chmod改变文件权限不然运行的时候会报Permission denied。最后在根目录放一个README.md说明文件。这里演示用一行命令生成初始内容echo # order-service /opt/order-service/README.md然后需要追加说明的时候再配合补充。比如echo created for deployment practice /opt/order-service/README.md到这一步你已经完成了比单纯“新建目录和文件”稍微进阶一步的完整实践用mkdir预规划结构、用nano写内容、用chmod调权限、用echo进行快速初始化和追加写入。4.3 快速验证成果并留下“操作日志”一个我特别想强调的习惯是在每一步操作过程中及时验证。封装的目录建好之后多敲几下ls -l、cat去检查因为“确认一步再走下一步”是终端操作里避免连锁错误的黄金准则。你可以用一组命令快速验证这次全部操作ls -lR /opt/order-service结果会清晰显示目录层级和每个文件的权限、大小。如果你愿意还可以把验证结果存下来留作记录ls -lR /opt/order-service structure_snapshot.txt这又会用一次重定向。你看这些命令就是这么反复串来串去的越串你越会觉得顺手。5. 常见问题与排查技巧实录建目录和文件看着不难但实际操作中遇到的报错和困惑那是五花八门。我把这些年见到的高频问题整理成了一只参考速查表你们遇到类似情况可以直接对着排查。5.1 Permission denied没有操作权限怎么办这个报错的信息往往是mkdir: cannot create directory ‘xxx’: Permission denied。原因很简单你对当前所在的目录没有写权限。最常见的场景是你在/根目录或者/etc、/usr这类系统目录下想直接建目录而这些地方普通用户是不能改动的。解决方法有三个第一回到自己有权限的目录比如自己的家目录~或/tmp直接创建第二在命令前面加sudo提权但你需要知道sudo密码并且明白自己在做什么第三用cd切换到一个你确定有写权限的目录再继续。这里要说个贴心提醒日常练习就老老实实在自己的家目录下搞别一上来就sudo到处建目录万一在系统目录里建了乱七八糟的结构后面清理起来极麻烦还可能破坏系统默认配置。5.2 No such file or directory父目录不存在报错信息形如mkdir: cannot create directory ‘a/b’: No such file or directory问题根源在于父目录a不存在。你把命令改成mkdir -p a/b即可解决这也是大家一直强调-p参数的实战价值。新建文件也同理如果你想vim /opt/project/conf/app.yml但conf目录还不存在vim会报错而不是自动创建目录。你得先mkdir -p /opt/project/conf再进去建文件。5.3 文件名或目录名带空格的处理前面提过比较安全的策略是根本不建带空格的目录名。但如果你拿到一个已经存在的带空格目录比如My Documents想进入或新建文件怎么办两种办法整个路径加引号cd My Documents或者用反斜杠转义空格cd My\ Documents。还有一个排查方向值得注意你明明输入的是mkdir my folder结果ls一看出现了两个目录my和folder别觉得奇怪按连接终端的原理去理解就行。以后写脚本的时候凡是涉及路径变量都记得加引号包起来防止路径里的空格拆散参数。5.4 Tab键补全避免手滑和路径错误的最佳习惯这是一条操作经验算不上问题但我必须放在这里重点说在终端里时刻养成按Tab键补全的习惯。输入目录名的前半段按一下Tab系统会自动补全。如果有多个匹配再按两下Tab会列出候选列表。这不仅能防手滑还能避免因为敲错一个字母导致的各种奇怪报错。我观察过很多新手操作慢的最大原因之一就是全程手打完整路径又费力又容易出错。真正干活顺手的人输入命令时都是靠Tab一路点过去的又快又准。这个习惯从入门第一天就该养成。说到这里我把这节内容集中成一张速查表方便各位对照参考操作目的常用命令关键注意点查看当前位置pwd判断当前在哪个目录查看目录内容ls/ls -l/ls -a-a能看到隐藏目录新建单级目录mkdir dirname目标位置必须有写权限新建多级目录mkdir -p a/b/c-p自动补父级目录新建带权限目录mkdir -m 700 private数字权限按读4写2执行1相加新建空文件touch file.txt文件已存在时更新时间戳写入/覆盖内容echo xx file.txt覆盖原内容不可逆追加内容echo xx file.txt保留原内容追加编辑文件nano file.txt/vim file.txtnano适合新手vim更通用查看文件内容cat file.txt适合短小文本文件递归查看整棵树ls -R dirname目录层级多时比较直观修改文件权限chmod x file.sh脚本文件通常要加执行权限6. 把这些命令练成本能之后你能走得更远很多人以为学会mkdir和touch就结束了其实恰恰相反这两个基础操作是你进入Linux终端世界的第一道门。跨过这道门之后你会发现前面学到的很多东西会继续复用。比如你想写一个自动化部署脚本第一步一定是判断目录是否存在、不存在就mkdir -p创建你要搭建一套日志收集机制第一步就是touch一个文件作为日志载体你想往系统里添加一个服务第一步就是建一个专门的应用目录。可以说后面所有进阶操作都会反复踏足“先建目录、再建文件、再写内容”这个老三步。顺着这个方向我建议你接下来可以逐步接触这些相关技能一是相对路径和绝对路径的频繁切换。你会经常需要判断当前位置要理解..表示上一级目录、.表示当前目录以及cd -可以快速回到上一次所在目录。这套路径思维是终端高效操作的地基。二是文件和目录的复制、移动与删除。等对文件安全有了足够认识之后学cp、mv、rm的时候要格外沉稳每一步都确认清楚路径再执行。三是查看命令帮助。遇到不认识的命令或参数最高效的求助方式是man 命令名或命令名 --help。这比到处搜索更直接而且能帮你建立自己的知识索引。四是终端复用工具。等你开始频繁操作多台服务器或者同时处理多个任务时像tmux这样的终端复用器会成为效率神器。它能让你在一个终端窗口里开多个面板一个建目录一个编辑文件一个看日志互不干扰整个操作流会痛快很多。五是shell脚本的初步编写。当你觉得在终端里手动输入mkdir、touch、echo越来越熟练时就可以试着把它们写进一个.sh脚本里用变量、循环、判断把它们组织成有逻辑的工作流。到那时候你已经不是“在终端里敲命令”而是“让终端为你干活”了。我个人在实际操作中最大的体会是终端操作能力不是背出来的而是在反复的“敲错、报错、排查、修正”循环里练出来的。新建目录和文件作为最初级的操作恰恰是试错成本最低的练习场——你随便建建错了大不了删掉重来不存在什么不可恢复的风险当然前提是别碰rm-rf。所以看到这里你在自己的Linux虚拟机或者云服务器上找个目录把上面那些练习一个一个敲一遍。手敲过一遍的和只是看过的完全不是一个掌握深度。最后再分享一个小技巧当你以后在一个陌生的服务器上不知道目录结构怎么放的时候先停手想一想——如果我自己设计目录怎么分层然后大胆地用mkdir -p搭出一个结构来。等你拆解过的项目多了慢慢就会形成“看到需求就能搭出合理目录结构”的直觉。这个直觉就是从你现在敲下第一句mkdir开始积累的。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →