Перейти к содержимому

3. Уникальные команды macOS

macOS — это Unix, поэтому большинство bash команд работают так же. Но есть ряд уникальных инструментов, встроенных прямо в операционную систему. Они делают работу в терминале на Mac особенно удобной.

open — один из самых полезных команд macOS. Открывает файлы, директории, URL в подходящем приложении.

Окно терминала
open . # открыть текущую директорию в Finder
open ~/Documents # открыть директорию
open file.pdf # открыть PDF в Preview
open image.png # открыть в Preview
open index.html # открыть в браузере
# Открыть в конкретном приложении
open -a "Visual Studio Code" . # открыть в VS Code
open -a Safari https://google.com
open -a TextEdit file.txt
# Открыть URL
open https://github.com
open "https://www.google.com/search?q=homebrew"
# Открыть приложение
open -a Calculator
open -a "System Preferences"
# Открыть в Finder и выделить файл
open -R ~/Documents/file.txt

pbcopy (pasteboard copy) и pbpaste — работа с буфером обмена из командной строки.

Окно терминала
# Скопировать в буфер обмена
echo "Hello World" | pbcopy
cat file.txt | pbcopy
ls -la | pbcopy
# Скопировать содержимое файла
pbcopy < ~/.ssh/id_rsa.pub # скопировать публичный ключ SSH
# Вставить из буфера
pbpaste
pbpaste > file.txt # вставить в файл
pbpaste | wc -w # посчитать слова в буфере
# Полезные комбинации
pwd | pbcopy # скопировать текущий путь
git log --oneline | head -5 | pbcopy # скопировать историю git
cat package.json | python3 -m json.tool | pbcopy # отформатировать JSON и скопировать

say — встроенный синтезатор речи macOS.

Окно терминала
say "Hello, I am your Mac"
say "Привет! Я твой Mac" # поддерживает разные языки
say -v Alex "Hello" # конкретный голос
say -v Milena "Привет" # русский голос
say -r 200 "Fast speech" # скорость (слов в минуту)
say -f speech.txt # прочитать файл
# Список доступных голосов
say -v ?
# Уведомить об окончании задачи
long_command && say "Готово!"
npm run build && say "Build complete"
Окно терминала
caffeinate # держать Mac активным (Ctrl+C для остановки)
caffeinate -t 3600 # 1 час (в секундах)
caffeinate -d # не гасить дисплей
caffeinate -i # не засыпать системе
caffeinate -u # держать пользователя активным
# Запустить программу и не спать пока она работает
caffeinate -s ./long_script.sh
# Использование во время загрузки
caffeinate -d npm install # не спать пока ставятся пакеты

mdfind — использует индекс Spotlight для молниеносного поиска файлов.

Окно терминала
mdfind "keyword" # найти файлы содержащие слово
mdfind -name "file.txt" # найти по имени
mdfind -onlyin ~/Documents "report" # поиск в конкретной директории
# Метаданные
mdfind "kMDItemKind == 'PDF Document'" # все PDF файлы
mdfind "kMDItemContentType == 'public.image'" # все изображения
mdfind "kMDItemLastUsedDate >= $time.today()" # использованные сегодня
mdfind "kMDItemAuthors == 'John Doe'" # по автору
Окно терминала
mdls file.pdf # все метаданные
mdls -name kMDItemDisplayName file.pdf # конкретный атрибут
mdls -name kMDItemContentType file.pdf # тип содержимого
mdls -name kMDItemFSSize file.pdf # размер
mdls -name kMDItemAuthors article.pdf # авторы
mdls -name kMDItemMediaDuration video.mp4 # длительность видео

lsof (list open files) — показывает все открытые файлы и сетевые соединения. Незаменим для отладки.

Окно терминала
lsof # все открытые файлы (очень много!)
lsof -p 1234 # файлы процесса по PID
lsof -u username # файлы пользователя
lsof /path/to/file # кто держит файл открытым
# Сетевые соединения
lsof -i # все сетевые соединения
lsof -i :8080 # кто слушает порт 8080
lsof -i :80 -i :443 # HTTP и HTTPS
lsof -i TCP # только TCP
lsof -i UDP # только UDP
# Найти что мешает удалить файл
lsof +D /path/to/directory # все файлы в директории
# Освободить порт (узнать PID и убить)
lsof -ti :3000 # только PID
kill $(lsof -ti :3000) # убить процесс на порту 3000
Окно терминала
# screencapture — скриншоты
screencapture ~/Desktop/screenshot.png # скриншот экрана
screencapture -w ~/Desktop/window.png # выбрать окно
screencapture -s ~/Desktop/selection.png # выбрать область
screencapture -c # в буфер обмена
# diskutil — управление дисками
diskutil list # список дисков
diskutil info / # информация о диске
diskutil eject /dev/disk2 # извлечь диск
# airport — Wi-Fi из командной строки
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s # список сетей
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I # текущая сеть
# networksetup — управление сетью
networksetup -listallnetworkservices # список сетевых интерфейсов
networksetup -getinfo "Wi-Fi" # информация о Wi-Fi
# osascript — AppleScript/JavaScript
osascript -e 'display notification "Build done!" with title "Terminal"'
osascript -e 'tell app "Finder" to open (path to home folder)'
Окно терминала
# 1. Открой домашнюю директорию в Finder
open ~
# 2. Скопируй SSH ключ (если есть)
pbcopy < ~/.ssh/id_rsa.pub
echo "SSH ключ скопирован!"
# 3. Скажи что-нибудь
say "Привет! Я изучаю macOS терминал"
# 4. Найди большие файлы через Spotlight
mdfind "kMDItemFSSize > 100000000" # файлы > 100MB
# 5. Узнай что на порту 5432 (PostgreSQL)
lsof -i :5432
# 6. Запусти долгую команду и получи уведомление
sleep 3 && osascript -e 'display notification "Готово!" with title "Terminal"'
# 7. Сохрани вывод команды в файл и сразу открой
ls -la > /tmp/files.txt && open /tmp/files.txt

Эти команды делают macOS мощной платформой для разработки. Особенно полезны open, pbcopy/pbpaste и lsof в ежедневной работе!