My-library.info
Все категории

Уильям Шоттс - Командная строка Linux. Полное руководство

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Уильям Шоттс - Командная строка Linux. Полное руководство. Жанр: Прочая околокомпьтерная литература издательство -, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Командная строка Linux. Полное руководство
Издательство:
-
ISBN:
-
Год:
-
Дата добавления:
6 октябрь 2019
Количество просмотров:
260
Читать онлайн
Уильям Шоттс - Командная строка Linux. Полное руководство

Уильям Шоттс - Командная строка Linux. Полное руководство краткое содержание

Уильям Шоттс - Командная строка Linux. Полное руководство - описание и краткое содержание, автор Уильям Шоттс, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info
Книга Уильяма Шоттса "Командная строка Linux: Полное руководство" представляет обширный обзор «жизни» в командной строке Linux. В отличие от других книг, посвященных одной программе, такой как командный интерпретатор bash, в этой книге автор попытается рассказать, как поладить с интерфейсом командной строки в более широком аспекте. Как он работает? Что можно сделать с его помощью? Как лучше его использовать? Эта книга не об администрировании системы Linux. Эта книга исключительно о Linux.В книге материал излагается в тщательно выверенной последовательности, как в школе, где учитель руководит вами и направляет вас по правильному пути. Многие авторы грешат тем, что подают материал в «систематическом» порядке, имеющем определенный смысл для писателя, но способном вызывать путаницу у начинающих пользователей. Цель данной книги — познакомить вас с идеологией Unix, которая отличается от идеологии Windows.

Командная строка Linux. Полное руководство читать онлайн бесплатно

Командная строка Linux. Полное руководство - читать книгу онлайн бесплатно, автор Уильям Шоттс

Заключительное замечание


Познакомившись с командой for, внесем заключительное усовершенствование в наш сценарий sys_info_page. В настоящий момент функция report_home_space выглядит так:

