【Linux命令】文件目录管理命令7个(touch、mkdir、cp、mv、rm、dd、file)
目錄
touch創(chuàng)建空白文檔或設(shè)置文件時間
mkdir創(chuàng)建空白目錄
cp復(fù)制文件或目錄
mv剪切文件或重命名文件
rm刪除文件或目錄
dd按照指定大小和個數(shù)的數(shù)據(jù)庫來復(fù)制文件或轉(zhuǎn)換文件
file查看文件類型
一、touch命令
touch命令用于創(chuàng)建或設(shè)置文件的時間(touch命令的-a,-m,-t,-d參數(shù)可以分別修改atime、ctime、mtime),這里可以參考我上篇文章“文本文件編輯命令”第八個命令的補充部分有touch修改時間的介紹https://www.cnblogs.com/HeiDi-BoKe/p/11757961.html。
touch命令很簡單,比較復(fù)雜的是設(shè)置文件內(nèi)容的修改時間(mtime),文件權(quán)限或?qū)傩缘母臅r間(ctime)與文件的讀取時間(atime)。
PS:創(chuàng)建文件相當(dāng)于是修改文件的屬性,時間以當(dāng)前時間為準(zhǔn)。文件不存在時創(chuàng)建空白文件;文件存在時,并不會覆蓋文件,也不會將文件中已存在的內(nèi)容清空。
格式:
touch [選項] 文件名 touch [-acfm][-d<日期時間>][-r<參考文件或目錄>] [-t<日期時間>][--help][--version][文件…]
參數(shù):
-a或--time=atime或--time=access或--time=use 改變檔案的讀取時間記錄。 -m或--time=mtime或--time=modify 改變檔案的修改時間記錄。 -c,--no-create 假如目的檔案不存在,不會建立新的檔案。 -f 不使用,是為了與其他 unix 系統(tǒng)的相容性而保留。 -r, --reference=FILE 使用參考檔的時間記錄可以設(shè)置與參考文件的時間一致,與 --file 的效果一樣。 -d, --date=STRING 設(shè)定時間與日期,可以使用各種不同的格式。(同時修改atime和mtime) -t STAMP 設(shè)定檔案的時間記錄,格式與 date 指令相同。
PS:-t參數(shù):[[CC]YY]MMDDhhmm[.ss] 。CC為年數(shù)中的前兩位,即”世紀(jì)數(shù)”;YY為年數(shù)的后兩位,即某世紀(jì)中的年數(shù).如果不給出CC的值,則touch將把年數(shù)CCYY限定在1969--2068之內(nèi).MM為月數(shù),DD為天,hh為小時數(shù)(幾點),mm為分鐘數(shù),SS為秒數(shù).此處秒的設(shè)定范圍是0--61,這樣可以處理閏秒.這些數(shù)字組成的時間是環(huán)境變量TZ指定的時區(qū)中的一個時間。由于系統(tǒng)的限制,早于1970年1月1日的時間是錯誤的。
實例:
1)如果文件不存在則不創(chuàng)建文件
[root@VM_0_10_centos shellScript]# touch -c hello
2)按照file1.txt文件的時間,將file2.txt的時間更新為file1.txt文件的時間一致。
3)設(shè)置文件的時間戳
[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指定為原來的時間,這樣就能造成文件未被改動的假象(一般黑客很喜歡這樣操作)
二、mkdir命令
mkdir命令用于創(chuàng)建空白目錄。與-p參數(shù)連用,可以遞歸創(chuàng)建目錄,如果父目錄不存在則先創(chuàng)建父目錄在創(chuàng)建子目錄,如果存在,則不創(chuàng)建父目錄,直接創(chuàng)建子目錄。
PS:創(chuàng)建已存在的目錄會報錯,加上-p可以解決
格式:
Usage: mkdir [OPTION]... DIRECTORY...
選項:
-m, --mode=MODE 為目錄指定訪問權(quán)限,與chmod類似。 不是a=rwx - umask -p, --parents 如果目錄已經(jīng)存在,則不會有錯誤提示。若父目錄不存在,將會創(chuàng)建父目錄。該選項常用于創(chuàng)建級聯(lián)目錄。 -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)創(chuàng)建權(quán)限為777的的目錄(目錄默認(rèn)權(quán)限為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:為目錄指定權(quán)限,指定的權(quán)限為mode-umask。例如,mode=rx,umask=2,則最終權(quán)限為555-2=554,即rw-rw-r--。
2)創(chuàng)建目錄時顯示輸出信息
[root@VM_0_10_centos shellScript]# mkdir -v dir2
mkdir: created directory ‘dir2’
3)一條命令創(chuàng)建多個目錄(一個項目結(jié)構(gòu))
[root@VM_0_10_centos shellScript]# mkdir -vp scf/{bin/,doc/{info,prouct},lib/,logs/{info,product},service/deploy/{info,produ
ct}}
PS:多個目錄用大括號"{}"括起來,并用逗號分隔。逗號前后不能有空白。
三、cp命令
cp命令用于復(fù)制文件或目錄。
格式:
Usage: cp [OPTION]... [-T] SOURCE DEST or: cp [OPTION]... SOURCE... DIRECTORY or: cp [OPTION]... -t DIRECTORY SOURCE...
PS:
源文件:指定源文件列表。默認(rèn)情況下,cp命令不能復(fù)制目錄,如果要復(fù)制目錄,則必須使用-R/r選項;
目標(biāo)文件:指定目標(biāo)文件。當(dāng)“源文件”為多個文件時,要求“目標(biāo)文件”為指定的目錄。
所有目標(biāo)文件目錄必須存在,因為cp命令沒有創(chuàng)建目錄的權(quán)限
復(fù)制的三種情況:
1)如果目標(biāo)文件是目錄,會把源文件復(fù)制到該目錄中;
2)如果目標(biāo)文件也是普通文件,則會詢問是否要覆蓋它;
3)如果目標(biāo)文件不存在,則正常執(zhí)行復(fù)制操作;
選項:
-a:此參數(shù)的效果和同時指定"-dpR"參數(shù)相同; -d:當(dāng)復(fù)制符號連接時,把目標(biāo)文件或目錄也建立為符號連接,并指向與源文件或目錄連接的原始文件或目錄;(對硬鏈接無效) -R/r:遞歸處理,將指定目錄下的所有文件與子目錄一并處理; -f:強行復(fù)制文件或目錄,不論目標(biāo)文件或目錄是否已存在; -i:覆蓋既有文件之前先詢問用戶; -l:對源文件建立硬連接,而非復(fù)制文件; -s:對源文件建立符號連接,而非復(fù)制文件; -p:保留源文件或目錄的屬性; -u:使用這項參數(shù)后只會在源文件的更改時間較目標(biāo)文件更新時或是名稱相互對應(yīng)的目標(biāo)文件并不存在時,才復(fù)制文件; -S:在備份文件時,用指定的后綴“SUFFIX”代替文件的默認(rèn)后綴; -b:覆蓋已存在的文件目標(biāo)前將目標(biāo)文件備份; -v:詳細(xì)顯示命令執(zhí)行的操作。
PS:“-l” 和 “-s” 選項
如果使用 “-l” 選項,則目標(biāo)文件會被建立為源文件的硬鏈接;如果使用了 “-s” 選項,則目標(biāo)文件會被建立為源文件的軟鏈接。
這兩個選項和 “-d” 選項不同,“d” 選項要求源文件必須是軟鏈接,目標(biāo)文件才會復(fù)制為軟鏈接;而 “-l” 和 “-s” 選項的源文件只需是普通文件,目標(biāo)文件就可以直接復(fù)制為硬鏈接和軟鏈接。
實例:
1)復(fù)制文件的同時并重命名文件(將score文件復(fù)制到當(dāng)前目錄并將名稱改為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)交互式的將當(dāng)前目錄下以sh結(jié)尾的文件復(fù)制到/tmp/sh目錄下(首先sh目錄要存在)
[root@VM_0_10_centos shellScript]# mkdir -p /tmp/sh
3)復(fù)制時保留文件屬性(在進(jìn)行備份數(shù)據(jù)時很重要,因為cp復(fù)制是以當(dāng)前時間和當(dāng)前用戶為為屬性)
[root@VM_0_10_centos shellScript]# cp -p today.txt copy.txt
四、mv命令
mv命令用于剪切文件或文件的重命名。剪切操作不同于復(fù)制操作,他會把源文件刪除掉,只保留剪切后的文件。如果在同一目錄中對一個文件進(jìn)行剪切操作,其實就是對文件進(jìn)行重命名。
格式:
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操作要覆蓋某已有的目標(biāo)文件時不給任何指示; -b :若需覆蓋文件,則覆蓋前先行備份。 -u :若目標(biāo)文件已經(jīng)存在,且 source 比較新,才會更新(update) -t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目標(biāo)目錄,該選項適用于移動多個源文件到一個目錄的情況,此時目標(biāo)目錄在前,源文件在后。
實例:
1)將info目錄放入logs目錄中。注意,如果logs目錄不存在,則該命令將info改名為logs。
mv info/ logs
2)將多個文件移動到指定目錄下
或
PS:可以使用正則匹配,也可以將要剪切的文件一個一個寫上,空格隔開即可
3)將文件file1復(fù)制到指定目錄,如果指定目錄下已經(jīng)存在file1,則詢問是否覆蓋
PS:如果不想有提示,加-f參數(shù),強制覆蓋(該操作比較危險,使用該參數(shù)前先確認(rèn)是否要強制覆蓋)
五、rm命令
rm命令用于刪除文件或目錄。默認(rèn)為刪除文件,如果需要刪除目錄,加上-r參數(shù)。每次刪除前會詢問是否需要刪除。想不出現(xiàn)這些確認(rèn)信息,加-f參數(shù),這里,我不介意大家加上-f參數(shù)哈。我自己也吃過一次虧,也是使用-rf參數(shù),直接將服務(wù)器生產(chǎn)環(huán)境上/usr/目錄下的文件全部刪除了,導(dǎo)致命令全部使用不了,ssh,scp命令也使用不了,后面是聯(lián)系的服務(wù)器供應(yīng)商重裝系統(tǒng)解決的。真的是有驚無險。
格式:
rm [選項] 文件
選項:
-i 刪除前逐一詢問確認(rèn)(交互式)。 -f 即使原檔案屬性設(shè)為唯讀,亦直接刪除,無需逐一確認(rèn)。 -r, -R, --recursive 將目錄及以下之檔案亦逐一刪除。
-I 刪除文件超過3個或遞歸刪除時,給與交互式一次(僅提示一次確認(rèn))
--no-preserve-root 不特殊處理根目錄(慎用)
PS:-I(大寫I)或--interactive=once選項(表示開啟交互一次),則rm命令會提示用戶是否繼續(xù)整個刪除操作,如果用戶回應(yīng)不是確認(rèn)(即沒有回復(fù)y),則整個命令立刻終止。
實例:
1)刪除多個文件,中間使用空格隔開即可。
2)刪除不存在的文件,可以使用-f參數(shù)強制,忽略錯誤,如果不使用會報錯“沒有這個目錄”
3)刪除空目錄可以使用-d參數(shù)
六、dd命令
dd命令用于按照指定大小和個數(shù)的數(shù)據(jù)庫來復(fù)制或轉(zhuǎn)換文件。/dev/zero是一個設(shè)備文件,該文件不會占用系統(tǒng)存儲空間,但卻能提供無窮無盡的數(shù)據(jù)。可以將它作為dd的輸入文件,來生成指定大小的文件。
格式:
Usage: dd [OPERAND]... or: dd OPTION
選項:
if 輸入的文件名
of 輸出的文件名
bs 同時設(shè)置讀入/輸出的每個“塊”的大小
ibs=bytes:一次讀入bytes個字節(jié),即指定一個塊大小為bytes個字節(jié)。
obs=bytes:一次輸出bytes個字節(jié),即指定一個塊大小為bytes個字節(jié)。
cbs=bytes:一次轉(zhuǎn)換bytes個字節(jié),即指定轉(zhuǎn)換緩沖區(qū)大小。
count 設(shè)置要復(fù)制“塊”的個數(shù)
skip=blocks:從輸入文件開頭跳過blocks個塊后再開始復(fù)制。
seek=blocks:從輸出文件開頭跳過blocks個塊后再開始復(fù)制。
注意:通常只用當(dāng)輸出文件是磁盤或磁帶時才有效,即備份到磁盤或磁帶時才有效。
conv=conversion:用指定的參數(shù)轉(zhuǎn)換文件。
ascii:轉(zhuǎn)換ebcdic為ascii
ebcdic:轉(zhuǎn)換ascii為ebcdic
ibm:轉(zhuǎn)換ascii為alternate ebcdic
block:把每一行轉(zhuǎn)換為長度為cbs,不足部分用空格填充
unblock:使每一行的長度都為cbs,不足部分用空格填充
lcase:把大寫字符轉(zhuǎn)換為小寫字符
ucase:把小寫字符轉(zhuǎn)換為大寫字符
swab:交換輸入的每對字節(jié)
noerror:出錯時不停止
notrunc:不截短輸出文件
sync:將每個輸入塊填充到ibs個字節(jié),不足部分用空(NUL)字符補齊。
實例:
1)使用dd命令,從社保文件/devzero文件中取出一個大小為560MB的數(shù)據(jù)塊
2)如果想從光驅(qū)設(shè)備中的光盤制作成iso鏡像文件,可以使用dd命令來壓制出光盤鏡像文件,將它變成一個可立即使用的iso鏡像。
PS:bs相當(dāng)于勺子大小,count相當(dāng)于勺子盛飯的次數(shù);勺子越大,勺子盛飯次數(shù)就越少。bs和count都是用于指定容量的大小,只要滿足需求,可以任意搭配。
3)將本地/dev/vda1整盤備份到/dev/vda1_bak(在操作的時候考慮下自己服務(wù)器或虛擬機的磁盤大?。?/p>
[root@VM_0_10_centos shellScript]# dd if=/dev/vda1 of=/dev/vda1_bak
PS:這里你可以在運行這條命令之前查看下磁盤容量,運行完之后再查看下磁盤容量的變化
4)從備份文件恢復(fù)到指定盤
ddif=/dev/vda1_bakof=/dev/vda1
5)備份today.txt全盤數(shù)據(jù),并利用gzip工具進(jìn)行壓縮,保存到指定路徑(dd好像不能備份目錄)
6)將備份的文件恢復(fù)到指定的文件或數(shù)據(jù)盤(-d為解壓,-c壓縮)
7)備份與恢復(fù)MBR(磁盤開始的512個字節(jié)大小的MBR信息到指定文件)
備份:ddif=/dev/hdaof=/root/imagecount=1 bs=512
count=1指僅拷貝一個塊;bs=512指塊大小為512個字節(jié)。
恢復(fù):ddif=/root/imageof=/dev/had
8)備份軟盤
9)拷貝內(nèi)存內(nèi)容到硬盤
PS:這里我查了一些資料,但是沒有解決掉這個問題,說是內(nèi)核中限制了復(fù)制的容量。
10)拷貝光盤內(nèi)容到指定文件夾,并保存為cd.iso文件
ddif=/dev/cdrom(hdc) of=/root/cd.iso
11)增加swap分區(qū)文件的大小
第一步:創(chuàng)建一個大小為256M的文件:
| 1 |
|
第二步:把這個文件變成swap文件(設(shè)置交換分區(qū)文件):
| 1 |
|
第三步:啟用這個swap文件(立即啟用交換分區(qū)內(nèi)容):
| 1 |
|
PS:這里會出現(xiàn)insecure permissions 0777, 0600 suggested.意思是建議把swap設(shè)置成644或600權(quán)限。
第四步:編輯/etc/fstab文件,使在每次開機時自動加載swap文件:
| 1 |
|
參考網(wǎng)址:https://www.cnblogs.com/misswangxing/p/10911969.html
https://blog.csdn.net/zhangxiaoyang0/article/details/82501209
12)銷毀磁盤數(shù)據(jù)
ddif=/dev/urandomof=/dev/hda1
PS:利用隨機的數(shù)據(jù)填充硬盤,在某些必要的場合可以用來銷毀數(shù)據(jù)。
13)測試硬盤的讀寫速度
PS:通過以上兩個命令輸出的命令執(zhí)行時間,可以計算出硬盤的讀、寫速度。
14)確定硬盤的最佳塊大?。?/p>
通過比較以上命令輸出中所顯示的命令執(zhí)行時間,即可確定系統(tǒng)最佳的塊大小。
15)修復(fù)硬盤
ddif=/dev/sdaof=/dev/sda或ddif=/dev/hdaof=/dev/hda
PS:當(dāng)硬盤較長時間(一年以上)放置不使用后,磁盤上會產(chǎn)生magnetic flux point,當(dāng)磁頭讀到這些區(qū)域時會遇到困難,并可能導(dǎo)致I/O錯誤。當(dāng)這種情況影響到硬盤的第一個扇區(qū)時,可能導(dǎo)致硬盤報廢。上邊的命令有可能使這些數(shù)據(jù)起死回生。并且這個過程是安全、高效的。
16)利用netcat遠(yuǎn)程備份(沒搞懂)
先安裝nc:# yum -y install nc
ddif=/dev/hdabs=16065b | netcat < targethost-IP > 1234
在源主機上執(zhí)行此命令備份/dev/hda:netcat -l -p 1234 |ddof=/dev/hdcbs=16065b
在目的主機上執(zhí)行此命令來接收數(shù)據(jù)并寫入/dev/hdc
netcat -l -p 1234 |bzip2> partition.img
netcat -l -p 1234 |gzip> partition.img
PS:以上兩條指令是目的主機指令的變化分別采用bzip2、gzip對數(shù)據(jù)進(jìn)行壓縮,并將備份文件保存在當(dāng)前目錄。
將一個很大的視頻文件中的第i個字節(jié)的值改成0x41(也就是大寫字母A的ASCII值)
echoA |ddof=bigfile seek=$i bs=1 count=1 conv=notrunc
七、file命令
file命令用于查看文件的類型。
常見文件類型:
| 文件類型 | 描述 |
| 字符設(shè)備 c | 所有輸入輸出設(shè)備(鍵盤、鼠標(biāo)、顯示器、打印機) |
| 塊設(shè)備 b | 所有存儲設(shè)備(軟盤,光盤,磁盤,U盤,光驅(qū)) |
| 軟連接文件 l | 類似于Windows下的快捷鍵 |
| 目錄文件 d | 相當(dāng)于文件夾 |
| 普通文件 f或- | 類似Windows下記事本,word等文件 |
| 管道文件 p | 程序或進(jìn)程之間的通訊的一種方式 |
| 套接字文件 s | 程序或進(jìn)程之間的通訊的一種方式 |
格式:
file [參數(shù)] 文件
參數(shù):
-b 列出辨識結(jié)果時,不顯示文件名稱。 -c 詳細(xì)顯示指令執(zhí)行過程,便于排錯或分析程序執(zhí)行的情形。 -f<名稱文件> 指定名稱文件,其內(nèi)容有一個或多個文件名稱時,讓file依序辨識這些文件,格式為每列一個文件名稱。 -L 直接顯示符號連接所指向的文件的類別。 -m<魔法數(shù)字文件> 指定魔法數(shù)字文件。 -v 顯示版本信息。 -z 嘗試去解讀壓縮文件的內(nèi)容。
實例:
1)查看文件類型
總結(jié)
以上是生活随笔為你收集整理的【Linux命令】文件目录管理命令7个(touch、mkdir、cp、mv、rm、dd、file)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科目三路考经验分享
- 下一篇: matlab和python中进行拉丁超立