1. 程式人生 > >vim及shell編程基礎

vim及shell編程基礎

空間 本地 file earch 縮進 定義變量 $@ 隨機數 random

一:vim撤銷與重做

u撤銷最近的更改

#u撤銷之前多次更改

U 撤消光標落在這行後所有此行的更改

按Ctrl - r重做最後的“撤消”更改

. 重復前一個操作

n.重復前一個操作n次

退出模式下e!直接還原到文件最初打開狀態

二:可視化模式

可視化模式:vim在命令模式下按v及V可以選擇文本塊。

v:面向字符

V:面向行

Ctrl+v面向塊

選擇出的部分可以被刪除(d),復制(y),變更,過濾,搜索,替換等。

三:多文件模式及多窗口

vim file1 file2 ....

:next 下一個

:prev 前一個

:wall 保存所有

:qall 退出所有

vim -o|O file1 file2(多文件)

-o:水平分割

-O:垂直切割

窗口間切換:Ctrl+w,方向鍵

vim file(單文件)

Ctrl+w,s 水平分割

Ctrl+w,v 垂直分割

Ctrl+w,q 取消相鄰窗口

Ctrl+w,o 取消全部窗口

:wqall 退出

四:vim配置文件

1.在配置文件中修改永久有效。配置文件一個是全局文件/etc/vimrc對所有用戶有效,個人文件是~/.vimrc。只對當前用戶有效

2.設置行號:set number 取消行號:set nonumber

3.括號匹配:set showmatch 取消:set nosm

在vim命令模式下,在括號上按%可以匹配括號。

4.自動縮進:set ai 禁用:set noai

5.高亮搜索:set hlsearch 禁用:set nohlsearch

6語法高亮: syntax on(默認開啟) 禁用:syntax off

7.忽略字符大小寫:啟用:set ic 不忽略:set noic

8文件格式: Windows:set fileformat=dos Unix:set fileformat=unix

9.設置文本寬度:

:set textwidth=65(vim only)

:set wrapmargin=15

補:.swp文件

這個文件是在編輯文件時產生的,保存著在原文件上所作的操作。當文件正常退出時,該文件會自己刪除,電腦突然斷電時,我們可以通過他找回在原文件上的操作。找回的過程:第一種方式:(1)vim -r file 還原(2)刪除.swp文件第二種方式:(1)vim file (2)按r

五:shell編程基礎

程序是指令+數據,程序可以分為過程式和對象式,過程式以指令為中心,數據服務於指令,對象式以數據為中心,指令服務於數據。

計算機運行二進制指令,編程語言分為低級和高級語言,低級語言更貼近於硬件,比如匯編語言。高級語言又分為兩類,一類是編譯型語言,需要編譯器進行編譯。比如java,c#,另一種是解釋型語言,需要解釋器,實時翻譯。比如shell,Perl,python。需要註意的是每種語言都有自己的解釋器,各種語言的解釋器不能混用。解釋比編譯效率低,但重在靈活,反應快,更加適合運維。

shell腳本:包含一些命令或聲明,並符合一定格式的文本文件

shell的用途:自動化常用命令;系統管理和故障排除;創建簡單的應用程序;處理文本或文件。

創建shell腳本

(1)使用文本編輯器創建文件

要點:1.第一行必須包含shell聲明序列:#!,如#!/bin/bash。

2.#!的作用:當要執行程序時,命令中如果不包含解釋器的路徑,此時就會根據文件的#!來尋找解釋器,但這種執行方式要求文件必須可執行。

3.添加註釋,註釋以#開頭

(2)運行腳本:

第一種執行方式:給予權限,在命令行上指定腳本的絕對或相對路徑

第二種執行方式是 命令中直接包含解釋器的路徑,運行解釋器,將腳本作為解釋器程序的參數。

腳本調試:

bash -n file

bash -x file

變量

變量:命名的內存空間。數據分為字符型數據和數值型數據存儲在變量中。變量可以存儲數據,參與運算

變量分為強類型和弱類型,強類型變量不經過強制轉換,他永遠是這個數據類型,不允許隱式的類型轉換。定義變量時必須指明類型,參與運算必須符合類型要求;調用未聲明變量會產生錯誤,如java,c#。弱類型變量會在運行時隱式做數據類型轉換。無需指定類型,默認字符型;參與運算會自動進行隱式類型轉換;變量無需定義,可直接調用。

變量的命名法則:

(1)不能使用保留字

(2)只能使用數字字母,下劃線且不能以數字開頭

(3)做到見名知意

變量的種類:

(1)本地變量:只在當前shell進程生效

1.變量賦值:變量名=...

...可以是直接字符串:如name="root"

...可以是變量引用:如name="$USER"

...可以是命令引用:name=`command ...`或name=$(command ...)

2.變量引用:${name} $name

"":弱引用,其中的變量引用會被替換為變量值

'':強引用,其中的變量引用不會被替換為變量值,保持原字符串。

3. 顯示已定義的所用變量:set

4. 刪除變量:unset name

(2)環境變量:在當前shell及子shell進程有效

1.變量聲明賦值:

export name=VALUE

declare -x name=VALUE

2.顯示所有環境變量;

env;export;declare -x

(3)局部變量:通常在當前shell進程和函數中生效

(4)位置變量:$1,$2, 用於讓腳本在腳本代碼中通過命令行傳遞它的參數。

1.$*:傳遞給腳本的所有參數,全部參數為獨立字符串 2.$@:傳遞給腳本的所有參數,每個參數為獨立字符串兩者只有被“”抱起來的時候才會有差異

3.set -- 清空所有位置變量

(5)只讀變量:只能聲明,但不能修改和刪除

1.只讀變量的聲明:readonly name 或 declare -r name

2.查看只讀變量:readonly -p

退出狀態:用來報告成功或失敗

0:成功,1-255:失敗

$?變量保存最近的命令退出狀態

bash自定義退出狀態碼:exit n,腳本中一旦遇到exit命令,腳本會立即終止;退出狀態碼取決於exit命令後面的數字。

算數運算及賦值:

(1)算數運算有:+,-,*,/%,**(乘方)

(2)賦值:

let var= 算術表達式

let var= $[算術表達式]

let var= $((算術表達式))

declare -i var=數值

echo '算術表達式'|bc

(3)隨機數生成器:echo $[$RANDOM%50] :0-49之間的隨機數


vim及shell編程基礎