跳转至

作业0-熟悉github

作业内容

1生成一个 50000行的文件,每一行可以包含字母,数字,长度不限。

​ 按照字母顺序排序这个文件,输出所有的 unique行(只要输出 uniq行)

​ 按照数字来排序这个文件,输出所有的 unique行

​ 将上面的输出以覆盖写的方式重定向到一个文件中

​ 将上面的输出以追加写的方式重定向到一个文件中

2随便生成一个文件,我们想要在这个文件中做以下几件事

​ 找一个内容确定的字符串,比如"comp",并统计出现的次数

3测试一个 fork工作流

我的代码

#!/bin/bash
chmod +x ./work1.sh #add permisson to execute
rm strings
rm sort_by_ascii
rm sort_by_num
rm summ
rm strings2
for i in `seq 1000`; #50000 lines is too long to wait, choose 1000 lines
do 
    echo $RANDOM | md5sum | cut -c 1-9 ; #生成1000个9位的随机字符串
done >> strings
export LC_ALL=C
sort -d strings | uniq -u > sort_by_ascii
sort -n strings | uniq -u > sort_by_num
cat sort_by_ascii >> summ
cat sort_by_num >> summ

for i in `seq 666`; #generate a file randomly
do
    echo $RANDOM | md5sum | cut -c 1-9;
done >> strings2
grep -o "com" strings2 | wc -w  #统计生成的string2 中com出现的次数

运行截图

image-20260502230129120

image-20260502230111927

Fork 工作流的测试

在某个工作目录之下,先 git init初始化

接着 git config --global user.name "10211900416" 设置用户名

git config --global user.email "10211900416@stu.ecnu.edu.cn" 设置邮箱

然后git add xxxx 将xxxx添加到暂存区

然后git commit -m "first commit from 10211900416" 将暂存区文件添加到本地仓库

然后 git remote add origin https://gitea.shuishan.net.cn/10211900416/csapp.git #这里的git仓库地址就是打个比方。此处的操作建立了本地仓库和在线仓库的联系

然后 git pull --rebase origin master 将本地仓库与在线仓库同步

最后 git push -u origin master 将本地仓库的东西提交到了在线仓库

对于老师所给的仓库,我没有直接上传的权限,要先fork到自己的仓库列表(内容一致,但是所有者是我而不是老师), 然后按照上述操作将文件push到那个 fork后的仓库中。 最后, 回到老师的仓库,发起一个 pull request, 如果被接受,就发生了改变。

相关问题归档

1 fatal: remote origin already exists

在某个目录下不更换目录地址却要更换连接的远程仓库时,git remote add origin ……时出现了 fatal: remote origin already exists 错误

解决方法 先git remote rm origin

再输入 git remote add origin ……

2 ![rejected] master -> master(non-fast-forward)

Git push 后出现![rejected] master -> master(non-fast-forward) 产生这样的问题的原因时 git 仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。

解决方法 再git push -u origin master 之前git pull --rebase origin master 进行同步操作

3 Syntax error: "(" unexpected

运行shell脚本时,出现Syntax error: "(" unexpected 错误。这个与文件的权限有关系,因此只需要 chmod +x test.sh然后./test.sh即可正常运行

4 sort -d xxxx后并没有按预期一般严格地依据ancii值排序

先export LC_ALL=C 再 sort -d xxxx Linux中通过locale来设置程序运行的不同语言环境, locale 由ANSI C 提供支持。LC_ALL=C 的作用就是指定语言环境,使其使用该语言环境。