Учебник для начинающих командной строки
Исторически, интерфейс командной строки обеспечил способ управлять компьютером по простым, основанным на тексте соединениям. В современную эру, несмотря на возможность передать графические интерфейсы пользователя по Интернету, командная строка остается мощным инструментом для выполнения определенных типов задач.
Как описано ранее в том, Перед началом большинство пользователей взаимодействует со средой командной строки с помощью Терминального приложения, хотя можно также использовать метод удаленного соединения, такой как безопасная оболочка (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 перечисляет некоторые стандартные ярлыки, используемые для представления определенных каталогов в системе. Поскольку они основываются на контексте, эти ярлыки избавляют от необходимости вводить полные пути во многих ситуациях.
Имена файлов и имена каталогов традиционно включают только буквы, числа, дефисы, символ подчеркивания (_
), и часто период (.
) сопровождаемый расширением файла, указывающим тип файла (.txt
, например). Большинства других символов, включая пробелы, нужно избежать, потому что у них есть особое значение к оболочке.
Несмотря на то, что некоторые файловые системы OS X разрешают использование этих других символов, включая пробелы, необходимо выполнить одно из следующих действий:
«Выйдите» из символа — помещает символ наклонной черты влево (
\
) сразу перед символом по пути.Добавьте единственные или двойные кавычки вокруг пути или части, содержащей незаконные символы.
Например, путь My Disk
может быть записан как "My Disk"
, 'My Disk'
, или My\ Disk
.
Одинарные кавычки более безопасны, чем двойные кавычки, потому что оболочка не делает никакой интерпретации содержания единственно заключенной в кавычки строки. Однако двойные кавычки, менее вероятно, появятся в имени файла, делая их немного проще использовать. Когда в сомнении, используйте наклонную черту влево перед рассматриваемым символом, или две наклонных черты влево для представления литеральной наклонной черты влево.
Для более подробной информации посмотрите Специальные символы Заключения в кавычки в Управлении потоком, Расширении и Парсинге.
Доступ к файлам на дополнительных объемах
В типичной системе UNIX хранение, предоставленное локальными дисками, представлено как единственное дерево файлов, убывающих от единственного корневого каталога. Это отличается от способа, которым Средство поиска представляет локальные диски, который является как один или несколько объемов с каждым объемом, действующим как корень его собственной иерархии каталогов. Для удовлетворения обоих миров OS X включает скрытый каталог, Volumes
, в корне локальной файловой системы. Этот каталог содержит все объемы, присоединенные к локальному компьютеру.
Для доступа к содержанию другой локальной переменной (и многие объединяются в сеть) объемы Вы снабжаете префиксом относительный путь объема /Volumes/
сопровождаемый именем тома. Например, к доступу Applications
каталог на объеме называют MacOSX
, Вы использовали бы путь /Volumes/MacOSX/Applications
.
Ввод и вывод
Большинство инструментов берет ввод текста от пользователя и распечатывает текст на экран пользователя. Они делают настолько использующие три стандартных дескрипторов файлов, создающиеся оболочкой и наследованные программой автоматически. Эти стандартные дескрипторы файлов перечислены в Таблице a-2.
Дескриптор файла | Описание |
---|---|
Стандартный входной дескриптор файла является средними значениями, через которые программа получает ввод от пользователя или других инструментов. По умолчанию этот дескриптор обеспечивает нажатия клавиш пользователя. Можно также перенаправить вывод от файлов или другие команды к | |
Дескриптор файла стандартного вывода - то, куда большинство инструментов отправляет свои выходные данные. По умолчанию стандартный вывод передает данные обратно пользователю. Можно также перенаправить этот вывод к вводу других инструментов. | |
Дескриптор файла стандартной погрешности - то, куда программа отправляет сообщения об ошибках, сообщения отладки и любую другую информацию, которую нельзя считать частью данных эффективной выходной мощности программы. По умолчанию ошибки выведены на экран на командной строке как стандартный вывод. Цель для того, чтобы иметь отдельный ошибочный дескриптор состоит в том так, чтобы пользователь мог перенаправить данные эффективной выходной мощности с инструмента на другой инструмент без тех данных, повреждаемых нефатальными ошибками и предупреждениями. |
Для узнавания больше о работе с этими дескрипторами, включая перенаправление вывода одного инструмента к вводу другого, читают Ввод и вывод Shell.
Завершение программ
Для завершения в настоящее время рабочей программы из командной строки нажмите Control-C. Это сочетание клавиш отправляет аварийное прекращение работы (ABRT
) сигнализируйте к в настоящее время рабочему процессу. В большинстве случаев это заставляет процесс завершаться, несмотря на то, что некоторые инструменты могут установить сигнальные обработчики, чтобы захватить этот сигнал и ответить по-другому. (См. Сигналы Захвата в Усовершенствованных Методах для подробных данных.)
Кроме того, можно завершить большинство сценариев и инструментов командной строки путем закрытия Окна терминала или соединения SSH. Это отправляет зависание (HUP
) сигнализируйте к оболочке, которую это тогда передает в настоящее время рабочей программе. Если Вы хотите, чтобы программа продолжала бежать за Вами, выходят из системы, необходимо выполнить ее с помощью nohup
команда, ловящая тот сигнал и не передающая его на любую команду, которую он вызывает.
Часто используемые команды
Сценарии Shell включают смесь встроенных команд оболочки и стандартных программ, работающих во всех оболочках. Несмотря на то, что большинство оболочек предлагает тот же основной набор команд, часто существуют изменения в синтаксисе и поведении тех команд. В дополнение к командам оболочки OS X также обеспечивает ряд стандартных программ, работающих во всех оболочках.
Таблица a-3 перечисляет некоторые команды, обычно использующиеся в интерактивном режиме в оболочке. Большинство элементов в этой таблице не является определенным ни для какой данной оболочки. Для синтаксиса и информации об использовании для каждой команды, см. соответствующую страницу справочника. Для более всестороннего списка команд и их сопроводительной документации, см. Страницы справочника OS X.
Переменные окружения
Некоторые программы требуют использования переменных окружения для их выполнения. Переменные окружения являются переменными, наследованными всеми программами, выполняемыми в контексте оболочки. Сама оболочка использует переменные окружения, чтобы хранить информацию, такую как имя текущего пользователя, имя главного компьютера и пути к любым исполняемым программам. Можно также создать переменные окружения и использовать их для управления поведением программы, не изменяя саму программу. Например, Вы могли бы использовать переменную окружения, чтобы сказать Вашей программе распечатывать отладочную информацию к консоли.
Для установки значения переменной окружения Вы используете надлежащую команду оболочки для соединения имени переменной со значением. Например, для установки переменной окружения 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 для оболочки.
Shell | Команда |
---|---|
|
|
|
|
|
|
|
|
|
|