Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Введение в Linux (110

..pdf
Скачиваний:
8
Добавлен:
15.11.2022
Размер:
514.38 Кб
Скачать

рые UNIX системы, например Minix, так и содержат там домашние директории, только они монтируются с сервера по сети.

/usr/bin – некритичные для системы исполняемые файлы, /usr/include – заголовочные файлы,

/usr/lib – некритичные для системы библиотеки,

/usr/libexec – некритичные для системы библиотеки, которые применяются как исполняемые файлы (пример: sendmail),

/usr/local – локально установленное ПО, /var – различная изменяемая информация ОС, /var/cache – кэш различных приложений,

/var/lock – блокировки процессов-синглтонов (сервисов), /var/log – журналы (логи) системы,

/var/log/messages – основной лог системы, /var/mail – почтовые аккаунты,

/var/run – различные файлы-пиды, открытые сокеты, /var/spool – задания планировщика,

/var/tmp – временная директория (не очищается при перезагрузке),

. – текущая директория,

.. – родительская директория, ~ – домашняя директория (для обычных пользователей это

/home/<username>) – содержит настройки, историю, кэш, прочую информацию приложений для текущего пользователя,

~/.mc или ~/.config/mc – конфиг Midnight Commander,

~/.ssh – конфиги ssh,

~/.bashrc – конфиг bash для конкретного пользователя, ~/.bash_history – история команд bash для пользователя,

~/Desktop – для GUI-оболочек – содержимое попадает на рабочий стол, ~/Downloads – для GUI – директория загрузок по умолчанию.

11

6. УСТАНОВКА ПАКЕТОВ (rpm, deb, apt, yum, yast2, emerge)

6.1. Red Hat Packet Manager (rpm)

Применяется в ОС: Red Hat(Fedora, CentOS), Novell Netware, IBM

AIX.

Название файла пакета

<name>-<version>-<release>.<arc>.rpm

Например, oracle-xe-11.2.0-1.0.x86_64.rpm

rpm -i <package file> – установить пакет (указывается файл), rpm -e <package name> – удалить пакет (указывается пакет), rpm -q <package name> – проверить, установлен ли пакет.

RPM – низкоуровневый менеджер, для него есть много надстроек

(front-ends)

yum used in Fedora, CentOS 5, Red Hat Enterprise Linux 5 and above, Scientific Linux, Yellow Dog Linux and Oracle Linux

up2date used in Red Hat Enterprise Linux, CentOS (CentOS 3 and CentOS 4), and Oracle Linux

Zypper used in MeeGo,[8] openSUSE and SUSE Linux Enterprise urpmi used in Mandriva Linux, Rosa Linux and Mageia

apt-rpm, a port of Debian's Advanced Packaging Tool (APT) used in Ark Linux,[9] PCLinuxOS and ALT Linux

Smart Package Manager, used in Unity Linux, available for many distributions including Fedora.

rpmquery, a command-line utility available in (for example) Red Hat Enterprise Linux

yast2 – GUI для OpenSUSE

Пример использования yum:

yum install <package name> – установить пакет,

12

yum erase <package name> – удалить пакет,

yum search <package name> – поиск пакета по базе,

yum самостоятельно синхронизирует свою БД при любом действии.

6.2. Debian Package Manager (dpkg)

Применяется в ОС семейства Debian (Ubuntu,...)

dpkg

dpkg -i debFileName – установить пакет, dpkg -r packagename – удалить пакет,

dpkg – также низкоуровневый, имеется надстройка apt (Advanced Package Tool),

apt-getутилита для манипуляций, apt-cacheутилита для поиска,

aptitude – понимает все ключи обеих команд, apt-get install <package name> – установить пакет, apt-get remove <package name> – удалить пакет, apt-get update – обновить пакет,

aptitude search – поиск пакета.

Tarball

tar.gz, tar.bz2, … – ужатые архивы исходников. emerge – gentoo front-end for tarballs,

emerge <package name> – установить, emerge -C <package name> – удалить пакет, emerge -av <package name> – поиск,

emerge --sync – синхронизация локальной БД софта, eix <package name> – утилита для быстрого поиска.

13

7. АРХИВАТОРЫ И КОМПРЕССОРЫ

Принципиальный момент – в Linux все разделено и понятия не смешиваются. Архиватор нужен для слияния нескольких файлов, директорий, дерева файлов в один файл. Компрессор осуществляет сжатие этого файла.

Основной архиватор в Linux – tar. tar -cсоздать архив,

tar -fпараметром передается файл, tar -v – расширенный вывод,

tar -x – извлечь из архива,

tar -p – при извлечении сохранить права на файлы, tar -C – указать путь распаковки.

tar -cf arc.tar 1.txt 2.txt 3.txt tar -cf arc.tzr *.txt

tar -cf arc.tar /home/alexandro/results tar -xf arc.tar -C /home/alexandro/test

ar – старый архиватор. Сейчас применяется для упаковки объектных файлов(*.o) в статические библиотеки (*.a)

Компрессоров в Linux имеется много:

gzip – самый распространенный, работает быстро, сжимает простым алгоритмом.

Пример работы: gzip file – сжать файл,

gzip -d file.gz – разжать файл, gunzip file.gz – тоже разжать файл,

gzip -1степень сжатия 1 – минимальная, gzip -9степень сжатия 9 – максимальная,

14

bzip2, bunzip2 – сжимает лучше и дольше (тоже распространен), xz, unxz – сжимает хорошо, особенно xz -9,

compress – очень старый компрессор, встречается в различных старых скриптах.

lzip, lzop, zip – также применяются.

Tar умеет применять сжатие. Опция -z – gzip, опция -j – bzip2 tar -czf arc.tar.gz /home/alexandro/projects

tar -xzf arc.tar.gz -C /home/alexandro

8.BASH

8.1.Основы синтаксиса

Команда – некая последовательность символов, разделенных пробелами, заканчивается переносом строки, и которая делает некое действие. Каждая команда имеет код возврата. 0 считается успешным выполнением, не 0 – неуспешным. Во всех циклах 0 – это true.

1) pipeline

