- Linux Команды и аргументы
- Вступление
- Фундаментальные основы Linux. Часть III. Раскрытие команд командной оболочкой
- Глава 10. Команды и аргументы
- Аргументы
- Удаление пробелов
- Одинарные кавычки
- Двойные кавычки
- Команда echo и кавычки
- Команды
- Псевдонимы команд
- Вывод информации о раскрытии команд командной оболочкой
- Практическое задание: команды и аргументы
- Корректная процедура выполнения практического задания: команды и аргументы
Linux Команды и аргументы
Вступление
На этом занятии мы рассмотрели расширение оболочки, внимательно изучив команды и аргументы. Знание расширения оболочки важно, потому что многие команды в вашей системе Linux обрабатываются и, скорее всего, изменяются оболочкой до их выполнения.
Интерфейс командной строки или оболочка, используемая в большинстве систем Linux, называется bash, что означает Bourne снова shell. Оболочка bash включает в себя элементы sh (исходная оболочка Bourne), csh (оболочка C) и ksh (оболочка Korn).
В этой главе часто используется команда echo для демонстрации функций оболочки. Команда echo очень проста: она повторяет ввод, который она получает.
аргументы
Одной из основных функций оболочки является выполнение сканирования командной строки. Когда вы вводите команду в командной строке оболочки и нажимаете клавишу ввода, оболочка начинает сканирование этой строки, разбивая ее на аргументы. При сканировании строки оболочка может вносить множество изменений в введенные вами аргументы.
Этот процесс называется расширением оболочки. Когда оболочка закончит сканирование и изменение этой строки, она будет выполнена.
удаление пробелов
Части, разделенные одним или несколькими последовательными пробелами (или табуляциями), рассматриваются как отдельные аргументы, любые пробелы удаляются. Первый аргумент — это команда, которую нужно выполнить, остальные аргументы передаются команде. Оболочка эффективно разделяет вашу команду на один или несколько аргументов.
Это объясняет, почему следующие четыре разные командные строки одинаковы после расширения оболочки.
Команда echo отобразит каждый аргумент, полученный от оболочки. Команда echo также добавит новый пробел между полученными аргументами.
одинарные кавычки
Вы можете предотвратить удаление пробелов, заключив их в кавычки. Содержимое строки в кавычках рассматривается как один аргумент. На скриншоте ниже эхо получает только один аргумент.
двойные кавычки
Вы также можете предотвратить удаление пробелов, заключив их в двойные кавычки. То же, что и выше, echo получает только один аргумент.
Позже в этом уроке при обсуждении переменных мы увидим важные различия между одинарными и двойными кавычками.
эхо и цитаты
Строки в кавычках могут содержать специальные экранированные символы, распознаваемые командой echo (при использовании echo -e). На приведенном ниже снимке экрана показано, как использовать новую строку и вкладку (обычно восемь пробелов).
Команда echo может генерировать больше, чем пробелы, табуляции и переводы строк. Посмотрите на странице справочника список вариантов.
команды
внешние или встроенные команды?
Не все команды являются внешними по отношению к оболочке, некоторые встроены. Внешние команды — это программы, которые имеют свой собственный двоичный файл и находятся где-то в файловой системе. Многие внешние команды находятся в / bin или / sbin. Встроенные команды являются неотъемлемой частью самой программы оболочки.
тип
Чтобы узнать, будет ли команда, переданная оболочке, выполняться как внешняя команда или как встроенная команда, используйте команду type.
Как видите, команда cd встроена, а команда cat — внешняя.
Вы также можете использовать эту команду, чтобы показать вам, является ли команда псевдонимом или нет.
запуск внешних команд
Некоторые команды имеют как встроенную, так и внешнюю версии. Когда одна из этих команд выполняется, встроенная версия имеет приоритет. Для запуска внешней версии необходимо ввести полный путь к команде.
который
Команда which будет искать двоичные файлы в переменной окружения $ PATH (переменные будут объяснены позже). На приведенном ниже снимке экрана показано, что cd встроен, а ls, cp, rm, mv, mkdir, pwd и являются внешними командами.
псевдонимы
создать псевдоним
Оболочка позволяет создавать псевдонимы. Псевдонимы часто используются для облегчения запоминания имени существующей команды или для упрощения ввода параметров.
сокращать команды
Псевдоним также может быть полезен для сокращения существующей команды.
параметры по умолчанию
Псевдонимы могут использоваться для предоставления командам параметров по умолчанию. В приведенном ниже примере показано, как установить параметр -i по умолчанию при вводе команды rm.
В некоторых дистрибутивах псевдонимы по умолчанию используются для защиты пользователей от случайного удаления файлов (‘rm -i’, ‘mv -i’, ‘cp -i’)
просмотр псевдонимов
Вы можете предоставить один или несколько псевдонимов в качестве аргументов команды alias, чтобы получить их определения. Отсутствие аргументов дает полный список текущих псевдонимов.
unalias
Вы можете отменить псевдоним с помощью команды unalias.
отображение расширения оболочки
Вы можете отобразить расширение оболочки с помощью set -x и прекратить его отображение с помощью set + x. Возможно, вы захотите использовать это далее в этом руководстве, или если у вас есть сомнения относительно того, что именно оболочка делает с вашей командой.
Упражнение, практика и решение:
1. Сколько аргументов в этой строке (не считая самой команды).
коснитесь ‘/etc/cron/cron.allow’ ‘abc123.txt’ «abc456.txt»
Код:
2. Является ли tac встроенной командой оболочки?
Код:
3. Существует ли псевдоним для rm?
Код:
4. Прочтите man-страницу rm, убедитесь, что вы понимаете опцию -i rm. Создайте и удалите файл для проверки опции -i.
Код:
5. Выполните: псевдоним rm = ‘rm -i’. Проверьте свой псевдоним с помощью тестового файла. Это работает как ожидалось?
Код:
6. Перечислите все текущие псевдонимы.
Код:
7. Создайте псевдоним «город», который повторяет ваш родной город.
Код:
8. Используйте свой псевдоним, чтобы проверить, что он работает.
Код:
9. Выполните set -x, чтобы отобразить расширение оболочки для каждой команды.
Код:
10. Проверьте функциональность set + x, выполнив псевдонимы вашего города и rm.
Код:
11. Выполните set + x, чтобы остановить отображение расширения оболочки.
Код:
12. Удалите псевдоним вашего города.
Код:
13. Каково расположение команд cat и passwd?
14. Объясните разницу между следующими командами:
эхо
/ Бен / эхо
Код:
15. Объясните разницу между следующими командами:
эхо привет
эхо -n привет
Код:
16. Покажите ABC с двумя пробелами между B и C.
(необязательный)
Код:
17. Выполните следующую команду (не используйте пробелы), чтобы отобразить точно так же, как показано ниже
Решение заключается в использовании вкладок с.
18. Используйте echo для точного отображения следующего:
Код:
19. Используйте одну команду echo для отображения трех слов в трех строках.
Источник
Фундаментальные основы Linux. Часть III. Раскрытие команд командной оболочкой
Глава 10. Команды и аргументы
В данной главе вашему вниманию представляется обзор механизма раскрытия команд командной оболочки (shell expansion), созданный в ходе подробного рассмотрения методик обработки команд и аргументов . Понимание принципа работы механизма раскрытия команд командной оболочки является важным ввиду того, что многие команды в вашей системе Linux подвергаются обработке и с высокой вероятностью последующей модификации средствами командной оболочки перед исполнением.
Интерфейс командной строки системы или командная оболочка , используемая в большинстве систем Linux, носит имя bash , которое расшифровывается как Bourne again shell (название «Born again shell» — «возрожденная командная оболочка» было изменено с целью упоминания автора оригинальной командной оболочки sh Стивена Борна). Командная оболочка bash реализует возможности командных оболочек sh (оригинальная командная оболочка Стивена Борна), csh (командная оболочка Билла Джоя с поддержкой сценариев, синтаксис которых основан на синтаксисе языка программирования C), а также ksh (командная оболочка Дэвида Корна).
Аргументы
Одной из важнейших возможностей командной оболочки является возможность обработки строк команд . При вводе команды после приглашения командной оболочки и нажатии клавиши Enter командная оболочка приступает к обработке строки команды, разделяя ее на аргументы . При обработке строки команды командная оболочка может внести множество изменений в переданные вами аргументы .
Данный процесс называется раскрытием команд командной оболочки . После того, как командная оболочка заканчивает обработку и модификацию переданной строки команды, будет осуществляться непосредственное исполнение результирующей команды.
Удаление пробелов
Части строки команды, которые разделены с помощью одного или нескольких последовательно расположенных символов пробелов (или табуляции), рассматриваются как отдельные аргументы , причем все пробелы удаляются. Первым аргументом является сама команда, которая должна быть исполнена, остальные аргументы передаются этой команде. Фактически командная оболочка производит разделение вашей строки команды на один или несколько аргументов.
Команда echo будет выводить каждый из принятых от командной оболочки аргументов. Также команда echo осуществляет добавление пробелов между всеми принятыми аргументами.
Одинарные кавычки
Двойные кавычки
Позднее при обсуждении переменных в рамках данной книги мы разберемся с важными различиями между одинарными и двойными кавычками.
Команда echo и кавычки
Команда echo может генерировать и другие символы помимо символов пробелов, табуляции и переноса строки. Обратитесь к странице руководства для ознакомления со списком допустимых обозначений символов.
Команды
Внешние или встроенные команды?
Не все исполняемые командной оболочкой команды являются внешними ; некоторые из них являются встроенными . Внешние команды реализованы в форме программ, представленных отдельными бинарными файлами, которые размещены в какой-либо директории файловой системы. Многие бинарные фалы, реализующие функции внешних команд, размещаются в директории /bin или /sbin . Встроенные команды являются неотъемлемой частью самого приложения командной оболочки.
Как вы можете заметить, команда cd является встроенной , а команда cat — внешней .
Исполнение внешних команд
Псевдонимы команд
Создание псевдонима команды
Стандартные параметры команд
В некоторых дистрибутивах используются стандартные псевдонимы команд для защиты пользователей от случайного удаления файлов (‘rm -i’, ‘mv -i’, ‘cp -i’).
Просмотр объявлений псевдонимов команд
Вывод информации о раскрытии команд командной оболочкой
Практическое задание: команды и аргументы
2. Является ли команда tac встроенной?
3. Существует ли действующий псевдоним команды rm ?
4. Прочитайте страницу руководства для команды rm и убедитесь в том, что вы поняли предназначение параметра -i этой команды. Создайте и удалите файл для проверки работоспособности параметра -i .
5. Выполните команду: alias rm=’rm -i’ . Проверьте работоспособность вашего псевдонима команды на тестовом файле. Работает ли он так, как ожидается?
6. Выведите список используемых на данный момент псевдонимов команд.
7a. Создайте псевдоним команды ‘city’, позволяющий вывести название вашего города.
7b. Используйте ваш псевдоним команды для того, чтобы убедиться в его работоспособности.
8. Выполните команду set -x для активации режима вывода информации о раскрытии каждой из команд командной оболочкой.
9. Проверьте работоспособность команды set -x , воспользовавшись созданными ранее псевдонимами команд city и rm .
10. Выполните команду set +x для прекращения вывода информации о раскрытии команд командной оболочкой.
11. Удалите созданный ранее псевдоним команды city.
12. В каких директориях расположены бинарные файлы, являющиеся реализациями команд cat и passwd ?
15. Выведите строку «A B C» с двумя пробелами между буквами B и C.
Найдите два решения с использованием одинарных кавычек, два решения с использованием двойных кавычек и одно решение без использования кавычек (и поблагодарите Rene и Darioush из компании Google за это дополнение).
18. Используйте одну команду echo для вывода трех слов в трех строках.
Корректная процедура выполнения практического задания: команды и аргументы
Ответ: три аргумента
2. Является ли команда tac встроенной?
3. Существует ли действующий псевдоним команды rm ?
4. Прочитайте страницу руководства для команды rm и убедитесь в том, что вы поняли предназначение параметра -i этой команды. Создайте и удалите файл для проверки работоспособности параметра -i .
5. Выполните команду: alias rm=’rm -i’ . Проверьте работоспособность вашего псевдонима команды на тестовом файле. Работает ли он так, как ожидается?
6. Выведите список используемых на данный момент псевдонимов команд.
7a. Создайте псевдоним команды ‘city’, позволяющий вывести название вашего города.
7b. Используйте ваш псевдоним команды для того, чтобы убедиться в его работоспособности.
8. Выполните команду set -x для активации режима вывода информации о раскрытии каждой из команд командной оболочкой.
9. Проверьте работоспособность команды set -x , воспользовавшись созданными ранее псевдонимами команд city и rm .
10. Выполните команду set +x для прекращения вывода информации о раскрытии команд командной оболочкой.
11. Удалите созданный ранее псевдоним команды city.
12. В каких директориях расположены бинарные файлы, являющиеся реализациями команд cat и passwd ?
После интерпретации команды echo командной оболочкой будет задействована встроенная реализация команды echo . Ввод команды /bin/echo приведет к исполнению бинарного файла echo , расположенного в директории /bin .
Параметр -n команды echo предназначен для предотвращения вывода символа перехода на новую строку в конце переданной строки. Команда echo Hello выведет в общей сложности шесть символов, а команда echo -n Hello — только пять символов.
(Параметр -n может не работать в командной оболочке Korn shell).
15. Выведите строку «A B C» с двумя пробелами между буквами B и C.
Найдите два решения с использованием одинарных кавычек, два решения с использованием двойных кавычек и одно решение без использования кавычек (и поблагодарите Rene и Darioush из компании Google за это дополнение).
18. Используйте одну команду echo для вывода трех слов в трех строках.
Источник