Shell

基本概念

  • shell俗称壳,为使用者提供使用界面,例如DOS下command以及后来的cmd.exe
  • shell分类
    1. 图形界面shell,提供友好的可视化界面,例如windows操作界面,Linux系统上的GNOME
    2. 命令行shell,通过键盘输入的方式调用应用程序,例如windows下的cmd.exe、windows powershell,Linux系统的Bourne Shell(sh)、Bourne Again shell ( bash)等
  • shell通过指令操作Kernel,Kernel又去操作计算机硬件

Git

  • 在windows下使用bash可以安装Git,此软件集成了大多数bash命令
  • 右键Git上边框空白处,会有Options选项可以进行基本设置
    1. Text设置:根据设置的字体大小,Git操作界面会随之变大变小
    2. Window设置:可以单独界面大小
  • 桌面右键会出现Git Bash Here,此功能可以快速访问被右键的文件夹,如果没有也可以通过主动添加的方式 http://blog.csdn.net/novav/article/details/53820443

Bash常见命令

  • 命令 [-options]  [参数],这是命令的基本形式
  • pwd (Print Working Directory) 查看当前目录
  • cd (Change Directory) 切换目录,如 $ cd e:
    1. $ cd e: 代表切换到e盘符下
    2. $ cd works 代表切换到e盘符下的works文件夹
    3. $ cd c:/user 代表切换到c盘符下的user文件夹
    4. $ cd .. 代表切换到上一级目录,一个点代表当前目录,两个点代表上一级目录
  • ls (List) 查看当前目录下内容,如 $ ls -a
    1. $ ls images,这表示查看当前工作目录下的images文件夹的内容,需要注意这并没有切换目录
    2. 查看目录下内容有时候会多出两个隐藏的文件夹 $RECYCLE.BIN/ 和 System Volume Information/ 这个我们不需要去管它
    3. $ ls -a 代表查看当前工作目录的所有内容,其中包括隐藏目录,还有./ 和 ../ ,这都不用管它
    4. $ ls -l  代表以列表形式查看当前工作目录的内容,详细列表包括权限、文件大小、创建时间、文件名称,文件总数
    5. $ ls -a -l 代表以上综合,还可以这样写$ ls -al
    6. $ ls -al images 代表查看images下的所有内容,而且是列表形式展现,注意images参数在最后
  • mkdir (Make Directory) 创建目录,如$ mkdir blog,也可以创建多个文件夹,中间用空格隔开,例如$ mkdir css js images
  • touch 创建文件,如$ touch index.html,也可以在目录下指定文件夹创建文件,例如$ mkdir js/app.js
  • cat 查看文件全部内容,如 $ cat index.html  
    1. more可以查看全部信息,但是windows下不支持
    2. less可以查看部分信息,例如$ less index.html,但是敲击键盘回车键或者空格可以往下继续查看剩余信息,键盘Q可以退出查看
  • rm (remove) 删除文件,如$ rm index.html
  • rmdir (Remove Directory) 删除文件夹,只能删除空文件夹,不常用,例如 $ rmdir css
  • rm -r 可以删除文件夹下的所有文件,包括此文件夹,例如$ rm -r js,会删除js文件夹,即使文件夹内有内容,-r是递归的意思
  • mv (move) 移动文件或重命名,如 mv index.html ./demo/index.html

    1. $ mv index.html images/index.html 第一个参数是被剪切的文件,第二个参数是移动到哪里,中间用空格隔开
    2. $ mv index.html images/mo.html,在剪切到指定目录下的同时,也可以对原文件重命名
    3. $ mv index.html mo.html,剪切到当前,这完全就是重命名的操作
  • cp (copy) 复制文件,基本操作同上的mv,在复制过程中也对文件重命名
  • head 查看文件前几行,如$ head -n 5 index.html,也可以简写 $ head -5 index.html

  • tail 查看文件后几行 –n,如 $ tail -n 5 index.html、$ tail -5 index.html
  • tab 自动补全,连按两次会将所有匹配内容显示出来

  • history 查看操作历史 $ history

  • >和>>都是重定向的符号,可讲输出结果保存到指定目录下的文件中
    1. 定向的过程其实就输出的过程,好比我们$  ls 查看当前任务目录下的内容,它的结果会打印在当前界面
    2. $ ls > ../index.html,index.html中的内容将被输出的结果完全替换
    3. $ echo  i love you>>../index.html,会将输出的结果追加到index.html中
  • weget是下载的意思,但是windows不支持
  • tar是解压的意思,但是此指令无法解压zip和rar,有专门执行解压zip的指令unzip
  • curl网络请求,可以指定get请求还是post请求,以及参数,可以通过发送请求,将接收的数据重定向到指定文件中,例如$ curl http://www.baidu.com >> index.html
  • whoami查看当前用户 $ whoami
  • | 管道符可以将多个命令连接使用,上一次(命令)的执行结果当成下一次(命令)的参数。

  • grep 匹配内容,一般结合管道符使用,$ grep i index.html 在文件index.html中匹配有i的字符串,$ ls | grep i 在ls输出的结果中匹配有i的字符串