com1 | com2 | com3

2) list

com1 & com2 – параллельный запуск

com1; com2 – последовательный запуск (точка с запятой равносильна \n)

com1 && com2 – и (вторая только если первая завершится с 0)

com1 || com2 – или (вторая только если первая завершится не с 0)

3)for name [in word]; do list; done

4)for ((expr1; expr2; expr3)); do list; done 5)case word in [ [(] pattern [|pattern...)]; list;;

] esac

6)if list; then list [elif list; then list;]...[else list;] fi

7)while list; do list; done

8)until list; do list; done

15

8.2. Переменные

Переменная в скрипты задается через присваивание. Пока переменная не определена, её значение пусто. Все переменные – строковые, для вычисления арифметики надо использовать специальные утилиты.

VAR1=1 – присвоить единицу переменной VAR1, VAR2= – опустошить переменную VAR2.

Переменные окружения – переменные, которые заданы глобально в сессии (системе).

BASH – полный путь к шеллу (башу),

GROUPS – список групп текущего пользователя (аналог команды groups), HOSTNAME – сетевое имя машины,

PWD – текущая директория. аналог команды pwd, RANDOM – случайное число (0...32767),

HOME – домашняя директория пользователя, LANG – параметры языка и локали,

PATH – путь к исполняемым файлам,

PS1 – подсказка в строке набора команд.

8.3. Параметры скрипта $1-$9 – параметры, переданные в командной строке,

shift – сдвиг параметров (по умолчанию на 1, можно указать на сколько), $@ – все параметры через ПРОБЕЛ ($1 $2),

$* – все параметры через первый символ IFS (Input Field Separator) ($1c$2), $# – количество параметров, $? – код возврата последней команды, $- – флаги шелла,

$$ – PID текущего процесса,

$! – PID последнего запущенного фонового процесса, $0 – имя скрипта (как запускали)

16

Массивы – все ассоциативные, присваиваются просто к индексу, если такого нет, то будет пустое значение.

a[1]=5

Arrays are assigned to using compound assignments of the form name=(value1 ... valuen), where each value is of the form [subscript]=string. Only string is required.

