1. 程式人生 > >目錄和文件管理

目錄和文件管理

Linux目錄和文件管理;

目錄和文件管理
1.1 Linux目錄結構
Linux呈倒數結構,從/作為起點,一切文件或目錄從/表示
Linux只有一個/,類比於Windows有多個/(一個盤一個/)
技術分享圖片

例:
如表示docs目錄位置
/bin/mark/docs //就相當於Windows(C:\bin\mark\docs)類似
註:/作為起點,目錄和文件之間以/分割
常見的Linux目錄:
? /etc/ //存放所有配置文件
? /bin/ //存放所有用戶都可執行的系統命令
? /sbin/ //存放只有管理員(root)或具有管理員權限用戶才可執行的系統命令
? /mnt/ //默認為空,用於臨時掛載
? /var/ //動態存放目錄,存放動態文件;如日誌、郵件等

? /dev/ //存放設備等文件;如硬盤、光盤等
? /home/ //普通用戶家目錄
? /root/ //管理員root的家目錄
? /usr/ //用戶自行安裝軟件存放目錄
? /boot/ //存放內核、啟動文件目錄
註:Linux下一切皆文件,如鍵盤、鼠標等在Linux中都體現為一個文件,只是某些文件不能直接打開,需通過程序或軟件調用去使用
1.2 查看及檢索文件
1.cd命令詳解
切換所在目錄(相當於Windows中鼠標雙擊進入某個目錄,直接查看目錄下內容)
相對路徑和絕對路徑
? 相對路徑:從當前路徑開始表示位置;./為當前目錄,../代表上一級路徑
? 絕對路徑:從“/”開始完整表示路徑的位置
例:
表示"/etc/sysconfig/network-scripts/ifcfg-eth0"文件位置,當前位於"etc/"目錄
相對路徑 ./sysconfig/network-scripts/ifcfg-eth0或sysconfig/network-scripts/ifcfg-eth0
絕對路徑 /etc/sysconfig/network-scripts/ifcfg-eth0
表示"/etc/hosts"文件位置,當前位於"/etc/sysconfig/network-scripts/"目錄
相對路徑 ../../hosts
絕對路徑 /etc/hosts
註:一般相對比絕對使用更方便,可減少文件結構寫法,當然按習慣使用即可
例:
pwd //查看當前所在目錄
技術分享圖片

cd /etc/                        //從當前路徑切換到/etc/目錄

技術分享圖片

cd 或 cd ~                   //進入當前登錄用戶家目錄

技術分享圖片

cd -                            //進入上次切換目錄

技術分享圖片

2.cat命令詳解
顯示文件內容
cat [選項] 文件名 ... //可同時查看多個文件內容
選項:
? -n:顯示行號
? -A:顯示文件中所有的特殊符號;如"$"結束符等
例:
cat /etc/hosts //查看/etc/hosts文件內容
技術分享圖片

cat -n /etc/hosts                   //查看/etc/hosts文件內容並顯示行號

技術分享圖片
cat -A /etc/hosts //查看/etc/hosts文件內容及其所有特殊符號
技術分享圖片
3.more命令詳解
全屏方式分頁顯示文件內容
more [選項] 文件名 ... //可同時分頁查看多個文件
快捷鍵:
? Enter鍵:向下一行
? 空格鍵:向下翻一頁
? q鍵:退出
例:
more /root/anaconda-ks.cfg
技術分享圖片

註:more有一個缺點,只能往下翻,不能往上翻

4.less命令詳解
與more命令相同,但支持往上往下翻頁,並支持搜索功能
less [選項] 文件名 ...
快捷鍵:
? Page UP鍵:往上翻頁
? Page Down鍵:往下翻頁
? /文字:文件中查找指定文件
? n:跳轉到文件中搜索文字中的下一個地址
? N:跳轉到文件中搜索文件中的上一個地址
? q鍵:退出
例:
less /root/anaconda-ks.cfg
技術分享圖片
5.head命令詳解
查看文件開頭的一部分內容(默認為10行)
head -n 文件名 ...
例:
head /root/anaconda-ks.cfg //查看文件開頭10行
技術分享圖片
head -3 /root/anaconda-ks.cfg //查看文件開頭3行
技術分享圖片
6.tail命令詳解
查看文件結尾的一部分內容(默認為10行)
tail -n 文件名 ...
選項:
? -f:動態更新查看文件尾部,可實時監控文件變化(Ctrl+C鍵終止),一般用於日誌
例:
tail /root/anaconda-ks.cfg //默認查看文件結尾10行

tail -3 /root/anaconda-ks.cfg           //查看文件結尾3行

