- Linux就該這么學
- 劉遄
- 1862字
- 2019-01-05 05:54:01
2.7 文件目錄管理命令
目前為止,我們學習Linux命令就像是在夯實地基,雖然表面上暫時還看不到成果,但其實大家的內功已經相當雄厚了。在Linux系統的日常運維工作中,還需要掌握對文件的創建、修改、復制、剪切、更名與刪除等操作。
1.touch命令
touch命令用于創建空白文件或設置文件的時間,格式為“touch [選項] [文件]”。
在創建空白的文本文件方面,這個touch命令相當簡捷,簡捷到沒有必要鋪開去講。比如,touch linuxprobe命令可以創建出一個名為linuxprobe的空白文本文件。對touch命令來講,有難度的操作主要是體現在設置文件內容的修改時間(mtime)、文件權限或屬性的更改時間(ctime)與文件的讀取時間(atime)上面。touch命令的參數及其作用如表2-11所示。
表2-11 touch命令的參數及其作用

接下來,我們先使用ls命令查看一個文件的修改時間,然后修改這個文件,最后再通過touch命令把修改后的文件時間設置成修改之間的時間(很多黑客就是這樣做的呢):
[root@linuxprobe ~]# ls -l anaconda-ks.cfg -rw-------. 1 root root 1213 May 4 15:44 anaconda-ks.cfg [root@linuxprobe ~]# echo "Visit the LinuxProbe.com to learn linux skills" >> anaconda-ks.cfg [root@linuxprobe ~]# ls -l anaconda-ks.cfg -rw-------. 1 root root 1260 Aug 2 01:26 anaconda-ks.cfg [root@linuxprobe ~]# touch -d "2017-05-04 15:44" anaconda-ks.cfg [root@linuxprobe ~]# ls -l anaconda-ks.cfg -rw-------. 1 root root 1260 May 4 15:44 anaconda-ks.cfg
2.mkdir命令
mkdir命令用于創建空白的目錄,格式為“mkdir [選項]目錄”。
在Linux系統中,文件夾是最常見的文件類型之一。除了能創建單個空白目錄外,mkdir命令還可以結合-p參數來遞歸創建出具有嵌套疊層關系的文件目錄。
[root@linuxprobe ~]# mkdir linuxprobe [root@linuxprobe ~]# cd linuxprobe [root@linuxprobe linuxprobe]# mkdir -p a/b/c/d/e [root@linuxprobe linuxprobe]# cd a [root@linuxprobe a]# cd b [root@linuxprobe b]#
3.cp命令
cp命令用于復制文件或目錄,格式為“cp [選項]源文件 目標文件”。
大家對文件復制操作應該不陌生,在Linux系統中,復制操作具體分為3種情況:
如果目標文件是目錄,則會把源文件復制到該目錄中;
如果目標文件也是普通文件,則會詢問是否要覆蓋它;
如果目標文件不存在,則執行正常的復制操作。
cp命令的參數及其作用如表2-12所示。
表2-12 cp命令的參數及其作用

接下來,使用touch創建一個名為install.log的普通空白文件,然后將其復制為一份名為x.log的備份文件,最后再使用ls命令查看目錄中的文件:
[root@linuxprobe ~]# touch install.log [root@linuxprobe ~]# cp install.log x.log [root@linuxprobe ~]# ls install.log x.log
4.mv命令
mv命令用于剪切文件或將文件重命名,格式為“mv [選項]源文件 [目標路徑|目標文件名]”。
剪切操作不同于復制操作,因為它會默認把源文件刪除掉,只保留剪切后的文件。如果在同一個目錄中對一個文件進行剪切操作,其實也就是對其進行重命名:
[root@linuxprobe ~]# mv x.log linux.log [root@linuxprobe ~]# ls install.log linux.log
5.rm命令
rm命令用于刪除文件或目錄,格式為“rm [選項]文件”。
在Linux系統中刪除文件時,系統會默認向您詢問是否要執行刪除操作,如果不想總是看到這種反復的確認信息,可在rm命令后跟上-f參數來強制刪除。另外,想要刪除一個目錄,需要在rm命令后面一個-r參數才可以,否則刪除不掉。我們來嘗試刪除前面創建的install.log和linux.log文件:
[root@linuxprobe ~]# rm install.log rm: remove regular empty file ‘install.log'? y [root@linuxprobe ~]# rm -f linux.log [root@linuxprobe ~]# ls [root@linuxprobe ~]#
6.dd命令
dd命令用于按照指定大小和個數的數據塊來復制文件或轉換文件,格式為“dd [參數]”。
dd命令是一個比較重要而且比較有特色的一個命令,它能夠讓用戶按照指定大小和個數的數據塊來復制文件的內容。當然如果愿意的話,還可以在復制過程中轉換其中的數據。Linux系統中有一個名為/dev/zero的設備文件,每次在課堂上解釋它時都充滿哲學理論的色彩。因為這個文件不會占用系統存儲空間,但卻可以提供無窮無盡的數據,因此可以使用它作為dd命令的輸入文件,來生成一個指定大小的文件。dd命令的參數及其作用如表2-13所示。
表2-13 dd命令的參數及其作用

例如我們可以用dd命令從/dev/zero設備文件中取出一個大小為560MB的數據塊,然后保存成名為560_file的文件。在理解了這個命令后,以后就能隨意創建任意大小的文件了:
[root@linuxprobe ~]# dd if=/dev/zero of=560_file count=1 bs=560M 1+0 records in 1+0 records out 587202560 bytes (587 MB) copied, 27.1755 s, 21.6 MB/s
dd命令的功能也絕不僅限于復制文件這么簡單。如果您想把光驅設備中的光盤制作成iso格式的鏡像文件,在Windows系統中需要借助于第三方軟件才能做到,但在Linux系統中可以直接使用dd命令來壓制出光盤鏡像文件,將它編程一個可立即使用的iso鏡像:
[root@linuxprobe ~]# dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso 7311360+0 records in 7311360+0 records out 3743416320 bytes (3.7 GB) copied, 370.758 s, 10.1 MB/s
考慮到有些讀者會糾結bs塊大小與count塊個數的關系,下面舉一個吃貨的例子進行解釋。假設小明的飯量(即需求)是一個固定的值,用來盛飯的勺子的大小即bs塊大小,而用勺子盛飯的次數即count塊個數。小明要想吃飽(滿足需求),則需要在勺子大小(bs塊大小)與用勺子盛飯的次數(count塊個數)之間進行平衡。勺子越大,用勺子盛飯的次數就越少。有上可見,bs與count都是用來指定容量的大小,只要能滿足需求,可隨意組合搭配方式。
7.file命令
file命令用于查看文件的類型,格式為“file文件名”。
在Linux系統中,由于文本、目錄、設備等所有這些一切都統稱為文件,而我們又不能單憑后綴就知道具體的文件類型,這時就需要使用file命令來查看文件類型了。
[root@linuxprobe ~]# file anaconda-ks.cfg anaconda-ks.cfg: ASCII text [root@linuxprobe ~]# file /dev/sda /dev/sda: block special