10 Unix-Befehle, die jeder Mac- und Linux-Benutzer kennen sollte

GUIs sind großartig - wir würden nicht ohne sie leben wollen. Wenn Sie jedoch ein Mac- oder Linux-Benutzer sind und Ihr Betriebssystem (und Ihre Tastenanschläge) optimal nutzen möchten, müssen Sie sich mit der Unix-Befehlszeile vertraut machen. Point-and-Click ist wunderbar, wenn Sie ein- oder zweimal etwas tun müssen. Wenn Sie diese Aufgabe jedoch mehrmals wiederholen müssen, ist die Befehlszeile Ihr Retter.

Die Befehlszeile ist ein Fenster in die volle, beeindruckende Leistung Ihres Computers. Wenn Sie sich danach sehnen, sich von den Einschränkungen der GUI zu befreien oder der Meinung sind, dass das Programmieren oder Verwalten von Remotecomputern in Ihrer Zukunft liegt, ist das Erlernen der Unix-Befehlszeile definitiv das Richtige für Sie.

Machen Sie sich keine Sorgen, wenn Unix-Befehle wie magische Beschwörungsformeln erscheinen oder die mysteriösen Interna des Systems außerhalb Ihrer Reichweite liegen. Sie sind nicht so schwer zu erlernen, und dieser Artikel enthält die 10 wichtigsten Befehle, die Sie für den Einstieg benötigen. In Kürze werden diese kryptischen Zeichenfolgen zur zweiten Natur werden.

Shell-Grundlagen

Die Unix-Befehlszeilen-Shell entspricht in etwa dem Befehlsfenster in Microsoft Windows (cmd oder PowerShell). Die Befehle, die wir unten durchgehen, funktionieren auf jedem Unix-ähnlichen System, einschließlich Linux, Darwin (die Grundlage von MacOS), FreeBSD und sogar Windows mit etwas wie Git Bash oder der neuen Bash-Shell in Windows 10. Die Optionen und Ausgaben variieren leicht, aber Sie sollten keine Probleme haben, sie zu verstehen.

Zunächst müssen Sie eine Shell öffnen, die manchmal als Terminalfenster bezeichnet wird. Unix-Distributionen stellen dies häufig in die Menüs Administration oder System. Unter MacOS finden Sie das Terminal unter Anwendungen> Dienstprogramme> Terminal. Wenn Sie es starten, sehen Sie ungefähr Folgendes:

Dieser Bildschirm unter MacOS 10.11 ist typisch für die meisten Shells in einer GUI. Oben im Fenster sehen wir den Shell-Typ, in diesem Fall Bash (Bourne Again Shell, die Standard-Shell in MacOS und den meisten Linux-Distributionen), und die Größe des Fensters. Innerhalb des Fensters befindet sich die Eingabeaufforderung, in diesem Fall konfiguriert, um den Namen des Computers ( Mercury), den Namen des aktuellen Arbeitsverzeichnisses (hier die Tilde ~, die Abkürzung für das Ausgangsverzeichnis des Benutzers), den Namen des Benutzers, anzuzeigen. und schließlich das Eingabeaufforderungssymbol (das$). Beachten Sie, dass sich Ihre Eingabeaufforderung ändert, wenn Sie sich im Dateisystem bewegen oder wenn Sie ein anderer Benutzer auf Ihrem Computer werden (z. B. Root oder Superuser, um Verwaltungsbefehle auszuführen). Die Eingabeaufforderung zeigt diese Informationen an, sodass Sie leicht erkennen können, wo und wer Sie sich auf einem Computer befinden.

Es ist wichtig zu wissen, dass es zwei Hauptvarianten der Unix-Shell gibt: Bourne und C-Shell. Bourne und Company wurden vom ursprünglichen AT & T Unix abgeleitet, während die C-Shell von der University of California in Berkeley und BSD Unix stammt. Im Allgemeinen eignen sich die Bourne- und C-Shell-Derivate gut für die interaktive Arbeit am Terminal. Die POSIX-Standard-Shell, die Korn-Shell, ist diejenige, die Sie zum Schreiben Ihrer eigenen Programme in der Shell verwenden möchten, die als Skripte bezeichnet werden. Wir verwenden die Bash-Shell für die Beispiele in diesem Tutorial.

Die Shell-Umgebung

Eine der ersten Fakten, die Sie über die Arbeit an der Unix-Befehlszeile wissen sollten, ist, dass die Shell in einer eigenen Umgebung ausgeführt wird. Das Verständnis der Steuerung der Shell-Umgebung ist ein wichtiger Bestandteil der Effizienz in der Befehlszeile. Schauen wir uns die Umgebung mit dem folgenden envBefehl an:

Machen Sie sich jetzt keine Sorgen um das Verständnis aller Umgebungsvariablen, sondern wissen Sie, dass sie vorhanden sind. Sie sollten bereits einige Variablen erkennen. Zum Beispiel SHELL=/bin/bashsagt uns, dass wir die Bash-Shell verwenden. HOME=/Users/nunezGibt den Speicherort des Basisverzeichnisses des Benutzers an. Sie können Umgebungsvariablen ändern oder erstellen, und das werden Sie häufig tun. Hier ist ein Beispiel für das Festlegen einer Umgebungsvariablen mit dem Namen FOOund das Anzeigen ihres Werts:

Wie Sie sehen, setzen wir Variablen konventionell in Großbuchstaben. Beachten Sie insbesondere, wie wir Umgebungsvariablen referenzieren, wenn wir sie in Befehlen verwenden $. Das $weist den Befehlsinterpreter an, den Wert der Variablen zu verwenden. Ohne das würde $der echoobige Befehl einfach den Namen der Variablen drucken FOO.

Unix-Befehle

Unabhängig davon, welche Shell Sie verwenden, wird bei jeder Eingabe eines Befehls in die Shell ein Unix-Programm ausgeführt. Die Unix-Designphilosophie besteht darin, Programme zu erstellen, die eine Sache gut machen, und sie zu verketten (oder zu „leiten“), um nützliche Arbeit zu leisten. Schauen wir uns ein einfaches Beispiel an, um die Anzahl der Dateien im Verzeichnis / etc zu zählen (wir werden später sehen, wie Sie in das Verzeichnis / etc wechseln):

Diese Befehlssequenz veranschaulicht zwei wichtige Konzepte: Rohrleitungen und Optionen. Der lsBefehl (entspricht dem dirBefehl in Windows) zeigt den Inhalt eines Verzeichnisses und  wc(Wortanzahl) die Anzahl der Wörter an. Beachten Sie den vertikalen Balken zwischen ihnen? Das ist der Pipe-Charakter. Die Pipe nimmt die Ausgabe des ersten Befehls und leitet sie als Eingabe an den zweiten Befehl weiter. Sie können beliebig viele Befehle in Unix miteinander verketten, indem Sie sie über Pipes miteinander verbinden.

Das zweite, was zu beachten ist, sind die Optionen, die jedem Befehl gegeben werden. Unter Unix wird den Optionen traditionell ein einzelnes Bindestrichzeichen vorangestellt -. Diese Befehlszeilenoptionen ändern das Verhalten des Befehls. In diesem Beispiel bedeutet die -l Option, lsden Verzeichnisinhalt im "langen" Format auszugeben, während die –lOption wcbedeutet, die "Zeilen" anstelle der Wörter zu zählen. Auf Englisch könnte dieser Befehl gelesen werden:

Listen Sie die Anzahl der Zeilen im aktuellen Verzeichnis auf und senden Sie sie an das Wortzählprogramm, um die Anzahl der Zeilen zu zählen.

Häufig überschreiben diese Befehlszeilenoptionen die in der Umgebung festgelegten Standardeinstellungen. Wenn Sie das Verhalten des Befehls dauerhaft ändern möchten, können Sie die Umgebungsvariable beim Anmelden automatisch festlegen. Mit vielen Befehlen können Sie Optionen in einer einzigen Zeichenfolge kombinieren, z. B. mit ls -laanderen. Sie können sich über alle Optionen für einen Befehl informieren, indem Sie dessen Handbuch oder "Manpages" (die wir unten diskutieren) überprüfen.

Das Erlernen und Verwenden von Befehlszeilenoptionen ist ein wesentlicher Bestandteil der Effizienz der Unix-Befehlszeile. Einige Befehle verfügen über so viele Optionen, dass die Dokumentation Dutzende von Seiten umfasst. Lass dich jetzt nicht beunruhigen. Sie benötigen häufig nur wenige Optionen, um eine bestimmte Aufgabe auszuführen, und viele Optionen werden nur beim Schreiben von Programmen in der Shell-Sprache verwendet.

Das Handbuch

Sobald Sie die Grundlagen der Befehlszeile und der Umgebung verstanden haben, können wir beginnen, tiefer in das System einzutauchen. Der erste Startpunkt ist das Handbuch.

Einer der schönen Aspekte von Unix ist die hohe Qualität der Dokumentation. Es gibt Dokumentation für Benutzer, Systemadministratoren und Softwareentwickler. Sie greifen mit dem manBefehl auf die Dokumentation zu . Beginnen wir mit dem Lesen des Handbuchs für das Handbuch (geben Sie es man manin die Befehlszeile ein):