技術分享圖片
tail -f /var/log/messages //動態查看公共消息日誌文件
技術分享圖片
7.wc命令詳解
統計文件中的單詞數量(Word Count)、文件大小、文件行數等信息
wc [選項] 文件
選項:
? -l:統計行數
? -w:統計單詞個數,以空格區分
? -c:統計字節數
例:
wc /etc/hosts //統計/etc/hosts的情況
技術分享圖片
註:當使用wc命令時,不跟任何選項,默認使用wc -lwc
wc -l /etc/hosts //統計/etc/hosts文件的行數
技術分享圖片
實際應用:
統計當前Linux系統中擁有的用戶帳號數量
wc -l /etc/passwd //統計/etc/passwd文件行數,得出系統用戶數
技術分享圖片
統計某個後綴結尾的文件數量
find /etc -name "*.conf" | wc -l //統計.conf結尾的文件數量
技術分享圖片
8.grep命令詳解
在文件中查找並顯示包含指定字符串的行
grep [選項] ... 查找條件 目標文件
選項:
? -i:查找時忽略大小寫
? -v:反轉查找,輸出與條件不相符的行
查找條件:
? 需查找的字符串應以雙引號("")括起來
? "^..."表示以...開頭,"...$"表示以...結尾
? "^$"表示空行
例:
grep "f" /etc/inittab //過濾顯示文件中包含f的行(僅匹配小寫字符f)
技術分享圖片
grep -i "f" /etc/inittab //過濾顯示文件中包含f的行(忽略大小寫,大小寫f)
技術分享圖片
grep "f$" /etc/inittab //過濾顯示文件中以f結尾的行
技術分享圖片
grep "^f" /etc/inittab //過濾顯示文件中以f開頭的行
技術分享圖片
grep -v "^#" /etc/inittab //過濾顯示文件中除#開頭的其余行
技術分享圖片
grep -v "^$" /etc/inittab //過濾顯示文件中除空行外的其余行
技術分享圖片
grep -v "^#" /etc/inittab | grep -v "^$" //顯示文件中有效行(不顯示空行和#開頭行)
技術分享圖片
1.3 備份及恢復文檔
1.gzip與gunzip
使用gzip壓縮算法壓縮文件、解開壓縮文件(可減少文件占用,但不是絕對的)
gzip [-9] 文件名... //壓縮
gzip -d .gz格式的壓縮文件 或 gunzip .gz格式的壓縮文件 //解壓縮
選項:
? -9:高壓縮比,壓縮出的文件較小(從0~9,數字越大,壓縮比越高,默認為6)
? -d:用於解壓縮文件
例:
dd if=/dev/zero of=/root/test bs=100M count=1 //生成大小為100M的測試文件
技術分享圖片
gzip /root/test //使用gzip方式壓縮文件,原文件丟失變為test.gz
技術分享圖片
gzip -d /root/test.gz //解壓test.gz文件到原目錄下
技術分享圖片
註:只可解壓使用gzip方式壓縮的文件,後綴為.gz
gunzip /root/test.gz //使用gunzip命令解壓,與gzip -d效果一樣
技術分享圖片
註:只可解壓使用gzip方式壓縮的文件,後綴為.gz
2.bzip2與bunzip2
使用bzip2壓縮算法壓縮文件、解開壓縮文件(可減少文件占用,但不是絕對的)
bzip2 [-9] 文件名... //壓縮
bzip2 -d .bz2格式的壓縮文件 或 bunzip2 .bz2格式的壓縮文件 //解壓縮
選項:
? -9:高壓縮比,壓縮出的文件較小(從0~9,數字越大,壓縮比越高,默認為6)
? -d:用於解壓縮文件
例:
bzip2 /root/test //使用bzip2方式壓縮文件,原文件丟失變為test.bz2
技術分享圖片
bzip2 -d /root/test.bz2 //解壓test.bz2文件到原目錄下
技術分享圖片
bunzip2 /root/test.bz2 //使用bunzip2命令解壓,與bzip2 -d效果一樣

註:只可解壓使用bzip2方式壓縮的文件,後綴為.bz2

3.xz
使用xz壓縮算法壓縮文件、解開壓縮文件(可減少文件占用,但不是絕對的)
xz [-9] 文件名... //壓縮
xz -d .xz格式的壓縮文件 //解壓縮
選項:
? -9:高壓縮比,壓縮出的文件較小(從0~9,數字越大,壓縮比越高,默認為6)
? -d:用於解壓縮文件
例:
xz /root/test //使用xz方式壓縮文件,原文件丟失變為test.xz
xz -d /root/test.xz //解壓test.xz文件到原目錄下
技術分享圖片
註:只可解壓使用xz方式壓縮的文件,後綴為.xz
xz -9 /root/test ///高壓縮比使用xz壓縮文件,默認為6
技術分享圖片
xz -d /root/test.xz //解壓test.xz文件到原目錄下
技術分享圖片
註:只可解壓使用xz方式壓縮的文件,後綴為.xz
註:因為是測試用空文檔,所以以上壓縮比並不是太準確。以下是官方給出的三種壓縮方式正確的壓縮比:
gzip與gunzip官方壓縮比測試
Preset Compression Decompression
-0 6 MiB 1 MiB
-1 6 MiB 1 MiB
-2 10 MiB 1 MiB
-3 20 MiB 2 MiB
-4 30 MiB 3 MiB
-5 60 MiB 6 MiB
-6 100 MiB 10 MiB
-7 200 MiB 20 MiB
-8 400 MiB 40 MiB
-9 800 MiB 80 MiB
bzip2與bunzip2

