bash
shell
在计算机科学中,Shell俗称壳,用来区别于Kernel(核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
核是操作系统的内核,壳是介于用户和操作系统内核之间的桥梁
也就是说,用户可以通过壳来操作系统的内核
shell的分类
图形化shell
通过提供友好的可视化界面,调用相应应用程序 如: windows系列操作系统, Linux系统上的图形化应用程序GNOME、KDE等。
命令行shell
通过键盘输入特定命令的方式,调用相应的应用程序, 如: windows系统的cmd.exe、Windows PowerShell, Linux系统的Bourne shell ( sh)、Bourne Again shell ( bash)等。
bash
在window系统下使用bash,需要一个软件,这个软件模拟集成了bash大部分命令。是shell的一种,几乎所有的linux的系统都会提供bash
bash命令格式
命令 [-options] [参数]
查看帮助:命令 --help
bash常见的命令
|
|
vi编辑器
如同Windows下的记事本,vi编辑器是Linux下的标配,通过它我们可以创建、编辑文件。它是一个随系统一起安装的文本编辑软件。
三种模式
vi编辑器提供了3种模式,分别是普通模式、插入模式、命令模式,每种模式下用户所能进行的操作是不一样的。
普通模式
普通模式下面的命令
12345678910111213141516vi 文件路径 打开/创建文件i(insert) 进入编辑模式,当前光标处插入I(Insert) 在当前行之前插入o 进入编辑模式,当前行下面插入新行O 进入编辑模式,当前行上面插入新行a(append) 进入编辑模式,当前光标后插入A(Append) 进入编辑模式,光标移动到行尾ZZ 保存并退出yy 复制dd 删除当前行p 粘贴. 重复上一次的编辑操作u 辙销操作,可多次使用ctrl + r 反撤销ctrl + f 向前翻页trl + b 向后翻页
光标移动的命令
|
|
2.插入模式
3.命令模式
命令模式下面的命令
|
|
模式切换
普通模式 —> 插入模式
i / I / o / O / a / A插入模式 —> 普通模式
esc / ctrl + [普通模式 —> 命令模式
:命令模式 —> 普通模式
esc / ctlr + [插入模式 & 命令模式 之间的转换
必须先经过普通模式,再转换成命令模式
SSH
SSH是一种网络协议,用于计算机之间的加密登录。
SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的是OpenSSH,它是自由软件,应用非常广泛。
如果要在Windows系统中使用SSH,会用到另一种软件PuTTY,我们后面用到的Git客户也集成了SSH
格式:ssh user@host
user 代表真实存在的用户
host 代表要登录的远程计算机
常见有两种加密技术,分别是对称性加密和非对称性加密, SSH属于后者。
对称加密算法在加密和解密时使用的是同一个密钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥分别是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
工作原理
公钥和私钥是成对出现,可以通过ssh-keygen -t rsa来创建,既可以通过密钥来加密数据,也可以通过私钥来加密数据,如果是以公钥进行的数据加密,只能与之相对应的私钥才可以解密,相反如果以私钥进行的数据加密,则只能与之对应的公钥才可以将数据进行解密,这样就可以提高信息传递的安全性。
免密码登录(待定)
我们可以将本地机器上的公钥保存到特定的远程计算机上,这样当我们再次登录访问这台远程计算机时就可以实现免密码登录了。
1、ssh-keygen -t rsa会创建公钥和密钥(默认在用户目录/.ssh目录下)
2、ssh-copy-id user@host添加到对应远程主机的用户目录/.ssh目录下
3、也可以登录远程主机,进入到用户目录/.ssh目录下手动创建authorized_keys文件,并将自已的公钥粘入该文件。
版本控制工具 Version Control System (VCS)
是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 这个系统可以自动帮我们备份文件的每一次更改,并且可以非常方便的恢复到任意的备份(版本)状态。
本地版本控制工具 (WebStorm VCS)
版本库存储在本地
集中式版本控制工具 (SVN TFS VSS)
版本库存储在中央服务器,所有人都需要从服务器获取版本,修改之后要将版本提交到服务器
实际开发环境,一个项目通常是由多人协作共同完成的,如何让在不同终端上的开发者协同工作成了亟待解决的问题,集中式版本控制系统便应运而生了。它通过单一的集中管理的服务器,保存所有文件的修订版本,协同工作的开发者都通过客户端连到这台服务器,取出最新的文件或者提交更新。其代表为SVN
这种方式很好解决了多人协同开发的问题,但是也有一个弊端,如果集中管理的服务器出现故障,将会导致数据(版本)丢失的风险,另外协同开发者从集中服务器中更新数据时,严重依赖网络,如果网络不佳,也给开发带来诸多不便。
分布式版本控制工具 (Git)
分布式版本控制系统,则不需要中央服务器,每个协同开发者都拥有一个完整的版本库,这么一来,任何协同开发者用的服务器发生故障,事后都可以用其它协同开发者本地仓库恢复。
由于版本库在本地计算机,也便不再受网络影响了。如果要将本地的修改,推送给其它协同开发者,还需要一台共享服务器,所有开发者通过这台共享服务器同步和更新数据
布式版本控制系统弥补了前面两种版本控制系统的缺陷,成为了版本控制的首选方案。其代表就是Git。
git
Git管理我们文件的4种状态,
分别为未追踪(untracked)、已提交(committed)、已修改(modified)和已暂存(staged)
由此引入 Git 项目的3个工作区域的概念:Git 仓库、工作目录以及暂存区域。
Git仓库目录
是Git用来保存项目的元数据和对象数据库的地方。 这是Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
工作目录
是对项目的某个版本独立提取出来的内容。这些从Git仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
暂存区域
是一个文件,保存了下次将提交的文件列表信息,一般在Git仓库目录中。有时候也被称作“索引”(Index),不过一般说法还是叫暂存区域。
基本的Git工作流程如下:
1、在工作目录中修改文件。
2、暂存文件,将文件的快照放入暂存区域。
3、提交文件,找到暂存区域的文件,将快照永久性存储到Git仓库目录。
git的常用命令
|
|
git的分支
在我们的现实开发中,需求往往是五花八门的,同时开发个需求的情况十分常见,比如当你正在专注开发一个功能时,突然有一个紧急的BUG需要你来修复,这个时候我们当然是希望在能够保存当前任务进度,再去修改这个BUG,等这个BUG修复完成后再继续我们的任务。如何实现呢?
Git通过创建分支来解决实际开发中类似的问题。
|
|
tip: 通过git clone命令获取到的项目,会有一个默认的远程地址origin,这个origin中的地址就是clone命令执行的时候的那个地址!