Linux — кратко обо всём. часть 2

4 Устройства
4.1 Типы
b – блочные;
c – символьные;
- – обычный файл;
d – каталог;
l – символьная ссылка;
p – именованный канал;
s – сокет;



4.2 Файлы устройств (в каталоге /dev)
null – Нулевое устройство, данные в котором исчезают;
full – Имитация полного устройства, при записи и генерация нулей, при чтении (для отладки программ);
port – Порты IO;
zero – Неисчерпаемый источник нулей;
random – Источник случайных чисел (медленный; более случайный);
urandom – Источник случайных чисел (быстрый; менее случайный);
psaux – Порт мыши PS/2;
scd[x] – SCSI устройства (x=0..n);
sg[x] – Обобщенные устройства SCSI аппаратуры (x=0..n);
hd[x][y] – Стандартное IDE устройство, где x отдельное устройство, y – раздел устройства (x=a..z; y=1..n);
fd[*] – Флоппи устройство;
loop[x] – Петлевые устройства (x=0..n);
mem – Физическая память;
kmem – Виртуальная память ядра;
tty – Управляющий терминал выполняемого процесса;
tty[y][x] – Терминальные устройства (y=S – COM порты);
vcs[x] – Получение снимка экрана виртуальной консоли <x> (x=0..n);
vcsa[x] – Получение снимка экрана виртуальной консоли <x> с заголовком и байтами атрибутов (x=0..n);
eth[x] – Интерфейс сети Ethernet (различные сетевые карты) (x=0..n);
sl[x] – Интерфейсы для связи по протоколу SLIP (x=0..n);
lp[x] – Параллельные порты (x=0..n);
ram[x] – Виртуальный диск, в памяти (x=0..n);
ramdisk – -//-
sndstat – Состояние звукового драйвера;
audio[x] – Устройство звукового вывода, совместимое с форматом Sun (x=0..n);
dsp[x] – Устройство квантования звука (x=0..n);
mixer[x] – Для управления микшерными аппаратными средствами на звуковой плате (x=0..n);
music – Интерфейс высокого уровня для последовательного воспроизведения звука;
midi[x] – Устройство непосредственного доступа к Миди-порту (x=0..n).


5 Горячие клавиши
5.1 BASH
Основные:

Ctrl+H(?) — Erase “<-"
Ctrl+C — Прервать текущий процесс (сигнал SIGINT)
Ctrl+\ — Прервать текущий процесс с дампом памяти(core damp)
Ctrl+D — Eof (выход из консольного пользовательского процесса)
Ctrl+S — Остановить процесс
Ctrl+Q — Запустить процесс
Ctrl+Z — Перевести процесс в фоновый режим
Ctrl+J — Сброс параметров терминала
Crtl+W — Удалить последнее слово
Ctrl+M — Аналог клавиши “Enter”
Ctrl+R — Переводит в режим поиска команды по истории. Повторное нажатие перебирает сходные по маске строки
Ctrl+L — Очистка экрана
TAB — Автозавершение команд
ScrLock — Приостановка выполнения(печати) текущей команды
Ctrl+Alt+Del — Закрыть систему и перегрузится
Навигация:

Up; Down — Просмотр и редактирование истории команд
Alt+Left — Переключение по терминалам влево(консоль)
Alt+Right — Переключение по терминалам вправо(консоль)
Sh+PgUp — Прокрутка текста вверх
Sh+PgDown — Прокрутка текста вниз
Ctrl+B — На символ назад
Ctrl+F — На символ вперёд
Alt+B — На слово вперёд
Alt+F — На слово назад
Ctrl+A — Переводит курсор в начало строки
Ctrl+E — Переводит курсор в конец строки
Редактирование:

Ctrl+D — Удаление символа в позиции курсора
Ctrl+H — Удаление символа перед позицией курсора
Alt+D — Удаление символов до ближайшего справа пробела
Ctrl+W — Удаление символов до ближайшего слева пробела
Ctrl+U — Очистить строку ввода слева от курсора
Ctrl+K — Очистить строку ввода справа от курсора
Ctrl+T — Смена положения соседних символов
Ctrl+_ — Откат редактирования
Ctrl+X,Ctrl+U — Откат редактирования
MidlMouse — Вставляет текст, выделенный в данный момент в другом месте
5.2 X
Ctrl+Alt+F[n] — Переключение между псевдотерминалами
Ctrl+Alt+<+> — Сменить разрешение на следующее (прописаных в XF86Config)
Ctrl+Alt+<-> — Сменить разрешение на предыдущее (прописаных в XF86Config)
Ctrl+Alt+ESC — Режим удаления указанного окна
Ctrl+Alt+BkSpc — Закрыть текущий X сервер
MidlMouse — Вставляет текст, выделенный в данный момент в другом месте

