bash編程之:字符測試,一般加引號
雙目:
> : 大於
< :小於
==:等於,等值比較
=~:左側是字符串,右側是一個模式,判斷左側的字符串能否被右側的模式所匹配:通常只在[[]]中使用
模式中可以使用行首、行尾錨定符,但是模式不要加引號
!=, <>: 不等於
單目:
-n 字符串: 字符串是否不空,不空爲真,空則爲假
-z 字符串:字符串是否爲空,空則爲真,不空則假:
vi 編輯器
Linux:使用文本文件來保持配置文件
vi的模式:
編輯模式:鍵盤操作通常被解析爲編輯命令
輸入模式:輸入模式
末行模式:vim的內置的命令行接口,執行vim內置命令
vi命令的使用格式
vim [options] /path/to/file
編輯模式–>輸入模式
i:當前光標處輸入內容
I:在當前光標所在行的行首
a:在當前光標所在處的後面
A:在當前光標所在行的行尾輸入
o:在光標所在行的下方新增一行空白行
O:在光標所在行的上方新增一行空白行
輸入模式–>編輯模式
ESC
編輯模式–>末行模式
:
末行模式–>編輯模式
ESC,ESC
退出:
:q!強制退出,不保存並退出
:wq 保存修改並退出
:x,保存並退出
編輯模式:ZZ,保存退出
打開:
多文件跳轉
:next 下一個
:prev 上一個
:first 第一個
:last 最後一個
:qall 退出所有的文件
:wqall:修改並退出多個文件
分隔窗口打開多個文件
-o:水平分隔
ctrl+w,左右箭頭
-O:垂直分隔
ctrl+W,上下箭頭
+#:打開文件後在第#號行首
+:打開文件後在最後一行
光標移動:
單字符移動:
h:左
l:右
j:下
k:上
可以和數字組合
單詞間移動:
w:調至下一個單詞的詞首
b:當前或前一個的詞首
e:當前或下一個詞的詞尾
行內移動:
0:絕對行首
^:第一個非空白字符
$:絕對行尾
句子間移動:
):上一句
( :下一句
段落間移動:
}:上一段
{:下一段
行間移動:
# G:第幾行
G:最後一行
編輯操作:
刪除字符
x:刪除光標所在處的字符
#x:刪除光標所在處向後的#個字符
替換
r:替換光標所在處的字符
刪除行
d:刪除命令
結果光標跳轉命令使用
%:全文 可以在末行模式中 :% d
dd:刪除一行
#dd:刪除所在行後的#行
末行模式:範圍定界
start,end:可以使用絕對定界,也可以使用相對定界 10,+9 從第10行向後加9行
.:表示當前行
$:最後一行
$-2:倒數第3行
/pat1/,/pat2/:匹配Pat1到pat2中間的所有行
c:替換
跟d一樣操作
y:yank,複製
跟d一樣操作
p:paste 粘貼
複製或刪除的是整行
p:當前行的下一行
P(大寫):當前行的上一行
複製或刪除的爲非整行
p:粘貼在光標所在字符的後面
P: 粘貼在光標所在字符的前面
撤銷編輯
u:undo
#u:最近50次操作
撤銷此前的撤銷操作
ctrl+r:
重複執行此前的命令:
.
翻屏:
ctrl+f:向文件尾部翻一屏
ctrl+b:向文件首部翻一屏
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
Enter:下一行
k :上一行
查找:
/keyword
?keyword
n:
N:
支持正則表達式
:set nohlsearch 關閉高亮顯示,對當前shell有效
vim的可視化模式
編輯模式:
v:按照光標走過的區域選擇
V:選擇矩形塊
打開多個文件,分窗口:
vim -o
vim -O
Ctrl+w, 上下箭頭
分割當前窗口:
Ctrl+w, s
Ctrl+w, v
窗口屬性的定義:
:set nu 顯示行號
:set nonu
:set ai 自動縮進
:set noai
:set ic 忽律大小寫
:set noic
顯示對應的括號
:set sm (show match)
:set nosm
語法高亮:
:syntax on
:syntax off
搜索高亮:
:set hlsearch
:set nohlsearch
vim的配置文件:
全局:/etc/vimrc
個人:~/.vimrc
查找替換:
:地址定界s/查找模式/替換爲的內容/gi
g:全局替換
i:不區分大小寫
:地址定界s@查找模式@替換爲的內容@gi
&: 用於在替換爲的內容部分中引用前面匹配到的所有內容
練習:
1.複製/etc/grup.conf至/tmp目錄,刪除/tmp/grub.conf文件中行首的空白符
:%s@^[[:space:]]@{1,\}@g
2.複製/etc/rc.d/rc.sysinit至/tmp目錄。將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行,行首加#號
:%s@^[[:space:]]\{1,\}.*@#&@g
3.刪除/tmp/rc.sysinit文件中以#開頭且後面跟了至少一個空白字符的行的行首的#和空白符
%s@^#[[:space:]]\{1,\}@@g
4.爲/tmp/grub。conf文件中的前三行的行首加#號
1,3s@^@#@g
5.將/etc/yum.repos.d/CentOS-Media.repo中enable=0一行最後的0改爲1;
%@\(enabled=\)[0-9]@\11@g
bash知識點:文件測試
[]
[[]]
test
單目測試:
-e file :測試文件是否存在
-a file :測試文件是否存在
-f file: 測試是否爲普通文件
-d 目錄: 測試是否爲目錄文件
-b somefile : 測試文件是否存在並且是否爲一個塊設備文件
-c somefile : 測試文件是否存在並且是否爲一個字符設備文件
-h|-L somefile : 測試文件是否存在並且是否爲符號鏈接文件
-p somefile : 測試文件是否存在並且是否爲管道文件:
-S somefile : 測試文件是否存在並且是否爲套接字文件:
-r somefile: 測試其有效用戶是否對此文件有讀取權限
-w somefile: 測試其有效用戶是否對此文件有寫權限
-x somefile: 測試其有效用戶是否對此文件有執行權限
-s somefile: 測試文件是否存在並且不空
雙目測試:
file1 -nt file2 :測試file1是否比file2更 新一些
file1 -ot file2 :測試file1是否比file2更 老一些
在腳本中使用source命令倒入別的文件
[ -r 配置文件 ] && cource 配置文件