Linux символы в командной строке

Linux символы в командной строке

Библиотека сайта rus-linux.net

операторы управления . Также мы кратко обсудим связанные с этими операторами параметры ($?) и вопросы использования аналогичных операторам специальных символов (&).

Точка с запятой (;)

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

[paul@RHELv4u3 ~]$ echo Hello Hello [paul@RHELv4u3 ~]$ echo World World [paul@RHELv4u3 ~]$ echo Hello ; echo World Hello World [paul@RHELv4u3 ~]$

Амперсанд (&)

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

[paul@RHELv4u3 ~]$ sleep 20 & [1] 7925 [paul@RHELv4u3 ~]$ . ожидание в течение 20 секунд. [paul@RHELv4u3 ~]$ [1]+ Done sleep 20

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

Символ доллара со знаком вопроса ($?)

Код завершения предыдущей команды сохраняется в переменной командной оболочки с именем $? . На самом деле $? является параметром командной оболочки, а не ее переменной, так как вы не можете присвоить значение переменной $? .

paul@debian5:~/test$ touch file1 paul@debian5:~/test$ echo $? 0 paul@debian5:~/test$ rm file1 paul@debian5:~/test$ echo $? 0 paul@debian5:~/test$ rm file1 rm: невозможно удалить "file1": Нет такого файла или каталога paul@debian5:~/test$ echo $? 1 paul@debian5:~/test$

Двойной амперсанд (&&)

Командная оболочка будет интерпретировать последовательность символов && как логический оператор «И» . При использовании оператора && вторая команда будет исполняться только в том случае, если исполнение первой команды успешно завершится (будет возвращен нулевой код завершения).

paul@barry:~$ echo первая команда && echo вторая команда первая команда вторая команда paul@barry:~$ zecho первая команда && echo вторая команда -bash: zecho: команда не найдена.

Во втором примере используется тот же принцип работы логического оператора «И» . Данный пример начинается с использования работоспособного варианта команды cd с последующим исполнением команды ls , после чего используется неработоспособный вариант команды cd , после которого команда ls не исполняется .

[paul@RHELv4u3 ~]$ cd gen && ls file1 file3 File55 fileab FileAB fileabc file2 File4 FileA Fileab fileab2 [paul@RHELv4u3 gen]$ cd gen && ls -bash: cd: gen: Нет такого файла или каталога

Двойная вертикальная черта (||)

Оператор || представляет логическую операцию «ИЛИ» . Вторая команда исполняется только тогда, когда исполнение первой команды заканчивается неудачей (возвращается ненулевой код завершения).

paul@barry:~$ echo первая команда || echo вторая команда ; echo третья команда первая команда третья команда paul@barry:~$ zecho первая команда || echo вторая команда ; echo третья команда -bash: zecho: команда не найдена. вторая команда третья команда paul@barry:~$
[paul@RHELv4u3 ~]$ cd gen || ls [paul@RHELv4u3 gen]$ cd gen || ls -bash: cd: gen: Нет такого файла или каталога file1 file3 File55 fileab FileAB fileabc file2 File4 FileA Fileab fileab2

Комбинирование операторов && и ||

Вы можете использовать описанные логические операторы «И» и «ИЛИ» для создания структур условных переходов в рамках строк команд. В данном примере используется команда echo для вывода информации о том, успешно ли отработала команда rm .

paul@laika:~/test$ rm file1 && echo Команда сработала! || echo Исполнение команды завершилось неудачей! Команда сработала! paul@laika:~/test$ rm file1 && echo Команда сработала! || echo Исполнение команды завершилось неудачей! rm: невозможно удалить "file1": Нет такого файла или каталога Исполнение команды завершилось неудачей! paul@laika:~/test$

