学习任务
阅读「使用博客园进行学习」,并建立个人技术博
加入「课程答疑小组」,提问前请阅读「如何提问」
关注博客班级「2016-2017-2-《网络攻防技术》」
阅读「使用开源中国托管代码」并完成作业
在「实验楼」注册账号(注意体现学号信息)
学习「文献管理与信息分析」公开课,研究生必学
学习「极简博客园使用MarkDown介绍」,并用Markdown写博客
学习过程
第一部分
git 版本控制
首先我先说说自己对于版本管理的认识,一个最简单的开发团队,也许就两三个人,他们共同完成一个软件的开发。每个人都在修改、添加、删除着自己本地硬盘上的代码,当他们把这些代码汇总起来时,麻烦出现了。到底谁改了哪些文件,具体是文件里的哪部分被改动过?A的修改会不会把B的修改覆盖掉?汇总的工作变得很危险,需要非常小心,一旦出错后果不堪设想。显然此时,效率将会是无比的低下,如果某个地方出错,可能整个汇总工作就要重来一遍。这只是两三人的小团队,如果是几十人几百人的大团队呢?那将会是噩梦。
如果这个团队采用了版本控制。那么版本控制软件在每次提交的时候都会主动合并所有人的修改并解决可能发生的冲突。每个人手里一直都是汇总好的代码。当开发进行到一定阶段,可以直接拿去测试,不需要再有额外的工作来浪费时间。另外,你还可以知道,程序的某个Bug,是怎么出现的(被谁以及什么时候引入进来的)。
使用开源中国(码云)托管代码
打开码云:http://git.oschina.net/ 创建项目
项目地址: https://git.oschina.net/dkyliuhongyi/liuhongyi20169217
Windows下安装Git,到Git for Windows下载安装Windows 版git。Git for Windows提供Git Bash,Git GUI,以及与Windows CMD集成三种使用方式。推荐使用专有的Git Bash,安装时选择「Use Git from Git Bash only」,其他的按默认选项安装就行:
已安装好的Git bash:
第二部分
Linux基础入门
上学期我已经学习过Linux内核设计与实现,对于Linux基本操作已经比较熟悉了,虚拟机也寂静安装好了,这里不再累述。但是对于Linux操作的很多细节还不是很清楚,或者有些忘了,所以这周重新对Linux基础入门进行了重新学习,补充了一些自己对基础知识的不足,总结如下。
首先是一些Linux快捷键,往往我们会忽略这些细节,熟悉这些快捷键能提升效率。
Ctrl+d 键盘输入结束或退出终端
Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行
Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+a 将光标移至输入行头,相当于Home键
Ctrl+e 将光标移至输入行末,相当于End键
Ctrl+k 删除从光标所在位置到行末
Alt+Backspace 向前删除一个单词
Shift+PgUp 将终端显示向上滚动
Shift+PgDn 将终端显示向下滚动
在 Linux 环境中,如果你遇到困难,可以使用man 命令,它是Manual page的缩写。获得某个命令的说明和使用方式的详细介绍,通常情况下,man 手册里面的内容都是英文的,这就要求你有一定的英文基础。man 手册的内容很多,涉及了 Linux 使用过程中的方方面面,为了便于查找,是做了分册(分区段)处理的,在Research、UNIX、BSD、OS X 和 Linux 中,手册通常被分为8个区段,安排如下:
区段 说明
1 一般命令
2 系统调用
3 库函数,涵盖了C标准函数库
4 特殊文件(通常是/dev中的设备)和驱动程序
5 文件格式和约定
6 游戏和屏保
7 杂项
8 系统管理命令和守护进程
想要获得更详细的帮助,你还可以使用info命令,不过通常使用man就足够了。如果你知道某个命令的作用,只是想快速查看一些它的某个具体参数的作用,那么你可以使用--help参数,大部分命令都会带有这个参数,如:ls --help
接下来是对文件的基本操作:
1.新建
新建空白文件
使用 touch 命令创建空白文件,创建名为 test 的空白文件,因为在其他目录没有权限,所以需要先 cd ~ 切换回用户的 /home/shiyanlou 目录:
$ cd ~
$ touch test
新建目录
使用 mkdir(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性
创建名为"mydir"的空目录:
$ mkdir mydir
使用 -p 参数,同时创建父目录(如果不存在该父目录),如下我们同时创建一个多级目录(这在有时候安装软件,配置安装路径时非常有用)
$ mkdir -p father/son/grandson
2.复制
复制文件
使用cp(copy)命令复制一个文件或目录到指定目录。将之前创建的"test"文件复制到"/home/shiyanlou/father/son/grandson"目录中:
$ cp test father/son/grandson
复制目录
要成功复制目录需要加上-r或者-R参数,表示递归复制,就是说有点“株连九族”的意思:
$ cp -r father family
3.删除
删除文件
使用rm(remove files or directories)命令,删除一个文件或目录:
$ rm test
你如果想忽略这提示,直接删除文件,可以使用-f参数强制删除:
$ rm -f test
删除目录
跟复制目录一样,要删除一个目录,也需要加上-r或-R参数
$ rm -r family
4.移动文件与文件重命名
移动文件
使用mv(move or rename files)命令,移动文件(剪切)。将文件"file1"移动到"Documents"目录mv源目录文件
目的目录:
$ mv file1 Documents
重命名文件
将文件"file1"重命名为"myfile" mv 旧的文件名 新的文件名:
$ mv file1 myfile
5.查看文件
使用cat,tac和nl命令查看文件 这两个命令都是用来打印文件内容到标准输出(终端),其中cat为正序显示,tac倒序显示。
nl命令,添加行号并打印,这是个比cat -n更专业的行号打印命令。
文件权限
读权限,表示你可以使用 cat
所有者权限,这一点相信你应该明白了,至于所属用户组权限,是指你所在的用户组中的所有其它用户对于该文件的权限,比如,你有一个艾派德,那么这个用户组权限就决定了你的兄弟姐妹有没有权限使用它破坏它和占有它。
链接数
链接到该文件所在的 inode 结点的文件名数目(关于这个概念涉及到 Linux 文件系统的相关概念知识,不在本课程的讨论范围,感兴趣的用户可以自己去了解)。
文件大小
以 inode 结点大小为单位来表示的文件大小,你可以给 ls 加上 -lh 参数来更直观的查看文件的大小。
ls的其他命令
显示除了 '.'(当前目录),'..' 上一级目录之外的所有包含隐藏文件(Linux 下以 '.' 开头的文件为隐藏文件)
$ ls -A
查看某一个目录的完整属性,而不是显示目录里面的文件属性:
$ ls -Al
显示所有文件大小,并以普通人类能看懂的方式呈现:
$ ls -dl <目录名>
其中小 s 为显示文件大小,大 S 为按文件大小排序,若需要知道如何按其它方式排序,请使用“man”命令查询。
$ ls -AsSh