MacOS. Лайфхаки

Несколько полезных фокусов, которые пригодятся любому маководу. Для создания магического эффекта настоящие волшебники используют консоль. В отличие от записи про unix здесь приводятся в основном специфичные для MacOS команды. Проверено на Catalina.

Ввод пароля по Touch ID

Если на вашем устройстве есть Touch ID и вы ленивы настолько, что не хотите вводить пароль в терминале руками — ваша мечта сбылась. Можно не печатать, а только дотронуться до заветной кнопки.

Откройте с правами root'а файл /etc/pam.d/sudo и добавьте строку в самое начало:

# /etc/pam.d/sudo
# sudo: auth account password session
auth       sufficient     pam_tid.so  # добавить эту строку
auth       sufficient     pam_smartcard.so
auth       required       pam_opendirectory.so

Манипулирование снапшотами

$ sudo tmutil disablelocal # отключить
$ sudo tmutil enablelocal  # включить
$ sudo tmutil listlocalsnapshots / # просмотреть какие снапшоты есть
$ tmutil deletelocalsnapshots <snapshot-version> # удалить снапшот по номеру его версии

Сам снапшот выглядит так: com.apple.TimeMachine.2020-07-04-151555.local. Номер версии в этом примере 2020-07-04-151555.

Изменить формат скриншота

По-умолчанию скриншоты в формате png. Можно задать другой формат: JPG, TIFF, GIF, PDF или снова тот же PNG.

Делается командой:

$ defaults write com.apple.screencapture type JPG

Изменить имя хоста

$ sudo scutil --set HostName jack

где jack - выбранное имя.

Изменить размер сетки launchpad

Сетка по-умолчанию 5×7: 5 столбцов, 7 строк. Когда программ много и все их хочется видеть на одном экране, размер сетки можно уменьшить.

$ defaults write com.apple.dock springboard-rows -int 6
$ defaults write com.apple.dock springboard-columns -int 7
$ killall Dock

Теперь сетка содержит 7 столбцов и 6 строк.

Управление разделами диска

В MacOS для этого служит утилита diskutil.

$ diskutil list            # информация о всех разделах
$ diskutil list disk1      # информация о конкретном разделе
$ diskutil listFilesystems # какие есть поддерживаемые файловые системы

Часто используемые файловые системы:

  • APFS, родная ФС операционной системы
  • ExFAT, для внешних дисков
  • FAT32, для флешек

Запись образа на диск.

$ diskutil unmountDisk /dev/disk2 # размонтировать диск
$ sudo dd if=image.iso of=/dev/disk2 bs=512 status=progress # записать образ
$ sudo dd if=/dev/disk1 of=backup-18-oct-2019.img.dd bs=1m # сделать бэкап

Форматирование дисков. Как правило, внешних.

Схемы:

ОбозначениеОписание
GPTGUID Partition Table
APMApple Partition Map
MBRMaster Boot Records

Допустим, куплен новый внешний диск и надо разбить его на несколько разделов.

$ diskutil list /dev/disk2 # смотрим что есть
$ diskutil info /dev/disk2 # подробная информация

# разбивка: partitionDisk /dev/disk2 <схема> <ФС> <имя> <размер>
$ diskutil partitionDisk /dev/disk2 GPT ExFAT "SanDisk" 100%

# разбивка на два раздела: то же самое, но выбор ФС, имени и размера для обоих разделов
$ diskutil partitionDisk /dev/disk2 GPT ExFAT "Work" 250GB ExFAT "Backup" 250GB

Вывод дат в определённом формате

Кому как, а мне бывает нужно.

$ date '+%m-%d-%Y'

Таблица с примерами форматирования.

СимволОписание
%aДата, короткая. Sun
%AДата, полностью. Sunday
%bМесяц, короткий. Feb
%BМесяц, полностью. February
%mНомер месяца (01..12)
%MМинуты (00..59)
%dДень месяца
%DДата в формате %m/%d/%y
%HЧас в 24-часовом формате (00..23)
%IЧас в 12-часовом формате (01..12)
%SСекунды
%uНомер дня недели
%YГод
%z или %ZНомер временной зоны (например, -0400)

Homebrew

Пакетный менеджер для MacOS. Увы, изначально в системе такой штуки нет.

Основные команды.

$ brew search vim # поиск пакета по имени
==> Formulae
avimetaedit  macvim  neovim  vim
==> Casks
macvim

Если пакет указан в Casks, значит у него есть графический интерфейс. Тогда установить его надо через brew cask.

# ставим и удаляем vim
$ brew install vim
$ brew uninstall vim

# список установленных пакетов
$ brew list

# rmtree - программа, которая удаляет пакеты вместе с их зависимостями
# ставить по желанию
$ brew info beeftornado/rmtree
$ brew tap beeftornado/rmtree
$ brew rmtree <package>

# почистить хвосты после удаления пакета
$ clean /usr/local/Cellar # для Cask
$ brew cleanup -s

# установка актуальных gnu-утилит
$ brew install coreutils findutils gnu-tar gnu-sed gawk gnutls gnu-indent gnu-getopt

# установка yarn, которая не тащит за собой собственную версию node
$ brew install yarn --ignore-dependencies

$ brew update  # обновление формул и пакетов
$ brew upgrade # обновление версии brew
$ brew doctor  # рекомендуется после update, удаляет/перемещает симлинки и делает прочие добрые вещи

Управление сервисами, такими как nginx или mongo.

$ brew services list         # список имеющихся сервисов
$ brew service start nginx   # запуск
$ brew service restart nginx # перезапуск
$ brew service stop nginx    # остановка

Может быть, этот список будет пополняться. Но пока всё.