1. 程式人生 > >vim和bash

vim和bash

也不能 最大 正常 行為 ulimit 聲明變量 所有 name 退出vim

Vim程序編輯器

基本上vi共分為三種模式,分別是一般指令模式、編輯模式與指令列命令模式

一般指令模式:打開一個文件就進去了,他可以刪除,復制,粘貼等操作,但不能編輯。光標到最後一行在按wq保存。

vim 文件名(不管文件存不存在,都可以打開)

編輯模式:按下任意鍵進去編輯模式,會到一般模式按esc

命令行模式按: / ?任意一個都可以到最後一行。然後就可以輸入命令。

按下crte+z 可以退出vim程序編輯器

Kill -9 % 1 這個命令是可以模擬短線停止vim工作的命令。

Vim可以多人編寫。

如果vim不正常結束的話可以按r來保護你未保存的工作,但是等你結束後還要刪除你原來不正常結束的工作。

[O]pen Read-Only打開此檔案成為只讀。

(R)ecover:就是載入暫存檔的內容,用在你要救回之前未儲存的工作。

(D)elete it:刪除文檔

(Q)uit:按下q就離開vim

(A)bort:忽略這個編輯行為,與quit差不多

記住按鍵說明:

塊選擇:

v 字元選擇,會將遊標經過的地方反白選擇!

V 列選擇,會將遊標經過的列反白選擇!

[Ctrl]+v 區塊選擇,可以用長方形的方式選擇資料

y 將反白的地方復制起來

d 將反白的地方刪除掉

p 將剛剛復制的區塊,在遊標所在處貼上

多文件編輯

:n 編輯下一個檔案

:N 編輯上一個檔案

:files 列出目前這個vim 的開啟的所有檔案

1透過vim hosts /etc/hosts指令來使用一個vim開啟兩個檔案;

2vim 中先使用 :files 文件數據。

3vim 的環境下輸入:n 會來到第二個編輯的檔案,亦即/etc/hosts 內;

4/etc/hosts 下按 G 到最後一列,再輸入『 p 』貼上;

5按下多次的 u 來還原原本的檔案資料;

6最終按下 :q 來離開vim

多窗口功能

在指令列模式輸入:sp 文件名字 即可

ctrl+w+↑ctrl+w+↓就可以在兩個窗口上切換。

BASH

BASH

是一個shellshell 是一個命令語言解釋器,提示符下輸入的每個命令都由shell先解釋然後傳給Linux

命令行如果太長可以(\)來說明,全局變量=環境變量,自定義變量=局部變量

echo命令用於在shell中打印shell變量的值,或者直接輸出指定的字符串,是變量的顯示 命令行 echo $變量名稱

命令別名:alias {“別名”=‘命令 參數’}例如講ls –al | more的別名改為lm

alias lm=‘ls –al | more’。去掉別名就是:unalias lm

Type:

他是用來顯示指定命令的類型,判斷給出的指令是內部指令還是外部指令。

-p:如果給出的指令為外部指令,則顯示其絕對路徑;

如何設置變量的內容

echo ${myname}

空行

myname=變量名稱的內容

echo ${myname}

結果就是顯示你輸入的變量名稱

在shell中,一個變量名稱沒有被設置的話,默認的內容是空

1變量與變量內容以一個等號=來連結,如下所示:

myname=VBird

2等號兩邊不能直接接空白,如下所示為錯誤:

myname = VBird或myname=VBird Tsai

3變量名稱只能是英文字母與數字,但是開頭不能是數字,如下為錯誤:

2myname=VBird

4變量內容若有空白可使用雙引號"或單引號‘將變量內容結合起來,但

雙引號內的特殊字元如$等,可以保有原本的特性,如下所示:

var="lang is $LANG"則echo $var可得lang is zh_TW.UTF-8

單引號內的特殊字元則僅為純文字,如下所示:

var=‘lang is $LANG‘則echo $var可得lang is $LANG

5 可以用/來代替特殊符號

6若該變為擴增變內容時,則可用"$變名稱"或${變}累加內容,如下所示:
PATH="$PATH":/home/bin
或PATH=${PATH} :/home/bin

比如讓name的內容多出 yes可以:

name=${name}yes

7若該變量需要在其他子程序執行,則需要以export來使自定義變量變成環境變量
e
xport PATH

例如:我想要name=tian在下一個shell程序中運行。

name=tian

bash

echo $tian

exit

export tian

bash

echo $name

exit

8取消變量的方法為使用unsetunset變量名稱例如取消myname的設定:
u
nset myname

環境變量的功能

env可以列出環境變量和常見環境變量說明

RANDOM:變量($RANDOM),在BASH的環境下, RANDOM介於0~32767之間,echo $RANDOM時,系統就會主動的隨機取出一個介於0~32767的數值。

Declare –I number=$RANDOM*10/32767;echo $number

set可以查看所有的變量。