Die Handbücher sind in acht Abschnitte unterteilt, die sich geringfügig unterscheiden, je nachdem, ob Sie einen Unix-Typ vom Typ BSD / Linux / Mac oder System V verwenden. Es ist hilfreich, zunächst die Einführung zu jedem Abschnitt zu lesen, und Sie können dies mit einer Beschwörung wie tun. Dies man -s 1 introbedeutet, dass Sie in Abschnitt 1 nach einer Handbuchseite mit dem Namen „Intro“ suchen:

Wenn Sie sich nicht sicher sind, nach welchem ​​Befehl Sie suchen, können Sie die Optionen -fund ausprobieren -k. zeigt Ihnen die Funktion eines Befehls an, wenn Sie dessen Namen kennen, und listet die Namen der relevanten Befehle basierend auf einem oder mehreren Schlüsselwörtern auf. Beide Optionen durchsuchen eine integrierte Datenbank (sofern sie konfiguriert wurde; normalerweise) und geben alle Übereinstimmungen zurück. Zeigt beispielsweise die Handbuchseiten an, die mit der Zeichenfolge beginnen :man –f command man –k hint man –k bzerbz

Das Dateisystem

Es gibt viele Befehle im Zusammenhang mit dem Unix-Dateisystem, da es für das Betriebssystem von zentraler Bedeutung ist. Wir haben früher eine davon gesehen : ls, die Dateien in einem Verzeichnis auflistet:

Der lsBefehl ist möglicherweise der am häufigsten verwendete Befehl von allen und bietet viele Optionen zum Anpassen seiner Ausgabe. Eine Option, über die Sie sofort Bescheid wissen möchten, ist ls -a(alle auflisten). Dadurch werden Punktdateien (Dateien oder Verzeichnisse, deren Namen mit einem Punkt oder Punkt beginnen) angezeigt, die standardmäßig ausgeblendet sind. Diese Dateien oder Verzeichnisse enthalten normalerweise Konfigurationsinformationen oder Protokolldateien für das Unix-System. Die Datei .bash_history protokolliert beispielsweise alle Befehle, die Sie in der Befehlszeile eingeben.

Der andere Befehl, den Sie sofort benötigen, ist der cdBefehl, mit dem Sie Verzeichnisse ändern. Dies ähnelt dem gleichen Befehl in Windows, jedoch mit einem wichtigen Unterschied. Unter Unix werden alle Laufwerke (Geräte) als ein einziges Laufwerk angezeigt. Während Sie unter Windows Ihre Bilder möglicherweise auf einer externen Festplatte haben, die als E: angezeigt wird, ist diese Festplatte unter Unix möglicherweise / home / user / images. Auf alle Dateien auf einem Unix-System wird über einen Pfad zugegriffen, der mit / (dem Stammverzeichnis) beginnt, und Sie können je nach Bedarf verschiedene Festplatten an verschiedenen Stellen im Dateisystem bereitstellen.

Bevor Sie sich im Dateisystem umsehen, möchte ich einen weiteren Befehl einführen, den Sie benötigen: pwd(Arbeitsverzeichnis drucken). Da in einem wachsenden Dateisystem möglicherweise viele Stellen verloren gehen können, können Sie mit diesen Befehlen schnell feststellen, wo Sie sich befinden. Wechseln wir zu dem Speicherort, an dem die Systemkonfigurationsdateien gespeichert sind, und überprüfen Sie unseren Speicherort:

Beachten Sie, dass Sie den cdBefehl ohne Argumente verwenden können, um schnell zu Ihrem Ausgangsverzeichnis zurückzukehren. Ein weiterer Tipp: Das ~kann als Verknüpfung verwendet werden, um auf Ihr Home-Verzeichnis sowohl in der Bash- als auch in der C-Shell zu verweisen. 

An diesem Punkt wissen Sie, wie Sie sich im Dateisystem bewegen und den Inhalt von Verzeichnissen auflisten. Jetzt brauchen wir eine Möglichkeit, die darin gespeicherten Dateien zu lesen. Heutzutage kommen die meisten Systeme mit dem lessBefehl dafür. lesszeigt eine Datei Seite für Seite an und ermöglicht Ihnen das Navigieren mit Vi-Befehlen (drücken Sie j, um nach unten, knach oben, hum Hilfe zu erhalten und qdie Datei zu beenden).

Lassen Sie uns sehen, was sich in unserer Datei / etc / passwd befindet, indem Sie Folgendes eingeben less /etc/passwd:

