Ich benutze Ubuntu seit vier Jahren.
Ich habe Grundkenntnisse in Shell-Befehlen und arbeite lieber in einem Terminal als in einer GUI. Vor kurzem habe ich angefangen, einen Mac zu benutzen.
Ich habe ein paar Terminalbefehle (die ich unter Ubuntu verwende) im Mac-Terminal ausprobiert und es scheint größtenteils auf die gleiche Weise zu reagieren.
Gibt es signifikante Unterschiede in den von mir verwendeten Befehlen, den von ihnen ausgeführten Aufgaben oder der Shell-Umgebung, die ich beachten sollte?
Antworten:
Wenn Sie eine Neu- oder Neuinstallation von OS X Version 10.3 oder neuer durchgeführt haben, lautet die Standard-User-Terminal-Shell bash.
Bash ist im Wesentlichen eine verbesserte und GNU-Freeware-Version der ursprünglichen Bourne-Shell, sh. Wenn Sie bereits Erfahrung mit Bash haben (häufig die Standardeinstellung bei GNU / Linux-Installationen), wird die OS X-Befehlszeilenerfahrung dadurch vertraut. Andernfalls sollten Sie Ihre Shell entweder auf tcsh oder auf zsh umstellen, da einige diese benutzerfreundlicher finden.
Wenn Sie ein Upgrade von OS X Version 10.2.x, 10.1.x oder 10.0.x durchgeführt oder dieses verwendet haben, lautet die Standardbenutzer-Shell tcsh, eine erweiterte Version von csh ('c-shell'). Frühe Implementierungen waren etwas fehlerhaft und die Programmiersyntax etwas seltsam, so dass sich ein schlechter Rap entwickelte.
Es gibt immer noch einige grundlegende Unterschiede zwischen Mac und Linux, wie Gordon Davisson so treffend auflistet, zum Beispiel nein
useradd
auf Mac undifconfig
funktioniert anders.Die folgende Tabelle ist nützlich, um die verschiedenen Unix-Shells zu kennen.
Möglicherweise finden Sie auch diese Anleitungen hilfreich:
http://homepage.mac.com/rgriff/files/TerminalBasics.pdf
http://guides.macrumors.com/Terminal
http://www.ofb.biz/safari/article/476.html
Abschließend möchte ich sagen, dass ich unter Linux (Ubuntu 11) und Mac OSX arbeite. Daher verwende ich Bash. Am besten gefällt mir, dass ich die .bashrc-Datei (Source'd from
.bash_profile
OSX) mit Aliasnamen anpasse , einige Beispiele unten. Ich habe jetzt alle meine Aliase in einer separaten .bash_aliases-Datei abgelegt und in Folgendes eingefügt:in der Datei .bashrc oder .bash_profile.
Beachten Sie, dass dies ein Beispiel für einen Mac-Linux-Unterschied ist, da Sie auf einem Mac das nicht haben können
--color=auto
. Das erste Mal, als ich dies tat (ohne es zu wissen), definierte ich neuls
als ungültig, was ein bisschen alarmierend war, bis ich es entfernte--auto-color
!Möglicherweise ist auch https://unix.stackexchange.com/q/127799/10043 hilfreich
quelle
zsh
die Standardvervollständigung der Java-Klasse.ls
sowohl Linux (--color=all
) als auch OSX (-G
) mit den folgenden haben:ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
Die Antwort von @Michael Durrant deckt die Shell selbst geschickt ab, aber die Shell-Umgebung enthält auch die verschiedenen Befehle, die Sie in der Shell verwenden, und diese werden zwischen OS X und Linux ähnlich - aber nicht identisch - sein. Im Allgemeinen verfügen beide über dieselben Kernbefehle und -funktionen (insbesondere die im Posix-Standard definierten), viele Erweiterungen sind jedoch unterschiedlich.
Beispielsweise verfügen Linux-Systeme im Allgemeinen über einen
useradd
Befehl zum Erstellen neuer Benutzer, OS X jedoch nicht. Unter OS X verwenden Sie im Allgemeinen die GUI, um Benutzer zu erstellen. Wenn Sie sie über die Befehlszeile erstellen müssen, verwenden Siedscl
(was Linux nicht hat), um die Benutzerdatenbank zu bearbeiten (siehe hier ). (Update: Ab MacOS High Sierra 10.13 können Siesysadminctl -addUser
stattdessen verwenden.)Außerdem haben einige Befehle, die sie gemeinsam haben, unterschiedliche Funktionen und Optionen. Beispielsweise enthalten Linux im Allgemeinen GNU
sed
, das die-r
Option zum Aufrufen erweiterter regulärer Ausdrücke verwendet. Unter OS X würden Sie die-E
Option verwenden, um den gleichen Effekt zu erzielen. In ähnlicher Weise können Sie unter Linuxls --color=auto
eine kolorierte Ausgabe erhalten. Unter macOS ist das nächste Äquivalentls -G
.BEARBEITEN: Ein weiterer Unterschied besteht darin, dass bei vielen Linux-Befehlen Optionen nach ihren Argumenten angegeben werden können (z. B.
ls file1 file2 -l
), während bei den meisten OS X-Befehlen Optionen unbedingt an erster Stelle stehen müssen (ls -l file1 file2
).Da sich das Betriebssystem selbst unterscheidet, verhalten sich einige Befehle zwischen den Betriebssystemen unterschiedlich. Unter Linux würden Sie beispielsweise wahrscheinlich
ifconfig
Ihre Netzwerkkonfiguration ändern. Funktioniert unter OS Xifconfig
(wahrscheinlich mit etwas anderer Syntax), aber Ihre Änderungen werden wahrscheinlich vom Systemkonfigurationsdämon zufällig überschrieben. Stattdessen sollten Sie die Netzwerkeinstellungen mit bearbeitennetworksetup
und dann vom Konfigurationsdämon auf den Live-Netzwerkstatus anwenden lassen.quelle