Сборка программ и утилиты терминала 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.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 1000
1.0K
numfmt --from=iec 1K
1024
- Использование
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 --upgrade
yes "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-mail
xxd -r f.hex f.exe # конвертируем приёмник обратно в exe
- Если требуется сгенерировать пароль:
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8
openssl rand 8 -base64 | cut -c1-8 # -base64 8 для конкретной версии
- Pandoc для конвертации файлов (md, tex, txt, html, docx, pdf, odt):
pandoc manual.md -o manual.pdf
pandoc example.txt -o example.html
pandoc -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К показов