【Linux命令】文件目錄管理命令7個(touch、mkdir、cp、mv、rm、dd、file)

目錄

1、touch命令

  touch命令用於建立或設置文件的時間(touch命令的-a,-m,-t,-d參數能夠分別修改atime、ctime、mtime),這裏能夠參考我上篇文章「文本文件編輯命令」第八個命令的補充部分有touch修改時間的介紹http://www.javashuo.com/article/p-veuxkqqs-be.htmlhtml

  touch命令很簡單,比較複雜的是設置文件內容的修改時間(mtime),文件權限或屬性的更改時間(ctime)與文件的讀取時間(atime)。shell

PS:建立文件至關因而修改文件的屬性,時間以當前時間爲準。文件不存在時建立空白文件;文件存在時,並不會覆蓋文件,也不會將文件中已存在的內容清空。數據庫

格式:centos

touch [選項] 文件名 touch [-acfm][-d<日期時間>][-r<參考文件或目錄>] [-t<日期時間>][--help][--version][文件…]

參數:安全

-a或--time=atime或--time=access或--time=use  改變檔案的讀取時間記錄。 -m或--time=mtime或--time=modify 改變檔案的修改時間記錄。 -c,--no-create 假如目的檔案不存在,不會創建新的檔案。 -f 不使用,是爲了與其餘 unix 系統的相容性而保留。 -r, --reference=FILE 使用參考檔的時間記錄能夠設置與參考文件的時間一致,與 --file 的效果同樣。 -d, --date=STRING 設定時間與日期,可使用各類不一樣的格式。(同時修改atime和mtime) -t STAMP  設定檔案的時間記錄,格式與 date 指令相同。

PS:-t參數:[[CC]YY]MMDDhhmm[.ss] 。CC爲年數中的前兩位,即」世紀數」;YY爲年數的後兩位,即某世紀中的年數.若是不給出CC的值,則touch將把年數CCYY限定在1969--2068以內.MM爲月數,DD爲天,hh 爲小時數(幾點),mm爲分鐘數,SS爲秒數.此處秒的設定範圍是0--61,這樣能夠處理閏秒.這些數字組成的時間是環境變量TZ指定的時區中的一個時間。因爲系統的限制,早於1970年1月1日的時間是錯誤的。bash

實例:服務器

1)若是文件不存在則不建立文件dom


[root@VM_0_10_centos shellScript]# touch -c hellossh


 2)按照file1.txt文件的時間,將file2.txt的時間更新爲file1.txt文件的時間一致。工具



3)設置文件的時間戳


[root@VM_0_10_centos shellScript]# touch -t 201910310928.10 file1.txt
[root@VM_0_10_centos shellScript]# ll file1.txt
-rw-r--r-- 1 root root 54 Oct 31 09:28 file1.txt


 4)將時間修改成指定時間(和上面的案例同樣的效果)

  首先咱們先查看下文件信息,而後經過echo修改文件,最後用touch -d指定爲原來的時間,這樣就能形成文件未被改動的假象(通常黑客很喜歡這樣操做)


2、mkdir命令

  mkdir命令用於建立空白目錄。與-p參數連用,能夠遞歸建立目錄,若是父目錄不存在則先建立父目錄在建立子目錄,若是存在,則不建立父目錄,直接建立子目錄。

PS:建立已存在的目錄會報錯,加上-p能夠解決

格式:

Usage: mkdir [OPTION]... DIRECTORY...

選項:

-m, --mode=MODE   爲目錄指定訪問權限,與chmod相似。 不是a=rwx - umask -p, --parents 若是目錄已經存在,則不會有錯誤提示。若父目錄不存在,將會建立父目錄。該選項經常使用於建立級聯目錄。 -v, --verbose 爲每一個目錄顯示提示信息。
-Z set SELinux security context of each created directory to the default type --context[=CTX] like -Z, or if CTX is specified then set the SELinux or SMACK security context to CTX

實例:

1)建立權限爲777的的目錄(目錄默認權限爲777-umask)


[root@VM_0_10_centos shellScript]# mkdir -m 777 dir1

[root@VM_0_10_centos shellScript]# ll -d dir1/
drwxrwxrwx 2 root root 4096 Oct 31 10:16 dir1/


 PS:爲目錄指定權限,指定的權限爲mode-umask。例如,mode=rx,umask=2,則最終權限爲555-2=554,即rw-rw-r--。

2)建立目錄時顯示輸出信息


