Найти тему
ИТ разнообразно

Важность создания собственных инструментов

Создание собственных инструментов для интерфейса командной строки (CLI) является важным шагом, который должен предпринять любой пользователь, чтобы углубить понимание системы, над которой они работают.

С одной стороны, это предоставляет отличный путь к получению знаний и повышению эффективности.

Знание, как основа для создания эффективных инструментов Linux, заключается в изучении внутренних механизмов экосистемы Linux. Это включает в себя понимание:

  • основные компоненты и команды
  • стандартные утилиты Linux, такие как grep, awk, sed, cat, ps, cut и их комбинации
  • сценарии (например, bash)

Эффективность, поскольку она позволит вам автоматизировать, упростить и оптимизировать повседневные задачи.

На мой взгляд, каждый должен обладать базовым пониманием основ системы, которую он использует, включая интерфейс командной строки. Однако, даже среди инженеров-программистов я наблюдаю нежелание, даже страх использования интерфейса командной строки. Они остаются заложниками пользовательского интерфейса и графических сред разработки. В редких случаях, когда им приходится использовать терминал, они ограничивают себя копированием и вставкой команд из разных источников, не разбираясь в них должным образом.

Я определённо был одним из тех людей лет 10 назад или около того. Но со временем я понял, насколько мощным является интерфейс командной строки и каково это — иметь возможность делать практически всё в одном интерфейсе.

Это моё скромное мнение. =) И потому что хорошая статья всегда нуждается в немного бесстыдной саморекламе. Вот моя.

Недавно я столкнулся с ситуацией, когда мне приходилось перемещаться между случайно расположенными, но очень конкретными путями в моей системе. Поскольку повторные поиски в истории команд bash стали неудобными, я решил создать инструмент для плавной навигации. Итак, я разработал небольшой инструмент командной строки, чтобы облегчить этот процесс.

Но... команда cd является частью основного функционала оболочки, что означает, что когда вы выполняете cd внутри процесса, это влияет на текущий каталог только этого конкретного процесса. После завершения процесса ваш рабочий каталог возвращается к состоянию оболочки, с которой вы изначально начали работу.

Поэтому, чтобы обойти эту проблему, я решил не делать этого. Таким образом, команда просто печатает путь в консоли. Затем с помощью $() я захватываю stdout в локальную переменную, что позволяет мне при использовании команды cd действовать на основе этого пути.

Поэтому моя команда выглядит так:

cd $(bmk go 1)

И это отлично работает! Просто и эффективно.

Если вас заинтересовал этот небольшой инструмент командной строки, вы можете найти его здесь. Он написан на Rust, и поскольку я не предоставляю готовых бинарных файлов, вам придётся собрать его самостоятельно.

:)

Наслаждайтесь!

Перевод с некоторыми авторскими правками.

Автор оригинала: Stefanos Kouroupis.