人生理想,技术交流加Q:411239339

Day 03 基础命令入门:文件与目录操作

浏览:6次阅读
没有评论

共计 2946 个字符,预计需要花费 8 分钟才能阅读完成。

如果你刚接触 Linux 或 macOS 终端,面对那个黑底白字的窗口,多少会有点发怵。别担心,这篇文章会带你从最基础的文件和目录操作开始,一步步摸清终端的脾气。读完之后,你至少能在命令行里自如地浏览目录、创建文件、复制移动、删除清理——这些操作占了日常终端使用的大半。

先搞清楚你在哪:pwd

打开终端,第一件事往往是搞清楚自己当前所在的位置。pwd 就是干这个的,全称是 Print Working Directory(打印工作目录)。

pwd
# 输出示例:/home/username

它没有花哨的参数,就是老老实实告诉你 " 你现在站在文件系统的哪个位置 "。看起来简单,但在你敲了一堆 cd 跳来跳去之后,pwd 能帮你快速定位自己,避免在错误的目录里执行危险操作。

四处逛逛:cd

知道自己在哪之后,自然要学会移动。cd 是 Change Directory 的缩写,用来切换目录。

cd /etc            # 跳到 /etc 目录
cd Documents       # 进入当前目录下的 Documents 文件夹
cd ..              # 回到上一级目录
cd ~               # 回到家目录(你的 "老巢")cd -               # 回到上一次待过的目录

这里要插一句关于 绝对路径 相对路径 的事,因为这个概念贯穿所有文件操作命令。

绝对路径 vs 相对路径

绝对路径从根目录 / 开始写,像门牌号一样完整无歧义:/home/username/Documents/report.txt。不管你当前在哪个目录,用绝对路径永远能准确定位到目标。

相对路径则以当前目录为起点。如果你正站在 /home/username,那 Documents/report.txt 就够了。这里有两个特殊符号要记住:. 代表当前目录,.. 代表上一级目录。

怎么选?坦白说,日常操作用相对路径更省事,但在写脚本或配置文件时,绝对路径更靠谱——因为脚本可能在任何目录下被执行。

看看有什么:ls

cd 到一个目录后,你需要知道里面有什么。ls(list 的缩写)是你用得最多的命令之一。

ls                 # 列出当前目录内容
ls -l              # 长格式显示(权限、大小、修改时间等)ls -a              # 显示隐藏文件(以 . 开头的文件)ls -la             # 两个参数组合使用
ls -lh             # -h 让文件大小显示为人类可读格式(KB、MB)ls /var/log        # 查看指定目录的内容

ls -la 大概是我个人敲得最多的组合。它能让你一眼看到目录里 所有 文件(包括隐藏的配置文件),以及每个文件的权限、所有者和修改时间。

创建目录:mkdir

浏览够了,开始动手创建东西。mkdir(Make Directory)用来新建文件夹。

mkdir projects                    # 创建一个目录
mkdir -p projects/web/css         # 一次性创建多层嵌套目录

-p 参数非常实用。没有它,如果中间层目录不存在,命令会直接报错。加上 -p,它会把缺失的中间目录一并创建,省得你一层一层 mkdir

创建文件:touch

touch 最常见的用途是快速创建一个空文件。

touch notes.txt
touch file1.txt file2.txt file3.txt   # 一次创建多个

严格来说,touch 的本职工作是更新文件的时间戳。如果文件已经存在,它不会清空内容,只会刷新修改时间。但大家用得最多的场景还是 " 快速建个空文件 "。

复制:cp

cp(Copy)的基本用法很直观——从哪里复制到哪里。

cp report.txt report_backup.txt        # 复制文件并重命名
cp report.txt ~/Documents/             # 复制到指定目录
cp -r projects projects_backup         # 复制整个目录

注意那个 -r(recursive,递归)。复制目录时必须加上它,否则 cp 会拒绝执行——这其实是个保护机制,防止你无意中复制了一大堆不需要的东西。

