Внутренние и внешние команды оболочки Linux
Введение
Мы твердо убеждены, что Linux, несмотря на его достижения в области настольных компьютеров и планшетов, следует обучать, начиная с командной строки. Это потому, что это операционная система, которая в значительной степени заимствует у Unix (TM), и в самом ее начале не было ничего, кроме текстового интерфейса. Исследования показали, что, если это применимо, один из них более эффективен в командной строке, чем при использовании графического интерфейса пользователя (GUI). «Если применимо» означает, что мы не имеем в виду редактирование фото / видео или какую-либо другую задачу, требующую графического окружения. Это означает, что когда есть задача, которую можно решить либо через интерфейс командной строки (CLI), либо через GUI, способ CLI более эффективен. Еще одна вещь, которую следует учитывать, это фрагментация мира Linux. Например, YasT от OpenSUSE выигралОн не будет доступен в любом другом дистрибутиве, так что это определенная часть программного обеспечения. Эта фрагментация наблюдается и в мире CLI, особенно когда речь идет о расположении различных файлов, но мы сообщим вам об этом, если это так. Если вы еще не уверены, помните, что вы не знаете Linux или любую другую подобную операционную систему, пока не разберетесь в ее CLI. В этом сила Linux, и если вы хотите сделать из этого карьеру, продолжайте: это интересное и увлекательное путешествие.или любую другую подобную операционную систему, пока вы не разберетесь в ее CLI. В этом сила Linux, и если вы хотите сделать из этого карьеру, продолжайте: это интересное и увлекательное путешествие.или любую другую подобную операционную систему, пока вы не разберетесь в ее CLI. В этом сила Linux, и если вы хотите сделать из этого карьеру, продолжайте: это интересное и увлекательное путешествие.
Внутренние и внешние команды оболочки Linux
Вы можете быть озадачены этим выбором слов, и на то есть веская причина. Но это терминология, с которой вы часто будете встречаться, наряду с термином «(оболочка) встроенный» при обращении к внутренним командам и, возможно, «остальными» для внешних команд. Но прежде чем мы зайдем так далеко, давайте убедимся, что мы на одной странице. Оболочка, с которой мы будем работать, это bash, так как он наиболее часто используется в дистрибутивах Linux. Это не значит, что это лучше, но в любом случае это субъективный термин. Я не знаю ни одного популярного и все еще поддерживаемого дистрибутива Linux, в котором бы использовалась любая версия bash до 4.xx, так что это то, что мы тоже будем использовать. Что касается постоянно спорной поддержки распределения, LPI, кажется, сосредоточен главным образом на Red Hat и Debian или производные дистрибутивов (например, Fedora или Ubuntu), так это то, что мы будем поддерживать, а также. Однако, по крайней мере, на этом уровне распределение менее актуально: важна современная оболочка и распределение.
Пожалуйста, убедитесь, что у вас есть готовая оболочка, либо в чистой консольной среде, либо в графическом интерфейсе, так как наши веб-страницы написаны с учетом только текстового удобства. Убедитесь, что ваша оболочка bash, и начнем! Вы можете проверить оболочку, набрав
$ echo $SHELL
Если ваш дистрибутив не скрывает свою оболочку в определенных местах, приведенная выше команда должна вернуться /bin/bash
. Что касается версии, вот как вы можете проверить производные Red Hat или Debian plus:
$ rpm -q bash #on RH $ dpkg -l bash #on Debian
Теперь, когда мы уверены, что используем правильную версию, давайте посмотрим, что такое внутренние и внешние команды. Внутренние элементы (небольшое количество, особенно по сравнению с остальными) - это команды, встроенные в вашу оболочку. Вот почему мы посчитали важным проверить оболочку и ее версию, потому что другие оболочки могут иметь разные встроенные модули или вообще не иметь их. Команды, которые вы будете использовать очень часто, например, cd - change directory - встроенные оболочки. По иронии судьбы, есть встроенная оболочка, которая сообщает нам, является ли команда встроенной или нет. Да, я знаю, это звучит немного безумно, но это правда. Команда является типовой и обычно используется без опций, а только с именем, которое вы хотите знать. Заметим:
$ type cd cd is a shell builtin $ type bash bash is /usr/bin/bash $ type type type is a shell builtin
Теперь, если вы хотите увидеть все встроенные предложения bash, вы можете либо проверить в документации вашей оболочки подробные объяснения, которые немного выходят за рамки этого документа, либо вы можете прочитать и получить краткое описание некоторые из них, а именно:
alias | Эта команда позволяет вам определять команды свой или заменить существующие. Например, 'alias rm = rm -i' сделает rm интерактивным, поэтому вы не удалите файлы по ошибке. |
break | Используется в основном в сценариях оболочки, чтобы сломать выполнение цикла |
cd | Сменить каталог. Например, «cd / usr» будет сделать текущий каталог / usr. Смотрите также pwd. |
continue | Используется в основном в сценариях оболочки для продолжения выполнения цикла |
echo | Перечислите значения переменных, либо специфичные для среды или объявленные пользователем, но также могут отображать простую строку. |
export | Позволяет пользователю экспортировать определенную среду переменные, так что их значения используются для всех последующих команд |
fg | Возобновить выполнение приостановленной работы в на переднем плане. Смотрите также BG. |
history | Без аргументов, дает нумерованный список ранее выпущенные команды. С аргументами, переходит на определенное число в указанном списке. |
kill | Отправить сигнал завершения по умолчанию, или какой бы сигнал ни был указан в качестве опции, для идентификатора процесса. |
pwd | Распечатать рабочий каталог |
read | Используется в основном в скриптах, он используется для получения ввод от пользователя или другой программы |
test | Используется с выражением в качестве аргумента, это возвращает 0 или 1, в зависимости от оценки указанного выражения |
times | Распечатать накопленное время пользователя и системы для оболочки и для процессов, запускаемых из оболочки. Статус возврата 0. |
type | Указывает, какая команда аргумент принят. |
unalias | Смотрите псевдоним |
wait | Обычно дается идентификатор процесса, он ждет до указанный процесс завершается и возвращает свой статус. |
Если вы думаете, что не сможете выучить все внутренние команды, не беспокойтесь. Дальнейшие статьи будут касаться bash, и неизбежно нам придется иметь дело с более встроенными командами. В любом случае, настоятельно рекомендуется прочитать страницу руководства по bash и попробовать как можно больше практиковаться, тем более что некоторые из упражнений в конце этого раздела будут касаться некоторых простых внутренних команд, которые были намеренно исключены.
Давайте посмотрим, что внешние команды. Это команды, которые предлагает ваша система, те, которые полностью независимы от оболочки и обычно могут быть найдены в любом дистрибутиве Linux. В основном они находятся в / bin и / usr / bin, и эти места должны быть частью вашей переменной $ PATH, чтобы их можно было использовать. Команды, используемые главным образом суперпользователями / sysadmins, находятся в / sbin и / usr / sbin и обычно для запуска требуются привилегии root. Таким образом, / sbin и / usr / sbin находятся в корневом каталоге $ PATH, но не у "обычного" пользователя. Короче говоря, это переменная окружения, которая по порядку хранит расположение внешних команд, доступных пользователю. Это означает, что если в моем $ PATH есть / bin, я могу набрать ls, и это работает, вместо того, чтобы вводить полный адрес внешней команды, а именно / bin / ls.
упражнения
1. Узнайте, каков ваш $ PATH, и сравните его с $ PATH корневого пользователя. Почему ты так думаешь? Объясните.
2. Узнайте, что . (да, это точка) внутренняя команда делает и почему это полезно.
3. Есть несколько встроенных модулей, которые имеют то же имя, что и внешние команды. Как бы вы их нашли?
4. Какой статус возврата может иметь эхо? Объясните.