元数据卡
- 前置知识:ch02-navigation
- 预计时间:10 分钟
- 阅读模式:边读边动手
动手吧
"知道你站在哪,很好。"工坊主人的声音从某个角落传来。"但光站着有什么用?你总得动手吧。"
你看了看四周——空荡荡的黑底白字世界,什么都没有。
"可是这里什么都没有啊……"
"那就创造点什么。"他的声音带着笑意。"捡一块符文石板,刻上你的名字。"
touch:无中生有
# 创建一个空的文件
touch first-try.txt
# 确认它存在了
ls -l first-try.txt语言:Shell (Bash/Zsh) 如何运行:先 cd ~,然后运行 预期输出:ls -l 显示 0 字节的空白文件 你试试:touch one.txt two.txt three.txt 一次创建多个
touch 字面意思就是"摸一下"。文件不存在就创建,存在了只更新时间戳。
echo:往石板里写东西
空的石板比什么都没有好不了多少。写点东西进去。
echo "Hello Workshop!" > first-try.txt
cat first-try.txt
# Hello Workshop!语言:Shell (Bash/Zsh) 你试试:cat 也能拼接——cat file1.txt file2.txt > combined.txt
> 和 >>:重定向
> 叫重定向。你把 echo 的输出从屏幕改道到文件里。
# > 覆盖文件原有内容
echo "第一行" > note.txt
echo "第二行,覆盖了第一行" > note.txt
cat note.txt
# 第二行,覆盖了第一行
# >> 追加到文件末尾
echo "第三行,追加" >> note.txt
cat note.txt
# 第二行,覆盖了第一行
# 第三行,追加重定向不只是 echo 的专利:
# 把日期写进文件
date > timestamp.txt
# 把进程列表写进另一个
ps aux > processes.txt
# 只看前 5 行
cat processes.txt | head -5语言:Shell (Bash/Zsh) 你试试:echo "你好" > greetings.txt && cat greetings.txt
mkdir:建几个架子
石板乱丢在地上,用不了多久就找不到了。你需要架子。
"我的工坊有分区的:锻造区在左边,材料区在右边。"工坊主人说。
mkdir my-project
cd my-project
mkdir src docs
ls -l
# drwxr-xr-x 2 steven steven 4096 Jun 23 16:00 docs
# drwxr-xr-x 2 steven steven 4096 Jun 23 16:00 src语言:Shell (Bash/Zsh) 预期输出:ls -l 显示两个子目录(d 开头表示是目录) 你试试:mkdir -p project/{src,test,docs} 一次创建嵌套结构
-p 会递归创建不存在的父目录——mkdir -p a/b/c 把 a、b、c 一起建好。
cp 和 mv:搬运材料
# 复制
cp first-try.txt my-project/backup.txt
# 移动(或重命名——同一个命令)
mv first-try.txt my-project/final.txt
mv first-try.txt renamed.txt # 重命名
# 复制整个目录(加 -r)
cp -r my-project my-project-backup语言:Shell (Bash/Zsh) 你试试:cp -i 加交互模式,覆盖前会先问你
rm:销毁——谨慎!
删除不经过回收站。
# 删除文件
rm first-try.txt
# 删除空目录
rmdir empty-dir
# 删除目录及其所有内容——⚠️
rm -rf my-project语言:Shell (Bash/Zsh) 预期输出:成功时什么也不显示——这才是最让人不安的
rm -rf:-r递归,-f强制不询问。程序员最谨慎对待的四个字符。
安全习惯——先看再删:
# 先 ls 确认
ls my-project/
# 确认了再删
rm -rf my-project/
# 或用 -i 交互模式,逐个确认
rm -ri my-project/常见陷阱:文件名里的空格
# 这个文件"有名有姓"
touch My Important File.txt
# 删除它——挂掉了
rm My Important File.txt
# rm: cannot remove 'My': No such file or directoryShell 把空格当参数分隔符。它以为你要删三个文件。
解决方案:永远用引号包住带空格的文件名。
rm "My Important File.txt"
# 或用反斜杠转义
rm My\ Important\ File.txt更好的习惯:不要用空格命名文件。用 my-important-file.txt 或 my_important_file.txt——少一个麻烦。
旅人笔记
touch创造空白,echo往里装文字。>覆盖写,>>追加写。mkdir建目录,cp复制,mv移动/改名。rm删除——先ls确认路径,再执行。
文件名有空格?用引号包住,或者别用空格。
→ 下一步:环境变量和 PATH
你已经能在终端动手了。但你敲 ls 的时候,电脑是怎么知道去哪找这个程序的?