5.3 KDE
Alt+Tab — Переход между окнами в прямом направлении
Alt+Sh+Tab — Переход между окнами в обратном направлении
Ctrl+Tab — Переход между рабочими столами в прямом направлении
Ctrl+Sh+Tab — Переход между рабочими столами в обратном направлении
Ctrl+Esc — Показать таблицу активных процессов (ksysguard)
Alt+F1 — Вызвать K-меню
Alt+F12 — Эмулировать мышь стрелками клавиатуры
Alt+LeftMouse — Перенести окно схватив его за любую видимую его часть
Alt+PrScreen — Сделать снимок текущего окна в буфер обмена
Ctrl+Alt+l — Запереть рабочий стол
Ctrl+Alt+d — Спрятать/показать рабочий стол

5.4 SysRQ ядра (Alt+SysRq+Key)
r — Отключает режим непосредственной передачи символов с клавиатуры и устанавливает её в режим XLATE
k — Уничтожает все процессы на текущей виртуальной консоли
b — Немедленно перезапускает систему
o — Отключить питание системы через АРМ
s — Синхронизировать все файловые системы
u — Демонтирует и перемонтирует все смонтированные файловые системы в режиме только для чтения
p — Вывести текущее значение регистров и флагов на консоль
t — Вывести список текущих задач и информацию о них на консоль
m — Вывести текущее состояние памяти на консоль
0–9 — Устанавливает уровень выдачи сообщений на консоль для фильтрации сообщений ядра
e/i — Посылает сигналы term или kill всем процессам, кроме init
l — Посылает SIGKILL всем процессам, включая init


6 Форматы основных конфигурационных файлов
6.1 xorg.conf


Секция «InputDevice" – описание устройств ввода (клавиатур, манипуляторов мышь)
Identifier – идентификатор устройства ввода
Driver – драйвер устройства ввода:

kbd – клавиатура;
mouse – манипулятор мышь.
Option – опция:

