J'utilise Ubuntu depuis quatre ans.
J'ai une connaissance de base des commandes shell et je préfère travailler dans un terminal plutôt que d'utiliser une interface graphique. Récemment, j'ai commencé à utiliser un Mac.
J'ai essayé quelques commandes de terminal (que j'utilise sur Ubuntu) dans le terminal Mac et il semble répondre essentiellement de la même manière.
Y a-t-il des différences significatives dans les commandes que j'utilise, les tâches qu'elles exécutent ou l'environnement shell dont je devrais être conscient?
Réponses:
Si vous avez effectué une nouvelle installation ou une nouvelle installation d'OS X version 10.3 ou plus récente, le shell du terminal utilisateur par défaut est bash.
Bash est essentiellement une version améliorée et gratuite GNU du shell Bourne original, sh. Si vous avez une expérience antérieure avec bash (souvent la valeur par défaut sur les installations GNU / Linux), cela rend l'expérience de la ligne de commande OS X familière, sinon envisagez de passer votre shell soit à tcsh, soit à zsh, car certains les trouvent plus conviviales.
Si vous avez mis à niveau ou que vous utilisez OS X version 10.2.x, 10.1.x ou 10.0.x, le shell utilisateur par défaut est tcsh, une version améliorée de csh ('c-shell'). Les premières implémentations étaient un peu boguées et la syntaxe de programmation un peu bizarre, donc cela a développé une mauvaise réputation.
Il existe encore des différences fondamentales entre mac et linux, comme Gordon Davisson le répertorie si bien, par exemple non
useradd
sur Mac etifconfig
fonctionne différemment.Le tableau suivant est utile pour connaître les différents shells Unix.
Vous pouvez également trouver ces guides utiles:
http://homepage.mac.com/rgriff/files/TerminalBasics.pdf
http://guides.macrumors.com/Terminal
http://www.ofb.biz/safari/article/476.html
Sur une note finale, je suis sous Linux (Ubuntu 11) et Mac osX donc j'utilise bash et ce que j'aime le plus est de personnaliser le fichier .bashrc (source
.bash_profile
sur OSX) avec des alias, quelques exemples ci-dessous. J'ai maintenant placé tous mes alias dans un fichier .bash_aliases séparé et je l'inclus avec:dans le fichier .bashrc ou .bash_profile.
Notez qu'il s'agit d'un exemple de différence mac-linux car sur un Mac, vous ne pouvez pas avoir le
--color=auto
. La première fois que j'ai fait cela (sans le savoir), j'ai redéfinils
comme invalide ce qui était un peu alarmant jusqu'à ce que je le supprime--auto-color
!Vous pouvez également trouver https://unix.stackexchange.com/q/127799/10043 utile
la source
zsh
complétion de classe Java par défaut.ls
Linux (--color=all
) et OSX (-G
) avec ce qui suit:ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
La réponse de @Michael Durrant couvre habilement le shell lui-même, mais l'environnement du shell comprend également les différentes commandes que vous utilisez dans le shell et celles-ci vont être similaires - mais pas identiques - entre OS X et Linux. En général, les deux auront les mêmes commandes et fonctionnalités de base (en particulier celles définies dans le standard Posix), mais de nombreuses extensions seront différentes.
Par exemple, les systèmes Linux ont généralement une
useradd
commande pour créer de nouveaux utilisateurs, mais pas OS X. Sous OS X, vous utilisez généralement l'interface graphique pour créer des utilisateurs; si vous devez les créer à partir de la ligne de commande, vous utilisezdscl
(ce que Linux n'a pas) pour éditer la base de données utilisateur (voir ici ). (Mise à jour: à partir de macOS High Sierra v10.13, vous pouvez utiliser à lasysadminctl -addUser
place.)De plus, certaines commandes qu'ils ont en commun auront des fonctionnalités et des options différentes. Par exemple, les Linux incluent généralement GNU
sed
, qui utilise l'-r
option pour appeler des expressions régulières étendues; sur OS X, vous utiliseriez l'-E
option pour obtenir le même effet. De même, sous Linux, vous pouvez utiliserls --color=auto
pour obtenir une sortie colorisée; sur macOS, l'équivalent le plus proche estls -G
.EDIT: Une autre différence est que de nombreuses commandes Linux permettent de spécifier des options après leurs arguments (par exemple
ls file1 file2 -l
), tandis que la plupart des commandes OS X exigent que les options soient strictement prioritaires (ls -l file1 file2
).Enfin, comme le système d'exploitation lui-même est différent, certaines commandes se comportent différemment entre les systèmes d'exploitation. Par exemple, sous Linux, vous utiliseriez probablement
ifconfig
pour modifier la configuration de votre réseau. Sous OS X,ifconfig
fonctionnera (probablement avec une syntaxe légèrement différente), mais vos modifications sont susceptibles d'être écrasées aléatoirement par le démon de configuration du système; à la place, vous devez modifier les préférences réseau avecnetworksetup
, puis laisser le démon de configuration les appliquer à l'état du réseau en direct.la source