在本週學習中我們學習了vim編輯器的用法及對bash特性的簡單瞭解,下面我們分別來解釋這些內容。
一、vim編輯器
1、使用vim編輯器同時編輯多個文件時: vim FILE1 FILE2 FILE3 ........
其中:next 查看或編輯後一個文檔的內容
:prev 查看或編輯前一個文檔的內容
:first 查看或編輯第一個文檔的內容
:last 查看或編輯最後一個文檔的內容
2、vim -o 分屏顯示多個文檔內容 橫屏
vim -O 分屏顯示多個文檔內容 豎屏
Ctrl+w,s 將一個文件水平分屏顯示
Ctrl+w,v 將一個文件分屏豎直顯示
這些命令操作主要是方便同時創建並編輯多個文件,使得一屏多顯更方便對文件的編輯查看。
二、bash特性
本週我們主要學習了bash特性的主要表現及一些相關命令的操作方法。
1、命令別名:自定義命令
使用alias命令可以用來定義和顯示命令的別名。但是使用alias命令定義的別名,其生命期僅爲當前shell的生命值。
對於每個用戶來說,都有一個私有的bash配置文件,用於保存別名。~/.bashrc
所以在這裏我們需要注意的地方有以下幾點:
1).alias命令的效果僅限於當前shell的生命期
2).如果修改.bashrc配置文件,其中保存的別名並不會立即生效,只有在重新加載該文件的內容後,纔會生效,且永久生效。
3).爲了能夠保證我們設置的別名有效,通常兩種該操作都要做。
撤銷別名的命令:unalias: unalias name
2、命令歷史
bash進程會保存其會話中用戶曾經執行過的命令,以方便用戶重複執行某個命令。
通過bash提供的歷史命令文件來持久的保存此前執行過的命令,每個用戶都有其自己私有的歷史文件。
登陸shell的時候,bash會自動讀取~/.bash_history文件中所記錄的所有命令。
1)、history命令:
-c:清空歷史緩衝區的歷史命令
-d OFFSET:刪除特定歷史命令條目
2)、重複執行前一個命令的方法:
1.使用上方向鍵,回車執行
2.ctrl+p
3.!-1
4.!!
3)、重複執行歷史命令中的命令:
!Number:重複執行歷史命令中編號爲“number”的命令。
!STRING: 從歷史緩衝區中查找最近一次查找過的以“STRING”開頭的命令,並執行
!-number :執行歷史緩衝區中倒數第“number”條命令。。
Ctrl+r :在歷史緩衝區中實施搜索,回車執行即可。
4)、重複使用歷史命令中的一部分:
!$ :表示最後一次命令中的最後一個參數。
Esc,. 同上
Alt+. 同上
!^ :表示最後一次命令中第一個位置的參數。
!:number :表示最後一次命令中第“number”個位置的參數
!SEQUENCE:NUMBER : 表示歷史緩衝區中第“SEQ”個命令的第“number”個參數。
!STRING :^|$|*|NUMBER
5)、與歷史相關的bash變量
HISTSIZE
HISTFILESIZE
HISTTIMEFORMAT
HISTTIMEFORMAT=”%F %T “
HISTCONTROL:
Ignoredups:忽略連續且相同的命令的歷史緩存
Ignorespace:忽略以空白字符的命令
Ignoreboth:以上兩個命令都啓用。
3、快捷鍵的使用方法
C-->ctrl
M-->Alt
E-->esc
DEL-->backspae
C-L:clear 清屏
Ctrl a 將光標跳轉至命令行行首
Ctrl e 將光標跳轉至命令行尾
Ctrl k 刪除光標所在位置至行尾的命令行信息
Ctrl u 刪除光標所在位置至行首的命令行信息
Ctrl c 結束前臺進程,取消命令的運行
4、命令補全機制
命令補全機制有兩個方面的理解,命令本身字符串的補全,參數的補全。
shell命令的執行過程:
1).shell會根據用戶鍵入回車來判斷用戶的輸入結束
2).shell會將收集到的命令信息,根據空白字符來分段(token),第一個分段被理解爲命令字段。
3).判斷一個字段是內部命令還是外部命令,如果是內部命令,則直接運行,如果是外部命令,通過PATH變量所指示的路徑信息,去查找相關的位置,以確定是否存在同名文件,如果有就執行,否則就報錯。
4).判斷選項是否正確,判斷參數是否正確。
使用tab鍵可以完成命令補全:
如果給出的字符串不能作爲唯一標準,則bash不予補全。再次敲打tab鍵,bash會給出參考列表,如果參考列表中的內容過多,bash會詢問是否顯示該列表。
根據提供的參考路徑來進行補全,如果參數沒有任何提示信息,則默認從工作目錄進行查找。
5、命令行展開
~:bash會自動將其展開爲當前登陸用戶的家目錄。
~STRING:bash會自動將其展開爲以“STRING”爲用戶名的用戶家目錄。
~+:調用shell變量“PWD”的值
~—:調用shell變量“OLDPWD”的值
{}:在花括號中可以填充一個以“,”分割開的路徑列表,bash會將其展開爲多個獨立的路徑。
6、命令的執行結果
任何一個linux命令都有兩種執行結果。
其一:命令的正常輸出結果。 跟用戶需求相關的返回內容
``:反向單引號,反引號
$() :標準的命令引用格式
wc:統計一個文件中有的行數字數及字節數。(-c -l -w)
命令的執行狀態返回值。 跟命令執行成功與否相關的返回內容。
保存在bash的一個特殊變量中:$?
0:命令執行成功
1:表示小的問題
2:表示嚴重問題
127:表示命令本身出問題
3-126,128-255:用戶自定義狀態信息
7、引用功能
‘’ :強引用
凡是被單引號引用的內容,,bash一律將其視爲普通字符,即使其本身有特殊功能和作用也如此。但單引號本身是個例外。
“”:弱引用
被雙引號引用的內容中有一些特殊字符仍然會保留其特殊含義。比如$,\,“”
8、轉義功能
\: bash中定義的轉義字符,只能使其後一個字符失去意義。
9、Globbing 文件名通配,簡稱爲glob
元字符:
*:匹配任意長度的任意字符,某些特俗位置的“.”字符不能被匹配
?:匹配任意單個字符,必須且只有一個字符被匹配
[ ]:匹配指定範圍內的任意單個字符,必須且只有一個字符被匹配
[a-z]:a,A,b,B,c,C............y,Y,z
[A-Z]:A,b,B,c,C.....................y,Y,z,Z
字符集:
[:lower:]:所有小寫字母
[[:lower:]]: 通配任意單個小寫字母
[:upper:]: 所有大寫字母
[:alpha:]: 表示所有字母
[:digit:]: 表示所有十進制數字
[:alnum] :表示所有的大小寫字母以及十進制數字
[:space:]: 表示空白字符
[:punct:]: 所有的標點符號
^:取反匹配,
10、輸入輸出重定向
在使用計算機的時候,實現某種功能的主體是:程序
程序=指令+數據
數據:文件,IO
可以用於輸出的設備:文件,鍵盤文件,文件系統中的常規文件,網卡設備,聲卡設備等,
可以用於輸出的設備:文件,顯示器,文件系統中的常規文件,網卡設備,聲卡設備等
每一種程序都有三種形式的數據流
輸入數據流:爲程序獲取數據的數據流。默認的輸入數據流就是鍵盤。
輸出數據流:將程序所處理的數據結果展示給用戶的數據流。默認的輸出數據流的終點是顯示器。
錯誤數據流:將程序無法處理或處理過程中出現問題的結果展示給用戶的數據流。默認錯誤數據流的終點是顯示器。
從鍵盤實現的輸入數據流稱爲標準輸入
到顯示器上的輸出數據流稱爲標準輸出
到顯示器上的錯誤數據流稱爲標準錯誤輸出,簡稱標準錯誤。
文件描述符:File Descriptor,FD
0:標準輸入,stdin
1:標準輸出,stdout
2:標準錯誤,stderr
IO重定向:採用非標準設備文件實現的IO操作
簡單來說,
不是從鍵盤設備完成的數據流輸出就可以稱爲輸入重定向或重定向輸入。
不是到顯示器設備的正確輸出數據流就被稱爲輸出重定向或重定向輸出。
不是到顯示器設備的錯誤輸出數據流就被稱爲錯誤重定向或重定向錯誤。
輸出重定向:
>: 覆蓋輸出重定向
~]# set -C // 開啓防誤覆蓋開關
在此開關開啓後,可以使用“>|”符號繼續覆蓋重定向
Set +C //關閉防覆蓋開關
>>:追加輸出重定向