- Автор: Роман Савоченко
- Засновано: 2002
- Початково створено ():
LaTeX (Вихідні, PDF), стара Wiki
Contents
- 1 Конфігураційні та інформаційні файли і каталоги
- 2 Утиліти
- 3 Процедури
- 3.1 USB-від'єднувані носії
- 3.2 Використання OpenSSL
- 3.3 Налаштування ssh
- 3.4 Формування альтернатив — можливості перемикання версій програм, на прикладі GCC
- 3.5 Створення, використання та обслуговування програмного RAID — ДЗЕРКАЛА
- 3.6 Адміністрування віртуальних серверів (VPS) на основі технології OpenVZ
- 3.7 Система контролю версій CVS
- 3.8 Система контролю версій Subversion (SVN)
- 3.9 Система контролю версій GIT
- 3.10 Приготування та компіляція проєктів на основі AutoTools
- 4 Формати основних конфігураційних файлів та сценарії-скрипти
- 4.1 BASH
- 4.1.1 Основні елементи граматики команд та визначень
- 4.1.2 Службові змінні
- 4.1.3 Підстановки
- 4.1.4 Змінні оточення та оболонки
- 4.1.5 Оператори
- 4.1.6 Вбудовані та основні команди
- 4.1.7 Опції перевірки команди test
- 4.1.8 Прості цілочисельні операції у формі $[100/3], $((100/3))
- 4.1.9 Переспрямування виводу
- 4.1.10 Спеціальні символи — екранування
- 4.1.11 Маски-шаблони
- 4.1.12 Представлення числових значень
- 4.1.13 Корисні обороти
- 4.1 BASH
1 Конфігураційні та інформаційні файли і каталоги
1.1 Загальносистемні
- /dev/ — містить спеціальні файли пристроїв:
- pts/ — файли пристроїв відкритих псевдотерміналів.
- pts/ — файли пристроїв відкритих псевдотерміналів.
- /etc/ — основний каталог конфігураційних файлів:
- anacrontab — конфігурація завдань виконуваних anacron;
- crontab, cron.d/ — конфігурація та тека окремих файлів конфігурації завдань планового виконання cron;
- cron.daily/ — тека окремих файлів конфігурації завдань щоденного виконання cron;
- cron.hourly/ — тека окремих файлів конфігурації завдань щогодинного виконання cron;
- cron.monthly/ — тека окремих файлів конфігурації завдань щомісячного виконання cron;
- cron.weekly/ — тека окремих файлів конфігурації завдань щотижневого виконання cron;
- fstab — конфігурація файлових систем(ФС) автоматичного монтування при завантажені;
- group — системні групи користувачів;
- "dialout" — для доступу до послідовних пристроїв на кшталт /dev/ttyUSB0;
- "sudo" — для доступу користувачів до ROOT-привілеїв через sudo.
- hostname — поточна назва машини, може перевизначатися у /etc/hosts через зворотне вирішення внутрішньої IP адреси;
- hosts — внутрішнє-первинне вирішення іменованої мережевої адреси у IP та навпаки, може перевизначати /etc/hostname;
- inputrc — глобальна конфігурація libreadline, зокрема тут можна вимкнути консольний сигнал-дзвінок (BEEP) за допомогою "set bell-style none";
- issue — повідомлення видаване перед локальною реєстрацією;
- issue.net — повідомлення видаване перед мережевою реєстрацією;
- logrotate.conf, logrotate.d/ — конфігурація та тека окремих конфігураційних файлів демону автоматичної ротації (пакування, видалення) логів;
- ld.so.conf — конфігурація динамічного лінкувальника поділюваних бібліотек;
- motd — повідомлення, видаване після вдалої реєстрації;
- mtab — актуальна інформація щодо змонтованих ФС, зазвичай посилання на /proc/self/mounts;
- nologin — наявність цього файлу забороняє користувачам входити до системи із видачею повідомлення у цьому файлі;
- nsswitch.conf — конфігурація послідовності пошуку імен за різними джерелами, саме тут визначається первинність /etc/hosts;
- pam.conf, pam.d/ — конфігурація та тека окремих конфігураційних файлів змінних модулів розпізнавання (PAM):
- password — системні користувачі;
- profile, profile.d — конфігурація та тека окремих конфігураційних файлів профілю системи для BASH, (виконується після реєстрації;
- rc.d/, rcN.d/ — загальна тека та теки за рівнями N до системи ініціалізації-запуску init або нових замість неї, часто містить посилання на відповідні сценарії запуску у /etc/init.d;
- init.d/ — містить сценарії керування сервісами;
- security/ — містить файли опису безпеки системи:
- limits.conf — конфігурація лімітів користувачів.
- sysctl.conf — містить команди для автоматичної ініціалізації системних параметрів ядра;
- shadow — містить закодовані паролі користувачів;
- skel/ — шаблон каталогу користувача, вміст копіюється звідси до теки новоствореного користувача;
- sudoers, sudoers.d — конфігурація та тека окремих конфігураційних файлів системного доступу з привілеями суперкористувача (root) за допомогою sudo.
- /proc/ — віртуальна ФС віддзеркалення параметрів ядра:
- sys/ — містить файли із параметрами системи, більша частина допускає модифікацію:
- kernel/ — містить файли параметрів ядра:
- hostname — ім'я хосту-системи;
- osrelease — версія ядра системи;
- ostype — тип ОС (Linux, *BSD, ...);
- panic — ознака паніки ядра;
- version — дата складання ядра.
- fs/ — мітить файли параметрів ФС:
- file-max — максимальна кількість відкривуваних файлів.
- kernel/ — містить файли параметрів ядра:
- devices — типи пристроїв у системі;
- modules — модулі підключені до ядра;
- cpuinfo — інформація о процесорах системи.
- sys/ — містить файли із параметрами системи, більша частина допускає модифікацію:
- /home/user/ — домашній каталог користувача user.
1.2 Мережа
- /etc/ — основний каталог конфігураційних файлів:
- NetworkManager/ — конфігурація Менеджеру Мережі;
- system-connections/ — тека із конфігурацією загальних підключень;
- NetworkManager.conf — загальна конфігурація сервісу.
- dhcpcd.conf — конфігурація сервісу DHCPD, який у простих системах часто бере на себе всі мережеві підключення;
- network/ [DEBIAN] — конфігурація мережі, базовий сервіс, який зараз часто замінюється NetworkManager і dhcpd;
- interfaces — безпосередньо містить опис інтерфейсів.
- ssh/ — загальна конфігурація SSH клієнту та серверу:
- ssh_config — загальна конфігурація клієнту:
- NetworkManager/ — конфігурація Менеджеру Мережі;
PubkeyAcceptedAlgorithms +ssh-rsa # доповнення алгоритмів, які приймаються для публічного ключа.
- /home/user/.ssh — налаштування SSH для користувача user:
- id_rsa, id_dsa, id_ecdsa — приватний RSA, DSA, ECDSA ключ клієнта;
- id_rsa.pub, id_dsa.pub, id_ecdsa.pub — публічний RSA, DSA, ECDSA ключ клієнта;
- known_hosts — перелік відомих хостів за якими здійснювалося SSH підключення, наповнюється автоматично;
- authorized_keys — публічні ключі клієнтів, яким дозволено підключатися до цього хосту і за цим користувачем, фактично копія файлу на кшталт id_rsa.pub;
- config — конфігурація користувача на кшталт специфіки підключення до окремих хостів і автентифікації.
# Обов'язкове для функціювання SFTP у MC
Host home
User roman
IdentityFile ~/.ssh/id_rsa
2 Утиліти
2.1 Основні користувацькі
- apropos — пошук сторінки посібника (man) за ключовим словом;
- awk — оперування файлами даних, вибірка і обробка тексту;
- bg, fg — оперування із багатьма завданнями у терміналі:
- Ctrl+Z — зупинка і переведення завдання на задній план;
- fg — повернення із заднього плану;
- jobs -l — перелік завдань у фоні.
- cal — календар;
- cat, zcat — видання вказаного файлу у STDOUT;
- cd — зміна теки;
- cksum — підрахунок контрольної суми і кількості байтів файлу;
- clear — очищення екрану терміналу;
- cmp — побайтове порівняння файлів;
- comm — порядкове порівняння файлів;
- cp — копіювання файлів і тек;
- cpio — копіювання файлів до архіву та із архіву;
- cut — вирізання із вхідного файлу стовпців, рядків і фракцій за роздільником;
- date — відображення поточної дати у необхідному форматі або її встановлення;
- date 10031545 — встановлення дати у 03.10 15:45.
- dd — перетворення, створення, копіювання та інші маніпуляції із файлами у двійковому вигляді:
- dd if=/dev/zero of=/swap bs=1024 count=8208 — створення порожнього файлу "swap" розміром 8МБ
- dd if=/dev/fd0 of=boot.img bs=18k — створення штампу із дискети
- dd if=/dev/sdb of=sys.img bs=1M oflag=direct,sync status=progress — копіювання образу диску із відображенням прогресу
- ddrescue — утиліта наполегливого читання носіїв, що містять помилки;
- echo — здійснення луни-повторення рядка у терміналі;
- exit — завершення процесу із вказаним кодом повернення;
- file — визначення типу файлу - містить інформацію про багато відомих файлів;
- find — пошук:
- -type <c> — тип файлів виведення c [d,f,...];
- -name <patern> — ім'я файлу пошуку за шаблоном patern;
- -regex <pattern> — ім'я файлу пошуку за регулярним виразом patern;
- -size <n>[cwbkMG] — розмір файлу пошуку менше n якщо негативне або більше n.
- gpg — утиліта шифрування і підписування електронним підписом;
- grep — пошук вказаного рядка у визначених файлах або потоках;
- grep 'str' mifile.txt
- gzexe — стиснення у виконавчий модуль із розпакуванням при запуску;
- gzip — компресія і декомпресія файлів:
- Опції:
- -<n> — здійснити компресію із рівнем <n>=(1..9);
- -d — декомпресія.
- Приклади:
- gzip < /dev/cdrom > cdrom.iso.gz — читання і компресія штампу КД;
- head, tail — показує заголовок/початок або хвіст/кінець вказаного файлу;
- hexdump — друк вхідного потоку у вказаному форматі (DEC,HEX,OCT,ASCII);
- history — відображення нумерованого переліку історії команд;
- ipcs — відображення ресурсів IPC (між-процесна комунікація);
- ipcrm — видалення ресурсів IPC;
- kill, skill, killall — надсилання сигналу процесу — за PID, за шаблоном назви;
- let, bc, expr — виконання арифметичних, логічних і інших дій над числовими значеннями у змінних оточення;
- ln — створення та обслуговування жорстких і символічних посилань;
- locate — швидкий пошук файлів у системі за іменем по mlocate базі;
- ls — перелічення файлів/тек у теці;
- md5sum — підрахунок MD5-суми;
- mkfifo — створення іменованих каналів;
- mknod — створення спеціальних файлів;
- more, less, zless — перегляд файлу або виводу посторінково, для зазіпованих із gzip;
- nice, snice, renice — запуск команди з відмінним значенням поступливості у межах [-20...19], встановлення вказаним програмам, встановлення поточній;
- nohup — запуск команди із відв'язуванням від поточного терміналу;
- pidof — відображення PID виконуваної програми;
- pr — форматування текстового файлу до друку;
- printenv, env — відображення змінних оточення, відображення і встановлення;
- ps, pstree — відображення виконуваних процесів системи — списком, деревом;
- rm — видалення файлів і тек;
- scp — безпечне копіювання файлів і тек через OpenSSH;
- scp file.txt user1@remote_server:/ — копіювання файлу на віддалену систему.
- screen — консольний екранний менеджер, що дозволяє відкривати команди у новому вікні того-ж терміналу із можливістю:
- Ctrl+A — перемикання;
- Ctrl+A,D — тимчасове відключення;
- screen -R — відновлення останнього сеансу за можливості або створення нового;
- screen -r <sess> — відновлення сеансу sess;
- screen -x — підключення до невід'єднаного сеансу (Багатоекранний Режим).
- sed — потоковий редактор;
- sleep — приспання поточного процесу на визначену кількість секунд;
- sort — сортування даних у файлі/потоці;
- split/csplit — розбиття/складання великих файлів на/з шматки;
- stat — інформація про файл/теку на ФС;
- strings — виведення символьних повідомлень з не текстового файлу;
- sum — розрахунок контрольної суми;
- tar — утиліта оперування із архівами і пакетами відомими як TAR-пакети, які можуть стискатися різними компресорами;
- -v — багатослівність, відображати перелік оброблених файлів;
- -с — створити новий архів;
- -x — розпакувати архів;
- -f <file> — упакувати до вказаного файлу file;
- -z — здійснити стискання отриманого пакету за допомогою gzip, розширення "*.tar.gz";
- -j — здійснити стискання отриманого пакету за допомогою bzip2;
- -J — здійснити стискання отриманого пакету за допомогою xz, розширення "*.tar.xz";
- -I<compr> — здійснити стискання отриманого пакету за допомогою програми стискання compr;
- -t — перегляд вмісту архіву.
- test — перевірка значень, файлів та інших умов, деталі у розділі BASH;
- tee — читання зі стандартного входу та запис до стандартного виходу і у файл;
- touch — оновлення/встановлення позначки часу файлу або створення порожнього за відсутності;
- time — визначення часу і ресурсів виконання команди;
- tr — трансляція символів, перетворення/заміна одних іншими;
- tree — відображення дерева каталогу, з відступами і кольором;
- vi, vim — потужний текстовий редактор з оригінальним керуванням;
- vimdiff — перегляд порівнюваних файлів у vim;
- wc — підрахунок у файлі кількості рядків, символів, слів і інше;
- which, whereis — відображення повного шляху до програми, що шукається;
2.2 Базове адміністрування
- adduser, useradd — додання користувача до системи;
- apt, apt-get [DEBIAN|...] — утиліта менеджеру APT із керування DEB-пакетами (є варіанти із RPM) за репозиторіями:
- install [<packet>...] — встановлення пакету(ів) з віддаленого репозиторію(їв);
- -f — перевірка-оновлення залежностей щодо останнього встановлення.
- reinstall [<packet>...] — перевстановлення пакету(ів) з віддаленого репозиторію(їв);
- remove [<packet>...] — видалення пакету(ів);
- autoremove — видалення автоматично усіх пакунки, що не використовуються;
- update — оновлення переліку пакетів за актуальними репозиторіями;
- upgrade — оновлення системи шляхом встановлення/оновлення пакетів;
- -o — параметри операції.
- "Acquire::Queue-mode=access" — завантаження пакетів по одному, тобто у черзі.
- -o — параметри операції.
- build-dep [<packet>...] — встановлення пакету(ів), що необхідні для складання вказаних пакетів packet.
- install [<packet>...] — встановлення пакету(ів) з віддаленого репозиторію(їв);
- apt-get [DEBIAN|...] — попередня утиліта менеджеру APT із керування DEB-пакетами за репозиторіями, специфічні команди:
- purge [<packet>...] — видалення пакунків разом із їхніми конфігураційними файлами;
- download <packet> — завантаження двійкового пакунку у поточну директорію;
- source <packet> — завантаження вихідних текстів пакунку у поточну директорію із розпакуванням;
- changelog <packet> — отримання і відображення журналу змін визначеного пакунку;
- dist-upgrade — оновлення всієї системи;
- clean — видалення завантажених архівів-пакунків;
- autoclean — видалення старих завантажених архівів-пакунків;
- check — перевірка наявності порушених залежностей.
- apt-cache [DEBIAN|...] — утиліта менеджеру APT із запиту кешу актуальних репозиторіїв пакетів:
- search <pattern> — пошук пакунків із назвою, що задовольняє регулярному виразу;
- depends <packet> — показати інформацію про залежності пакунку;
- rdepends <packet> — показати інформацію про зворотні залежності пакунку;
- show <packet> — показати інформацію про пакунок.
- arch — архітектура поточної системи, дивіться setarch для встановлення архітектури — запуск програми із вказаною;
- at, batch — відкладене виконання задач і пакетна обробка;
- echo 'wget url' | at 01:00 — запуск завантаження о 01:00.
- basename — виокремлення імені файлу/теки з повного шляху;
- chfn — зміна ім'я користувача і інформації про нього;
- chgrp — зміна групи користувачів файлу або каталогу;
- chkconfig [INIT] — конфігурація рівнів завантаження сервісів;
- chmod — зміна режиму доступу до файлу;
- chown — зміна власника і групи власників файлу або каталогу;
- chpasswd — проста зміна паролю із можливістю здійснення зі скрипту;
- echo username:new_password | chpasswd — зміна паролю username у new_password.
- chroot, schroot — зміна кореня поточного сеансу або виконання команди від іншого кореня, також у безпечному варіанті від звичайного користувача;
- у деяких середовищах спостерігаються проблеми при складанні у CHROOT із objcopy, що пов'язано зі змінною оточення LANG, яку необхідно видалити — unset LANG
- chvt — перемикання на вказаний термінал;
- chsh — зміна типу командного інтерпретатора;
- convmv — перекодування назв файлів/тек з одного кодування на інше, може знадобитися для перекодування файлів на ФС ext2, ext3, reisrfs;
- cron — планування періодичного запуску програм;
- crontab — формування користувацької конфігурації cron;
- df — інформація з файлових системах системи;
- dirname — виокремлення назви теки із повного шляху;
- dpkg [DEBIAN] — утиліта оперування DEB-пакетами:
- -i <packet> — встановлення пакету;
- -r <packet> — видалення пакету;
- --purge <packet> — цілковите видалення пакету разом із конфігурацією.
- dpkg-query [DEBIAN] — утиліта запиту до бази DEB-пакетів:
- -s [<packet>...] — отримання статусу пакету(ів) або усіх у базі;
- -L <packet>... — отримання переліку файлів у пакеті(ах);
- -l [<pattern>...] — отримання переліку пакетів у базі за шаблоном;
- --show [<packet>...] — отримання інформації (зазвичай версії) пакету(ів) або усіх у базі;
- -S <pattern>... — пошук пакету, якому належить файл за шаблоном.
- dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n — отримання переліку встановлений пакетів, відсортованих за розміром.
- du — отримання інформації про розмір вмісту файлу або теки;
- dumpkeys — дамп карти клавіатури;
- export [SH] — визначення змінної оточення та її експорт для загального доступу;
- export EDITOR=vim — визначення змінної оточення EDITOR у значення "vim";
- fgconsole — номер поточного терміналу;
- free — інформація щодо стану пам'яті;
- fuser — отримання переліку процесів, які використовують зазначений файл або сокет, а також закриття процесів, що займають ресурс;
- groupadd [libuser] — додання групи користувачів;
- groupdel [libuser] — видалення групи користувачів;
- iconv — перетворення вмісту текстового файлу з одного кодування у інше;
- journalctl [SYSTEMD] — отримання журналу сервісу;
- journalctl -u NetworkManager.service — журнал NetworkManager.
- id — інформація щодо користувача;
- info — отримання сторінки документації зі сторінок пов'язаної допомоги (GNU-doc);
- init [sysvinit] — утиліта початкового завантаження;
- ldconfig — активування змін у файлі /etc/ld.so.conf щодо пошуку бібліотек динамічного лікування;
- ldd — відображення динамічних бібліотек, від яких залежить вказана програма або інша динамічна бібліотека, включно із можливістю знайти ці бібліотеки;
- locale — отримання інформації щодо налаштувань локалі;
- localedef — створення нової локалі на основі базової;
- login — вхід у систему;
- logname — ім'я поточного користувача;
- logrotate — засіб ротації журналів із автоматичним пакуванням, чищенням та іншою обробкою;
- lsof — перелік відкритих у системі файлів, сокетів, каналів, поділюваних бібліотек і інше;
- -p <n> — системних ресурсів, використаних процесом n.
- man, xman — відображення сторінок посібника;
- -k <word> — пошук сторінки за ключовим словом.
- newgrp — зміна основної групи користувача або виконання команди від ім'я вказаної групи;
- mesg — управління відображенням повідомлень від інших користувачів у поточному терміналі;
- ntpdate [NTP] — синхронізація часу через Internet стрибком;
- passwd — зміна паролю користувача;
- pushd, popd — розташування або вилучення каталогу із стеку каталогів;
- pwd — отримання повної назви поточного каталогу;
- rlogin [SSH] — вхід на віддалену систему;
- rpm [REDHAT] — утиліта оперування RPM-пакетами:
- -i <packet> — встановлення пакету;
- -e <packet> — видалення пакету;
- -U <packet> — оновлення пакету;
- -V <packet> — перевірка коректності встановлення/поточного стану вказаного пакету;
- -a — виконання вказаної операції для усіх пакетів;
- -q — запит даних про пакет:
- f — пошук пакету, якому належить вказаний файл;
- i — виведення інформації про пакет;
- l — перелік файлів, що належать пакету;
- s — стан файлів пакету;
- d — перелік файлів документації пакету;
- c — перелік конфігураційних файлів пакету;
- p — виконання операції над ще невстановленим пакетом.
- service [LSB] — оперування сервісами у /etc/rc.d/init.d;
- service smb start — запуск сервісу Samba;
- set, unset [SH] — встановлення або очищення змінної оточення;
- setarch — зміна заявленої архітектури нового середовища програми;
- setfont — встановлення консольного екранного шрифту;
- setsid — запуск програми у новому сеансі;
- sftp [SSH] — безпечний FTP клієнт;
- -i — файл ідентифікації для авторизації без паролю, фактично є приватним ключем на кшталт id_rsa якщо типовий не підходить.
- slogin [SSH] — вхід до системи за шифрованим протоколом SSH (те саме, що і SSH);
- ssh — вхід до системи за шифрованим протоколом SSH або-ж віддалений запуск команд:
- ssh -X user@remserver.org — шифрований вхід до віддаленої системи із транспортуванням X-протоколу;
- ssh user@remserver.org 'wget ftp://myfile' — запуск завантаження на віддаленому сервері;
- ssh -L [локальна_адреса:]локальний_порт:віддалена_адреса:віддалений_порт [користувач@]сервер -p портSSH — ініціювання тунелю порту.
- sshfs — Fuse модуль для монтування файлової системи через SSH.
- stty — отримання і встановлення параметрів терміналу, перевизначення спеціальних клавіш;
- su — зміна користувача поточного сеансу або виконання команди від імені вказаного користувача (по замовченню — root);
- sudo — запуск окремих програм від імені іншого користувача, яких необхідно прописати у /etc/sudoers;
- shutdown — вимкнення системи;
- systemctl [SYSTEMD] — управління сервісами;
- start <service> — запуск;
- stop <service> — зупинка;
- restart <service> — перезапуск;
- reload <service> — перевантаження;
- enable <service> — увімкнення;
- disable <service> — вимкнення.
- talk — двостороння розмова із іншим користувачем;
- tload — інформація щодо завантаження системи;
- top, htop — виведення інформації про процеси із сортуванням за часом;
- tput — управління терміналом;
- tset, reset — ініціалізація терміналу на curses;
- tty — назва поточного псевдотерміналу;
- ulimit — управління обмеженнями користувачів.
- umask — визначення маски прав для створення нових файлів;
- uname — інформація про поточну OС;
- uptime — час безперервного функціювання системи;
- users — перелік користувачів у системі;
- vmstat — інформація щодо використання віртуальної пам'яті;
- w — інформація щодо активності поточного користувача;
- wall — передавання широковіщального повідомлення — усім користувачам системи;
- watch — періодичний запуск вказаної програми;
- who, finger — інформація щодо користувачів системи;
- whoami — ім'я поточного користувача;
- write — написання повідомлення вказаному користувачу.
2.3 Файлова система
- cdrecord — запис CD дисків;
- cdrecord -v speed=2 dev=0,6,0 -data my.img
- cfdisk — конфігурація розділів диску;
- edquota [QUOTA] — редагування квот файлової системи;
- fdformat [fdtools] — низькорівневе форматування дискети;
- fdisk — операції із розділами диску;
- fsck -t {type}, fsck.{type} — перевірка файлової системи визначеного типу type;
- fsck.vfat /dev/fd0 — перевірка файлової системи FAT12 на гнучкому диску.
- gnome-disks [GNOME] — графічна програма для оперування дисками, включно зі зміною розділів, отриманням SMART і перевіркою швидкості;
- hdparm — встановлення параметрів дискової підсистеми;
- losetup — створення петльового пристрою (loop) із криптуванням;
- losetup -k 192 -e aes /dev/loop4 /tmp/file.iso — створення дискового пристрою loop4 на file.iso із криптуванням.
- losetup -k 192 -e aes /dev/loop4 /tmp/file.iso — створення дискового пристрою loop4 на file.iso із криптуванням.
- mkfs -t {type}, mkfs.{type} — створення ФС визначеного типу type на фізичний розділ або файл;
- mkfs.vfat /dev/fd0 — створення файлової системи FAT12 на гнучкому диску.
- mkisofs — створення ISO-штампу із каталогу;
- mkisofs -r -o my.iso /usr/games
- mount, umount — монтування-підключення/демонтування-відключення файлових систем;
- -o {opt1}[,{opt2}[,{optN}]] — параметри монтування:
- "quiet" — мовчазне копіювання/перенесення файлів без питань щодо неможливості зміни прав доступу (для ФС на кшталт FAT);
- "iocharset={code}" — кодування здійснення введення/виведення (для ФС FAT, NTFS і UDF);
- "codepage={code}" — кодова сторінка збереження назв файлової системи (для ФС FAT);
- "showexec" — коректно відображати виконувальні файли (для ФС FAT);
- "rw" — монтування у режимі читання-запис;
- "ro" — монтування у режимі лише читання.
- mount -t smbfs -o username=tridge,password=foobat //c/data/test — монтування мережевого диску //c на теку /data/test;
- mount -t ext2 /dev/fd0 /mnt — монтування гнучкого диску із FS "ext2" на теку /mnt;
- mount [-t auto] /dev/fd0 /mnt — монтування гнучкого диску на теку /mnt із автоматичним визначенням типу ФС;
- mount host:/mnt/export /mnt/local — монтування теки /mnt/export віддаленої машини host на локальну теку /mnt/local;
- mount -t iso9660 -o ro,loop=/dev/loop0 /my.iso /mnt/cdrom2 — створення loop-пристрою зі штампу CDROM;
- mount -t cdfs /dev/cdrom /mnt/cdrom — перегляд/редагування CD-диску як є, із сесіями;
- mount --bind /home /var/local — підключення каталог /home до іншого каталогу /var/local.
- -o {opt1}[,{opt2}[,{optN}]] — параметри монтування:
- parted, gparted [GNOME] — потужний менеджер дискових розділів;
- quota [QUOTA] — менеджер обмежень-квот ФС;
- quotaon, quotaoff [QUOTA] — увімкнення/вимкнення обмежень-квот ФС;
- quotacheck [QUOTA] — перевірка обмежень-квот ФС;
- quotastats [QUOTA] — стан обмежень-квот ФС;
- tune2fs — зміна параметрів ФС ext2/3/4;
- resize2fs — зміна розміру файлової системи ext2/3/4 на розділі.
- swapon, swapoff — увімкнення/вимкнення розділу підкачування пам'яті;
- sync — скидання буферів на диск.
2.4 Залізо
- badblocks — перевірка твердотілих носіїв (HDD, FDD) на погані блоки;
- -w — перевіряти запис;
- -s — показувати прогрес.
- dmesg — журнал ядра Linux із повідомленнями виявлення обладнання як під час завантаження, так і у процесі функціювання;
- dmidecode — декодування інформації BIOS щодо обладнання системи і самої BIOS;
- hwclock — відображення/встановлення апаратного годинника (CMOS);
- kbd_mode — встановлення режиму функціювання клавіатури (RAW, MEDIUMRAW, XLATE, UNICODE);
- lpr — BSD lpr/lpd система лінійного виводу на друкарку з буферизуванням;
- lpr -P lp1 my.txt — друк файлу my.txt на принтер lp1.
- lscpu — перелік та інформація про процесори у системі;
- lshw — збір інформації щодо обладнання системи;
- lspci — перелік пристроїв на PCI шині;
- lsusb — перелік пристроїв на USB шині;
- mbw — вимірювання продуктивності пам'яті декількома методами;
- mbw -b 1048576 2048 — перевірка продуктивності пам'яті методами MEMCPY, DUMB, MCBLOCK для обсягу у 2048 MiB і розміру блоку 1048576 B.
- memtest [BOOT] — тестування пам'яті із отриманням інформації про неї та із певним вимірюванням продуктивності, запускається із завантажувача;
- pbm{format} — перетворення із графічного формату *.pdm у формат принтеру format;
- setleds — встановлення світлодіодів на клавіатурі;
- setserial — контроль конфігурації послідовних портів;
- setserial -g /dev/ttyS[0123] — отримання налаштувань COM-портів із 1 по 4.
- setterm — встановлення параметрів терміналу;
- showkey — відображення сканкодів клавіш і кодів системної карти;
- smartctl — контроль SMART дискових носіїв;
- -A {dev} — показати коротку інформацію по пристрою dev;
- -a {dev} — показати повну інформацію по пристрою dev;
- --test={name} — запустити самотестування name (offline, short, long, ...) по пристрою dev.
- statserial — контроль стану статусних ліній модему послідовного порту;
- sysbench — програма із набором тестів продуктивності компонентів системи;
- sysbench --test=memory --memory-total-size=4G --memory-block-size=1M run — перевірка продуктивності пам'яті обсягом 4 GiB та блоком у 1 MiB.
- usbview — огляд і конфігурація USB-пристроїв.
2.5 Графіка
- appres [X11] — отримання інформації щодо ресурсів X-додатків;
- fc-match [FontConfig] — отримання інформації щодо використаного шрифту (файлу) для вказаного шаблону шрифту;
- fc-match Arial — отримання шрифту, використовуваного для "Arial".
- glxgears [GLX] — поверхневе тестування GLX (OpenGL) та визначення загальної його працездатності;
- glxinfo [GLX] — отримання інформації щодо розширення GLX (OpenGL);
- listres [X11] — перелік ресурсів X-додатків;
- mogrify [ImageMagic] — перетворення графічних файлів у інший формат;
- mogrify -format jpg *.png — перетворення PNG у JPEG.
- plymouth-set-default-theme [PLYMOUTH] — оперування темами графічної заставки запуску, яка передує безпосередньо графічному інтерфейсу;
- plymouth-set-default-theme --list — отримання переліку наявних тем;
- plymouth-set-default-theme lines --rebuild-initrd — встановлення теми "lines" із перескладанням образу попереднього ініціалізації системи.
- showrgb — найменування і значення стандартних кольорів;
- startx [X11] — скрипт запуску X-серверу;
- startx -- :2 — запуск ще одного екземпляру X під номером 2;
- startx -- -depth 24 — запуск X-серверу із глибиною кольору 24 біти.
- x11vnc — запуск VNC-серверу до графічного сеансу користувача, і що корисно при віддаленому SSH підключені для графічного підключення до стільниці;
- x11vnc -display :0 — запуск VNC до дисплею ":0", який є типовим на системах із одним сеансом X11.
- xdpyinfo [X11] — інформація щодо дисплею, зокрема і DPY;
- xev [X11] — перегляд інформації щодо подій у вікні;
- xfontsel [X11] — вибір шрифтів для X-серверу;
- xhost [X11] — управління доступом віддалених хостів до X-серверу;
- xinit [X11] — утиліта запуску X із вказаним додатком, по замовченню — xterm;
- xinit /usr/bin/icewm -- :1 — запуск разом із ICEWM.
- xkill [X11] — завершення віконного додатку;
- xlsfonts [X11] — перелік шрифтів X-серверу;
- xmag [X11] — збільшення частини екрану;
- xprintidle [X11] — друк часу неактивності графічного інтерфейсу у мілісекундах;
- Деякі програми можуть цей час умисно скидати для запобігання блокування екрану, а деякі можуть це здійснювати за помилкою, забуваючи припинити, як то: Chromium (MS Teams, ...).
- xprop [X11] — виведення властивостей обраного вікна;
- xrefresh [X11] — оновлення-перемалювання екрану;
- xset [X11] — встановлення параметрів X-серверу;
- xvidtune [X11] — налаштування параметрів монітору як то частоти кадрів та рядків;
- xvinfo [X11] — інформація з розширення XV;
- xwininfo [X11] — інформація щодо вказаного вікна;
- xwd [X11] — захоплення зображення на екрані.
2.6 Мультимедіа
- alsamixer [ALSA] — мікшер звукової підсистеми ALSA;
- aumix — простий консольний AUDIO-мікшер;
- cdparanoia — вичитування Audio-CD;
- lame — бібліотека та утиліта кодування MP3;
- mencoder [MPlayer] — утиліта перекодування відеофайлів між різними форматами;
- mencoder dvd://1 -oac mp3lame -ovc xvid -xvidencopts bitrate=800 -o 1.avi — перекодування першої доріжки DVD-диску із бітрейтом 800, аудіокодеком mp3lame і відеокодеком xvid.
- oggenc — бібліотека та утиліта кодування OGG;
- play [SOX] — програвання звукових файлів з консолі;
- rec [SOX] — запис звуку до файлу;
- yt-dlp — завантаження відео-потоків зі стріменгових ресурсів.
- yt-dlp https://stream.url -o "%(id)s.%(ext)s" — вивантаження потоку у файл із назвою за шаблоном.
2.7 Мережа
- arp — оперування системним ARP-кешем (апаратними адресами);
- bluetoothctl — контроль мережі BlueTooth;
- scan [on|off] — увімкнути сканування мережі;
- pair <addr> — спарувати пристрій із адресою addr;
- trust <addr> — позначити пристрій із адресою addr довіреним.
- curl — потужний інструмент обміну файлами у мережі, а також формування довільних запитів;
- curl -T ./loc.file -u {user}:{passw} ftp://dest.org — вивантаження локального файлу "loc.file" на FTP-сервер "dest.org" за визначеними даними автентифікації "{user}:{passw}".
- ethtool [OLD] — отримання статусу мережевого інтерфейсу щодо підключення і його режиму, замінено mii-tool;
- ettercap — cніфер-нюхач мережі;
- iptraf — потужний і зручний сканер мережі;
- ifconfig — системна утиліта конфігурування мережевих інтерфейсів (eth0, ppp0, ...);
- down <if> — вимкнути інтерфейс if;
- up <if> — увімкнути інтерфейс if;
- inet <ip> — інтерфейс із ip адресою;
- hw ether <mac> — встановити MAC-адресу інтерфейсу.
- iftop — контроль загального трафіку за інтерфейсом(и);
- ip — основна утиліта конфігурування маршрутизації, із IPROUTE2;
- link — фізичні інтерфейси;
- address — адреси та їх асоціації із фізичними інтерфейсами;
- route — маршрутизація інтерфейсів.
- iwconfig — конфігурування та контроль бездротових мережевих інтерфейсів;
- power [on|off] — увімкнення або вимкнення керування живленням інтерфейсу.
- iptables — утиліта конфігурування FIREWALL на основі IP-таблиць;
- lynx — класичний неграфічний (текстовий) вебоглядач;
- lynx -dump -width=100 file://mypage.html > mypage.txt — перетворення html-сторінки у текст.
- mii-tool — отримання статусу мережевого інтерфейсу щодо підключення і його режиму;
- minicom, cutecom — програма оперування послідовними інтерфейсами і модемами;
- netstat — отримання стану мережі, відображає використані сокети і їх стан;
- -a — виведення усіх сокетів;
- -e — відображення користувача, що працює із сокетом на цей час.
- nmap — сканер мережі, яким можна отримати перелік відкритих портів та інше;
- nmcli [NetworkManager] — консольна утиліта керування підключеннями Менеджеру Мережі;
- nmcli connection import type openvpn file mycon.ovpn — імпорт файлу конфігурації OpenVPN mycon.ovpn.
- ping — перевірка зв'язку із віддаленим вузлом шляхом надсилання службових тестових повідомлень;
- puttygen [Putty] — утиліта перетворення сертифікатів Putty (файли *.ppk) у формат OpenSSH;
- puttygen my.ppk -O private-openssh -o my.key — вилучення приватного сертифікату;
- puttygen my.ppk -O public-openssh -o my.pub — вилучення публічного сертифікату.
- rfcomm — менеджер послідовних підключень через Bluetooth;
- rfcomm bind 0 40:2B:6D:EF:48:A7 — зв'язування пристрою 40:2B:6D:EF:48:A7 із послідовним портом /dev/rfcomm0.
- route — класична утиліта управління таблицею маршрутизації;
- delete <route> — видалення маршруту route;
- add <route> ... — додання маршруту route.
- rsync — утиліта оперування протоколом "rsinc" для синхронізації у мережі;
- rsync -va --partial --stats --delete-after -e ssh ./ devel:/incoming/backports/2.4/ — надсилання пакетів до репозиторію ALTLinux Sisyphus шляхом синхронізації локального каталогу із віддаленим сервером.
- smbclient [SMB/CIFS] — утиліта організації клієнтських запитів до SMB-серверу;
- traceroute — перевірка проходження мережевих пакетів через сервери у мережі;
- tcpdump — дамп TCP протоколу для відстеження різних запитів;
- tcpdump -i br0 -s 65535 -w traf.log 'host 192.168.1.1' — запис трафіку за хостом 192.168.1.1 на інтерфейсі "br0" у файл "traf.log", який можна переглянути WireShark;
- tcpdump -i br0 -s 65535 -w traf.log 'tcp port 80' — запис TCP-трафіку за портом 80 на інтерфейсі "br0" у файл "traf.log", який можна переглянути WireShark.
- telnet — утиліта-сервіс контролю хостів в мережі через отримання віддаленого терміналу;
- wget — потужна утиліта завантаження файлів з мережі за різноманітними протоколами, як то HTTP, HTTPS, FTP.
- -P <dir> — тека цільового завантаження.
2.8 Пошта
- mail, mailx — створити повідомлення;
- mailq [POSTFIX] — показати чергу повідомлень відправлення;
- mutt — консольний поштовий клієнт;
- procmail — інструмент обробки поштових повідомлень;
- sendmail [POSTFIX] — надсилання поштових повідомлень і управління сервером вихідної пошти.
- -q{time} — опрацювати повідомлення у черзі;
- -v — режим друку супровідних повідомлень.
2.9 Ядро Linux
- depmod — перевірка залежностей модулів, яка здійснюється при додаванні нових модулів;
- -a — перевірка модулів по всій структурі "/lib/modules" та внесення відповідних змін;
- installkernel — сценарій встановлення ядра, який використовується після компіляції ядра за make install;
- lsmod — отримання переліку завантажених і функціонуючих модулів із залежностями;
- insmod, rmmod — підключення/відключення модуля до ядра;
- modinfo — отримання інформації щодо модуля і його параметрах;
- modprobe — управління модулями ядра, без параметрів підключає модуль до ядра;
- -r — вивантаження модуля.
- procinfo — отримання інформації о процесах (/proc) і системі (/sys);
- sysctl — конфігурація системних параметрів (/proc/sys/) ядра.
2.10 Розробка
- aclocal [AUTOTOOLS] — генерація макросу "aclocal.m4" із файлу "configure.in";
- adb [Android] — міст налагодження Android (Android Debug Bridge);
- adb devices — перелік пристроїв на USB для налагодження і авторизація PC для налагодження Android;
- на деяких пристроях видає повідомлення — "no permissions (user in plugdev group; are your udev rules wrong?); ..."; що виправляється:
apt-get install android-sdk-platform-tools-common
cp /lib/udev/rules.d/51-android.rules /etc/udev/rules.d/
- adb shell — підключення до консолі пристрою Android;
- adb pull sdcard/btsnoop_hci.log ./ — вивантаження файлу із пристрою Android (btsnoop_hci.log доступний на Android < 8);
- adb push test.apk sdcard — завантаження файлу на пристрій Android;
- adb install test.apk — завантаження і встановлення APK-пакету на пристрій Android;
- adb shell dumpsys bluetooth_manager > dumpsys.log — отримання дампу сервісу "bluetooth_manager", який надалі може бути оброблений btsnooz.py для вилучення btsnoop_hci.log на сучасних версіях Android.
- ar — створення/редагування архівів статичних бібліотек з об'єктних модулів;
- autoconf [AUTOTOOLS] — генерація скрипту configure із "configure.in";
- automake [AUTOTOOLS] — генерація "Makefile.in" із "Makefile.am";
- cpp [C] — препроцесор мови C, зазвичай викликається із gcc;
- ctags — генерація тег-файлу для полегшення навігації по коду, використовується редактором VIM;
- cxref [C] — аналіз групи С-файлів і побудова для кожного файлу таблиці перехресних посилань на автоматичні, статичні і глобальні імена;
- dialog [ncurses] — створення діалогів у консолі із скрипту;
- diff — пошук змін у порівнюваних текстових файлах;
- diff -uNr dir/old dir/new > my.patch — створення латки;
- dpkg-buildpackage [DEBIAN] — утиліта побудови DEB-пакетів:
- -b — складання лише бінарних пакунків без джерельних;
- -j[<number>|auto] — кількість завдань-потоків складання, або автоматично;
- -a<arch> — хостова архітектура складання;
- -d — не перевіряти залежності складання, часто потрібно при зміні хостової архітектури.
- gcc — GNU колекція компіляторів мови С, С++, ASM, Fortran, Java, Obj, ... із підтримкою багатьох платформ;
- -x<lang> — визначення мови вхідних файлів, якщо із розширення це не очевидно;
- -c — компіляція та складання перелічених вхідних файлів;
- -S — компіляція перелічених вхідних файлів у файли Асемблеру (*.s);
- -E — здійснення первинної обробки вихідних файлів;
- -o <rez.o> — складання об'єктних файлів до одного rez.o;
- -L — визначення шляху пошуку бібліотек;
- -l — визначення переліку бібліотек (без "lib*" і "*.a");
- -w — заборона відображення попереджень компілятору;
- -Wall — генерація всіх можливих повідомлень попередження;
- -pedantic — "педантична" перевірка вихідного тексту на відповідність стандарту ANSI;
- -Wl — різноманітні опції лінкувальника:
- ,rpath — визначення додаткового шляху пошуку динамічних бібліотек (-Wl,rpath,/usr/newpath);
- ,soname — назва поділюваної бібліотеки (-Wl,-soname,libfuncs.so.1).
- -fPIC — створення об'єктних файлів для динамічних бібліотек (PIC — Position Independent Code);
- -shared — створення динамічної бібліотеки (разом із -o);
- -nostdlib — заборона використання стандартних системних виконуваних файлів або динамічних бібліотек;
- -static — примушення до використання статичних бібліотек замість динамічних;
- -rdynamic — увімкнення можливості використання символьної інформації для вирішення посилань у динамічних завантажувальних бібліотеках;
- -pipe — функціювання компілятору через канали;
- -O<n> — встановлення рівня оптимізації [0..3];
- -g — додавання налагоджувальної інформації;
- -p, -pg — додавання до модуля коду відстеження вузьких місць, після виконання генерується файл "mon.out", який можна обробляти утилітою gprof;
- -masm — використовувати стандарт асемблеру "att" або "intel".
- fastboot [Android] — завантажувач Android пристроїв.
- fastboot devices — перелік пристроїв на USB для операцій із завантажувачем;
- fastboot oem unlock — розблокування завантажувача;
- fastboot flash boot boot.img — прошивка зазначеного розділу файлом образу;
- fastboot reboot-bootloader — перевантаження завантажувача.
- gdb — консольний налагоджувач GNU;
- getconf — запит системних конфігураційних змінних оточення для програм, складених із GLibC;
- -a — отримання усіх змінних.
- indent [C] — форматування вихідного коду на мові Сі;
- lint [C] — виявлення у C-програмах конструкцій, які можуть призвести до помилок під час виконання, марно використовують ресурси або можуть знизити переносимість програми;
- ltrace — трасування динамічних бібліотек вказаної програми;
- make — інтерпретатор мови сценаріїв MAKE із побудови проєктів з багатьох файлів;
- -j{N} — встановлення кількості процесів паралельного складання у N, де інколи актуальне значення 1(один) для виключення багатопотоковості та мінімізації ресурсів.
- nm — отримання переліку імен-символів вказаного об'єктного файлу;
- objdump — отримання різноманітної інформації щодо вказаного об'єктного файлу, а також його дизасемблювання;
- od — виведення бінарного дампу файлу;
- patch — внесення змін у файли (зазвичай текстові вихідні) згідно до журналу змін (латки), який приготовано програмою diff;
- -p{N} — визначення рівня вкладеності файлів у латці N, з якого починати опрацювання;
- --no-backup-if-mismatch — не створювати файлу резерву для невідповідностей у номеру рядків;
- patch -p1 < ../my.patch — латання файлів у поточній теці згідно файлу латки my.patch та починаючи від першого рівня латки.
- prof — отримання статистики часу виконання кожної функції програми, для використання необхідно скласти програму із ключем "-p";
- ranlib — додання таблиці індексів до бібліотеки, створеної ar, задля збільшення швидкості доступу до цієї бібліотеки;
- rpm [REDHAT] — утиліта оперування RPM-пакетами:
- -b <file>.spec — часткова або повна обробка *.spec файлу для складання пакету:
- a — створення бінарного та вихідного rpm-пакету;
- b — створення бінарного rpm-пакету;
- c — виконання етапів: %pre і %build з розпакуванням і компіляцією;
- i — виконання етапів: %pre, %build і %install;
- l — перевірка переліку файлів у %files;
- p — виконання етапу %pre (розпакування архіву);
- --rebuild <file>.src.rpm — компілювання і створення бінарного RPM із вихідного;
- --recompile <file>.src.rpm — компілювання із вихідного RPM;
- --test — перевірка файлу специфікацій;
- --clean — видалення дерева каталогів BUILD.
- size — інформація про кількість байтів секцій ".text", ".data" і ".bss" об'єктного файлу при його завантажені у пам'ять для виконання;
- strace — трасування системних викликів, здійснюваних вказаною програмою;
- strip — видалення таблиці імен та інформацію щодо номерів рядків із об'єктного файлу;
- valgrind — інструмент стеження за коректністю поводження програми із пам'яті, тобто на доступ поза виділених просторів та звільнення виділених ділянок.
3 Процедури
3.1 USB-від'єднувані носії
Відмінність стаціонарних носіїв від від'єднуваних, звісно окрім можливості знімати на ходу, є такий параметр, як апаратний розмір блоку, тобто ділянка диску, що атомарно читається/записується. Для жорстких дисків розмір блоку зазвичай складає 512 байт, а для флеш-дисків 4096, як і для деяких великих жорстких дисків. Відповідно і більшість Файлових Систем (ФС) форматуються історично у розмір логічного блоку 512 байт. І якщо для жорстких дисків це природно, тобто не відбувається падіння швидкості ані читання, ані запису, то для флеш-дисків це буває дуже помітно, особливо у режимі синхронного запису.
Синхронний запис передбачає запис ділянки ФС на носій одразу, оминаючи дисковий кеш. І якщо для стаціонарних носіїв такий режим зайвий, оскільки немає потреби контролювати завершення запису, то для від'єднуваних цей режим є основним, бо дозволяє контролювати реальний стан запису і оцінювати час його завершення. Синхронний режим у середовищі Linux як правило вимкнений (у Linux Автоматизації увімкнено), створюючи невизначені ситуації при записі великих файлів на від'єднувані носії, а саме — створюється ілюзія швидкого запису через запис у кеш, а при демонтуванні-від'єднані носія відбувається втрата зв'язку за вичерпанням часу очікування із сервісом контролю підключення, який саме скидає кеш на носій, після чого дізнатися про можливість безпечного вилучення носія можна лише за дисковою активністю, інформація про що на екрані як правило відсутня. Тому увімкнення синхронного режиму запису є доцільним та із оптимізацією ФС, оскільки за типового розміру логічного блоку у 512 байт отримаємо падіння швидкості запису в чотири рази, а реально більше через синхронний-же запис службової інформації ФС, що наведено у наступній порівняльній таблиці:
Операція | Читання, MB/s | Запис, MB/s |
---|---|---|
Прямо блоком 512 | 78.3 | 11.9 |
Прямо блоком 4096 | 78.1 | 49.3 |
ФС FAT32 із сектором 512 | 81.8 | 6.1 |
ФС FAT32 із сектором 4096 | 81.8 | 9.2 |
ФС exFAT | 81.8 | 14 |
ФС Ext4 із блоком 4096 | 78.8 | 12 |
ФС UDF із блоком 512 | 78.8 | 0.3 |
3.1.1 Форматування USB-Флеш у FAT32 із розміром сектору 4096
mkfs.vfat -F32 -S4096 -f1 /dev/sdX1
3.1.2 Форматування USB-Флеш у exFAT
mkfs.exfat /dev/sdX1
3.1.3 Форматування USB-Флеш у EXT4 із загальним доступом
Хоча ФС EXT4 і не призначалася для використання з від'єднуваними носіями та незручна тут через наявність прав, але часто вона все-ж зручніша та й права можна розширити; оскільки інші варіанти є обмеженими, як то VFAT, або все ще закриті, як то exFAT, або повільні через малий розмір сектору (512), як то UDF. Для створення на USB-Флеш ФС EXT4, що задовольнила-б зазначеним умовам необхідно у терміналі виконати:
mkfs.ext4 -b 4096 /dev/sdX1
tune2fs -m0 -o acl /dev/sdX1
mount /dev/sdX1 /mnt
chown {username}: /mnt
chmod 777 /mnt
setfacl -m d:u::rwx,d:g::rwx,d:o::rwx /mnt
umount /mnt
3.1.4 Форматування USB-Флеш в UDF
Unified Disk Format первинно розроблено для оптичних дисків із функцією довільного запису, вона підтримує великі файли і яку пізніше адаптовано для жорстких дисків. Але ця ФС записується на диск цілком, не містить інструментарію виправлення і втрата даних на ній є типовим явищем. Окрім того, вона коректно визначається лише для розміру блоку у 512 байт, відтак ДУЖЕ повільно пишеться.
dd if=/dev/zero of=/dev/sdX bs=1M count=1
mkudffs -b 512 --media-type=hd /dev/sdX
3.2 Використання OpenSSL
openssl rand 5 #Генерація послідовності випадкових байтів
openssl ciphers HIGH #Запит переліку алгоритмів для вказаного рівня
# Генерація секретного RSA та DSA ключа key.pem, зашифрованого des3
# У якості джерела випадкових даних використовується /var/log/messages
openssl genrsa -out key.pem -des3 -rand /var/log/messages 2048
openssl dsaparam -rand /var/log/messages -out dsaprm 1024
openssl gendsa -out key.pem -idea -rand /var/log/messages dsaprm
# Створення публічного RSA т DSA ключа на основі секретного
openssl rsa -in key.pem -out pubkey.pem -pubout
openssl dsa -in key.pem -out pubkey.pem -pubout
# Зміна паролю та алгоритму шифрування секретного RSA та DSA ключа, видалення паролю та шифрування
openssl rsa -in key.pem -out key1.pem -idea
openssl dsa -in key.pem -out key1.pem -des3
openssl rsa -in key.pem -out key1.pem
# Симетричне шифрування файлу алгоритмом des3 та кодування base64
openssl des3 -in logo.png -out logo.des3
openssl base64 -in logo.des3 -out logo.des3.base64
openssl des3 -a -in logo.png -out logo.des3.base64
# Декодування файлу із base64 та симетричне дешифрування із des3
openssl base64 -d -in logo.des3.base64 -out logo.des3
openssl des3 -d -in logo.des3 -out logo.png
openssl des3 -d -a -in logo.des3.base64 -out logo.png
# Конвертація асиметричних ключів та сертифікатів із формату PEM у DER та назад
openssl x509 -inform PEM -in key.pem -outform DER -out key.cer
openssl rsa -inform PEM -in key.pem -outform DER -out key.der
# Вирахування хешу (md5,sha1 ...)
openssl md5 -c ./logo.png
# Підпис файлу секретним ключем та перевірка ЕЦП публічним ключем, з алгоритмом хешування md5
openssl dgst -sign key.pem -out logo.sign -md5 logo.png
openssl dgst -signature logo.sign -verify pubkey.pem -md5 logo.png
# Асиметричне шифрування файлу із використанням публічного ключа та дешифрування секретним (RSA)
openssl rsautl -in logo.png -out logo.cr -inkey pubkey.pem -pubin -encrypt
openssl rsautl -in logo.cr -out logo.png -inkey key.pem -decrypt
# Створення запиту на сертифікацію (підпис центром сертифікації) на основі створюваного секретного ключа, а потім сертифікату
openssl req -new -key tmp.key -out certreq.csr
openssl x509 -req -in certreq.csr -signkey tmp.key -out cert.pem -days 365
# Створення сертифікату підписаного власним секретним ключем (самопідписаний) та разом із ключем
openssl req -x509 -new -key key.pem -out selfcert.pem -days 365
openssl req -x509 -new -keyout cakey.pem -out cacert.pem -days 365
# Перегляд інформації сертифікату у читабельному вигляді
openssl x509 -in selfcert.pem -noout -text
# Підписування клієнтського сертифікату CA сертифікатом
openssl x509 -req -in client.pem -CA CAcert.pem -CAkey CAkey.pem -CAcreateserial -days 365 -out client1.pem
3.3 Налаштування ssh
#Генерація асиметричного ключа на КЛІЄНТІ у теку "~/.ssh/"
ssh-keygen
#Передавання публічного ключа на віддалений сервер
# МЕТОД 1 — окремо передавання на сервер та окремо реєстрація-авторизація там
scp ~/.ssh/identity.pub {rserver}:~/.ssh/ #КЛІЄНТ: копіювання із клієнту на сервер {rserver}
cat ~/.ssh/identity.pub >> ~/.ssh/authorized_keys #СЕРВЕР: авторизація власного відкритого ключа на сервері
# МЕТОД 2 — однією командою на КЛІЄНТІ до серверу {rserver}
ssh-copy-id {rserver}
#Підключення до віддаленого серверу {rserver} із КЛІЄНТУ
ssh {rserver}
3.4 Формування альтернатив — можливості перемикання версій програм, на прикладі GCC
# Встановлення різних версій GCC
apt-get install gcc-4.12 g++-4.12 gcc-4.11 g++-4.11
# Видалення наявних альтернатив
update-alternatives --remove-all gcc
update-alternatives --remove-all g++
# Додання варіантів альтернатив, із версією у якості пріоритету
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 11
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 12
# Оновлення/вибір актуальної версії
update-alternatives --config gcc
update-alternatives --config g++
3.5 Створення, використання та обслуговування програмного RAID — ДЗЕРКАЛА
# Запит стану пристроїв дзеркала
cat /proc/mdstat
# Запит інформації/стану пристрою масиву або розділу
mdadm -Q /dev/sdb1
# Аналіз та отримання поточних пристроїв RAID, зазвичай для /etc/mdadm/mdadm.conf
mdadm --examine --scan
# Створення масиву, "missing" для недоступних розділів на цьому етапі
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 [/dev/sdb1|missing]
# Додання розділу до масиву
mdadm /dev/md0 --add /dev/sdb1
# Зупинка масиву
mdadm -S /dev/md0
# Встановлення ознаки "FAIL" для можливості відключення
mdadm --manage /dev/md0 --fail /dev/sdb1
# Видалення розділу із масиву, на профілактику
mdadm --manage /dev/md0 --remove /dev/sdb1
# Додання розділу до масиву, після заміни
mdadm --manage /dev/md0 --add /dev/sdb1
3.6 Адміністрування віртуальних серверів (VPS) на основі технології OpenVZ
#Створення VPS із шаблону
vzctl create 101 --ostemplate altlinux-4.0 --config vps.basic
#Видалення VPS
vzctl destroy 101
#Отримання переліку всіх VPS
vzlist -a
#Встановлення назви VPS
vzctl set 101 --name vps101 --save
#Встановлення загальних параметрів VPS: onboot, hostname, nameserver, searchdomain, userpassword
vzctl set 101 --onboot yes --save
vzctl set 101 --hostname test101.my.org --save
vzctl set 101 --nameserver 192.168.1.165 --save
vzctl set 101 --searchdomain my.org --save
vzctl set 101 --userpasswd root:test
#Конфігурація venet
vzctl set 101 --ipadd 10.10.186.1 --save
#Конфігурація veth
vzctl set 101 --netif_add eth0 --save
#Запуск та зупинка VPS
vzctl start 101
vzctl stop 101
#Виконання команди всередині VPS ("ls /root")
vzctl exec 101 ls /root
#Адміністративний вхід до VPS
vzctl enter 101
#Встановлення можливостей VPS
vzctl set 101 --capability sys_time:on --save # можливість зміни системного часу
#Перегляд обмежень VPS та їх порушень
$ vzctl exec 101 cat /proc/user_beancounters
#Встановлення обмежень VPS (kmemsize, lockedpages, privvmpages ...)
$ vzctl set 1 --dgramrcvbuf 1512000:1520000 --save
#Встановлення доступу до пристроїв (/dev)
$ vzctl set 101 --devnodes ttyS0:rw --save
$ vzctl set 101 --devices b:8:16:rw --devices b:8:17:rw --devices b:8:18:rw --save
3.7 Система контролю версій CVS
# Вказання на каталог де знаходиться репозиторій CVS
export CVSROOT=/home/Roman/progects/CVS_R
# Вказання на віддалений репозиторій
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
# Імпорт проєкту MyProg від ім'я творця MyName у CVS
cvs import MyProg MyName start
# Експорт проєкту tc для зайняття ним, у результаті чого буде створено каталог "tc" до якого буде розміщено всі файли
cvs -z 3 co tc
# Завантаження дерева проєкту за ревізією(тегом) <revise>
cvs co -r revise Prog
# Синхронізація вхідних текстів з усіма змінами, виконувати перед фіксацією своїх змін
cvs up
# Приведення вмісту дерева у відповідності до ревізії <revise>
cvs up -r revise
# Фіксація змін у backend.c та запуск редактору (ENV: CVSEDITOR) щоб ввести журнальний запис про зміни
cvs ci backend.c -r revise
# Фіксація змін у дереві під ревізією <revise> для цілого дерева
cvs ci -r revise
# Приведення вершини дерева до <revise>
cvs tag revise
# Видалення вашої копії проєкту та перевірка при цьому щодо фіксації всіх ваших змін
cvs release -d tc
# Виведення журналу змін щодо файлу file.cc
cvs log file.cc
# Виведення опису змін внесених зо файлу driver.c
cvs diff driver.c
# Внесення файлу readmi.cc під контроль CVS
cvs add readmi.cc
# Сповіщення CVS про необхідність видалення файлу readmi.cc із репозиторію з наступною командою <ci>
cvs rm readmi.cc
3.8 Система контролю версій Subversion (SVN)
# Отримання вмісту гілки репозиторію
svn list svn://rep.org/trunk
# Завантаження локальної копії репозиторію
svn checkout svn://rep.org/trunk/project
# Отримання стану модифікації локальної копії репозиторію
svn status
# Отримання змін у вигляді латки
svn diff
# Додання файлу або каталогу до репозиторію
svn add ./new.file
# Видалення файлу або каталогу із репозиторію
svn delete ./rem.file
# Прийняття локальних змін та відправлення їх на сервер
svn commit -m "Changes message"
EDITOR=vim svn ci # або із введенням журналу змін у редакторі
# Вирішення конфліктів — зняття ознаки конфлікту
svn resolve /project/innerfolder
# Копіювання ділянки репозиторію включно із локальними, а також створення нової гілки або тегу
svn copy svn://rep.org/trunk/project svn://rep.org/branch/project_user
# Об'єднання змін гілки вказаної ревізії із локальною копією іншої гілки
svn merge -c 1222 svn://rep.org/trunk/project
# Перегляд історії репозиторію
svn log
3.9 Система контролю версій GIT
# Ініціалізація поточного каталогу як новий порожній репозиторій
git init
# Додання віддаленого репозиторію для завантаження локальної копії
git remote add origin user1@gitserver:/home/repo/alpha.git
# Завантаження локальної копії репозиторію
git clone git://git.server.org/rep.git
# Додання змін, нових файлів та видалення старих
git add .
# Отримання стану репозиторію
git status
# Перегляд внесених змін
git diff --cached
# Прийняття локальних змін — перетворення тимчасового стану індексу у постійний
git commit -am "Changes message"
# Формування GIT-латки прийнятих локальних змін
git format-patch -1
# Вивантаження локальних змін, ключ -f для примусового заміщення
git push
# Додання тегу
git tag -sm "Tag 0.1.0 message" tag-name-0.1.0
# Вивантаження локальних тегів
git push origin --tags
# Отримання переліку всіх гілок
git branch
# Створення нової гілки
git branch experimental
# Видалення гілки
git branch -d experimental
# Перемикання на іншу гілку
git checkout experimental
# Об'єднання змін у гілці experimental із поточною гілкою локального репозиторію
git merge experimental
# Отримання змін із іншого репозиторію та об'єднання їх із поточним
git pull git://git.server.org/rep.git
# або
git fetch git://git.server.org/rep.git
git merge git://git.server.org/rep.git
# Перегляд історії репозиторію
git log
3.9.1 Процедура вивантаження змін до TGW (https://wiki.trinitydesktop.org/TDE_Gitea_Workspace)
# Отримання дерева вихідного коду для внесення змін, на прикладі tdenetwork
git clone https://mirror.git.trinitydesktop.org/gitea/TDE/tdenetwork.git
# Перехід до теки дерева
cd tdenetwork
# Створення локальної гілки, як то feat/{whatever} - feat/krfb
git checkout -b feat/krfb
# Накладення латки на локальну гілку
patch -p1 --no-backup-if-mismatch < ../krfb-new_symbols_appending.patch
# Додання-реєстрація усіх змін від латки
git add .
# Приготування дії-commit для вивантаження змін
git commit -s -m "krfb: Crashes after the VNC client disconnect"
# Вивантаження змін у гілці із авторизацією
git push -u origin feat/krfb
3.10 Приготування та компіляція проєктів на основі AutoTools
gettextize -f -c #генерація локалізаційних файлів
autoheader #генерація файлу
autoscan #автоматична генерація cofigure.scan та перевірка configure.in
ifnames #створення переліку ідентифікаторів використовуваних препроцесором
# Генерація/перегенерація складальної системи
aclocal -I -m4 #генерація макросу aclocal.m4
autoconf #генерація сценарію configure
autoreconf -if #перегенерація сценарію configure
automake -a -c #генерація файлу Makefile.in
configure #генерація Makefile
make #компіляція проєкту
make install #встановлення програми
4 Формати основних конфігураційних файлів та сценарії-скрипти
4.1 BASH
- ls -A /home/${USER} — команда ls із аргументами для виконання безпосередньо у цій оболонці;
- (ls -A /home/${USER}) — виконання команди ls у іншій підоболонці;
- . /usr/local/bin/my.sh — виконання команд сценарію із файлу "/usr/local/bin/my.sh";
- ls -A /home/${USER} & — виконання команди ls у фоні, тобто оболонка виклику одразу звільняється;
- ls -A /home/${USER} > /var/log/my.log — виконання команди ls із переспрямуванням її виводу до файлу "/var/log/my.log" — усі варіанти переспрямування;
- !2005 , !ls — виконання рядка 2005 та найближчого рядка що містить "ls" із історії (history);
- var=My User ${USER} — визначення змінної var у необхідне значення;
- var=(zero one two three) — визначення змінної var масивом із послідовним його заповненням чотирма елементами;
- var=([0]=zero [3]=three [2]=two [1]=one) — визначення змінної var масивом із довільним його заповненням чотирма елементами;
- var[2]=val — визначення змінної var масивом із призначенням елементу 2 значення "val".
4.1.1 Основні елементи граматики команд та визначень
- команда-визначення; команда-визначення' — розділювач (";");
- команда && команда' — умовний розділювач ("&&"), який передбачає виконання команди після за умови результату першої ВДАЛА(TRUE)-НЕПОМИЛКА;
- команда || команда — умовний розділювач ("||"), який передбачає виконання команди після за умови результату першої НЕВДАЛА(FALSE)-ПОМИЛКА;
- \ — екранування спеціального символу після даного ("\$"), часто використовується у кінці рядка для екранування символу переведення рядка чим продовжуючи рядок на наступному;
- /home/${USER}, 314 — рядок символів із завершенням на пробілі або табуляції, якщо команда або визначення не вважає початково усе рядком до його переведення; де цілі числа це просто символи до моменту потрапляння у середовище їх обчислення згідно до формату;
- "рядок символів зі вставками ${USER} та екрануванням \$";
- 'рядок-літерал символів із забороною підставлення значень змінних та екранування';
- $'рядок-літерал символів лише із\nзабороною підставлення значень змінних';
- $var, ${var} — підставлення значення змінної var, форма у дужках застосовується якщо назва змінної складна та зі спеціальними символами; де var також може бути спеціальною змінною, змінною оточення (зовнішня) та щодо якої доступно інші форми підстановки;
- `ls -1 /home/${USER}`, $(ls -1 /home/${USER}) — виконання команди у виразі із поверненням результату;
- [ -d /home/${USER}/.config ] — тестові-умовні операції із синтаксисом команди test;
- $[100/3], $((100/3)) — виконання простих цілочисельних операцій.
Приклади
ls -A /home/${USER}; echo "Very Basic\
\"long string\"" + 'just string literal';
(ls -A /home/${USER})
x=3.14; y="String"; z='Literal'
echo `ls -1 /home/${USER}` $(ls -1 ${PWD})
ls -1A /home/${USER} | grep .config &> /dev/null && echo OK
[ -d /home/${USER}/.config ] && echo OK
a=4; echo $[a=$a+4] $[a+=4] $[a=a+4]
a=4; echo $[a=$a+4, a+=4, a=a+4]
4.1.2 Службові змінні
- $# — кількість фактичних аргументів;
- $- — прапорці (однобуквені), вказані при запуску оболонки або встановлені посередництвом set;
- $? — код повернення останньої команди;
- $$, $PPID — ідентифікатор поточного процесу-сценарію (PID);
- $! — ідентифікатор останнього фонового процесу-сценарію (PID);
- $* — всі аргументи одним рядком зі змішуванням із підрядками ("під рядок");
- $@ — всі аргументи окремими рядками;
- $n, ${n} — аргумент n від 1, де 0 — назва команди.
4.1.3 Підстановки
- ${array[@]} — звернення одразу до всього масиву array;
- ${var-default}, ${var=default} — до змінної var підставляється значення default за умови якщо вона невизначена;
- ${var:-default}, ${var:=default} — до змінної var підставляється значення default за умови якщо вона невизначена або нульова;
- ${var+alt_val} — до змінної var підставляється альтернативне значення alt_val за умови якщо вона визначена;
- ${var:+alt_val} — до змінної var підставляється альтернативне значення alt_val за умови якщо вона визначена та непорожня;
- ${var?error} — сповістити про помилку error та завершити сценарій якщо змінна var невизначена;
- ${var:?error} — сповістити про помилку error та завершити сценарій якщо змінна var невизначена або нульова;
- ${#var} — повертає довжину, кількість символів, у змінній var, де передбачено спеціальні форми:
- ${#*}, ${#@} — кількість аргументів сценарію-функції;
- ${#array[*]}, ${#array[@]} — кількість елементів у масиві array;
- ${var:offset:lenght}, ${var:offset} — повертає частину-підрядок від var починаючи із offset та довжиною lenght, де передбачено спеціальні форми та значення:
- арифметичні вирази у offset та lenght;
- негативні числа у offset та lenght — відраховується від кінця;
- ${@:offset:lenght} — аргументи починаючи із offset та кількістю lenght;
- ${array[@]:offset:lenght}, ${array[*]:offset:lenght} — елементи масиву починаючи із offset та кількістю lenght;
- ${var#pattern}, ${var##pattern} — видалення зі змінної var найкоротшої та найдовшої частини від початку за шаблоном pattern;
- ${var%pattern}, ${var%%pattern} — видалення зі змінної var найкоротшої та найдовшої частини від кінця за шаблоном pattern;
- ${var/pattern/replacement}, ${var//pattern/replacement} — заміна у змінній var одної ділянки або всіх ділянок згідно шаблону шаблоном pattern на значення replacement, або видалення якщо відсутня заміна;
- ${var/#pattern/replacement} — заміна у змінній var префіксу згідно шаблону шаблоном pattern на значення replacement, або видалення якщо відсутня заміна;
- ${var/%pattern/replacement} — заміна у змінній var суфіксу згідно шаблону шаблоном pattern на значення replacement, або видалення якщо відсутня заміна;
- ${!varpref*}, ${!varpref@} — підстановка значень змінних префікс яких відповідає varpref.
4.1.4 Змінні оточення та оболонки
- PWD — поточний робочий каталог;
- UID — унікальний ідентифікатор поточного користувача;
- BASH — повний шлях виклику BASH;
- BASH_VERSION — версія даного BASH
- EDITOR — назва текстового редактору використовуваного деякими програмами;
- SHLVL — рівень вкладення запуску BASH;
- RANDOM — випадкове число [0...32767];
- SECONDS — час у секундах від запуску сценарію;
- HISTCMD — номер поточної команди в історії;
- PATH — шляхи пошуку команд;
- HOME — домашня тека поточного користувача;
- MAIL — назва файлу до якого надходить електронна пошта;
- LOGNAME — ім'я користувача використане для входу до системи;
- SHELL — ім'я оболонки інтерпретатору команд;
- TERM — тип-програма користувацького терміналу;
- LANG — локаль — мова та країна локалізації інтерфейсу;
- DISPLAY — адреса дисплею для X-додатків;
- PS1,PS2 — описують вигляд запрошення у командному рядку;
Системне
- LD_LIBRARY_PATH — користувацькі шляхи до динамічних бібліотек;
- LD_PRELOAD — перелік бібліотек попереднього завантаження, часто для перевизначення-перехоплення окремих викликів функцій при налагоджені;
- MALLOC_ARENA_MAX — максимальна кількість арен виділення пам'яті на потік для динамічного розподілювача MALLOC.
4.1.5 Оператори
- if умова — умовний оператор, у якому часто використовується команда test як безпосередньо, так і у формі "[ тест ]"
- then вираз — тіло виразу виконуваного за умова ВДАЛА(TRUE)-НЕПОМИЛКА
- else вираз2 — тіло виразу2 виконуваного за умова НЕВДАЛА(FALSE)-ПОМИЛКА
- elif умова2 — поєднання команди "else if умова2"
- then вираз3 — --//--
- else вираз4 — --//--
- elif умова3 — --//--
- ...
- fi — завершення умовного оператору
- fi — завершення умовного оператору
- fi — завершення умовного оператору
- Цикли:
- for var in перелік — оператор циклу із перебирання елементів переліку у змінній var
- while умова — виконання тіла виразу циклу допоки умова ВДАЛА(TRUE)-НЕПОМИЛКА, де часто використовується команда test як безпосередньо, так і у формі "[ тест ]"
- do вираз — тіло виразу циклу
- break — переривання циклу
- continue — продовження циклу на наступній ітерації
- break — переривання циклу
- do вираз — тіло виразу циклу
- done — завершення оператору циклу
- case зразок in — оператор обрання-перевірки виразу зразку за маскою-шаблоном, через символ "|" може бути вказано декілька масок
- маска1) вираз1 ;; — виконання вираз1 за умови відповідності зразку до маска1
- ...
- маскаN) виразN ;; — виконання виразN за умови відповідності зразку до маскаN
- esac — завершення оператору перевірки
- function func() { сценарій } — визначення функції func із тілом сценарій, яка потім викликається так само як і звичайна команда
Приклади
if ls -1A /home/${USER} | grep .config &> /dev/null
then
echo OK
else
echo FALSE
fi
if [ -d /home/${USER}/.config ]; then echo OK; fi
for var in "1 2" 3 4 "5" "6 7"
do
case $var in
[0-9]) echo "Number $var" ;;
*) echo "String $var" ;;
esac
done
function testSeq( ) {
while [ $# -ge 1 ]; do
case $1 in
[0-9]) echo "Number $1" ;;
*) echo "String $1" ;;
esac
shift
done
}
testSeq "1 2" 3 4 "5" "6 7"
4.1.6 Вбудовані та основні команди
- echo [рядок...] — запис рядків аргументів до стандартного виводу;
- true, false — повертають логічний результат ВДАЛА(TRUE)-НЕПОМИЛКА та НЕВДАЛА(FALSE)-ПОМИЛКА відповідно;
- pwd — отримання ім'я поточної теки;
- cd [тека] — зміна поточної теки;
- export назва[=слово]... — встановлення експортної (зовнішнє оточення) змінної назва у значення слово;
- shift [n] — зсув аргументів командного рядку на n пунктів, для доступу з номером більше 9 та загалом їх сканування;
- exit [n] — вихід із сценарію з кодом n;
- test [вираз], [ вираз ] — перевірка умов в умовних операціях та циклах командами виразу;
- set — встановлення та очищення опцій і позиційних параметрів;
- unset x — зняття значень та атрибутів змінних та функцій;
- getopts рядокопцій назва [аргумент...] — отримання опції з назвою із рядокопцій, тобто аргументів сценарію;
- exec [команда [аргумент ...]] [переспрямування ...] — зміна-запуск команди у поточному процесі оболонки із можливістю переспрямування потоків вводу-виводу;
- read змінна... — введення зі стандартного вводу до вказаних змінних;
- eval [аргумент...] — конструювання команди поєднанням аргументів;
- trap — встановлення обробника сигналів у сценарії;
- alias [синонім[=рядок]...] — контроль синонімів (псевдоніми або альтернативні назви команд), тобто встановлення синоніму у рядок або відображення значення синоніму за відсутності рядка;
- unalias синонім... — видалення синонімів (псевдоніми або альтернативні назви команд).
4.1.7 Опції перевірки команди test
- -e шлях — шлях вказує на елемент теки;
- -d шлях — шлях вказує на каталог;
- -f шлях — шлях вказує на звичайний файл;
- -c шлях — шлях вказує на спеціальний символьний файл;
- -b шлях — шлях вказує на спеціальний блоковий файл;
- -p шлях — шлях вказує на спеціальний файл іменованого каналу;
- -L шлях — шлях вказує на символічне посилання;
- -r шлях — шлях вказує на файл із доступом для читання;
- -w шлях — шлях вказує на файл із доступом для запису;
- -x шлях — шлях вказує на виконуваний файл;
- -s шлях — шлях вказує на ненульовий файл;
- -z рядок — рядок порожній;
- -n рядок — рядок непорожній;
- рядок — рядок ненульовий;
- рядок1 = рядок2 — рядок1 дорівнює рядок2;
- рядок1 != рядок2 — рядок1 не дорівнює рядок2;
- ціле1 -eq ціле2 — ціле1 дорівнює ціле2;
- ціле1 -ne ціле2 — ціле1 не дорівнює ціле2;
- ціле1 -gt ціле2 — ціле1 більше ціле2;
- ціле1 -lt ціле2 — ціле1 менше ціле2;
- ціле1 -ge ціле2 — ціле1 більше або дорівнює ціле2;
- ціле1 -le ціле2 — ціле1 менше або дорівнює ціле2;
- ! вираз — заперечення-інверсія результату виразу;
- вираз1 -o вираз2 — вираз1 АБО вираз2;
- вираз1 -a вираз2 — вираз1 ТА вираз2.
4.1.8 Прості цілочисельні операції у формі $[100/3], $((100/3))
- id++, id-- — постфіксне збільшення/зменшення значення змінної id на 1;
- ++id, --id — префіксне збільшення/зменшення значення змінної id на 1;
- -, + — унарні мінус та плюс;
- !, ~ — логічне та побітове заперечення;
- *, /, % — множення, ділення, отримання залишку від ділення;
- ** — зведення у ступінь;
- +, - — складання, віднімання;
- <<, >> — побітовий зсув ліворуч та праворуч;
- <=, >=, <, > — порівняння;
- ==, != — рівність та нерівність;
- & — побітове "І";
- ^ — побітове виключене "АБО";
- | — побітове "АБО";
- && — логічне "І";
- || — логічне "АБО";
- вир1?вир2:вир3 — умовне обчислення у виразі де за TRUE вир1 обчислюється та повертається результат вир2 інакше вир3;
- =, *=, /=, %=, +=, ?=+ — привласнення
- вир1,вир2 — розділювач виразів (","-кома) вир1 та вир2;
- (вираз) — виокремлення більш пріоритетного виразу та його ділянки.
4.1.9 Переспрямування виводу
- команда1 | команда2 — спрямувати стандартний вивід STDOUT(1) команда1 у стандартний ввід STDIN(0) команда2 через канал;
- команда < файл — спрямувати вміст файлу на стандартний ввід STDIN(0) команди;
- команда > файл — спрямувати стандартний вивід STDOUT(1) у файл, попередньо очистивши його;
- команда >> файл — спрямувати вивід STDOUT(1) у файл, додаючи дані до нього;
- команда n> файл — спрямувати вивід із дескриптором n у файл, попередньо очистивши його;
- команда n>> файл — спрямувати вивід із дескриптором n у файл, додаючи дані до нього;
- команда &> файл — спрямувати стандартний вивід STDOUT(1) та вивід помилок STDERR(2) у файл, попередньо очистивши його;
- команда &>> файл — спрямувати стандартний вивід STDOUT(1) та вивід помилок STDERR(2) у файл, додаючи дані до нього;
- команда <> файл — зв'язати стандартний ввід STDIN(0) та стандартний вивід STDOUT(1) команди із файлом;
- команда n1>&n2 — приєднати вивід файлу із дескриптором n1 до виводу із дескриптором n2, зазвичай приєднується вивід помилок STDERR(2) до стандартного виводу STDOUT(1) або навпаки;
- команда << мітка текст-сценарій мітка — безпосередньо у сценарії визначає текст-сценарій та спрямовує його до стандартного вводу STDIN(0), де межі тексту-сценарію визначаються міткою.
4.1.10 Спеціальні символи — екранування
- \n — новий рядок;
- \b — повернення на один символ;
- \c — друк рядка без символу нового рядка;
- \f — перехід до нової сторінки-екрану;
- \r — повернення каретки;
- \t — табуляція;
- \v — табуляція по вертикалі;
- \\ — зворотна коса риска;
- \0nnn, \xNN — вісімкове nnn та шістнадцяткове NN число.
4.1.11 Маски-шаблони
- * — довільна послідовність символів;
- ? — довільний один символ;
- [...] — символ із переліку у дужках ([A-Z]), де перший символ "!" або "^" означає виключення наступних символів.
4.1.12 Представлення числових значень
- 45 — десяткове число, починаючи із числа не "0" та символи [0-9] поспіль;
- 045 — вісімкове число, починаючи із "0" та символи [0-7] поспіль;
- 0x45, 0X32 — шістнадцяткове число, починаючи із "0x" або "0X" та символи [0-7a-fA-F] поспіль;
- основа#N — число N із основою.
Приклади
echo $[45], $[045], $[0x45]
echo $[2#101], $[10#101], $[16#101]
echo $[16#FF], $[16#ff], $[0xFF]
echo $[64**2], $[64#@@]
echo $[64#z], $[64#Z]
4.1.13 Корисні обороти
{cmd} || true # примусове встановлення успішного результату
echo "lang=uk_UA.UTF-8" | cut -d= -f2 # розбір за роздільником-тег '=', елемент 2
echo "123 lang=uk_UA.UTF-8" | grep -o 'lang=[^ ]*' # отримання ділянки тексту/рядка згідно до шаблону
wc -l # отримання кількості рядків
wc -w # отримання кількості слів
sed -n 4p # отримання вказаного рядка
sed -i "s/dialout:x:20:/&user/" /etc/group # додати користувача "user" до групи "dialout"
ls -1 /etc # отримання вмісту каталогу за рядками
head -c8 /dev/random | uuencode -m - | sed -n '2s/=*$//;2p' # генерація випадкового паролю
var="/some/path/file.txt"; echo ${var##*/} OR `basename $var` # виділення ім'я файлу із розширенням
sed $'s/\r$//' src.txt > dest.txt # переривання рядка DOS у Unix
sed $'s/$/\r/' src.txt > dest.txt # переривання рядка Unix у DOS