我的linux

1.打包/解包

tar -zcvf  work.tar.gz work

z:.tar.gz 压缩   c:compress,仅打包 v:显示  f:file

z可以换成j, 压缩成tar.bz2格式的压缩包

仅仅打包和解压缩  gunzip xxx.gz gzip xxx

unzip work.zip

tar -xzvf  work.tar.gz


2. ps 命令:

  1. ps a 显示现行终端机下的所有程序,包括其他用户的程序。
  2. ps -A 显示所有程序。
  3. ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
  4. ps -e 此参数的效果和指定"A"参数相同。
  5. ps e 列出程序时,显示每个程序所使用的环境变量。
  6. ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
  7. ps -H 显示树状结构,表示程序间的相互关系。
  8. ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
  9. ps s 采用程序信号的格式显示程序状况。
  10. ps S 列出程序时,包括已中断的子程序资料。
  11. ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
  12. ps u 以用户为主的格式来显示程序状况。
  13. ps x 显示所有程序,不以终端机来区分。


3. 查找

    find / -name libgl.so

    grep text /home/rescue/workspace

    kill -s pid;一般先ps -aux  | grep name, 然后kill

    killall processname

    xkill运行后点击x程序即可

    ps -x 2>&1| grep 'clear3d'| grep '^[0-9]*' | sed 's,\([0-9]*\)[ \t].*,\1,'    查找特定进程号

    ps -A | grep clear3d | sed sed 's,\([0-9]*\)[ \t].*,\1,'    这个比上面的简洁多了,同样的功能


4. /etc/apt/sources.list 163的源

deb http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted 


5. vim 配置 ~/.vimrc

http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html

"my .vimrc
set nocompatible "关闭兼容模式
set nocompatible  "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限  
syntax enable "语法高亮
set nu "显示行号
set showcmd "显示命令
set hlsearch "高亮搜索
set ignorecase "搜索时忽略大小写
set showmatch "显示匹配的括号
set ai	"自动缩进
set si	"智能缩进
set tabstop=4 "tab转化为4个字符
set history=400 "默认记住的是20条历史记录
set autoread "外部文件被修改时,自动重新读取
set shortmess=atI   " 启动的时候不显示那个援助乌干达儿童的提示  
set go=             " 不要图形按钮  
autocmd InsertLeave * se nocul  " 用浅色高亮当前行  
autocmd InsertEnter * se cul    " 用浅色高亮当前行  
set showcmd         " 输入的命令显示出来,看的清楚些  
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}   "状态行显示的内容  
set laststatus=1    " 启动显示状态行(1),总是显示状态行(2)  
"代码补全 
set completeopt=preview,menu 
"从不备份  
set nobackup
"自动保存
set ruler                   " 打开状态栏标尺
set cursorline              " 突出显示当前行
set magic                   " 设置魔术
"编码设置
set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
"语言设置
set langmenu=zh_CN.UTF-8
set helplang=cn
" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\
" 高亮显示匹配的括号
set showmatch
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=1
" 显示中文帮助
if version >= 603
	set helplang=cn
	set encoding=utf-8
endif
"新建.c,.h,.sh,.py文件,自动插入文件头 
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
""定义函数SetTitle,自动插入文件头 
func SetTitle() 
	"如果文件类型为.sh文件 
	if &filetype == 'sh' 
		call setline(1,"\#########################################################################") 
		call append(line("."), "\# File Name: ".expand("%")) 
		call append(line(".")+1, "\# Author: rsq") 
		call append(line(".")+2, "\# mail: rsqmail@163.com") 
		call append(line(".")+3, "\# Created Time: ".strftime("%c")) 
		call append(line(".")+4, "\#########################################################################") 
		call append(line(".")+5, "\#!/bin/bash") 
		call append(line(".")+6, "") 
	else 
		call setline(1, "/*************************************************************************") 
		call append(line("."), "	> File Name: ".expand("%")) 
		call append(line(".")+1, "\# Author: rsq") 
		call append(line(".")+2, "\# mail: rsqmail@163.com") 
		call append(line(".")+3, "	> Created Time: ".strftime("%c")) 
		call append(line(".")+4, " ************************************************************************/") 
		call append(line(".")+5, "")
	endif
	if &filetype == 'cpp'
		call append(line(".")+6, "#include<iostream>")
		call append(line(".")+7, "using namespace std;")
		call append(line(".")+8, "")
	endif
	if &filetype == 'c'
		call append(line(".")+6, "#include<stdio.h>")
		call append(line(".")+7, "")
	endif
	"	if &filetype == 'java'
	"		call append(line(".")+6,"public class ".expand("%"))
	"		call append(line(".")+7,"")
	"	endif
	"新建文件后,自动定位到文件末尾
	autocmd BufNewFile * normal G
