最近一直在忙项目的事情,文章更新少了,等过段时间不忙的了,给大家多更新点内容,喜欢的朋友可以持续关注更新哦!!
认识Shell
在计算机科学中,Shell俗称壳,用来区别于Kernel(核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
图形界面shell:通过提供友好的可视化界面,调用相应应用程序,如windows系列操作系统,Linux系统上的图形化应用程序GNOME、KDE等。
Linux 默认使用 bash 所以我们要学习的就是以Bash为基础的。
首先安装Git软件。它内置了bash.(百度搜索git,下载跟自己电脑匹配的git版本,比如32位操作系统,64位操作系统)
我们可以直接在里面进行命令操作。命令行shell:通过键盘输入特定命令的方式,调用相应的应用程序,如windows系统的cmd.exe、Windows PowerShell,Linux系统的Bourne shell ( sh)、Bourne Again shell ( bash)等。
图解1
图解2 --> 这种黑框框就是所谓的命令行shell
bash常用命令
- 常见命令格式:命令 [-options] [参数]
- pwd (Print Working Directory) 查看当前目录
- cd (Change Directory) 切换目录,如 cd /etc
- ls (List) 查看当前目录下内容,如 ls -al
- mkdir (Make Directory) 创建目录,如 mkdir blog
- touch 创建文件,如 touch index.html
- wc (Word Count) 字数信息统计,如 wc index.html
- cat 查看文件全部内容,如 cat index.html
- more less 查看文件,如more /etc/passwd、less /etc/passwd
- rm (remove) 删除文件,如 rm index.html、rm -rf blog
- rmdir (Remove Directory) 删除文件夹,只能删除空文件夹,不常用
- mv (move) 移动文件或重命名,如 mv index.html ./demo/index.html
- cp (copy) 复制文件,cp index.html ./demo/index.html
- head 查看文件前几行,如 head -5 index.html
- tail 查看文件后几行 –n –f,如 tail index.html、tail -5 index.html
- tab 自动补全,连按两次会将所有匹配内容显示出来
- history 查看操作历史
- ssh 远程登录,如ssh root@gitlab.study.com
- (> 和 >>)重定向,如echo hello world! > README.md,>覆盖 >>追加
- wget 下载,如wget 要下载的文件地址
- tar 解压缩,如tar zxvf node-v4.4.0.tar.gz
- curl 网络请求,如curl '网络地址'
- who am i 查看当前用户
- | 管道符
- grep 匹配内容,一般结合管道符使用**
vi 编辑器
- vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在Linux上也有很多图形界面的编辑器可用,但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。
三种模式
- 命令模式
- 插入模式
- 底行模式
- 它们每一种模式下,操作的命令都是不一样的。各个模式可以进行切换。
图解
命令行模式命令
- 通过上图我们发现,输入模式是不能直接切换到末行模式的,必须要先切回到命令模式(按ESC键)
- ZZ(大写)保存并退出
- u辙销操作,可多次使用
- dd删除当前行
- yy复制当前行
- p 粘贴内容
- ctrl+f向前翻页
- ctrl+b向后翻页
- i进入编辑模式,当前光标处插入
- a进入编辑模式,当前光标后插入
- A进入编辑模式,光标移动到行尾
- o进入编辑模式,当前行下面插入新行
- O进入编辑模式,当前行上面插入新行
底行模式命令
- :w保存,:w filenme另存为
- :q退出
- :wq保存并退出
- :q! 不保存强制退出
- :e! 撤销更改,返回到上一次保存的状态
- :set nu 设置行号
SSH介绍
- SSH是一种网络协议,用于计算机之间的加密登录。
- 利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
- SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。
- SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
图解 -- > 加密和解密使用的是一样的密钥。
加密方式
对称加密
非对称加密
图解 -- > 为什么要加密
-
图解 -- > 对称加密
原理:就是在用户的密码后面再添加一个串,然后把串加密成一堆乱码.但是发送给服务器,服务器要想解密,必须拿到对应的那个串,但是在传输串的过程中,又有可能被拦截,只要有了这个串,就可以破解,所以对称加密并不是很安全
-
图解 -- > 非对称加密
原理:每台电脑中,公钥和私钥是不同的,但是一台电脑只有一对互相对应的公钥和私钥,只有自己电脑对应的那个公钥和私钥,才能解开.我们把自己的公钥发送给服务器,然后服务器再把自己的公钥发给我们,这样就可以免密登录了
版本控制
版本控制(Version Control Systems)版本控制(Revision control)是一种软体工程技巧,在开发的过程中,确保由不同人所编辑的同一档案都得到更新。
举例:我们通常都是手动的重命名一个文件进行备份的,index.html改成index1.html或者index.html.bak等形式,然后这种方式对于单个文件我们还能够管理,但是对于整个项目而言,就会成为噩梦了!!!
版本控制分为两种:
**集中式管理 **
**分布式管理 **
集中式管理
- 集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
图解
弊端
- 集中式版本控制系统最大的毛病就是必须联网才能工作。所有的版本都在一个服务器上面。 如果服务挂了, 所有记录的版本都了。
分布式管理
- 分布式版本控制系统,则不需要中央服务器,每个协同开发者都拥有一个完整的版本库,这么一来,任何协同开发者用的服务器发生故障,事后都可以用其它协同开发者本地仓库恢复。
** 图解 **
- 在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
- 分布式版本控制系统弥补了前面两种版本控制系统的缺陷,成为了版本控制的首选方案,其代表就是Git.
Git工作原理
- 为了更好的学习git,我们必须了解Git管理我们文件的三种状态
三种状态
- 已提交(committed)
- 已修改(modified)
- 已暂存(staged)
Git项目的三个工作区域
Git 的工作目录
暂存区域
以及本地仓库。
Git仓库: 目录是Git用来保护项目的原数据和对象数据库的地方,这是Git中最重要的部分,从其他计算机拷贝仓库时,拷贝的就是这里的数据
工作目录: 是对项目的某个版本独立提取出来的内容,这些从Git仓库的压缩数据库中提取出来的文件信息,放在本地供你使用和修改
暂存区域 : 是一个文件,保存了下次提交的文件列表信息,一般在Git仓库目录中,有时候也被称作'索引',不过一般还是叫做"暂存区域"
Git的工作流程
- 在工作目录中修改文件。
- 暂存文件,将文件的快照放入暂存区域。
- 提交更新,找到暂存区域的文件,将快照永久性存储到Git仓库目录。
图解
Git新用户配置
-
1.配置用户名,邮箱
git config --global user.name/user.email
图解
-
2.初始化仓库
git init
图解
-
3.查看文件状态
git status
图解
-
4.添加文件到暂存区
git add */-A
图解
-
5.提交文件到仓库当中
git commit -m"备注信息"
图解
-
6.查看所有版本信息
git log
图解
-
7.对文件进行修改时,再去查看状态会出现modified状态,此时需要再次把它提交到暂存区
git log
图解
- 8.修改完毕之后再次添加到暂存区,当再次提交到仓库时会生成一个新的sha值
图解
- 9.恢复历史
图解
10.每一次提交都会对应一个sha值
sha:589738e18edf818142854a50c3efe82c5cf34a1b 该版本是谁提交,提交日期。
到这里先把自己的Git帐号注册好,电脑上把基本配置设置好!下次更新的时候教大家怎么使用Git.Git是全世界最大的开源社区,这种东西是一定,必须要会的