總結(jié)cp、mv命令的用法(要求列出源及目標(biāo)各種情況的表格)
cp 命令
該命令用于復(fù)制文件。
基本用法:
cp source_fileanme target_dir
# 復(fù)制之后重命名
[19:56:44 main@centos8-huasio:~ $] #38 cp /home/main/file.log /data/file.log
# 復(fù)制到指定目錄,但是不重命名
[19:56:44 main@centos8-huasio:~ $] #38 cp /home/main/file.log /data/
cp 本質(zhì)上是對目標(biāo)文件的完整復(fù)制成一個新文件,生成新 inode 表記錄,然后在目標(biāo)位置生成目錄項,將數(shù)據(jù)與 inode 關(guān)聯(lián);
- 分配一個空閑的 INode Number,在 INode 中生成新記錄
- 在目錄中創(chuàng)建目錄項,將文件名稱與 INode Number 關(guān)聯(lián)
- 拷貝數(shù)據(jù)生成新的文件
mv 命令
該命令是移動文件。
基本用法:
mv source_filename target_filename
# 移動文件到指定路徑,并且重命名
[19:57:00 main@centos8-huasio:~ $] #39 mv /home/main/file.log /data/file.log
# 移動文件到指定位置,不重命名
[19:57:00 main@centos8-huasio:~ $] #39 mv /home/main/file.log /data/
使用 mv 對移動目錄或者文件的時候,存在兩種情況:
- 當(dāng)前分區(qū)內(nèi)移動
- 當(dāng)前分區(qū)移動的情況,使用新名稱在目錄中創(chuàng)建新的目錄項
- 刪除舊的目錄項
- INode 記錄以及數(shù)據(jù)不會改變
- 跨分區(qū)移動
- 相當(dāng)于 cp 和 rm 的組合使用,舊分區(qū)的 INode 對應(yīng)的記錄會被刪除。
- 在新的分區(qū)重新分配 INode Number
移動文件看是否跨分區(qū),沒有跨分區(qū)就是只是對目錄項記錄進行更改,以及該換新名稱??绶謪^(qū)那就是整個文件都從舊分區(qū)中刪除,然后在新分區(qū)中創(chuàng)建新的記錄,將數(shù)據(jù)寫入到新分區(qū)的磁盤中。
總結(jié)IO重定向的類別和區(qū)別
內(nèi)存分成兩部分,一份是內(nèi)核,一份是應(yīng)用程序空間,而程序本身也包含兩部分?jǐn)?shù)據(jù):程序指令和數(shù)據(jù)。
那么,程序的數(shù)據(jù)是從何而來的呢?
很明顯,有的數(shù)據(jù)需要用戶輸入給程序,既然這樣就要一種輸入設(shè)備。在 Linux 中,一切都表現(xiàn)為文件,所以輸入輸出也是文件,一種設(shè)備文件。
輸入輸出設(shè)備文件表現(xiàn)形式是一種文件描述符,只要打開任何應(yīng)用程序,系統(tǒng)就會為該應(yīng)用程序分配標(biāo)準(zhǔn)輸入輸出設(shè)備的文件描述符,這是固定的描述符,準(zhǔn)確的說,應(yīng)該是將描述符分配給進程,每個進程都有固定標(biāo)準(zhǔn)輸入輸出文件描述符。除此之外,進程內(nèi)打開的其它文件則隨機分配。
- 標(biāo)準(zhǔn)輸入(STDIN) 0:默認(rèn)接受來自終端窗口的輸入
- 標(biāo)準(zhǔn)輸出(STDOUT) 1:默認(rèn)輸出到終端窗口
- 標(biāo)準(zhǔn)錯誤(STDERR) 2:默認(rèn)輸出到終端窗口
它們有什么區(qū)別嗎?
標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯誤這兩種設(shè)備是輸出數(shù)據(jù)到指定位置,默認(rèn)是終端窗口。
標(biāo)準(zhǔn)輸入是從外界獲取數(shù)據(jù),默認(rèn)是從終端窗口獲取數(shù)據(jù)。
這三種設(shè)備,一般進程都是指定當(dāng)前終端窗口,我們可以通過特定符號來修改數(shù)據(jù)的輸入源,比如說文件。
- >:標(biāo)準(zhǔn)輸出,可以將輸出到指定文件
- 2>:標(biāo)準(zhǔn)錯誤,可以將輸出到指定文件
- <:標(biāo)準(zhǔn)輸入,可以從文件中獲取數(shù)據(jù)
將 /etc/issue 文件中的內(nèi)容轉(zhuǎn)換為大寫后保存至 /tmp/issue.out 文件中
通過 tr 命令,可以對文件進行簡單的轉(zhuǎn)換、刪除、壓縮功能的處理。
將內(nèi)容轉(zhuǎn)換成大寫。
[20:03:06 main@centos8-huasio:~ $] #40 cat /etc/issue | tr -t '[a-z]' '[A-Z]' >> /tmp/issue.out
[20:31:13 main@centos8-huasio:~ $] #41 cat /tmp/issue.out
\S
KERNEL \R ON AN \M