[root@VM_0_10_centos shellScript]# mkdir -v dir2
mkdir: created directory ‘dir2’


 3)一條命令建立多個目錄(一個項目結構)


[root@VM_0_10_centos shellScript]# mkdir -vp scf/{bin/,doc/{info,prouct},lib/,logs/{info,product},service/deploy/{info,produ
ct}}

 PS:多個目錄用大括號"{}"括起來,並用逗號分隔。逗號先後不能有空白。

3、cp命令

  cp命令用於複製文件或目錄。

格式:

Usage: cp [OPTION]... [-T] SOURCE DEST or: cp [OPTION]... SOURCE... DIRECTORY or: cp [OPTION]... -t DIRECTORY SOURCE...

PS:

  • 源文件:指定源文件列表。默認狀況下,cp命令不能複製目錄,若是要複製目錄,則必須使用-R/r選項
  • 目標文件:指定目標文件。當「源文件」爲多個文件時,要求「目標文件」爲指定的目錄。
  • 全部目標文件目錄必須存在,由於cp命令沒有建立目錄的權限

複製的三種狀況:

  1)若是目標文件是目錄,會把源文件複製到該目錄中;

  2)若是目標文件也是普通文件,則會詢問是否要覆蓋它;

  3)若是目標文件不存在,則正常執行復制操做;

選項:

-a:此參數的效果和同時指定"-dpR"參數相同; -d:當複製符號鏈接時,把目標文件或目錄也創建爲符號鏈接,並指向與源文件或目錄鏈接的原始文件或目錄;(對硬連接無效) -R/r:遞歸處理,將指定目錄下的全部文件與子目錄一併處理; -f:強行復制文件或目錄,不論目標文件或目錄是否已存在; -i:覆蓋既有文件以前先詢問用戶; -l:對源文件創建硬鏈接,而非複製文件; -s:對源文件創建符號鏈接,而非複製文件; -p:保留源文件或目錄的屬性; -u:使用這項參數後只會在源文件的更改時間較目標文件更新時或是名稱相互對應的目標文件並不存在時,才複製文件; -S:在備份文件時,用指定的後綴「SUFFIX」代替文件的默認後綴; -b:覆蓋已存在的文件目標前將目標文件備份; -v:詳細顯示命令執行的操做。

PS:「-l」 和 「-s」 選項

若是使用 「-l」 選項,則目標文件會被創建爲源文件的硬連接;若是使用了 「-s」 選項,則目標文件會被創建爲源文件的軟連接。

這兩個選項和 「-d」 選項不一樣,「d」 選項要求源文件必須是軟連接,目標文件纔會複製爲軟連接;而 「-l」 和 「-s」 選項的源文件只需是普通文件,目標文件就能夠直接複製爲硬連接和軟連接。

 實例:

1)複製文件的同時並重命名文件(將score文件複製到當前目錄並將名稱改成copyScore.txt)


[root@VM_0_10_centos shellScript]# ll score.txt
-rw-r--r-- 1 root root 110 Oct 21 14:53 score.txt
[root@VM_0_10_centos shellScript]# cp score.txt copyScore.txt

[root@VM_0_10_centos shellScript]# ll *core.txt
-rw-r--r-- 1 root root 110 Nov 1 11:08 copyScore.txt
-rw-r--r-- 1 root root 110 Oct 21 14:53 score.txt


 2)交互式的將當前目錄下以sh結尾的文件複製到/tmp/sh目錄下(首先sh目錄要存在)


 [root@VM_0_10_centos shellScript]# mkdir -p /tmp/sh


 3)複製時保留文件屬性(在進行備份數據時很重要,由於cp複製是以當前時間和當前用戶爲爲屬性) 


 [root@VM_0_10_centos shellScript]# cp -p today.txt copy.txt


 

4、mv命令

  mv命令用於剪切文件或文件的重命名。剪切操做不一樣於複製操做,他會把源文件刪除掉,只保留剪切後的文件。若是在同一目錄中對一個文件進行剪切操做,其實就是對文件進行重命名。

格式:

Usage: mv [OPTION]... [-T] SOURCE DEST or: mv [OPTION]... SOURCE... DIRECTORY or: mv [OPTION]... -t DIRECTORY SOURCE... Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

選項:

