一驻民、文件管理
[TOC]
目前服務(wù)器端的主流文件系統(tǒng)是:ext4與xfs引几;
df -T
查看磁盤的格式化的格式竞膳,主流一般是 xfs 和ext4,系統(tǒng)盤默認(rèn)是xfs携茂,后續(xù)添加數(shù)據(jù)盤盡量也是xfs格式這樣統(tǒng)一比較好,也方便寫腳本批量掛盤诅岩。
1.文件操作
(1.1),查看文件列表:ls
# 1.查看文件的詳細(xì)信息:
$ ls -l
# 2.查看文件的詳細(xì)信息并以人性化的方式展現(xiàn)(k/M/G):
$ ls -lh
# 3.查看所有的文件(包括隱藏文件):
$ ls -a
# 4.查看所有文件的詳細(xì)信息:
$ ls -al
# 5.查看所有文件的詳細(xì)信息并以人性化的方式展現(xiàn)(k/M/G):
$ ls -alh
# 6.幫助查詢命令:
$ ls --help
# 7.分屏顯示文件列表:
$ more ls
[圖片上傳失敗...(image-b89a3a-1659493439801)]
??圖詳解
(1).第1個字母代表文件的類型:“d” 代表文件夾讳苦、“-” 代表普通文件、“c” 代表硬件字符設(shè)備吩谦、“b” 代表硬件塊設(shè)備鸳谜、“s”表示管道文件、“l(fā)” 代表軟鏈接文件式廷。
(2).后 9 個字母分別代表三組權(quán)限:文件所有者咐扭、用戶組、其他用戶擁有的權(quán)限滑废。
(3).文件的硬鏈接數(shù)
(4).文件的擁有者
(5).文件的擁有組
(6).文件的大小
(7).文件的修改時間
(8).文件名
(1.2).通配符
命令(含通配符) | 含義 |
---|---|
* | 文件代表文件名中所有字符 |
ls am* | 查找以am開頭的文件 |
ls *html | 查找結(jié)尾為html的文件 |
蝗肪? | 代表文件名中任意一個字符 |
ls ?.c | 只找第一個字符任意,后綴為.c的文件 |
ls a.? | 只找只有3個字符蠕趁,前2字符為a.薛闪,最后一個字符任意的文件 |
[] | [”和“]”將字符組括起來,表示可以匹配字符組中的任意一個俺陋』硌樱“-”用于表示字符范圍。 |
[abc] | 匹配a腊状、b诱咏、c中的任意一個 |
[a-f] | 匹配從a到f范圍內(nèi)的的任意一個字符 |
(2),輸出重定向:
# 1.將查詢出來的目錄名輸出到指定文件中(重新并覆蓋之前的,如果不存在則創(chuàng)建):
$ ls > xxx.txt
# 2.將查詢出來的目錄名輸出到指定文件中(在之前的基礎(chǔ)上追加,如果不存在則創(chuàng)建):
$ ls >> xxx.txt
(3),文件的創(chuàng)建、查看寿酌、刪除
# 1.創(chuàng)建一個空文件:
$ touch xxx.txt
# 2.查看文件的內(nèi)容:
$ cat xxx.txt
# 3.查看文件的內(nèi)容并顯示行號:
$ cat -b xxx.txt
# 4.合并文件內(nèi)容到一個新的文件中(源文件不刪除):
$ cat xxx1.txt xxx2.txt > xxx.txt
# 5.刪除一個文件:
$ rm xxx.txt
rm 參數(shù) | 含義 |
---|---|
-i | 以進(jìn)行交互式方式執(zhí)行 |
-f | 強制刪除胰苏,忽略不存在的文件,無需提示 |
-r | 遞歸地刪除目錄下的內(nèi)容醇疼,刪除文件夾時必須加此參數(shù) |
(4),管道(一個命令的輸出可以作為管道作為另一個命令的輸入):
$ ls -alh | more
(5),為兩個文件建立連接(需要指明源文件名和連接文件名):
# 1.軟連接: 當(dāng)原始文件被刪除,當(dāng)前軟連接文件則不能被訪問
$ ln -s xxx.txt soft_xxx.txt
# 2.硬鏈接: 即使原始的文件被刪除,當(dāng)前硬鏈接文件仍然可以訪問
$ ln xxx.txt hard_xxx.txt
(6),文件的查找
# find命令功能非常強大硕并,通常用來在特定的目錄下搜索符合條件(使用正則表達(dá)式)的文件,也可以用來搜索特定用戶屬主的文件秧荆。
# 1.查找/etc目錄下的所有文件中含有"root"的:
$ find /etc -name "root"
# 2.查找/etc目錄下的所有文件中"root"開頭的:
$ find /etc -name "^root"
# 3.查找/etc目錄下的所有文件中"root"結(jié)尾的:
$ find /etc -name "root$"
命令 | 含義 |
---|---|
find ./ -name test.sh | 查找當(dāng)前目錄下所有名為test.sh的文件 |
find ./ -name '*.sh' | 查找當(dāng)前目錄下所有后綴為.sh的文件 |
find ./ -name "[A-Z]*" | 查找當(dāng)前目錄下所有以大寫字母開頭的文件 |
find /tmp -size 2M | 查找在/tmp 目錄下等于2M的文件 |
find /tmp -size +2M | 查找在/tmp 目錄下大于2M的文件 |
find /tmp -size -2M | 查找在/tmp 目錄下小于2M的文件 |
find ./ -size +4k -size -5M | 查找當(dāng)前目錄下大于4k倔毙,小于5M的文件 |
find ./ -perm 777 | 查找當(dāng)前目錄下權(quán)限為 777 的文件或目錄 |
(7),文本文件的內(nèi)容搜索,也可以在通道之后搜索:
grep選項 | 含義 |
---|---|
-v | 顯示不包含匹配文本的所有行(相當(dāng)于求反) |
-n | 顯示匹配行及行號 |
-i | 忽略大小寫 |
# grep命令是文本搜索工具,grep允許對文本文件進(jìn)行模式(通過指定正則表達(dá)式)查找乙濒。如果找到匹配模式陕赃,grep打印包含模式的所有行卵蛉。
# grep [-選項] ‘搜索內(nèi)容串’文件名
# 1.搜索以a開頭的行:
$ grep "^a" 1.txt
# 2.搜索以a結(jié)尾的行:
$ grep "a$" 1.txt
3.匹配[]里中一系列字符中的任意一個:
$ grep "[a-g]kk" 1.txt
(8),文件的拷貝和移動
# cp命令的功能是將給出的文件或目錄復(fù)制到另一個文件或目錄中
1.拷貝文件到a路徑下:
1)直接復(fù)制不提示:
$ cp 1.txt a
2)顯示拷貝進(jìn)度:cp 1.txt a -v
3)已經(jīng)存在的目標(biāo)文件不提示:cp 1.txt a -f
2.拷貝文件夾a到文件夾b中(不存在則創(chuàng)建): cp a b -r
# 用戶可以使用mv命令來移動文件或目錄,也可以給文件或目錄重命名么库。
3.移動文件到a路徑下: mv 1.txt /a -v
4.移動文件夾a到文件夾b中(不存在則創(chuàng)建): mv a b -v
5.修改文件名: mv 1.txt 2.txt
選 項 | 含義 |
---|---|
-a | 該選項通常在復(fù)制目錄時使用傻丝,它保留鏈接、文件屬性诉儒,并遞歸地復(fù)制目錄葡缰,簡單而言,保持文件原有屬性忱反。 |
-f | 已經(jīng)存在的目標(biāo)文件而不提示 |
-i | 交互式復(fù)制泛释,在覆蓋目標(biāo)文件之前將給出提示要求用戶確認(rèn) |
-r | 若給出的源文件是目錄文件,則cp將遞歸復(fù)制該目錄下的所有子目錄和文件温算,目標(biāo)文件必須為一個目錄名怜校。 |
-v | 顯示拷貝進(jìn)度 |
(9),文件的壓縮與解壓縮
# tar使用格式 tar [參數(shù)] 打包文件名 文件
1.打包文件:tar -cvf xxx.tar *.txt
解壓文件:tar -xvf xxx.tar
2.打包并壓縮文件(.tar.gz):tar -zcvf xxx.tar.gz *.txt
解壓縮文件(.tar.gz):tar -zxvf xxx.tar.gz
3.打包并壓縮文件(.tar.bz2):tar -jcvf xxx.tar.bz2 *.txt
解壓縮文件(.tar.bz2):tar -jxvf xxx.tar.bz2
4.打包并壓縮文件(.tar.zip):zip xxx.zip *.txt
解壓縮文件(.tar.zip):unzip xxx.zip
5.解壓到指定路徑:tar -zxvf xxx.tar.gz -C /a
參數(shù) | 含義 |
---|---|
-c | 生成檔案文件,創(chuàng)建打包文件 |
-v | 列出歸檔解檔的詳細(xì)過程注竿,顯示進(jìn)度 |
-f | 指定檔案文件名稱茄茁,f后面一定是.tar文件,所以必須放選項最后 |
-t | 列出檔案中包含的文件 |
-x | 解開檔案文件 |
(10),文件的權(quán)限管理
1,修改文件的所有者:
使用方法:chown 用戶名 文件或目錄名
sudo chown demo xxx.txt
2,修改文件的所在組:
使用方法:chgrp 用戶組名 文件或者目錄名
chgrp demo xxx.txt
3,修改文件的權(quán)限:
(1).字母法:chmod u/g/o/a +/-/= rwx 文件
u:user 表示該文件的所有者
g:group 表示與該文件的所有者屬于同一組( group )者蔓搞,即用戶組
o:other 表示其他以外的人
a:all 表示這三者皆是
r:讀取; w:寫入; x:可執(zhí)行
+:增加權(quán)限; -:撤銷權(quán)限; =:設(shè)定權(quán)限
修改文件所有者的權(quán)限:chmod u+w XXX.txt
修改文件所有者的屬于同一組的權(quán)限:chmod g+w XXX.txt
修改其他人的權(quán)限:chmod o+w XXX.txt
修改三者的權(quán)限:chmod a+w XXX.txt
(2).數(shù)字法(讀胰丁、寫、執(zhí)行<--->4喂分、2锦庸、1;不具有任何權(quán)限是0):
例0:chmod u=rwx,g=rx,o=r filename <=======>chmod u=7,g=5,o=4 filename
例1: chmod 751 file
文件所有者:讀、寫蒲祈、執(zhí)行權(quán)限(7=4+2+1)
同組用戶:讀甘萧、執(zhí)行的權(quán)限(5=4+1)
其它用戶:執(zhí)行的權(quán)限(1=1)
例2: chmod 777 file:所有用戶擁有讀、寫梆掸、執(zhí)行權(quán)限
例3: 如果想遞歸所有目錄加上相同權(quán)限扬卷,需要加上參數(shù)"-R"
chmod 777 test/ -R 遞歸 test 目錄下所有文件加 777 權(quán)限
(11),處理INode資源耗盡的問題
1),方法一
通過找到當(dāng)前系統(tǒng)中文件最多的目錄,然后查看文件的硬連接數(shù)(因為一個文件名和一個INode號是一一對應(yīng)的關(guān)系酸钦,但是也可以多個相同的文件名對應(yīng)一個Inode號碼)怪得,刪除多余的文件,并控制文件生成的數(shù)量卑硫。
-
1徒恋,查看文件最多的目錄
這里直接指定的根目錄,當(dāng)然也可可以指定具體的目錄欢伏。
for i in /*; do echo $i; find $i | wc -l; done
-
2入挣,刪除大量文件
ls | xargs -n 1000 rm -rf
2.目錄操作
(1),展示當(dāng)前目錄:
pwd
(2),切換目錄:
1.切換到當(dāng)前用戶的主目錄: cd
2.切換到根目錄: cd /
3.切換到家目錄: cd ~
4.切換到上一層目錄: cd ..
5.當(dāng)前目錄: .
6.切換到指定目錄: cd /etc
7.可進(jìn)入上次所在的目錄: cd -
(3).創(chuàng)建和刪除目錄:
1.創(chuàng)建一個普通的文件夾:mkdir a
2.創(chuàng)建指定路徑下的文件夾(指定-p的時候是確保目錄名稱存在,如果目錄不存在的就新創(chuàng)建一個):
mkdir a/b/c/d -p
刪除一個空目錄: rmdir a
刪除一個有文件的目錄: rm -r a
(4).清除當(dāng)前屏幕中顯示的內(nèi)容
直接敲命令: clear
使用快捷鍵: ctrl+L
3.Vi編輯器
1.命令模式
# (1),進(jìn)入插入模式:
i: 插入光標(biāo)前一個字符
I: 插入行首
a: 插入光標(biāo)后一個字符
A: 插入行未
o: 向下新開一行,插入行首
O: 向上新開一行,插入行首
# (2),復(fù)制粘貼命令:
yy:復(fù)制 光標(biāo)所在的這一行
4yy:復(fù)制 光標(biāo)所在的這一行開始向下的4行
p:粘貼
# (3),刪除命令(也就是剪切,在不粘貼的情況下就是刪除):
x:刪除(剪切) 當(dāng)前光標(biāo)選中的那個,每次只刪除一個
X:刪除(剪切) 當(dāng)前光標(biāo)前面的那個,每次只刪除一個
dd:剪切(刪除) 光標(biāo)所在的這一行
2dd:剪切(刪除) 光標(biāo)所在的這一行開始向下的2行
d0:從當(dāng)前光標(biāo)開始剪切(刪除),一直到行首
dw:刪除光標(biāo)開始位置的字,包含光標(biāo)所在字符
D:從當(dāng)前的光標(biāo)開始剪切(刪除),一直到行末
# (4),移動光標(biāo)命令:
h:左 j:下 k:上 l:右
H:當(dāng)前屏幕的上方
M:當(dāng)前屏幕的中間
L:當(dāng)前屏幕的下方
{: 按段移動,上移
}: 按段移動,下移
ctrl+f------>向下翻一頁代碼
ctrl+b------>向上翻一頁代碼
ctrl+d------>向下翻半頁代碼
ctrl+u------>向上翻半頁代碼
20G:快速定位到第20行代碼
G:快速回到 整個代碼的最后一行
gg:快速回到 整個代碼的第1行
w:向后跳一個單詞的長度,即跳到下一個單詞的開始處
b:向前跳一個單詞的長度,即跳到上一個單詞的開始處
# (5),撤銷命令:
u:撤銷剛剛的操作
ctrl+r:反撤銷
# (6),可視模式下選中文本:
v:按字符移動,選中文本
V:按行移動,選中文本可視模式可以配合 d, y, >>, << 實現(xiàn)對文本塊的刪除,復(fù)制,左右移動
# (7),文本移動
>>:向右移動代碼
<<:向左移動代碼
# (8),重復(fù)命令:
.:重復(fù)執(zhí)行上一次的命令,可以配合左右移動代碼的時候使用
# (9),替換命令:
r:替換一個字符:在命令模式下先輸入r,然后可以輸入新的字符替換當(dāng)前字符
末行模式下,將光標(biāo)所在行的abc替換成123
:%s/abc/123/g
末行模式下硝拧,將第一行至第10行之間的abc替換成123
:1, 10s/abc/123/g
R:替換光標(biāo)以及后面的字符:在命令默認(rèn)下輸入R,然后輸入新的字符可以將當(dāng)前光標(biāo)之后的所有元素進(jìn)行替換
# (10),查看命令:
/:str(字符串)查找
n:在查找之后,表示下一個
N:在查找之后,表示上一個
在搜索之后一直高亮顯示,我們可以嘗試搜索一個不存在的字符便可以去除.
# 補充常見錯誤說明径筏、以及解決方法:
# (1).如果在vim中按ctrl+s后出現(xiàn)鍵盤失靈葛假,可以按ctrl+q恢復(fù)!
詳細(xì)說明:
使用vim時滋恬,如果你不小心按了 Ctrl + s后聊训,你會發(fā)現(xiàn)不能輸入任何東西了,像死掉了一般夷恍,其實vim并沒有死掉魔眨,這時vim只是停止向終端輸出而已媳维,要想退出這種狀態(tài)酿雪,只需按Ctrl + q 即可恢復(fù)正常。
2.末行模式
(1),在vim中執(zhí)行shell命令:
末行模式里輸入!,后面跟命令
(2)退出:
shift+zz:相當(dāng)于末行模式下的wq(保存并退出)
w:保存
q:退出
wq:保存并退出
q!:強制退出
(3),設(shè)置行號(只是在當(dāng)前vim打開的文檔中生效):
顯示行號(要在末行模式下輸入): :set number <====> :set nu
取消顯示行號(同樣也要在末行模式下輸入):set nonumber <====> set nonu
永久設(shè)置vim的一些屬性:更改~/.vimrc文件即可
vim ~/.vimrc
設(shè)置行號:set number
設(shè)置搜索出的內(nèi)容高亮:set hlsearch
(4),在末行模式下的替換
將光標(biāo)所在行的abc全部替換成123(其中g(shù)的固定的):
:%s/abc/123/g
將第一行至第10行之間的abc替換成123:
:1, 10s/abc/123/g
替換文中每一行的第一個 str1 為 str2:
:%s/str1/str2/