vi文字處理器是Linux系統中最常用也是功能最強大的文字編輯器,它有三種模式,分別是:壹般模式,編輯模式和命令模式。用vi打開文件時默認進入壹般模式。
這三種模式可以相互轉換:壹般模式下通過i(I)、o(O)、a(A)、r(R)可以進入編輯模式,通過:、?、/可以進入命令模式,在編輯模式下通過Esc可以進入壹般模式。命令模式時會在屏幕的最下方出現壹個:,等待命令的輸入。
i是插入,會在目前的光標所在處插入文字,已存在的文字會向後退,I則是在行首插入文字;a是增加,會在光標所在的字的下壹個字開始輸入,存在的字會向後退,A是在光標所在行的最後開始增加;o是插入新的壹行,會在光標所在的下壹行行首開始輸入,O是在上壹行行首開始輸入;r是取代,會取代光標所在的那壹個字符,R會壹直取代光標所在的字符,直到Esc為止。
h和左箭頭是向左移動壹個字符,j和下箭頭是向下移動壹個字符,k和上箭頭是向上移動壹個字符,l和右箭頭是向右移動壹個字符,數字0移動到光標所在行的第壹個字符,$移動到所在行的最後壹個字符;G移動到文件的最後壹行,nG就是移動到第n行,gg移動到第壹行,相當於1G,n<Enter>是光標向下移動n行,n<space>是向後移動n個字。
復制和粘貼.
yy復制光標所在的那壹行,nyy復制光標向下n行。p在光標下壹行粘貼,P在光標上壹行粘貼。
撤銷和查找。
u復原前壹個動作,Ctrl+r重做前壹個動作,:e!還原至初始狀態;/word是光標之後查找壹個word字符串,?word是光標之前查找,n是重復前壹個搜尋動作,N是反向進行前壹個搜尋動作,也就是向下和向上的反向。
刪除。
x向後刪除壹個字符,X向前刪除壹個字符,nx向後刪除n個字符,dd刪除光標所在的壹整行,ndd刪除光標向下的n行,d1G刪除光標以前所有字符,dG刪除光標以後所有字符。
替換。
:n1,n2s/word1/word/g,在第n1行到n2行之間尋找word1字符串,並將其替換為word2字符串,g=global;:1,$s/word1/word2/g,從第壹行搜索至最後壹行尋找word1字符串,並將其替換為word2字符串;:1.$s/word1/word2/gc,從第壹行搜索至最後壹行尋找word1字符串,並將其替換為word2字符串,取代前顯示提示字符c(conform)提示是否替換;:%s/word1/word2/g,全文替換。
保存和另存為。:w將編輯的數據存盤,:w!,當文件是只讀屬性時,強制存盤。:w filename將編輯的數據儲存為另外壹個文件,:n1,n2 w filename將n1到n2的內容保存為filename這個文件。
退出和保存退出。:q離開vi,:q!編輯過文件後強制離開不存儲,:wq儲存後離開,:wq!強制儲存後離開,:x保存並退出。
向上和向下翻頁。Ctrl+b或者Pgup向上翻頁,Ctrl+f或者Pgdn是向下翻頁。
壹些命令。:r【filename】,在編輯的數據中讀入另外壹個文件,將filename這個文件的內容加入到光標所在行的下面。:set nu顯示行號,:set nonu為取消行號。:command暫時離開vi到指令列模式下執行command的顯示結果。
vi的附加功能。v字符選擇,將光標經過的地方反白選擇,V行選擇,將光標經過的行反白選擇,Ctrl+v塊選擇,用長方形的方式選擇數據,y復制反白的地方,d將反白的地方刪除掉。vi沒有反白操作,Vim有。
標籤: Linux
Linux kernel的Android編程語言
Android 是運行於 Linux kernel之上,但並不是GNU/Linux。因為在壹般GNU/Linux 裏支持的功能,Android 大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開。bionic/libc/kernel/ 並非標準的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產生的,這樣做是為了保留常數、數據結構與宏。
目前Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Management),程序管理(Process Management),網絡堆棧(Network Stack),驅動程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具 Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的壹個工具。
用ClusterSSH管理多臺Linux服務器
Cluster SSH 是壹個可以用來通過SSH協議同時管理多臺遠程計算機的工具。它非常適合用來快速配置壹個集群中的所有運行相同服務和具備相同配置的計算機節點。現在有大量的開源管理工具,都可以實現這樣的管理,比如dsh、SUSE Manager等。下面是用ClusterSSH管理多臺Linux服務器的具體過程。
如果妳是壹名Linux系統管理員,那妳每天壹定會和許許多多的機器打交道,因為妳要定期監測和維護這些機器,如壹批Web服務器,如果妳要同時在多臺機器上敲入相同的命令,妳可能會通過SSH登錄,然後逐臺敲入,如果使用ClusterSSH,可以為妳節省不少類似的工作時間。
ClusterSSH是用Tk/Perl包裝XTerm和SSH後形成的新工具,就其本身而言,它可以運行在任何兼容POSIX的操作系統上,我曾經在Linux,Solaris和Mac OS X上運行過它,它需要Perl庫Tk(在Debian或Ubuntu上就是perl-tk)和X11::Protocol(在Debian或Ubuntu上就是libx11-protocol-perl),此外,xterm和OpenSSH是必不可少的。
安裝
在Debian或Ubuntu上安裝ClusterSSH是相當簡單的,只需要敲入sudo apt-get install clusterssh就可以安裝好,至於依賴包妳也不必擔心,壹切都會為妳裝好的,它也提供了適合Fedora的rpm包,在FreeBSD上可通過port系統安裝,還為Mac OS X準備了MacPort版本,因此妳可以在妳的蘋果電腦上安裝ClusterSSH,當然,如果妳是極客,也可以下載源代碼自己編譯。
配置
可以通過ClusterSSH的全局配置文件/etc/clusters,或用戶home目錄下的。csshrc文件來配置它,我喜歡用戶級的配置方式,這樣同壹個系統中的不同用戶可以根據自己的喜好進行配置,ClusterSSH定義了壹個“cluster”機器組,妳可以通過壹個界面來控制這個組中的所有機器,在配置文件的頂端“clusters”部分,妳可以詳盡地列出妳的集群,然後用獨立的段落來描述每個集群。
例如,假設我有兩個集群,每個集群由兩臺機器組成,“Cluster1”由“Test1”和“Test2”兩臺機器組成,“Cluster2”由“Test3”和“Test4”兩臺機器組成,~.csshrc(或/etc/clusters)配置文件的內容看起來應該是:
clusters = cluster1 cluster2
cluster1 = test1 test2
cluster2 = test3 test4妳也可以創建中間集群(包含其它集群的集群),如果妳想創建壹個名叫“all”的集群包含所有的機器,有兩種實現手段,首先,妳可以創建壹個包含所有機器的集群,如:
clusters = cluster1 cluster2 all
cluster1 = test1 test2
cluster2 = test3 test4
all = test1 test2 test3 test4但我更喜歡的方法是使用壹個包含其它集群的中間集群:
clusters = cluster1 cluster2 all
cluster1 = test1 test2
cluster2 = test3 test4
all = cluster1 cluster2