首頁 系統教程 Linux 兩個cp指令的高效用法!

兩個cp指令的高效用法!

Jan 02, 2024 pm 12:53 PM
linux linux教程 紅帽 linux系統 linux指令 linux認證 紅帽linux linux視頻

導讀 在Linux 上能使用滑鼠點來點去的圖形化介面是一件很美妙的事…但是如果你喜歡的開發互動環境和編譯器是終端機視窗、Bash 和Vim,那你應該像我一樣經常和終端打交道。

即使是不常使用終端的人,如果對終端環境深入了解也能獲益良多。舉個例子- cp 指令,根據 維基百科 的解釋,cp (意即 copy)指令是第一個版本的 Unix 系統的一部分。連同一組其它的命令 ls、mv、cd、pwd、mkdir、vi、sh、sed 和 awk ,還有提到的 cp 都是我在 1984 年接觸 System V Unix 系統時所學習的命令之一。 cp 指令最常見的用法是製作檔案副本。像這樣:

cp sourcefile destfile
登入後複製

在終端機中執行此指令,上述指令將名為 sourcefile 的檔案複製到名為 destfile 的檔案中。如果在執行命令之前 destfile 文件不存在,那將會建立此文件,如果已經存在,那就會覆蓋此文件。

這個指令我不知道自己用了多少次了(我也不想知道),但是我知道在我寫測試程式碼的時候,我常用,為了保留目前正常的版本,而且又能繼續修改,我會輸入這個指令:

cp test1.py test1.bak
登入後複製

在過去的30多年裡,我使用了無數次這個指令。另外,當我決定要寫我的第二個版本的測試程式時,我會輸入這個指令:

cp test1.py test2.py
登入後複製

這樣就完成了修改程式的第一步。

我通常很少查看cp 命令的參考文檔,但是當我在備份我的圖片文件夾的時候(在GUI 環境下使用“file” 應用),我開始思考“在cp 命令中是否有個參數支援只複製新文件或是修改過的文件。」果然,真的有!

高效用法 1:更新你的資料夾

比如說在我的電腦上有一個存放各種文件的文件夾,另外我要不時的往裡面添加一些新文件,而且我會不時地修改一些文件,例如我手機裡下載的照片或者是音樂。

假設我收集的這些文件對我而言都很有價值,我有時會想做個拷貝,就像是「快照」一樣將文件保存在其它媒體。當然目前有很多程式都支援備份,但是我想更為精確的將目錄結構複製到可移動設備中,方便於我經常使用這些離線設備或連接到其它電腦上。

cp 指令提供了一個易如反掌的方法。範例如下:

在我的 Pictures 資料夾下,我有這樣一個資料夾名字為 Misc。為了方便說明,我把文件拷貝到 USB 儲存裝置上。讓我們開始吧!

me@desktop:~/Pictures$ cp -r Misc /media/clh/4388-D5FE
me@desktop:~/Pictures$
登入後複製

上面的命令是我從按照終端機視窗中完整複製下來的。對有些人來說不是很適應這種環境,在我們輸入指令或執行指令之前,需要注意的是me@mydesktop:~/Pictures 這個前綴,me 這個是目前用戶,mydesktop 這是電腦名稱,~/Pictures這是目前工作目錄,是/home/me/Pictures 完整路徑的縮寫。

我輸入這個指令cp -r Misc /media/clh/4388-D5FE 並執行後,拷貝Misc 目錄下所有檔案(這個-r 參數,全名為“recursive”,遞歸處理,意思是本目錄下所有文件及子目錄一起處理)到我的USB 設備的掛載目錄/media/clh/4388-D5FE。

執行指令後回到先前的提示,大多數指令繼承了Unix 的特性,在指令執行後,如果沒有任何異常什麼都不顯示,在任務結束之前不會顯示像「execution succeeded」 這樣的提示消息。如果想要獲得更多的回饋,就使用 -v 參數讓執行結果更詳細。
下圖中是我的 USB 裝置中剛拷貝過來的資料夾 Misc ,裡面總共有 9 張圖片。
两个高效的cp 命令用法!

Image of the new copy of Misc on the USB drive

假設我要在原始拷貝路徑下 ~/Pictures/Misc 下添加一些新文件,就像這樣:
两个高效的cp 命令用法!

New files added to the master directory

現在我想只拷貝新的檔案到我的儲存裝置上,我就使用 cp 的「更新」和「詳細」選項。

me@desktop:~/Pictures$ cp -r -u -v Misc /media/clh/4388-D5FE
'Misc/asunder.png' -> '/media/clh/4388-D5FE/Misc/asunder.png'
'Misc/editing tags guayadeque.png' -> '/media/clh/4388-D5FE/Misc/editing tags guayadeque.png'
'Misc/misc on usb.png' -> '/media/clh/4388-D5FE/Misc/misc on usb.png'
me@desktop:~/Pictures$
登入後複製

上面的第一行中是 cp 命令和具體的參數(-r 是“遞歸”, -u 是“更新”,-v 是“詳細”)。接下來的三行顯示被複製檔案的訊息,最後一行顯示命令列提示符號。

