Команды и аргументы Linux

Введение

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

Интерфейс командной строки или оболочка, используемые в большинстве систем Linux, называются bash, что означает для Борна снова оболочка. Оболочка bash включает функции sh (исходная оболочка Bourne), csh (оболочка C) и ksh (оболочка Korn).

В этой главе для демонстрации функций оболочки часто используется команда echo. Эхо-команда очень проста: она повторяет полученный ввод.

  [email protected]: ~ $ echo BurtonvilleBurtonville [email protected]: ~ $ echo Смурфы синиеSmurfs синие  

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

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

удаление пробелов

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

  [email protected]: ~ $ echo Моя первая веб-страницаМоя первая веб-страница [защита электронной почты]: ~ $ echo Моя первая веб-страницаМоя первая  веб-страница [защищенная электронная почта]: ~ $ echo Моя первая веб-страницаМоя первая веб-страница [защищенная электронная почта]: ~ $ echo Моя первая веб-страницаМоя первая веб-страница  

Это объясняет, почему следующие четыре разные командные строки то же самое после shellexpansion.

Команда echo отобразит каждый аргумент, который она получает от оболочки. Эхо-команда также добавит новый пробел между полученными аргументами.

одинарные кавычки

Вы можете предотвратить удаление пробелы путем цитирования пробелов. Содержимое строки в кавычках рассматривается как один аргумент. На скриншоте ниже эхо получает только один аргумент.

  [email protected]: ~ $ echo 'Строка с одинарными кавычками' Строка с одинарными кавычками [email protected]: ~  $  

двойные кавычки

Вы также можете предотвратить удаление пробелов, заключив пробелы в двойные кавычки. То же, что и выше, echo принимает только один аргумент.

  [email protected]: ~ $ echo "Строка с двойными кавычками" Строка с двойными кавычками [email protected]: ~ $   

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

echo и кавычки

Строки в кавычках могут включать специальные экранированные символы, распознаваемые командой echo (при использовании echo -e). На снимке экрана ниже показано, как использовать n для новой строки и t для табуляции (обычно восемь пробелов).

  [email protected]: ~ $ echo -e "  Строка с  na новой строкой "Строка с новой строкой [защита электронной почты]: ~ $ echo -e 'Строка с  na новой строкой'A строка с новой строкой [защита электронной почты]: ~ $ echo -e" Строка с   ta tab "Строка с табуляцией [защищена по электронной почте]: ~ $ echo -e 'Строка с  ta tab'Строка с табуляцией [защищена по электронной почте]: ~ $  

Команда echo может генерировать не только пробелы, табуляции и новые строки. Посмотрите на странице список параметров.

команды

внешние или встроенные команды?

Не все команды являются внешними по отношению к оболочке, некоторые из них встроены. Внешние команды — это программы, которые имеют собственный двоичный файл и находятся где-то в файловой системе. Многие внешние команды расположены в/bin или/sbin. Встроенные команды являются неотъемлемой частью самой программы оболочки.

type

Чтобы узнать, будет ли команда, переданная оболочке, быть выполненным как внешний командир как встроенная команда, используйте команду type.

  [email protected]: ~ $ type cdcd - это встроенная оболочка [email protected]: ~ $  введите catcat is/bin/cat  

Как видите, команда cd является встроенной, а команда cat — внешней.

