So kopieren Sie Dateien mit dem Befehl „install“ unter Linux

install ist ein vielseitiger Befehl zum Kopieren von Dateien unter Linux und macOS. Es ist perfekt für Power-User, die nach Effizienz suchen. Lesen Sie diesen Artikel, um zu erfahren, wie Sie intelligenter und nicht härter arbeiten.

Warten Sie – nicht zum Installieren von Software?

Der Befehl install hat möglicherweise den irreführendsten Namen aller Linux-Befehle. Es installiert keine Software. Wenn Sie versuchen, ein Softwarepaket über die Befehlszeile in Ubuntu oder einer anderen Debian-basierten Distribution zu installieren, verwenden Sie den Befehl apt-get. Verwenden Sie auf anderen Linux-Distributionen stattdessen das Paketverwaltungstool Ihrer Linux-Distribution – beispielsweise dnf auf Fedora oder zypper auf openSUSE.

Was macht die Installation?

Kurz gesagt kombiniert install Elemente aus dem cp (Kopieren), chown (Besitzer wechseln), chmod (Modus ändern), mkdir (Verzeichnis erstellen) und Streifen (Streifensymbole) Befehle. Sie können alle Funktionen in einer einzigen Aktion verwenden.

Der Installationsbefehl kann:

Kopieren Sie Dateien wie den Befehl cp.
Wählen Sie aus, ob vorhandene Dateien überschrieben werden sollen.
Erstellen Sie das Zielverzeichnis, falls es noch nicht existiert, z. B. mkdir.
Setzen Sie die Benutzerberechtigungs-Flags der Dateien, genau wie der Befehl chmod.
Legen Sie den Eigentümer der Dateien fest, genau wie beim Befehl chown.
Entfernen Sie nicht unbedingt erforderliches Gepäck aus ausführbaren Dateien, genau wie beim Strip-Befehl.

Trotz all dieser Funktionalität hat der Installationsbefehl nicht zu viel viele Optionen zu kämpfen.

Wann würden Sie es verwenden?

Der Installationsbefehl wird wahrscheinlich nicht jeden Tag verwendet. Es ist nützlich, aber nur für bestimmte Situationen. Ein Szenario, in dem install zum Einsatz kommt, ist die Softwareentwicklung. Angenommen, Sie programmieren ein neues Dienstprogramm. Sie müssen Tests außerhalb der Entwicklungsumgebung durchführen. Dazu müssen Sie die neuen Programmdateien in ein Testverzeichnis kopieren. Das Testverzeichnis muss möglicherweise erstellt werden und Sie müssen die richtigen Berechtigungen und das Eigentumsrecht für die Dateien festlegen.

Da die Entwicklung eine iterative Aktivität ist, können Sie diese Abfolge von Aktionen am Ende viele, viele Male ausführen. Der install-Befehl erledigt die ganze schwere Arbeit für Sie. Wenn Ihr neues Dienstprogramm schließlich bereit für die Bereitstellung ist, können Sie es mithilfe von install mit den richtigen Berechtigungen an seinen endgültigen Arbeitsspeicherort kopieren.

Ein Beispiel

Ein Programmierer arbeitet an einem solchen neuen Dienstprogramm namens ana. Es besteht aus einer ausführbaren Binärdatei und einer Datenbank. Nach dem Testen muss es nach /usr/local/bin kopiert werden, um es allen Benutzern des Linux-Systems zur Verfügung zu stellen. Sie müssen die Dateinamen und Verzeichnispfade in unserem Beispiel durch die Dateien und Pfade ersetzen, die Sie auf Ihrem Computer verwenden, wenn Sie die Installation verwenden.

  So richten Sie DXVK in Wine unter Linux ein

Bis es zur Veröffentlichung bereit ist, wird es in einem Verzeichnis namens ~/test/ana getestet. Mitglieder der Geek-Gruppe haben Lese- und Ausführungsberechtigungen. Andere Benutzer haben auch Lese- und Ausführungsberechtigungen. Der Befehl install verwendet dieselbe numerische Darstellung für Berechtigungen wie chmod. Unser Programmierer hat entschieden, dass die Berechtigungen auf Folgendes gesetzt werden müssen:

Besitzer: Lesen, schreiben und ausführen.
Gruppe: Lesen und ausführen.
Andere: Nur ausführen.

