Существуют готовые решения для измерения скорости работы на клавиатуре, например typespeed. Прекрасная программа с различными опциями.
Потренировал на ней пальцы и возникла идея написать что-нибудь самому. Расскажу, каким путём шёл и что получилось.
-
Формула. Тут всё просто.
Скорость = Количество_символов / Время_печати
-
Количество символов
Как измерить количество вводимых символов? Были разные идеи. Например, направить в файл, и потом измерять что в файле накопилось.
Но решил сделать проще — пусть вводимый текст станет именем переменной. А потом уже измерить количество символов в имени.
-
Время_печати = Время_окончания - Время_начала
Использовал время юникс в секундах.
-
Перевод из "символы в секунду" в "символы в минуту".
Чтобы получить «символы в минуту», умножил конечный результат на 60.
-
Особенности реализации
Проблема возникла при делении Количество_символов / Время_печати.
Засада - правый слэш делит без остатка!!
При скорости печати менее 60 символов в минуту результат получается 0.
Решил так — чтобы вытащить остаток на ясно солнышко, количество символов умножил на 100, а потом в конечной формуле сделал деление на 100.
Прилагаю текст. Буду рад услышать замечания, пожелания!
А тут ссылка на GitHub.
#!/bin/bash
echo
echo " ИЗМЕРЕНИЕ СКОРОСТИ ПЕЧАТИ НА КЛАВИАТУРЕ"
echo
echo " Нажмите Пробел и напечатайте любую фразу."
echo " Затем для завершения нажмите Enter."
echo
# Первый введенный символ - сигнал для начала отсчета времени
read -p " " -n 1
# Время начала
time1=$(date +%s)
# Ввод текста
read -p " " text
# Время окончания
time2=$(date +%s)
# Подсчет количества символов
quantity=${#text}
# Умножаем на 100
quantity100=$(($quantity*100))
# Вычисляем длительность времени печати
timedif=$(($time2-$time1))
# Промежуточное вычисление скорости печати
speed100=$(($quantity100 / $timedif))
# Скорость печати символов в минуту
speed_minutes=$(($speed100 * 60 / 100))
echo
echo " Скорость, симв/мин.: $speed_minutes"
echo
Комментарии (6)

dmitrytheman
28.06.2026 19:44Засада - правый слэш делит без остатка!!
echo "scale=2; $quantity/$timedif" | bc

Solmik Автор
28.06.2026 19:44Благодарю! Да, вполне возможный вариант!
Я постарался упростить, не подключать калькулятор.

Uranic2
28.06.2026 19:44:) Скорость набора текста - один из самых лукавых показателей.
Она сильно зависит от сложности текста (Одно дело набирать знакомые слова в нижнем регистре и совсем другое со всеми знаками препинания, да ещё и с скобками, кавычками)
Скорость сильно зависит от длины текста. т.е. на отрезках в 15 секунд и 5 минут разница будет в разы.
Ваш рекорд в наборе текста вовсе не значит, что вы с такой скоростью и будете набирать текст во время работы.

Solmik Автор
28.06.2026 19:44Да, согласен! Скажу больше - скорость печати в жизни вообще не имеет большого значения. Важен автоматизм в работе рук, чтобы голова не отвлекалась на клавиатуру. А скорость должна быть комфортной.
Я обучаю студентов работать на клавиатуре, если заинтересовались - посмотрите статью на эту тему.
AnSa8
Для перевода из секунд в минуты обычно делят, а не умножают.
Solmik Автор
Благодарю, внес поправку в текст статьи:
>4. Перевод из "символы в секунду" в "символы в минуту".
Программу трогать не стал, тут по логике надо умножить.
Наглядный пример - допустим, у нас скорость два символа в секунду. Сколько символов получится напечатать в минуту ( за 60 секунд ) ?
Умножаем 2 х 60 = 120 символов в минуту.