Советы по GNU/Linux
155 subscribers
203 photos
6 videos
43 files
314 links
Канал, посвящённый GNU/Linux и свободному ПО.

Другие наши каналы:

@calmira_gnu_linux - чат по дистрибутиву Calmira GNU/Linux-libre, который разрабатывает один из админов этого канала
Download Telegram
Извращение с терминалом. tput.

tput — команда, использующая базу данных terminfo для предоставления шеллу терминало-зависимых возможностей. При использовании команды можно указать тип терминала, но обычно это не делается, так как по-умолчанию тип берется из переменной $TERM.

Рассмотрим следующий скрипт:

#!/bin/bash

# -e - включить управление escape-последовательностями
# -n - не переносить на новую строку
SUCCESS="echo -en \\e[1;32m"
FAIL="echo -en \\e[1;31m"
NORMAL="echo -en \\e[0;39m"

touch $1 # Создаём определённый пустой файл

# Проверяем на успешность операции
# Можно тестировать на наличие файла $1,
# но я доверюсь кодам завершения программы.
if [ $? -eq 0 ]; then
$SUCCESS
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[0k]"
$NORMAL
echo # Переход на новую строку. Без комментариев.
else
$FAIL
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]"
$NORMAL
echo
fi

Теперь расшифровка параметров:

- tput hpa X - сдвиг курсора на Х позиций;
- tput cols - получение количества колонок в терминале (ровно как tput lines - получение кол-ва строк);
- tput cub 6 - сдвиг курсора на 6 позиций влево (т.о. сообщение [0k]/[FAIL] "прижаты" к краю)

Кроме того, вместо escape-последовательностей можно использовать тот же самый tput. Я не стал так делать во избежание усложнения скрипта, пусть и небольшого.

Запуск скрипта:

./script.sh $FILENAME

Замените $FILENAME на имя файла. Если файл существует, то touch выдаст код завершения 1, соответственно, на экране увидим [FAIL]. Если такого файла нет, то он будет создан и touch выдаст код завершения 0. Переменная $? содержит в себе это.

Смотрите также:

- man bash
- man tput
- help echo

Применение найдите сами.

#Bash #Programming #Рукоблудие
Примерно то, что должно получиться.
Играемся с пайпом. pv.

pv - инструмент командной строки, позволяющий отслеживать данные, передаваемые в пайпе. Сокращение от Pipe Viewer.
Предоставляет информацию о прошедшем времени, проценте выполнения (включая индикатор выполнения - progressbar), текущую пропускную способность, ETA и кол-во переданных данных.

Использование

Допустим, есть некая директория Work, которую нужно заархивировать. Например:

tar -cf - Work | pv -s $(du -sb Work | grep -o '[0-9]*') > Work.tar

Примерный вывод:

 512MiB 0:00:01 [ 424MiB/s] [===============================>] 100%

Из него мы видим кол-во переданных данных, время выполнения, пропускную способность и процент выполнения.

Ключ -s предназначен для передачи размера каталога в байтах.

Забавный пример из одного англоязычного блога:

pv /dev/urandom > /dev/null

Смотрите также:
* man pv;
* man bash.

#Bash #Linux
Вторая часть об опыте работы с Calmira LX4 1.1 GNU/Linux. Описал настройку, плюс пару слов о том, как использую дистрибутив лично я.

Читать здесь:
https://linuxoid85.github.io/LinuxSovet/stats/blog/cpl/expierence/calmira-1.1-2.html

Кроме того, доступна первая часть:
https://linuxoid85.github.io/LinuxSovet/stats/blog/cpl/expierence/calmira-1.1.html

В третьей части статьи будет описан процесс разработки системы.

Так же, для тех, кому интересно, завтра (5 декабря) в планах выпустить первую тестовую версию Calmira LX4 1.2. Исправил один неприятный баг с нерабочим сервисом dhcpcd для SysVInit, добавил программу btst для просмотра состояния АКБ ноутбука, ну и множество улучшений в ядре. Такие как добавление поддержки мыши в TTY, NVMe, FUSE, ну и по части NLS тоже кое-что (codepage 855).

Если релиз 1.1 получился довольно смазанным, несмотря на долгое время разработки (а хотелось сделать довольно жирный и надёжный релиз), то версия 1.2 будет намного лучше и стабильнее.

#Рукоблудие #Linux