Vi编辑器

基本概念

  • 如同windows下的记事本,vi编辑器是linux下的标配,通过它我们对文件进行编辑
  • vi编辑器提供了三种模式,命令模式、插入模式、底行模式,每种模式下的操作的作用都不一样
    1. 命令模式主要是中转的作用
    2. 在命令行模式下输入i和a之后就会进入插入模式,此时可以对文件进行编辑
    3. 如果此时想去底行模式,那么就需要先esc进入命令行模式,再shift+:进入底行模式

基本使用

  • 命令模式
    1. i进入编辑模式,当前光标处插入
    2. a进入编辑模式,当前光标后插入
    3. A进入编辑模式,光标移动到行尾
    4. o进入编辑模式,当前行下面插入新行
    5. O进入编辑模式,当前行上面插入新行
    6. ZZ保存并退出
    7. u撤销操作,可多次使用
    8. dd删除当前行
    9. yy复制当前行
    10. p粘贴复制内容
    11. ctrl+f向前翻页
    12. ctrl+b向后翻页
  • 底行模式
    1. w保存,w index.html 是将文件另存为,此时当前文件并没有保存
    2. q退出
    3. wq保存并退出
    4. e!撤销更改并返回到上次保存的状态
    5. q!不保存强制退出
    6. set nu设置行号
    7. 编辑模式
  • 编辑模式下与windows编辑器相似

SSH

基本概念

  • SHH是一种网络传输协议,用于计算机之间的加密登录
  • SHH属于非对称性加密,需要两个密钥来进行加密和解密,分别是公钥和私钥

工作原理

  • 在第一次登录时,服务器会将公钥发送过来,我们通过这个公钥将自己的数据进行加密
  • 服务器接收数据后,通过自己的私钥对数据进行解密

基本操作

  • $ ssh student@192.168.0.1,git内提供了ssh命令,student是用户,ip地址是服务器的地址
  • 若是连接成功,会在用户目录下会多新建一个ssh文件夹,里面存储的就是服务器发来的公钥
  • 当我们根据提示要求输入密码的时候,就会根据公钥进行加密传输
  • 成功登录之后,我们可以进行操作,$ scp index.html student@192.168.0.1:/home/work,将本地的index.html文件复制到了服务器下的work目录

版本控制器

基本概念

  • 版本控制(Version  Control Systems)是记录若干文件变化,以便查阅特定版本修订的情况,这个系统可以自动帮我们备份文件的每一次更改,并且可以方便的恢复到任意版本的备份状态

