PC mit Shell-Eingabeaufforderung auf einem Linux-Desktop

Fatmawati Achmad Zaenuri/Shutterstock.com

Das Linux |_+_| Mit diesem Befehl können Sie die Änderungen von einem Dateisatz auf einen anderen Dateisatz schnell und sicher übertragen. Erfahren Sie, wie Sie |_+_| . verwenden der einfache Weg.



Die patch- und diff-Befehle

Stellen Sie sich vor, Sie haben eine Textdatei auf Ihrem Computer. Sie erhalten eine modifizierte Version dieser Textdatei von einer anderen Person. Wie übertragen Sie schnell alle Änderungen aus der geänderten Datei in Ihre Originaldatei? Das ist, wo |_+_| und |_+_| komm in das Spiel. |_+_| und |_+_| sind in Linux und anderen zu finden Unix-ähnliche Betriebssysteme , wie zum Beispiel macOS.

Die |_+_| Befehl untersucht zwei verschiedene Versionen einer Datei und listet die Unterschiede zwischen ihnen auf. Die Unterschiede können in einer als Patch-Datei bezeichneten Datei gespeichert werden.

Die |_+_| -Befehl kann eine Patch-Datei lesen und den Inhalt als eine Reihe von Anweisungen verwenden. Wenn Sie diesen Anweisungen folgen, werden die Änderungen in der geänderten Datei im Original nachgebaut Datei.

Stellen Sie sich nun vor, dass dieser Prozess mit einem ganzen Verzeichnis von Textdateien passiert. Alles auf einen Schlag. Das ist die Macht von |_+_|.

Anzeige

Manchmal werden Ihnen die geänderten Dateien nicht gesendet. Sie erhalten lediglich die Patch-Datei. Warum Dutzende von Dateien verschicken, wenn Sie eine Datei senden oder eine Datei zum einfachen Download posten können?

Facebook-Beiträge mit farbigem Hintergrund

Was tun Sie mit der Patch-Datei, um Ihre Dateien tatsächlich zu patchen? Abgesehen davon, dass es fast ein Zungenbrecher ist, ist das auch eine gute Frage. Wir führen Sie in diesem Artikel durch.

Die |_+_| Der Befehl wird am häufigsten von Leuten verwendet, die mit Software-Quellcodedateien arbeiten, aber er funktioniert gleich gut mit jedem Satz von Textdateien, unabhängig von ihrem Zweck, Quellcode oder nicht.

VERBUNDEN: So vergleichen Sie zwei Textdateien im Linux-Terminal

Unser Beispielszenario

In diesem Szenario befinden wir uns in einem Verzeichnis namens work, das zwei weitere Verzeichnisse enthält. Einer heißt Arbeiten, und der andere heißt neueste . Das Arbeitsverzeichnis enthält eine Reihe von Quellcodedateien. Das neueste Verzeichnis enthält die neueste Version dieser Quellcodedateien, von denen einige modifiziert wurden.

Sicherheitshalber ist das Arbeitsverzeichnis eine Kopie der aktuellen Version der Textdateien. Es ist nicht die einzige Kopie von ihnen.

Finden der Unterschiede zwischen zwei Versionen einer Datei

Die |_+_| Befehl findet die Unterschiede zwischen zwei Dateien. Die Standardaktion besteht darin, die geänderten Zeilen im Terminalfenster aufzulisten.

Anzeige

Eine Datei heißt |_+_|. Wir vergleichen die Version im Arbeitsverzeichnis mit der im neuesten Verzeichnis.

Die |_+_| (vereinheitlichte) Option sagt |_+_| um auch einige der unveränderten Textzeilen vor und nach jedem der geänderten Abschnitte aufzulisten. Diese Zeilen werden Kontextzeilen genannt. Sie helfen den |_+_| Befehl lokalisieren Sie genau, wo eine Änderung in der Originaldatei vorgenommen werden muss.

Wir geben die Namen der Dateien so an, dass |_+_| weiß, welche Dateien zu vergleichen sind. Die Originaldatei wird zuerst aufgelistet, dann die geänderte Datei. Dies ist der Befehl, den wir an |_+_| ausgeben:

patch

