Lab1: Unix 与 C
0. 环境
首先确保你有可以正常访问 GitHub, Google 等学术网站的网络环境。
如果你在这步出现了问题,请私聊。
1. Git lab
这个 lab 是本次课程的基础。你需要:
配置 ssh_key (可选)
这个在互联网上已经有足够多的资源了,请自行 STFW。
TIP
GitHub 现在已经几乎不能使用密码来进行身份验证,所以我们推荐你配置 ssh_key
Clone 仓库
尝试使用 git clone 克隆 Lab1 仓库
git clone -b master --depth 1 https://github.com/datawhalechina/cstart.git
WARNING
如果你发现 git clone 的时候出现了网络错误,请 STFW 或者直接询问大语言模型(比如 ChatGPT),为你的 Git 配置代理服务(我们假设你已经完成了 TASK-0)。
配置 Git
配置你本地 Git, 告诉 Git 你的用户信息
git config --global user.name "your_name"
git config --global user.email "your_email@example.com"
2
查看仓库基础信息
尝试分别输入下面内容
git remote -v
git status
git log
2
3
思考这些命令告诉了你什么信息
链接你自己的远程仓库(可选)
如果你有需求要把仓库放在 GitHub 上(比如你有多个电脑等等),你需要自己添加一个远程仓库,并使用 git remote add
来添加远程仓库,具体使用可以 STFW 。
这样,你就有 2 个远程仓库了,一个是我们的发布页你可以用来 pull 我们更新的代码,一个是你自己的远程仓库。
TIP
思考下到目前为止你 仓库 的结构是怎么样的
Git 使用
尝试随便写点东西,练习如何提交,如何回退到某个提交等等。正如讲义所说,你可以根据需求学习使用。但一定记得,尽可能原子化的提交会减少你未来的悔恨。
2. CLI 工具
man/tldr
CAUTION
Read The Friendly Manual(RFTM)!
尝试输入
man tar
阅读并且试图学会如何使用 tar(马上就会用到了)
当然,你可能会觉得 man 是在太繁琐了(你当然不是一个人),那么试试 tldr 吧
tldr tar
tldr (Too Long; Didn't read) 是一个比 man 更加简明的文档工具,可以让你迅速上手 / 回忆一些命令。
cd/ls
在 CLI 中 我该如何到我想去的目录?我该怎么知道这个目录有什么?
CAUTION
RTFM
学会使用 cd/ls 等常用命令 (然后让你的终端处于我们的 lab1 目录下)
TIP
Linux 对于大小写是敏感的
还有,你可以使用 TAB 进行自动补全
NOTE
如果你使用 oh-my-zsh,你可以自己配置许多有意思的插件提升体验(比如 z )
如果你觉得有时候访问一个目录太繁琐了,不妨现在就尝试配置吧。
tar
你应该已经学会 tar 了吧?
尝试解压 lab1.tar.gz ,获取后面 C 任务的代码。
其他
还有很多其他的命令(cat grep find 等等,当然还有管道的使用),这些是你愉快使用类 Unix 环境的基础,这里不做强制要求,但强烈建议你可以自己学习,然后尝试下面的一些事情:
1. 使用 ls,grep 找到 echo.c (还需要用什么?)
2. 使用 find, wc 统计 .c 文件的数量
NOTE
Ask The Friendly AI(ATFAI)!
我们不反对使用 gpt 等大模型,但要求你在明白是代码在干什么以后再使用!
不然很容易出现删库之类的笑话 😊
3. C 语言练习
打开仓库的实验目录,进行这次的 C 语言练习。
这次只是让你初步尝试 GCC 的使用,让你自己可以跑起这个程序。
TIP
你可以使用 tree 命令查看 lab1 的目录结构。
TIP
Read The Friendly Source Code(RTFSC)!
如何 RTFSC ? 你应该先从 main 开始阅读代码。
这个代码在干什么?查阅 Linux 下 echo 的资料,这是一个简易实现的 echo
main 函数还能带参数的?是的,这是与命令行交互的很重要的一环,argc 代表参数数量(包括程序自己在内), argv 就是参数本身了。
知道了这个,你应该可以轻松理解代码在干什么。
IMPORTANT
参考手册,讲义和自行查阅资料,使用 GCC, 让这个程序跑起来。
这只是一个非常简单的程序,无论你有没有基础,你都可以自己去想一下,程序从哪里开始执行的?(当然,我们还是保留质疑)
拓展练习
我们在讲义中提到了 Makefile, 如果你觉得这次 Lab 很无聊,可以尝试学习下 怎么编写 Makefile, 让这个程序更加优雅地跑起来,当然,你也可以随意添加自己的功能。