版本分类

  • 本地版本控制系统,功能单一,现在很少使用,无法完成多人协同开发
  • 集中式版本控制系统,通过单一的集中管理的服务器达到多人协同开发,其代表就是SVN
  • 分布式版本控制系统,不需要中央服务器,每个协同开发者都有一个完整的版本库,这样即使协同开发者的服务器出现故障,也可以通过使用其他的协同开发人员的本地仓库恢复

git工作原理

基本概念

  • gi管理分为三种状态:已提交(committed)、已修改(modified),已暂存(staged),由此引入三个工作区域的概念:git仓库、工作目录、暂存区域
  • git仓库是用来保存项目的元数据和对象数据库的地方,从其他计算机克隆仓库的时候,就是从这里拷贝的数据
  • 工作目录是我们能看的见,是我们使用和修改的地方
  • 暂存区域是一个保存了我们将要提交的文件列表数据,一般在git仓库的目录下

工作流程

  • 在工作目录中修改文件
  • 将文件放入暂缓区域
  • 讲暂缓区域文件提交到git仓库

基本使用

  • 配置用户信息
    1. 配置用户信息的原因是记录开发者信息,以便在版本控制中记录开发者的操作行为
    2. $ git config --global user.name wqx 记录用户名
    3. $ git config --global user.email wqx0714@163.com 记录用户邮箱
    4. $ git config --list 查看配置信息中是否存储了用户的信息,也可以通过桌面查看用户的文件夹,里面会有.gitconfig的配置文件
    5. --global是配置当前用户所有仓库
    6. --system配置当前计算机上的所有用户的仓库
    7. 配置操作只需要一次,可以重复使用
  • 初始化仓库
    1. $ git init,在进入项目的根目录,例如work,执行$ git init,就会创建一个.git隐藏目录,可以通过$ ls -a 查看,这个.git目录就是仓库,会存储我们提交的各个历史版本的数据
  • 查看状态
    1. $ git status 会显示工作区域下文件的状态
    2. 在首次没有执行add命令,工作区域的文件会出现红色Untracked files(下图1),这些都是没有被跟踪的目录,此时这种状态下,你修改的文件是不会被跟踪的,所以我们需要先将工作区执行add操作
    3. $ git add -A 执行之后,执行status命令,上面红色文件就被显示绿色(下图2),表示已经在暂存区域可以被提交,此时再去修改文件就会显示此文件被修改
    4. 当我们再次在工作区域的根目录下创建一个文件夹时候,执行status命令,又会显示一个没有跟踪被红色标注的红色文件(下图3),注意文件夹若是空的git会直接忽略

  • 添加文件到缓存区
    1. $ git add -A  或者 $ git add * 都是文件提交到暂缓区的命令,也可以$ git add index.html 提交指定路径下的文件
    2. $ git checkout index.html 可以将缓存区的文件还原到工作区,达到撤销更改的目的
  • 提交文件
    1. $ git commit -m '备注信息' 可以将暂缓区的文件全部提交到仓库存储
    2. $ git log 可以查看之前提交仓库的信息,如下图
    3. $ git reset --hard 提交ID 可以回到之前保存的状态,再次$ git log会发现最后一次的状态变成了我们回退的状态
    4. 当我们第二天再去对工作区进行修改时,不需要进行add命令,因为之前已经提交了一个版本的数据
  • 忽略文件
    1. 一些文件可以不被跟踪,当然也可以不提交
    2. 在工作区根目录下创建.gitignore文件,在里面输入不需要跟踪的文件,注意格式是用回车换行隔开

git分支

基本概念

  • 在实际开发中,在我们专注于某一个功能比如支付功能进行开发时,可能还需要应急的去改动原来版本中的bug,或者应急的在原来版本添加一个小功能例如评论功能,现在我们已经在写支付功能当然是没写完,此时如果去应急修改完提交上去,也会把半半拉拉的支付功能的代码提交上去,这样显然是不合适,所以这里引出了git创建分支的概念,它能够解决一人多任务的问题
  • 在实际开发中,其实所有的提交都是在分支基础上提交的

