大家好,我是雲計算磊哥,從業20年的IT老鳥。運維培訓15年,總結了一套從入門到精通的全運維開發寶典手冊。準備用300天時間寫一套博文,手把手從安裝軟件講起,從行業到產品,從過去到未來,從理論到操作,從視頻到文檔工具,一站式。從零基礎入門到20k運維開發工程師崗位諸多就業問題。多方位全方面的給你講清楚雲計算這個行業該如何做。關注我。後續更精彩。

------------------------------------------------------------------------------------------------

      上一篇內容對Linux有一個基本的瞭解,在Linux系統中,一切皆文件,因此學習文件的管理是非常有必要的。文件管理包括創建文件、複製文件、刪除文件、移動文件、查看文件、編輯文件、壓縮文件、查找文件等操作。

一 ,文件目錄

Windows系統以多根的方式組織文件(例如C:\ 、D:\ 、E:\), 而Linux系統以單根的方式組織文件,如圖所示。

運維開發寶典005-Linux系統文件目錄與路徑、目錄與文件操作_根目錄

可以看到,所有的文件都在根目錄(/)下,其中箭頭表示指向真實存在的文件。例如,/bin實際存在於/usr/bin,/bin只是一個鏈接文件。

用户如需查看根目錄下的文件,可以使用ls命令,具體如下所示:

[root@localhost ~]# ls /
boot  etc   lib    media  opt   root  sbin  sys  usr
bin  dev   home  lib64  mnt    proc  run   srv   tmp  var

值得注意的是,輸出結果中不同顏色代表不同的文件類型,藍色表示目錄,綠色表示可執行文件,淺藍色表示鏈接文件,紅色表示壓縮文件,黃色表示設備文件等等。這些顏色是Linux系統默認的顏色,用户可以根據自己的喜好進行修改。

大多數Linux版本都遵循文件系統層次化標準(Filesystem Hierachy Standard,FHS),用户通過該標準可以瞭解特定文件的具體目錄。例如,/etc目錄主要存放系統配置文件,/dev目錄主要存放設備與接口文件。根目錄下常見的目錄介紹如表所示。

目錄

説明

/bin

存放二進制可執行文件,常用命令一般都在此處

/etc

存放系統管理和配置文件,如/etc/sysconfig/network (網卡配置)、/etc/hostname(用户名配置)、/etc/ssh/sshd_config(遠程連接)

/home

存放所有用户文件的根目錄,是用户主目錄的基點,比如用户user的主目錄就是/home/user,可以用~user表示

/usr

存放用户安裝的程序和系統程序

/tmp

存放正在執行的程序存放臨時放置

/root

超級用户的主目錄

/sbin

存放二進制可執行文件,只有root才能訪問

/var

存放運行時需要改變數據的文件,也是某些大文件的溢出區。如/var/lib/mysql(數據庫)、/var/spool/mail(郵件)、/var/spool/cron(計劃任務)、/var/log/messages(日誌)

二, 文件路徑

用户在磁盤中查找文件時,所歷經的文件夾線路稱為文件路徑,如圖所示。

運維開發寶典005-Linux系統文件目錄與路徑、目錄與文件操作_根目錄_02

在圖中,用户需要查找messages文件,可以從根目錄開始,依次通過var目錄、log目錄,然後找到messages文件。在Linux系統中,用户可以通過tree命令顯示路徑結構,具體案例詳情參考2.1.2。

文件路徑分為絕對路徑與相對路徑,接下來詳細介紹這兩種路徑。

1. 絕對路徑

絕對路徑是指從根目錄(/)開始的路徑,例如/usr、/etc/X11表示絕對路徑。用户通過cd命令以絕對路徑進入某個文件夾,具體如下所示:

[root@localhost ~]# cd /usr/share/doc/

此時,用户通過pwd命令可以查看當前工作目錄的絕對路徑,具體如下所示:

[root@localhost doc]# pwd
/usr/share/doc

以上輸出結果表示用户當前處於/usr/share/doc路徑下。

2. 相對路徑

相對路徑是指相對於當前工作目錄的路徑,例如,用户從/usr/share/doc路徑切換到/usr/share/man路徑,具體如下所示:

[root@localhost ~]# cd /usr/share/doc/
[root@localhost doc]# cd ../man
[root@localhost man]# pwd
/usr/share/man

注:“..”表示當前目錄的上層目錄,“.”表示當前目錄。

三, 目錄操作

目錄操作包括創建目錄、查看目錄、切換目錄、刪除目錄,接下來詳細介紹每種操作,具體如下所示。

1. 創建目錄

用户可以通過mkdir命令創建一個空白目錄,具體如下所示:
[root@localhost xulei]# mkdir abc
[root@localhost xulei]# ls

abc

此外,mkdir命令還可以通過添加“-p”參數來創建一個多層目錄,具體如下所示:

[root@localhost xulei]# mkdir -p aba/abb/abc
[root@localhost xulei]# cd aba/abb/abc/
[root@localhost abc]# pwd
/root/xulei/aba/abb/abc

2. 查看目錄

用户可以通過pwd命令顯示當前所在的目錄,添加“-P”參數可以顯示實際工作目錄,而非鏈接文件本身的目錄名,具體如下所示:

