Linux下一些工具的基本使用

好久没有更新博客了,Evernote 上的笔记都很杂乱,一直没有空整理,过完年了,这几天准备慢慢整理出来几篇。

这篇其实就是笔记而已,都是一些常用的工具,主要是我记性不是很好,每次用都要查这个那个文档的,写下来加深记忆咯(尽量保持更新)。

git

git init //初始化本地代码库
git add . //加载文件,后面可以是以逗号分隔的多个文件
git commit -m "commit info" //提交代码到本地仓库
git status //查询 git 状态

git checkout -b branch_name //建立分支
git branch //查看分支
git checkout branch_name //切换分支
git branch -d branch_name //删除分支
git merge branch_name master //合并分支

git clone git_url //将远程代码库克隆到本地
git remote add origin git_url //定义远程服务
git fetch origin //抓取远程代码库的更新
git push origin master //推送到远程代码库

上面只是一些简单的用法,详细的说明可以看这里

pacman

//-S, --sync 同步
pacman -Sy //仅同步源
pacman -Su //更新系统
pacman -Ss pkg_name //搜索关于pkg_name的包
pacman -Si pkg_name //从数据库中搜索包pkg_name的信息
pacman -S pkg_name //安装包
pacman -Sc //清理旧包

//-Q, --query 查询
pacman -Q pkg_name //在本地包数据库搜索指定软件包
pacman -Qdt //找出孤立的包

//-R, --remove 移除
pacman -R pkg_name //删除pkg_name包
pacman -Rc pkg_name //删除pkg_name包和依赖pkg_name的包
pacman -Rsn pkg_name //删除pkg_name包所有不需要的依赖包并删除其配置文件

更加详细的说明参见这里

tar

tar -cvf tar_file.tar files //将files文件打包(并不压缩)
tar -xvf tar_file.tar //解包

详情请见这里

sed

sed 's/Tom/Peter/g' file_name //将文件file_name中的Tom全部(g)替换成Peter。
sed '/Tom/'d file_name //删除文件file_name中所有包含Tom的行
sed '3,6d' file_name //删除文件的第3至第6行。

关于 sed 的用法远远不止这些,详细的见这里

awk

awk -F: //指定分隔符为":"
awk '/key_word/{print $1"\t"$2}' file_name //匹配key_word并以一定格式输出相关内容
awk '$2=="Tom"{print $0}' workers //精确匹配并输出整行
awk 'BEGIN{A=0}{A=A+$1}END{print "A is: "A}' file_name //因为print是在END之后执行的,所以输出仅有一次

关于 awk 同样也有整整一本书的内容,详情请见这里

gdb

gcc -g sourcefile.c //在编译时加入调试信息

list n, m //列出从n行到m行的源代码,简写为 l
start //从程序开始处开始执行程序
run //从开头开始连续运行程序直到发生中断 ,简写为 r
step //单步执行(进入函数),简写为 s
next //单步执行(不进入函数),简写为 n
continue //运行到下一个断点,简写为 c
finish //运行到函数返回,并显示返回值
quit //退出 gdb,简写为 q

backtrace //查看函数调用的栈帧,简写为 bt
info //查看相关信息,简写为 i
info locals //查看所有局部变量的信息
print //打印变量的值(也可以改变变量的值),简写为 p
display //指定每次调试时都显示某个变量的值
undisplay //取消对先前通过display设置的变量的跟踪

info breakpoints //查看所有断点的信息
delete breakpoints //删除指定编号的断点
disable breakpoints //暂时禁用指定编号的断点
watch //设置观察点,简写为 w
info watchpoints //查看观察点的信息

详情请见这里