Знак фунта (#)

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

paul@debian4:~$ mkdir test # создаем директорию paul@debian4:~$ cd test #### переходим в эту директорию paul@debian4:~/test$ ls # пуста ли она ? paul@debian4:~/test$

Экранирование специальных символов (\)

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

[paul@RHELv4u3 ~]$ echo hello \; world hello ; world [paul@RHELv4u3 ~]$ echo hello\ \ \ world hello world [paul@RHELv4u3 ~]$ echo экранирование \\\ \#\ \&\ \"\ \' экранирование \ # & " ' [paul@RHELv4u3 ~]$ echo экранирование \\\?\*\"\' экранирование \?*"'

Обратный слэш в конце строки

Читайте также:  Нужно ли чистить линукс

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

[paul@RHEL4b ~]$ echo Данная строка команды \ > разделена на три \ > части Данная строка команды разделена на три части [paul@RHEL4b ~]$

Практическое задание: операторы управления

0. Ответ на каждый из вопросов может быть представлен с помощью единственной строки команды!

1. Какой бинарный файл исполняется при вводе команды passwd ?

2. Какого типа данный файл?

3. Выполните команду pwd два раза. (Помните о пункте 0.)

4. Выполните команду ls после команды cd /etc , но только в том случае, если исполнение команды cd /etc завершилось без ошибок.

5. Выполните команду cd /etc после команды cd etc , но только в том случае, если исполнение команды cd etc завершилось ошибкой.

6. Выведите строку «сработало» в случае успешного завершения исполнения команды touch test42 или строку «не сработало» в случае неудачного завершения. Все операторы должны находиться в одной строке и исполняться с привилегиями обычного пользователя (не пользователя root). Протестируйте полученную команду в вашей домашней директории и директории /bin/ .

7. Выполните команду sleep 6 ; для чего предназначена эта команда?

8. Выполните команду sleep 200 в фоновом режиме (без ожидая завершения ее исполнения).

9. Создайте строку команды, в рамках которой будет исполняться команда rm file55 . Ваша строка команды должна выводить строку ‘удалось’ в том случае, если файл file55 был удален и строку ‘не удалось’ в случае возникновения проблем.

10 (необязательное задание). Используйте команду echo для вывода строки «Hello World со странными’ символами \ * [ > ~ \\ .» (включая все кавычки).

Читайте также:  Права доступа подпапки linux

Корректная процедура выполнения практического задания: операторы управления

0. Ответ на каждый из вопросов может быть представлен с помощью единственной строки команды!

1. Какой бинарный файл исполняется при вводе команды passwd ?

2. Какого типа данный файл?

3. Выполните команду pwd два раза. (Помните о пункте 0.)

4. Выполните команду ls после команды cd /etc , но только в том случае, если исполнение команды cd /etc завершилось без ошибок.

5. Выполните команду cd /etc после команды cd etc , но только в том случае, если исполнение команды cd etc завершилось ошибкой.

6. Выведите строку «сработало» в случае успешного завершения исполнения команды touch test42 или строку «не сработало» в случае неудачного завершения. Все операторы должны находиться в одной строке и исполняться с привилегиями обычного пользователя (не пользователя root). Протестируйте полученную команду в вашей домашней директории и директории /bin/ .

paul@deb503:~$ cd ; touch test42 && echo сработало || echo не сработало сработало paul@deb503:~$ cd /bin; touch test42 && echo сработало || echo не сработало touch: невозможно выполнить touch для "test42": Отказано в доступе не сработало

7. Выполните команду sleep 6 ; для чего предназначена эта команда?

Осуществляется ожидание в течение 6 секунд

8. Выполните команду sleep 200 в фоновом режиме (без ожидая завершения ее исполнения).

9. Создайте строку команды, в рамках которой будет исполняться команда rm file55 . Ваша строка команды должна выводить строку ‘удалось’ в том случае, если файл file55 был удален и строку ‘не удалось’ в случае возникновения проблем.

rm file55 && echo удалось || echo не удалось

10 (необязательное задание). Используйте команду echo для вывода строки «Hello World со странными’ символами \ * [ > ~ \\ .» (включая все кавычки).

echo \"Hello World со странными\' символами \\ \* \[ \> \~ \\\\ \. \" или echo \""Hello World со странными' символами \ * [ > ~ \\ . "\"
Предыдущий раздел: Оглавление Следующий раздел:
Глава 10. Команды и аргументы Глава 12. Переменные командной оболочки
Читайте также:  Kali linux one shot

Источник

Оцените статью
Adblock
detector