[root@localhost lib]# pwd
/lib
[root@localhost lib]# pwd -P
/usr/lib

用户通過“ls -a”命令可以查看隱藏的目錄與文件,具體如下所示:

[root@localhost xulei]# mkdir .add
[root@localhost xulei]# ls
aba  abb  abc
[root@localhost xulei]# ls -a 
.  ..  aba  abb  abc  .add

用户通過“ls -l”命令可以查看目錄與文件的屬性,具體如下所示:

[root@localhost xulei]# ls -l
總用量 0
drwxr-xr-x. 3 root root 17 4月   4 16:00 aba
drwxr-xr-x. 2 root root  6 4月   4 16:17 abb
drwxr-xr-x. 2 root root  6 4月   4 16:17 abc

注:“ls -l”命令可以簡寫為“ll”。

3. 切換目錄

用户通過cd命令可以切換目錄,具體如下所示:

[root@localhost ~]# cd xulei/aba/abb/abc
[root@localhost abc]# cd
[root@localhost ~]#

其中,cd不加任何路徑表示直接返回到root目錄。此外,“cd -”表示返回上次目錄,具體如下所示:

[root@localhost ~]# cd -
/root/xulei/aba/abb/abc
[root@localhost abc]#

4. 刪除目錄

用户通過rmdir命令只能刪除空目錄,具體如下所示:

[root@localhost xulei]# mkdir abc
[root@localhost xulei]# ls
abc
[root@localhost xulei]# rmdir abc
[root@localhost xulei]# ls
[root@localhost xulei]#

如果需要連同上層空目錄一起刪除,則添加“-p”參數即可,具體如下所示:

[root@localhost abd]# pwd
/root/xulei/abc/abd
[root@localhost xulei]# rmdir -p abc/abd
[root@localhost xulei]# ls
[root@localhost xulei]#

四, 文件操作

文件操作包括創建文件、查看文件、複製文件、移動文件、刪除文件,接下來詳細介紹每種操作,具體如下所示。

1. 創建文件

用户通過touch命令可以創建一個空白文件,也可以設置文件、屬性,具體如下所示:

[root@localhost xulei]# touch xulei.txt
[root@localhost xulei]# ll xulei.txt 
-rw-r--r--. 1 root root 0 3月  30 16:41 xulei.txt
[root@localhost xulei]# echo "www.localhost.com" >> xulei.txt 
[root@localhost xulei]# ll xulei.txt 
-rw-r--r--. 1 root root 14 3月  30 16:42 xulei.txt
[root@localhost xulei]# touch -d "2018-03-30 16:41" xulei.txt 
[root@localhost xulei# ls -l xulei.txt 
-rw-r--r--. 1 root root 14 3月  30 16:41 xulei.txt

查看xulei.txt文件的信息,文件時間為16:41,用echo命令寫入新的內容到abc.txt文件中,再次查看,文件時間已經變為16:42,添加“-d”參數可以修改文件時間。

2. 查看文件

(1)cat命令

用户使用cat命令可以查看內容較少的文件,使用“-n”參數可以顯示行號,“-A”顯示不可顯示控制字符(換行符/製表符)。使用cat命令查看hosts文件,具體如下所示:

[root@localhost ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 
localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 
localhost6.localdomain6

使用cat命令查看內容較長的文件時,整個文件的內容是從上到下顯示在屏幕上,用户來不及閲讀內容,就到達文件末尾。為了避免該問題,用户可以使用more命令查看較長的文件。

 (2)more命令

 more命令以逐頁的方式顯示文件內容,用户可以通過空格鍵向下翻一頁,b鍵向上翻一頁

(3)less命令

less 命令也是對文件或其他輸出進行分頁顯示,可用 pageup、pagedown與鍵盤方向鍵來上下翻看文件,查找文件內容比more更容易,最後按q鍵退出。 

(4)head命令

有些配置文件內容會很多,但真正需要查看的內容只有前幾行,head命令可以查看文件前幾行的內容,添加“-n”參數顯示每個文件的前n行。

(5)tail命令

用户使用tail命令可以查看文件後幾行的內容,例如,用户對日誌文件更關心最新的內容,需要從後往前查看。tail命令添加“-n”參數顯示每個文件的後n行,添加“-f”參數可以查看動態文件。

(6)grep 命令

用户使用grep命令可以對文件內容進行過濾、搜索關鍵詞,從而快速找到所需內容。

3. 複製文件

用户使用cp命令可以複製文件,其語法格式如下:

cp file1(源文件) file2(目標文件)

4. 移動文件

mv命令可以移動或者重命名文件或目錄,具體如下所示:

mv file1(源文件) file2(目標文件)

5. 刪除文件

rm命令可以刪除文件,其語法格式如下:

rm file2(目標文件或目錄)

五, 工作中的常見問題

生產環境中偶爾會遇到這樣的問題,一個文件在Windows系統打開過之後,在Linux系統下就不能使用,這是因為Windows系統與Linux系統使用的文本換行符有所不同,Windows系統下輸入的換行符在Linux下不會顯示為“$”,這是Linux系統下規定的特殊標記,佔一個字符大小,而Windows顯示“^”和“M”組合的符號。建議用户不要在Windows系統中修改文件,避免不必要的麻煩。