Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

czy #110

Open
wants to merge 45 commits into
base: master
Choose a base branch
from
Open

czy #110

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
26ccaa5
Adjust content for DynamicX 2021 autumn
MuZhou233 Oct 13, 2021
f937f24
Adjust for github pages
MuZhou233 Oct 13, 2021
9df45a1
Adjust for github pages
MuZhou233 Oct 13, 2021
cc926e2
Fix url
MuZhou233 Oct 13, 2021
d92fccb
Update course-shell
MuZhou233 Oct 13, 2021
bf9c931
Fix url
MuZhou233 Oct 13, 2021
2ea1447
Update editors
MuZhou233 Oct 17, 2021
548aca1
Update
MuZhou233 Oct 19, 2021
71c12f7
fix url
MuZhou233 Oct 19, 2021
9889ea5
Update
MuZhou233 Oct 21, 2021
088d5c1
Update
MuZhou233 Oct 23, 2021
74d9db0
Update
MuZhou233 Oct 23, 2021
6c344b9
update
MuZhou233 Oct 30, 2021
d79d25d
Update
MuZhou233 Oct 31, 2021
3e2d624
update
MuZhou233 Nov 3, 2021
9c03ac2
Create 2021-finalproject.yml
MuZhou233 Nov 4, 2021
daadf38
Update 2021-finalproject.yml
MuZhou233 Nov 4, 2021
ca6d27b
Update README.md
MuZhou233 Nov 4, 2021
b4ac049
Create REDEME.md
Mrnmm Nov 4, 2021
5e7c281
Create 2021-finalproject
Mrnmm Nov 5, 2021
175d9a7
Create REDEME.md
Mrnmm Nov 6, 2021
625f1ef
Create dfd
Mrnmm Nov 6, 2021
7310c19
Change finalproject folder name
MuZhou233 Nov 7, 2021
836fabd
Create a git homework.
Mrnmm Nov 8, 2021
dc6be95
shell
Mrnmm Nov 8, 2021
3eca021
xiaoguotu
Mrnmm Nov 8, 2021
9985f85
Git
Mrnmm Nov 8, 2021
25b6f8b
Git
Mrnmm Nov 8, 2021
c5561b3
1
Mrnmm Nov 8, 2021
5b7a0a7
create
Mrnmm Nov 8, 2021
77ba07c
Homework of 2021-finalproject (#47)
TNTksals Nov 8, 2021
362278c
LYD's homework (#23)
LYD-cubing Nov 9, 2021
3ed04d6
chenhuiYu00-2021-finalproject (#9)
chenhuiYu00 Nov 9, 2021
cbdd73d
irvingskr-2021-finalproject (#17)
irvingskr Nov 9, 2021
cdce402
Merge branch 'gdut-dynamic-x:master' into master
Mrnmm Nov 10, 2021
e9b0c5f
Create a git.md
Mrnmm Nov 10, 2021
84cf776
git picture
Mrnmm Nov 10, 2021
22be810
Homework for 2021-finalproject (#36)
SparkChen927 Nov 10, 2021
5753917
Git
Mrnmm Nov 10, 2021
a1239b4
REDEME.md
Mrnmm Nov 10, 2021
7ace801
check enviroment
Mrnmm Nov 10, 2021
eaf2dae
check environment
Mrnmm Nov 10, 2021
a28cc2c
Create picture.md
Mrnmm Nov 10, 2021
4d63517
Merge branch 'gdut-dynamic-x:master' into master
Mrnmm Nov 10, 2021
850e038
README.md
Mrnmm Jul 8, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .github/workflows/2021-finalproject.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# This is a basic workflow to help you get started with Actions

name: path-check

# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the master branch
pull_request:
branches: [ master ]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
check:
if: contains(github.event.pull_request.labels.*.name, '2021-finalproject')
# The type of runner that the job will run on
runs-on: ubuntu-latest

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2

- uses: dorny/paths-filter@v2
id: changes
with:
filters: |
src:
- '!(_2021-finalproject/**)'
# run only if some file in 'src' folder was changed
- if: steps.changes.outputs.src == 'true'
run: exit 1
1 change: 1 addition & 0 deletions 2021-finalproject/2021-finalproject
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
xzXXZx
Binary file added 2021-finalproject/Mrnmm/1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added 2021-finalproject/Mrnmm/2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added 2021-finalproject/Mrnmm/3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added 2021-finalproject/Mrnmm/4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions 2021-finalproject/Mrnmm/Git.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# 1.
1.使用git reset HEAD +文件名的指令,可以把暂存区的修改撤销,在用git restore撤销指定文件的修改。
2.使用git checkout --<file>,可以把从暂存区撤销回来的同时,也可以把文件的修改也撤回。
# 2.
1.使用git reset --hard HEAD^
2.使用git reset --hard + commit ID
3.使用git revert -n 版本号
# 3.
1.使用git merge
2.使用git rebase

![avatar](1.png)
![avatar](2.png)
![avatar](3.png)
![avatar](4.png)

8 changes: 8 additions & 0 deletions 2021-finalproject/Mrnmm/REDEME.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# 总结
经过了几个星期的先导课程,是时候给这段时间的学习做一个总结了。
在这门课的学习中,我是保持着十分积极的态度去对待,我会去上每一节的课,认真听师兄师姐们传授知识,在看他们使用命令示范的同时,我也会在下面跟着节奏去打各种命令,虽然有时对于一个命令的用法比较模糊,
不过我会在课后去对这个命令进行详细学习,使自己能够掌握命令的用法。在命令的学习方面,我有时会去自己查找相应资料学习,因为课上时间比较有限,更多是靠自己课下去努力掌握。对于课后布置的作业,我会去认
真完成,对于加分题目,我是报着努力争取的心态,不会因为它们困难,而准备放弃,每一次的作业我都会及时提交,不会拖拖拉拉。
对于这门课的学习细节,我学习了一些常用的命令还有学会怎么使用编辑器 vim 等,对于一些常用的命令和 vim 的使用,我感觉自己掌握程度是比较好的。除此之外,我还学会了怎么去运行一个脚本,有时一个脚本运
行需要权限等,经过学习我不局限只用一种方法去解决。我学习了有关与 git 的知识,还有密码学等,这些知识的学习充实了我的技能知识。
总而言之,这几个星期的先导课,让我受益匪浅。我相信我会在今后学习中继续努力的。
4 changes: 4 additions & 0 deletions 2021-finalproject/Mrnmm/homework_lujjin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
https://github.com/Mrnmm/missing-semester/blob/master/2021-finalproject/Mrnmm/1.png
https://github.com/Mrnmm/missing-semester/blob/master/2021-finalproject/Mrnmm/2.png
https://github.com/Mrnmm/missing-semester/blob/master/2021-finalproject/Mrnmm/3.png
https://github.com/Mrnmm/missing-semester/blob/master/2021-finalproject/Mrnmm/4.png
1 change: 1 addition & 0 deletions 2021-finalproject/REDEME.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
111
1 change: 1 addition & 0 deletions 2021-finalproject/dfd
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ddff
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# The Missing Semester of Your CS Education

czy
Website for the [The Missing Semester of Your CS Education](https://missing.csail.mit.edu/) class!

[中文站点](https://missing-semester-cn.github.io)(<span style="float:right"><img src = "https://img.shields.io/badge/最近一次与英文版同步-2021--04--24-green"></span>)
Expand Down
57 changes: 35 additions & 22 deletions _2020/command-line.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: lecture
title: "命令行环境"
date: 2020-01-21
date: 2021-10-23
ready: true
sync: true
syncdate: 2021-04-24
Expand All @@ -13,6 +13,15 @@ solution:
url: command-line-solution
---

# 开课注解

*本节与[数据整理](../data-wrangling)在同一节线下课讲授*

线下课大纲
![](../files/data-wrangling-command-line.png)

# 介绍

当您使用 shell 进行工作时,可以使用一些方法改善您的工作流,本节课我们就来讨论这些方法。

我们已经使用 shell 一段时间了,但是到目前为止我们的关注点主要集中在使用不同的命令上面。现在,我们将会学习如何同时执行多个不同的进程并追踪它们的状态、如何停止或暂停某个进程以及如何使进程在后台运行。
Expand Down Expand Up @@ -433,40 +442,28 @@ Host *.mit.edu


# 课后练习
[习题解答]({{site.url}}/{{site.solution_url}}/{{page.solution.url}})

[原习题解答]({{site.url}}/{{site.solution_url}}/{{page.solution.url}})

**标记为「选做」的题目不要求完成且不计分**

## 任务控制

1. 我们可以使用类似 `ps aux | grep` 这样的命令来获取任务的 pid ,然后您可以基于pid 来结束这些进程。但我们其实有更好的方法来做这件事。在终端中执行 `sleep 10000` 这个任务。然后用 `Ctrl-Z` 将其切换到后台并使用 `bg`来继续允许它。现在,使用 [`pgrep`](https://www.man7.org/linux/man-pages/man1/pgrep.1.html) 来查找 pid 并使用 [`pkill`](https://www.man7.org/linux/man-pages/man1/pgrep.1.html) 结束进程而不需要手动输入pid。(提示:: 使用 `-af` 标记)。

2. 如果您希望某个进程结束后再开始另外一个进程, 应该如何实现呢?在这个练习中,我们使用 `sleep 60 &` 作为先执行的程序。一种方法是使用 [`wait`](http://man7.org/linux/man-pages/man1/wait.1p.html) 命令。尝试启动这个休眠命令,然后待其结束后再执行 `ls` 命令。
2. 「选做」如果您希望某个进程结束后再开始另外一个进程, 应该如何实现呢?在这个练习中,我们使用 `sleep 60 &` 作为先执行的程序。一种方法是使用 [`wait`](http://man7.org/linux/man-pages/man1/wait.1p.html) 命令。尝试启动这个休眠命令,然后待其结束后再执行 `ls` 命令。

但是,如果我们在不同的 bash 会话中进行操作,则上述方法就不起作用了。因为 `wait` 只能对子进程起作用。之前我们没有提过的一个特性是,`kill` 命令成功退出时其状态码为 0 ,其他状态则是非0。`kill -0` 则不会发送信号,但是会在进程不存在时返回一个不为0的状态码。请编写一个 bash 函数 `pidwait` ,它接受一个 pid 作为输入参数,然后一直等待直到该进程结束。您需要使用 `sleep` 来避免浪费 CPU 性能。

## 终端多路复用

1. 请完成这个 `tmux` [教程](https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/) 参考[这些步骤](https://www.hamvocke.com/blog/a-guide-to-customizing-your-tmux-conf/)来学习如何自定义 `tmux`。

## 别名

1. 创建一个 `dc` 别名,它的功能是当我们错误的将 `cd` 输入为 `dc` 时也能正确执行。
2. 执行 `history | awk '{$1="";print substr($0,2)}' | sort | uniq -c | sort -n | tail -n 10` 来获取您最常用的十条命令,尝试为它们创建别名。注意:这个命令只在 Bash 中生效,如果您使用 ZSH,使用`history 1` 替换 `history`。


## 配置文件
让我们帮助您进一步学习配置文件:

1. 为您的配置文件新建一个文件夹,并设置好版本控制
2. 在其中添加至少一个配置文件,比如说您的 shell,在其中包含一些自定义设置(可以从设置 `$PS1` 开始)。
3. 建立一种在新设备进行快速安装配置的方法(无需手动操作)。最简单的方法是写一个 shell 脚本对每个文件使用 `ln -s`,也可以使用[专用工具](https://dotfiles.github.io/utilities/)
4. 在新的虚拟机上测试该安装脚本。
5. 将您现有的所有配置文件移动到项目仓库里。
6. 将项目发布到GitHub。



## 远端设备

进行下面的练习需要您先安装一个 Linux 虚拟机(如果已经安装过则可以直接使用),如果您对虚拟机尚不熟悉,可以参考[这篇教程](https://hibbard.eu/install-ubuntu-virtual-box/) 来进行安装。
「加分」进行下面的练习需要您先安装一个 Linux 虚拟机(如果已经安装过则可以直接使用),如果您对虚拟机尚不熟悉,可以参考[这篇教程](https://hibbard.eu/install-ubuntu-virtual-box/) 来进行安装。

1. 前往 `~/.ssh/` 并查看是否已经存在 SSH 密钥对。如果不存在,请使用`ssh-keygen -o -a 100 -t ed25519`来创建一个。建议为密钥设置密码然后使用`ssh-agent`,更多信息可以参考 [这里](https://www.ssh.com/ssh/agent);
2. 在`.ssh/config`加入下面内容:
Expand All @@ -481,5 +478,21 @@ Host vm
1. 使用 `ssh-copy-id vm` 将您的 ssh 密钥拷贝到服务器。
2. 使用`python -m http.server 8888` 在您的虚拟机中启动一个 Web 服务器并通过本机的`http://localhost:9999` 访问虚拟机上的 Web 服务器
3. 使用`sudo vim /etc/ssh/sshd_config` 编辑 SSH 服务器配置,通过修改`PasswordAuthentication`的值来禁用密码验证。通过修改`PermitRootLogin`的值来禁用 root 登录。然后使用`sudo service sshd restart`重启 `ssh` 服务器,然后重新尝试。
4. (附加题) 在虚拟机中安装 [`mosh`](https://mosh.org/) 并启动连接。然后断开服务器/虚拟机的网络适配器。mosh可以恢复连接吗?
5. (附加题) 查看`ssh`的`-N` 和 `-f` 选项的作用,找出在后台进行端口转发的命令是什么?
4. 在虚拟机中安装 [`mosh`](https://mosh.org/) 并启动连接。然后断开服务器/虚拟机的网络适配器。mosh可以恢复连接吗?
5. 查看`ssh`的`-N` 和 `-f` 选项的作用,找出在后台进行端口转发的命令是什么?

## 终端多路复用

1. 「选做」请完成这个 `tmux` [教程](https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/) 参考[这些步骤](https://www.hamvocke.com/blog/a-guide-to-customizing-your-tmux-conf/)来学习如何自定义 `tmux`。

## 配置文件
「选做」让我们帮助您进一步学习配置文件:

1. 为您的配置文件新建一个文件夹,并设置好版本控制
2. 在其中添加至少一个配置文件,比如说您的 shell,在其中包含一些自定义设置(可以从设置 `$PS1` 开始)。
3. 建立一种在新设备进行快速安装配置的方法(无需手动操作)。最简单的方法是写一个 shell 脚本对每个文件使用 `ln -s`,也可以使用[专用工具](https://dotfiles.github.io/utilities/)
4. 在新的虚拟机上测试该安装脚本。
5. 将您现有的所有配置文件移动到项目仓库里。
6. 将项目发布到GitHub。


28 changes: 20 additions & 8 deletions _2020/course-shell.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: lecture
title: "课程概览与 shell"
date: 2020-01-13
date: 2021-10-16
ready: true
sync: true
syncdate: 2021-04-24
Expand All @@ -13,6 +13,15 @@ solution:
url: course-shell-solution
---

# 开课注解

线下课需要携带电脑,没有来得及安装 Linux 的:
- Windows 可以暂时安装 WSL 使用
- MacOS 可以暂时用系统的 shell

线下课大纲
![](../files/course-shell.png)

# 动机

作为计算机科学家,我们都知道计算机最擅长帮助我们完成重复性的工作。
Expand Down Expand Up @@ -244,29 +253,32 @@ $ echo 1 | sudo tee /sys/class/leds/input6::scrolllock/brightness
在下一场讲座中,我们会探讨如何利用 shell 及其他工具执行并自动化更复杂的任务。

# 课后练习
[习题解答]({{site.url}}/{{site.solution_url}}/{{page.solution.url}})
本课程中的每节课都包含一系列练习题。有些题目是有明确目的的,另外一些则是开放题,例如“尝试使用 X 和 Y”,我们强烈建议您一定要动手实践,用于尝试这些内容。
此外,我们没有为这些练习题提供答案。如果有任何困难,您可以发送邮件给我们并描述你已经做出的尝试,我们会设法帮您解答。
[原习题解答]({{site.url}}/{{site.solution_url}}/{{page.solution.url}})

本课程中的每节课都包含一系列练习题。有些题目是有明确目的的,另外一些则是开放题,例如“尝试使用 X 和 Y”,我们强烈建议您一定要动手实践,勇于尝试这些内容。
~~此外,我们没有为这些练习题提供答案。如果有任何困难,您可以发送邮件给我们并描述你已经做出的尝试,我们会设法帮您解答。~~ 你可以在答疑群中提问。

提交作业能够展现你掌握了下面的内容即可,不需要完全遵循下面的顺序或操作。


0. 本课程需要使用类Unix shell,例如 Bash 或 ZSH。如果您在 Linux 或者 MacOS 上面完成本课程的练习,则不需要做任何特殊的操作。如果您使用的是 Windows,则您不应该使用 cmd 或是 Powershell;您可以使用[Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/)或者是 Linux 虚拟机。使用`echo $SHELL`命令可以查看您的 shell 是否满足要求。如果打印结果为`/bin/bash`或`/usr/bin/zsh`则是可以的。
0. 本课程需要使用类Unix shell,例如 Bash 或 ZSH。 ~~如果您在 Linux 或者 MacOS 上面完成本课程的练习,则不需要做任何特殊的操作。如果您使用的是 Windows,则您不应该使用 cmd 或是 Powershell;您可以使用[Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/)或者是 Linux 虚拟机。~~ (要求只能在 Linux 上面完成练习。)使用`echo $SHELL`命令可以查看您的 shell 是否满足要求。如果打印结果为`/bin/bash`或`/usr/bin/zsh`则是可以的。
1. 在 `/tmp` 下新建一个名为 `missing` 的文件夹。
2. 用 `man` 查看程序 `touch` 的使用手册。
3. 用 `touch` 在 `missing` 文件夹中新建一个叫 `semester` 的文件。
4. 将以下内容一行一行地写入 `semester` 文件:
```
#!/bin/sh
curl --head --silent https://missing.csail.mit.edu
curl --head --silent https://gdut-dynamic-x.github.io
```
第一行可能有点棘手, `#` 在Bash中表示注释,而 `!` 即使被双引号(`"`)包裹也具有特殊的含义。
单引号(`'`)则不一样,此处利用这一点解决输入问题。更多信息请参考 [Bash quoting 手册](https://www.gnu.org/software/bash/manual/html_node/Quoting.html)

1. 尝试执行这个文件。例如,将该脚本的路径(`./semester`)输入到您的shell中并回车。如果程序无法执行,请使用 `ls` 命令来获取信息并理解其不能执行的原因。
2. 查看 `chmod` 的手册(例如,使用 `man chmod` 命令)

3. 使用 `chmod` 命令改变权限,使 `./semester` 能够成功执行,不要使用 `sh semester` 来执行该程序。您的 shell 是如何知晓这个文件需要使用 `sh` 来解析呢?更多信息请参考:[shebang](https://en.wikipedia.org/wiki/Shebang_(Unix))
3. 使用 `chmod` 命令改变权限,使 `./semester` 能够成功执行,不要使用 `sh semester` 来执行该程序。您的 shell 是如何知晓这个文件需要使用 `sh` 来解析呢?更多信息请参考:[shebang(国内不可访问)](https://en.wikipedia.org/wiki/Shebang_(Unix)) 或 [shebang](https://bash.cyberciti.biz/guide/Shebang)

4. 使用 `|` 和 `>` ,将 `semester` 文件输出的最后更改日期信息,写入主目录下的 `last-modified.txt` 的文件中

5. 写一段命令来从 `/sys` 中获取笔记本的电量信息,或者台式机 CPU 的温度。注意:macOS 并没有 sysfs,所以 Mac 用户可以跳过这一题。
5. 「加分」写一段命令来从 `/sys` 中获取笔记本的电量信息,或者台式机 CPU 的温度。~~注意:macOS 并没有 sysfs,所以 Mac 用户可以跳过这一题。~~

Loading