⑴ vi的常用命令
vi的基本操作
a) 進入vi
在系統提示符號輸入vi及文件名稱後,就進入vi全屏幕編輯畫面:
$ vi myfile
不過有一點要特別注意,就是您進入vi之後,是處於「命令行模式(command mode)」,您要切換到「插入模式(Insert mode)」才能夠輸入文字。初次使用vi的人都會想先用上下左右鍵移動游標,結果電腦一直嗶嗶叫,把自己氣個半死,所以進入vi後,先不要亂動,轉換到「插入模式(Insert mode)」再說吧!
b) 切換至插入模式(Insert mode)編輯文件
在「命令行模式(command mode)」下按一下字母「i」就可以進入「插入模式(Insert mode)」,這時候你就可以開始輸入文字了。
c) Insert 的切換
您目前處於「插入模式(Insert mode)」,您就只能一直輸入文字,如果您發現輸錯了字!想用游標鍵往回移動,將該字刪除,就要先按一下「ESC」鍵轉到「命令行模式(command mode)」再刪除文字。
d) 退出vi及保存文件
在「命令行模式(command mode)」下,按一下「:」冒號鍵進入「Last line mode」,例如:
: w filename (輸入 「w filename」將文章以指定的文件名filename保存)
: wq (輸入「wq」,存檔並退出vi)
: q! (輸入q!, 不存檔強制退出vi)
3、命令行模式(command mode)功能鍵
1). 插入模式
按「i」切換進入插入模式「insert mode」,按「i」進入插入模式後是從游標當前位置開始輸入文件;
按「a」進入插入模式後,是從目前游標所在位置的下一個位置開始輸入文字;
按「o」進入插入模式後,是插入新的一行,從行首開始輸入文字。
2). 從插入模式切換為命令行模式
按「ESC」鍵。
3). 移動游標
vi可以直接用鍵盤上的游標來上下左右移動,但正規的vi是用小寫英文字母「h」、「j」、「k」、「l」,分別控制游標左、下、上、右移一格。
按「ctrl」+「b」:屏幕往「後」移動一頁。
按「ctrl」+「f」:屏幕往「前」移動一頁。
按「ctrl」+「u」:屏幕往「後」移動半頁。
按「ctrl」+「d」:屏幕往「前」移動半頁。
按數字「0」:移到文章的開頭。
按「G」:移動到文章的最後。
按「$」:移動到游標所在行的「行尾」。
按「^」:移動到游標所在行的「行首」
按「w」:游標跳到下個字的開頭
按「e」:游標跳到下個字的字尾
按「b」:游標回到上個字的開頭
按「#l」:游標移到該行的第#個位置,如:5l,56l。
4). 刪除文字
「x」:每按一次,刪除游標所在位置的「後面」一個字元。
「#x」:例如,「6x」表示刪除游標所在位置的「後面」6個字元。
「X」:大寫的X,每按一次,刪除游標所在位置的「前面」一個字元。
「#X」:例如,「20X」表示刪除游標所在位置的「前面」20個字元。
「dd」:刪除游標所在行。
「#dd」:從游標所在行開始刪除#行
5). 復制
「yw」:將游標所在之處到字尾的字元復制到緩沖區中。
「#yw」:復制#個字到緩沖區
「yy」:復制游標所在行到緩沖區。
「#yy」:例如,「6yy」表示拷貝從游標所在的該行「往下數」6行文字。
「p」:將緩沖區內的字元貼到游標所在位置。注意:所有與「y」有關的復制命令都必須與「p」配合才能完成復制與粘貼功能。
6). 替換
「r」:替換游標所在處的字元。
「R」:替換游標所到之處的字元,直到按下「ESC」鍵為止。
7). 回復上一次操作
「u」:如果您誤執行一個命令,可以馬上按下「u」,回到上一個操作。按多次「u」可以執行多次回復。
8). 更改
「cw」:更改游標所在處的字到字尾處
「c#w」:例如,「c3w」表示更改3個字
9). 跳至指定的行
「ctrl」+「g」列出遊標所在行的行號。
「#G」:例如,「15G」,表示移動游標至文章的第15行行首。
4、Last line mode下命令簡介
在使用「last line mode」之前,請記住先按「ESC」鍵確定您已經處於「command mode」下後,再按「:」冒號即可進入「last line mode」。
A) 列出行號
「set nu」:輸入「set nu」後,會在文件中的每一行前面列出行號。
B) 跳到文件中的某一行
「#」:「#」號表示一個數字,在冒號後輸入一個數字,再按回車鍵就會跳到該行了,如輸入數字15,再回車,就會跳到文章的第15行。
C) 查找字元
「/關鍵字」:先按「/」鍵,再輸入您想尋找的字元,如果第一次找的關鍵字不是您想要的,可以一直按「n」會往後尋找到您要的關鍵字為止。
「?關鍵字」:先按「?」鍵,再輸入您想尋找的字元,如果第一次找的關鍵字不是您想要的,可以一直按「n」會往前尋找到您要的關鍵字為止。
D) 保存文件
「w」:在冒號輸入字母「w」就可以將文件保存起來。
E) 離開vi
「q」:按「q」就是退出,如果無法離開vi,可以在「q」後跟一個「!」強制離開vi。
「qw」:一般建議離開時,搭配「w」一起使用,這樣在退出的時候還可以保存文件。
5、vi命令列表
1、下表列出命令模式下的一些鍵的功能:
h
左移游標一個字元
l
右移游標一個字元
k
游標上移一行
j
游標下移一行
^
游標移動至行首
0
數字「0」,游標移至文章的開頭
G
游標移至文章的最後
$
游標移動至行尾
Ctrl+f
向前翻屏
Ctrl+b
向後翻屏
Ctrl+d
向前翻半屏
Ctrl+u
向後翻半屏
i
在游標位置前插入字元
a
在游標所在位置的後一個字元開始增加
o
插入新的一行,從行首開始輸入
ESC
從輸入狀態退至命令狀態
x
刪除游標後面的字元
#x
刪除游標後的#個字元
X
(大寫X),刪除游標前面的字元
#X
刪除游標前面的#個字元
dd
刪除游標所在的行
#dd
刪除從游標所在行數的#行
yw
復制游標所在位置的一個字
#yw
復制游標所在位置的#個字
yy
復制游標所在位置的一行
#yy
復制從游標所在行數的#行
p
粘貼
u
取消操作
cw
更改游標所在位置的一個字
#cw
更改游標所在位置的#個字
2、下表列出行命令模式下的一些指令
w filename
儲存正在編輯的文件為filename
wq filename
儲存正在編輯的文件為filename,並退出vi
q!
放棄所有修改,退出vi
set nu
顯示行號
/或?
查找,在/後輸入要查找的內容
n
與/或?一起使用,如果查找的內容不是想要找的關鍵字,按n或向後(與/聯用)或向前(與?聯用)繼續查找,直到找到為止。
對於第一次用vi,有幾點注意要提醒一下:
1、用vi打開文件後,是處於「命令行模式(command mode)」,您要切換到「插入模式(Insert mode)」才能夠輸入文字。切換方法:在「命令行模式(command mode)」下按一下字母「i」就可以進入「插入模式(Insert mode)」,這時候你就可以開始輸入文字了。
2、編輯好後,需從插入模式切換為命令行模式才能對文件進行保存,切換方法:按「ESC」鍵。
3、保存並退出文件:在命令模式下輸入:wq即可!(別忘了wq前面的:)
⑵ linux如何用vi實現
1命令模式:r ! cal 2009
2visual模式block移動
3用替換命令或者R
4用dd加范圍限制
5直接刪除,p粘貼
6這個不會
7set nu
8wc
建議搜索一下Vim-handbook-cn-72.pdf下載vim的中文手冊,會有大收獲的。
⑶ Linux vi 操作命令
進入vi的命令
vi filename :打開或新建文件,並將游標置於第一行首
vi +n filename :打開文件,並將游標置於第n行首
vi + filename :打開文件,並將游標置於最後一行首
vi +/pattern filename:打開文件,並將游標置於第一個和pattern匹配的串處
vi -r filename :在上次正用vi編輯時發生系統崩潰,恢復filename
vi filename....filename :打開多個文件,依次進行編輯
移動游標類命令
h :游標左移一個字元
l :游標右移一個字元
space:游標右移一個字元
Backspace:游標左移一個字元
k或Ctrl+p:游標上移一行
j或Ctrl+n :游標下移一行
Enter :游標下移一行
w或W :游標右移一個字至字首
b或B :游標左移一個字至字首
e或E :游標右移一個字至字尾
) :游標移至句尾
( :游標移至句首
}:游標移至段落開頭
{:游標移至段落結尾
nG:游標移至第n行首
n+:游標下移n行
n-:游標上移n行
n$:游標移至第n行尾
H :游標移至屏幕頂行
M :游標移至屏幕中間行
L :游標移至屏幕最後行
0:(注意是數字零)游標移至當前行首
$:游標移至當前行尾
屏幕翻滾類命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。
插入文本類命令
i :在游標前
I :在當前行首
a:游標後
A:在當前行尾
o:在當前行之下新開一行
O:在當前行之上新開一行
r:替換當前字元
R:替換當前字元及其後的字元,直至按ESC鍵
s:從當前游標位置處開始,以輸入的文本替代指定數目的字元
S:刪除指定數目的行,並以所輸入文本代替之
ncw或nCW:修改指定數目的字
nCC:修改指定數目的行
刪除命令
ndw或ndW:刪除游標處開始及其後的n-1個字
do:刪至行首
d$:刪至行尾
ndd:刪除當前行及其後n-1行
x或X:刪除一個字元,x刪除游標後的,而X刪除游標前的
Ctrl+u:刪除輸入方式下所輸入的文本
搜索及替換命令
/pattern:從游標開始處向文件尾搜索pattern
?pattern:從游標開始處向文件首搜索pattern
n:在同一方向重復上一次搜索命令
N:在反方向上重復上一次搜索命令
:s/p1/p2/g:將當前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:將文件中所有p1均用p2替換
選項設置
all:列出所有選項設置情況
term:設置終端類型
ignorance:在搜索中忽略大小寫
list:顯示製表位(Ctrl+I)和行尾標志($)
number:顯示行號
report:顯示由面向行的命令修改過的數目
terse:顯示簡短的警告信息
warn:在轉到別的文件時若沒保存當前文件則顯示NO write信息
nomagic:允許在搜索模式中,使用前面不帶「」的特別字元
nowrapscan:禁止vi在搜索到達文件兩端時,又從另一端開始
mesg:允許vi顯示其他用戶用write寫到自己終端上的信息
最後行方式命令
:n1,n2 co n3:將n1行到n2行之間的內容拷貝到第n3行下
:n1,n2 m n3:將n1行到n2行之間的內容移至到第n3行下
:n1,n2 d :將n1行到n2行之間的內容刪除
:w :保存當前文件
:e filename:打開文件filename進行編輯
:x:保存當前文件並退出
:q:退出vi
:q!:不保存文件並退出vi
:!command:執行shell命令command
:n1,n2 w!command:將文件中n1行至n2行的內容作為command的輸入並執行之,若不指定n1,n2,則表示將整個文件內容作為command的輸入
:r!command:將命令command的輸出結果放到當前行
寄存器操作
"?nyy:將當前行及其下n行的內容保存到寄存器?中,其中?為一個字母,n為一個數字
"?nyw:將當前行及其下n個字保存到寄存器?中,其中?為一個字母,n為一個數字
"?nyl:將當前行及其下n個字元保存到寄存器?中,其中?為一個字母,n為一個數字
"?p:取出寄存器?中的內容並將其放到游標位置處。這里?能是個字母,也能是個數字
ndd:將當前行及其下共n行文本刪除,並將所刪內容放到1號刪除寄存器中。
進入vi
vi test
離開vi
:q! 離開vi,並放棄剛在緩沖區內編輯的內容。
:wq 將緩沖區內的資料寫入磁碟中,並離開vi。
:ZZ 同wq
同wq
:w 將緩沖區內的資料寫入磁碟中,但並不離開vi。
:q 離開vi,若文件被修改過,則會被需求確認是否放棄修改的內容,此指令可和: w 配合使用。
Vi 的操作模式
Vi 提供兩種操作模式:
輸入模式(insert mode)
指令模式(command mode)
當使用者進入vi後,既處於指令模式下,此刻鍵入所有字元皆被視為指令。
輸入模式:a(append) 游標之後加入資料。
A 該行之末加入資料
i (insert) 游標之前加入資料
I 該行之首加入資料
o (open) 新增一行和該行之下供輸入資料
O 新增一行和該行之上供輸入資料
指令模式:B 移至該行第一個字元,若游標在該行第一字元則游標移至上一行第一字元。
b 由游標所在位置之前一個字串的第一個字元
cc 刪除整行,修改整行的內容。
D 以行為單位,刪除游標在內後面的所有字元。
db 刪除該行游標前字元
dd 刪除該行
de 刪除自游標開始後面的字元
d加字元刪除游標所在位置至字元之間的單
E移至該行最後字元,若游標在該行最後字元則游標移至下一行最後字元
e由游標所在位置至該字串的最後一個字元
G 移至該檔案的最後一行
h 向前移一個字元
j 向下移一個字元
k 向上移一個字元
0 移至該行之首
M 移至視窗的中間那行
L 移至視窗的最後一行
l 向後移一個字元
0 由游標所在位置該行的第一個字元
nG 移至該檔案的第n行
n+ 自游標所在位置向後移n行至該行的第一字元
n- 自游標所在位置向前移n行至該行的第一字元
R 進入取代狀態,直到《ESC》為止
s 刪除游標所在字元,並進入取代模式直到《ESC》
S 刪除游標所在之該行資料,並進入輸入模式直到《ESC》
w 由游標所在位置之下一個字串的第一個字元
x 刪除游標所在該字元。
X 刪除游標所在之前一字元。
r 用接於此指令之後的字元取代(replace)游標所在字元
yy yank整行,使游標所在該行復制到記憶體緩沖區
顯示該行之行號、檔案名稱、檔案中最末之行號、游標所在行號占
總行號之百分比
$ 由游標所在位置至該行的最後一個字元。
) 由游標所在位置至下一個句子的第一個字元。
( 由游標所在位置至該句子的第一個字元。
{ 由游標所在位置至該段落的最後一個字元。
} 由游標所在位置至該段落的第一個字元
yank和delete可將指定的資料復制到記憶體緩沖區,而藉有put指令可將緩沖區內的資料復制到熒幕上
例如:搬移一行 :在該行執行dd
游標移至目的地
執行p
復制一行 :在該行執行yy
游標移至目的地
執行p
視窗移動:
視窗往下卷一頁
視窗往上卷一頁
視窗往下卷半頁
視窗往上卷半頁
視窗往下卷一行
視窗往上卷一行
刪除、復制及修改指令介紹:
d(delete)、c(change)和y(yank)這一類的指令在vi 中的指令格式為:
operation+scope=command
(運運算元)(范圍)
運運算元:
d 刪除指令。刪除資料,但會將刪除資料復制到記憶體緩沖區。
y 將資料(字組、行列、句子或段落)復制到緩沖區。
p 放置(put)指令,和d和y配合使用。可將最後delete或yank的資料放置於游標所在位置之行列下。
c 修改(change)指令,類似delete於insert的組合。刪除一個字組、句子等資料,並插入新鍵入的
⑷ vi 命令大全
vi filename 打開或新建文檔,並將游標置於第一行行首
vi +n filename 打開文件,並將游標置於第n行首
vi + filename 打開文件,並將游標置於最後一行首
vi +/pattern filename 打開文件,並將游標置於第一個與pattern匹配的串處
vi -r filename 在上次正用vi編輯時發生系統崩潰,恢復filename
vi filename....filename 打開多個文件,依次進行編輯
w 保存當前文件
w /tmp1 另存為/tmp1
20,59w /tmp1 僅將20-59行之間的內存另存為/tmp1
x 或 wq 保存退出
q 退出vi
q! 退出不保存 >
!command 執行shell命令command
n1,n2 w !command 將文件中n1行至n2行的內容作為command的輸入並執行之,若不指定n1,n2,則表示將整個文件內容作為command的輸入
r !command 將命令command的輸出結果放到當前行
w !sudo tee % 保存沒許可權時,可獲取許可權再保存
h 游標左移一個字元
l 游標右移一個字元
space 游標右移一個字元
Backspace 游標左移一個字元
k 或 Ctrl+p 游標上移一行
j 或 Ctrl+n 游標下移一行
Enter 游標下移一行
w 或 W 游標右移一個字至字首
b 或 B 游標左移一個字至字首
e 或 E 游標右移一個字至字尾
) 游標移至句尾
( 游標移至句首
} 游標移至段落開頭
{ 游標移至段落結尾
nG 游標移至第n行首
n+ 游標下移n行
n- 游標上移n行
n$ 游標移至第n行尾
H 游標移至屏幕頂行
M 游標移至屏幕中間行
L 游標移至屏幕最後行
0 (注意是數字零)游標移至當前行首
$ 游標移至當前行尾
Ctrl+u 向文件首翻半屏
Ctrl+d 向文件尾翻半屏
Ctrl+f 向文件尾翻一屏
Ctrl+b 向文件首翻一屏
nz 將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部
i 在游標前
I 在當前行首
a 游標後
A 在當前行尾
o 在當前行之下新開一行
O 在當前行之上新開一行
r 替換當前字元
R 替換當前字元及其後的字元,直至按ESC鍵
s 從當前游標位置處開始,以輸入的文本替代指定數目的字元
S 刪除指定數目的行,並以所輸入文本代替
ncw 或 nCW 修改指定數目的字
nCC 修改指定數目的行
ndw 或 ndW 刪除游標處開始及其後的n-1個字
do 刪至行首
d$ 刪至行尾
ndd 刪除當前行及其後n-1行
x 或 X 刪除一個字元,x刪除游標後的,而X刪除游標前的
Ctrl+u 刪除輸入方式下所輸入的文本
n1,n2 d 將n1行到n2行之間的內容刪除
%d 刪除全部內容
1,$d 刪除全部內容
yy 復制當前行
nyy 復制當前行開始的n行
先按 v 然後方向鍵選擇區域,按 y 復制選中行
dd 剪切當前行
p (小) 在當前游標處下面粘貼內容
P (大) 在當前游標處上面粘貼內容
n1,n2 co n3 將n1行到n2行之間的內容拷貝到第n3行下
n1,n2 m n3 將n1行到n2行之間的內容移至到第n3行下
/abc 從游標開始處向文件尾搜索abc
?abc 從游標開始處向文件首搜索abc
//abc 從游標開始處向文件尾搜索/abc,其中/是轉義
n 在同一方向重復上一次搜索命令
N 在反方向上重復上一次搜索命令
s/vivian/sky/ 替換當前行第一個 vivian 為 sky
s/vivian/sky/g 替換當前行所有 vivian 為 sky
n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第一個 vivian 為 sky
n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 為sky
%s/vivian/sky/g (等同於 g/vivian/s//sky/) 替換每一行的每一個 vivian 為 sky
s#vivian/#sky# 替換當前行第一個 vivian/ 為 sky/(可以使用 # 或 + 作為分隔符,此時中間出現的 / 不會作為分隔符)
s/p1/p2/g 將當前行中所有p1均用p2替代
n1,n2s/p1/p2/g 將第n1至n2行中所有p1均用p2替代
g/p1/s//p2/g 將文件中所有p1均用p2替換
"?nyy 將當前行及其下n行的內容保存到寄存器?中,其中?為一個字母,n為一個數字
"?nyw 將當前行及其下n個字保存到寄存器?中,其中?為一個字母,n為一個數字
"?nyl 將當前行及其下n個字元保存到寄存器?中,其中?為一個字母,n為一個數字
"?p 取出寄存器?中的內容並將其放到游標位置處。這里?可以是一個字母,也可以是一個數字
ndd 將當前行及其下共n行文本刪除,並將所刪內容放到1號刪除寄存器中
set number 顯示行號
set number! 不顯示行號,其它選項同理加!號
set all 列出所有選項設置情況
set term 設置終端類型
set ignorance 在搜索中忽略大小寫
set list 顯示製表位(Ctrl+I)和行尾標志($)
set report 顯示由面向行的命令修改過的數目
set terse 顯示簡短的警告信息
set warn 在轉到別的文件時若沒保存當前文件則顯示NO write信息
set nomagic 允許在搜索模式中,使用前面不帶「」的特殊字元
set nowrapscan 禁止vi在搜索到達文件兩端時,又從另一端開始
set mesg 允許vi顯示其他用戶用write寫到自己終端上的信息
參考文獻:
https://www.cnblogs.com/mondol/p/vi-examples.html
⑸ 在命令行模式下執行命令
輸入命令按下enter鍵就會開始執行,如果輸入的命令很長,可以使用反斜杠來轉義enter符號,使命令連續到下一行。
在linux環境中大小寫是不同的
1.顯示日期和事件的命令:date
如果想要輸出特定格式的日期和事件需要帶上參數
例如:date +%Y/%m/%d
date +%H:%M
2.顯示日歷的命令:cal
cal的基本能語法:cal [[month] year]
可以顯示某年的日歷:例如,cal 2009
可以顯示某年某月的日歷:例如,cal 9 2009
3.計算器命令:bc
輸入bc命令就進入bc這個軟體的工作環境,就可以像在windows中一樣進行加減乘除,
+加法,-減法,*乘法,/除法,^指數,%余數。
bc默認是輸出整數的,如果要輸出全部小數,就必須執行scale=number,其中number就是小數點後的位數。
要離開bc,需要輸入quit才能離開bc軟體環境。
1.tab鍵:用於補全命令或者補全文件
2.ctrl+c:用於中斷目前正在運行的命令
3.ctrl+d:表示鍵盤輸入結束,也可以用來代替exit的輸入。
在命令行中直接按下兩次tab鍵,可以看到總共有多少個命令可以供當前用戶使用。
可以使用man 命令名來查看命令的具體用法。
其中man是manual的縮寫。
數據同步寫入磁碟中:在關機前可以使用命令sync將內存中尚未被更新的數據就會被寫入硬碟中。
關機命令:shutdown、reboot、halt、poweroff
系統執行等級:
run level 0:關機
run level 3:純命令行模式
run level 5:含有圖形界面模式
run level 6:重啟
可以使用init命令來切換各種模式,例如想要關機的話,也可以使用init 0。
Linux文件屬性
ls -al 列出所有的文件,-al表示列出所有的文件詳細的許可權和屬性。
例如
[1] [2] [3] [4] [5] [6] [7]
[許可權] [連接] [所有者][用戶組][文件容量] [修改日期] [文件名]
drwxr-x--- 4 root root 4096 Sep 8 14:06 .gconfd
-rwxr-xr-x 1 root root 1024 Jan 3 11:01 install.log
1.第一列文件的類型與許可權
第一列由10個字元組成:
第一個字元代表這個文件是目錄、文件或者鏈接文件等
其中d表示目錄,
-表示是文件
l表示是連接文件
接下來的字元中,以三個字元為一組,均是rwx的組合,其中r表示可讀,w表示可寫,x表示可執行。如果沒有相應的許可權就用-表示。
這三組分別表示的許可權是:
第一組為」文件所有者的許可權「
第二組為」同用戶組的許可權「
第三組為」其他非本用戶組的許可權「
2.第二列表示有多少個文件名連接到此節點上
3.第三列表示這個文件或目錄的所有者賬號
4.第四列表示這個文件所屬的用戶組
5.第五列表示這個文件的大小,默認單位為B
6.第六列表示這個文件的創建日期或這個文件的修改日期。
7.第七列表示這個文件名
改變文件屬性和許可權:
chgrp(change group):改變文件的所屬用戶組
chown(change owner):改變文件所有者
chmod:改變許可權,許可權的設置有兩種方式,使用數字或者符號來進行許可權的更改。
數字類型改變許可權:
使用數字分別代表各個許可權,其中:
r:4
w:2
x:1
owner、group、others三種身份各自有自己的rwx許可權,三個許可權的分數需要累加。例如
owner = rwx = 4 + 2 + 1=7
group = rwx = 4 + 2 + 1 = 7
others = --- = 0 + 0 + 0 = 0
那麼這個文件的許可權數字就是770
符號類型改變許可權:
使用u,g,o分別代表user、group、others三種身份的許可權,a表示所有身份
例如:
一個文件的許可權為:-rwxr-xr-x
user:有可讀、可寫、可執行的許可權
group:有可讀、可執行的許可權
others:有可讀、可執行的許可權
可以使用命令 chmod u=rwx,go=rx install.log
給install.log文件的所有用戶增加寫許可權
chmod a+w install.log
給install.log文件的所有用戶去掉可執行許可權
chmod a-x install.log
Linux下文件沒有所謂的擴展名,一個linux文件能不能被執行,與文件名沒有一點關系,而是許可權中有x,就代表這個文件可以被執行。
通常會以適當的擴展名來表示文件是什麼種類的。例如, .sh表示腳本或批處理文件, .Z、 .tar、 .tar.gz、 .zip、 .tgz都表示壓縮文件。
FHS(Filesystem Hierarchy Standard)標准用於讓用戶能夠了解到已安裝的軟體通常放置在哪個目錄下。FHS根據文件系統使用的頻繁與否和是否允許用戶隨意改動,而將目錄定義成四種交互作用的形態。分別如下:
可分享的 不可分享的
不變的:/usr(軟體放置處)、/opt(第三方軟體) /etc(配置文件)、/boot(開機與內核文件)
可變動的: /var/mail(用戶郵件信箱) /var/run(程序相關)、/var/lock(程序相關)
/var/spool/news(新聞組) /var/lock(程序相關)
可分享的:可以分享給其他系統掛載使用的目錄,所以包括可執行文件與用戶的郵件等數據,是能夠分享給網路上的其他主機掛載用的目錄。
不可分享的:自己機器上運行的設備文件或者程序有關的socket文件等,不適合分享給其他主機。
不變的:數據不經常變動。
可變動的:數據經常變動
根目錄(/):是整個系統最重要的目錄,不僅所有其他目錄是由根目錄衍生出來的,而且根目錄與開機、還原、系統修復等操作有關。根目錄所在的分區越小越好,並且應用程序所安裝的軟體最好不要與根目錄在同一個分區。
開機過程中僅有根目錄會被掛載,其他的分區會在開機完成之後才會持續進行掛載,因此根目錄下與開機過程有關的目錄就不能夠與根目錄放到不同的分區去。有如下這些目錄:
/etc:配置文件
/bin:重要執行文件
/dev:所需要的設備文件
/lib:執行文件所需的函數庫與內核所需的模塊
/sbin:重要的系統執行文件
/usr(UNIX software resource)unix操作系統軟體資源,所有系統默認的軟體都會放置在該目錄下,因此這個目錄有點類似與windows下的「C:Windows」和「C:Program files」。
/var 放置一些緩存、登錄文件以及某些軟體運行所產生的文件。
相對路徑和絕對路徑:
絕對路徑:由根目錄/開始寫起的文件名或目錄名稱。
相對路徑:相對於當前路徑
.:或者./表示當前路徑
..:或者../表示上層目錄
幾個特殊的目錄
. 代表此層目錄
.. 代表上層目錄
~ 代表「目前用戶身份」所在的主文件夾
~account 代表account這個用戶的主文件夾
幾個常見的處理目錄的命令
cd:切換目錄
剛登錄時會回到自己的主文件夾,主文件夾有一個代表符號就是~,cd ~會回到個人的主文件夾中,僅輸入cd和輸入cd ~相同。
pwd:顯示當前目錄
pwd [-p] 其中-p表示顯示當前路徑,而不是使用連接路徑。加上-p可以讓我們取得正確的目錄名稱。
mkdir:創建一個新目錄
mkdir [-mp] 目錄名稱,其中m參數表示配置文件夾的許可權。p參數表示遞歸創建所需要的所有目錄
rmdir:刪除一個空目錄
rmdir [-p] 目錄名,其中p參數表示連同上層空的目錄一起刪除。要刪除的目錄中必定不能存在其他的目錄或文件。
執行文件路徑的變數:$PATH
例如查看文件屬性的命令是ls,而ls完整的文件名是/bin/ls,為什麼我們可以在任何地方執行ls這個命令呢,這是因為環境變數PATH的幫助。當我們輸入ls的時候,系統會依照PATH的設置去每個PATH定義的目錄中查找文件名為ls的可執行文件,如果在PATH定義的目錄中含有多個文件名為ls的可執行文件,那麼先查詢到的同名命令先被執行。
默認情況下,如果用戶創建文件,則默認沒有可執行許可權(x),只有r、w這兩個選項,即默認許可權是-rw-rw-rw(666)
默認情況下,如果用戶創建目錄,則默認所有許可權均開放,即為drwx-rwx-rwx(777)
unmask的分數是指「該默認值需要拿掉的許可權」,例如上面的022表示用戶沒有被拿掉任何許可權,用戶組和其他被拿掉了寫的許可權。
如何使用unmask修改新建文件的默認許可權,直接在unmask後面加上分數就好了
比如:
···
unmask 002 就表示用戶和用戶組的讀寫許可權不被拿掉,其他會被拿掉寫的許可權
···
2.與用戶或用戶組名有關的參數
-uid n 其中n表示數字,即用戶的ID,也稱為UID
-gid n 其中n表示數字,即用戶組名的ID,也稱為GID
-user name 其中name為用戶的賬號名稱
-group name 其中name為用戶組名
-nonuser 表示尋找文件的所有者不存在在/etc/passwd中的文件
-nongroup 表示尋找文件的所有用戶組不存在於/etc/group中的文件
例如:
3.與文件許可權及名稱有關的參數
-name filename 查找文件名為filename的文件
-size [+-] SIZE 查找比size大(+)或小(-)的文件
-type TYPE表示查找文件類型為TYPE的文件
-perm mode表示查找文件許可權剛好等於mode的文件
-perm -mode表示查找文件許可權必須全部包括mode的許可權的文件
例如 查找文件許可權為-rwxr--r--的文件,即許可權744,那麼文件許可權為-rwxr-xr-x(755)的文件也會被列出來,因為-rwxr-xr-x的屬性包括了-rwxr--r--的屬性
-perm +mode表示查找文件許可權包含任一mode的許可權的文件,例如查找-rwxr-xr-x,但是另一個文件屬性包括-rw-------的文件也會被列出來,因為它有-rw屬性存在
4.其他可進行的操作
-exec command :其中command表示其他命令,-exec表示接其他命令來處理查詢的結果
-print 表示將結果列印在屏幕上
vi和vim的區別是vim是vi的高級版本
為什麼要學vim
1.所有的linux like 系統都會內置vi文本編輯器,而其他的文本編輯器不一定有
2.很多軟體的編輯介面都會主動調用vi
3.vim有程序編輯的能力,可以主動以字體顏色辨別語法的正確性,方便設計
vi的使用:
vi有三種模式:一般模式、編輯模式、命令行模式
一般模式:使用vi打開一個文件的時候就進入了一般模式,在這個模式中可以按左右鍵移動游標,可以刪除字元或刪除整行,也可以復制粘貼你的文件數據。但是不可以編輯文件。
編輯模式:在一般模式下按下「i 、I、o、O、a、A、r、R」等任何一個字母才會進入編輯模式,按esc退出編輯模式
命令行模式:在一般模式下,輸入「:、/、?」就進入了,命令行模式,在這個模式下可以進行讀取、保存文件,離開vi等操作。
編輯牧師和命令行模式之間是不可以切換的。
一般模式切換到命令行模式可用的按鈕
:w 表示將編輯的內容寫入到硬碟中
:w! 表示如果文件屬性為 只讀時,強制寫入該文件
:q表示離開vi
:q!表示如果文件有修改過,不保存強制退出,
:wq表示保存後離開
vim的用法和vi完全一樣
管道命令僅會處理standard out,對於standard error output會予以忽略
管道命令必須要能夠接收來自前一個命令的數據成為standard input繼續處理才行
選取命令:cut,grep
1.cut -d 『分隔符』 -f field
cut -c 字元范圍
-d表示分隔符
-f表示與-d分隔符一起使用,表示取分割後的第幾段
-c表示以字元為單位取出固定字元區間
以「行」為單位進行處理的選取
例如:
2.grep
grep [-acinv] [--color=auto] '查找的字元串' filename
其中
-a表示將binary文件以text文件的放肆查找數據
-c表示計算找到「查找字元串」的次數
-i表示忽略大小寫的不同
-n表示輸出行號
-v表示反向選擇,即顯示出沒有『查找字元串』內容的那一行。
--color=auto表示將找到的關鍵字部分加上顏色
例如:
首先學習一下grep命令的一些高級參數
grep [-A] [-B] [--color=auto] 『搜索字元串』 filename
其中:
-A :後面可加數字,表示after的意思,除了列出該行外,後續的n行也列出來。
-B :後面可加數字,表示before的意思,除了列出該行外,前面的n行也列出來。
--color=auto表示將選取的數據添加顏色
grep是一個很常用的命令,grep在數據中查找一個字元串時,是以整行為單位來進行數據的選取的。假如一個文件有10行,其中有兩行具有你查找的字元串,則將那兩行顯示在屏幕上,其他的丟棄。
例如
1.查找特定的字元
2.利用中括弧[]來查找集合字元
[]裡面不論有幾個字元,它都只代表某「一個」字元
3.行首與行尾字元^$
^ 出現在[]之外表示定位在首行,^ 出現在[]中表示方向選擇
4.任意一個字元.與重復字元*
.(小數點):代表一定有一個任意字元
*(星號):代表重復前一個字元0到無窮次的意思
例如:
5.限定連續RE字元范圍{}
因為符號{}在shell中是有特殊意義的,因此必須要使用轉義字元來讓它失去特殊意義才行。
例如
^word 表示待查找的字元word在首行
word$ 表示待查找的字元在結尾
.(小數點)表示一定有一個任意字元的字元
表示轉義字元,將特殊符號的特殊意義去掉
*表示重復零個或無窮多個前一個字元
[list]表示從字元集合list中找出想太選取的一個字元
[n1-n2]表示從字元集中查找想要選取的字元范圍
[^n1-n2]表示從字元集中查找不要的字元串或范圍
{n,m}表示連續n到m個前一個字元,若為{n}表示連續n個前一個字元,{n,}表示連續n個以上前一個字元。
sed命令可以將數據進行替換、刪除、新增、選取特定行等
sed [-nefr] [動作]
其中
-n表示使用安靜模式,在一般sed用法中,所有來自STDIN的數據一般都會被列出在屏幕上,但如果加上-n參數後,則只有經過sed特殊命令處理的那一行才會被列出來。
-e表示直接在命令行模式上進行sed的動作編輯
-f表示直接將sed的動作寫在一個文件內
-r表示sed的動作支持的是擴展型的正則表達式,默認是基礎型的正則表達式
-i表示直接修改讀取的內容,而不是由屏幕輸出
動作說明:
[n1[,n2]] function
n1,n2:不一定會存在,一般代表選擇進行動作的行
function 有下面的參數
a表示新增,a後面可以接字元串,而這些字元串會在新的一行出現(目前的下一行)
c表示替換,c的後面可以接字元串,這些字元串可以替換n1,n2之間的行
d表示刪除
i表示插入,i後買呢可以接字元串,而這些字元串會在新的一行出現(目前的上一行)
p表示列印,將某個選擇的數據列印出來,通常會和參數-n一起運行
s表示替換,可以直接進行替換工作,sed 『s/要被替換的字元串/新的字元串/g'
例如
awk是非常棒的數據處理工具。
awk '條件類型1{動作1} 條件類型2{動作2} 條件類型3{動作3}....' filename
awk主要是處理每一行的欄位內的數據,而默認的欄位的分隔符是空格鍵或[tab]鍵。
例如
awk內置變數有:
例如:
awk的邏輯運算符
例如:
我們發現上面會輸出第一行奇怪的數據,是因為當讀入第一行的時候,變數之間還是以空格鍵進行分隔的,所有,我們雖然定義了FS=":",但是卻在第二行後開始生效,我們可以利用BEGIN這個關鍵字。
使用awk進行計算統計
例如
格式輸出中,在printf的格式設置中,務必加上
,才能進行分行
在awk中變數可以直接使用,不用加上$符號
crontab進行工作調度
crontab [-u username] [-l | -e | -r]
-u表示只有root才能進行這個任務
-e表示編輯crontab的工作內容
-l表示查閱crontab的工作內容
-r表示刪除crontab的所有工作內容
例如
其中由6個欄位組成
分別表示的意義是:
分鍾 小時 日期 月份 周 命令
0-59 0-23 1-31 1-12 0-7 命令
其中周的0和7都表示星期日
表示任意時刻
,(逗號)表示分隔時段的意思,例如0 3,6 * * * commond,表示在3和6時執行
-(減號)表示一段時間范圍,例如20 8-12 * * * commond,表示8到12時之間每小時的20分執行。
/n(斜線)表示每隔n單位間隔的意思,例如 /5 * * * * commond,表示每隔5分鍾執行一次。
執行crontab -e這個crontab其實是/usr/bin/crontab這個執行文件。
scp -r 源文件路徑 root@ip:目標文件路徑