So verwenden Sie den Installationsbefehl

Das Arbeitsverzeichnis unseres fiktiven Programmierers ist ~/work. Er hat das Programm geschrieben, kompiliert und eine Binärdatei namens ana erstellt. Er hat bereits die Datenbankdatei erstellt, mit der ana arbeitet, Words.db. Damit sind beide Dateien zum Testen bereit. Schauen wir sie uns an:

ls -l ana Words.db

Das Dienstprogramm ana, das er gerade geschrieben hat, erstellt Anagramme aus einer Phrase, die auf der Befehlszeile bereitgestellt wird. Verifizierungstests sind recht einfach.

Unser Programmierer hat ana mit dem Satz „Keks“ aufgerufen und alles scheint gut zu sein. Diese beiden Dateien möchte er nun in das Verzeichnis ~/test/ana kopieren, um zu sehen, ob das neue Dienstprogramm außerhalb der Entwicklungsumgebung korrekt funktioniert. Er gibt folgenden Befehl aus:

install -D -v ana Words.db -t ~/test/ana

Die in der Befehlszeile verwendeten Optionen waren:

D: Erstellen Sie Verzeichnisse, einschließlich der übergeordneten Verzeichnisse, falls erforderlich.
v: Ausführlich, listet jedes Verzeichnis während der Erstellung und jede Dateikopie während der Ausführung auf.
t: Zielverzeichnis.

Wir können sehen, dass install das Verzeichnis ~/test und dann das Verzeichnis ~/test/ana erstellt. Die Dateien werden nacheinander aufgelistet, während sie in das Zielverzeichnis kopiert werden.

Das Auflisten der Dateien in ~/test/ana bestätigt, dass sie korrekt kopiert wurden.

ls -l

Der nächste Schritt besteht darin, das ana-Dienstprogramm zu testen, indem Sie es im Verzeichnis ~/test/ana aufrufen.

Das Dienstprogramm funktioniert wie erwartet, was großartig ist. Die Berechtigungen sind jedoch nicht korrekt. Die Anforderung besteht darin, den Mitgliedern des Gruppenfreaks Lese- und Ausführungsberechtigungen zuzuweisen und anderen Benutzern nur Ausführungsberechtigungen zuzuweisen.

Wir können beide Probleme ganz einfach mit dem folgenden Befehl lösen. Beachten Sie die Verwendung von sudo, um den Befehl mit Root-Berechtigungen auszuführen. Die Optionen -o und -g und erfordern dies. Wir werden nach unserem Passwort gefragt, wenn wir den Befehl ausgeben.

sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana

Die Option -b (Backup) erstellt Backups der Dateien, bevor sie überschrieben werden.
Die Option -S (Suffix) definiert das Suffix für die Sicherungsdateien. Wenn Sie kein Suffix angeben, wird eine ~ (Tilde) verwendet. Wir bitten install um das Suffix .bak zu verwenden.
Wir setzen den Besitzer der Datei mit der Option -o (Besitzer) auf dave.
Die Option -g (Gruppe) erfordert den Namen einer Gruppe. Dies wird die Eigentümergruppe der Dateien. Die Gruppe, die wir verwenden werden, heißt Geek.
Die Option -m (Modus) setzt die Dateimodi für die Dateien unter Verwendung der numerischen Standardsyntax von chmod.

  So generieren Sie Zwei-Faktor-Authentifizierungscodes unter Linux mit Authenticator

Wir müssen die Option -D (Verzeichnisse erstellen) nicht mehr verwenden, da wir wissen, dass das Testverzeichnis bereits existiert. Wir haben auch die Option -v (ausführlich) weggelassen. Das Auflisten der Dateien in unserem Verzeichnis ~/test/ana zeigt uns die Dateidetails:

ls -l

Dies bestätigt, dass alle unsere Anforderungen erfüllt wurden.

Die Dateien wurden in das Testverzeichnis kopiert.
Die Berechtigungen wurden richtig gesetzt.
dave ist der Eigentümer der Dateien.
Die Geek-Gruppe ist die Besitzergruppe der beiden Dateien.
Von jeder Datei wurden Sicherungskopien erstellt, die als ana.bak und Words.db.bak bezeichnet werden.