通常來說,參數 -r 也可用更詳細的風格 --recursive。但以簡短的方式,也可以這麼連用 -ruv。

高效用法 2:版本備份

回到一開始的例子中,我在開發的時候定期給我的程式碼版本進行備份。然後我找到了另一個更好用的 cp 參數。

假设我正在编写一个非常有用的 Python 程序,作为一个喜欢不断修改代码的开发者,我会在一开始编写一个程序简单版本,然后不停的往里面添加各种功能直到它能成功的运行起来。比方说我的第一个版本就是用 Python 程序打印出 “hello world”。这只有一行代码的程序就像这样:

print 'hello world'
登入後複製

然后我将这个代码保存成文件命名为 test1.py。我可以这么运行它:

me@desktop:~/Test$ python test1.py
hello world
me@desktop:~/Test$
登入後複製

现在程序可以运行了,我想在添加新的内容之前进行备份。我决定使用带编号的备份选项,如下:

clh@vancouver:~/Test$ cp --force --backup=numbered test1.py test1.py
clh@vancouver:~/Test$ ls
test1.py  test1.py.~1~
clh@vancouver:~/Test$
登入後複製

所以,上面的做法是什么意思呢?

第一,这个 --backup=numbered 参数意思为“我要做个备份,而且是带编号的连续备份”。所以一个备份就是 1 号,第二个就是 2 号,等等。

第二,如果源文件和目标文件名字是一样的。通常我们使用 cp 命令去拷贝成自己,会得到这样的报错信息:

cp: 'test1.py' and 'test1.py' are the same file
登入後複製

在特殊情况下,如果我们想备份的源文件和目标文件名字相同,我们使用 --force 参数。

第三,我使用 ls (意即 “list”)命令来显示现在目录下的文件,名字为 test1.py 的是原始文件,名字为 test1.py.~1~ 的是备份文件

假如现在我要加上第二个功能,在程序里加上另一行代码,可以打印 “Kilroy was here.”。现在程序文件 test1.py 的内容如下:

print 'hello world'
print 'Kilroy was here'
登入後複製

看到 Python 编程多么简单了吗?不管怎样,如果我再次执行备份的步骤,结果如下:

clh@vancouver:~/Test$ cp --force --backup=numbered test1.py test1.py
clh@vancouver:~/Test$ ls
test1.py test1.py.~1~ test1.py.~2~
clh@vancouver:~/Test$
登入後複製

现在我有有两个备份文件: test1.py.~1~ 包含了一行代码的程序,和 test1.py.~2~ 包含两行代码的程序。

这个很好用的功能,我考虑做个 shell 函数让它变得更简单。

最后总结

第一,Linux 手册页,它在大多数桌面和服务器发行版都默认安装了,它提供了更为详细的使用方法和例子,对于 cp 命令,在终端中输入如下命令:

man cp
登入後複製

对于那些想学习如何使用这些命令,但不清楚如何使用的用户应该首先看一下这些说明,然后我建议创建一个测试目录和文件来尝试使用命令和选项。

第二,兴趣是最好的老师。在你最喜欢的搜索引擎中搜索 “linux shell tutorial”,你会获得很多有趣和有用的资源。

第三,你是不是在想,“为什么我要用这么麻烦的方法,图形化界面中有相同的功能,只用点击几下岂不是更简单?”,关于这个问题我有两个理由。首先,在我们工作中需要中断其他工作流程以及大量使用点击动作时,点击动作可就不简单了。其次,如果我们要完成流水线般的重复性工作,通过使用 shell 脚本和 shell 函数以及 shell 重命名等功能就能很轻松的实现。

以上是兩個cp指令的高效用法!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

sublime寫好代碼後如何運行 sublime寫好代碼後如何運行 Apr 16, 2025 am 08:51 AM

在 Sublime 中運行代碼的方法有六種:通過熱鍵、菜單、構建系統、命令行、設置默認構建系統和自定義構建命令,並可通過右鍵單擊項目/文件運行單個文件/項目,構建系統可用性取決於 Sublime Text 的安裝情況。

laravel安裝代碼 laravel安裝代碼 Apr 18, 2025 pm 12:30 PM

要安裝 Laravel,需依序進行以下步驟:安裝 Composer(適用於 macOS/Linux 和 Windows)安裝 Laravel 安裝器創建新項目啟動服務訪問應用程序(網址:http://127.0.0.1:8000)設置數據庫連接(如果需要)

Linux的主要目的是什麼? Linux的主要目的是什麼? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

git軟件安裝 git軟件安裝 Apr 17, 2025 am 11:57 AM

安裝 Git 軟件包括以下步驟:下載安裝包運行安裝包驗證安裝配置 Git安裝 Git Bash(僅限 Windows)

sublime快捷鍵怎麼使用 sublime快捷鍵怎麼使用 Apr 16, 2025 am 08:57 AM

Sublime Text 提供了提高开发效率的快捷键,包括常用的(保存、复制、剪切等)、编辑(缩进、格式化等)、导航(项目面板、文件浏览等)以及查找和替换快捷键。熟练使用这些快捷键可显著提升 Sublime 的使用效率。

See all articles