endfunc 
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"键盘命令
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"以后使用w find即可
nmap <leader>w :w!<cr>
nmap <leader>f :find<cr>

" 映射全选+复制 ctrl+a
map <C-A> ggVGY
map! <C-A> <Esc>ggVGY
map <F12> gg=G
" 选中状态下 Ctrl+c 复制
vmap <C-c> "+y
"去空行  
nnoremap <F2> :g/^\s*$/d<CR> 
"比较文件  
nnoremap <C-F2> :vert diffsplit 
"新建标签  
map <M-F2> :tabnew<CR>  
"列出当前目录文件  
map <F3> :tabnew .<CR>  
"打开树状文件目录  
map <C-F3> \be  
"C,C++ 按F5编译运行
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
	exec "w"
	if &filetype == 'c'
		exec "!g++ % -o %<"
		exec "! ./%<"
	elseif &filetype == 'cpp'
		exec "!g++ % -o %<"
		exec "! ./%<"
	elseif &filetype == 'java' 
		exec "!javac %" 
		exec "!java %<"
	elseif &filetype == 'sh'
		:!./%
	elseif &filetype == 'py'
		exec "!python %"
		exec "!python %<"
	endif
endfunc
"C,C++的调试
map <F8> :call Rungdb()<CR>
func! Rungdb()
	exec "w"
	exec "!g++ % -g -o %<"
	exec "!gdb ./%<"
endfunc

"自动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
":inoremap { {<CR>}<ESC>O
":inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)
	if getline('.')[col('.') - 1] == a:char
		return "\<Right>"
	else
		return a:char
	endif
endfunction
filetype plugin indent on 

6. 设置apt-get代理:

edit /etc/apt/apt.conf文件,加入一行

Acquire::http::Proxy "http://ip:port";

即可

7. ubuntu保持10.04使用传统gnome:

sudo apt-get install gnome-panel

8. 星际译王 

startdict http://abloz.com/huzheng/stardict-dic/zh_CN/  词典存储位置/usr/share/startdict/dict


9. 修改Linux命令行提示符路径提示:

编辑/etc/profile文件,在最后加上:export PS1='[\u@\h \W]\$ '即可。其中\u显示当前用户账号,\h显示当前主机名,\w显示当前完整工作路径(\W显示当前工作路径),\$显示'$'符号


10. 方便跨目录编译

