Создайте собственную команду Linux
Обновлено: 21.11.2024
tl;dr: Пользовательские команды bash — это ключевые слова, которые вы можете явно определить для выполнения новой функции или сокращения существующей команды. Эти команды чрезвычайно универсальны и настраиваемы, что позволяет вам адаптировать их для повышения производительности. Как только они будут определены в вашем документе .bash_profile, вы сможете вызывать их в любом новом сеансе терминала.
Мне, как молодому программисту, взаимодействие с моим компьютером через терминал (или bash) может иногда казаться странным и неуклюжим. Я нахожусь на пятой неделе в программе разработки программного обеспечения Flatiron School, и мы проходим множество лабораторных работ в рамках учебной программы. Чтобы работать с каждой лабораторией, мне нужно было выполнить ряд шагов, чтобы открыть ее:
- Вилка со страницы Github
- Клонировать в локальный каталог
- Перейдите в папку лаборатории.
- Установите в пакете необходимые компоненты Ruby (для лабораторий Ruby/Ruby on Rails)
- Откройте проект в текстовом редакторе
Пять шагов, чтобы открыть лабораторию на моем компьютере! Через некоторое время я понял, что должен быть лучший способ. Как оказалось, все это можно упростить в один простой шаг. Введите пользовательские команды bash.
- Легкий переход в каталог с длинным путем к файлу
- Добавить, зафиксировать, отправить и объединить Git с помощью одной команды.
- Простое объединение установки, переноса и заполнения только что открытого проекта.
- Загрузите версию видео YouTube в формате mp3 со своего терминала.
- Все, что вы можете придумать!
Добавить пользовательские команды можно всего за 4 простых шага:
1. Откройте документ своего профиля bash
Каждый раз, когда вы открываете новый сеанс терминала, он загружает ваши настройки из скрытого документа. Файлы, связанные с терминалом, обычно скрыты или невидимы. Эти файлы имеют расширение . в начале своего имени, не отображаются при поиске и обычно хранятся в корневом каталоге. Для наших целей нам нужно только знать, как просматривать, открывать и создавать эти файлы, но для получения дополнительной информации см. дополнительную информацию ниже 1 . Чтобы просмотреть эти файлы, введите в терминале следующие команды:
Первая команда выполняет переход в корневой каталог (если он еще не там), а вторая распечатывает все сохраненные там файлы. Вы должны увидеть файл с именем .bash_profile. Идите вперед и откройте это в любом текстовом редакторе. Теперь вы можете добавить свои пользовательские команды в любое место в этом документе, но в духе удобочитаемого кода мы создадим новый документ со всеми нашими новыми командами и просто свяжемся с этим документом в нашем профиле bash.
2. Создайте пользовательский файл команд
Чтобы создать новый невидимый файл, введите в терминале следующую команду:
Откройте это в предпочитаемом вами текстовом редакторе и добавьте следующий код:
После того как вы сохранили этот файл, нам нужно проверить, работает ли он. Чтобы сделать эту команду доступной, введите следующее:
Теперь попробуйте новую команду:
Вы должны увидеть Привет, Шейн! (или любое другое имя, которое вы укажете в качестве аргумента), распечатанный. Поздравляю! Вы только что создали свою первую пользовательскую команду bash. Однако использование вышеприведенного потребует от вас запускать исходную команду каждый раз, когда вы открываете новый терминал. Если мы свяжемся с этим файлом в нашем профиле bash, наши новые команды будут предварительно загружены в каждый новый сеанс терминала.
3. Ссылка на файл в вашем профиле bash
Вернувшись в документ .bash_profile, добавьте ту же команду, которую мы запускали ранее, источник ~/.my_custom_commands.sh в любом месте. Это будет просто запускать исходную команду, ссылаясь на ваши пользовательские команды, каждый раз, когда вы открываете новый терминал. Чтобы получить доступ к этим командам, вы можете либо запустить source ~/.bash_profile, либо закрыть терминал и открыть новый сеанс.
4. Напишите свои собственные команды!
Существует два способа создания пользовательской команды: псевдонимы и функции. Псевдоним обычно сокращает существующую команду, а функция может объединять несколько команд вместе.
псевдоним gcl language-plaintext highlighter-rouge">
Если вы передаете какие-либо аргументы в функцию, первый параметр будет сохранен в $1. Для нескольких параметров они будут храниться в $2 , $3 и т. д.
Технически эту функцию можно выполнить и с псевдонимом:
Это руководство написано в первую очередь для пользователей MacOS. Он должен работать для любой операционной системы на основе UNIX (например, Linux), но если у вас возникнут какие-либо проблемы, я предлагаю посмотреть, использует ли ваш компьютер оболочку для входа или без входа в систему 2 . Если вы не входите в систему, замена .bash_profile на .bashrc (управление запуском) в приведенных выше инструкциях должна работать.
Хотите улучшить этот вопрос?Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост.
Закрыт 8 лет назад.
Может ли кто-нибудь помочь мне создать собственные команды в Unix/Linux.
Для дальнейшего использования вам следует посетить страницу с фактами. Он объясняет, что вы должны указать в своих вопросах. (например, публикация вещей, которые вы исследовали и пробовали). Вероятно, поэтому кто-то проголосовал против этого вопроса.
4 ответа 4
Создайте bash-скрипт в папке /usr/bin, он должен выглядеть примерно так
Это действительно так просто.
Просто назовите сценарий bash так, как вы хотите ввести в терминал, и сделайте его исполняемым: chmod +x имя файла, и все готово!
Папка
/usr/bin предназначена для дистрибутива Linux. ~/bin — подходящее место для хранения личных вещей, а /usr/local/bin — для пользовательского программного обеспечения, предназначенного для использования всеми пользователями системы. Хотелось бы сохранить степень логического разделения/удобную навигацию по собственным файлам.
-
Создайте каталог, скажем, «bin» в вашем домашнем каталоге.
Обновите переменную пути, чтобы включить этот каталог bin. Поместите это в файл .profile или .bash_profle, чтобы сделать его постоянным.
Создайте сценарий приветствия и сохраните его в каталоге bin. Дайте разрешение на выполнение сценария hello с помощью $ chmod +x hello .
Перезагрузите .profile или .bash_profile :
В любом каталоге просто введите:
Я знаю, что это очень старо, но я видел ваше предложение создать папку bin во многих ответах здесь. Есть ли проблема, если это .bin вместо bin?. Я очень придирчив к тому, как выглядит мой дом, и мне не нужна лишняя папка просто так.
Я безуспешно пытался использовать это и какое-то время был очень разочарован, думая, что что-то не так с моей установкой zsh или $PATH, но в итоге оказалось, что chmod -x hello не работает, как и заглавная -X. . Вместо этого я попробовал chmod 755 hello, хотя я не уверен в угрозах безопасности, связанных с этой командой, она на самом деле позволила мне запустить hello. У кого-нибудь есть объяснение этому? Я предполагаю, что проблема связана с возрастом?
@ConstantFun Используйте команду chmod +x hello, чтобы добавить к сценарию привилегии запуска. chmod -x hello делает прямо противоположное — удаляет привилегии «выполнить». (Обратите внимание на разницу в знаке плюс/минус в ответе и в вашем комментарии.)
Легко, создайте псевдоним.
Скажем, вы хотите записать команду cd в каталог загрузки. И вы хотите назвать его cdd.
Вы можете создать любую команду.
Однако это не сохраняется между сеансами. Эта команда работает, но не является постоянной. Более постоянным способом было бы изменить ваш файл ~/.bash_aliases и добавить туда строку, которую вы предложили.
@JeffGrimes, вы можете поместить его в файл ~/.profile (или .bashrc, как упомянула Дейлишия), и он будет достаточно постоянным. кстати очень полезно на хостингах с ограниченными правами на редактирование файлов
Я думаю, что добавление псевдонима в ваш файл .bashrc — это самый элегантный и простой способ настроить вашу команду. Спасибо!
В большинстве, если не во всех, дистрибутивах Linux есть небольшой скрипт в файле ~/.bashrc, который выглядит почти идентично этому:
Это просто означает, что вы можете создавать свои собственные команды (также известные как «псевдонимы», обычно относящиеся к существующей команде с некоторыми аргументами, которые вы всегда должны использовать, или к списку команд, которые должны выполняться по порядку). р>
В вашем дистрибутиве Linux, скорее всего, не будет файла .bash_aliases, созданного у вас дома, если вы уже не сделали это вручную. Чтобы создать файл, введите следующую команду:
touch ~/.bash_aliases
Теперь этот файл будет выполняться автоматически каждый раз, когда вы запускаете новый Терминал.
Сейчас вы можете создать список псевдонимов и добавить их в этот файл для дальнейшего использования. Например, команда rm (удалить) по умолчанию НЕ просит вас подтвердить ваш запрос, когда вы говорите ей удалить файл/каталог. Однако есть аргумент, который говорит rm попросить вас подтвердить ваш запрос, -i . Итак, rm -i filePath отобразит сообщение с вопросом, уверены ли вы, что хотите удалить указанный файл. Теперь, если вы случайно удалите файл, вы, скорее всего, забудете включить параметр -i, и именно здесь псевдоним становится очень полезным. Введите следующую команду
сообщит Bash, что каждый раз, когда вы запрашиваете удаление файла, вам будет отображаться подтверждающее сообщение. Конечно, вы можете сделать гораздо больше — это только основы.
Мы всегда говорим о командах для запуска в Linux CLI, консолях, эмуляторах терминала и т. д. Но на этот раз мы представляем вам немного другое руководство, это мини-руководство по созданию собственной команды Linux. Да, как вы это слышали, мы можем легко и просто создать свой собственный инструмент и вызвать его из консоли Linux, чтобы запустить его и наслаждаться им. Для этого у нас есть разные варианты, так как мы можем использовать разные языки программирования для его создания, хотя для нашего примера мы просто сосредоточимся на сценариях оболочки для Bash.
Процедура создания программы или команды требует следующих шагов:
- Напишите код нашего инструмента. Если вы уже знаете, что вам нужно или чего вы хотите, напишите исходный код вашего инструмента, каким бы он ни был и на каком бы языке вы ни выбрали. Например, вы можете сделать это на C, Python, Perl или в виде скрипта для Bash.
- Скомпилируйте исходный код для создания исполняемого файла. Например, если он на C или C++ и т. д., то можно сделать это с помощью компилятора gcc простым способом. Если это интерпретируемый язык, такой как Python, Perl, Ruby и т. д., нам нужно будет установить его интерпретатор и сделать файл с исходным кодом исполняемым. Это также относится и к скрипту для Bash, в этом случае интерпретатором является сам Bash, и чтобы сделать его исполняемым, мы можем использовать: chmod + x script_name.sh
- После того, как исполняемый файл скомпилирован или у нас есть, мы копируем его или перемещаем на маршрут, включенный в переменную окружения $PATH, например, /usr/bin. Вы можете увидеть пути с помощью команды echo $PATH. При этом мы можем выполнить его, просто введя его имя, и нам не нужно указывать абсолютный путь.
После этого наша команда готова к выполнению. вы можете написать его имя, и оно будет выполнено.
Например, чтобы вы поняли, приведу практический пример:
- Шаг 1: мы собираемся написать код, в данном случае простой bash-скрипт, для этого откройте любимый текстовый редактор и напишите следующий код (или код вашего скрипта):
- Шаг 2: мы сохраняем текстовый файл, и в моем случае я назову его hello. И теперь я делаю его исполняемым ;:
- Шаг 3: теперь пришло время переместить его по известному пути, чтобы не всегда находиться в каталоге, где он размещен, или указать абсолютный путь для его выполнения.
И теперь мы можем запустить его с помощью простой команды:
И в этом случае вы должны увидеть на экране простое сообщение «Hello World«
Содержание статьи соответствует нашим принципам редакционной этики. Чтобы сообщить об ошибке, нажмите здесь!.
В этом руководстве мы покажем вам, как создавать пользовательские команды в Linux, которые позволят вам создавать «горячие» команды, используя простое имя по вашему выбору. Более того, вы можете связать несколько подобных команд вместе и запустить их все одним словом. Полезно, правда? По мере того, как вы будете все больше и больше знакомиться с Linux, вы будете сталкиваться с командами на форумах и в руководствах, которые могут быть очень сложными (и странными). Рассмотрим следующий пример, чтобы распечатать список файлов в одном столбце:
Это дает нам следующий результат:
Пока все хорошо. Но что, если вы хотите часто использовать эту команду? Эту букву за буквой сложно запомнить, ее нелегко напечатать, и это занимает слишком много времени. Теперь добавьте десятки других команд с таким же (или более высоким) уровнем сложности, и легко увидеть, что нам нужно новое решение.
Оглавление
Шаг 1. Откройте файл в текстовом редакторе с названием вашей команды
Допустим, мы хотим назвать нашу новую команду «файлы». Мы создаем новый файл с именем «files» с помощью текстового редактора «vi», введя эту команду:
Откроется базовый редактор, в котором вы сможете ввести текст. По умолчанию он будет в режиме «чтения», и вы не сможете добавить новый текст. Измените его на режим вставки, нажав клавишу «Insert» на клавиатуре.
Теперь скопируйте и вставьте следующий текст. Вы можете быстро вставить в терминал, щелкнув правой кнопкой мыши внутри него.
Как видите, это вставляется в vi, когда включен режим «INSERT»:
Это называется "сценарий" и состоит из трех частей:
Теперь выйдите из режима «Вставка», нажав клавишу «Esc». Сохраните файл, нажав Shift+Z+Z (удерживая клавишу Shift, дважды нажмите «z»).
Теперь файл сохранен в вашей текущей папке. Вы можете отобразить его содержимое, набрав:
Это дает следующий результат:
Шаг 2. Назначьте правильные разрешения для нашего скрипта
Если мы просто перечислим файлы в каталоге, вы увидите, что наш новый файл является одним из них.
Однако это обычный файл, который нельзя запустить. Команда «ls» отображает исполняемые файлы зеленым цветом. Итак, нам нужно сообщить Linux, что наш новый файл является исполняемым. Мы делаем это, набрав следующее:
Это изменяет права доступа к файлу и делает его исполняемым. Теперь «ls» показывает файл зеленым цветом:
Пришло время запустить нашу команду!
Шаг 3. Указание путей к нашему скрипту
К сожалению, мы не можем просто ввести «файлы» в текущий каталог, чтобы запустить наш новый скрипт. Мы получаем сообщение об ошибке «команда не найдена»:
Это связано с тем, что Linux ищет обычные команды в определенном наборе каталогов, на которые ссылается переменная $PATH. И нашего текущего каталога нет в этом списке.
Итак, у нас есть три варианта:
- Каждый раз вручную указывать полное местоположение нашего файла скрипта
- Добавить «текущий каталог» в переменную $PATH
- Переместите наш файл сценария в существующую папку, на которую ссылается $PATH
Давайте посмотрим, как сделать все три:
Способ 1. Укажите полное местоположение вручную
Когда мы пытались просто ввести «файлы» ранее, мы получили ошибку. Но мы можем указать текущий каталог для нашего файла скрипта следующим образом:
И это работает, как вы можете видеть ниже:
К сожалению, это не сработает, если мы находимся в другой папке. Нам пришлось бы указывать полный путь, а это мучительно.
Способ 2. Добавьте «Текущий каталог» в переменную PATH
У этого метода та же проблема, что и у первого. Мы можем указать Linux всегда искать сценарии и команды в «текущем каталоге». Таким образом, нам не придется использовать «./». Мы можем временно добавить текущий каталог в $PATH следующим образом:
Однако у этого подхода есть две проблемы:
- Как уже упоминалось, вы не можете получить доступ к сценарию из любого другого каталога, кроме его собственного.
- Изменение $PATH является временным. Он будет сброшен, когда сеанс пользователя завершится!
Чтобы сделать изменения $PATH постоянными, нам нужно отредактировать этот файл:
Как и раньше, мы можем использовать редактор vi:
Теперь добавьте следующее в конец строки PATH:
Это двоеточие (:), за которым следует точка (.). Сохраните файл в vi, нажав «Esc» и Shift+z+z, как раньше. Однако изменения не вступят в силу, пока вы не перезагрузите ~/.bash_profile. Сделайте это с помощью следующей команды:
Вы можете проверить, произошли ли изменения, отобразив эхом переменную $PATH. Вы должны увидеть дополнение в конце строки следующим образом:
Теперь изменение сохранится даже после завершения сеанса пользователя. Однако вы по-прежнему не можете выполнить команду из любой папки. Для этого нам нужен метод 3.
Способ 3. Добавьте файл в существующее место назначения $PATH (рекомендуется)
По моему мнению, это лучший способ добавить пользовательскую команду, чтобы вы могли получить к ней доступ из любого места.
Сначала получите список местоположений $PATH, повторив PATH, как показано в методе 2.
Каждое расположение папки отделено двоеточием (:). На приведенном выше снимке экрана видно, что папка /usr/local/bin является одним из путей.
Поэтому мы просто перемещаем нашу пользовательскую команду в это место (или в любую другую папку в $PATH) с помощью этой команды:
Теперь мы можем изменить нашу рабочую папку и получить доступ к скрипту из любого места!
На этом снимке экрана я переместил скрипт в /usr/local/bin и поднялся на одну папку вверх по «cd..». И команда все еще работает!
Это правильный способ создания пользовательских команд в Linux. Это лишь верхушка айсберга, когда дело доходит до сценариев в Linux. Вы можете писать сложные логические циклы и выполнять условные операторы. Вы также можете использовать это для создания псевдонимов для существующих команд или объединения их вместе для автоматического выполнения! Если это ваш первый опыт написания сценариев для Linux, будьте готовы получить доступ к огромному количеству возможностей и функций в будущем.
В Linux не нужно создавать пользовательские команды. Если вы используете одно из наших полностью управляемых решений для веб-хостинга, вы всегда можете обратиться в нашу службу технической поддержки с просьбой создать пользовательскую командную строку в Linux. Они доступны 24/7 и помогут вам в любом аспекте управления вашим сервером.
Если вам понравился этот пост о том, как создавать пользовательские команды в Linux, поделитесь им с друзьями в социальных сетях с помощью кнопок ниже. Если у вас есть какие-либо вопросы относительно этого поста в блоге, оставьте комментарий и один из наших системные администраторы ответят на него. Спасибо!
2 мысли о «Как создавать пользовательские команды в Linux»
Наличие текущего рабочего каталога (".") в PATH является уязвимостью системы безопасности. Лучше поместить скрипт в $HOME/bin, который, как показано на картинке, уже был в вашем PATH, так что вам даже не нужно было его редактировать. Конечно, конкретный пример в этой статье в любом случае лучше реализовать как функцию, чем скрипт.
Рекомендуется добавить файл в существующий $PATH, как указано в той же статье.
Читайте также: