Учебник для начинающих командной строки

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

Как описано ранее в том, Перед началом большинство пользователей взаимодействует со средой командной строки с помощью Терминального приложения, хотя можно также использовать метод удаленного соединения, такой как безопасная оболочка (SSH). Каждое Окно терминала или соединение SSH обеспечивают доступ к вводу и выводу процесса оболочки. Оболочка является специальным инструментом командной строки, который специально разработан для обеспечения основанного на тексте интерактивного управления другими инструментами командной строки.

В дополнение к рабочим отдельным инструментам большинство оболочек обеспечивает некоторые средние значения объединения многократных инструментов в структурированные программы, названные сценариями оболочки (предмет этой книги).

Различная функция оболочек немного отличающиеся возможности и синтаксис сценариев. Несмотря на то, что можно использовать любую оболочку по Вашему выбору, примеры в этой книге предполагают использование стандартной оболочки OS X. Стандартная оболочка bash если Вы выполняете OS X v10.3 или позже и tcsh если Вы выполняете более раннюю версию операционной системы.

Следующие разделы предоставляют некоторую основную информацию и подсказки об использовании интерфейса командной строки эффективнее; они не предназначаются как исчерпывающая ссылка для использования сред оболочки.

Основные понятия Shell

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

Выполнение первого инструмента командной строки

В целом Вы выполняете инструменты командной строки, которые OS X обеспечивает путем введения имени инструмента. (Синтаксис для рабочих инструментов, которые Вы добавили, описан позже в этом приложении.)

Например, если Вы работаете ls команда, по умолчанию, это перечисляет файлы в Вашем корневом каталоге. Для выполнения этой команды ввести ls и нажмите Return.

Большинство инструментов также может взять много флагов (иногда называемый переключателями). Например, можно получить «долгое» перечисление файла (с дополнительной информацией о каждом файле) путем ввода ls -l и нажатие Return. -l флаг говорит ls команда для изменения ее поведения по умолчанию.

Точно так же большинство инструментов берет параметры. Например, для показа долгого перечисления файлов на рабочем столе OS X ввести ls -l Desktop и нажмите Return. В той команде, слове Desktop параметр, который является именем папки, содержащей содержание Вашего рабочего стола OS X.

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

Указание файлов и каталогов

Большинство команд в оболочке воздействует на файлы и каталоги, расположения которых идентифицируются путями. Имена каталогов, составляющие путь, разделяются символами наклонной черты вправо. Например, Терминальная программа находится в Utilities папка в Applications папка на верхнем уровне Вашего жесткого диска. Его путь /Applications/Utilities/Terminal.app.

Оболочка (вместе с, в этом отношении, все другие приложения UNIX и инструменты) также имеет понятие текущего рабочего каталога. Когда Вы указываете имя файла или путь, не запускающийся с наклонной черты, тот путь, как предполагается, относительно этого каталога. Например, если Вы вводите cat foo, cat команда распечатывает содержание файла foo в текущем каталоге. Можно изменить текущий каталог с помощью cd команда.

Наконец, оболочка поддерживает много имен каталогов, имеющих особое значение.

Таблица a-1 перечисляет некоторые стандартные ярлыки, используемые для представления определенных каталогов в системе. Поскольку они основываются на контексте, эти ярлыки избавляют от необходимости вводить полные пути во многих ситуациях.

Таблица a-1  Специальные символы пути и их значение

Строка пути

Описание

.

. каталог (единственный период) является специальным каталогом, когда получено доступ, указывающим на текущий рабочий каталог. Это значение часто используется в качестве ярлыка, чтобы избавить от необходимости вводить в полном пути при выполнении команды.

Например, если Вы вводите ./mytool и нажмите возврат, Вы работаете mytool команда в текущем каталоге (если такой инструмент существует).

..

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

Например, путь ../Test файл или каталог (названный Test) это - одноуровневый элемент текущего каталога.

Примечание: В зависимости от оболочки, если Вы идете по символьной ссылке в подкаталог, вводя cd .. каталог или возвратит Вас к каталогу, из которого Вы произошли или возьмете Вас к родителю текущего каталога.

~ или $HOME

В начале пути символ тильды представляет корневой каталог указанного пользователя, или в настоящее время входил в систему пользователь, если не указан никакой пользователь. (В отличие от этого . и .., это не фактический каталог, а замена, выполняемая оболочкой.)

Например, можно обратиться к текущему пользователю Documents папка как ~/Documents. Точно так же, если у Вас есть другой пользователь, краткое название которого frankiej, Вы могли получить доступ к папке Documents того пользователя как ~frankiej/Documents (если тот пользователь установил полномочия на его или ее каталоге Documents, чтобы позволить Вам видеть его содержание).

$HOME переменная окружения может также использоваться для представления корневого каталога текущего пользователя.

В OS X корневой каталог пользователя обычно находится в /Users каталог или на сетевом сервере.

Имена файлов и имена каталогов традиционно включают только буквы, числа, дефисы, символ подчеркивания (_), и часто период (.) сопровождаемый расширением файла, указывающим тип файла (.txt, например). Большинства других символов, включая пробелы, нужно избежать, потому что у них есть особое значение к оболочке.

Несмотря на то, что некоторые файловые системы OS X разрешают использование этих других символов, включая пробелы, необходимо выполнить одно из следующих действий:

  • «Выйдите» из символа — помещает символ наклонной черты влево (\) сразу перед символом по пути.

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

Например, путь My Disk может быть записан как "My Disk", 'My Disk', или My\ Disk.

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

Для более подробной информации посмотрите Специальные символы Заключения в кавычки в Управлении потоком, Расширении и Парсинге.

Доступ к файлам на дополнительных объемах

В типичной системе UNIX хранение, предоставленное локальными дисками, представлено как единственное дерево файлов, убывающих от единственного корневого каталога. Это отличается от способа, которым Средство поиска представляет локальные диски, который является как один или несколько объемов с каждым объемом, действующим как корень его собственной иерархии каталогов. Для удовлетворения обоих миров OS X включает скрытый каталог, Volumes, в корне локальной файловой системы. Этот каталог содержит все объемы, присоединенные к локальному компьютеру.

Для доступа к содержанию другой локальной переменной (и многие объединяются в сеть) объемы Вы снабжаете префиксом относительный путь объема /Volumes/ сопровождаемый именем тома. Например, к доступу Applications каталог на объеме называют MacOSX, Вы использовали бы путь /Volumes/MacOSX/Applications.

Ввод и вывод

Большинство инструментов берет ввод текста от пользователя и распечатывает текст на экран пользователя. Они делают настолько использующие три стандартных дескрипторов файлов, создающиеся оболочкой и наследованные программой автоматически. Эти стандартные дескрипторы файлов перечислены в Таблице a-2.

Табличные a-2  источники Ввода и вывода для программ

Дескриптор файла

Описание

stdin

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

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

stdout

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

По умолчанию стандартный вывод передает данные обратно пользователю. Можно также перенаправить этот вывод к вводу других инструментов.

stderr

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

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

Для узнавания больше о работе с этими дескрипторами, включая перенаправление вывода одного инструмента к вводу другого, читают Ввод и вывод Shell.

Завершение программ

Для завершения в настоящее время рабочей программы из командной строки нажмите Control-C. Это сочетание клавиш отправляет аварийное прекращение работы (ABRT) сигнализируйте к в настоящее время рабочему процессу. В большинстве случаев это заставляет процесс завершаться, несмотря на то, что некоторые инструменты могут установить сигнальные обработчики, чтобы захватить этот сигнал и ответить по-другому. (См. Сигналы Захвата в Усовершенствованных Методах для подробных данных.)

Кроме того, можно завершить большинство сценариев и инструментов командной строки путем закрытия Окна терминала или соединения SSH. Это отправляет зависание (HUP) сигнализируйте к оболочке, которую это тогда передает в настоящее время рабочей программе. Если Вы хотите, чтобы программа продолжала бежать за Вами, выходят из системы, необходимо выполнить ее с помощью nohup команда, ловящая тот сигнал и не передающая его на любую команду, которую он вызывает.

Часто используемые команды

Сценарии Shell включают смесь встроенных команд оболочки и стандартных программ, работающих во всех оболочках. Несмотря на то, что большинство оболочек предлагает тот же основной набор команд, часто существуют изменения в синтаксисе и поведении тех команд. В дополнение к командам оболочки OS X также обеспечивает ряд стандартных программ, работающих во всех оболочках.

Таблица a-3 перечисляет некоторые команды, обычно использующиеся в интерактивном режиме в оболочке. Большинство элементов в этой таблице не является определенным ни для какой данной оболочки. Для синтаксиса и информации об использовании для каждой команды, см. соответствующую страницу справочника. Для более всестороннего списка команд и их сопроводительной документации, см. Страницы справочника OS X.

Таблица a-3  Часто использовала команды и программы

Команда

Значение

Описание

cat

(довод «против») соединяется

Распечатывает содержание указанных файлов к stdout.

cd

каталог изменения

Изменяет текущий рабочий каталог на указанный путь.

cp

копия

Файлы копий (и каталоги, при использовании-r опции) от одного расположения до другого.

date

дата

Выводит на экран текущую дату и время с помощью стандартного формата. Можно вывести на экран эту информацию в других форматах путем вызова команды с определенными флагами.

echo

отзовитесь эхом для вывода

Пишут его параметры stdout. Эта команда чаще всего используется в сценариях оболочки для печати информации о статусе пользователю.

less и more

команды пейджера

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

more команда добралась, ее имя от подсказки “Нажимают клавишу для показа более....” обычно используемый в конце экранной из информации. less команда получает свое имя от идиомы, “меньше больше”.

ls

Список

Выводит на экран содержание указанного каталога (или текущий каталог, если никакой путь не указан).

Передайте -a отметьте для перечисления всего содержания каталога (включая скрытые файлы и каталоги).

Передайте -l отметьте для отображения подробной информации для каждой записи. Передача -@ с -l показать расширенные атрибуты.

mkdir

Сделайте каталог

Создает новый каталог.

mv

Переместиться

Файлы перемещений и каталоги от одного места до другого. Вы также используете эту команду для переименования файлов и каталогов.

open

Откройте приложение или файл.

Можно использовать эту команду для запуска приложений от Терминала и дополнительно открытых файлов в том приложении.

pwd

Каталог работы печати

Выводит на экран полный путь текущего каталога.

rm

Удалить

Удаляет указанный файл или файлы. Можно использовать символы сопоставления с образцом (такие как звездочка) для соответствия больше чем одного файла. Можно также удалить каталоги с этой командой, несмотря на то, что использование rmdir предпочтен.

rmdir

Удалите каталог

Удаляет каталог. Каталог должен быть пустым перед удалением его.

Ctrl-C

Аварийное прекращение работы

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

Ctrl-Z

Приостановить

Отправляет сигнал SIGTSTP в текущую команду. В большинстве случаев это заставляет команду быть приостановленной, несмотря на то, что команды могут установить сигнальные обработчики, чтобы захватить эту команду и ответить по-другому.

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

Ctrl-\

Выход

Отправляет сигнал SIGQUIT в текущую команду. В большинстве случаев это заставляет команду завершаться, несмотря на то, что команды могут установить сигнальные обработчики, чтобы захватить эту команду и ответить по-другому.

Переменные окружения

Некоторые программы требуют использования переменных окружения для их выполнения. Переменные окружения являются переменными, наследованными всеми программами, выполняемыми в контексте оболочки. Сама оболочка использует переменные окружения, чтобы хранить информацию, такую как имя текущего пользователя, имя главного компьютера и пути к любым исполняемым программам. Можно также создать переменные окружения и использовать их для управления поведением программы, не изменяя саму программу. Например, Вы могли бы использовать переменную окружения, чтобы сказать Вашей программе распечатывать отладочную информацию к консоли.

Для установки значения переменной окружения Вы используете надлежащую команду оболочки для соединения имени переменной со значением. Например, для установки переменной окружения MYFUNCTION к значению MyGetData в глобальной среде оболочки Вы ввели бы следующую команду в Окне терминала:

# In Bourne shell variants
export MYFUNCTION="MyGetData"
 
# In C shell variants
setenv MYFUNCTION "MyGetData"

При запуске приложения от оболочки приложение наследовало большую часть среды своей родительской оболочки, включая любые экспортируемые переменные окружения. Эта форма наследования может быть полезным способом сконфигурировать приложение динамично. Например, Ваше приложение может проверить на присутствие (или значение) переменной окружения и изменить свое поведение соответственно. Различные оболочки поддерживают различную семантику для экспорта переменных окружения, поэтому см. страницу справочника для своей предпочтительной оболочки для получения дополнительной информации.

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

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

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

Выполнение добавленных пользователями команд

Как упомянуто ранее, можно выполнить большинство инструментов путем введения их имени. Это вызвано тем, что те инструменты расположены в определенных каталогах, которые ищет оболочка, когда Вы вводите имя команды. Оболочка использует PATH переменная окружения для управления, где это ищет эти инструменты. Это содержит разграниченный двоеточием список путей к поиску —/usr/bin:/bin:/usr/sbin:/sbin, например.

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

Для соображений безопасности текущий рабочий каталог не является частью пути поиска по умолчанию (PATH), и не должен быть добавлен к нему. Если бы это было, то другой пользователь в многопользовательской системе мог обмануть Вас в выполнение команды путем добавления злонамеренного инструмента с тем же именем как один, Вы будете обычно работать (такой как ls команда) или общая орфографическая ошибка этого.

Поэтому, если необходимо выполнить инструмент в текущем рабочем каталоге, необходимо явно указать его путь, любой как абсолютный путь (запускающийся с /) или как относительный путь начиная с имени каталога (который может быть . каталог). Например, для выполнения MyCommandLineProgram инструмент в текущем каталоге, Вы могли ввести ./MyCommandLineProgram и нажмите Return.

С вышеупомянутыми протестами безопасности в памяти, можно добавить новые части (временно) к значению PATH переменная окружения путем выполнения следующего:

echo "$PATH"
 
# In Bourne shell variants
export PATH="$PATH:/my/new/path/part"
 
# In C shell variants
setenv PATH "$PATH:/my/new/path/part"

Если Вы хотите, чтобы дополнительные компоненты контура сохранились между сеансами и во всех Окнах терминала, необходимо или добавить его к сценарию входа в систему или добавить его к списку свойств среды. Посмотрите Перед началом для подробных данных.

Запущенные приложения

Для запуска приложения Вы можете обычно также:

Приобретение знаний о других командах

На уровне командной строки большая часть документации прибывает в форму страниц справочника (короткий для руководства). Страницы справочника предоставляют справочную информацию для многих команд оболочки, программ и понятий уровня POSIX. Страница руководства manpages описывает организацию руководства, и формат и синтаксис отдельных страниц справочника.

Для доступа к странице справочника введите man команда, сопровождаемая именем вещи, Вы хотите искать. Например, для поиска информации о bash оболочка, Вы ввели бы man bash. Страницы справочника также включены в Библиотеку Разработчика OS X (Страницы справочника OS X).

Можно также искать страницы руководства ключевым словом с помощью apropos команда.

Большинство оболочек имеет команду или страницу справочника, выводящую на экран список команд, встроенных в оболочку (builtins). Таблица a-4 перечисляет доступные оболочки в OS X вместе со способами, которыми можно получить доступ к списку builtins для оболочки.

Таблица a-4  , Получающая список оболочки builtins

Shell

Команда

bash

help или bash - c справка

sh

man sh

csh

builtins

tcsh

builtins

zsh

man zshbuiltins