vi files
В этой статье мы покажем вам, как создавать пользовательские команды в Linux, которые позволят вам создавать команды «быстрого доступа» с использованием простого имени по вашему выбору. Еще лучше, вы можете объединить несколько команд, подобных этому, и запустить их все одним словом. Полезно, правда? По мере того, как вы все больше знакомы с Linux, вы столкнетесь с командами на форумах и учебниках, которые могут быть очень сложными (и странными). Рассмотрим следующий пример, чтобы распечатать список файлов в одном столбце:
ls -l --color | awk '{print $ 9}'
Это дает нам следующий результат:
Все идет нормально. Но что, если вы хотите часто использовать эту команду? Трудно запомнить это письмо для письма, его нелегко напечатать, и он слишком длительный. Теперь добавьте десятки других команд с похожими (или большими) уровнями сложности, и легко увидеть, что нам нужно новое решение.
Предположим, мы хотим назвать нашу новую команду «files». Мы создаем новый файл с именем «files», используя текстовый редактор «vi», указав следующую команду:
vi files
Эта команда откроет базовый редактор, в котором вы можете ввести текст. По умолчанию он будет находиться в режиме «чтения», и вы не сможете добавить новый текст. Измените это, чтобы вставить режим, нажав клавишу «Вставить» на клавиатуре.
Теперь скопируйте и вставьте следующий текст. Вы можете быстро вставить его в терминал, щелкнув его правой кнопкой мыши.
#!/bin/bash # Print list of files in one column ls -l --color | awk '{ print $9 }'
Как вы можете видеть, это вставляется в vi, когда включен режим «INSERT»:
Это называется «скриптом», и он состоит из трех частей:
Теперь выйдите из режима «Вставки», нажав клавишу «Esc». Сохраните файл, нажав Shift + Z + Z (Удерживая клавишу shift, нажмите «z» два раза).
Теперь файл сохранится в текущей папке. Вы можете отобразить его содержимое, введя:
cat files
Это дает следующий результат:
Если мы просто перечислим файлы в каталоге, вы увидите, что наш новый файл является одним из них.
Однако это обычный файл, а не тот, который может быть выполнен. Команда «ls» отображает исполняемые файлы зеленым цветом. Поэтому нам нужно сообщить Linux, что наш новый файл является исполняемым. Мы делаем это, введя следующее:
chmod 755 files
Это изменяет права доступа к файлам и делает их исполняемыми. Теперь «ls» показывает файл как зеленый:
Пришло время запустить нашу команду!
К сожалению, мы не можем просто набрать «files» в текущем каталоге, чтобы запустить наш новый скрипт. Появляется сообщение об ошибке: “command not found”:
Это связано с тем, что Linux ищет регулярные команды в определенном наборе каталогов, на которые ссылается переменная $PATH. И наш текущий каталог отсутствует в этом списке.
Итак, у нас есть три варианта:
Давайте посмотрим, как сделать все три:
Когда мы попытались просто набрать «files» ранее, мы получили сообщение об ошибке. Но мы можем указать текущий каталог для нашего файла сценария следующим образом:
./files
И это работает, как вы можете видеть ниже:
К сожалению, это не сработает, если мы будем в другой папке. Мы должны указать полный путь, который является болью.
Этот метод имеет ту же проблему, что и первая. Мы можем сказать, что Linux всегда ищет «текущий каталог» для скриптов и команд. Таким образом, нам не придется использовать «./». Мы можем временно добавить текущий каталог в $ PATH следующим образом:
PATH="$PATH:."
Теперь просто набрав «файлы», как показано здесь:
Однако этот подход имеет две проблемы:
Чтобы изменения в $PATH были постоянными, нам необходимо отредактировать этот файл:
~/.bash_profile
Как и раньше, мы можем использовать редактор vi:
vi ~/.bash_profile
Снова нажмите «Вставить», чтобы перейти в режим INSERT, и перейдите к строке с указанием переменной PATH, как показано ниже:
Теперь добавьте следующее в конец строки PATH:
:.
Это двоеточие (:), за которым следует точка (.). Сохраните файл в vi, нажав «Esc» и Shift + z + z, как раньше. Однако изменения не вступят в силу до перезагрузки ~/.bash_profile. Сделайте это, используя следующую команду:
source ~/.bash_profile
Вы можете проверить, произошли ли изменения, вызвав переменную $PATH. Вы должны увидеть дополнение в конце строки следующим образом:
Теперь изменение сохранится даже после завершения сеанса пользователя. Однако вы все равно не можете выполнить команду из любой папки. Для этого нам нужен метод 3.
На мой взгляд, это лучший способ добавить вашу пользовательскую команду, чтобы вы могли получить к ней доступ из любого места.
Во-первых, получите список местоположений $PATH с помощью echo $PATH, как показано в методе 2.
Каждое расположение папки разделяется двоеточием (:) Вы можете видеть на скриншоте выше, что папка /usr/local/bin является одним из путей.
Поэтому мы просто переместим нашу пользовательскую команду в это место (или любую другую папку в $PATH) с помощью этой команды:
mv files/usr/local/bin
И теперь мы можем изменить нашу рабочую папку и получить доступ к скрипту из любой точки!
На этом скриншоте я переместил сценарий в /usr/local/bin и переместил одну папку на «cd ..». И команда все еще работает!
Это правильный способ создания пользовательских команд в Linux. Это всего лишь верхушка айсберга, когда дело доходит до сценариев в Linux. Вы можете писать сложные логические контуры и выполнять условные операторы. Вы также можете использовать это для создания псевдонимов для существующих команд или объединить их вместе для автоматического выполнения! Если это ваш первый набег на Linux-скрипты, будьте готовы получить доступ к богатству мощности и функциональности в будущем.
Счастливые скрипты!