基本使用

  • 在初始化仓库git init之后,至少提交commit一次,系统才会默认创建一个master的分支
  • git branch money,创建一个money分支,分支在原有版本的节点上创建的,称为子分支
  • git checkout money,切换分支,此时工作区就是在money这个分支上,工作区所有的修改会提交到money上
  • git branch 查看分支,带*号,表示此时工作目录处于对应分支上
  • git merge master 合并分支,在处于money分支的时候,执行此命令是将master的数据融合到money上
  • 需要注意的是money分值与master分支是继承关系,money分支上具有master分支上的所有存盘点
  • git branch -d money 删除money分支,-D是强制删除

git共享仓库

基本概念

  • 上面是本地的git操作,可以达到一人多任务的要求,但是多人协同该怎么办呢。比如自己和同事同时开发,但是同时写的是评论功能,自己写的是支付功能,当自己想要拿到同事的登录的时候应该怎么办呢?此时就引出了git共享仓库的概念,借助一个共享(远程)仓库,大家把自己开发的功能的代码放进去,别人需要的时候就可以去这个仓库拿。

基本使用

  • 共享仓库的创建,可以使用ssh,具体操作如上介绍,在公司服务器上创建一个.git结尾的文件夹,比如是work.git,之后执行git init --bare命令,这就创建了一个裸仓库
  • 假设自己电脑上有一个项目,我们init,add,commit之后,git push student@192.168.0.1:/home/work.git master 就将我们分支master发送到了共享仓库中,共享仓库中$ ls 是查看不到上传的文件的,只能让同事去取
  • 同事那边目前是还没有数据的,但是需要init,保证是一个空仓库,但是不需要add,commit操作,之后执行git pull student1@192.168.0.1:/home/work.git master,此时我们就拿到了student1上传的数据
  • 同事拿到了数据,发现只是初始化了项目,还没有功能,此时同事需要开发一个登录功能,于是git branch login 创建login分支(分支策略),之后切换到login分支,对工作区进行修改,最后add,commit,最后完成登录功能
  • git push student1@192.168.0.1:/home/work.git login 同事最后将开发好的登录功能上传到共享仓库,此时共享仓库又多了一个login的存盘点,必须是上传login分支,因为你只在login分支上进行了工作区的修改
  • git pull student1@192.168.0.1:/home/work.git login 自己从共享仓库中拿到了同事上传的login分支,login分支的数据替换了自己的master分支的数据
  • 长串的远程地址,可以用别名代替,git remote add ball student1@192.168.0.1:/home/student/work.git,下次再向共享仓库提交或者下载数据就用ball这个别名代替就行了

克隆

  • 接着上面的说,如果还有个同事也要参与这个项目,那么可以克隆clone方式
  • 执行git clone sudent1@192.168.0.1:/home/work.git 这里不需要init操作,结尾也不需要指定分支,此时这个同事就会拿到整个远程仓库的数据,而且工作区的目录就是work,所以clone操作就等于mkdir+cd目录下+git init+pull操作
  • 工作区根目录名称想要修改的话,只需要结尾后空格写上自己的命名就行了 git clone sudent1@192.168.0.1:/home/work.git selfname
  • 克隆后的数据,有个优势就是再次向共享仓库提交分支数据的时候,无需定义远程别名,系统默认设置origin就是远程地址,git push origin ..

