Terminal представляет собой исключительно мощный инструмент, предоставляющий интерфейс командной строки для поддержки ОС OS X. Это тема, которую мы подробно рассмотрели ранее в нашей популярной серии Taming the Terminal.
Terminal может многое, от перемещения большого количества файлов до изменения предпочтений, о которых мы не могли и подумать. Для демонстрации возможностей Terminal я собрал 40 действительно превосходных подсказок и трюков, которые могут пригодиться.
Содержание
- Перед началом
- Вход в Terminal
- Очистить окно
- Переход к папкам
- Список содержимого каталога
- Ditto
- Отключить Drop Shadows в скриншотах
- Изменить формат файла скриншота
- Изменить расположение снимков экрана
- Включить AirDrop для старых компьютеров Mac
- Показать скрытые файлы и папки
- Стресс-тест вашего Mac
- Просмотр использования файловой системы
- Просмотр содержимого любого файла
- Восстановить Spotlight
- Удалить повторяющиеся записи «Open With…”
- Включить выбор текста в Quick Look
- Открытие файлов в любом приложении
- Проверьте безотказность Mac
- Установка обновлений OS X
- Отображение пользовательского сообщения в Login Window
- Начать простой HTTP Server в любой папке
- Повторное выполнение команды
- Загрузка файла без браузера
- Завершение работы Mac, с задержкой или без
- Отключить Mail’s анимацию в Mountain Lion
- Предотвратите переход Mac в режим сна
- Создайте файл любого размера
- Постоянный контроль вывода файла
- Получите свой сетевой IP-адрес
- Получите ваш внешний IP-адрес
- Тестирование сетевых подключений
- Отключить двухпальцевую навигацию Google Chrome
- Запретить использование приложений с сохранением в iCloud по умолчанию
- Сделайте иконку любого скрытого приложения в Dock Translucent
- Пути автозаполнения
- Сделать Mac говорящим
- Восстановление образа диска на внешний диск
- Отключить панель инструментов
- Посмотреть все активные процессы
- Смотрите список всех команд, которые вы ввели
- Что такое терминал, или консоль?
- Работа с консолью
- Как прописывать путь к каталогам или файлам
- Команды для работы с каталогами
- Команды для операций с файлами
- Завершение работы компьютера
- Аварийное завершение программ (процессов)
- Системная информация
- Работа без root
- Команды для операций с базой данных MySQL
- Копирование
- Поиск
- Процессы
- Работа с текстом
- Жесткий диск
- Сеть
- Лирическое отступление
- Начнём работу
- Продолжаем знакомство с консолью. Команда open
- Скрипт?
- Скрипты AppleScript
- Кратко о других полезных командах Mac OS X
- Что-то типа заключения
Перед началом
Все команды Terminal, которые я покажу, абсолютно безопасны, а когда дело доходит до изменения preferences, полностью обратимы. Надо сказать, что Terminal не оставляет права на ошибку, поэтому убедитесь, что вы вводите команды точно, как они описаны.
Как всегда, убедитесь, что у вас есть свежая резервная копия на всякий случай.
Совет. Если вы не знакомы с Terminal, я настоятельно рекомендую вам прочитать нашу вводную серию на тему Taming the Terminal. Terminal не для слабонервных и лучше, чтобы вы были готовы им пользоваться.
Кроме того, почему бы не попробовать некоторые Mac apps, доступные на рынке Envato, например Sentenza Desktop для Mac, которое помогает в создании приложений для Mac OS X.
Вход в Terminal
Окно Terminal
Терминал находится в папке Applications> Utilities. После открытия вы можете начать вводить команды.
В Terminal вы увидите что-то вроде этого:
MacBook:~ jordan$
Это приглашение для ввода команды. Чтобы правильно определить, как вводить команду, я буду использовать знак доллара ($) для обозначения запроса, поэтому просто введите команду, следующую за знаком доллара.
Давайте разберемся с некоторыми основными командами!
Очистить окно
$ clear
Проще говоря, это очищает текущее окно. (В Terminal в OS X вы все равно можете прокручивать вверх, чтобы увидеть, что там было. Эта команда просто очищает текущий вид).
Переход к папкам
Вы можете перейти в папку Utilities, набрав следующую команду:
$ cd /Applications/Utilities
Если вы хотите быстро вернуться в свою домашнюю папку, можете просто ввести:
$ cd
С папками, которые содержат пробелы, есть два способа сделать это:
$ cd /Volumes/Macintosh\ HD/ $ cd «/Volumes/Macintosh HD/»
В первом методе используется обратная косая черта \ для «экранирования» пространства. Поскольку командная строка рассматривает пробелы как часть команд, символ \ сообщает Terminal игнорировать пространство, которое затем следует. В качестве альтернативы вы можете просто поместить путь к папке в кавычки, и любые пробелы, которые она содержит, будут игнорироваться.
Чтобы продолжить, вернитесь к своей домашней папке.
Список содержимого каталога
Вы можете просмотреть содержимое папки, введя:
$ ls
Ввод по умолчанию — ‘ls’
Чтобы просмотреть его в формате списка, введите:
$ ls -l
Вывод ‘ls’ с флажком ‘-l’
Если вы хотите просмотреть все файлы, включая скрытые:
$ ls -a
Вышеуказанная команда отобразит все файлы, включая скрытые, которые начинаются с точки. Что, если мы хотим просмотреть папку как список, но также увидеть все скрытые файлы?
$ ls -la
Да, их простым объединением! Я думаю, ты уже разогрелся, так что давай взойдём на новый уровень!
Прежде чем продолжить, вернитесь к своей домашней папке.
Ditto
Подводный камень в OS X — ditto команда от Apple. Я нашёл это невероятно полезным при копировании больших объёмов данных, так как он может работать в окне Terminal, которое содержит более полезную информацию, чем традиционное окно копирования Finder.
$ ditto -V /old/work/ /new/work/
Эта команда скопирует нашу рабочую папку в новое место. Происходит то, что команда копирует содержимое нашей «рабочей» папки в новую «рабочую» папку.
Добавление -V, то есть verbose, печатает строку в окне Terminal для каждого файла, который копируется. Это очень удобно, видеть процесс копирования.
Ditto — команда, которую я часто использую для копирования гигабайт данных между жёсткими дисками и она мне кажется очень надёжной.
Отключить Drop Shadows в скриншотах
Если мы делаем скриншот окна в OS X, по умолчанию всегда будет отбрасывать тень, забирая пиксели. Если вы хотите избавиться от тени, можете использовать следующую команду:
$ defaults write com.apple.screencapture disable-shadow -bool TRUE
Вы можете перезапустить Mac, чтобы просмотреть изменения, либо, используя другую команду, сразу увидеть их:
$ killall SystemUIServer
Эта команда останавливает графический интерфейс OS X на долю секунды. Не беспокойтесь, он должен работать и будет перезагружен мгновенно — но уже с нашей новой опцией. Сделайте скриншот и заметите, что тень больше не включается.
Чтобы отменить изменения, вы можете ввести следующую команду:
$ defaults write com.apple.screencapture disable-shadow -bool FALSE $ killall SystemUIServer
Чтобы просмотреть изменения немедленно.
Изменить формат файла скриншота
PNG, вероятно, лучший формат для скриншотов и он может занимать немного места. Если вы предпочитаете использовать формат PDF, можете поступить так:
$ defaults write com.apple.screencapture type PDF $ killall SystemUIServer
Чтобы отменить изменения, введите:
$ defaults write com.apple.screencapture type png $ killall SystemUIServer
Изменить расположение снимков экрана
Несмотря на своё великолепие, скриншоты загромождают рабочий стол. Чтобы это изменить, можем использовать:
$ defaults write com.apple.screencapture location /drag/location/here $ killall SystemUIServer
Вместо того, чтобы связываться с длинными именами надоедливых путей, можете просто ввести первую часть команды, а после слова «location” перетащить папку, в которую вы хотите сохранить ваши скриншоты. Чтобы отменить изменения, можете использовать:
$ defaults write com.apple.screencapture location ~/Desktop $ killall SystemUIServer
Совет: отрезок , ~, фактически представляет вашу домашнюю папку. В приведённом выше примере это означает /Users/jordan/Desktop. Полезное сокращение!
Включить AirDrop для старых компьютеров Mac
AirDrop — отличная функция, позволяющая быстро и легко отправлять файлы между компьютерами Mac без необходимости работать с приложениями. Проблема в том, что это только на WiFi и на более современных Mac.
Если ваш Mac не поддерживает AirDrop, введите следующую команду, чтобы работать в сети Ethernet:
$ defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool TRUE
Вам нужно будет перезапустить Finder, самый быстрый способ — использовать команду killall:
$ killall Finder
Чтобы отменить изменения, введите:
$ defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool FALSE
Если нужна дополнительная информация о включении AirDrop, более подробно в нашем предыдущем руководстве «How to Enable AirDrop on Ethernet Connected and Unsupported Macs».
Показать скрытые файлы и папки
Чтобы просмотреть скрытые файлы и папки в OS X:
$ defaults write com.apple.finder AppleShowAllFiles -bool TRUE $ killall Finder
После перезагрузки Finder вы увидите много незнакомых файлов, обычно начиная с периода (который обозначает скрытый файл в OS X).
Чтобы отменить изменения:
$ defaults write com.apple.finder AppleShowAllFiles -bool FALSE $ killall Finder
Мы рассматривали видимость скрытых файлов в нашем предыдущем уроке «Revealing Hidden Files in OS X».
Стресс-тест вашего Mac
Если хотите запустить стресс-тесты на вашем Mac, можете ввести простую команду, которая мгновенно использует 100% процессора:
$ yes
Специалисты Apple часто ей пользуются при работе с проблемными компьютерами Mac, которые могут упасть под нагрузкой, это очень быстрый способ нагрузить Mac. Чтобы отменить команду, нажмите Ctrl-C.
Просмотр использования файловой системы
Иногда мы хотим увидеть, что делает наш Mac при чтении и записи диска, особенно если мы пытаемся определить причину, что не позволяет вытолкнуть диск. Для этого мы используем:
$ sudo fs_usage
Вводя sudo, мы просим запустить его как суперпользователя, что требует ввода пароля для входа в систему Mac. После того, как процессы обращаются к вашему диску, вам предоставляется постоянный поток информации.
Некоторые процессы, которые вы, вероятно, увидите, это Time Machine (backupd) и Spotlight (mds).
Для отмены нажмите Ctrl-C.
Просмотр содержимого любого файла
Иногда попадаются файлы в неизвестном формате. Предполагая текстовый формат, мы пытаемся открыть его в TextEdit, но это не всегда работает. Мы можем исследовать любой файл из Terminal , используя:
$ cat /path/to/file
Независимо от формата, файл откроется. В файлах, как MP3 или видео будет тарабарщина. Но если вы пытаетесь восстановить повреждённый документ, это может помочь.
Восстановить Spotlight
Spotlight может работать не так хорошо, как хотелось бы. Иногда нам просто нужно задать Spotlight новый индекс, чтобы он мог находить файлы как можно быстрее и эффективнее. Сделаем это:
$ sudo mdutil -E /Volumes/DriveName
Указанная команда удалит индекс Spotlight, вынудив его запустить новый. Более простой способ выполнить команду — ввести ее первую часть, а для местоположения просто перетащить жёсткий диск со своего рабочего стола в окно Terminal.
Удалить повторяющиеся записи «Open With…”
Общей ошибкой в OS X является наличие дублирующихся приложений в меню «Open With…”, которое может переполниться! Исправим это:
$ /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
Указанная команда будет работать в OS X Leopard и выше. Рекомендую перезагрузить Mac.
Включить выбор текста в Quick Look
Quick Look великолепен, но не стал бы ещё лучше, имей мы возможность выбирать текст без необходимости открывать документ? С этой командой сможете:
$ defaults write com.apple.finder QLEnableTextSelection -bool TRUE $ killall Finder
Чтобы вернуть изменения:
$ defaults write com.apple.finder QLEnableTextSelection -bool FALSE $ killall Finder
Открытие файлов в любом приложении
Вы легко можете открывать документы из Terminal, но как насчет их открытия в другом приложении, которое не подходит по умолчанию для файлов его типа?
$ open -a /Applications/AppName.app /path/to/file.txt
Это действие откроет наш текстовый файл в приложении AppName. Просто измените приложение и файл на всё, что вам нужно.
Проверьте безотказность Mac
Пройдут дни, недели или даже месяцы, прежде чем мы перезагрузим наш Mac, иногда даже не можем вспомнить, когда делали это в последний раз. Чтобы узнать, сколько времени наш Mac был без перезагрузки, можем использовать:
$ uptime
Это отобразит текущее время и время работы нашего Mac.
Установка обновлений OS X
Несмотря на то, что Software Updates переходят в App Store в Mountain Lion, мы можем использовать командную строку для установки обновлений без необходимости её запуска. Чтобы просмотреть доступные обновления программного обеспечения для вашего Mac:
$ sudo softwareupdate -l
Через несколько минут вы получите полный список.
Если захотите установить все доступные обновления, введите:
$ sudo softwareupdate -ia
Отображение пользовательского сообщения в Login Window
При массовом пользовании Mac бывает полезным выводить на дисплей насущную информацию, например «Эй, липкие руки! Другим тоже надо пользоваться клавиатурой, знаешь ли. »
$ sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText «Hey, Sticky Hands!»
В следующий раз, когда вы выйдете из системы или перезагрузите Mac, появится ваше сообщение. Чтобы полностью удалить сообщение:
$ sudo defaults delete /Library/Preferences/com.apple.loginwindow LoginwindowText
Начать простой HTTP Server в любой папке
Если вам нужно быстро протестировать HTML, над которым вы работаете, запустите простой веб-сервер в любой папке на вашем Mac. Перейдите в папку для использования и введите:
$ python -m SimpleHTTPServer 8000
Номер в конце — это порт для использования, откройте браузер и посетите http://localhost:8000, можете использовать порт 80 по умолчанию или полностью удалить номер порта.
Когда закончите, нажмите Ctrl-C.
Повторное выполнение команды
Некоторые из команд требуют сначала войти в sudo, чтобы запустить их как суперпользователя root. Иногда, введя длинную команду, узнаём лишь, что мы забыли сначала поместить sudo. К счастью, нам не нужно повторно записывать всю команду (или копировать и вставлять). Вместо этого мы можем использовать очень простой shortcut, который стоит вместо ранее написанной команды:
$ !!
Если нам понадобится ввести ту же команду ещё раз, но с sudo впереди, мы можем просто набрать:
$ sudo !!
Загрузка файла без браузера
Если хотите загрузить файл без использования браузера, мы можем дать следующую команду:
$ curl -O http://appldnld.apple.com/iTunes11/091-6058.20130605.Cw321/iTunes11.0.4.dmg
Это загрузит любой URL, который вы вводите в папку. Некоторые браузеры пытаются автоматически открывать файлы при их загрузке или добавлять утомительные расширения файлов, когда вы не хотите их (особенно при работе с текстовыми файлами, кроме расширения .txt).
Завершение работы Mac, с задержкой или без
Для немедленного завершения работы Mac:
$ sudo shutdown -h now
Чтобы немедленно перезагрузить Mac:
$ sudo shutdown -r now
Мы можем добавить временную задержку (в минутах), если мы хотим:
$ sudo shutdown -r +60
Хотя это не очень подходит собственному Mac, но, если вы подключились к Macs через командную строку, может оказаться полезными при перезапуске удалённых серверов.
Отключить Mail’s анимацию в Mountain Lion
У Mail великолепная анимация, благодаря которой, если вы нажмете ответ на любое сообщение, в окне отображается окно с композицией. Это не для всех. Чтобы отключить анимацию:
$ defaults delete com.apple.mail DisableReplyAnimations -bool TRUE
Закройте и перезапустите Mail, чтобы изменения вступили в силу. Чтобы отменить изменения:
$ defaults delete com.apple.mail DisableReplyAnimations -bool FALSE
Предотвратите переход Mac в режим сна
Мы оставили Mac делать то, что требуется, на некоторое время, а вернувшись, обнаружили его спящим. Это можно предотвратить, используя простую и с юмором команду:
$ caffeinate
Mac будет бодрствовать до тех пор, пока вы не отмените команду, нажав Ctrl-C. Вы можете добавить параметр времени с помощью:
$ caffeinate -u -t 600
Число означает секунды, поэтому наша команда остановит переход Mac в режим сна в течение следующих десяти минут.
Создайте файл любого размера
Бывают случаи, когда нам нужен файл определённого размера для тестирования. Я часто копирую файл 1GB по сети, чтобы получить представление о скорости. Найти файл нужного размера сложно, но с помощью командной строки мы можем создать пустой файл любого размера.
$ mkfile 1g test.abc
Вы можете указать размер файла в байтах (b), килобайтах (k), мегабайтах (m) или гигабайтах (g). В приведённом выше примере создается тестовый файл 1GB, называемый test.abc, но вы можете называть его как хотите, без расширения файла.
Постоянный контроль вывода файла
Это для всех начинающих системных администраторов. Если вы хотите отслеживать текстовый файл и просматривать любые изменения в нём по мере их создания, есть подходящая команда, идеальная для мониторинга журнала системы Файлов.
$ tail -f /var/log/system.log
Ваше окно Terminal будет постоянно следить за указанным файлом (в данном случае, system.log и каждый раз, когда добавляется ещё одна строка, она будет выводиться на экран.
Для завершения нажмите Ctrl-C.
Получите свой сетевой IP-адрес
Несомненно, мы могли бы открыть System Preferences, выбрать Network, а затем просмотреть нашу информацию об IP-адресе, но делать это через командную строку гораздо круче!
$ ipconfig getifaddr en0
Термин en0 представляет используемый сетевой интерфейс. Подобно некоторым языкам программирования, первый сетевой интерфейс начинается с нуля, а затем подсчитывается, поэтому, если у вас есть два интерфейса (например, ethernet и WiFi), то они будут соответственно en0 и en1.
По умолчанию ваш Mac всегда будет обозначать проводное сетевое подключение как en0, если только ваш Mac не имеет встроенного ethernet. Вы можете заменить en0 на en1, если вы не используете проводное соединение.
Получите ваш внешний IP-адрес
Самый простой способ узнать свой IP-адрес (тот, который нам предоставляет наш интернет-провайдер), посетить такой сайт, как What Is My IP или даже набрав «what is my IP address” в Google.
Но мы можем использовать Terminal, чтобы обнаружить наш публичный IP-адрес, через службу IP Echo.
$ curl ipecho.net/plain; echo
После запуска команды вам будет предоставлен внешний IP-адрес. Может, набрать будет на так быстро, как зайти на один из указанных сайтов, но мы можем больше сделать вводом с Terminal, особенно включив его в какой-то скрипт.
Тестирование сетевых подключений
Вероятно, вы слышали термин «ping”. Ping отправляет очень маленькие биты информации по сети на удалённый компьютер, учитывая время получения ответа. Полезно видеть, работает ли IP-адрес, или веб-сайт может быть недоступен.
$ ping -c 10 www.apple.com
Выполнение указанной команды отправит 10 пакетов информации и предоставит подробный отчёт о времени отклика. Вы можете заменить www.apple.com любым другим доменным именем или IP-адресом.
Отключить двухпальцевую навигацию Google Chrome
Для компьютеров Mac со встроенным трекпадом с мультитач или с трекпадом Magic Trackpad, Google Chrome предлагает собственную версию считывания двумя пальцами. Хотя это легко изменить в Safari, для Google Chrome необходимо немного обмануть терминал:
$ defaults write com.google.Chrome.plist AppleEnableSwipeNavigateWithScrolls -bool FALSE
Закройте и перезапустите Google Chrome и заметите, что больше не можете сделать swipe. Чтобы отменить изменения:
$ defaults write com.google.Chrome.plist AppleEnableSwipeNavigateWithScrolls -bool TRUE
Запретить использование приложений с сохранением в iCloud по умолчанию
ICloud — отличный сервис, но если вы предпочитаете Dropbox или сохранять файлы на свой Mac, то вы, без сомнения, разочарованы тем, что многие iCloud-совместимые приложения предлагают iCloud в качестве сохранения по умолчанию …. К счастью, мы можем изменить это:
$ defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool FALSE
Закройте и перезапустите любое приложение, использующее iCloud, и теперь любые новые документы будут по умолчанию отображаться на вашем Mac в диалоговом окне сохранения, а не iCloud.
Чтобы отменить изменения:
$ defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool TRUE
Сделайте иконку любого скрытого приложения в Dock Translucent
Скрытие приложений, когда вы их не используете, — отличный способ освободить место на экране, но нет никакого способа отличить, какое приложение скрыто, а какое нет. Мы можем изменить Dock, чтобы все скрытые приложения имели полупрозрачный значок:
$ defaults write com.apple.Dock showhidden -bool TRUE $ killall Dock
Чтобы отменить изменения:
$ defaults write com.apple.Dock showhidden -bool FALSE $ killall Dock
Пути автозаполнения
При указании длинного пути, например:
/Volumes/Macintosh\ HD/Users/admin/Library/Application\ Support/
Это может быть очень утомительно. Вместо этого мы можем использовать клавишу Tab для автозаполнения. Просто начните вводить любую команду, где вам нужно указать путь и на первой или второй букве нажмите Tab. Если есть только одна папка для заполнения по первым символам, она это сделает. Если нет, нажмите клавишу Tab дважды и она будет прыгать так далеко, насколько это возможно и покажет все потенциальные файлы и папки, которые вам могут понадобиться.
Чтобы попробовать, введите следующее, но вместо нажатия Enter нажмите Tab:
$ cd /Us
Вы найдете его для автозаполнения:
$ cd /User
Вероятно, вы услышите звуковой сигнал. Это потому, что есть две папки, к которым вы можете получить доступ: /Users и /User Information. Затем вы можете добавить последний символ в путь и нажать Enter.
Он очень похож на автозаполнение слов в iOS.
Сделать Mac говорящим
У Mac OS X есть отличная встроенная функция речи и мы можем сказать ей все, что хотим:
$ say «This Mac runs OS X, not OS ex»
Мы можем сделать, чтобы он читал любой текстовый файл, который нам нравится:
$say -f /path/to/file.txt
Затем наш Mac скажет, что было в текстовом файле.
Восстановление образа диска на внешний диск
Вы можете имитировать поведение Disk Utility и восстановить файл образа диска на диске, подключенном к вашему Mac:
$ sudo asr -restore -noverify -source /path/to/diskimage/dmg -target /Volumes/VolumeToRestoreTo
Он пропустит проверку (вы можете удалить эту часть, если проверка нужна, но это может занять некоторое время), и вы можете восстановить изображение, например копию OS X, прямо на диск или раздел.
Отключить панель инструментов
Dashboard когда-то казалась будущим быстрых приложений, таких как калькулятор и заметки. Несмотря на свою популярность, она быстро исчезла. Но всё ещё рядом и обычно открывается случайно.
Я пользуюсь Mission Control и располагаю его слева, но, честно говоря, предпочитаю, чтобы он полностью исчез. К счастью, Dashboard может быть отключен:
$ defaults write com.apple.dashboard mcx-disabled -boolean TRUE $ killall Dock
Вы обнаружите, что Dashboard больше не работает, вместе с виджетами внутри. Не беспокойтесь, его можно вернуть в случае необходимости:
$ defaults write com.apple.dashboard mcx-disabled -boolean FALSE $ killall Dock
Посмотреть все активные процессы
Приложение Activity Monitor предоставит подробный обзор того, чем занят наш Mac. Мы можем перенести большую часть его функциональности в Terminal:
$ top
После запуска мы легко увидим все текущие процессы, перечисленные в зависимости от частоты использования процессора, с наиболее активными процессами CPU в начале списка.
Кроме того, в верхней части окна есть много другой информации, от того, сколько процессов запущено, сколько памяти используется в настоящее время до объёма генерируемого нами сетевого трафика.
Смотрите список всех команд, которые вы ввели
Напоследок можно ввести команду просмотра всех команд, которые мы вводим:
$ history
Все предыдущие команды, запущенные в Terminal, перечислены здесь, что даёт вам возможность вернуться назад и посмотреть, что сделано.
Terminal может помочь настроить ваш Mac точно, как вы хотите и предоставить доступ к функциям, которые просто не отражаются. Существует множество безопасных вариантов, но, чтобы не ошеломить пользователя, они скрыты и их могут найти только опытные users, которые хотят внести изменения.
Командная строка — очень мощный инструмент, и, как сказал дядя Бен Питеру Паркеру, «с большой силой приходит большая ответственность». Используйте её мудро!
Я давно пользуюсь операционными системами Ubuntu и Mac OS X. Когда-то я любил Windows (XP и 7), но после выхода Windows 8 я полностью разочаровался и начал искать альтернативы. И вот уже много лет подряд я влюблен в Ubuntu, поэтому мне пришлось освоить команды терминала. Все эти команды работают одинаково в Linux, Ubuntu и Mac OS X. Есть, конечно, особенности, но практически все команды из этой статьи будут работать везде. Эту статью я написал как шпаргалку-напоминалку, потому что если ты не системный администратор и пользуешься этими командами редко, то они постепенно выветриваются из памяти.
Что такое терминал, или консоль?
Терминал, или консоль, – это специальное окно, в которое вы вводите специальные команды для общения с операционной системой вашего компьютера напрямую без мышки и окон. Терминал, или консоль, еще называют командной строкой. У Windows нет консоли, эта операционная система работает по-другому. А у Linux, Ubuntu, Mac OS X – есть. Кстати, Ubuntu и Mac OS X сделаны на базе операционной системы Unix, поэтому они очень похожи. Вот, как выглядит терминал на моем компьютере с Ubuntu:
Сюда и надо вводить команды. Да, выглядит не очень, намного приятнее работать с красивым графическим интерфейсом, но со временем привыкаешь и начинает нравиться. А системные администраторы – так вообще кайфуют от консоли. Я даже встречал таких, которые всегда пользуются только консолью.
Что можно делать при помощи консоли?
При помощи консоли можно делать все что угодно: копировать файлы и фрагменты текста, редактировать текстовые документы, открывать и удалять файлы и многое другое. Консоль позволяет делать многое из того, что нельзя сделать мышкой в графическом интерфейсе.
Терминал работает одинаково как в Ubuntu и Linux, так и в Mac OS X. Но вот запускается он по-разному.
Работа с консолью
Как запустить консоль в Mac OS X
Нажмите сочетание горячих клавиш Command (⌘) + T.
Или запустите Spotlight, для этого нажмите на значок лупы в верхнем горизонтальном меню справа или с помощью сочетания клавиш <Ctrl> + <Пробел>.
В строке поиска Spotlight введите слово «Терминал” и нажмите «Enter”.
В результате откроется окно Терминала.
Как запустить консоль в Linux или Ubuntu
Чтобы запустить терминал, нажмите одновременно Ctrl + Alt + T.
Работа с окном консоли
Как прописывать путь к каталогам или файлам
Директория, папка и каталог – обозначают одно и то же.
После любой из команд вы можете указывать следующие символы, чтобы задавать нужное местоположение каталога или файла:
. – текущий каталог;
.. – родительский каталог (один уровень вверх);
~ – домашний каталог;
/ – корневая директория.
Например, путь /каталог/файл.txt – задает путь к файлу с названием файл.txt, который лежит в каталоге с названием каталог, который, в свою очередь, лежит в корневой (самой верхней) директории.
Команды для работы с каталогами
При помощи консоли можно делать все что угодно с файлами и каталогами. Это, конечно, менее удобно, чем, например, в Проводнике Windows или в Finder Mac OS X, но когда привыкаешь, то это начинает даже нравиться.
Команда | Что делает |
---|---|
pwd | показывает путь к текущему каталогу (Print Working Directory) |
ncdu / | утилита выведет иерархический список директорий, начиная с самого большого размера, утилита интерактивна, мы можем перемещаться по дереву, входить в папки, изменять представление информации, удалять ненужные файлы и директории |
ls | вывод содержимого текущего каталога |
ls | вывод содержимого указанного каталога |
ls -l | просмотр прав доступа |
ls -lah | выводит все файлы, включая скрытые и размеры файлов в Мб |
ls -a | выводит все файлы и каталоги, включая скрытые (и с точками перед названием(.)) |
ls -G | выводит файлы и каталоги в цвете |
ls -R | выводит в том числе и подкаталоги |
tree | выводит все каталоги и подкаталоги |
cd | изменение каталога |
cd / | переход в корневую директорию |
mkdir | создание каталога |
rmdir | удаление пустого каталога |
rm -r | рекурсивное удаление каталога (сначала будут удалены все подкаталоги и все файлы в этих подкаталогах, а потом и сам каталог) |
du -sh | вывести размер текущего каталога |
du -sh * | вывести размер всех каталогов в текущем каталоге |
du -sh | вывести размер указанного каталога |
cp -r /* | копирует все файлы из в |
mc | запуск файлового менеджера Midnight Commander |
find | поиск |
find / -name file.txt | найти файлы с именем file.txt, поиск начать с корневого каталога |
find / -name ‘*.txt’ | найти файлы по маске |
zip -r archive.zip folder/ | заархивировать все файлы и подкаталоги из каталога folder в архив с названием archive.zip |
unzip archive.zip | разархивировать в текущий каталог |
unzip -l archive.zip (или less archive.zip) | просмотреть содержимое архива archive.zip |
tar -xvf | разархивировать в текущий каталог |
Команды для операций с файлами
Команда | Что делает |
---|---|
nano | редактирование файла в редакторе nano |
cp | копирует файл1 в файл2 |
scp :/path/to/ :/path/to/other/ |
копировать файл с одного сервера на другой |
scp :file.txt /local/folder | скачать файл file.txt с сервера на текущий компьютер в папку foder |
scp file.txt :~/ | загрузить файл с текущего компьютера на сервер |
rm | удаляет файл (-v будет писать о том, что делает) |
mv | перемещает файл1 в файл2. Эта же команда используется и для переименования файла. |
touch | создание пустого файла |
chmod | задание прав доступа |
chown пользователь файл | смена владельца файла |
grep | вырезает нужные вам строки из текстовых файлов, которые содержат указанный пользователем текст. Например, grep «Include» /etc/apache2/apache2.conf — покажет все строки из файла apache2.conf, содержащие слово Include. |
grep -i -R «слово» | найти «слово» во всех файлах и каталогах, включая вложенные. -i — капитализация букв не важна, -R — означает «рекурсивно». |
tail | вывод последних строк файлов |
cat | вывести все текстовое содержимое файла на экран или объединить содержимое нескольких файлов и вывести его на экран (выводит все подряд, а не страницу за страницей) |
less | просмотреть файл страница за страницей (пробел — следующая страница, b — предыдущая страница, v — редактировать, j или ↵ — ввести следующую линию) |
Завершение работы компьютера
Команда | Что делает |
---|---|
reboot | перезагрузка компьютера |
halt | завершить работу системы, но не выключать ПК |
poweroff | завершить работу системы и выключить ПК |
shutdown -h 19.30 | завершить работу системы в 19.30 и вывести сообщение |
shutdown -h +5 «Пожалуйста, сохраните свою работу» | показать сообщение всем залогиненным пользователям и через 5 минут выключить компьютер |
shutdown -r now | перезагрузить систему |
Аварийное завершение программ (процессов)
Команда | Что делает |
---|---|
xkill | выберите окно с программой, которую надо завершить |
kill PID | принудительное завершение зависшей программы. PID — process ID. Пример — kill 2484. |
ps | определение идентификатора процесса. ps -a и ps -U root — эти команды позволяют добраться до нужных процессов, если они запущены в других терминалах. Первая команда выводит список процессов, запущенных вами, а вторая — от вашего имени (если вы работает под root). |
ps -ax | grep | вычисление PID процесса с известным именем. Пример # ps -ax | grep firefox |
killall | самый удобный способ завершить процесс, не зная его ID. Убивает все работающие процессы во всех консолях с заданным именем |
Ctrl+C or Ctrl+| | остановить работу скрипта в командной строке |
Системная информация
Команда | Что делает |
---|---|
top | это команда выводит полную информацию о системе в режиме реального времени (список процессов, загруженность процессора, памяти и т.д.) h — справка q — выход из программы. u — показывает только пользовательские процессы (top -u username) F — изменяет столбец, по которому сортируются задачи f — выбор столбцов для вывода M — выводит данные в мегабайтах (top — M) |
man имя_программы | справка по программе, листать пробелом |
k | остановить процесс |
htop | то же самое, что и top, но с графическим интерфейсом |
free | выводит информацию об использовании оперативной и виртуальной памяти |
df -h | выводит информацию об использовании дискового пространства |
cat /etc/*release* (или cat /etc/issue) | узнаем версию дистрибутива Linux |
atop | лучше, чем top и sar вместе взятые, хранит исторические данные (atop) |
sudo dpkg —get-selections | смотрим список установленных пакетов ( | more — постраничный вывод) (Debian / Ubuntu Linux) |
baobab | информация об используемом дисковом пространстве |
hardinfo | программа, позволяющая смотреть информацию о системе |
hostname | показывает hostname системы |
clamAV | бесплатный антивирус, стандарт для Linux-систем |
Работа без root
Команда | Что делает |
---|---|
sudo | позволяет запустить любую команду с привилегиями root, при запуске каждой команды надо вводить пароль |
sudo -i | запускает оболочку root, любые команды будут выполнены с правами администратора, не надо каждый раз вводить пароль |
sudo gedit /etc/apt/file.txt | изменить файл при помощи gedit с правами root |
su user | переключение пользователя (без имени пользователя переключает на root) |
sudo !! | перезапускает последнюю команду с правами администратора |
passwd имя_пользователя | изменение пароля пользователя |
Команды для операций с базой данных MySQL
Команда | Что делает |
---|---|
mysql -u root -p | подключение к MySQL как root |
mysql -u user -p database | подключение к БД «database» от имени пользователя «user» |
create database db_name | создаем базу данных «db_name» |
show databases | вывести список всех имеющихся баз данных |
mysql > create user db_user mysql > grant all on db_name.* to ‘db_user’@’localhost’ identified by ‘db_password’ |
создаем нового пользователя «db_user» и даем ему полные права на управление БД «db_name» с паролем «db_password» |
SELECT User,Host FROM mysql.user | просмотр списка пользователей MySQL |
DROP USER ‘user_name’@’localhost’ | удалить пользователя MySQL |
mysqldump -u -p > .sql | экспорт базы данных MySQL |
mysql -u -p database_name | импорт базы данных MySQL |
drop database database_name | удалить базу данных MySQL |
Это самые популярные команды терминала (консоли), которые используются чаще всего. Если вы новичок, то пусть они вас не пугают, на самом деле все просто, надо только немного привыкнуть. Я уже привык и мне нравится. А вам?
Джейлбрейк 20.10.2015 | 0
Одной из главных проблем джейлбрейка для операционной системы iOS 9 является несовместимость большинства твиков от iOS 8 с новой прошивкой. По этой причине разработчикам расширений придется потратить огромную кучу времени на оптимизацию своих твиком с новой ОС, причем этот процесс может затянуться на долгие месяцы.
Как известно, большинство людей, устанавливающих джейлбрейк, хотят получить полный контроль над системой. Так как iOS основана на Linux, то этого можно добиться с помощью SSH доступа к системе. Проще говоря, через специальный терминал, который умеет работать со специальными командами.
На операционную системы iOS 8 с джейлбрейком существовало сразу три хороших терминала: Terminal, MobileTerminal, и WhiteTerminal. Из-за особенностей iOS 9, ни один из них не работает на iPhone и iPad с этой прошивкой. Получается, что получить доступ над своим устройством не получится, но решение все же есть.
Чтобы пользоваться терминалом на iOS 9 нам потребуется компьютер на Windows, Linux, или OS X. Для начала необходимо запустить на «яблочком» устройстве магазин Cydia, и произвести установку джейлбрейк-твика OpenSSH. Это расширение позволяет удаленно подключаться к «яблочному» смартфону или планшету, чтобы затем иметь возможность легко управлять им с помощью команд.
Установив этот твик на свой iPhone или iPad, важно обязательно перезагрузить устройство. Теперь подключаем компьютер и испытуемое устройство к одной Wi-Fi сети. На смартфоне или планшете с iOS открываем «Настройки» — Wi-Fi. Справа от подключенной Wi-Fi сети будет значок буковки i. Нажимаем на него, и запоминаем информацию из графы «Адрес IP». В нашем случае это 192.168.1.103.
Теперь запускаем на компьютере под управлением Linux или OS X приложение «Терминал». При использовании операционной системы Windows рекомендуем использовать программу PuTTY. Вводим в терминале команду для подключения к iPhone, iPad или iPod Touch. Она выглядит следующим образом:
ssh root@192.168.1.103
Адрес после знака @ необходимо заменить на свой из графы «Адрес IP», который мы узнавали ранее. После ввода этой фразы потребуется ввести пароль от своего гаджета. По умолчанию он: alpine (без точки на конце).
Если все прошло удачно, то после ввода пароля появится примерно такая строчка: iPhone-Sergej:~ root#. Также подключиться к своему смартфону или планшету можно непосредственно с другого устройства. Для этого можно воспользоваться любым SSH клиентов доступа. Для iOS самым лучшим считается хорошо известный за рубежом Prompt 2.
Присоединяйтесь к нам в Google News, Twitter, Facebook, ВКонтакте, YouTube и RSS чтобы быть в курсе последних новостей из мира технологий будущего.
Terminal.app для начинающихУчимся работать с командной строкой А. Гаспарян <<1 >>
С каждым годом количество свитчеров растет. Причем на Mac переходят не только с Windows, очень часты случаи перехода с Unix. И если большинству пользователей Unix, привыкших к консольным командам, работа с терминалом в Mac OS X не доставляет никакого дискомфорта, то для мигрантов с Windows ситуация выглядит несколько иначе. Большая часть таких пользователей редко использует возможности ядра Unix, не видя в этом никакой необходимости. Естественно, такой пользователь вполне может обойтись и без терминала, но знание хотя бы основных команд в некоторых ситуациях может значительно облегчить жизнь любого обладателя компьютера под управлением Mac OS X, a кому-то просто поможет расширить свой кругозор и лучше понять выбранную им операционную систему. Учитывая, что этот небольшой обзор ориентирован на людей, никогда не имевших ранее даже минимального опыта работы с Unix-подобными системами, мы начнем с самых азов, постепенно переходя от простого к сложному.
Для начала стоит упомянуть главную команду для любого человека, чувствующего себя не очень уверенно при виде командной строки: man. Это — справка. Добавив к man имя нужной вам команды, вы получите достаточно полную информацию о ней. Для примера введите man man, и вы увидите в терминале более полную документацию по этой команде.
Для выхода используйте клавишу Q.
Да, стоит заметить, что большинство команд в Unux-системах, не требующих вывода информации пользователю, в случае своего успешного завершения вообще ничего не показывают. В тех случаях, когда назначение команды не заключается в выводе информации — на экран выводятся только ошибки и предупреждения о нарушении нормального выполнения команды.
команда cd. Одна из основных команд, позволяющих осуществлять навигацию по различным директориям. Если, открыв терминал, вы сразу хотите оказаться в определенной директории, скажем, в Documents, достаточно набрать в терминале cd Documents.
cd ~ команда, при помощи которой вы переходите в свою директорию. Для примера, если вы решаете перейти в каталог, где расположены ваши документы, то следующая команда будет выглядеть так: cd ~/Documents.
cd — позволяет вернуться в предыдущую директорию.
cd .. позволяет вам подняться в вышестоящую директорию.
ls выдает список имен файлов в указанной директории
ls -f показывает файлы с их расширением.
ls -a перечисляет все файлы, включая скрытые.
ls -lo кроме перечисления существующих файлов показывает также их права доступа и дату их создания. Если вы хотите, чтобы были перечислены только файлы, начинающиеся с определенной буквы, например, с Z, наберите ls Z*. Учтите, команда чувствительна к регистру, и если какие-то файлы имеют в начале заглавную Z, а вы набрали обычную z, вы их просто не увидите.
mkdir создает новую директорию. Для примера: набрав команду : mkdir new, вы создадите новую директорию с названием new.
rm удалить файл.
rmdir удалить директорию.
Примеры :
rm new.txt : команда удалит файл new.txt
rmdir new — удаляет директорию с именем new.
Если вы хотите удалить директорию, которая не является пустой, вы либо должны в начале удалить все ее содержимое, либо использовать команду rm -R
rm -R new : удаляет директорию new со всем ее содержимым.
clear — очищает экран терминала. В принципе, иногда достаточно просто сделать «правый клик» на окне терминала и выбрать в контекстном меню — Clear Scrollback.
script — позволяет сохранить в текстовый файл все введенные вами с клавиатуры символы. На практике — чрезвычайно удобная опция, позволяющая вам получить полнейший протокол всей вашей сессии. В файле также будет указаны ее точные дата и время.
Script done on Sat Feb 10 18:21:32 2007
файл будет сохранен с именем typescript в вашей домашней директории.
bc — команда, которая выведет на экран терминала простейший консольный калькулятор.
df — простая команда, которая покажет вам объемы вашего дискового пространства, включая сетевые диски.
du — список всех папок, имеющихся на вашем системном разделе.
Копирование
Копирование файлов и папок, осуществляется при помощи команды cp. Допустим, вы хотите скопировать файл note.txt с рабочего стола в каталог Documents. В этом случае потребуется набрать в терминале cp note.txt ~/Documents
Необходимо учитывать, что если файл с таким же именем существует на новом месте, он будет удален и заменен скопированным файлом без предупреждений и возможности восстановления.
Если при этом вы желаете не просто скопировать файл, а скопировать и сохранить его уже с новым названием (для примера возьмем в качестве нового названия new.txt), то требуемая команда будет выглядеть следующим образом — cp note.txt ~/Documents/new.txt. И в вашей папке появится файл new.txt, являющийся копией файла note.txt с рабочего стола.
Для того, чтобы скопировать нужный файл в исходный каталог, но уже с новым именем, достаточно будет набрать cp note.txt new.txt
cp -R Documents «Documents backup» — команда, посредством которой вы сохраняете резервную копию всей вашей директории Documents. Кавычки необходимы, так как в названии директории присутствует пробел.
sudo cp -Rp /Users «/Users backup» — команда позволяет скопировать всю директорию /Пользователи (включая все домашние папки, находящиеся внутри), сохраняя при этом как можно больше файловой информации (принадлежность, права и т.д., но не ветвь ресурса) с названием Users backup. Вы должны выполнять эту команду из под учетной записи администратора, так, в данном примере используется sudo, позволяющая получить временный доступ с правами root. Если вы выполняете команду из-под учетной записи пользователя, вас попросят ввести пароль администратора.
ditto позволяет скопировать директорию, но с сохранением атрибутов скрытых файлов.
ditto Documents «Documents backup» копирует всю директорию под именем «Documents» и называет копию директории «Documents backup».
mv — переименование файлов. Для примера, набрав в терминале mv new old, вы переименуете файл или директорию с названием new в old. А следующей командой: mv old ~/Documents — вы переместите его из текущей директории в вашу директорию Documents.
Поиск
find — поиск файлов, соответствующих заданным вами критериям.
Примеры:
find / -name (имя файла без скобок) : команда осуществит поиск нужного вам файла по всей файловой структуре, включая все смонтированные диски (в том числе и сетевые) и отобразит полный путь к нему.
find -x/ -name (имя файла без скобок) : то же самое, но поиск будет осуществляться исключительно на загрузочном диске вашей системы.
find . -mtime -(здесь нужная вам цифра, вводить без скобок) : эта команда, как и предыдущая, осуществляет поиск в текущем каталоге и всех его подкаталогах, но ее отличие в том, что указав, к примеру, цифру 3 (find . -mtime -3) команда выдаст вам все файлы, которые были изменены в течение последних трех дней. Указав 0, команда найдет только те файлы, дата которых была изменена.
Процессы
ps -x команда, выдающая в терминале список процессов текущего пользователя.
ps -ax показывает список всех процессов
ps — aux показывает список всех процессов, запущенных в системе на данный момент, а также дополнительную информацию о них, включая загрузку процессора, время и пр.
top выдает список основных задействованных процессов и постоянно обновляемую информацию о них. Нагрузка на процессор, размер задействованной памяти, время и пр.
top -us5 то же самое, но с сортировкой процессов, по объему их нагрузки на процессор.
kill — команда, «убивающая» зависший процесс или посылающая ему сигнал.
sync — команда, принудительно записывающая содержимого дискового кэша на жесткий диск.
Пример: набираем в терминале команду top, в появившемся списке процессов выбираем нужный, скажем, процесс 2200, (в моем случае им оказался совершенно ненужный мне AppleSpell) нажимаем Q для выхода из меню — и после kill 2200. Еще раз набираем top — и убеждаемся, что больше упомянутый 2200-го процесс больше не фигурирует в списке запущенных процессов.
lsof — команда, показывающая список открытых файлов в вашей системе, и файлов, к которым в данный момент обращаются прикладные программы, для примера, если у вас запущен торрент клиент, команда покажет даже те файлы, которые вы скачиваете в данный момент, или раздаете. Естественно, чтобы увидеть полный список, нужно обладать правами администратора.
sudo lsof — список открытых файлов, включая всю систему. Требуется пароль администратора.
И наконец, команда sudo lsof -i — команда, позволяющая вам увидеть все открытые сетевые соединения в вашей системе.
Работа с текстом
pico и nano — простейшие текстовые редакторы для терминала. Довольно ограничены по функционалу. Для выхода из pico или nano нажмите сочетание CTRL+X
more или less — отображает содержимое текстового файла по одной странице. Для перехода на следующую нажмите пробел. Не работает с документами Word, PDF, RTF и любыми файлами отличным от txt формата.
emacs — GNU Emacs — довольно продвинутый редактор, разработанный под X Window и теряющий часть своего функционала при запуске в терминале. Но несмотря на это, позволяет видеть одновременно несколько файлов, перемещать текст между файлами и редактировать во время работы команд оболочки. Программа, вполне заслуживающая отдельного обзора, поэтому здесь мы не будем подробно останавливаться на нюансах его настройки и использования.
Жесткий диск
diskutil выдает список всех возможных команд для операций с вашим жестким диском. От просто просмотра командой diskutil list до таких операций, как монтирование разделов, починка всем знакомых «пермишонов» или формата. Говоря проще, перед вами все опции (на самом деле их даже больше) уже знакомой вам Disk Utility с той разницей, что все действия вы выполняете через интерфейс командной строки. Вот пример лишь нескольких команд, предлагаемых вам diskutil
diskutil resizeVolume позволяет изменять размер выбранного раздела
diskutil partitionDisk позволяет совершать операции над диском и его отдельными разделами. Форматирование, выбор файловой системы и пр.
diskutil eraseDisk стирает информацию с вашего жесткого диска.
diskutil info / выводит информацию о загрузочном разделе вашего диска. Его имя, тип файловой системы, общий размер, количество общего и свободного пространства и пр.
diskutil info /Volumes/здесь имя раздела то же самое, но для любого другого, смонтированного, но незагрузочного раздела вашего жесткого диска.
sudo diskutil repairPermissions / еще одна команда для «починки пермишнов» на загрузочном диске с вашей MacOS X. При ее выполнении от вас потребуют ввести пароль администратора.
sudo passwd root — команда, которая может вам понадобиться только в одном случае — если вы забыли root пароль, пароль администратора.
Сеть
ifconfig — команда, которая дает больше возможностей для контроля параметров ваших сетевых соединений, но имеет один ощутимый минус по сравнению с настройкой через панель System Preference — после перезагрузки компьютера, сделанные вами изменения часто теряются.
ftp — утилита и одновременно протокол (File Transfer Protocol) для передачи файлов. После установления связи с другой машиной (ftp-сервером) вам, скорее всего, будет предложено ввести свое имя (login) и пароль (password) на этой машине. После подключения, Вы сможете с помощью команды «cd <имя директории>» перемещаться по директориям машины-сервера, с помощью «ls» просматривать содержимое выбранных каталогов, с помощью команды «get <имя файла>» перекачивать файлы с сервера на клиентскую машину (в данном случае клиентом будет узловая машина), а с помощью команды «put <имя файла>», наоборот, переслать файл с клиентской машины на сервер. Для окончания сеанса связи служит команда «quit». Если вы хотите, чтобы передача данных происходила в фоновом режиме, можно воспользоваться командой dlftp <имя ссылки>
host — выполняет поиск с помощью службы DNS по заданному имени или IP адресу и выдает информацию о конкретном узле Интернета.
nslookup — Выполняет «поиск имени узла» по заданному IP адресу.
dig — несет те же функции.
telnet — команда, запускающая утилиту и протокол для подключения к удаленной системе.
rlogin — команда расшифровывается как Remote login и инициирует сессию с удаленной системой. По сравнению с ssh — небезопасна в использовании.
rsh (Remote shell) — исполняет команду на удаленной системе.
rcp (Remote copy) — копирование файлов между двумя машинами через сеть. Как и предыдущие r* команды, небезопасна в использовании и по возможности от нее стоит лучше воздержаться в пользу ssh.
ssh (Secure shell) — устанавливает сеанс связи и выполняет команды на удаленной системе. Выступает в качестве защищенной замены для таких команд как telnet, rlogin, rcp и rsh
write — команда запускает утилиту, которая позволяет передать текст сообщения на другой терминал. Работает в интерактивном режиме, поэтому, как правило, не употребляется в сценариях.
finger — Возвращает информацию о пользователях в сети. По требованию эта команда может выводить содержимое ряда файлов, указанного пользователя. В крупных сетях данная служба часто отключается по соображениям безопасности.
whois — команда, отвечающая за поиск в Domain Name System — DNS. При использовании ключа -h вы указываете, на какой именно из существующих whois серверов будет отправлен ваш запрос.
команда ping, в отличие от множества уже приведенных здесь команд, знакома и большинству Windows — пользователей. Чаще всего она применяется как инструмент для диагностики соединений, ее задача — передача пакета ICMP echo_request.
reboot — перезагрузка компьютера
shutdown -h now — команда, выключающая ваш компьютер без временной задержки и ненужных вопросов.
(Две последние команды выполняются исключительно из-под аккаунта администратора.)
Конечно, немногие пользователи используют возможности терминала в повседневной жизни. Кому-то это кажется древним и отжившим анахронизмом, кого-то отталкивает необходимость запоминать довольно большой список необходимых команд, в то время, когда большинство требуемых задач можно выполнить при помощи обычной мыши. Но, раз начав работать с терминалом, вы сами довольно быстро оцените возможности, которые он вам предоставляет.
Источники: МакЦентр
Доброго дня, уважаемые хабравчане-маководы!
Сегодня я расскажу как увеличить эффективность работы в Mac OS X за счёт использования консоли.
Лирическое отступление
Думаю, ни для кого не секрет, что Mac OS является Unix-based системой, но переработанной почти до неузнаваемости. Даже консоль засунули куда подальше — не сразу и найдёшь. И вся система нацелена на использование GUI, при дефолтных настройках даже переключение между кнопками по Tab не работает — без мыши никуда. И тем не менее, Мак — это не только окошки, не только док и лаунчер. Мак это ещё и вся мощь shell скриптов и консоли!
Если Вы пришли из мира M$, то для начала неплохо бы поучить общие команды shell’а, например, по вот этому учебному пособию. Как минимум, нужно усвоить команды перехода по каталогам и способы запуска программ и скриптов.
Если Вы пришли в мир Mac OS из мира Linux’а и FreeBSD, то, скорее всего, знаете как минимум основы shell-скриптинга. Но и для вас в статье может оказаться кое-что интересное, ведь в маке есть уникальные консольные команды, которые так же полезно знать.
Вот о некоторых особенностях маковской консоли далее и пойдёт речь.
Начнём работу
Для начала избавимся от стандартного терминала. Ну, точнее, поставим другой — получше. Я лично предпочитаю iTerm2, который подходит для работы куда лучше системного. Хотя, и у него бывают интересные моменты (см. картинку вверху).
Далее нам могут понадобиться дополнительные инструменты, поэтому устанавливаем MacPorts (хотя, конечно, можно и другой менеджер пакетов). Теперь мы можем ставить нужные консольные утилиты с помощью простых команд. Например, ставим Midnight Commander (он в любом случае может пригодиться), набираем в iTerm2:
sudo port install mc
После ввода пароля и установки зависимостей и самого mc, можем его запустить, как вы уже догадались, командой mc.
О ужас! Нам понадобятся функциональные клавиши, а они нажимаются только через Fn+F15, что же делать? Ну как что — лезть в системные настройки и выключать это. Иначе сложно будет с mc работать.
Ещё одно важное замечание: кури мануалыесли что-то не понятно, набираем в консоли man команда — и получаем подробное описание команды. (Кстати, для выхода из просмотра мануала надо просто нажать Q).
Продолжаем знакомство с консолью. Команда open
Легко можно заметить, что mc показывает куда больше файлов и папок, чем Finder. Конечно, можно поставить хак для него, чтобы он отображал такие файлы, но не все это любят. Так что остаётся лишь пользоваться Cmd+Shift+G и вводить вручную имя папки. Но данный способ не особо удобен: нет автокомплита, нет возможности видеть скрытые файлы. Теперь вернёмся к терминалу. В Mac OS X есть замечательнейшая команда open, которая действует так, как будто пользователь сделал даблклик на файле или папке в Finder — открывает файл, бандл или ссылку в связанной программе, открывает папку в Finder’е. Вот простой пример работы с этой командой: заходим с помощью mc в скрытую папку (например, /etc/) и набираем:
open .
Wuala! Файндер отобразил нам нашу системную папку! Но это ещё не всё, ведь скрытые файлы всё ещё не видны. Для примера, откроем наш .profile:
open .profile
И — опа! — скрытый файл открылся в TextEdit! Всё предельно просто.
Пара слов о бандлах
Это всем известно, но на всякий случай повторю: обычные программы в Mac OS X на самом деле являются папками с расширением .app и особым образом устроенным содержимым. Убедиться в этом легко: открываем в Finder папку /Applications/ и делаем Ctrl+Click (либо Right-Click, если хотите) на любой программе и выбираем «Показать содержимое пакета».
Из консоли это так же очень хорошо видно: mc отображает эти программы именно как папки. И как же запустить из консоли GUI-программу, спросите вы? Очень просто, есть даже два способа.
Способ первый, простейший:
open /Applications/Safari.app
Программа будет запущена и консоль будет свободна для дальнейших действий.
Способ второй, интересный:
/Applications/Safari.app/Contents/MacOS/Safari
Программа будет запущена, но консоль не освобидится — она будет ждать завершения программы и выводить всё, что программа захочет вывести в неё. То есть, таким образом можно посмотреть рабочий лог некоторых программ.
Ещё одно очень важное различие между этими двумя методами: второй позволяет запустить два экземпляра программы, в то время как первый активирует уже запущенную, буде такая имеется. Так что через консоль можно решить и эту проблему (хотя, скорее фичу) макоси: через Finder, док и лаунчер запустить два экземпляра программы нельзя, а вот из консоли — пожалуйста, хоть двадцать два.
Скрипт?
Расскажу вкратце что из себя представляет shell-скрипт. По сути — это обычный текстовый файл, содержащий серию команд для выполнения. Самый простой скрипт просто запускает последовательно все команды. Скрипты посложнее могут иметь условия, циклы и функции, то есть, скрипт может быть весьма большой и сложной программой. Основной плюс таких скриптов — на их службе вся мощь консольных утилит из мира unix, что с лихвой компенсирует бедность языковых конструкций. Приведу простой пример скрипта, который преобразует все файлы .png в текущей директории, уменьшив их размер до 200 пикселей в ширину или высоту.
#!/bin/bash for img in *.png; do fname=${img%.*} fext=${img##*.} sips -Z 200 ${img} —out ${fname}_200.${fext} done
Пример простейший, но он демонстрирует главное: в скриптах сокрыта великая сила.
Скрипты AppleScript
В Mac OS X имеется несколько встроенных механизмов по автоматизации действий. Один из очень распространённых — AppleScript, для которого есть и графический редактор-запускатор. Но использовать такие скрипты можно и из консоли, для этого есть особая утилита — osascript. Использовать её можно так:
osascript myscript
либо
osascript -e «команда скрипта»
Не буду углубляться в AppleScript, он заслуживает отдельной статьи, и даже не одной. Так что рекомендую почитать справку или гугл по нему.
Главное: Вы можете комбинировать shell-скрипты со скриптами AppleScript, чтобы добиться максимальной гибкости в работе! К примеру, я использую такие вот смешанные скрипты для автоматической стилизации образа диска: сам диск создаётся с помощью shell (см. ниже), а фон и расположение элементов в образе задаётся с помощью AppleScript.
Есть ещё Automator, но он совсем уж GUI-шный, так что в данной статье его рассматривать бессмысленно. Он, конечно, полезный, но до мощи консоли не дотягивает.
Кратко о других полезных командах Mac OS X
Полный (ну, почти) список уникальных для макоси команд можно найти в одной хорошей статье (хотя сведения там немного устарели), я же вкратце расскажу о наиболее интересных.
Для работы с образами дисков имеется консольная утилита hdiutil. Пара примеров работы с ней:
# создание образа диска из содержимого папки mydata (для чтения и записи) hdiutil create -ov -srcfolder mydata -format UDRW -volname «My Data Image» myimage.dmg # конвертирование образа в сжатый ридонли hdiutil convert myimage.dmg -format UDZO -imagekey zlib-level=9 -o myimage_ro.dmg
Более подробно про возможности можно узнать из man hdiutil.
Если Вы — разработчик программ для макоси, то наверняка знаете о такой замечательной вещи, как Info.plist, да и вообще о plist’ах. Так вот, есть очень удобная утилита, позволяющая конвертировать .plist в .bplist, то есть, в более быстрый и лёгкий бинарный формат плиста.
# в бинарный plutil -convert -format bin1 -o Info.bplist Info.plist # в XML plutil -convert -format xml1 -o Info.plist Info.bplist
Если хотите позаниматься ерундой, то можно из консоли проговорить любой текст. Для этого есть утилита say.
# произнести фразу say Hello Habr! # прочитать вслух книгу на ночь say -f coolstory.txt
Так же можно задавать голос, которым мак будет с нами говорить:
say -v Bad habr habr habr habr habrahabr habr habrahabr
Одна беда — по-умолчанию говорит эта штука только по-английски.
Теперь снимем скриншот командой из консоли.
# скриншот окна без тени, результат — в буфер обмена screencapture -Wco # автоматический скриншот всего экрана — в файл с текущим временем screencapture shot_`date «+%Y-%m-%d_%H:%M:%S»`.png
Так же из консоли можно конвертировать текст между различными форматами. Например, можно переконвертировать .doc файл в HTML:
# конвертировать в html и открыть результат в дефолтном браузере textutil -convert html myfile.doc && open myfile.html
Так же textutil умеет преобразовывать кодировки.
Для изменения системных (и не только) настроек, можно использовать команду defaults. Используем её во благо! Включим наконец отображение скрытых файлов и папок в Finder!
defaults write com.apple.Finder AppleShowAllFiles 1 && killall Finder
Файндер автоматически перезапустится и теперь будет отображать скрытые файлы и папки! Но опять таки, это не всем нравится, так давайте это выключим, пока родителикто-нибудь не испугался или не удалил нужных файликов. Для сокрытия в уже указанной команде поставьте 0 вместо 1. Ну и для примера, , где описано много твиков с помощью этой команды.
Что-то типа заключения
Ну что ж, мы разобрали некоторые интересные возможности консоли в Mac OS X. Статья, разумеется, не претендует на полноту и является, скорее, «заманухой» для вовлечения маководов в shell-скриптинг да и вообще в консоль.
И да пребудет с Вами сила Unix!