Сборка программ и утилиты терминала Linux
Linux, please
Мы уже рассказали об основных командах терминала Linux, а также инструментах для начинающих вроде tmux, GnuPG и Bash. В этой части рассмотрим сборку программ и утилиты терминала Linux.
Инструменты для сборки программ
Речь пойдёт про интерпретируемые программные платформы, доступные в большинстве систем — Python, Perl, awk, Bash. Кроме того, вам понадобится система сборки кода Make.
Код, который пишет программист, часто разделяется на файлы заголовков .h и файлы исходного кода .c.
При этом компилятор gcc делает следующее:
- При компиляции
-Sисходный код преобразуется с .c в код сборки .s. - При компиляции
-cкод сборки трансформируется в объектный код .o. - Ссылка
-l— это ссылка на стандартные библиотеки для создания исполняемого файла.
По умолчанию gcc объединяет вышеуказанные этапы, создавая исполняемый файл.
gcc hello.c — создает a.out, а не .o или .s-файлы.
Система сборки Make
Данная система автоматизирует компиляцию нескольких исходных файлов в сложном проекте, упорядочивает зависимые действия и выполняет их по порядку. После чего ею считывается конфигурация из файла «сборки», обычно именуемого Makefile. В итоге Makefile действует как программный компонент процесса сборки проекта.

Процесс работы make-команды
make будет считывать данные из Makefile и запускать команды, чтобы построить конечную цель. Например, в Makefile, показанном выше, make будет запускать команды для правил 2–4, за которыми последует правило 1:
gcc -c dep1.c # создать dep1.o
gcc -c dep2.c # создать dep2.o
gcc -c main.c # создать main.o
gcc -o an_exe main.o dep1.o dep2.o -lm
Утилиты терминала Linux
Чтобы запустить команду в определённое время, используйте at:
at 17:00
at> log_days_activities.sh # иногда можно сократить: at> prompt [Ctrl+D]
at предлагает использование ключевых слов, таких как now, noon, today, tomorrow (сейчас, полдень, сегодня, завтра), а также различные опции, например, часы и дни, которые можно указывать с символом +.
at noon
at now + 1 year
at 3:08pm + 1 day
at 15:01 December 19, 2018
Используйте cron, если вы хотите задать периодичность запуска команд.
Утилита терминала Linux cron позволяет настроить периодический запуск посредством файла crontab, который управляет процессом и определяет, что и когда требуется выполнить. Запись может быть создана в любом файле и добавлена в систему с помощью команды crontab следующим образом:
echo '15 18 30 6 * find /home -mtime +30 -print' > f00
crontab f00 # добавить предыдущую команду в систему crontab
crontab -l # список записей crontab
crontab -r # удалить записи crontab
Вывод команды cron будет осуществляться через почту (в качестве альтернативы она может быть перенаправлена в файл с помощью >).
Анатомия записи в crontab:

В данном случае получаем следующее: выполнение команды find ежегодно 30 июня в 18:15.
Применение математики
- Генерация случайных чисел с помощью
shuf(может потребоваться установка): shuf -i 1-100 -n 1- Форматирование чисел с помощью
numfmt: numfmt --to=si 10001.0Knumfmt --from=iec 1K1024- Использование
bcв качестве универсального калькулятора: bc <<< 48+36 # без пробелов по обе стороны от +echo 'obase = 16; ibase = 10; 56 '| bc # десятичное в шестнадцатеричноеecho 'scale=8; 60/7.02' |bc # произвольная точность
Python-утилиты
- Если вам нужно установить простой веб-сервер менее чем за минуту, то просто используйте:
python3 -m http.server 35000- Если требуется распечатать файл json:
python3 -m json.tool afile.json- Если требуется запустить небольшие программы на Python:
python -c "import math; print (str (math.pi) [: 7])"- Если требуется применить математику:
python -c "print(6*6+20)"python -c "fctrl=lambda x:0**x or x*fctrl(x-1);print(fctrl(6))" # вычислить факториал
Различные полезности
Далее будут приведены всевозможные команды, которые во многом облегчат жизнь рядовому пользователю и сэкономят его время.
- Чтобы выполнить команду в течение указанного времени с использованием тайм-аута:
timeout 2 ping google.com- Отобразить изменяющуюся переменную:
watch -n 5 free -m- Используйте
yesдля автоматического подтверждения операций: yes | pip install pkg --upgradeyes "this is a test" | head -50 > testfile.txt # позволяет создать файл с произвольным количеством строк- Создание PDF-файла из текста с помощью vim:
vim states.txt -c "hardcopy> states.ps | q" &&ps2pdf states.ps # позволяет преобразовать .ps в .pdf- Запуск команды от имени другой группы Linux:
sg grpgit -c 'git push'- Отображение CSV-файла в формате столбца или таблицы:
column -t -s , filename.csv- В случае, если возникли трудности с отправкой двоичных исполняемых файлов по электронной почте:
xxd f.exe f.hex # hexdump exe, необходимо просто отправить его по e-mailxxd -r f.hex f.exe # конвертируем приёмник обратно в exe- Если требуется сгенерировать пароль:
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8openssl rand 8 -base64 | cut -c1-8 # -base64 8 для конкретной версии- Pandoc для конвертации файлов (md, tex, txt, html, docx, pdf, odt):
pandoc manual.md -o manual.pdfpandoc example.txt -o example.htmlpandoc -s example.txt -o example.docx- Также можно анализировать и читать файлы XML с помощью
xmllint. - Чтобы разделить большой файл на небольшие части (например, для отправки в виде вложения по почте):
split -b 20M large.tgz parts_ # блоки по 20 МБ# отправить части__* по почтеcat parts_a *> large.tgz # на принимающей стороне
Если вы пользуетесь не только Linux, но и Windows, посмотрите наше руководство по Windows PowerShell для начинающих.
Спасибо за прочтение!

- ✅Основной канал - https://t.me/under_public
- 🏴☠️ Приватный канал - https://t.me/joinchat/AAAAAEmM-bkL9Pv7KLyL7w
- 🛒HackAli - cамые интересные хакерские товары с Aliexpress!
- 👨💻Termux, please - 100% termux
- 🐧Linux, please - всё о Linux
- 💭Чат - https://t.me/UnderChats
Также вы можете присылать ваши статьи в бота (оформляйте в телеграфе), я их просмотрю, если всё ОК - опубликую статью на канале с указанием автора.