In der passwd-Datei werden die Benutzerkonten auf einem Unix-System zusammen mit ihren Benutzer- und Gruppen-ID-Nummern, ihrem Ausgangsverzeichnis und dem Pfad zum entsprechenden Befehl oder der entsprechenden Shell aufgelistet. Unter MacOS finden Sie jedoch nur Systemdienstkonten in passwd. Dies liegt daran, dass menschliche Benutzer in den Systemeinstellungen von MacOS unter Benutzer und Gruppen konfiguriert sind.

Festplattenplatz

Der Speicherplatzmangel ist ein schrittweiser Prozess, der Jahre dauern kann, Sie aber dennoch überraschen kann. Es gibt zwei Befehle, mit denen Sie Ihren freien Speicherplatz überprüfen und feststellen können, welche Dateien Ihre Festplatte belasten: du(Festplattennutzung) und df(Festplattenfrei). Beide haben eine -hOption (für Menschen lesbar). Verwenden Sie den folgenden dfBefehl, um ein Gefühl dafür zu bekommen, wie voll Ihre Festplatte ist :

Konzentrieren Sie sich vorerst auf die Spalten %iusedund mounted on. Dies zeigt, dass mein Home-Verzeichnis zu 92 Prozent voll ist, daher sollte ich es wahrscheinlich bereinigen. Aber woher weiß ich, wo der gesamte Raum genutzt wird? Dafür duist da:

In diesem Beispiel habe ich eine Beschwörung gewählt, die die Ausgabe auf die ersten 10 Zeilen beschränkt. Andernfalls duwird jedes Verzeichnis auf dem Computer aufgelistet, was leicht zu viel sein kann, um es zu erfassen. In dieser Liste können Sie sehen, wie viel Speicherplatz von jedem Verzeichnis belegt wird. Sie können auch sehen, wie wir durch Verketten einiger Befehle leicht ein Skript zusammenstellen können, das die Top-10-Verzeichnisse nach Speicherplatznutzung auflistet. Der Befehl, den wir zum Sortieren der Ausgabe benötigen, ist natürlich der sortBefehl.

Da die MacOS-Version von sortdie vom duMenschen lesbare Ausgabe nicht verarbeiten kann , habe ich die -mOption duzum Anzeigen der Festplattennutzung in Megabyte verwendet (verwenden Sie die Option -goder -kzum Anzeigen in Gigabyte oder Kilobyte). Die Optionen -nund -rzum sortSortieren der Ausgabe numerisch und in umgekehrter Reihenfolge, sodass die größten Verzeichnisse oben in der Liste angezeigt werden.

Superuser, su und sudo

Eine Reihe von Befehlen bezieht sich auf die Systemadministration. Versuchen Sie, man -s 8 introfür eine Einführung zu tippen. Ich werde Ihnen hier den einen wesentlichen Befehl für die Systemadministration geben : su. Dies steht für "Super User" und bezieht sich auf den Administrator oder das Root-Konto. Alle zum System gehörenden Dateien gehören diesem Benutzer, und Sie müssen dieser Benutzer werden, um die Verwaltung durchführen zu können.

Mit einem verwandten Befehl sudokönnen Sie der Superuser für einen einzelnen Befehl werden. Warum sudostatt verwenden su? Weil die Best Practice vorschreibt, dass Sie nicht als Root-Benutzer herumlaufen und versehentlich irreparablen Schaden anrichten können. Sie möchten als normaler Benutzer immer alles tun, was Sie können, und nur dann zum Superuser werden, wenn Sie dies benötigen. Wie Sie Superuser-Berechtigungen erhalten, hängt von Ihrer Unix-Distribution ab. Mal sehen, wie es suunter MacOS funktioniert:

Huh? Ich bin sicher, dass ich das Passwort richtig eingegeben habe. Was hier passiert ist, ist, dass mein aktueller Benutzer nunezkeine Erlaubnis dazu hat su. Unter einigen Unixen bedeutet dies, dass sich der Benutzer in der wheelGruppe befinden muss und auf anderen Systemen (einschließlich MacOS) muss sich der Benutzer in der sudoersDatei befinden.

Lassen Sie uns beenden durch Zugabe nunezzu sudoers, die Sie in der Befehlszeile einen Geschmack der Bearbeitung von Dateien geben. Power-User loben die Emacs- und Vi-Editoren, und ich empfehle Ihnen, sie auszuprobieren, aber wir werden hier Nano verwenden. Nano ist einfach zu erlernen und zu verwenden, und MacOS und viele Linux-Distributionen sind bereits installiert.