PS1(數字1):就是命令提示,執行某個指令後,最後要再次出現提示時,就會主動去讀取這個變量值了。PS1的默認指令是[\u@\h \W]\$

$(關於本shell PID),是個變量。想要知道我們的shell 的PID ,就可以用:echo $$ ,出現的數字就是你的PID 號碼。

?:問號是特殊的變量,他是上一個執行的指令所回傳的值。當執行指令時,指令都會回傳一個代碼。如果成功的執行該指令,則會回傳一個0值,如果執行過程發生錯誤,就會回傳錯誤代碼。但是(?)只和上一個命令有關

export自訂變量轉成環境變量

export是自定義變量轉換成為環境變量的命令。

命令行:export 變量名稱

變量鍵盤讀取、數組與聲明:read,array,declare。

read 後面直接接變量名稱,下面會出現一個空白行讓你輸入,輸入的就轉化問變量內容了。加上-t可以設置空白行存在的時間,不設置就默認30s。加上-t,就會有提示出現

read [-pt] 變量名稱

p:後面可以接提示符

t:後面可以接等待的秒數

declare/typeset是聲明變量的類型,後面直接加變量會吧所有的變量名稱於內容顯示出來。

Declare [-aixr] 變量名稱

-a :將後面名為變量定義成為陣列(array) 類型

-i :將後面變量定義成為整數數字(integer) 類型

-x :用法與export 一樣,就是將變量變成環境變量;

-r :將變量設定成為readonly 類型,不可被更改內容,也不能重設。

例如:

sum=100+500

echo $sum(×)

Declare –I sum=100+500

echo $sum (√)

array是變量類型,建議直接以$數組來讀取。

Ulimit是文件系統及程序的限制關系

Ulimit [-SHacdfltu] 數值

-H :嚴格的設定,必定不能超過這個設定的數值;

-S :soft limit ,警告的設定,可以超過這個設定值,但是若超過則有警告訊息。大於-S但小於-H就會警告

-a :後面不接任何選項與參數,可列出所有的限制額度;

-c :當某些程式發生錯誤時,系統可能會將該程式在記憶體中的資訊寫成檔案(除錯用),

這種檔案就被稱為核心檔案(core file)。此為限制每個核心檔案的最大容量。

-f :此shell 可以建立的最大檔案容量(一般可能設定為2GB)單位為Kb

-d :程序可使用的最大斷裂內存(segment)容量;

-l :可用於鎖定(lock) 的內存量

-t :可使用的最大CPU 時間(單位為秒)

-u :單一使用者可以使用的最大進程(process)數量。

變量內容的刪除、替換於代替

刪除命令:${變量名稱#/*想要刪除的部分}

$是關鍵字,用在刪除模式

#是代表從變量的最前面開始想右刪除,切刪除最短(第一個/與第二個/之間的數據)的那個。

但是在PATH變量中,目錄用:隔開,所以刪除的就是(/)和(:)中間的數據。(如果是兩個#是話,就是刪除最長(第一個/與最後一個/之間的數據)的那個)。

%是代表從變量最後面開始向左刪除。用法和#一樣

替代命令:echo ${變量名稱/想要被替代的變量內容/替代的變量}-----只有第一個會被替代

如果是兩個//就是所符合的內容都會被替代:echo ${變量名稱//想要被替代的變量內容/替代的變量}。---------------------所有的都會被替代

例如想要把path變量的sbin代替稱大寫的SBIN。

(1)(/)

echo ${path/sbin/SBIN}

/usr/local/ SBIN :/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin

(2)(//)

echo ${path//sbin/SBIN}

/usr/local/bin:/usr/bin:/usr/local/ SBIN :/usr/ SBIN :/home/dmtsai/.local/bin :/home/dmtsai/bin

測試變量是否存在:新變量=${就變量-變量的內容}

例如要判斷test這個變量是否存在,若不存在就給予test的內容為root

echo ${test }

(出現一行空白,所以test可能不存在,也可能是空字串)

test=${test-root}

echo ${test}

root

命令別名:alias,unalias

Alias “別名=‘命令參數

比如吧lm當做ls –l | more的命令別名

alias “lm”=’la –l | more’

unalias就是取消命令別名的,直接在後面加命令別名就可以

例如取消上面的命令別名

unalias lm

歷史命令(history)

-----(histfiles也就是保存歷史命令的文件)

n :數字,列出最近的n個命令列表的意思!

-c :刪除歷史命令

-a :將目前新增的history 指令新增入histfiles 中

-r :將histfiles 的內容讀到目前這個shell 的history 記憶中;

-w :將目前的history 記憶內容寫入histfiles 中!

Bash的登錄與歡迎信息:/etc/issue /etc/motd

/etc/issue 是記錄登錄界面上幾行提示字符串的地方。

cat /etc/issue 可以查看提示字符串。

想要讓使用者登入後取得一些訊息,直接vim進去/etc/motd裏,再輸入你想發的訊息。

bash的環境配置文件

vim和bash