Уильям Шоттс - Командная строка Linux. Полное руководство
Название: | Командная строка Linux. Полное руководство | |
Автор: | Уильям Шоттс | |
Жанр: | Учебники и самоучители по компьютеру, Linux | |
Изадано в серии: | Для профессионалов | |
Издательство: | Питер | |
Год издания: | 2017 | |
ISBN: | 9785496023030 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Командная строка Linux. Полное руководство"
Уильям Шотте знакомит вас с истинной философией Linux. Вы уже знакомы с Linux, и настала пора нырнуть поглубже и познакомиться с возможнос тями командной строки. Командная строка всегда с вами, от первого знакомства до написания полноценных программ в Bash — самой популярной оболочке Linux. Познакомьтесь с основами навигации по файловой системе, настройки среды, последовательностями команд, поиском по шаблону и многим другим. Прочитав эту книгу, вы легко научитесь создавать и удалять файлы, каталоги и символьные ссылки; администрировать систему, включая сетевое оборудование, установку пакетов и управление процессами; редактировать файлы; писать скрипты для автоматизации общих или рутинных задач; выполнять любые работы с текстовыми файлами. Преодолев начальный страх перед оболочкой Linux, вы поймете, что командная строка — это естественный, логичный и простой способ общения с компьютером. И не забывайте протирать пыль с мышки. 12+
Читаем онлайн "Командная строка Linux. Полное руководство". [Страница - 156]
Определение числа аргументов
Командная оболочка поддерживает также переменную $#, хранящую число аргументов командной строки:
#!/bin/bash
# posit-param: сценарий для просмотра параметров командной строки
echo "
Number of arguments: $#
Доступ к командной строке
\$0
\$1
\$2
\$3
\$4
\$5
\$6
\$7
\$8
\$9
"
=
=
=
=
=
=
=
=
=
=
425
$0
$1
$2
$3
$4
$5
$6
$7
$8
$9
Результат:
[me@linuxbox ~]$ posit-param a b c d
Number of arguments: 4
$0 = /home/me/bin/posit-param
$1 = a
$2 = b
$3 = c
$4 = d
$5 =
$6 =
$7 =
$8 =
$9 =
shift — доступ к множеству аргументов
Но как быть, если программе передается большое число аргументов, как в следующем примере:
[me@linuxbox ~]$ posit-param *
Number of arguments: 82
$0 = /home/me/bin/posit-param
$1 = addresses.ldif
$2 = bin
$3 = bookmarks.html
$4 = debian-500-i386-netinst.iso
$5 = debian-500-i386-netinst.jigdo
$6 = debian-500-i386-netinst.template
$7 = debian-cd_info.tar.gz
$8 = Desktop
$9 = dirlist-bin.txt
В системе, где выполнялся этот пример, механизм подстановки развернул символ * в 82 аргумента. Как обработать такое количество? Командная оболочка
предусматривает решение и для подобных случаев, правда, следует отметить, что
изяществом оно не отличается. Команда shift выполняет «сдвиг» параметров
426 Глава 32. Позиционные параметры
к началу списка. Фактически, используя shift, можно обойтись единственной
переменной-параметром (помимо $0, которая никогда не изменяется).
#!/bin/bash
# posit-param2: сценарий вывода всех аргументов
count=1
while [[ $# -gt 0 ]]; do
echo "Argument $count = $1"
count=$((count + 1))
shift
done
Каждый раз, когда выполняется команда shift, значение $2 перемещается в $1, значение $3 перемещается в $2 и т. д. Значение $# при этом уменьшается на 1.
В программе posit-param2 мы создали цикл, проверяющий число оставшихся аргументов и продолжающийся до тех пор, пока оно не уменьшится до нуля. Цикл
выводит текущий аргумент, в каждой итерации увеличивает счетчик обработанных аргументов count и, наконец, выполняет shift, чтобы загрузить в $1 следующий аргумент. Вот как работает эта программа:
[me@linuxbox
Argument 1 =
Argument 2 =
Argument 3 =
Argument 4 =
~]$ posit-param2 a b c d
a
b
c
d
Простые приложения
Даже без команды shift можно писать полезные приложения, использующие позиционные параметры. Например, ниже приводится простая программа получения информации о файле:
#!/bin/bash
# file_info: простая программа получения информации о файле
PROGNAME=$(basename $0)
if [[ -e $1 ]]; then
echo -e "\nFile Type:"
file $1
echo -e "\nFile Status:"
stat $1
else
echo "$PROGNAME: usage: $PROGNAME file" >&2
exit 1
fi
Обработка позиционных параметров скопом
427
Эта программа выводит тип указанного файла (определяется с помощью команды file) и его состояние (командой stat). Интересной особенностью программы
является переменная PROGNAME. Ей присваивается результат выполнения команды
basename $0. Команда basename удаляет начальную часть из пути к файлу, оставляя
только базовое имя. В данном примере basename удалит начальную часть из параметра $0, хранящего полный путь к данной программе. Такой результат удобно
использовать для конструирования сообщений, например, о правилах использования программы. При подобном подходе можно переименовать сценарий, и при
выводе сообщений новое имя программы будет использоваться автоматически.
Использование позиционных параметров в функциях
Позиционные параметры используются для передачи аргументов не только в сценарии, но и в функции командной оболочки. Для демонстрации преобразуем сценарий file_info в функцию:
file_info () {
# file_info: функция для вывода информации о файле
}
if [[ -e $1 ]]; then
echo -e "\nFile Type:"
file $1
echo -e "\nFile Status:"
stat $1
else
echo "$FUNCNAME: usage: $FUNCNAME file" >&2
return 1
fi
Теперь, если сценарий, включающий функцию file_info, вызовет ее с именем файла в аргументе, аргумент будет передан в функцию.
Благодаря этому мы получаем возможность написать множество полезных функций для использования не только в наших сценариях, но и в файле .bashrc.
Обратите внимание, что в этом примере вместо переменной PROGNAME используется переменная командной оболочки FUNCNAME. Оболочка автоматически присваивает значение этой переменной в момент вызова функции. Отметьте также, что $0
всегда содержит полный путь к первому элементу командной строки (то есть имя
программы), а не имя функции, как можно было бы ожидать.
Обработка позиционных параметров скопом
Иногда бывает необходимо выполнить операцию сразу со всеми позиционными
параметрами. Например, --">
Книги схожие с «Командная строка Linux. Полное руководство» по жанру, серии, автору или названию:
Арнольд Роббинс - Linux программирование в примерах Жанр: Другие языки и системы программирования Год издания: 2005 |
Другие книги из серии «Для профессионалов»:
Дэвид Гринхол, Джош Скин, Эндрю Бэйли - Kotlin. Программирование для профессионалов Жанр: Kotlin Год издания: 2023 Серия: Для профессионалов |
Кристофер Негус - Библия Linux Жанр: Linux Год издания: 2022 Серия: Для профессионалов |
Эрик Чоу - Python для сетевых инженеров. Автоматизация сети, программирование и DevOps Жанр: Python Год издания: 2023 Серия: Для профессионалов |
Дж. Гай Дэвидсон, Кейт Грегори - Красивый C++ Жанр: C, C++, C# Год издания: 2023 Серия: Для профессионалов |