跳到内容

元数据卡

  • 前置知识:ch02-navigation
  • 预计时间:10 分钟
  • 阅读模式:边读边动手

动手吧

"知道你站在哪,很好。"工坊主人的声音从某个角落传来。"但光站着有什么用?你总得动手吧。"

你看了看四周——空荡荡的黑底白字世界,什么都没有。

"可是这里什么都没有啊……"

"那就创造点什么。"他的声音带着笑意。"捡一块符文石板,刻上你的名字。"

touch:无中生有

bash
# 创建一个空的文件
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:往石板里写东西

空的石板比什么都没有好不了多少。写点东西进去。

bash
echo "Hello Workshop!" > first-try.txt
cat first-try.txt
# Hello Workshop!

语言:Shell (Bash/Zsh) 你试试cat 也能拼接——cat file1.txt file2.txt > combined.txt

> 和 >>:重定向

>重定向。你把 echo 的输出从屏幕改道到文件里。

bash
# > 覆盖文件原有内容
echo "第一行" > note.txt
echo "第二行,覆盖了第一行" > note.txt
cat note.txt
# 第二行,覆盖了第一行

# >> 追加到文件末尾
echo "第三行,追加" >> note.txt
cat note.txt
# 第二行,覆盖了第一行
# 第三行,追加

重定向不只是 echo 的专利:

bash
# 把日期写进文件
date > timestamp.txt
# 把进程列表写进另一个
ps aux > processes.txt
# 只看前 5 行
cat processes.txt | head -5

语言:Shell (Bash/Zsh) 你试试echo "你好" > greetings.txt && cat greetings.txt

mkdir:建几个架子

石板乱丢在地上,用不了多久就找不到了。你需要架子。

"我的工坊有分区的:锻造区在左边,材料区在右边。"工坊主人说。

bash
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:搬运材料

bash
# 复制
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:销毁——谨慎!

删除不经过回收站。

bash
# 删除文件
rm first-try.txt

# 删除空目录
rmdir empty-dir

# 删除目录及其所有内容——⚠️
rm -rf my-project

语言:Shell (Bash/Zsh) 预期输出:成功时什么也不显示——这才是最让人不安的

rm -rf-r 递归,-f 强制不询问。程序员最谨慎对待的四个字符。

安全习惯——先看再删:

bash
# 先 ls 确认
ls my-project/

# 确认了再删
rm -rf my-project/

# 或用 -i 交互模式,逐个确认
rm -ri my-project/

常见陷阱:文件名里的空格

bash
# 这个文件"有名有姓"
touch My Important File.txt

# 删除它——挂掉了
rm My Important File.txt
# rm: cannot remove 'My': No such file or directory

Shell 把空格当参数分隔符。它以为你要删三个文件。

解决方案:永远用引号包住带空格的文件名。

bash
rm "My Important File.txt"
# 或用反斜杠转义
rm My\ Important\ File.txt

更好的习惯:不要用空格命名文件。用 my-important-file.txtmy_important_file.txt——少一个麻烦。


旅人笔记

touch 创造空白,echo 往里装文字。
> 覆盖写,>> 追加写。
mkdir 建目录,cp 复制,mv 移动/改名。
rm 删除——先 ls 确认路径,再执行。
文件名有空格?用引号包住,或者别用空格。


→ 下一步:环境变量和 PATH

你已经能在终端动手了。但你敲 ls 的时候,电脑是怎么知道去哪找这个程序的?

前往 → 环境变量和 PATH

Built with VitePress | Software Systems Atlas