目錄
1 前言
Linux的哲學之一是一切皆文件,即計算機系統的所有設備(軟件和硬件)都可以用文件來表示,所以文件管理對於Linux系統來說就像是管家一樣,使Linux變得清晰、簡潔、高效、易用。
以我們平常使用的Windows系統的計算機爲例,其上不同類型的文件有很多,如常見的txt(文本)、jpg(圖片)、mp3(音頻),flv(視頻)格式等等。
而Linux系統上同樣也有很多不同類型的文件,常見的如
- -:表示常規文件,即f,其他程序會表示爲f;
- d:directory,目錄文件,完成路徑映射;
- b:block device,塊設備文件,支持以block爲單位進行隨機訪問;
- c:character device,字符設備文件,支持以character爲單位的線性訪問;
- l:symbolic link,符號鏈接文件,可以找到文件的路徑,也叫軟鏈接;
- p:pipe,命名管道;
- s:socket,套接字文件,在兩個進程直接進行通信時進行套接,主要用於服務提供。
2 命令行接口
我們使用Linux,都是因爲其可以長期高效穩定的運作,特別是對於企業,穩定顯得尤爲重要,其次,Linux佔用系統內存很小,我們可以盡情的壓榨計算機的性能。最重要的是Linux的發行版有很多好用免費的版本。
雖然Linux也有圖形界面(GUI),但使用命令行(CLI)效率更高,且能節省更多系統資源。基本上所有企業配置的服務器都不需要圖形界面,試想,如果都安上了圖形界面,那得多有錢纔會那麼幹啊,況且也沒必要,服務器只需要在那邊跑就行了。
3 常用文件管理命令
類似於Windows系統,Linux系統中的文件也可以查看文件路徑、文件屬性、複製、粘貼、移動、創建、刪除等等。此外,Linux還有一些特殊的文件管理命令。
在此只列出基本的語法格式,想要查更具體的用法,可用man
或help
命令:
3.1 文件查看:ls,file,tree,cat,tac,head,tail,more,less,stat,pwd
-
ls:list,列出指定目錄下的內容,類似於Wndows下的文件列表。
ls [OPTION]... [FILE]...
-
file:查看文件內容類型。
file [FILE]...
例子:
file /etc/fstab
:顯示etc目錄下的fstab文件。
-
tree:層級顯示文件,這個賊他媽好用,誰用誰知道。
-
cat:concatenate,文本文件查看工具,查看文件內容,無法編輯,就看一下。
cat [OPTION]... [FILE]...
例子:
cat -n /etc/fstab
:查看/etc/fstab文件並顯示文件行數編號。
-
tac:將文件反序輸出,與
cat
相反。 -
head:用於顯示文件的開頭的內容。在默認情況下,head命令顯示文件的頭10行內容。
head [OPTION]... [FILE]...
例子:
head -n5 /etc/fstab
:顯示/etc目錄下fstab文件的前5行內容。
-
tail:與head相反。
-
more:是一個基於vi編輯器文本過濾器,選項可參照vi編輯器,只能向前瀏覽。該命令一次顯示一屏文本,滿屏後停下來,並且在屏幕的底部出現一個提示信息,給出至今己顯示的該文件的百分比。
more [OPTIONS] FILE...
-
less:與more相反,允許用戶向前或向後瀏覽文件。按Q鍵退出less程序。
-
stat:顯示文件或文件系統狀態。
stat [OPTIONS] FILE...
例子:
stat tmp...
:顯示tmp目錄文件的狀態信息。
其中,值得注意的是Acess,Modify,Change這三個,它們分別代表時間戳裏的- access time:最近訪問時間
- modify time:最近數據更改時間
- change time:最近元數據更改時間。
- 元數據即爲描述數據的數據(data about data),主要是描述數據屬性(property)的信息,用來支持如指示存儲位置、歷史數據、資源查找、文件記錄等功能。如上圖所示,對於Linux來說,元數據指File、Size、Blocks、IO Block、directory、Device、Inode(文件索引節點號)、Links(硬鏈接次數)、Context(文件所在環境)、Uid、Gid、Access、Modify、Change、Birth。
-
pwd:顯示當前文件路徑。
3.2 文件管理:mkdir,rmdir,cp,mv,rm,install,mktemp
- mkdir:make directory,創建目錄。也可用touch來創建文件。
mkdir [OPTION]... DIRECTORY
例子:
- 使用命令行展開功能,在/tmp目錄下創建目錄:x_y, x_z, q_y, q_z和/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b。
mkdir -p /tmp/{x_{y,z},q_{y,z}} /tmp/{a1/{a,b},a2}
- 在/tmp目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2018-05-27-09-32-22。
mkdir -p /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
-
rmdir:remove directory,用來刪除空目錄。
rmdir [OPTION]... DIRECTORY
注意:子目錄被刪除之前應該是空目錄。就是說,該目錄中的所有文件必須用rm命令全部,另外,當前工作目錄必須在被刪除目錄之上,不能是被刪除目錄本身,也不能是被刪除目錄的子目錄。雖然還可以用帶有-r選項的rm命令遞歸刪除一個目錄中的所有文件和該目錄本身,但是這樣做存在很大的危險性。 -
cp:複製文件和目錄。
單源複製 cp [OPTION]... [-T] SOURCE DEST
多源複製 cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
- mv:move,用來移動或重命名文件。
注意:如果目標文件是到某一目錄文件的路徑,源文件會被移到此目錄下,且文件名不變;如果目標文件不是目錄文件,則源文件名(只能有一個)會變爲此目標文件名,並覆蓋己存在的同名文件。如果源文件和目標文件在同一個目錄下,mv的作用就是改文件名。當目標文件是目錄文件時,源文件或目錄參數可以有多個,則所有的源文件都會被移至目標文件中。所有移到該目錄下的文件都將保留以前的文件名。
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
-
rm:remove,刪除文件。
注意:所有不用的文件建議不要直接刪除,而是移動到某個專用目錄,用來模擬回收站。
rm [OPTION]... FILE...
-
install:複製文件並設置文件屬性。
-
mktemp:創建臨時文件。
注意:mktemp會將創建的臨時文件名直接返回,因此,可直接通過命令引用保存起來。
3.3 文件壓縮:gzip/gunzip,bzip2/bunzip2,xz/unxz,zip/unzip,tar
- gzip/gunzip:以
.gz
結尾的壓縮格式文件
gzip [OPTIONS] /PATH/TO/SOMEFILE...
-#:指明壓縮比1-9,默認爲6,數字越大,壓縮比就越大
-d:decompress,解壓縮,相當於gunzip
-c:將壓縮後的數據輸出至標準輸出(默認爲顯示屏)
-r:遞歸至目錄中對每個文件進行壓縮
zcat /PATH/TO/SOMEFILE.GZ:無需顯示解壓縮便可查看壓縮文件的內容
- bzip2/bunzip2:以
.bz2
結尾的壓縮格式文件
bzip [OPTIONS] /PATH/TO/SOMEFILE...
-#:指明壓縮比1-9,默認爲6,數字越大,壓縮比就越大
-d:decompress,解壓縮,相當於bunzip2
-k:壓縮後保留原文件
bzcat /PATH/TO/SOMEFILE.BZ2:無需顯示解壓縮便可查看壓縮文件的內容
- xz/unxz:以
.xz
結尾的壓縮格式文件
xz [OPTIONS] /PATH/TO/SOMEFILE...
-#:指明壓縮比1-9,默認爲6,數字越大,壓縮比就越大
-d:decompress,解壓縮,相當於bunzip2
-k:壓縮後保留原文件
xzcat /PATH/TO/SOMEFILE.BZ2:無需顯示解壓縮便可查看壓縮文件的內容
-
zip/unzip:以
.zip
結尾的壓縮格式文件,可以將多個文件壓縮歸檔指單個文件
zip ZIP_FILE.zip /PATH/TO/SOMEFILE
-
tar:可進行歸檔和壓縮文件,歸檔就是將多個文件打包爲單個文件以便於管理,默認的歸檔不會執行壓縮,歸檔不會刪除原文件
tar [OPTIONS] -c -f /PATH/TO/TARFILE.tar /PATH/TO/FILE...
-cf:歸檔並壓縮
-xf:展開歸檔,可直接使用,不用指定對應的壓縮工具
-z:對應於gzip,壓縮後的文件後綴名爲.tar.gz
-j:對應於bzip2,壓縮後的文件後綴名爲.tar.bz2
-J:對應於xz,壓縮後的文件後綴名爲.tar.xz
4 常用文本處理命令:wc,cut,sort,uniq
- wc:字符統計
- cut:文本內容切割
- sort:排序
- uniq:顯示重複的行
5 常用用戶、組管理命令
Linux操作系統是多任務(Multi-tasks)、多用戶(Multi-users)的分時操作系統。不管是Linux系統還是WIndows系統,爲了保證用戶系統和數據資料的安全,需要對每個登陸的用戶進行驗證,即賬戶密碼,又對每個用戶對應的權限有所限制,而一旦擁有相同權限的人多了,就可以把那些用戶分在一起,所以有了組,可以理解爲權限狗系統用戶。
查看用戶信息
Linux系統中用戶的登錄信息存儲在**/etc/passwd** 中,其顯示格式爲:
name:password:UID:GID:GECOS:directory:shell
name:用戶登錄的名字
password:爲用戶加密的密碼,如果顯示爲字符x,則表示密碼存儲在/etc/shadow文件中
UID:用戶標識
GID:用戶所屬基本組的組標識
GECOS:備註信息
directory:用戶的家目錄
shell:用戶的默認shell
查看組信息
與Linux用戶組信息相關的文件包括:/etc/group,/etc/gshadow
用戶存儲在/etc/group裏面的信息格式爲:
group_name:password:GID:user_list
group_name:用戶組的名字;
password:加密的用戶組密碼;
GID:用戶組標識;
user_list:以此組爲附加組的用戶列表;
4.1 用戶管理:useradd,usermod,userdel,passwd,change,id
在Linux系統中,每個使用該系統的人稱之爲用戶(User),而用戶標識(UID) 則是每個用戶的唯一標識,每個用戶的登錄名(UserID)和用戶標識(UID)在Linux系統中一一對應,通過名稱解析庫來轉換。
用戶類別:
管理員:root,其用戶標識(UID)爲0。
普通用戶
系統用戶:爲了讓後臺進程和服務類進程能夠以非管理員身份運行,通常需要爲此創建多個普通用戶,此類用戶不需要登錄到系統中。
登錄用戶:正常登錄及訪問系統時需要登錄的用戶賬號。
用戶標識:UserID,UID
16bits:二進制數字:0-65535
管理員:0
普通用戶:1-65535
系統用戶:1-499(CentOS6),1-999(CentOS7)
登錄用戶:500-60000(CentOS6),1000-60000(CentOS7)
名稱解析:名稱轉換
UserID<- ->UID
根據名稱解析庫進行轉換:/etc/passwd
- useradd:創建用戶
- usermod:修改用戶屬性
- userdel:刪除用戶
- passwd:設置用戶的認證信息,包括用戶密碼、過期時間等。
- change:更改用戶密碼過期信息
- id: 顯示用戶的真實有效ID
- chmod:可以更改用戶權限
- chown:可以更改用戶屬主和屬組
- chgrp:更改屬組
- umask::文件的權限反向掩碼,遮罩碼;新建文件或目錄的權限是減去umask所得
4.2 組管理:groupadd,groupmod,groupdel,gpasswd,newgrp
- groupadd:添加組
- groupmod:修改組屬性
- groupdel:刪除組
- gpasswd:管理組
- newgrp:臨時切換指定的組爲基本組