#!/bin/sh
if [ $# -eq 0 ] 
then
    updir=".."
else
    updir=$1
fi
cd $updir ; make ; cd -
exit 0

11. 杀死进程

ps -aux | grep XXX
kill -9 nnnn :通过强制的方式杀死一个进程
kill all 进程名 :杀死指定名称的进程
xkill :杀死x进程,单击杀死,右击退出
xargs:将前面命令的输出作为列表传递给后面的命令,一次传送一个参数

12. 正则表达式与sed命令

记录几个网址供学习:

http://sed.sourceforge.net/sed1line_zh-CN.html
http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/sed.htm
http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/sedawk.html
http://www.chinaunix.net/old_jh/24/534400.html
http://www.linuxso.com/command/sed.html
http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/index.html

13. linux 与 x

一直不太明白linux图形应用程序的原理,windows中图形是做在内核里面的,因此我们无法知道其实现的方式。Linux的结构清晰,对于我们理解是非常有利的。
看了大牛们的介绍,下面说说我的理解:
http://blog.chinaunix.net/uid-20784200-id-157706.html
1. 首先,X是一个协议,就相当与HTTP协议一样,并且它真的是c/s模式的,一个服务器,多个客户端。它规定了客户和服务器交流所使用的请求和回复包的格式。
2. 其次,X的实现也是一个简单的应用程序。
        linux其实只是一个操作系统内核,为我们管理各种资源而已。内核之上建立的各种服务其实跟Linux没有什么关系。X也是一个应用程序,它的级别跟我们平时编写的hello,world程序的级别是一样的,建立在驱动程序之上的应用程序而已。
        但是,这个应用程序有它的特殊之处:就是它是一个负责解释用户请求并操纵显卡的服务器程序,这个服务器的主要功能便是图形,所有的显示图形的工作都是最后由它发送给驱动程序执行的。同时这个服务器还负责捕捉键盘和鼠标的事件,因为基于窗口的程序是需要根据键盘和鼠标进行操控的,由服务器端负责分发减少了复杂性。
        目前,已经有了好几个版本的X的实现了。有Xorg, XFree86等。这些实现的意思就是说,根据X协议设置的服务器端已经架设完成了。用户如果想要显示一个图形界面的应用程序,就要根据这个协议来写相关的客户端应用程序就好了。
3. 窗口管理器为何物?
        也许有人会问了,既然创建一个图像界面的应用程序通过发送X请求就可以实现了,那不就完整了吗?还需要窗口管理器(Windows Manager)干什么事呢?
        其实道理很简单,为了系统的易用和美观。仅仅只有一个窗口很好弄,直接放到屏幕中间就好。但是当一个系统中有多个图像界面的应用程序打开时该怎么办呢?到底是把谁画在上面呢?三个和尚没水喝。因此,需要一个管理者来协调他们之间的关系。
       窗口管理器控制窗口的外表、位置和用户操纵窗口的方法。当有了窗口管理器之后,X的服务器和客户端之间的沟通就变的更加简单了。客户端只需要请求自己窗口的各种属性(大小,标题。。),然后这些请求会被定向到窗口管理器中,窗口管理器给它加上一个标题栏,决定它显示的位置,同时还会使得用户点击标题栏后窗口跟随移动等等。
       这三者之间的关系用一个比喻可能比较容易理解:服务器就是我们工地上的工人师傅,负责做最基础的事情;窗口管理器相当于设计师,负责图纸的绘制;客户相当于老板,仗着自己的权势发送各种命令。
4. 桌面环境(GNOME,KDE...)为何物?
    GNODE,KDE这些桌面环境是为了使linux操作系统的使用和ms windows系统一样方便而做的一个应用程序。这个应用程序提供了窗口管理器的功能,但是还有其他东西,比如任务栏,开始菜单以及桌面等。相当于对窗口管理器的一个封装,这个封装使得我们对视窗系统的理解不那么容易,但是让终端用户方便使用。所以,它的目的是在于使用,美观、简洁、易用是其宗旨。

14. gdb

GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像 VC 、 BCB 等 IDE 的调试,但如果你是在 UNIX 平台下做软件,你会发现 GDB 这个调试工具有比 VC 、 BCB 的图形化调试器更强大的功能。所谓 “ 寸有所长,尺有所短 ” 就是这个道理。
一般来说, GDB 主要帮忙你完成下面四个方面的功能:
1 、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2 、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3 、当程序被停住时,可以检查此时你的程序中所发生的事。
4 、动态的改变你程序的执行环境。
基本用法:
1.gcc -O0 -ggdb3: 首先要在执行程序中加入调试信息,编译时需要加入-g选项,也可以使用-ggdb选项,二者的区别是-g选项生成的符号表等信息可以供所有调试器使用,而-ggdb生成的调试信息只能供gdb使用。一般使用-ggdb3选项,包含了扩展的符号表,行号,局部和外部变量信息,宏信息等。同时不要进行编译优化,使用-O0选项。
2. gdb xxx: 使用gdb调试xxx;
3. b aaa.c:nnn 或者 b aaa.c:func : 在某个文件的某行处 或者 某个函数 处设置断点
;b if i==xxx 设置条件断点;

4. r :执行程序直到断点处,或者程序发生错误的地方;
5. c : 继续 执行直到下个断点;
6. n: 向后执行一条语句,不能进入函数内部;
7. s: 向后执行一条语句,进入函数内部;
8. finish :执行完当前函数中所有语句
9. p var: 查看当前某个变量的值;
10. bt :发生错误时,查看调用堆栈;
11. q :退出调试;
12. 直接按enter,重复执行上次输入的命令;
13. info break:查看断点信息;
14. 传递参数 r arg1 arg2 ...;

15. d 删除断点;

15. grub被覆盖,修复grub

1. 做一个u盘启动盘,进入u盘中的ubuntu

2. sudo -i //获取管理员权限

3. mkdir /mnt/boot

4. mount /dev/sdax /mnt/boot  //挂载boot分区到文件系统中

5. grub-install --root-directory=/mnt /dev/sda //修复grub

6. 启动进入ubuntu

7. sudo update-grub2


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值