3. Уникальные команды macOS
Команды, которых нет в Linux
Заголовок раздела «Команды, которых нет в Linux»macOS — это Unix, поэтому большинство bash команд работают так же. Но есть ряд уникальных инструментов, встроенных прямо в операционную систему. Они делают работу в терминале на Mac особенно удобной.
open — открыть что угодно
Заголовок раздела «open — открыть что угодно»open — один из самых полезных команд macOS. Открывает файлы, директории, URL в подходящем приложении.
open . # открыть текущую директорию в Finderopen ~/Documents # открыть директориюopen file.pdf # открыть PDF в Previewopen image.png # открыть в Previewopen index.html # открыть в браузере
# Открыть в конкретном приложенииopen -a "Visual Studio Code" . # открыть в VS Codeopen -a Safari https://google.comopen -a TextEdit file.txt
# Открыть URLopen https://github.comopen "https://www.google.com/search?q=homebrew"
# Открыть приложениеopen -a Calculatoropen -a "System Preferences"
# Открыть в Finder и выделить файлopen -R ~/Documents/file.txtpbcopy и pbpaste — буфер обмена
Заголовок раздела «pbcopy и pbpaste — буфер обмена»pbcopy (pasteboard copy) и pbpaste — работа с буфером обмена из командной строки.
# Скопировать в буфер обменаecho "Hello World" | pbcopycat file.txt | pbcopyls -la | pbcopy
# Скопировать содержимое файлаpbcopy < ~/.ssh/id_rsa.pub # скопировать публичный ключ SSH
# Вставить из буфераpbpastepbpaste > file.txt # вставить в файлpbpaste | wc -w # посчитать слова в буфере
# Полезные комбинацииpwd | pbcopy # скопировать текущий путьgit log --oneline | head -5 | pbcopy # скопировать историю gitcat package.json | python3 -m json.tool | pbcopy # отформатировать JSON и скопироватьsay — синтез речи
Заголовок раздела «say — синтез речи»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 засыпать
Заголовок раздела «caffeinate — не давать Mac засыпать»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 — поиск через Spotlight»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 — метаданные файла
Заголовок раздела «mdls — метаданные файла»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 — открытые файлы и сокеты
Заголовок раздела «lsof — открытые файлы и сокеты»lsof (list open files) — показывает все открытые файлы и сетевые соединения. Незаменим для отладки.
lsof # все открытые файлы (очень много!)lsof -p 1234 # файлы процесса по PIDlsof -u username # файлы пользователяlsof /path/to/file # кто держит файл открытым
# Сетевые соединенияlsof -i # все сетевые соединенияlsof -i :8080 # кто слушает порт 8080lsof -i :80 -i :443 # HTTP и HTTPSlsof -i TCP # только TCPlsof -i UDP # только UDP
# Найти что мешает удалить файлlsof +D /path/to/directory # все файлы в директории
# Освободить порт (узнать PID и убить)lsof -ti :3000 # только PIDkill $(lsof -ti :3000) # убить процесс на порту 3000Другие полезные macOS команды
Заголовок раздела «Другие полезные macOS команды»# 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/JavaScriptosascript -e 'display notification "Build done!" with title "Terminal"'osascript -e 'tell app "Finder" to open (path to home folder)'Практика
Заголовок раздела «Практика»# 1. Открой домашнюю директорию в Finderopen ~
# 2. Скопируй SSH ключ (если есть)pbcopy < ~/.ssh/id_rsa.pubecho "SSH ключ скопирован!"
# 3. Скажи что-нибудьsay "Привет! Я изучаю macOS терминал"
# 4. Найди большие файлы через Spotlightmdfind "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 в ежедневной работе!