我的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: [email protected]") 
		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: [email protected]") 
		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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章