Основы работы в командной строке Mac OS X в Terminal

Mac OS X, Tips & Tricks

Иконка приложения Terminal для работы в командной строкеКогда при работе с Mac OS X надо сделать что-либо недоступное через графический интерфейс, бывает нужна старая добрая командная строка. Например, чтобы вставить разделительные пробелы в панель Dock или запустить системную утилиту, не имеющую графического интерфейса. Для работы с командной строкой в Mac OS X существует приложение Terminal.

Если вы работали в Unix-подобных системах, то у вас не будет проблем с командной строкой в Mac’е, если же вы никогда не работали с командной строкой, то эта статья поможет вам получить базовые знания, необходимые для начала работы.

Запускаем Terminal

Чтобы открыть Терминал, его, как и любое приложение, надо найти в Finder в папке Applications, он там располжен в подпапке Utilities (Программы → Служебные программы). Это можно сделать быстро, нажав сочетание клавиш Shift+Command+U, также его можно закрепить в Dock, если вы планируете часто с ним работать. Я предпочитаю запускать его при помощи Spotlight.

При помощи горячих клавиш надо открыть строку поиска Spotlight и начать набирать слово terminal (обычно достаточно набрать только ter) и, когда Spotlight найдёт Terminal, нажать ввод (return, он же enter). Таким образом для запуска программы используется только клавиатура и получается быстрее, чем мышкой или трэкпадом.

Скриншот строки поиска Spotlight - Поиск приложения Теримнал
Запуск Terminal из строки поиска Spotlight

Для того чтобы открыть Spotlight у меня назначена комбинация клавиш Option+Пробел, узнать какая комбинация назначена у вас или поменять комбинацию можно в System Preferences → Spotlight (Системные настройки → Spotlight).

Скриншот системных настроек Mac OS X для изменения клавиш вызова строки поиска Spotlight
Настройка клавиш вызова поисковой строки Spotlight

Но вернёмся к Терминалу и командной строке.

Строка приглашения ввода

После запуска вы увидите такое окно. Точнее оно будет белым с чёрными буквами, но вы можете легко изменить оформление Terminal.

Скриншот окна приложения Terminal сразу после запуска

В первой строке отображается время последнего логина, имеется в виду время последнего запуска (открытия сессии) Терминала. Эта строка выводится один раз после открытия сессии командной строки.

Следующая строка называется строкой приглашения ввода от (англ. command prompt или просто prompt). Она говорит о том, что командная строка готова к вводу команд. В ней содержится следующая информация:

  • Имя компьютера. В моём случае это ixrevos‑macbook.
  • После двоеточия указана текущая директория. В данном случае это домашняя директория текущего пользователя /Users/ixrevo — в Unix-подобных системах домашняя директория отображается как символ тильда: ~.
  • Потом отображается имя текущего пользователя, в моём случае это ixrevo.
  • И в конце строки — знак доллара $.

Остановлюсь чуть подробнее на последнем символе строки ожидания ввода пользователя — он бывает трёх видов:

  • Первичный ввод текущего пользователя, обозначается знаком доллара $. Означает, что командная строка запущена от имени текущего пользователя и ожидает ввод команды.
  • Первичный ввод суперпользователя, обозначается знаком решётки #. Означает, что командная строка запущена от имени суперпользователя (пользователь root с правами администратора) и ожидает ввод команды.
  • Вторичный ввод, обозначается знаком угловой скобки «больше чем» >. Означает, что была введена команда, для выполнения которой необходимо указать какие-либо параметры, и сейчас ожидается ввод этих параметров.

Скриншот программы Терминал с демонстрацией различных состояний ожидания ввода пользователя

Ваша первая команда — листинг файлов — ls

Наберите в командной строке ls, что является сокращением от list, и нажмите ввод. Вы увидите список, в котором представлено содержимое текущей директории.

Скриншот программы Терминал с демонстрацией работы команды ls

Не так и сложно, не правда ли? И по своей сути такой вывод не сильно отличается, если открыть содержимое этой же директории в Finder, используя привычный графический интерфейс.

Скриншот окна Finder с содержимым директории

Параметры и аргументы команды

Некоторым командам можно передать какие-либо данные в виде аргумента, например, можно передать команде ls название директории в качестве аргумента. Тогда команда ls выведет содержимое директории, которую вы передали ей как аргумент.

Чтобы указать относительный путь, то есть путь, начинающийся от текущей директории, его надо начинать без слеша. Чтобы указать абсолютный путь, то есть путь, начинающийся от корневой директории, его надо начинать со слеша и далее указать полный путь к файлу. Подробнее вы можете прочитать в статье как устроена структура файловой системы Mac OS X.

Если путь содержит пробелы, то их необходимо экранировать при помощи обратного слеша \ перед пробелом или заключать весь путь в кавычки, иначе командный интерпретатор не сможет понять, где кончается аргумент, и воспримет пробел как конец ввода.

Скриншот с демонстрацией выводы команды ls с аргументом

У многих команд есть возможность указать параметр (опцию) или параметры, которые меняют поведение команды. Например, для команды ls можно указать аргумент ‑l, что является сокращением от long и значит полный вывод информации, и аргумент ‑a, что является сокращением от all и значит вывести всё содержимое, в том числе и скрытое. В таком случае команда с двумя аргументами будет выглядеть следующим образом: ls ‑la и выведет содержимое директории вместе с дополнительной информацией о каждой директории и файле.

Как видно из скриншота, теперь отображаются скрытые системные файлы, которые начинаются с точки, а дополнительная информация выводится в виде таблицы, где каждый вид информации сгруппирован по столбцам, а каждая строка относится к конкретному файлу или директории.

Скриншот с демонстрацией выводы команды ls с параметром

Информацию в каждой колонке этой таблицы:

  1. Информация о правах доступа к файлу или директории.
  2. Цифра отображает количество жёстких ссылок на этот файл или директорию. Подробнее про ссылки можно прочитать в статье про файлы, директории, жёсткие и символьные ссылки в Mac OS X.
  3. Владелец текущего файла или директории.
  4. Имя группы пользователей, у которой назначены права доступа к этому файлу или директории.
  5. Размер файла в байтах. Если команде ls указать параметр -h, то размер будет отображаться в наиболее подходящих единицах (Byte, Kilobyte, Megabyte, Gigabyte, Terabyte и Petabyte) с целью уменьшить количество выводимых цифр и будет указана эта единица измерения.
  6. Дата последнего изменения или, если файл был только создан и не менялся после этого, дата создания файла.
  7. Имя файла или директории.

Подробнее о правах доступа, владельце файла и группе вы можете прочесть в статьях «Как изменить права доступа к файлу в Mac OS X» и «Управление правами доступа при помощи командной строки».

Также вы можете комбинировать аргумент и параметры при вызове команды, например, как на скриншоте ниже, где вызывается команда ls c аргументом /Users/ixrevo/.dropbox/ и параметрами ls ‑lah:

Скриншот с демонстрацией выводы команды ls с аргументом и параметром
Указана опция ‑h и размер файлов отображается в Байтах, Килобайтах и Мегабайтах

Шесть советов, чтобы упростить работу в командной строке

  1. Используйте автодополнение ввода. Например, можно набрать только первые буквы команды и нажать клавишу Tab — и недостающие буквы команды будут автоматически добавлены. Если же существует несколько команд, начинающихся с тех же символов, которые вы ввели, то двойное нажатие Tab выведет все эти команды в качестве подсказки.
  2. Также используйте автодополнение для имён и путей к файлам и директориям. Работает аналогично автодополнению команд.
  3. Если в командной строке нажать клавишу вверх , то будет выведена последняя введённая вами команда. Нажимая дальше клавишу вверх вы будете перебирать историю выполненных вами команд. Полная история хранится в файле ~/.bash_history.
  4. Если ввести два восклицательных знака !! и нажать ввод, то вы выполните последнюю введённую команду. Также есть шорткат и для использования аргумента от предыдущей команды, для этого надо ввести имя_команды !$ и нажать ввод — вместо !$ будет подставлен аргумент от предыдущей команды.
  5. Если вы что-то напутали при вводе команд, то попробуйте нажать Control+C, это сочетание прекращает выполнение текущей команды и закрывает её. Также можно попробовать нажать q и Esc.
  6. Можно прочитать руководство к любой команде и узнать что она делает, какие у неё есть параметры и аргументы. Для этого надо набрать man имя_команды.

Для начала, думаю, хватит. Как видите, ничего сложного в использовании командной строки нет, а если вы хотите продолжить знакомство с ней, то можете почитать о навигации по файловой системе в командной строке.

9 комментариев к записи “Основы работы в командной строке Mac OS X в Terminal”

  1. Честно — пролистал статью из-за нехватки времени. Но — подскажите! Я правильно думаю, что командная строка в Mac — на 100% идентична командной строке Linux? То есть — те же команды, те же ключи команд?

    1. Если одним словом, то да.

      Могут быть незначительные различия, примерно как между разными дистрибутивами никсов, но именно что незначительные.

  2. Здравствуйте, Александр
    Скажите пожалуйста, что значат слова для Терминала в следующей строке:

    sudo /Applications/Install\ OS\ X\ Mavericks.app/Contents/Resources/createinstallmedia —volume /Volumes/Mavericks —applicationpath /Applications/Install\ OS\ X\ Mavericks.app —nointeraction

    1. Понимаю, что, вероятно, Вам уже совсем не актуально, но мало ли кто-то зайдет и ему это будет полезно.
      Данная команда «создает загрузочную флешку» с системой OS X Mavericks из устройства примонтированного в /Volumes/Mavericks.
      Разумеется, если приложение «Install\ OS\ X\ Mavericks.app» находится в /Appications

  3. Спасибо Вам! Очень помогли новичку с терминалом (ну как,новичку… я знаю,что нельзя трогать, и этого мне хватает) XD

  4. здр
    Нужна команда, что бы все скрины сохранялись в папке Screenshots, а не на рабочем столе.
    Кто знает — подскажите по-шагово
    команда :
    defaults write com.apple.screencapture location ~/Desktop/Screenshots/
    после чего введите эту команду:
    killall SystemUIServer
    по-просту не работает
    По крайней мере у меня ,после ее ввода — никаких изменений на компютере не произошло.
    Все скрины, по-прежнему сохраняются на рабочем столе.

    1. А если попробовать ввести путь сохранения Ваших скринов не ~/Desktop/Screenshots/, а, допустим, ~/имя_пользователя/Images (или что-то такое Ваше)? Ну, а уж потом «убивающую» killall? Не пробовали?

Добавить комментарий