All dies wurde durch die Verwendung eines einzigen Befehls erreicht. Sauber.

Unser Programmierer nimmt einige letzte Änderungen am Dienstprogramm vor und kompiliert neu. Die geänderten Dateien müssen aus dem Verzeichnis ~/work in das Verzeichnis ~/test/ana kopiert werden. Wir können dies mit der Option -C (compare) tun. Wenn Quelldatei und Zieldatei identisch sind, wird die Quelldatei nicht kopiert.

sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana

Die Auflistung der Dateien im Zielverzeichnis zeigt uns, dass sich die Dateigröße der Ana-Datei geändert hat. Es ist größer als die Datei ana.bak. Der Zeitstempel auf ana hat sich ebenfalls geändert. Diese Änderungen sind darauf zurückzuführen, dass die neue Version der Datei hierher kopiert wurde.

ls -l

Die Dateigröße und der Zeitstempel der Words.db-Datei haben sich nicht geändert. An der Datei Words.db wurden keine Änderungen vorgenommen, daher wurde sie nicht kopiert. Bei einem Projekt mit vielen Dateien kann die Option -C (Vergleichen) viel Zeit und Festplattenwechsel sparen, indem nur die geänderten Dateien kopiert werden.

Der Programmierer hat erneut getestet, ob das Dienstprogramm ana weiterhin funktioniert.

  So bearbeiten Sie die Hosts-Datei unter Linux

Es ist an der Zeit, install zu verwenden, um die Dateien in das Verzeichnis /usr/local/bin zu kopieren. Dadurch wird das neue Dienstprogramm für alle Benutzer dieses Linux-Computers verfügbar. Wir wissen, dass /usr/local/bin existiert, also müssen wir dieses Verzeichnis nicht erstellen. Wir können eine modifizierte Version unseres letzten Befehls verwenden.

Wir haben das Zielverzeichnis in /usr/local/bin geändert. Wir haben die Option -C (compare) entfernt, da es noch keine Kopien dieser Dateien im Zielverzeichnis gibt, es also nichts Vergleichbares gibt. Ebenso gibt es nichts zu sichern, daher können wir die Option -b (Backup) und die Option -S (Suffix) entfernen.

sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin

Wir können auflisten, dass die Dateien in /usr/local/bin angekommen sind:

ls -l

Und als letzten Test ändern wir das Verzeichnis in unser Home-Verzeichnis und sehen, ob wir unser neues Dienstprogramm von dort aus aufrufen können.

Beachten Sie, dass wir dem ana-Befehl kein ./ voranstellen mussten, was bedeutet, dass er von /usr/local/bin ausgeführt wird. Mission erfüllt.

Wir haben erwähnt, dass install redundante Symboltabellen und anderes Gepäck aus der Binärdatei entfernen kann, um die Größe zu reduzieren. Machen wir das jetzt. Beachten Sie, dass der folgende Befehl Words.db nicht enthält. Dies liegt daran, dass Words.db eine Datenbankdatei und keine ausführbare Binärdatei ist. Um die Binärdatei ana zu kopieren und zu verkleinern, können wir den folgenden Befehl verwenden. Wir haben die Option -s (Shrink) mit einem Kleinbuchstaben „s“ hinzugefügt. Wir haben die Option -b (Backup) und die Option -S (Suffix) mit einem Großbuchstaben „S“ wieder hinzugefügt.

sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin

Das Auflisten der Dateien in /usr/local/bin ermöglicht es uns, die Größe der Ana-Datei mit ihrer Backup-Version zu vergleichen. Die Ana-Datei wurde auf fast 60 % ihrer vorherigen Größe reduziert.

ls -l /usr/local/bin

Zusammenfassend

Der Befehl install ist für eine hübsche Nischenanwendung geeignet. Für viele Menschen wird es nicht Tag für Tag oder möglicherweise von Monat zu Monat verwendet. Trotzdem ist der Befehl install ein gutes Werkzeug, mit dem Sie vertraut sein sollten und das Sie in Ihrem Trickarsenal haben sollten. Für die Gelegenheiten, in denen Sie es brauchen, belohnt es Ihre Lernkurve mit Effizienzsteigerungen, Einfachheit und einfach weniger Tastenanschlägen.