Уильям Шоттс - Командная строка Linux. Полное руководство
Название: | Командная строка Linux. Полное руководство | |
Автор: | Уильям Шоттс | |
Жанр: | Учебники и самоучители по компьютеру, Linux | |
Изадано в серии: | Для профессионалов | |
Издательство: | Питер | |
Год издания: | 2017 | |
ISBN: | 9785496023030 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Командная строка Linux. Полное руководство"
Уильям Шотте знакомит вас с истинной философией Linux. Вы уже знакомы с Linux, и настала пора нырнуть поглубже и познакомиться с возможнос тями командной строки. Командная строка всегда с вами, от первого знакомства до написания полноценных программ в Bash — самой популярной оболочке Linux. Познакомьтесь с основами навигации по файловой системе, настройки среды, последовательностями команд, поиском по шаблону и многим другим. Прочитав эту книгу, вы легко научитесь создавать и удалять файлы, каталоги и символьные ссылки; администрировать систему, включая сетевое оборудование, установку пакетов и управление процессами; редактировать файлы; писать скрипты для автоматизации общих или рутинных задач; выполнять любые работы с текстовыми файлами. Преодолев начальный страх перед оболочкой Linux, вы поймете, что командная строка — это естественный, логичный и простой способ общения с компьютером. И не забывайте протирать пыль с мышки. 12+
Читаем онлайн "Командная строка Linux. Полное руководство". [Страница - 154]
в переменной командной оболочки PS4 (prompt string 4 — строка приглашения 4).
Изменим значение этой переменной, чтобы сделать трассировочный вывод более
полезным. Ниже мы изменили эту переменную, включив в трассировочный вывод
текущий номер выполняемой строки в сценарии. Обратите внимание на необходимость использования одиночных кавычек — это предотвращает подстановку до
момента, когда строка приглашения не будет использоваться фактически:
416 Глава 30. Поиск и устранение ошибок
[me@linuxbox ~]$ export PS4='$LINENO + '
[me@linuxbox ~]$ trouble
5 + number=1
7 + '[' 1 = 1 ']'
8 + echo 'Number is equal to 1.'
Number is equal to 1.
Выполнить трассировку только выбранного фрагмента сценария можно с помощью команды set с параметром -x:
#!/bin/bash
# trouble: сценарий для демонстрации распространенных видов ошибок
number=1
set -x # Включить трассировку
if [ $number = 1 ]; then
echo "Number is equal to 1."
else
echo "Number is not equal to 1."
fi
set +x # Выключить трассировку
Здесь мы использовали команду set с параметром -x, чтобы включить трассировку, и с параметром +x, чтобы выключить ее. Этот прием используется для исследования сразу нескольких проблемных фрагментов в сценарии.
Исследование значений в процессе выполнения
Часто вместе с трассировкой полезно выводить содержимое переменных, чтобы
иметь более полное представление о действиях сценария. Обычно для этого используются дополнительные инструкции echo:
#!/bin/bash
# trouble: сценарий для демонстрации распространенных видов ошибок
number=1
echo "number=$number" # ОТЛАДКА
set -x # Включить трассировку
if [ $number = 1 ]; then
echo "Number is equal to 1."
else
echo "Number is not equal to 1."
fi
set +x # Выключить трассировку
Заключительное замечание
417
В этом тривиальном примере мы просто вывели значение переменной number и отметили дополнительную строку комментарием, чтобы в будущем упростить ее поиск и удаление. Подобный прием особенно полезен при исследовании поведения
циклов и арифметических операций в сценариях.
Заключительное замечание
В этой главе мы рассмотрели несколько проблем, с которыми можно столкнуться
в процессе разработки сценариев. Конечно, таких проблем несоизмеримо больше.
Приемы, описанные здесь, помогут вам в поиске наиболее распространенных видов ошибок. Отладка — это искусство предотвращения ошибок (за счет постоянного тестирования в ходе разработки) и их поиска (путем эффективного использования приемов трассировки), которое дается только с опытом.
31
Управление потоком
выполнения:
ветвление
с помощью case
В этой главе мы продолжим знакомство с инструментами управления потоком
выполнения. В главе 28 мы сконструировали простое меню и реализовали логику обработки выбора его пунктов пользователем. Для этого использовалась серия
команд if, выясняющих, какой из возможных вариантов выбран. Такие конструкции часто можно увидеть в программах, причем так часто, что в некоторых языках
программирования (включая командную оболочку) был реализован механизм
управления потоком выполнения для случаев с множеством альтернативных вариантов.
case
Командная оболочка bash поддерживает составную команду выбора из нескольких вариантов, которая называется case. Она имеет следующий синтаксис:
case слово in
[шаблон [| шаблон]...) команды ;;]...
esac
Взгляните еще раз, как программа read-menu из главы 28 обрабатывает выбор
пользователя:
#!/bin/bash
# read-menu: программа вывода системной информации,
#
управляемая с помощью меню
clear
echo "
Please Select:
case
1. Display System Information
2. Display Disk Space
3. Display Home Space Utilization
0. Quit
"
read -p "Enter selection [0-3] > "
if [[ $REPLY =~ ^[0-3]$ ]]; then
if [[ $REPLY == 0 ]]; then
echo "Program terminated."
exit
fi
if [[ $REPLY == 1 ]]; then
echo "Hostname: $HOSTNAME"
uptime
exit
fi
if [[ $REPLY == 2 ]]; then
df -h
exit
fi
if [[ $REPLY == 3 ]]; then
if [[ $(id -u) -eq 0 ]]; then
echo "Home Space Utilization (All Users)"
du -sh /home/*
else
echo "Home Space Utilization ($USER)"
du -sh $HOME
fi
exit
fi
else
echo "Invalid entry." >&2
exit 1
fi
С помощью case можно сделать логику выбора немного проще:
#!/bin/bash
# case-menu: программа вывода системной информации,
#
управляемая с помощью меню
clear
echo "
Please Select:
1. Display System Information
2. Display Disk Space
3. Display Home Space Utilization
0. Quit
419
420 Глава 31. Управление потоком выполнения: ветвление с помощью case
"
read -p "Enter selection [0-3] > "
case $REPLY in
0)
1)
2)
3)
*)
esac
echo "Program terminated."
exit
;;
echo --">
Книги схожие с «Командная строка Linux. Полное руководство» по жанру, серии, автору или названию:
Герберт Шилдт - C# 4.0: полное руководство Жанр: Учебники и самоучители по компьютеру Год издания: 2011 |
Другие книги из серии «Для профессионалов»:
Энтони Уильямс - C++. Практика многопоточного программирования Жанр: Учебники и самоучители по компьютеру Год издания: 2020 Серия: Для профессионалов |
Билл Филлипс, Кристин Марсикано, Крис Стюарт и др. - Android. Программирование для профессионалов Жанр: Android Год издания: 2021 Серия: Для профессионалов |
Рафаэль Херцог, Джим О'Горман, Мати Ахарони - Kali Linux от разработчиков Жанр: Linux Год издания: 2019 Серия: Для профессионалов |
Уильям Шоттс - Командная строка Linux. Полное руководство Жанр: Учебники и самоучители по компьютеру Год издания: 2017 Серия: Для профессионалов |