XkbLayout – список раскладок клавиатуры («us,ru,ua»)
XkbOptions – опции клавиатуры, обычно указывается комбинация клавиш для переключения раскладки клавиатуры ("grp:ctrl_shift_toggle", “grp_led:scroll”)
XkbVariant – вариант раскладки клавиатуры (default, winkeys)
XkbModel – модель клавиатуры (105,104 ...)
Device – файл устройства мыши (/dev/input/mice)
Protocol – Протокол интерфейса мыши (PS/2, IMPS/2, ...)
ZAxisMapping – Расключение дополнительных клавиш мыши (колесо – «4 5")


Секция “Monitor” – описание монитора
Identifier – идентификатор монитора
DisplaySize – размер дисплея (пропорции – 320 240)
Option – опция:

dpms – включение режима энергосбережения


Секция “Device” – описание устройства видеовывода
Identifier – идентификатор видеокарты
Driver – драйвер видеокарты (nv, nvidia, radeon, fglrx, ...)



Секция “Screen” – описание экрана
Identifier – идентификатор экрана
Device – идентификатор устройства видеовывода, видеокарта (описана в секции “Device”)
Monitor – идентификатор монитора (описан в секции “Monitor”)
DefaultDepth – глубина цвета устанавливаемая по умолчанию
SubSection “Display” – подсекция экрана (описывает допустимые разрешения с глубинами цвета):

Depth – глубина цвета (8,15,16,24,32)
Modes – допустимые разрешения экрана («1152x864» “1024x768” “1024x736” “1024x600” “960x720” “848x480” “832x624” “800x600”)


Секция «ServerLayout" – обобщающая конфигурационная секция (корень)
Identifier – идентификатор сервера
Screen – идентификатор экрана используемого сервером (описан в секции “Screen”)
InputDevice – идентификатор устройства ввода (описано в секциях «InputDevice")



Секция “Module” – секция описания дополнительных модулей расширения
Load – загрузка указанного модуля:

dbe – ???
glx – Модуль языка GLX (для OpenGL)
dri – Direct rendering infrastructure (для OpenGL)
6.2 Управляющие последовательности консоли


Управление звуком:
\007 – издать звук;
\033[10;#] – установить частоту звукового сигнала в герцах;
\033[11;#] – установить продолжительность звукового сигнала в миллисекундах.



Управление цветом:
\033[0m – все атрибуты по умолчанию;
\033[1m – жирный шрифт (интенсивный цвет);
\033[2m – полу яркий цвет (тёмно-серый, независимо от цвета);
\033[4m – выделение (ярко-белый, независимо от цвета);
\033[5m – мигающий;
\033[7m – реверсия (знаки приобретают цвет фона, а фон – цвет знаков);
\033[22m – установить нормальную интенсивность;
\033[24m – отменить подчеркивание;
\033[25m – отменить мигание;
\033[27m – отменить реверсию;
\033[30 – чёрный цвет знаков;
\033[31 – красный цвет знаков;
\033[32 – зелёный цвет знаков;
\033[33 – коричневый цвет знаков;
\033[34 – синий цвет знаков;
\033[35 – фиолетовый цвет знаков;
\033[36 – цвет морской волны знаков;
\033[37 – серый цвет знаков;
\033[40 – чёрный цвет фона;
\033[41 – красный цвет фона;
\033[42 – зелёный цвет фона;
\033[43 – коричневый цвет фона;
\033[44 – синий цвет фона;
\033[45 – фиолетовый цвет фона;
\033[46 – цвет морской волны фона;
\033[47 – серый цвет фона.



Управление положением курсора
\033[#A – передвинуть курсор вверх на # строк;
\033[#B – передвинуть курсор вниз на # строк;
\033[#С – передвинуть курсор вправо на # столбцов;
\033[#D – передвинуть курсор влево на # столбцов;
\033[#E – передвинуть курсор вниз на # строк и поставить в начало строки;
\033[#F – передвинуть курсор вверх на # строк и поставить в начало строки;
\033[#G – переместить курсор в указанный столбец текущей строки;
\033[#;#H – задает абсолютные координаты курсора (строка, столбец).



Управление палитрой
\033]Pnrrggbb – изменяет палитру. n – номер цвета; rr, gg и bb – значения RGB-компонент в шестнадцатеричной форме;
\033]R – восстанавливает палитру, принятую по умолчанию.



Управление виртуальными консолями
\033[12;#] – сделать текущей консоль с указанным номером.



Управление xterm
\033]0;text\007 – присваивает имя окну и иконке;
\033]1;text\007 – присваивает имя иконке;
\033]2;text\007 – присваивает имя окну.



Общее
\033c – сброс терминала;
\033(K – переключение на загружаемый шрифт.

6.3 BASH
6.3.1 Общее
![numb] — запуск строки <numb> из истории (history);
!str — запуск ближайшей строки соответствующей маске str из истории (history);
\ — продолжение текущей строки на другой строке или экранирование специального символа после данного символа (\$);
; — разделитель команд;
() — выполнения сценария в скобках в другой подоболочке;
(()) — включение выражений с «С» синтаксисом;
[] — включение условных операций с синтаксисом команды test;
“pwd” — определение строки с разрешением подстановки значений переменных;
'pwd' — определение строки с запрещением подстановки значений переменных;
`pwd` — результат выполнения команды pwd;
$(x) — выполнение команды x и возврат результата (подобно `x`);
x=pwd — определение переменной окружения x и присвоение ей строки pwd;
x='34' — определение переменной окружения x и присвоение ей строки '34';
x[2]=pwd — определение массива x и присвоение его элементу 2 строки pwd;
x=(zero one two three) — определение массива x и заполнение четырех его элементов;
x=([0]=zero [3]=three [2]=two [1]=one) — определение массива x и заполнение четырех его элементов по выбору;
$(( 100/3 )), $[100/3] — выполнение простых целочисленных операций.

Примеры:
a=4; echo $[a=$a+4] $[a+=4] $[a=a+4]
a=4; echo $[a=$a+4, a+=4, a=a+4]
$[2!=2] $[2!=3]
$[a=2<3] $a
Операции:
id++, id-- — постфиксное увеличение/уменьшение значения переменной на 1
++id, --id — префиксное увеличение/уменьшение значения переменной на 1
-, + — унарные минус и плюс
!, ~ — логическое и побитовое отрицание
** — возведение в степень
*, /, % — умножение, деление, получение остатка от деления
+, - — сложение, вычитание
< <, > > — побитовый сдвиг влево и вправо
<=, >=, <, > — сравнение
==, != — равенство и неравенство
& — побитовое И
^ — побитовое исключающее ИЛИ
| — побитовое ИЛИ
&& — логическое И
|| — логическое ИЛИ
выр1?выр2:выр3 — условное вычисление
=, *=, /=, %=, +=, ?=+ — присваивание
выр1,выр2 — запятая
() — выделение более приоритетного участка выражения
$x, ${x} — подстановка значения переменной/параметра x
${!x} — косвенная подстановка значения переменной/параметра указанного в x;
${#x} — косвенная подстановка значения переменной/параметра указанного в x,

если параметр – * или @, подставляется количество позиционных параметров,
если параметр – массив с индексом * или @, подставляется количество элементов массива;
${x:?»Error, no bar»} — генерировать ошибку если x не определена или равна нулю;
${x?»Error, no bar»} — -//-;
${x:="foose"} — присвоить значение по умолчанию если x не определена или равна нулю;
${x="foose"} — -//-;
${x:offset:lenght}, ${x:offset} — возвращает часть от x начиная с offset длиной lenght;

В качестве длины и смещения могут выступать:

арифметические выражения;
смещение отрицательное число – отсчитывается с конца значения параметра;
параметр – @, результат – <n> позиционных параметров, начиная с параметра <m>;
параметр – массив с индексом @ или *, результат – <n> элементов массива, начиная с ${параметр[m]};
${x:+"foose"} — если переменная определена то вместо неё используется “foose”;
${x+"foose"} — -//-;
${x:-"foose"} — если переменная определена то она используется иначе используется “foose”;
${x-"foose"} — -//-;
${пар#шабл} — ??
${пар##шабл} — ??
${пар%шабл} — ??
${пар% %шабл} — ??
${пар/шабл/стр} — заменяется первая, самая длинная подстрока значения параметра, на указанную строку;
${пар/ /шабл/стр} — заменяются все самые длинные подстроки значения параметра, на указанную строку;
${array[@]} — обращение сразу ко всему массиву;
$'\n' — вставка управляющего символа в строку;
Comm && — выполняет действие после выражения если команда <Comm> неудачна;
Comm || — выполняет действие после выражения если команда <Comm> удачна;
MYVAR#*fo — отсекает от начала переменной MYVAR самую короткую часть удовлетворяющую маске *fo;
MYVAR##*fo — отсекает от начала переменной MYVAR самую длинную часть удовлетворяющую маске *fo;
MYVAR%fo* — отсекает от конца переменной MYVAR самую короткую часть удовлетворяющую маске fo*;
MYVAR% %fo* — отсекает от конца переменной MYVAR самую длинную часть удовлетворяющую маске fo*;
MYVAR:2:5 — возвращает часть строки MYVAR которая начинается с 2 символа и заканчивается 5;

6.3.2 Служебные переменные языка
$# — количество фактических аргументов;
$- — флаги (однобуквенные), указанные при запуске shell или установленные посредством set.
$? — код возврата последней команды;
$$, $PPID — PID текущего процесса (скрипта);
$! — PID последнего запущенного фонового процесса;
$* — раскрывает единственное слово, содержащее список всех позиционных парам;
$@ — ссылка на все аргументы команды отделенные пробелами;
$0 — имя команды в командной строке;
$n, ${n} — аргумент n командной строки (n = 1...);

6.3.3 Основные переменные окружения оболочки
PWD — текущий рабочий каталог;
UID — цифровой идентификатор текущего пользователя;
umask — содержит маску прав доступа по которой создаются новые файлы;
BASH — полный путь вызова BASH;
BASH_VERSION — версия данного экземпляра BASH;
EDITOR — содержит имя редактора используемого для редактирования некоторых конфигурационных файлов;
PAGER — содержит имя программы для отображения информационных страниц (типа more);
SHLVL — количество запущенных BASH;
REPLY — содержит последнюю строку ввода;
RANDOM — содержит случайное число в диапазоне 0..32767;
SECONDS — время в секундах от запуска BASH;
HISTCMD — номер текущей команды в истории;
IFS — цепочка символов разделителей полей;
PATH — пути поиска команд;
HOME — домашний каталог текущего пользователя;
MAIL — имя файла в который поступает электронная почта;
LOGNAME — имя пользователя использованное для входа в систему;
SHELL — имя интерпретатора команд;
LD_LIBRARY_PATH — описания пользовательских путей к динамическим библиотекам;
DISPLAY — описывает адрес дисплея для X-приложений;
LANG — переменная локали;
TERM — тип пользовательского терминала;
INPUTRC — содержит имя файла параметров для библиотеки readline, определяющей параметры ввода с клавиатуры;
PS1,PS2 — описывает вид приглашения в командной строке;
TZ — информация о часовом поясе;
MALLOC_CHECK_ — указывает что делать с ошибками в функциях malloc, free:

= 0 — молча игнорировать все ошибки;
= 1 — сообщить об ошибке и продолжить работу;
= 2 — прервать (без сообщения);
= 3 — прервать и сообщить об ошибке.
MALLOC_TRACE — определяет путь для команды mtrace и функции в программе mtrace;

6.3.4 Основные операторы
& — выполнить команду до него в фоновом режиме;
if [ Condition ] — условный оператор ( if ( Condition ) – tch);
then — тело выполнения условия;
else — тело невыполнение условия;
elif [ Condition ] — совмещенная команда else if;
fi — окончание условного оператора;
for x in 1 2 3 4 — оператор цикла, в x перебираются значения за in ( foreach x (1 2 3 4) – tch ). Общая структура циклов:

for x in 1 2 3 4
do #тело цикла

done
while [ Condition ] — выполняет цикл пока верно условие Condition ( while ( Condition ) -tch );
until [ Condition ] — выполняет цикл до равенства условия Condition;
(repeat x expression – tch ) — выполняет повторение выражения <expression> x раз;
select x in list; — запрашивает выбор из списка <list> и присваивает выбранное значение переменной <x>;
do — начало тела цикла определенного for, while, until;
done — конец тела цикла определенного for, while, until;
break — завершение цикла;
continue — продолжение цикла сначала;
case x in — команда выбора. Имеет структуру:

case "${x##*.}" in
gz) gzunpack ${SROOT}/${x} ;;
bz2) bz2unpack ${SROOT}/${x} ;;
*) echo «Неизвестный формат архива» exit ;;
esac
function func() { } — определяет функцию с именем func;
func a1 a2 a3 — вызов функции;

6.3.5 Встроенные команды
. file — выполнить все команды в файле после точки;
eval [attr] — выполнить команду заданную аргументами;
exec [prog] — сменить программу текущего процесса указанной, т.е. выполнить в данном процессе новую программу;
exit n — выход из сценария с кодом <n>;
shift [n] — сдвиг параметров командной строки на единицу (для доступа к параметрам с номером > 9 );
cd [dir] — сменить директорию;
pwd — получение имени текущей директории;
read x y — ввод строки из двух слов;
set x = str — инициализация переменной и установка различный настроек интерпретатора;
-A Name_A 1 2 3 4 5 — инициализация массива;
-V,-X — включение отладочного режима;
+V,+X — выключение отладочного режима;
unset x — отмена инициализации переменной;
export x — создает переменную окружения x и экспортирование её в систему;
-p — вывод всех экспортированных переменных.
local x — создает локальную переменную окружения которая не перекрывает глобальной (часто используется для функций);
declare — декларирование переменных и изменение их атрибутов;
trap — установка обработчиков сигналов в скрипте;
alias [имя=синоним] — создание псевдонимов или альтернативных имен команд;
unalias — удаление псевдонима;
test — проверка условий, используется в циклах;
getopts — разбор опций.

6.3.6 Операторы сравнения файлов
-e — существует;
-d — каталог;
-f — обычный файл;
-c — специальный файл;
-b — специальный блочный файл;
-p — специальный файл именованного канала;
-L — символическая ссылка;
-r — для чтения;
-w — для записи;
-x — исполняемый;
-z — файл пуст;
-s,(-z) — имя файла не нулевой длины;
(-o) — пользователь является владельцем файла;
fname1 -nt fname2 — fname1 новее fname2;
fname1 -ot fname2 — fname1 старше fname2;

6.3.7 Операторы сравнения цепочек символов, арифметических выражений и логические операторы
-z — строка пуста;
-n — строка не пуста;
=, (==) — строки равны;
!= — строки неравна;
-eq — равно;
-ne — неравно;
-lt,(< ) — меньше;
-le,(<=) — меньше или равно;
-gt,(>) — больше;
-ge,(>=) — больше или равно;
! — отрицание логического выражения;
-a,(&&) — логическое «И»;
-o,(||) — логическое «ИЛИ»

6.3.8 Перенаправления вывода
| — перенаправление вывода в канал;
< file — file записать в STDIN;
> file — STDOUT записать в file;
<> file — чтение и запись в файл;
>> file — STDOUT добавить в file;
<< str — определяет слово <str> как признак окончания ввода;
2> file — STDERR записать в file (могут указываться дескрипторы других файлов);
1>&2 — STDOUT записать в STDERR;
2>&1 — STDERR записать в STDOUT;
&> file — STDOUT и STDERR записать в file;

6.3.9 Специальные символы (экранирование)
\n — новая строка
\b — возврат на один символ
\c — печать строки без символа новой строки
\f — переход к новой странице/экрану
\r — возврат каретки
\t — табуляция
\v — табуляция по вертикали
\\ — обратная косая черта
0nnn — восьмеричное число
xNN — шестнадцатеричное число

6.3.10 Маски (подстановка, может быть отключена опцией -f или set)
* — производная цепочка символов;
? — производный символ;
[...] — символ в скобках [A-Z]; "! и ^" – исключение символа.

6.3.11 Представление численных значений
045 — восьмеричное число (начинается с 0)
0x45, 0X32 — шестнадцатеричное число
[основание#]n — число с основанием <n> (по умолчанию основание 10)

Примеры:
$[2#101] $[10#101] $[16#101]
$[16#FF] $[16#ff] $[0xFF]
$[64**2] $[64#@@]
$[64#z] $[64#Z]
6.3.12 Полезные обороты

wc -l # получить количество строк
wc -w # получить количество слов
sed -n 4p # получить указанную строку
ls -1 /etc # получить содержимое каталога по строкам
head -c8 /dev/random | uuencode -m - | sed -n '2s/=*$//;2p' # cгенерировать случайный пароль

6.4 GDB
run – запуск отлаживаемой программы
break func – установка точку прерывания на функцию func
list func – просмотр содержимого функции или исходного файла
next – следующая команда;
quit – выход;

6.5 MAKE
Формат правила:

<цель_1> <цель_2> ... <цель_n>: <зависим_1> <зависим_2> ... <зависим_n>
<команда_1>
<команда_2>
...
<команда_n>


Цель это некий желаемый результат может представлять собой:

имя файла (my_file: file.c file1.c);
команда (clean: );


Зависимость, также может быть файлом или командой которая должна выполнится ранее.

6.5.1 Шаблонные правила
.cpp.o: – файлы с расширением *.o зависят от соответствующий файлов с расширением *.cpp
%.o: %.cpp – проверяет все файлы с расширением .cpp и заменяет цель на расширение .o
.PHONY: x – объявление специальной цели (не файл)
all: – выполняет эту цель при отсутствие параметров команды make

6.5.2 Ключевые слова и команды
=,:= – оператор объявления переменных (x = test)
+= – добавление текста к существующей переменной
#define – определение переменных. (#define x «test 1")
include – включение внешнего файлы и его обработка, с прерыванием при отсутствие файла
-include – включение внешнего файлы и его обработка, без прерывания при отсутствие файла
$(function par1, par2 ...) – вызов функции и получение значения переменной
addprefix – добавляет префикс в первом параметре к каждому элементу в списке второго параметра
addsuffix – добавляет суффикс в первом параметре к каждому элементу в списке второго параметра
wildcard – расширяет переданные шаблоны до списка файлов соответствующих этим шаблонам
notdir – выделение имени файла из полного пути
patsubst – изменяет указанным образом слова подходящие под шаблон

object_files = $(patsubst %.cpp, %.o, man.cpp) -> man.o
override – позволяет изменять переменные заданные через пораметры make
for x in 1 2 3 4; – оператор цикла, в x перебираются значения за in
do – начало цикла определенного for
done – конец цикла определенного for

6.5.3 Специальные переменные
VPATH – описывает список каталогов для поиска зависимостей
CC – указывает компилятор языка С
СXX – указывает компилятор языка С++
СFLAGS – указывает флаги компилятора С
CXXFLAGS – указывает флаги компилятора С++
LDLIBS – описывает опции линкера

6.5.4 Автоматические переменные
`command` – вставить в сценарий выхлоп команды <command>
$@ – имя цели обрабатываемого правила
$< – имя первой зависимости обрабатываемого файла
$^ – список зависимостей обрабатываемого правила

6.6 Makefile.am
bin_PROGRAMS – определяет имя программы
<prog>_SOURCES – определение исходников от которых зависит программа
CXX – имя C++ компилятора
CXXFLAGS – определение опций С++ компилятора
AUTOMAKE_OPTIONS – определение опций automake:

foreign – не требовать создания файлов документации
6.7 configure.in
AC_INIT(file) – инициализация скрипта и проверка на наличие исходников
AC_CONFIG_AUX_DIR(dir) – использовать скрипты типа install-sh из каталога <dir>
AM_INIT_AUTOMAKE(prog, 1.0) – определение имени и версии проекта
AC_PROG_CC – проверка наличия С компилятора
AC_PROG_CXX – проверка наличия С++ компилятора
AC_OUTPUT([file ... [, extra-cmds [, init-cmds] ] ]) – создаёт выходные файлы <file> типа Makefile (копирует входной file.in и подставляет значения переменных).

extra-cmds – дополнительные команды с их инициализацией в init-cmds
AC_OUTPUT_COMMANDS(extra-cmds [, init-cmds] ]) – дополнительные команды с их инициализацией в init-cmds. Выполняются в конце config.status

6.8 Сonfigure
--bindir – директория для исполняемых файлов
--build – платформа сборки
--cache-file – файл для помещения результатов проверок
--datadir – директория для хранения файлов данных
--enable-...(-disable-...) – включить(выключить) возможность/функцию
--exec-prefix – похож на опцию – -prefix
--help – список всех опций командной строки
--host – имя платформы домашнего(host) компьютера
--includedir – директория заголовочного файла
--infodir – директория информации типа <info>
--libdir – директория библиотек
--mandir – директория c руководствами
--no-create – не создавать конечные файлы
--norecursion – не вызывать вложенные configure
--prefix – директория корневого каталога
--sbindir – директория для системных исполняемых файлов
--silent – подавляет вывод результатов исполнения на экран
--srcdir – каталог исходных текстов
--sysconfdir – каталог данных только для чтения(/etc)
--target – имя целевой платформы
--tmpdir – каталог для хранения временных файлов Configure

6.8 RPM *.spec
Макрокоманды:
%description – Полное описание пакета.
%prep – Подготовка архива. Задаются команды для извлечения исходного текста программы и его распаковки.
%setup – Макрокоманда извлечения файлов из архива (-n – каталог приёмник).
%build – Макрокоманда компиляции (обычно задаётся make).
%files – Задаёт список файлов, входящие в состав пакета.
%config – Задаёт список файлов, которые будут помещены в каталог /etc.
%doc – Задаёт список файлов, которые будут помещены в каталог документации.
%install – Этап установки программного обеспечения. Задаются команды установки файлов.
%pre – Действия которые будут выполнены до инсталляции пакета.
%post – Действия которые будут выполнены после инсталляции пакета.
%preun – Действия которые будут выполнены перед удалением пакета.
%postun – Действия которые будут выполнены после удалением пакета.
%clean – Удаления дерева BUILD.
%changelog – Содержит log изменения spec файла.

Переменные окружения:
$RPM_BUILD_ROOT – корень исходников данного пакета.
$RPM_OPT_FLAGS – дополнительные опции переданные команде rpmbuild.
6.9 /etc/syslog.conf
[!NameProg] <facility>.[op]<level>[;<facility>.<level>] <Name file>
где:

<NameProg> – имя программы посылающей сообщения;
<facility> – категория журналирования:
auth – все что связано с авторизацией;
authpriv – тоже что и auth, но приватные данные;
console – сообщения печатаемые на системной консоли;
cron – сообщения от системного планировщика;
daemon – ловушка для сообщений от всех остальных системных демонов;
ftp – действия ftp – сервера;
kern – сообщения от ядра;
lpr – сообщение от системы печати;
mail – сообщения от почтовой системы;
mark – для помещения сообщений каждые 20 минут;
news – сообщения от сервера новостей;
ntp – сообщения от сервера точного времени;
security – сообщения от различных служб безопасности;
syslog – от самой системы журналированния;
user – сообщения от пользовательских программ без указания категории;
uucp – сообщение от UUCP;
local[n] – зарезервированные категории для администратора системы (n=0..7)
<level> – Уровень детализации:

emerg – паника;
alert – опасность;
crit – критично;
err – ошибки;
warning – предупреждения;
notice – замечания;
info – общая информация;
debug – отладка;
none – ничего не записывать.
<op> – Метод журналирования. При отсутствие выводит сообщения указанного и более высокого уровня:

= – указанного уровня;
< – меньше указанного уровня;
> – больше указанного уровня;
<Name file> – Имя файла для лога. Может также быть указателем на другую машину (@server.org) для журналирования на ней. А также передавать сообщения через канал другому приложению (|/usr/bin/messcheck.pl).
6.10 /etc/modules.conf
alias [class] [module] – определяет модуль/драйвер, как определенный класс устройств
alias [class] off – обозначает, что этому классу не соответствует ни одно устройство
options [класс или модуль] [знач1] [знач2] – определяет дополнительные параметры модуля
pre-install [класс или модуль] command – выполняет программу <command> перед инсталляцией модуля
post-install [класс или модуль] command – выполняет программу <command> после инсталляции модуля
pre-remove [класс или модуль] command – выполняет программу <command> перед удалением модуля
post-remove [класс или модуль] command – выполняет программу <command> после удаления модуля

6.11 Поточный редактор “sed” и команды в редакторе VI


Пример выделение частоты процессора:

cat -n «/proc/cpuinfo | sed -n «/cpu MHz[^ ]*[ ]*\([^ ]*\).*/s\1/p»//


Запросы:
a – вставить текст после текущей строки
c – заменить указанные строки
d – исключить текущую строку
e – открыть для редактирования указанный файл с проверкой старого
E – начать редактирование файла без проверки
f – напечатать имя редактируемого файла
g – применить указанный запрос ко всем строкам
i – вставить текст перед текущей строкой
j – объединить строки
k – поменять строки
l – напечатать строку
m – переставить группу строк в другое место
n – напечатать строки вместе с их номерами
p – напечатать строки
q – выйти из редактора с проверкой сохранения текущего файла
Q – выйти без проверки
r – считать файл в буфер
s – заменить текст в пределах строки
t – скопировать группу строк
u – аннулировать результат последней замены s
v – применить указанный запрос ко всем строкам не содержащим заданный образец
w – записать группу строк в файл
W – дозаписать группу строк в конец файла
= – напечатать номер строки
! – выполнить системную команду
+ – шаг вперёд на одну строку
- – шаг назад на одну строку



Выражения:
. – любая литера, кроме новой строки
[s] – любая литера из цепочки s
[^s] – любая литера не входящая в цепочку s
e* – все соседние вхождения;
\(e\) – выделить подвыражение, на подвыражение можно ссылаться используя \n
\n – n-е выделенное подвыражение
^ – начало строки
$ – конец строки
\с – экранировать специальный символ



Адреса:
. – текущая строка
n – n-я строка
$ – последняя строка редактируемого текста
'x – строка, помеченная меткой x
/e/ – ближайшая следующая строка, содержащая e
?e? – ближайшая предыдущая строка, содержащая e

6.12 Поточный редактор AWK
Формат записи: awk '{print $2,$1}'



print $1,$3 – печатает указанные поля, разделённые пробелом, для всех строк
printf "%s/*\n", $2 – печать форматированных данных

6.13 Параметры ядра
root=/dev/hda – расположение корневого раздела
ro, rw – режим монтирования – только для чтения или полный
hdd=ide-scsi – на каком ide диске эмулировать scsi
init=/bin/bash – программа инициализации, выполняется сразу после загрузки ядра
syngle – загрузится в одиночном режиме
1,3,5 – режим загрузки INIT:

1 – однопользовательский;
3 – многопользовательский без GUI;
5 – многопользовательский c GUI.
6.14 CVS
Репозиторий CVS хранит полные копии всех файлов и каталогов, находящихся под контролем версий.


$ export CVSROOT=/home/Roman/progects/CVS_R # Указание на каталог, где находится репозиторий CVS.
$ export CVSROOT=:pserver:user@serv.comp.org:/CVS_R # Указание на удалённый репозиторий.
$ cvs -d /usr/local/cvsroot init # Создание пустого репозитория.
$ cvs -d:pserver:user@serv.comp.org:/usr/local/cvsroot init # Создание пустого репозитория на удалённом сервере.
$ cvs import MyProg MyName start # Импортирует проект MyProg от имени создателя MyName в CVS.
$ cvs -z 3 co tc # Экспорт проекта tc для работы над ним. В результате чего будет создан каталог `tc', в который будут помещены все файлы.
$ cvs co -r revise Prog # Загрузить дерева проекта с ревизией(тегом) <revise>.
$ cvs up # Синхронизация исходных текстов со всеми изменениями (выполнять перед фиксацией своих изменений).
$ cvs up -r revise # Привести содержимое дерева в соответствии с ревизией <revise>.
$ cvs ci backend.c -r revise # Зафиксировать изменения в backend.c и запускает редактор (ENV: CVSEDITOR), чтобы ввести журнальную запись об изменениях.
$ cvs ci -r revise # Зафиксировать изменения в дереве под ревизией <revise> для всего дерева.
$ cvs tag revise # Привести вершину дерева к <revise>.
$ cvs release -d tc # Выполняет удаления вашей копии проекта и при этом проверяет, что все ваши изменения были зафиксированы.
$ cvs log file.cc # Вывести лог изменений в файле file.cc.
$ cvs diff driver.c # Вывести описание изменений внесенных в файл `driver.c'.
$ cvs add readmi.cc # Внесение файла readmi.cc под контроль CVS.
$ cvs rm readmi.cc # Сообщение CVS о том что файл readmi.cc должен быть удалён из репозитория при следуйщей команде <ci>.


7 Права доступа
Read ( r ) – [Владелец | группа | другие ] могут:

файл – читать файл
каталог – читать содержимое каталога
Write ( w ) – [Владелец | группа | другие ] могут:

файл – модифицировать файл
каталог – создавать/удалять файлы и каталоги в данном каталоге
Execute( x ) – [Владелец | группа | другие ] могут:

файл – запускать файл
каталог – делать каталог текущим и запускать в нем запускаемые файлы
Setuid ( s ):

файл – файл запускается от имени владельца файла
каталог – не имеет смысла
Setgid ( s ):

файл – файл запускается от имени группы файла
каталог – файлы и каталоги создаваемые в этом каталоге будут иметь туже группу-владельца что и сам этот каталог. Кроме того, у создаваемых директорий тоже будет установлен этот бит.
Sticky ( t ):

файл – указывает системе на необходимость сохранять образ этого файла на swap-устройстве, что позволяет быстро его запускать
каталог – файлы в этом каталоге могут стирать только их владельцы