Рубрики
Без рубрики

Создать Пользовательскую Команду Терминала

Пользовательские команды так распространены в нашей повседневной работе. Давайте посмотрим, как они работают и как мы можем создать их на любом из наших любимых языков.

Автор оригинала: anil chaudhary.

(https://unsplash.com/@hannahjoshua)

TLDR:

  1. Строки Shebangs добавляются поверх файлов командной строки. Строка указывает системе, какой исполняемый файл должен быть использован для запуска текущего файла. Линия shebang выглядит примерно так:
#!/usr/bin/env node

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

  1. Система ищет командные файлы или исполняемые файлы во всех каталогах, на которые указывает переменная окружения PATH . Вы также можете запускать различные исполняемые файлы сценариев, используя правильный синтаксис shebang.
  2. Таким образом , чтобы иметь действительную команду, в основном вам нужно иметь исполняемый файл в одном из каталогов PATH и исправить shebang для правильных исполняемых файлов.
Пойдем

Вы когда-нибудь задумывались, как вообще работают пользовательские команды? – Я задавался этим вопросом сегодня и взял на себя задачу покопаться в нем побольше.

Я постараюсь сделать его простым, потому что кто не любит простоту.

Прежде чем мы начнем, давайте определим нашу конечную цель. Мы хотим в основном запустить скрипт из командной строки, используя только их имя !!

Допустим, у нас есть файл с именем somework.js .

Предположим, что единственным содержимым файла является:

console.log("Hello World")

Как вы будете работать в узле js ?

Вы запустите его примерно так: node somework.js

Теперь, если я хочу запустить этот скрипт без команды node . Что-то вроде этого:

somework

Он должен работать так же, как и с командой node. Он должен вывести Hello World в терминале.

Давайте посмотрим на различные элементы, задействованные при выполнении команды.

Шебанг

Я работаю в основном в экосистеме javascript , поэтому у меня есть достаточно хорошее представление о том, как работают команды. Я знал, что достаточно поместить поле bin в package.json и указать на ваш скрипт( Read more ).

Я никогда не возвращался, чтобы выяснить, что происходит после этого.

На этот раз мне больше понравилось такое отношение.

Давайте сделаем это

Я начал смотреть на один из файлов bin в node_modules Одна вещь, которую я мог видеть, была специальная строка в верхней части файла, которая выглядела примерно так.

#!/usr/bin/env node

Если у вас есть приложение nodejs, продолжайте и проверьте любой файл в node_modules/bin . Вы должны найти подобную линию.

Я чувствовал , что это интересно. Я снова поискал. и приземлился на эту ссылку . Они называются shebang | hashbang | pound bang | hash-pling

Оказалось, что шебанг-это интерпретатор-директива

О-о-о-о!! 😲 😲

Но что такое интерпретатор-директива ? . Проще говоря, это просто способ сказать системе, как реагировать на вводимые вами команды ( какой исполняемый файл нужно запустить ?).

Простыми словами, если есть такая строка:

#!/usr/bin/env node

Это значит: Выполните файл с помощью интерпретатора узла, используя путь поиска программы, чтобы найти его.

Мы знаем, что хотим запустить файл nodejs, поэтому мы должны добавить строку в верхнюю часть нашего файла

Содержимое файла стало бы:

#!/usr/bin/env node

console.log("Hello World")

Дайте исполняемому файлу разрешение.

 chmod +x somework.js

Этого будет достаточно ?

Помните, что есть еще одна часть, которая

Используя программу поиска пути, чтобы найти его.

Что это значит? .. Давайте посмотрим на это в следующем разделе .

ПУТЬ

Нам нужно выяснить, как система ищет исполняемые файлы. И снова я искал его. а потом наткнулся на эту ссылку .

Примечание: Это только последние ссылки. На самом деле мне потребовалось гораздо больше времени, чтобы добраться до этих звеньев.

А теперь вернемся к делу

Как говорится в определении в википедии:

PATH-это переменная окружения в Unix-подобных операционных системах, DOS, OS/2 и Microsoft Windows, указывающая набор каталогов, в которых находятся исполняемые программы

Хм , здорово !! Но как мы видим, что такое значение PATH прямо сейчас в моей системе ?

RUN (Должен работать на терминалах на базе Linux)

echo $PATH

Примечание: Для ОС Windows проверьте следующую ссылку

Вы получите что-то вроде этого в качестве вывода:

/Users/wolfgupta/.nvm/versions/node/v14.15.3/bin:/Applications/mongo/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Library/Apple/usr/bin:$GOPATH/bin:$GOROOT/bin:/Users/wolfgupta/Library/Android/sdk/emulator:/Users/wolfgupta/Library/Android/sdk/tools:/Users/wolfgupta/Library/Android/sdk/tools/bin:/Users/wolfgupta/Library/Android/sdk/platform-tools:/usr/local/mysql/bin

Это набор каталогов, в которых ищутся файлы с тем же именем, что и команда. Файлы(somework.js) может содержать логику.

Как мы обновляем ПУТЬ ?

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

Вот некоторые из ссылок, которые вы можете найти полезными.

Вот некоторые из ссылок, которые вы можете найти полезными.

Вот некоторые из ссылок, которые вы можете найти полезными.

Если вы используете mac os/linux . Изменение ~/.bashrc , ~/.zshrc e.t.c должно сделать.

Если вы действительно хотите проверить другие общие определения команд node js, которые вы используете ежедневно.

Бежать

cd /usr/local/bin

ls

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

Как преобразовать узел somework.js чтобы немного поработать . сначала мы переименуем файл в just some work без расширения, а затем переместим его в /usr/local/bin

Бежать

mv ./somework /usr/local/bin

Теперь просто закройте текущую вкладку терминала и откройте новую вкладку.

Бежать

somework

Вы должны увидеть свой прекрасный Привет мир напечатанный на терминале.

Это о node, как насчет того, если вы являетесь python парнем и хотите написать свой скрипт на python. Вы очень хорошо можете сделать это с помощью ее челки

Измените содержимое файла в some work file at/usr/local/bin на

#!/usr/bin/env python

print("Hello World!")

Примечание: Убедитесь, что на вашем компьютере установлен python .

В этом файле вы можете написать любой скрипт python и будете работать так, как была запущена версия файла node js.

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

Наконец, желаю всем вам отличного нового 2021 года. Пусть мир станет лучше для всех нас в ближайшие годы.

Анил Чаудхари