|_+_| erzeugt eine Ausgabeliste mit den Unterschieden zwischen den Dateien. Wenn die Dateien identisch wären, würde überhaupt keine Ausgabe aufgelistet. Diese Art von Ausgabe von |_+_| . sehen bestätigt, dass es Unterschiede zwischen den beiden Dateiversionen gibt und dass die Originaldatei gepatcht werden muss.

Erstellen einer Patch-Datei

Verwenden Sie den folgenden Befehl, um diese Unterschiede in einer Patch-Datei zu erfassen. Es ist der gleiche Befehl wie oben, mit der Ausgabe von |_+_| in eine Datei namens slang.patch umgeleitet.

patch

Der Name der Patch-Datei ist willkürlich. Sie können es nennen, wie Sie möchten. Es ist eine gute Idee, ihm eine .patch-Erweiterung zu geben. da es jedoch deutlich macht, um welchen Dateityp es sich handelt.

Anzeige

Um |_+_| . zu machen Um auf die Patch-Datei zu reagieren und die Datei working/slang.c zu ändern, verwenden Sie den folgenden Befehl. Die |_+_| (vereinheitlichte) Option lässt |_+_| wissen, dass die Patch-Datei einheitliche Kontextzeilen enthält. Mit anderen Worten, wir haben die Option -u mit diff verwendet, also verwenden wir die |_+_| Option mit |_+_|.

patch -u working.slang.c -i slang.patch

Wenn alles gut geht, gibt es eine einzige Ausgabezeile, die Ihnen sagt |_+_| patcht die Datei.

Erstellen einer Sicherungskopie der Originaldatei

Wir können |_+_| . anweisen um eine Sicherungskopie der gepatchten Dateien zu erstellen, bevor sie geändert werden, indem Sie |_+_| . verwenden (Backup-)Option. Die |_+_| (input)-Option teilt patch den Namen der zu verwendenden Patch-Datei mit:

patch

Die Datei wird wie zuvor gepatcht, ohne sichtbaren Unterschied in der Ausgabe. Wenn Sie jedoch in den Arbeitsordner schauen, sehen Sie, dass die Datei slang.c.orig erstellt wurde. Die Datums- und Zeitstempel der Dateien zeigen, dass slang.c.orig die Originaldatei und slang.c eine neue Datei ist, die von |_+_| erstellt wurde.

Verwenden von diff mit Verzeichnissen

Wir können |_+_| . verwenden um eine Patch-Datei zu erstellen, die alle Unterschiede zwischen den Dateien in zwei Verzeichnissen enthält. Diese Patchdatei können wir dann mit |_+_| . verwenden um diese Unterschiede mit einem einzigen Befehl auf die Dateien im Arbeitsordner anzuwenden.

Die Optionen, die wir mit |_+_| . verwenden werden sind die |_+_| (Unified Context)-Option, die wir zuvor verwendet haben, die |_+_| (rekursive) Option um |_+_| . zu machen schau in alle Unterverzeichnisse und die |_+_| (neue Datei) Option.

PowerPoint Folie als Bild speichern
Anzeige

Die |_+_| Option sagt |_+_| wie man mit Dateien im neuesten Verzeichnis umgeht, die sich nicht im Arbeitsverzeichnis befinden. Es zwingt |_+_| Anweisungen in die Patch-Datei einfügen, sodass|_+_| erstellt Dateien, die im neuesten Verzeichnis vorhanden sind, aber im Arbeitsverzeichnis fehlen.

Sie können die Optionen zusammenfassen, sodass sie einen einzelnen Bindestrich (|_+_|) verwenden.

Beachten Sie, dass wir nur die Verzeichnisnamen angeben, nicht |_+_| um sich bestimmte Dateien anzusehen:

diff

diff -ruN working/ latest/>slang.patch

Ein Blick in die Patch-Datei

Werfen wir einen kurzen Blick in die Patch-Datei. Wir verwenden |_+_| seinen Inhalt anzuschauen.

Der Anfang der Datei zeigt die Unterschiede zwischen den beiden Versionen von slang.c.

