Vous n’êtes pas sans savoir que macOS (anciennement OS X) est un système UNIX dérivé de BSD (Darwin).
Ses origines lui permettent ainsi de partager une base commune avec le monde UNIX et notamment un certain nombre de commandes.
Lorsque vous ouvrez un terminal sur macOS, vous obtenez un prompt Bash classique.
Je souhaitais partager avec vous la personnalisation de mon terminal ; ainsi que quelques commandes bien utiles, que j’utilise plus ou moins régulièrement pour gérer mon Mac.
Personnalisation de mon environnement
Lorsque je restaure un de mes Mac, je commence par personnaliser à nouveau mon terminal. C’est la même chose lorsque j’installe une machine Linux.
Thème du terminal
Beaucoup de personnes préfèreront l’application iTerm 2, mais pour ma part l’application Terminal fourni avec macOS me convient très bien.
Je commence par modifier son interface en y paramètrant le thème Cobalt2 que je trouve très sympa, et assorti à mon thème Sublime Text. Je l’ai modifié un peu pour correspondre encore plus à ce que je recherche.
Homebrew
Par défaut macOS n’intègre pas de gestionnaire de paquet. Par chance il est possible d’en installer un : Homebrew. Il permet ensuite de gérer des repos et des paquets de façon tout à fait classique (pour un utilisateur Linux).
Pour l’installer c’est simple :
1 | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
ZSH et Oh My Zsh
Homebrew me permet ensuite d’installer ZSH. C’est un Shell Unix interactif reprenant la plupart des fonctions de Bash en lui ajoutant pas mal d’améliorations.
J’en retiens notamment une grande force dans l’autocomplétion de beaucoup de commande, la correction d’erreurs lors de la frappe, un historique intelligent et partagé, et une gestion des alias locaux et globaux.
Pour l’installer via Homebrew :
1 | brew install zsh |
Pour personnaliser ZSH et y ajouter quelques plugins pour le rendre encore plus puissant, nous allons lui ajouter le framework Oh My Zsh.
1 | curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh |
Lors de son installation, Oh My Zsh va définir ZSH comme shell par défaut pour l’utilisateur courant.
Pour revenir à Bash par défaut (sérieusement ??) il faudra saisir la commande suivante :
1 | chsh -s /bin/bash |
La liste des thèmes et plugins disponibles peut-être obtenue à l’aide des deux commandes suivantes :
1 2 | ls -l ~/.oh-my-zsh/themes ls -l ~/.oh-my-zsh/plugin |
La personnalisation de ZSH et l’ajout de plugin se fait alors en éditant le fichier ~/.zshrc
Ensuite il suffit d’éditer respectivement les directives « ZSH_THEME= » et « plugins= » du fichier.
J’utilise en général le thème par défaut : robyrussel et les plugins git, osx et sublime.
Vous pouvez en retrouver l’utilisation directement sur le Git d’Oh My Zsh.
Ces plugins permettent de disposer de quelques alias assez pratique.
Archey
Pour terminer avec la personnalisation de mon espace de travail, j’installe un petit paquet nommé Archey, qui permet d’obtenir quelques petites infos sympas sur la machine directement depuis le terminal.
1 | brew install archey |
Et j’ajoute la commande archey à la fin de mon fichier ~/.zshrc pour que ça s’affiche directement au lancement d’une nouvelle fenêtre de terminal.
Voici le résultat :
Quelques alias de base
Dans ZSH il est possible de spécifier des alias pour appeler rapidement certaines commandes. En voici quelques un que j’ai rajouté.
1 2 3 4 5 6 7 8 9 10 | alias ls='ls -lah' # Liste tous mes fichiers de façon propre et lisible alias pg='ping 8.8.8.8' # Ping les DNS Google et tester ma connectivité à Internet alias flush_dns='sudo killall -HUP mDNSResponder' # Force la purge du cache DNS alias repair_permissions='sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /' # Répare les permissions sous 10.11 alias flush_fonts='atsutil databases -removeUser && atsutil server -shutdown && atsutil server -ping' # Vide le cache des polices alias show_files='defaults write com.apple.finder AppleShowAllFiles true' # Affiche les fichiers cachés alias hide_files='defaults write com.apple.finder AppleShowAllFiles false' # Masque les fichiers cachés alias eject_all='osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'' # Ejecte tous les volumes externes alias battery='pmset -g batt | egrep "([0-9]+\%).*" -o' # Avoir des infos sur ma batterie alias eject='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend' # Lockscreen |
Les commandes que j’utilise le plus souvent
Dans mon utilisation assez intensive de mon Mac, j’ai régulièrement besoin de faire appel à certaines commandes pour administrer un poste. Cependant, je ne les utilise pas assez souvent pour avoir besoin d’un alias.
Voici donc en vrac quelques commandes bien utiles sur macOS.
Réinitialiser les icônes du Dock
1 | defaults delete com.apple.dock && killall Dock |
Créer un DMG à partir d’un dossier
1 | hdiutil create -volname "Volume" -srcfolder /chemin_dossier -ov image.dmg |
Empêcher les .DS_Store sur les volumes réseau
1 | defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true |
Activer / Désactiver SSH
1 2 | sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist # Activer sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist # Désactiver |
Activer / Désactiver Firewall
1 2 3 | sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate # Statut sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on # Activer sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off # Désactiver |
Ajouter exception à Gatekeeper
1 | spctl --add /path/to/Application.app |
Activer Airdrop en ethernet
1 | defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool true |
Installer les mises à jour système
1 | sudo softwareupdate -ia |
Reconstruire l’index Spotlight
1 | mdutil -E / |
Empêcher la mise en veille du Mac
1 | caffeinate |
Stresser le cpu
1 | yes |
Comparer le contenu de deux fichiers
1 | opendiff fic1 fic2 |
Conclusion
Vous l’aurez compris, il est tout à fait possible de se débrouiller sur Mac avec uniquement un terminal.
Les principales commandes Unix sont compatibles, et il est très facile de trouver la documentation nécessaires aux commandes spécifiques à macOS. Et n’oubliez pas, le man est votre meilleur ami !
Si vous avez d’autres petites commandes bine utiles, n’hésitez pas à les partager dans les commentaires.