官方壓縮比測試
Preset Compression Decompression
-0 6 MiB 1 MiB
-1 6 MiB 1 MiB
-2 10 MiB 1 MiB
-3 20 MiB 2 MiB
-4 30 MiB 3 MiB
-5 60 MiB 6 MiB
-6 100 MiB 10 MiB
-7 200 MiB 20 MiB
-8 400 MiB 40 MiB
-9 800 MiB 80 MiB
Xz
官方壓縮比測試
Preset Compression Decompression
-0 6 MiB 1 MiB
-1 6 MiB 1 MiB
-2 10 MiB 1 MiB
-3 20 MiB 2 MiB
-4 30 MiB 3 MiB
-5 60 MiB 6 MiB
-6 100 MiB 10 MiB
-7 200 MiB 20 MiB
-8 400 MiB 40 MiB
-9 800 MiB 80 MiB

4.三種壓縮方式對比
? gzip對於要在Unix/Linux系統下使用的文件是最好的;雖然bzip2已經普及,但gzip仍然會長期使用存在
? bzip2使用了和gzip不同的算法,並且會產生比gzip更小的文件,但需花費更長的時間進行壓縮
? xz提供最好的壓縮率,但也會花費相當長的時間。比gzip、bzip2新,但有些系統有可能未安裝(可以自行安裝)
總結:xz > bzip2 > gzip
5.tar
制作歸檔文件、釋放歸檔文件;將多個文件或文件夾歸檔為一個文件
tar [選項] ... 歸檔文件名 源文件或目錄 //創建歸檔文件
tar [選項] ... 歸檔文件名 [-C 目標目錄] //解壓歸檔文件
選項:
? -z:調用gzip程序進行壓縮或解壓
? -j:調用bzip2程序進行壓縮或解壓
? -J:調用xz程序進行壓縮或程序
? -c:創建.tar格式的包文件
? -x:解壓.tar格式的包文件
? -t:列表查看包內文件
? -v:輸出詳細信息
? -f:使用歸檔文件
? -p:打包時保留原始文件及目錄的權限
? -C:解包時指定釋放的目標文件夾
? -P:歸檔時以絕對路徑歸檔(可解決"tar: Removing leading ‘/‘ from member names"問題)
註:使用tar歸檔,源文件或文件夾不會丟失,依然存在(類似Windows的壓縮工具)
例:
創建歸檔文件
tar -zcvf /root/ceshi.tar.gz /boot/ /bin/
//將/boot/和/bin/目錄使用gzip方式歸檔為一個文件,放到/root/下取名為ceshi.tar.gz
技術分享圖片
技術分享圖片
tar -jcvf /root/ceshi.tar.bz2 /boot/ /bin/

//將/boot/和/bin/目錄使用bzip2方式歸檔為一個文件,放到/root/下取名為ceshi.tar.bz2
技術分享圖片
tar -Jcvf /root/ceshi.tar.xz /boot/ /bin/

//將/boot/和/bin/目錄使用xz方式歸檔為一個文件,放到/root/下取名為ceshi.tar.xz
技術分享圖片
ls -lh /root/ceshi*
//列表查看/root/目錄下以ceshi開頭的文件
技術分享圖片
查看歸檔文件(查看歸檔文件內容,不做解壓操作)
tar -ztvf /root/ceshi.tar.gz //查看使用gzip方式壓縮的ceshi.tar.gz文件
技術分享圖片
tar -jtvf /root/ceshi.tar.bz2 //查看使用bzip2方式壓縮的ceshi.tar.bz2文件
技術分享圖片
tar -Jtvf /root/ceshi.tar.xz //查看使用xz方式壓縮的ceshi.tar.xz文件
技術分享圖片
註:tar歸檔文件查看時,只能使用對應壓縮方式查看;如使用gzip方式壓縮(-z),查看或解壓時必須使用gzip方式查看或解壓(-z),否則會出現
"bzip2: (stdin) is not a bzip2 file.
tar: Child returned status 2
tar: Error is not recoverable: exiting now"等報錯
解壓歸檔文件(如解壓時不使用-C選項,則解壓到原歸檔文件目錄)
tar -zxvf /root/ceshi.tar.gz -C /tmp/
//將使用gzip方式壓縮的ceshi.tar.gz歸檔文件解壓到/tmp/目錄下
技術分享圖片
tar -jxvf /root/ceshi.tar.bz2 -C /tmp
//將使用bzip2方式壓縮的ceshi.tar.bz2歸檔文件解壓到/tmp/目錄下
技術分享圖片
tar -Jxvf /root/ceshi.tar.xz -C /tmp
//將使用xz方式壓縮的ceshi.tar.xz歸檔文件解壓到/tmp/目錄下
技術分享圖片
註:tar解壓時一樣,采用對應壓縮方式的,必須采用對應壓縮方式解壓;並且在使用"-C"選項時,目標必須為一個目錄,而且必須存在

目錄和文件管理