ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как создать пользовательские команды в Linux

В этой статье мы покажем вам, как создавать пользовательские команды в Linux, которые позволят вам создавать команды «быстрого доступа» с использованием простого имени по вашему выбору. Еще лучше, вы можете объединить несколько команд, подобных этому, и запустить их все одним словом. Полезно, правда? По мере того, как вы все больше знакомы с Linux, вы столкнетесь с командами на форумах и учебниках, которые могут быть очень сложными (и странными). Рассмотрим следующий пример, чтобы распечатать список файлов в одном столбце:

ls -l --color | awk '{print $ 9}'

 

Это дает нам следующий результат:

Как создать пользовательские команды в Linux

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

Шаг 1. Откройте файл в текстовом редакторе с помощью имени files

Предположим, мы хотим назвать нашу новую команду «files». Мы создаем новый файл с именем «files», используя текстовый редактор «vi», указав следующую команду:

vi files

 

Эта команда откроет базовый редактор, в котором вы можете ввести текст. По умолчанию он будет находиться в режиме «чтения», и вы не сможете добавить новый текст. Измените это, чтобы вставить режим, нажав клавишу «Вставить» на клавиатуре.

Теперь скопируйте и вставьте следующий текст. Вы можете быстро вставить его в терминал, щелкнув его правой кнопкой мыши.

#!/bin/bash
# Print list of files in one column
ls -l --color | awk '{ print $9 }'

 

Как вы можете видеть, это вставляется в vi, когда включен режим «INSERT»:

Это называется «скриптом», и он состоит из трех частей:

  1. Он начинается со слов “#!/bin/bash”
  2. Строки, начинающиеся с hashtag (#), являются комментариями
  3. Остальные команды. Заменяют третью строку сложной командой, которую вы хотите упростить

Теперь выйдите из режима «Вставки», нажав клавишу «Esc». Сохраните файл, нажав Shift + Z + Z (Удерживая клавишу shift, нажмите «z» два раза).

Теперь файл сохранится в текущей папке. Вы можете отобразить его содержимое, введя:

cat files

 

Это дает следующий результат:

Шаг 2: Назначьте правильные разрешения для нашего скрипта

Если мы просто перечислим файлы в каталоге, вы увидите, что наш новый файл является одним из них.

Однако это обычный файл, а не тот, который может быть выполнен. Команда «ls» отображает исполняемые файлы зеленым цветом. Поэтому нам нужно сообщить Linux, что наш новый файл является исполняемым. Мы делаем это, введя следующее:

chmod 755 files

 

Это изменяет права доступа к файлам и делает их исполняемыми. Теперь «ls» показывает файл как зеленый:

Пришло время запустить нашу команду!

Шаг 3: Указание путей к нашему скрипту

К сожалению, мы не можем просто набрать «files» в текущем каталоге, чтобы запустить наш новый скрипт. Появляется сообщение об ошибке: “command not found”:

Это связано с тем, что Linux ищет регулярные команды в определенном наборе каталогов, на которые ссылается переменная $PATH. И наш текущий каталог отсутствует в этом списке.

Итак, у нас есть три варианта:

  1. Вручную укажите полное местоположение нашего файла сценария каждый раз
  2. Добавьте «текущий каталог» в переменную $PATH
  3. Переместите наш файл сценария в существующую папку, на которую ссылается $PATH

Давайте посмотрим, как сделать все три:

Способ 1. Вручную укажите полное местоположение

Когда мы попытались просто набрать «files» ранее, мы получили сообщение об ошибке. Но мы можем указать текущий каталог для нашего файла сценария следующим образом:

./files

 

И это работает, как вы можете видеть ниже:

К сожалению, это не сработает, если мы будем в другой папке. Мы должны указать полный путь, который является болью.

Способ 2. Добавить «Текущий каталог» в переменную PATH

Этот метод имеет ту же проблему, что и первая. Мы можем сказать, что Linux всегда ищет «текущий каталог» для скриптов и команд. Таким образом, нам не придется использовать «./». Мы можем временно добавить текущий каталог в $ PATH следующим образом:

PATH="$PATH:."

 

Теперь просто набрав «файлы», как показано здесь:

Однако этот подход имеет две проблемы:

  1. Как уже упоминалось, вы не можете получить доступ к сценарию из любого другого каталога, кроме своего собственного
  2. Изменение в $PATH является временным. Он будет сброшен, когда сеанс пользователя закончен!

Чтобы изменения в $PATH были постоянными, нам необходимо отредактировать этот файл:

~/.bash_profile

 

Как и раньше, мы можем использовать редактор vi:

vi ~/.bash_profile

 

Снова нажмите «Вставить», чтобы перейти в режим INSERT, и перейдите к строке с указанием переменной PATH, как показано ниже:

Теперь добавьте следующее в конец строки PATH:

:.

 

Это двоеточие (:), за которым следует точка (.). Сохраните файл в vi, нажав «Esc» и Shift + z + z, как раньше. Однако изменения не вступят в силу до перезагрузки ~/.bash_profile. Сделайте это, используя следующую команду:

source ~/.bash_profile

 

Вы можете проверить, произошли ли изменения, вызвав переменную $PATH. Вы должны увидеть дополнение в конце строки следующим образом:

Теперь изменение сохранится даже после завершения сеанса пользователя. Однако вы все равно не можете выполнить команду из любой папки. Для этого нам нужен метод 3.

Способ 3: добавьте файл в существующий пункт назначения $PATH (рекомендуется)

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

Во-первых, получите список местоположений $PATH с помощью echo $PATH, как показано в методе 2.

Каждое расположение папки разделяется двоеточием (:) Вы можете видеть на скриншоте выше, что папка /usr/local/bin является одним из путей.

Поэтому мы просто переместим нашу пользовательскую команду в это место (или любую другую папку в $PATH) с помощью этой команды:

mv files/usr/local/bin

 

И теперь мы можем изменить нашу рабочую папку и получить доступ к скрипту из любой точки!

На этом скриншоте я переместил сценарий в /usr/local/bin и переместил одну папку на «cd ..». И команда все еще работает!

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

Счастливые скрипты!

Exit mobile version