Игра Яндекс Практикума
Игра Яндекс Практикума
Игра Яндекс Практикума

Топ крутых команд Linux — спасителей времени

Подобрали семь нестандартных и забавных директив, чтобы разработка проходила быстрее и комфортнее

2К открытий7К показов
Топ крутых команд Linux — спасителей времени

Linux — прекрасное семейство операционных систем, поскольку за долгие годы была создана огромная база тредов под любой, самый тонкий запрос. В пучине плавающих багов, ада зависимостей и прочих проблем разработчика она воспринимается как островок стабильности и спокойствия, ведь по два дня на отладку бага тратить, скорее всего, не придется. Если вы работаете с этой системой регулярно, уже запомнили основные команды Linux и ищете способ совершенствоваться в обращении с терминалом, далее я расскажу о нетиповых, но очень полезных директивах.

Начинающим же советую статью с базовыми операторами.

nl: нумерация строк

Порой приходится вычитывать и редактировать код прямо в CLI, ведь некоторые файлы не дублируются силами git на ноутбук намеренно. Такое встречается, например, при разработке вебхук-ботов. Если в большинстве IDE строки пронумерованы по умолчанию, то почему бы не сохранить комфорт и при работе с терминалом? Здесь поможет команда nl:

			root@alias:~# nl some_code.py 1 import pandas as pd
2 import re 
3 
4 @dp.message_handler(commands=['start'], state=None)
		

&&: комбинация независимых команд

Большинство линуксоидов знакомятся с конвейерами (pipe) на курсах и знают, как передать результат первой команды второй:

			cmd1 | cmd2 | .... | cmdN
		

Но что писать bash, если понадобилось запустить несвязанные команды? Pipe в таком случае выпадает в ошибку. Здесь на помощь придет оператор «двойной амперсанд»:

			root@alias:~# ls -l && touch test.txt
total 16
drwxr-xr-x 11 root root 4096 Nov 21 13:00 read-is-bot
-rw-r--r--  1 root root 4625 Oct 22 10:56 resize.log
drwx------  3 root root 4096 Oct 17 12:28 snap
		

Вывода у второй директивы нет, но файл появился:

			root@alias:~# ls
read-is-bot  resize.log  snap  test.txt
		

pv: удивляем родителей

Это развлекательный инструмент, позволяющий имитировать скорый набор текста, как у хакеров в кино. Прежде чем баловаться этой красотой, установим pv:

			apt install pv
		

Теперь запустим набор текста командами echo и pv:

			echo "Набираем многоэтажный код" | pv -qL 20
		

Если быстро нажимать клавиши, можно ненароком стать сыном маминой подруги

at: отложенный запуск

Подходит для и̶м̶и̶т̶а̶ц̶и̶и̶ ̶р̶а̶б̶о̶т̶ы запуска команд в определенное время, под капотом используется утилита cron.

Если регулярных директив по расписанию собирается целая коллекция, лучше перейти на Apache Airflow. Гайд по установке ПО можно изучить здесь.
			python3 loader.py | at 14:012
		

>: отправка логов в файл

Если на вашем сервере сидит проект из нескольких десятков взаимосвязанных модулей (например, сайт на Django), то мониторить в консоли все ошибки, с которыми сталкиваются посетители портала, просто бессмысленно. Лучше наладить вывод из главного файла проекта, впоследствии почитывать трейсбеки и исправлять возникающие проблемы:

			deploy/run.sh > errors.log
		

cmatrix: raining code, как в «Матрице»

Прекрасный скринсейвер силами сторонней утилиты. Для запуска «дождя из кода» достаточно одноименной команды:

			apt install cmatrix
cmatrix
		

fold: подгонка под длину «не более 80 символов»

Еще одна сторонняя утилита от «жертв» Vim, судя по всему, ибо горизонтальная прокрутка там неудобная:

			fold unfolded_code.py > folded_code.py
		

Посмотрим, как утилита разрубила код на куски не более 80 символов:

			vim folded_code.py
		

Не нравится мне это в случае с кодом (разорвал аргумент функции), жди ошибок. Но для текстовых файлов очень удобно:

			@dp.callback_query_handler(Text(startswith=f'usefullness/{texts.usefullness_opti # разрыв
ons[2]}'))
async def get_path(call: types.CallbackQuery):
    '''Выбор Другое при отзыве'''
    await call.message.edit_text(texts.please_feed)
    # установим состояние чтобы собрать отзыв
 пользователя о полезности статьи
    await st.States.question1.set()
		

Может, вы знаете утилиту для автоматических переносов строк в коде для Linux? Поделитесь в комментариях.

Заключение

Команды терминала представляют собой неотъемлемую часть эффективного управления операционной системой. Знание их и корректное применение способствуют повышению производительности и обеспечивают более глубокий контроль над проектом.

Вы считаете Linux удобной ОС?
Да, и с интерфейсом, и без
Нет, обои три года менять, в CLI неудобно
Еще не определился(-лась)
Следите за новыми постами
Следите за новыми постами по любимым темам
2К открытий7К показов