Bash,Vim,gdb&git常用命令
Bash
| 目录 |
pwd //查看当前目录 rm -r dir 删除目录 cp -r dir1 dir2 复制目录 |
| 文件信息 |
ll –t //列出详细信息,按时间排序 wc -l *.txt //看文件行数 du -sm * | sort -n //统计当前目录下文件及文件夹大小(以M为单位),并按大小排序 touch test1.cpp test2.cpp //将每个文件的访问时间和修改时间改为当前时间 Change the mode of each FILE to MODE. |
| 文件内容 |
cat file //看文件内容 |
| 压缩文件 |
tar –f 生成文件 目标文件 tar -f archive.tar foo bar # 从文件 foo 和 bar 创建归档文件 archive.tar。 tar -zf archive.tar.gz foo bar # 从文件 foo 和 bar 创建归档文件 archive.tar.gz。 *.gz gzip程序压缩的文件 *.bz2 bzip2程序压缩的文件(比gzip效果好,但只能针对一个文件来压缩) *.tar tar程序打包的数据,没有压缩(使用tar打包成一个文件,可以解决bzip2不能压缩多个文件的问题) *.tar.gz tar程序打包的数据,并经过gzip的压缩 *.tar.bz2 tar程序打包的数据,并经过bzip2的压缩 zip -r ./src.zip ./* 压缩文件 unzip text.zip -d . 解压到当前目录 unzip -v text.zip 查看压缩文件目录,但不解压 bzip2 text.txt –f(orce) overwrite existing output files //压缩文件 |
| 拷贝文件 |
cp –i(nteractive) -r idirectory odirectory 拷贝文件夹i到文件夹o,覆盖前询问 sz和rz传小文件大概10kb/s还行,大文件太慢了 |
| 下载文件 | wget url 下载 -q 关闭输出 |
| 移动文件 | mv /usr/local/arm/arm/* /usr/local/arm/ |
| 管道 | ls | wc -l 将前一个命令的输出作为后一个命令的输入 |
| 流 |
> < 重定向 echo string >> file 追加文件 |
|
进程和任务 |
nohup cmd & 后台执行任务cmd jobs 查看(当前终端?不晓得)所有运行任务 ps x 查看所有进程信息 renice [-10,+10] -p pid 设置进程优先级-10最高 |
| grep |
egrep "Test|Best arg|Final Eval Result" letter/svm/* grep -r(ecursive) -(in)v(ert) -(line-)n(umber) string file 明确要求搜索子目录:grep -r grep magic /usr/src/linux/Documentation/* | less 许多输出,将其转到‘less’上阅读 grep -i pattern files :不区分大小写地搜索。默认情况区分大小写, grep -w pattern files :只匹配整个单词,而不是字符串的一部分 |
|
find |
find . -name '*.html' -exec grep 'mailto:' {} \; find \. -name \*.py -type f -exec echo {} \; 查找文件 find path -option [ -print -exec -ok ...] -mmin nmkdir |
| Shell命令行 |
tab // 补全 ctrl+l 清屏 history -n 100|grep svn //查找历史命令记录 ctrl+r svn //一直往前查找 ctrl+c 取消命令 |
|
其他 |
man MD5 man3 MD5 ln -s 软链接 source target su 切换到root账户 |
Vim
| 退出 |
:q 退出 |
| 保存 |
:w 保存 |
| 插入 | :r filename 提取磁盘文件并将其插入到当前光标位置 o 在光标下方打开新的一行并将光标置于新开的行首,进入插入模式。 O 在光标上方打开新的一行并将光标置于新开的行首,进入插入模式。 a 可以在光标所在位置之后插入文本。 A 可以在光标所在行的行末之后插入文本。 |
|
复制粘贴 |
yy 复制 yw 复制单词 p 粘贴到下一行(将最后一次删除的内容置入光标之后) P 粘贴到上一行 |
| 删除 | x 删除 [number] d object || d [number] object dw 从当前光标当前位置直到单字/单词末尾,包括空格 de 从当前光标当前位置直到单字/单词末尾,不包括空格 d$ 从当前光标当前位置直到当前行末 dd 删除整个当前行 |
| 行尾 |
:%s/\n//g 删除换行符 J 连接该行与下行,删除行尾的换行符 :join 合并多行 |
| 撤销 | u 撤消最后执行的(一次)命令 U 撤消在一行中所做的改动 CTRL-r 欲撤消以前的撤消命令,恢复以前的操作结果 |
| 查找 |
/+字符串 在当前文件中查找该字符串 :set ic 忽略大小写ignore case |
| 替换 |
:s/old/new 本行首个替换(在一行内替换头一个字符串 old 为新的字符串 new ) |
| Insert模式 | r* 替换光标所在位置的字符 R*** 进入替换模式,直至按 <ESC> 键退出替换模式而进入正常模式。 [number] c object || c [number] object cw** 不仅仅是替换了一个单词,也让您进入文本插入状态 c$ 替换从当前光标当前位置直到当前行末 |
| 特殊字符 | :set list 显示以“$”表示的换行符和以“^I”表示的制表符 :set nolist 退出<list mode> |
| 信息 |
CTRL-g 页面最底部出现状态信息行,显示文件名、总行数、行号。 |
| 光标 |
G 使得当前光标直接跳转到文件最后一行 |
| 外部命令 | :!+shell命令 如:!rm filename |
| 可视化 |
ctrl+v 可视化 |
| 配置 |
Vim的功能特性要比vi多得多,但大部分功能都没有缺省激活。为了启动更多的功能,您得创建一个vimrc文件。 1. 开始编辑vimrc文件,这取决于您所使用的操作系统∶ :edit ~/.vimrc 这是Unix系统所使用的命令 2. 接着导入vimrc范例文件∶ :read $VIMRUNTIME/vimrc_example.vim 3. 保存文件,命令为∶ :write 在下次您启动vim的时候,编辑器就会有了语法高亮的功能。您可以继续把您喜 |
http://praxis.scholarslab.org/tutorials/bash/
gdb
调试:
g++ first.cpp -g
gdb a.out
只生成.o文件:
g++ first.cpp -c
gdb bin/svm_train_tool
set args train_demo.libsvm train_model
info func 显示所有的函数名称。
info local 显示当函数中的局部变量信息。
info prog 显示被调试程序的执行状态。
info var 显示所有的全局和静态变量名称。
重新编译需要make clean再make
GDB常用命令介绍与实例演示
b(reak)/r(un)/c(ontinue)/n(ext)/s(tep)/p(rint)
break test.c:34 if (x & y) == 1
break myfunc if i % (j + 3) != 0
break 44 if strlen(mystring) == 0
until
无参的until命令恢复程序的运行,并执行完循环的其余部分
until官方定义:执行程序,知道到达当前循环体外的下一行源代码
实际上,由于高级语言到机器语言在顺序上并不一定完全对应,until在到达内存地址比当前高的机器指令后就会停止
用法:
until [filename:]line_number
until [filename:]function
以上两种用法在到达指定的行号或者函数后即停止。
step:程序执行到断点时中断执行,可以用s指令进行单步执行进某一函数,如果已经进入了某函数,而想退出该函数返回到它的调用函数中,可使用命令finish
watch: 使你能监视一个变量的值而不管它何时改变, 当表达式的值被改变时GDB就使程序停止,还有rwatch是使程序暂停
clear:使用clear命令你可以删除指定位置的断点,如:clear FUNCTION, clear LINENUM,也可以使用delete命令通过断点号来指定要删去的断点或观察点,如果没有指定参数则删去程序中所有的断点
make: 使你能不退出gdb就可以重新产生可执行文件
kill: 终止正在调试的程序
shell:使你能不退出gdb就可以执行shell命令
info args ------------------>显示函数的参数名及值
(gdb) info b ----------------------->查看断点的设置信息
查看CORE信息与实例
bt:打印当前的函数调用栈的所有信息
f:n是栈中的层编号。比如:frame 1,表示栈的第二层
up:表示向栈的上面移动n层,可以不打n,表示向上移动一层
down:向栈的下面移动n层,可以不打n,表示向下移动一层
frame 或 f :会打印出这些信息,栈的层编号,当前的函数名,函数参数值,函数所在文件及行号,函数执行到的语句。
info f :这个命令会打印出更为详细的当前栈层的信息,只不过,大多数都是运行时的内内地址。比如:函数地址,调用函数的地址,被调用函数的地址,目前的函数是由什么样的程序语言写成的、函数参数地址及值、局部变量的地址等等。如:
info args:打印出当前函数的参数名及其值。
info locals:打印出当前函数中所有局部变量及其值。
info catch:打印出当前的函数中的异常处理信息
gdb example3 core.28543
(gdb) bt ------------------------>查看CORE信息
(gdb) f 1 ----------------------->切换到第一层frame
(gdb) info f -------------------->显示frame1的详细信息
(gdb) info args ------------------>显示函数的参数名及值
多线程程序夯住的检测与调试实例
info:用来显示你程序的状态,可通过help info查看较详细的帮助信息
attach:命令为attach?PID,这个命令把一个已经运行的进程(在gdb外启动)连接入gdb,以便调试。PID是进程号,当gdb接到attach命令后第一件事就是停止进程的运行
detach:与attach相对应,不多解释
thread:命令为thread?THREADNO,把线程号为THREADNO的线程设为当前线程。命令行参数THREADNO是gdb内定的线程号。
info threads:查看gdb内设置的线程号
thread apply THREADNO where:查看某个线程的属性
p pthread_mutex_t_name:可查看此锁目前的所属线程
借助gdb完成单元测试与实例
1通过set去设置变量的值,使被测程序在gdb内走期望内的分支
2通过what is 查看变量的属性
3通过set var设置变量的值
Git
http://cheat.errtheblog.com/s/git
https://help.github.com/articles/what-are-other-good-resources-for-using-git-or-github
| Set Up Git | git config --global user.name "Your Name Here" git config --global user.email "your_email@example.com" |
| Create A Repo | #mkdir ~/reponame #cd ~/reponame #git init touch test git add test #add this change to the git’s staging area. git status git add . #adding in all the changes to the files in the current directory and below git commit –m 'first commit' #git remote add origin http://github.com/username/reponame.git #git pull origin master git push origin master |
| Fork A Repo | git clone https://github.com/username/Yahoo_LDA.git #When a repository is cloned, it has a default remote called origin that points to your fork on GitHub, not the original repository it was forked from. git remote add upstream https://github.com/sudar/Yahoo_LDA.git git fetch upstream # Pulls in changes not present in your local repository, without modifying your files git merge upstream/master # Merges any changes fetched into your working files |
| Create Branches |
git branch mybranch |
| Installing Git HTML help |
sudo mkdir -p /usr/local/git/share/doc cd /usr/local/git/share/doc/git-doc |
| History |
git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short --pretty="..." defines the format of the output. |
| Aliases | Add the following to the .gitconfig file in your $HOME directory.
[alias] |
| Getting Old Versions |
git checkout <hash> |
|
git tag v1 |
|
|
UNDOING LOCAL CHANGES (BEFORE STAGING/ADDING) |
git checkout master |
|
UNDOING STAGED CHANGES (BEFORE COMMITTING) |
git reset HEAD hello.rb # This clears the staging area of the change we just staged.The reset command (by default) doesn’t change the working directory. |
from: http://www.cnblogs.com/wei-li/archive/2012/07/06/linux.html
Bash,Vim,gdb&git常用命令的更多相关文章
- git 常用命令使用,git bash通用命令
git 常用命令 1.强制推送(慎用,除非你认为其他冲突等可以丢弃 或者不是很重要) git push -- force 2.创建文件等小命令 touch a // 创建一个a文件 >> ...
- GIT常用命令备忘
Git配置 git config --global user.name "storm" git config --global user.email "stormzhan ...
- Git常用命令清单笔记
git github 小弟调调 2015年01月12日发布 赞 | 6收藏 | 45 5k 次浏览 这里是我的笔记,记录一些git常用和一些记不住的命令,这个笔记原本是基于 颜海镜的文章增加 ...
- git常用命令说明教程
git常用命令说明教程 git介绍 是一个分布式的,版本控制软件.每台使用git的电脑都是一个分版本库.svn是集中管理的. 安装git 一 git相关操作 1.官网下载最新版安装https://gi ...
- 团队开发工具git常用命令
Git 常用命令 Git配置 git config --global user.name "storm" git config --global user.email " ...
- git 常用命令行操作
git常用命令行操作: 点击 git bash 进入到命令行: git clone https://github.com/wlz1244/qingoo.git //下载一个master分支代码 g ...
- git 常用命令速查
git 常用命令速查 命令速查表 一.克隆项目 把远程仓库上的项目克隆到本地.一般来说项目是有1个或2个分支,主要是做开发和线上的区别.既然所属分支不一样,那命令也会有一点区别.这里假设是有2个分支, ...
- Git常用命令的使用方法
推荐一个比较好的GIT的教学地址,廖雪峰老师的git教程! 这里简述Git常用命令的使用方法: 一.初始化git 右键进入 Git Bash 1.建立身份信息 git config --global ...
- - Git常用命令 基础 总结 MD
目录 目录 Git常用命令 帮助 help 常用操作 初始化 clone init 提交 push 暂存 更新 撤销修改 分支 branch 查看分支 创建分支 切换分支 checkout 删除分支 ...
随机推荐
- 【LOJ】#2244. 「NOI2014」起床困难综合症
题解 写水题放松一下心情 二进制有个很好的性质是每一位是独立的,我们按位贪心,先看这一位能不能填1,然后看看如果这一位填0那么运算后最后这一位是不是1,是的话就退出,然后看看这一位如果填1最后是1这一 ...
- 【51nod】1564 区间的价值
题解 这个要注意到一个长度大的区间的最大价值一定比长度小的区间的价值要大 然后我们以每个点为最小值,显然区间越长最大值越大,然后我们更新最大区间长度的取值,这个可以用单调栈求这个最小值能更新到的左右端 ...
- 牛客练习赛3 E - 绝对半径2051
链接:https://www.nowcoder.net/acm/contest/13/E来源:牛客网 题目描述
- iOS 9应用开发教程之ios9中实现按钮的响应
iOS 9应用开发教程之ios9中实现按钮的响应 IOS9实现按钮的响应 按钮主要是实现用户交互的,即实现响应.按钮实现响应的方式可以根据添加按钮的不同分为两种:一种是编辑界面添加按钮实现的响应:另一 ...
- iOS Sprite Kit教程之编写程序以及Xcode的介绍
iOS Sprite Kit教程之编写程序以及Xcode的介绍 Xcode界面介绍 一个Xcode项目由很多的文件组成,例如代码文件.资源文件等.Xcode会帮助开发者对这些文件进行管理.所以,Xco ...
- Tkinter制作简单的python编辑器
想要制作简单的python脚本编辑器,其中文字输入代码部分使用Tkinter中的Text控件即可实现. 但是问题是,如何实现高亮呢?参考python自带的编辑器:python27/vidle文件夹中的 ...
- BZOJ 3172 [Tjoi2013]单词 AC自动机Fail树
题目链接:[http://www.lydsy.com/JudgeOnline/problem.php?id=3172] 题意:给出一个文章的所有单词,然后找出每个单词在文章中出现的次数,单词用标点符号 ...
- Spring的优点
Spring的优点 1.低侵入式设计,代码污染极低: 2.独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺: 3.Spring的DI机 ...
- bzoj1503 Splay 维护名次数,支持删除
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1503 题解: 维护一颗Splay和一个外部变量,树中每个节点表示一个人,节点权值a + 外部变 ...
- setTimeout 第一个参数类型
读别人代码的时候看到这么一段,很不理解,然后就搜了一下百度 setTimeout / setInterval 第一个参数可以有三种类型: 字符串 . methods . 匿名函数 1.字符串 ...