report_home_space () {

if [[ $(id -u) -eq 0 ]]; then

cat <<- _EOF_

<H2>Home Space Utilization (All Users)</H2>

<PRE>$(du -sh /home/*)</PRE>

_EOF_

else

cat <<- _EOF_

<H2>Home Space Utilization ($USER)</H2>

<PRE>$(du -sh $HOME)</PRE>

_EOF_

fi

return

}

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

report_home_space () {

local format="%8s%10s%10sn"

local i dir_list total_files total_dirs total_size user_name

if [[ $(id -u) -eq 0 ]]; then

dir_list=/home/*

user_name="All Users"

else

dir_list=$HOME

user_name=$USER

fi

echo "<H2>Home Space Utilization ($user_name)</H2>"

for i in $dir_list; do

total_files=$(find $i -type f | wc -l)

total_dirs=$(find $i -type d | wc -l)

total_size=$(du -sh $i | cut -f 1)

echo "<H3>$i</H3>"

echo "<PRE>"

printf "$format" "Dirs" "Files" "Size"

printf "$format" "----" "-----" "----"

printf "$format" $total_dirs $total_files $total_size

echo "</PRE>"

done

return

}

В этой новой версии применено многое из того, что мы узнали к данному моменту. Она все еще проверяет наличие привилегий суперпользователя, но вместо того, чтобы выполнить полный набор операций в каждой из ветвей if, здесь устанавливаются некоторые переменные, которые затем используются в цикле for. В функции использованы несколько локальных переменных и команда printf для форматирования части вывода.

34. Строки и числа


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

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

Подстановка параметров


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

Простые параметры


Простейшую форму подстановки параметров можно наблюдать в использовании переменных. Например, запись $a после подстановки превращается в содержимое переменной a. Простые параметры можно заключать в фигурные скобки, например: ${a}. Это не оказывает влияния на результат подстановки, но является необходимым, если сразу за именем переменной следует какой-то другой текст, который может сбивать с толку командную оболочку. В следующем примере выполняется попытка сконструировать имя файла добавлением строки _file к содержимому переменной a.

[ [email protected] ~]$ a="foo"

[ [email protected] ~]$ echo "$a_file"

Если выполнить эту последовательность команд, результатом будет пустое значение, потому что командная оболочка попытается выполнить подстановку значения переменной a_file вместо a. Эта проблема устраняется с помощью фигурных скобок:

[ [email protected] ~]$ echo "${a}_file"

foo_file

Мы видели также, что доступ к позиционным параметрам с порядковыми номерами выше 9 тоже осуществляется с помощью фигурных скобок. Например, прочитать 11-й позиционный параметр можно следующим образом: ${11}.

Подстановка пустых переменных


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

${параметр:-слово}

Если параметр не определен (то есть отсутствует) или содержит пустое значение, механизм подстановки вернет значение указанного слова. Если параметр не пустой, механизм подстановки вернет значение параметра.

[ [email protected] ~]$ foo=

[ [email protected] ~]$ echo ${foo:-"substitute value if unset"}

substitute value if unset

[ [email protected] ~]$ echo $foo

[ [email protected] ~]$ foo=bar

[ [email protected] ~]$ echo ${foo:-"substitute value if unset"}

bar

[ [email protected] ~]$ echo $foo

bar

Вот еще один вариант подстановки, где вместо дефиса используется знак «равно»:

${параметр:=слово}

Если параметр не определен или содержит пустое значение, механизм подстановки вернет значение указанного слова и дополнительно присвоит его параметру. Если параметр не пустой, механизм подстановки вернет значение параметра.

[ [email protected] ~]$ foo=

[ [email protected] ~]$ echo ${foo:="default value if unset"}

default value if unset

[ [email protected] ~]$ echo $foo

default value if unset

[ [email protected] ~]$ foo=bar

[ [email protected] ~]$ echo ${foo:="default value if unset"}

bar

[ [email protected] ~]$ echo $foo

bar

ПРИМЕЧАНИЕ

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

Ниже демонстрируется форма со знаком вопроса:

${параметр:?слово}

Если параметр не определен или содержит пустое значение, механизм подстановки завершит сценарий с ошибкой и выведет значение указанного слова в стандартный вывод ошибок. Если параметр не пустой, механизм подстановки вернет значение параметра.

[ [email protected] ~]$ foo=

[ [email protected] ~]$ echo ${foo:?"parameter is empty"}

bash: foo: parameter is empty

[ [email protected] ~]$ echo $?

1

[ [email protected] ~]$ foo=bar

[ [email protected] ~]$ echo ${foo:?"parameter is empty"}

bar

[ [email protected] ~]$ echo $?

0

Ниже демонстрируется форма со знаком «плюс»:

${параметр:+слово}

Если параметр не определен или содержит пустое значение, механизм подстановки вернет пустое значение. Если параметр не пустой, механизм подстановки вернет значение слова, но сам параметр не изменится.

[ [email protected] ~]$ foo=

[ [email protected] ~]$ echo ${foo:+"substitute value if set"}

[ [email protected] ~]$ foo=bar

[ [email protected] ~]$ echo ${foo:+"substitute value if set"}

substitute value if set

Получение имен переменных


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

${!префикс*}

${!префикс@}

Эти две формы подстановки возвращают имена существующих переменных, начинающиеся с указанного префикса. Согласно документации bash, обе формы действуют совершенно одинаково. Следующая команда выводит список всех переменных окружения с именами, начинающимися с BASH:

[ [email protected] ~]$ echo ${!BASH*}

BASH BASH_ARGC BASH_ARGV BASH_COMMAND BASH_COMPLETION BASH_COMPLETION_DIR BASH_LINENO BASH_SOURCE BASH_SUBSHELL BASH_VERSINFO BASH_VERSION

Операции со строками


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

${#параметр}

вернет длину строки, содержащуюся в указанном параметре. Обычно роль параметра играет строка, но если передать @ или *, то механизм подстановки вернет число позиционных параметров.

[ [email protected] ~]$ foo="This string is long."

[ [email protected] ~]$ echo "'$foo' is ${#foo} characters long."

'This string is long.' is 20 characters long.

Следующая форма подстановки:

${параметр:смещение}

${параметр:смещение:длина}

используется для извлечения фрагмента строки, содержащейся в параметре. Извлечение начинается с указанного смещения от начала строки и продолжается до конца строки, если не указана длина.

[ [email protected] ~]$ foo="This string is long."

[ [email protected] ~]$ echo ${foo:5}

string is long.

[ [email protected] ~]$ echo ${foo:5:6}

string

Если указать отрицательное смещение, его отсчет начнется с конца строки вместо начала. Обратите внимание, что отрицательному значению должен предшествовать пробел, чтобы предотвратить путаницу с формой ${параметр:-слово}. Длина, если указана, в этом случае также должна быть меньше 0. Если в качестве параметра передать @, результатом подстановки будет длина позиционных параметров, начиная с указанного смещения.

[ [email protected] ~]$ foo="This string is long."

[ [email protected] ~]$ echo ${foo: -5}

long.

[ [email protected] ~]$ echo ${foo: -5:2}

lo

Следующие две формы:

${параметр#шаблон}

${параметр##шаблон}

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

[ [email protected] ~]$ foo=file.txt.zip

[ [email protected] ~]$ echo ${foo#*.}

txt.zip

[ [email protected] ~]$ echo ${foo##*.}

zip

Следующие две формы:

${параметр%шаблон}


Уильям Шоттс читать все книги автора по порядку

Уильям Шоттс - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


Командная строка Linux. Полное руководство отзывы

Отзывы читателей о книге Командная строка Linux. Полное руководство, автор: Уильям Шоттс. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.