-i: 若指定目錄已有同名文件,則先詢問是否覆蓋舊文件; -f: 在mv操做要覆蓋某已有的目標文件時不給任何指示; -b :若需覆蓋文件,則覆蓋前先行備份。 -u :若目標文件已經存在,且 source 比較新,纔會更新(update) -t  : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目標目錄,該選項適用於移動多個源文件到一個目錄的狀況,此時目標目錄在前,源文件在後。

實例:

1)將info目錄放入logs目錄中。注意,若是logs目錄不存在,則該命令將info更名爲logs。


 mv info/ logs


 2)將多個文件移動到指定目錄下


 

 PS:可使用正則匹配,也能夠將要剪切的文件一個一個寫上,空格隔開便可


 3)將文件file1複製到指定目錄,若是指定目錄下已經存在file1,則詢問是否覆蓋


 PS:若是不想有提示,加-f參數,強制覆蓋(該操做比較危險,使用該參數前先確認是否要強制覆蓋)

5、rm命令

  rm命令用於刪除文件或目錄。默認爲刪除文件,若是須要刪除目錄,加上-r參數。每次刪除前會詢問是否須要刪除。想不出現這些確認信息,加-f參數,這裏,我不介意你們加上-f參數哈。我本身也吃過一次虧,也是使用-rf參數,直接將服務器生產環境上/usr/目錄下的文件所有刪除了,致使命令所有使用不了,ssh,scp命令也使用不了,後面是聯繫的服務器供應商重裝系統解決的。真的是有驚無險。

格式:

rm [選項] 文件

選項:

-i 刪除前逐一詢問確認(交互式)。 -f 即便原檔案屬性設爲惟讀,亦直接刪除,無需逐一確認。 -r, -R, --recursive 將目錄及如下之檔案亦逐一刪除。
-I 刪除文件超過3個或遞歸刪除時,給與交互式一次(僅提示一次確認)
--no-preserve-root 不特殊處理根目錄(慎用)

PS:-I(大寫I)或 --interactive=once 選項(表示開啓交互一次),則 rm 命令會提示用戶是否繼續整個刪除操做,若是用戶迴應不是確認(即沒有回覆 y),則整個命令馬上終止。

實例:

1)刪除多個文件,中間使用空格隔開便可。

2)刪除不存在的文件,可使用-f參數強制,忽略錯誤,若是不使用會報錯「沒有這個目錄」

3)刪除空目錄可使用-d參數

6、dd命令

  dd命令用於按照指定大小和個數的數據庫來複制或轉換文件。/dev/zero是一個設備文件,該文件不會佔用系統存儲空間,但卻能提供無窮無盡的數據。能夠將它做爲dd的輸入文件,來生成指定大小的文件。

格式:

Usage: dd [OPERAND]...
  or:  dd OPTION

選項:

if 輸入的文件名 of 輸出的文件名 bs 同時設置讀入/輸出的每一個「塊」的大小 ibs=bytes:一次讀入bytes個字節,即指定一個塊大小爲bytes個字節。 obs=bytes:一次輸出bytes個字節,即指定一個塊大小爲bytes個字節。 cbs=bytes:一次轉換bytes個字節,即指定轉換緩衝區大小。 count 設置要複製「塊」的個數 skip=blocks:從輸入文件開頭跳過blocks個塊後再開始複製。 seek=blocks:從輸出文件開頭跳過blocks個塊後再開始複製。 注意:一般只用當輸出文件是磁盤或磁帶時纔有效,即備份到磁盤或磁帶時纔有效。 conv=conversion:用指定的參數轉換文件。 ascii:轉換ebcdic爲ascii ebcdic:轉換ascii爲ebcdic ibm:轉換ascii爲alternate ebcdic block:把每一行轉換爲長度爲cbs,不足部分用空格填充 unblock:使每一行的長度都爲cbs,不足部分用空格填充 lcase:把大寫字符轉換爲小寫字符 ucase:把小寫字符轉換爲大寫字符 swab:交換輸入的每對字節 noerror:出錯時不中止 notrunc:不截短輸出文件 sync:將每一個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊。

實例:

1)使用dd命令,從社保文件/devzero文件中取出一個大小爲560MB的數據塊



 2)若是想從光驅設備中的光盤製做成iso鏡像文件,可使用dd命令來壓制出光盤鏡像文件,將它變成一個可當即使用的iso鏡像。



PS:bs至關於勺子大小,count至關於勺子盛飯的次數;勺子越大,勺子盛飯次數就越少。bs和count都是用於指定容量的大小,只要知足需求,能夠任意搭配。 