Вы также можете использовать эта команда, чтобы показать вам, имеет ли команда псевдоним или нет.

  [email protected]: ~ $ type lsls имеет псевдоним `ls --color = auto ' 

выполнение внешних команд

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

  [email protected]: ~ $ type -a echoecho - это встроенная оболочкаcho is/bin/echo [  email protected]: ~ $/bin/echo Запуск внешней команды echo ... Запуск внешней команды echo ...  

который

Команда which будет искать двоичные файлы в переменной среды $ PATH (переменные будут объяснены позже). На снимке экрана ниже определено, что cd является встроенным, а ls, cp, rm, mv, mkdir, pwd и являются внешними командами.

  [email protected]  :/$ which cp ls cd mkdir pwd/bin/cp/bin/ls/bin/mkdir/bin/pwd  

псевдонимы

создать псевдоним

Оболочка позволяет создавать псевдонимы. Псевдонимы часто используются для упрощения запоминания имени существующей команды или для упрощения ввода параметров..

  [защита электронной почты]: ~ $ cat text2applemangobanana [защита электронной почты]: ~ $ alias xyz = tac [защита электронной почты]: ~ $ xyz text2bananamangoapple  

сокращать команды

Псевдоним также может быть полезен для сокращения существующей команды.

  [защита электронной почты]: ~ $ alias ll = 'ls -lh --color = auto' [защита электронной почты]: ~ $ alias c = 'clear' [защита электронной почты]: ~ $  

параметры по умолчанию

Псевдонимы могут использоваться для предоставления команд с параметрами по умолчанию. В приведенном ниже примере показано, как установить параметр -i по умолчанию при вводе rm.

  [email protected]: ~ $ rm -i xyz.txtrm: удалить обычный файл? Xyz.txt  ??  нет [защита электронной почты]: ~ $ rm xyz.txt [защита электронной почты]: ~ $ ls xyz.txtls: нет доступа к xyz.txt: нет такого файла или каталога [защита электронной почты]: ~ $ touch xyz.txt [защита электронной почты]  : ~ $ alias rm = 'rm -i' [защита электронной почты]: ~ $ rm xyz.txtrm: удалить обычный пустой файл? xyz.txt ??  no [email protected]: ~ $  

Некоторые дистрибутивы включают псевдонимы по умолчанию для защиты пользователей от случайного стирания файлов (‘rm-i’, ‘mv -i’, ‘cp -i ‘)

просмотр псевдонимов

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

  [email protected]: ~ $ alias c llalias c = 'clear'alias ll =' ls -lh --color  = auto ' 

unalias

Вы можете отменить псевдоним с помощью команды unalias.

  [защита электронной почты]: ~ $ which rm/bin/rm [защита электронной почты]: ~ $ alias rm = 'rm -i' [защита электронной почты]: ~ $ which rm/bin/rm  [защита электронной почты]: ~ $ unalias rm [защита электронной почты]: ~ $ which rm/bin/rm [защита электронной почты]: ~ $  

отображение расширения оболочки

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

  [email protected]: ~ $ set -x pran  [защита электронной почты]: ~ $ echo $ user + echo [защита электронной почты]: ~ $ echo  $ user + echo '$ user' $ user [защита электронной почты]: ~ $ set -x  pran + set -x pran [защита электронной почты]:  ~ $ echo  $ user + echo '$ user' $ user [защита электронной почты]: ~ $ set + x + set + x [защита электронной почты]: ~ $ echo  $ user $ user [защита электронной почты]: ~ $   

Упражнение, практика и решение:

1. Сколько аргументов в этом строку (не считая самой команды).

touch ‘/etc/cron/cron.allow’ ‘abc123.txt’ «abc456.txt»

Код:

  touch '/etc/cron/cron.allow' 'abc123.txt' "abc456.txt" ответ: три  

2. Является ли tac встроенной командой оболочки?

Код:

  Да. введите tac  

3. Есть ли существующий псевдоним для rm?

Код:

  alias rm  

4. Прочтите страницу руководства rm, убедитесь, что вы понимаете параметр -i для rm. Создайте и удалите файл, чтобы проверить параметр -i.

Код:

  man rmtouch testfilerm -  i testfile  

5. Выполнить: alias rm = ‘rm -i’. Проверьте свой псевдоним с помощью тестового файла. Работает ли это должным образом?

Код:

  touch testfilerm testfile (должен запросить подтверждение)  

6. Список всех текущих псевдонимов.

Код:

  alias  

7. Создайте псевдоним под названием «city», который повторяет ваш родной город.

Код:

  alias city = 'echo Antwerp'  

8. Используйте свой псевдоним, чтобы проверить, что он работает.

Код:

  city (он должен отображать Антверпен  

9. Выполните set -x, чтобы отобразить расширение оболочки для каждой команды.

Код:

  set -x  

10. Протестируйте функциональность set + x, выполнив псевдонимы city и rm.

Код:

должна отобразить разрешенные псевдонимы, а затем выполнить команду: datasoft @ da tasoft-linux ~ $ set + xdatasoft @ datasoft-linux ~ $ city + echo antwerpantwerp

11. Выполните set + x, чтобы прекратить отображение расширения оболочки .

Код:

  set + x  

12. Удалите псевдоним города.

Код:

  unalias city  

13. Каково местоположение команды cat и passwd?

  какой кот (вероятно,/bin/cat) с паролем (вероятно,/usr/bin/passwd)  

14. Объясните разницу между следующими командами:
echo
/bin/echo

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

15. Объясните разницу между следующие команды:
echo Hello
echo -n Hello

Код:

  Параметр -n команды echo предотвратит повторение эхом завершающей новой строки. echo Hello будет отображать всего шесть символов, echo -n hello отображает только пять символов. (Параметр -n может не работать в оболочке Korn.  .)  

16. Отобразите ABC с двумя пробелами между B и C.
(необязательно)

Код:

  echo "ABC"  

17. Выполните следующую команду (не используйте пробелы), чтобы отобразить точно так же быстро, как показано ниже

Пример вывода:

 4 + 4 = 8 10 + 14 =  24 

Решение состоит в использовании вкладок с t.

  4 + 4 = 810 + 14 = 24echo -e "4 + 4   t = 8 дюймов;  echo -e "10 + 14  t = 24"  

18. Используйте echo для точного отображения следующего:

Код:

  ?? \ echo '?? \' echo -e '?? \\'  echo "?? \\" echo -e "?? \\\" echo ?? \\  

19. Используйте одну команду echo для отображения трех слов в трех строках.

Код:

  echo  -e "один  nдва  nтри"  

Оцените статью
nanomode.ru
Добавить комментарий