还有个 -i 参数值得一提,它会在覆盖已有文件前先问你一声:

cp -i report.txt ~/Documents/
# 如果目标位置已有同名文件,会提示:overwrite? (y/n)

移动和重命名:mv

mv(Move)做两件事:移动文件,以及重命名文件。

mv report.txt ~/Documents/             # 移动文件
mv old_name.txt new_name.txt           # 重命名
mv *.txt archive/                      # 把所有 txt 文件移到 archive 目录

你会发现 " 重命名 " 在 Linux 里并没有专门的命令,mv 一肩两挑。逻辑上也说得通:把一个文件从 " 旧名字 " 移动到 " 新名字 ",效果就是重命名。

mvcp 一样,支持 -i 参数来避免意外覆盖。建议养成习惯,对重要文件操作时带上它。

删除:rm 和 rmdir

讲真,rm 是终端里最需要敬畏的命令。Linux 没有回收站这个概念,rm 删掉的东西基本找不回来。

rm notes.txt                    # 删除文件
rm -i notes.txt                 # 删除前确认
rm -r old_project               # 删除目录及其所有内容

rmdirrm 的 " 温柔版 ",只能删除 空目录

rmdir empty_folder              # 只有目录为空时才能成功

如果目录里有东西,rmdir 会直接报错拒绝执行。这个设计是故意的——它比 rm -r 安全得多。

关于 rm -rf,你可能在网上见过各种段子。这个组合的意思是 " 递归删除且不询问确认 ",威力巨大。在你对命令行足够熟悉之前,不要轻易使用它,尤其不要在根目录附近运行。

通配符:批量操作的利器

到这里,单个文件的操作你已经掌握了。但如果目录里有 200 个文件,你总不能一个一个敲名字。通配符就是解决这个问题的。

通配符 含义 示例
* 匹配任意数量的任意字符 *.txt 匹配所有 txt 文件
? 匹配单个任意字符 file?.txt 匹配 file1.txt、fileA.txt
[abc] 匹配方括号内的任意一个字符 file[123].txt 匹配 file1.txt、file2.txt、file3.txt
[0-9] 匹配范围内的任意一个字符 log[0-9].txt 匹配 log0.txt 到 log9.txt

实际用起来是这样的:

ls *.log                # 列出所有日志文件
cp *.jpg ~/Pictures/    # 把所有 jpg 图片复制到 Pictures
rm temp_*               # 删除所有以 temp_ 开头的文件
mv report_202?.pdf archive/  # 移动 report_2020.pdf 到 report_2029.pdf

通配符是 Shell 在执行命令 之前 展开的,也就是说 ls *.txt 实际上会被 Shell 先翻译成 ls file1.txt file2.txt file3.txt ...,然后再交给 ls 执行。理解这一点,你就能明白为什么通配符几乎在所有命令里都能用——它不是某个命令的专属功能,而是 Shell 本身的能力。

一些实用建议

善用 Tab 键补全。 输入文件名或路径时,敲几个开头字母然后按 Tab,Shell 会自动补全。这不只是省力,还能帮你避免拼写错误。

删除前先用 ls 验证。 比如你打算执行 rm *.log,不妨先跑一下 ls *.log,确认匹配到的文件确实是你想删的。

复杂操作先在测试目录练手。 建个 ~/playground 目录,在里面随便折腾,哪怕全删了也不心疼。

这些命令看着简单,但组合起来能完成相当复杂的文件管理任务。先把每个命令的基本用法记住,然后在日常使用中慢慢摸索参数和技巧。命令行这东西,用得越多手感越好,不用死记硬背——敲多了自然就记住了。

正文完
创作不易,扫码加点动力
post-qrcode
 0
果较瘦
版权声明:本站原创文章,由 果较瘦 于2026-03-22发表,共计2946字。
转载说明:除特殊说明外本站文章皆由果较瘦原创发布,转载请注明出处。