3)將本地/dev/vda1整盤備份到/dev/vda1_bak(在操做的時候考慮下本身服務器或虛擬機的磁盤大小)


 [root@VM_0_10_centos shellScript]# dd if=/dev/vda1 of=/dev/vda1_bak


 PS:這裏你能夠在運行這條命令以前查看下磁盤容量,運行完以後再查看下磁盤容量的變化

4)從備份文件恢復到指定盤 


dd if=/dev/vda1_bak of=/dev/vda1 


 5)備份today.txt全盤數據,並利用gzip工具進行壓縮,保存到指定路徑(dd好像不能備份目錄)



 6)將備份的文件恢復到指定的文件或數據盤(-d爲解壓,-c壓縮)



7)備份與恢復MBR(磁盤開始的512個字節大小的MBR信息到指定文件)

 備份:dd if=/dev/hda of=/root/image count=1 bs=512

count=1指僅拷貝一個塊;bs=512指塊大小爲512個字節。

恢復:dd if=/root/image of=/dev/had

8)備份軟盤


 


9)拷貝內存內容到硬盤


PS:這裏我查了一些資料,可是沒有解決掉這個問題,說是內核中限制了複製的容量。


 10)拷貝光盤內容到指定文件夾,並保存爲cd.iso文件 


dd if=/dev/cdrom(hdc) of=/root/cd.iso


11)增長swap分區文件的大小 


第一步:建立一個大小爲256M的文件:
1
dd  if = /dev/zero  of= /swapfile  bs=1024 count=262144
第二步:把這個文件變成swap文件(設置交換分區文件):
1
mkswap  /swapfile
第三步:啓用這個swap文件(當即啓用交換分區內容):
1
swapon  /swapfile
PS:這裏會出現 insecure permissions 0777, 0600 suggested. 意思是建議把swap設置成644或600權限。 
第四步:編輯/etc/fstab文件,使在每次開機時自動加載swap文件:
1
swapfile    swap    swap    default   0 0

 參考網址:http://www.javashuo.com/article/p-oodzswtm-g.html

       http://www.javashuo.com/article/p-kubymsgl-eh.html

12)銷燬磁盤數據


dd if=/dev/urandom of=/dev/hda1


 PS:利用隨機的數據填充硬盤,在某些必要的場合能夠用來銷燬數據。

13)測試硬盤的讀寫速度



PS:經過以上兩個命令輸出的命令執行時間,能夠計算出硬盤的讀、寫速度。

14)肯定硬盤的最佳塊大小:


 經過比較以上命令輸出中所顯示的命令執行時間,便可肯定系統最佳的塊大小。


 15)修復硬盤 


dd if=/dev/sda of=/dev/sda dd if=/dev/hda of=/dev/hda


 PS:當硬盤較長時間(一年以上)放置不使用後,磁盤上會產生magnetic flux point,當磁頭讀到這些區域時會遇到困難,並可能致使I/O錯誤。當這種狀況影響到硬盤的第一個扇區時,可能致使硬盤報廢。上邊的命令有可能使這些數據起死回生。而且這個過程是安全、高效的。

16)利用netcat遠程備份(沒搞懂)

先安裝nc:# yum -y install nc

dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234

在源主機上執行此命令備份/dev/hda:netcat -l -p 1234 | dd of=/dev/hdc bs=16065b

在目的主機上執行此命令來接收數據並寫入/dev/hdc

netcat -l -p 1234 | bzip2 > partition.img

netcat -l -p 1234 | gzip > partition.img
PS:以上兩條指令是目的主機指令的變化分別採用bzip二、gzip對數據進行壓縮,並將備份文件保存在當前目錄。
將一個很大的視頻文件中的第i個字節的值改爲0x41(也就是大寫字母A的ASCII值)
echo A | dd of=bigfile seek=$i bs=1 count=1 conv=notrunc

7、file命令

  file命令用於查看文件的類型。

格式:

file [參數] 文件

參數:

-b  列出辨識結果時,不顯示文件名稱。 -c  詳細顯示指令執行過程,便於排錯或分析程序執行的情形。 -f<名稱文件>  指定名稱文件,其內容有一個或多個文件名稱時,讓file依序辨識這些文件,格式爲每列一個文件名稱。 -L  直接顯示符號鏈接所指向的文件的類別。 -m<魔法數字文件>  指定魔法數字文件。 -v  顯示版本信息。 -z  嘗試去解讀壓縮文件的內容。

實例:

1)查看文件類型

相關文章
相關標籤/搜索