Heim > Artikel > System-Tutorial > Effiziente Nutzung von zwei cp-Befehlen!
Einführung | Es ist eine wunderbare Sache, unter Linux eine grafische Oberfläche mit Mausklicks verwenden zu können ... aber wenn Ihre bevorzugte interaktive Entwicklungsumgebung und Ihr bevorzugter Compiler Terminalfenster, Bash und Vim sind, dann sollten Sie wie ich häufig mit Terminals interagieren . |
Auch Menschen, die das Terminal nicht oft nutzen, können von einem tiefen Verständnis der Terminalumgebung sehr profitieren. Nehmen Sie zum Beispiel den Befehl cp. Laut Wikipedia war der Befehl cp (Kopieren) Teil der ersten Version von Unix. Zusammen mit einer Reihe anderer Befehle ls, mv, cd, pwd, mkdir, vi, sh, sed und awk war der erwähnte cp einer der Befehle, die ich gelernt habe, als ich 1984 mit System V-Unix-Systemen vertraut gemacht wurde. Der cp-Befehl wird am häufigsten zum Erstellen von Dateikopien verwendet. So:
cp sourcefile destfile
Führen Sie diesen Befehl im Terminal aus. Der obige Befehl kopiert die Datei mit dem Namen Quelldatei in die Datei mit dem Namen Zieldatei. Wenn die Datei destfile vor der Ausführung des Befehls nicht vorhanden ist, wird sie erstellt. Wenn sie bereits vorhanden ist, wird sie überschrieben.
Ich weiß nicht, wie oft ich diesen Befehl verwendet habe (ich möchte es nicht wissen), aber ich weiß, dass ich ihn oft verwende, wenn ich Testcode schreibe, um die aktuelle normale Version beizubehalten und weiter zu ändern es, ich werde diesen Befehl eingeben:
cp test1.py test1.bak
Ich habe diesen Befehl in den letzten über 30 Jahren unzählige Male verwendet. Als ich beschloss, meine zweite Version des Testprogramms zu schreiben, gab ich außerdem diesen Befehl ein:
cp test1.py test2.py
Damit ist der erste Schritt der Programmänderung abgeschlossen.
Normalerweise überprüfe ich selten die Referenzdokumentation des cp-Befehls, aber als ich meinen Bildordner sicherte (mit der Anwendung „file“ in der GUI-Umgebung), begann ich zu denken: „Gibt es einen Parameter im cp-Befehl, der nur unterstützt „Kopieren Sie neue oder geänderte Dateien.“
Effiziente Nutzung 1: Aktualisieren Sie Ihre OrdnerZum Beispiel gibt es auf meinem Computer einen Ordner, in dem verschiedene Dateien gespeichert sind. Außerdem muss ich von Zeit zu Zeit einige neue Dateien hinzufügen, und ich werde von Zeit zu Zeit einige Dateien ändern, z. B. heruntergeladene Fotos oder Musik von meinem Handy.
Angenommen, dass die von mir gesammelten Dateien alle für mich wertvoll sind, möchte ich manchmal eine Kopie erstellen und die Dateien wie einen „Schnappschuss“ auf anderen Medien speichern. Natürlich gibt es viele Programme, die Backups unterstützen, aber ich möchte die Verzeichnisstruktur genauer auf ein Wechselmedium kopieren, damit ich diese Offline-Geräte oft verwenden oder an andere Computer anschließen kann.
Der Befehlcp bietet eine einfache Möglichkeit, dies zu tun. Beispiele sind wie folgt:
Unter meinem Ordner „Bilder“ befindet sich ein Ordner mit dem Namen „Verschiedenes“. Zur Veranschaulichung habe ich die Dateien auf ein USB-Speichergerät kopiert. Lasst uns beginnen!
me@desktop:~/Pictures$ cp -r Misc /media/clh/4388-D5FE me@desktop:~/Pictures$
Der obige Befehl wird vollständig aus dem Terminalfenster kopiert. Einige Leute sind nicht sehr anpassungsfähig an diese Umgebung. Bevor wir einen Befehl eingeben oder ausführen, müssen wir auf das Präfix me@mydesktop:~/Pictures achten ist das aktuelle Arbeitsverzeichnis, die Abkürzung des vollständigen Pfads von /home/me/Pictures.
Ich gebe diesen Befehl cp -r Misc /media/clh/4388-D5FE ein und führe ihn aus, um alle Dateien im Misc-Verzeichnis zu kopieren (der Parameter -r, der vollständige Name ist „rekursiv“, rekursive Verarbeitung, also alle Dateien). und Unterverzeichnisse in diesem Verzeichnis) in das Mountverzeichnis meines USB-Geräts/media/clh/4388-D5FE.
Kehren Sie nach der Ausführung des Befehls zur vorherigen Eingabeaufforderung zurück. Wenn es keine Ausnahmen gibt, wird vor der Ausführung des Befehls keine Eingabeaufforderung angezeigt Aufgabe endet. Wenn Sie mehr Feedback erhalten möchten, verwenden Sie den Parameter -v, um die Ausführungsergebnisse detaillierter zu gestalten.
Das Bild unten ist der Ordner „Misc“, der gerade von meinem USB-Gerät kopiert wurde. Es enthält insgesamt 9 Bilder.
Bild der neuen Kopie von Misc auf dem USB-Laufwerk
Angenommen, ich möchte einige neue Dateien unter dem ursprünglichen Kopierpfad ~/Pictures/Misc hinzufügen, etwa so:
Neue Dateien zum Hauptverzeichnis hinzugefügt
Jetzt möchte ich nur die neuen Dateien auf mein Speichergerät kopieren, also verwende ich die Optionen „Update“ und „Verbose“ von 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$
Die erste Zeile oben ist der cp-Befehl und spezifische Parameter (-r ist „rekursiv“, -u ist „aktualisieren“, -v ist „ausführlich“). In den nächsten drei Zeilen werden Informationen zu den kopierten Dateien angezeigt, und in der letzten Zeile wird die Befehlszeilenaufforderung angezeigt.
Generell kann der Parameter -r auch im ausführlicheren Stil --recursive verwendet werden. Aber abgekürzt kann -ruv auch in Verbindung damit verwendet werden.
Effiziente Nutzung 2: VersionssicherungUm auf das ursprüngliche Beispiel zurückzukommen: Ich sichere während der Entwicklung regelmäßig meine Codeversion. Dann habe ich einen anderen cp-Parameter gefunden, der besser funktioniert.
假设我正在编写一个非常有用的 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 重命名等功能就能很轻松的实现。
Das obige ist der detaillierte Inhalt vonEffiziente Nutzung von zwei cp-Befehlen!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!