Сборка программ и утилиты терминала Linux. Часть третья
Рассмотрим утилиты терминала Linux и главные инструменты для сборки программ, которые сэкономят время и повысят эффективность работы.
5К открытий6К показов
Мы уже рассказали об основных командах терминала 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.ogcc -c dep2.c # создать dep2.ogcc -c main.c # создать main.o
gcc -o an_exe main.o dep1.o dep2.o -lm
Утилиты терминала Linux
Чтобы запустить команду в определённое время, используйте at:
at 17:00at> log_days_activities.sh # иногда можно сократить: at> prompt [Ctrl+D]
at предлагает использование ключевых слов, таких как now, noon, today, tomorrow (сейчас, полдень, сегодня, завтра), а также различные опции, например, часы и дни, которые можно указывать с символом +.
at noonat now + 1 yearat 3:08pm + 1 dayat 15:01 December 19, 2018
Используйте cron, если вы хотите задать периодичность запуска команд.
Утилита терминала Linux cron позволяет настроить периодический запуск посредством файла crontab, который управляет процессом и определяет, что и когда требуется выполнить. Запись может быть создана в любом файле и добавлена в систему с помощью команды crontab следующим образом:
echo '15 18 30 6 * find /home -mtime +30 -print' > f00crontab f00 # добавить предыдущую команду в систему crontab
crontab -l # список записей crontabcrontab -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 для начинающих.
5К открытий6К показов