Git——基本操作的更多相关文章

  1. Git基本操作和GtHub 特殊技巧

    <GitHub 入门与实践> 笔记 了解GitHub Git 和 GitHub 的区别 在Git中,开发者将源代码存入名为"Git仓库"的资料库中,并加以使用.而Git ...

  2. Git学习系列之Git基本操作拉取项目(图文详解)

    前面博客 Git学习系列之Git基本操作推送项目(图文详解) 当然,如果多人协作,或者多个客户端进行修改,那么我们还要拉取(Pull ... )别人推送到在线仓库的内容下来. 大神们是不推荐使用 pu ...

  3. Git学习系列之Git基本操作推送项目(图文详解)

    前面博客 Git学习系列之Git基本操作提交项目(图文详解) 如果完成到一定程度,那么可以推送到远端在线仓库. 推送之前,请确保你已经设置了全局的 user.name 和 user.email, 如果 ...

  4. Git学习系列之Git基本操作提交项目(图文详解)

    前面博客 Git学习系列之Git基本操作克隆项目(图文详解) 然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作, 实际情况可能是 使用 Ecl ...

  5. Git学习系列之Git基本操作克隆项目(图文详解)

    不多说,直接上干货! 想必,能进来看我写的这篇博文的朋友,肯定是了解过. 比如SVN的操作吧,最常见的是 检出(Check out ...), 更新 (Update ...), 以及 提交(Commi ...

  6. Git-Runoob:Git 基本操作

    ylbtech-Git-Runoob:Git 基本操作 1.返回顶部 1. Git 基本操作 Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比.本章将对有关创建与提交你的项目快照的命令作 ...

  7. 学习如何运用GitHub网站+出现的问题+Git基本操作总结

    首先介绍一下GitHub网站: github是一个基于git的代码托管平台. GitHub 拥有一个非常鼓励合作的社区氛围.这一方面源于 GitHub 的付费模式:私有项目需要付费,而公共项目完全免费 ...

  8. Git基本操作(Windows下)

    在开始使用Git之前,我觉得是很有必要了解下Git与其他版本控制系统的差异与文件在Git中的三种状态.可以到下面这个网站看下:Git详解之一 Git起步,了解之后,可以对Git的基本操作有一个更清晰的 ...

  9. git基本操作及上传代码到gitHub

    1.基本配置: 配置用户名:git config --global user.name" "; 配置邮箱:git config --global user.email " ...

随机推荐

  1. import与require的区别

    载入一个模块import() 与 require() 功能相同,但具有一定程度的自动化特性.假设我们有如下的目录结构:~~~app/app/classes/app/classes/MyClass.lu ...

  2. ios学习8_KVC和字典转模型

    Key Value Coding是cocoa的一个标准组成部分,它能让我们能够通过name(key)的方式訪问属性,某些情况下极大地简化了代码.可称之为cocoa的大招. 例如以下的样例: 使用KVC ...

  3. ShadowDOM

    HTML5 ShadowDOM & CustomElements KeKeMars 关注 2015.12.09 15:20* 字数 1239 阅读 1626评论 2喜欢 2 Web组件由四部分 ...

  4. VBS 操作Word

    VBS 操作Word   1.新建Word文档 '使用Add方法 Dim ObjWD,ObjDOC Set ObjWD=CreateObject("Word.application" ...

  5. 【Android】自己定义View

    翻译自:http://developer.android.com/training/custom-views/index.html 一)创建view类 一个设计良好的自己定义view与其它的类一样.它 ...

  6. neo4j 张一鸣 8

    头条关注 粉丝关系 张一鸣 8

  7. VMware14秘钥

    VMware虚拟机已升级至14版本,之前的12版本的秘钥已经无法使用,在此分享一下VMware Workstation 14永久激活密钥: CG54H-D8D0H-H8DHY-C6X7X-N2KG6 ...

  8. beego4---web项目结构

    app.conf appname = blog1 httpport = runmode = dev controllersmy package controllersmy //跟外面的包名一致 imp ...

  9. LightTable的结构(一)

    LightTable使用clojurescript来生成js,然后使用 node-webkit 来处理UI clojurescript非常适合做抽象程度很高的页面和编辑逻辑结构设计, 最近会对整体进行 ...

  10. xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is

    method: select Xcode version in Command Line Tools in Location(Click Xcode and then Preferences) Bef ...