Wenn wir weiter nach unten durch die Patch-Datei scrollen, sehen wir, dass sie dann die Änderungen in einer anderen Datei namens structs.h beschreibt. Dadurch wird überprüft, ob die Patch-Datei definitiv die Unterschiede zwischen verschiedenen Versionen mehrerer Dateien enthält.

Schauen Sie vor dem Sprung

Das Patchen einer großen Sammlung von Dateien kann etwas nervig sein, daher verwenden wir das |_+_| Möglichkeit zu überprüfen, ob alles in Ordnung ist, bevor wir den Sprung wagen und uns verpflichten, die Änderungen vorzunehmen.

Anzeige

Die |_+_| Option sagt |_+_| alles zu tun, außer die Dateien tatsächlich zu ändern. |_+_| führt alle Pre-Flight-Prüfungen der Dateien durch und meldet diese, wenn Probleme auftreten. Jedenfalls werden keine Dateien geändert.

Wenn keine Probleme gemeldet werden, können wir den Befehl ohne das |_+_| . wiederholen Option und patchen Sie unsere Dateien selbstbewusst.

Die |_+_| (Verzeichnis) Option sag |_+_| welches Verzeichnis zu bearbeiten ist.

Beachten Sie, dass wir nicht mit dem |_+_| (Eingabe) Option um |_+_| . zu sagen welche Patch-Datei die Anweisungen von |_+_| enthält. Stattdessen leiten wir die Patch-Datei in |_+_| . um mit |_+_|.

patch

Aus dem gesamten Verzeichnis, |_+_| zwei Dateien zum Patchen gefunden. Die Anweisungen zu den Änderungen für diese beiden Dateien wurden von |_+_| . geprüft , und es wurden keine Probleme gemeldet.

Vorflugkontrollen sind in Ordnung; wir sind startklar.

pdf in word doc einbetten

Ein Verzeichnis patchen

Um die Patches wirklich auf die Dateien anzuwenden, verwenden wir den vorherigen Befehl ohne das |_+_| Möglichkeit.

diff

Anzeige

Diesmal beginnt nicht jede Ausgabezeile mit dem Prüfen, jede Zeile beginnt mit dem Patchen.

Und es werden keine Probleme gemeldet. Wir können unseren Quellcode kompilieren und werden auf der neuesten Version der Software sein.

Begleichen Sie Ihre Differenzen

Dies ist bei weitem die einfachste und sicherste Art, |_+_| zu verwenden. Kopieren Sie Ihre Zieldateien in einen Ordner und patchen Sie diesen Ordner. Kopieren Sie sie zurück, wenn Sie zufrieden sind, dass der Patch-Prozess fehlerfrei abgeschlossen wurde.

Linux-Befehle
Dateien Teer · pv · Katze · tac · chmod · Griff · unterschied · sed · Mit · Mann · geschoben · popd · fsck · Testdisk · seq · fd · pandoc · CD · $PFAD · awk · beitreten · jq · falten · einzigartig · Journalctl · Schwanz · Zustand · ls · fstab · rauswerfen · weniger · chgrp · chown · rev · suchen · Saiten · Typ · umbenennen · Postleitzahl · entpacken · montieren · ummount · Installieren · fdisk · mkfs · rm · rmdir · rsync · df · gpg · wir · Nano · mkdir · von · ln · Patch · Konvertieren · rclon · Fetzen · SRM
Prozesse alias · Bildschirm · oben · nett · renice · Fortschritt · strace · System · tmux · chsh · Geschichte · beim · Charge · kostenlos · die · dmesg · Benutzermod · ps · chroot · xargs · tty · kleiner Finger · lsof · vmstat · Auszeit · Mauer · ja · töten · Schlaf · sudo · seine · Zeit · groupadd · Benutzermod · Gruppen · lshw · stilllegen · neu starten · halt · ausschalten · passwd · lscpu · crontab · Datum · bg · fg
Vernetzung netstat · Klingeln · Traceroute · ip · ss · Wer ist · fail2ban · bmon · Sie · Finger · nmap · ftp · Locken · wget · Wer · Wer bin ich · In · iptables · ssh-keygen · ufw

VERBUNDEN: Beste Linux-Laptops für Entwickler und Enthusiasten

WEITER LESEN