Any element of an array may be referenced using ${name[subscript]}.

8.4. EXPANSION – процесс разворачивания команды

Brace Expansion – сначала разворачиваются фигурные скобки, для раскрытия множеств.

a{d,c,b}e expands into ‘ade ace abe’. a{1..3}e expands into ‘a1e a2e a3e’.

Tilde Expansion – замена тильды на путь домашней директории. ~ → хомяк

Parameter Expansion – замена параметров. ${parameter}

AAA='112233'

BBB=

${parameter:-word} – заменяет на word если null. ${AAA:-22} → 112233

${BBB:-22} → 22

${parameter:-word} – заменяет на word если null и присваивает переменной. ${AAA:-22} → 112233

${BBB:-22} → 22 ${BBB} → 22

и т. д.

Command Substitution – выполняются команды и подставляется их вывод.

17

$(command) ‘command‘

Arithmetic Expansion – подсчёт арифметики. $((expression))

Pathname Expansion – замена путей с паттернами

*Matches any string, including the null string.

?Matches any single character.

[...] Matches any one of the enclosed characters. ?(pattern-list)

Matches zero or one occurrence of the given patterns *(pattern-list)

Matches zero or more occurrences of the given patterns +(pattern-list)

Matches one or more occurrences of the given patterns @(pattern-list)

Matches one of the given patterns !(pattern-list)

Matches anything except one of the given patterns Quote Removal – удаление кавычек.

After the preceding expansions, all unquoted occurrences of the characters \, ', and " that did not result from one of the above expansions are removed. REDIRECTION

/dev/fd/fd

If fd is a valid integer, file descriptor fd is duplicated. /dev/stdin

File descriptor 0 is duplicated. /dev/stdout

File descriptor 1 is duplicated.

18

/dev/stderr

File descriptor 2 is duplicated. /dev/tcp/host/port

If host is a valid hostname or Internet address, and port is an integer port number or service name, bash attempts to open a TCP connection to the corresponding socket.

/dev/udp/host/port

If host is a valid hostname or Internet address, and port is an integer port number or service name, bash attempts to open a UDP connection to the corresponding socket.

8.5.Навыки работы shell

1.Виртуальные консоли, X.

1)Alt-F1...F6 – переключение консолей;

2)Alt-F7(иногда F8) – переключение в X;

3)в X для переключения в консоли – Ctrl-Alt-F1..F6.

2.Авто-дополнение – TAB, с различными сочетаниями может подсказывать известные хосты, пользователей и др.

3.История.

1)history – выводит историю команд;

2)!127 – запустить команду 127 из истории;

3)вверх стрелка – предыдущая команда;

4)Ctrl-R – поиск по истории;

5)С-p/C-n – предыдущая/следующая команда;

6)иногда при частичном наборе команды можно нажать PgUp, вызовется поиск команд с таким началом.

4.Перемещение.

1)C-a/C-e – начало/конец строки;

2)C-f/ C-b – следующий/предыдущий символ;

19

3)M-f/M-b – следующее/предыдущее слово.

5.Редактирование.

1)M-u/M-l/M-c – upcase, lowercase, capitalize;

2)C-k – kill to end;

3)M-d/M-Backspace – kill word forward\backward.

8.6.Правила и приемы при написании скриптов

Правила:

1.Параметризация (передача параметров, взятие текущего места, пользователя, использование переменных окружения, использование файлов настроек, как вариант – включаемого скрипта).

2.Структурирование, чтобы скрипты было легко читать.

3.Использование внятных названий.

4.Указание интерпретатора в начале скрипта.

5.Внятный вывод.

6.При перспективной возможности работы с большими массивами данных – хотя бы минимальная оптимизация.

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

8.Использование по возможности конвейерной обработки.

9.При теоретической возможности использования скриптов на других шеллах помнить о разнице между ними и придерживаться стандарта.

Приемы:

1.Использование отладочного режима (#!/bin/bash -x).

2.Писать логи (команда tee).

3.Убирать ненужную информацию, использовать silent режим команд либо перенаправлять в /dev/null.

4.Комментировать.

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]