#1. Linux终端常用命令

##1.1.1. 文件转码
一般转换编码都是用iconv命令来转换,命令格式如下

$iconv -f gb18030 -t utf-8 file1.txt > file2.txt

##1.1.2. 添加手册
发现乌班图还是有很多函数不全,只有一小部分pthread的函数,使用man -k pthread或apropos pthread可以查找到当前manpages中关于pthread的手册。安装manpages-posix-dev就可以了

1
2
$sudo apt-get install glibc-doc
$sudo apt-get install manpages-posix manpages-posix-dev

关机
sudo poweroff
sudo shutdown now -P

重启
sudo reboot

##1.1. 查看所写代码行数
当前目录下:

wc -l .c .h

当前目录及子目录:

find . -name .c |xargs wc -l
find . -name
.cpp | xargs wc -l
find . -name *.h |xargs wc -l

统计文件行数(单个文件):

wc -l file


#2. git常用命令

理解git里的三个区域概念非常重要。git里很多常用的命令都是围绕着这三个区域来做的。它们分别为:

  • working directory,也就是你所操作的那些文件
  • history,你所提交的所有记录,文件历史内容等等。git是个分布式版本管理系统,在你本地有项目的所有历史提交记录;文件历史记录;提交日志等等。
  • stage(index),暂存区域,本质上是个文件,也就是.git/index
  1. git clone
    eg: git clone git://github.com/XXX/XXX.git some_project (最后为仓库的地址)
    将’git://github.com/XXX/XXX.git’这个URL地址的远程版本库完全克隆到本地XXX目录下面

  2. git init
    初始化当前目录,初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中

  3. git status
    查看当前目录相应文件在git下的状态

  4. git commit
    提交当前工作空间的修改内容
    eg:git commit -m “update code”,提交的时候必须用-m来输入一条提交信息

  5. git add
    将当前更改或者新增的文件加入到git的索引中
    eg:git add test.c 就会增加test.c文件到git的索引中
    git add . —— 将当前所有的更改加入到git索引中

    staged files are files we have told git that are ready to be committed,暂存区域本质是一个文件,.git/index

1
2
3
4
5
6
git diff --staged //可以看到暂存区域的变化
//或者使用下面命令查看暂存区变化
git ls-files --stage
git reset filename //从history到stage 从提交记录回到暂存区
git checkout filename //从stage到work定directory

git区域和对象的交互

  1. git pull

    意思就是将远程的代码给拉到本地
    从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地
    eg:’git pull origin master 就是将origin这个版本库的代码更新到本地的master主枝

  2. git rm
    从当前的工作空间中和索引中删除文件
    eg:git rm test.c
    //删除git add的文件 目录要加上-r
    git rm –cached file1 //删除文件跟踪但不删除文件系统中的文件file1

  3. git push
    将本地commit的代码更新到远程版本库中(推送的远程的代码仓库中)
    eg:git push origin 就会将本地的代码更新到名为orgin的远程版本库中

    第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
    

第一次使用了-u 命令 以后只使用git push origin master即可

  1. git log , git diff , git reset –hard HEAD^

git log //用于查看提交的每个版本

git diff //用于查看提交的本版本的改变

在Git中,用HEAD表示当前版本也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向另一个提交版本的标签.

$ git reset –hard HEAD^

  1. 丢弃工作区的修改

    工作区有一个隐藏目录“.git”
    git add把文件添加进去,实际上就是把文件修改添加到暂存区
    git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支
    
  • 只是修改了文件.但是还没有git add 的时候

    git checkout – file可以丢弃工作区的修改(file是你需要撤销修改的文件名) 恢复到最后一次提交时候的状态

git checkout -- file命令中的“--”很重要,没有“--”,就变成了“创建一个新分支”的命令

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
  • 修改了文件,并且进行了git add

    命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区

用HEAD时,表示最新的版本

  1. 删除提交到git上的文件

要从版本库中删除该文件,那就用命令git rm删掉,并且commit

1
2
//删除某一类文件(包含文件夹中的)使用通配符:*和单引号
git rm '*.txt'
  1. 添加,修改,合并分支
1
2
3
4
5
6
7
git branch branchname
//改变分支
git checkout clean_up
//合并分支
git merge clean_up
//删除分支
git branch -d clean_up

#3. vim常用命令

##3.1. 字符串替换

:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

##3.2. 简单的光标移动

0 → 数字零,到行头
^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
$ → 到本行行尾
g_ → 到本行最后一个不是blank字符的位置。
/pattern → 搜索 pattern 的字符串(如果搜索出多个匹配,可按n键到下一个)

##3.3. 打开/保存/退出/改变文件

:e <path/to/file> → 打开一个文件
:w → 存盘
:saveas <path/to/file> → 另存为 <path/to/file>
:x, ZZ 或 :wq → 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)
:q! → 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算别的文件有更改。
:bn 和 :bp → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。(n到下一个文件)

##3.4. 分屏split 和 vsplit.

下面是主要的命令,可以使用VIM的帮助 :help split. 。

:split → 创建分屏 (:vsplit创建垂直分屏)
<C-w><dir> : dir就是方向,可以是 hjkl 或是 ←↓↑→ 中的一个,其用来切换分屏。
<C-w>_ (或 <C-w>|) : 最大化尺寸 (<C-w>| 垂直分屏)
<C-w>+ (或 <C-w>-) : 增加尺寸