Могу ли я сделать свои собственные команды?

Мне было интересно, могу ли я сделать свои собственные команды так, как если бы я ввел «музыку» в командной строке, мой vlc должен открыть и начать играть в свой плейлист. Величина vlc - это всего лишь пример, но вопрос остается.

Могу ли я сделать свои собственные команды? Если да, то как?

12
задан 4 May 2012 в 14:33

4 ответа

Да - создайте файл с именем music и поместите внутри него следующее:

#!/bin/bash
echo "Hello world"

Затем введите chmod +x music - это делает исполняемый файл. Теперь вы можете ввести ./music для запуска этого скрипта.

Рекомендуется ввести echo $PATH и скопировать сценарий в один из этих каталогов. Я предложил бы создать $HOME/bin и добавить это к вашей музыке через ~/.bash_profile или ~/.profile. Это можно сделать, добавив (к одному из этих файлов): export PATH="$HOME/bin:$PATH". Затем вам нужно будет запустить source .bash_profile (при условии, что вы поместите его в этот файл), чтобы перезагрузить его.

Другой альтернативой было бы добавить команду, которую вы хотите запустить как псевдоним bash. Вы можете сделать это, добавив следующее в файл с именем .bash_aliases в своем домашнем каталоге:

alias music='vlc --some-option --foo'

Запустите source ~/.bash_aliases или выйдите из системы и войдите в систему, и он должен работать: -)

18
ответ дан 25 May 2018 в 11:54

Да - создайте файл с именем music и поместите внутри него следующее:

#!/bin/bash
echo "Hello world"

Затем введите chmod +x music - это делает исполняемый файл. Теперь вы можете ввести ./music для запуска этого скрипта.

Рекомендуется ввести echo $PATH и скопировать сценарий в один из этих каталогов. Я предложил бы создать $HOME/bin и добавить это к вашему PATH через ~/.bash_profile или ~/.profile. Это можно сделать, добавив (к одному из этих файлов): export PATH="$HOME/bin:$PATH". Затем вам нужно запустить source .bash_profile (при условии, что вы поместили его в этот файл), чтобы перезагрузить его.

Другой альтернативой было бы добавить команду, которую вы хотите запустить как псевдоним bash. Вы можете сделать это, добавив следующее в файл с именем .bash_aliases в своем домашнем каталоге:

alias music='vlc --some-option --foo'

Запустите source ~/.bash_aliases или выйдите из системы и войдите в систему, и он должен работать: -)

18
ответ дан 10 August 2018 в 07:27

Лучший способ сделать это - изменить (или создать) файл с именем .bash_aliases в вашей домашней папке.

Синтаксис довольно прост:

alias install='sudo apt-get -y install'

С помощью этой команды, если вы наберете install в терминале, она будет интерпретироваться как

sudo apt-get -y install

Однако эти команды не будут работать нигде вне терминала.

3
ответ дан 25 May 2018 в 11:54

Любой исполняемый файл в каталоге вашего пути может быть «командой». Это может быть сценарий, предложенный в других ответах, но он также может быть скомпилированной программой на любом поддерживаемом вами языке.

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

Если вы поместите свои новые команды в каталог на своем пути, они могут быть найдены оболочкой и казнены. Наиболее распространенное место для их размещения - $ HOME / bin. Если этот каталог существует, он часто будет автоматически добавляться к вашему пути.

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

2) Вы можете добавить $ HOME / bin в начало или конец вашего пути (или в любом месте между ними, но это обычно не делается).

Добавление его в начало вашего пути является наиболее удобным выбором, потому что ваша версия команды всегда будет той, которая выполняется, и она будет найдена быстрее. Это также уязвимость безопасности, потому что любой, кто может получить разрешение на запись в ваш $ HOME / bin (намного проще, чем получить root-доступ), может очень легко заменить распространенные команды потенциально вредоносным кодом. Кроме того, если вам когда-либо понадобится обратиться за помощью к тому, кто не знает вашу систему, то они, скорее всего, будут сбиты с толку специальным поведением ваших пользовательских команд, если вы не потратите много лишних усилий, объясняя все, что находится на вершине просто задавая ваш вопрос.

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

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

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

1
ответ дан 25 May 2018 в 11:54

Другие вопросы по тегам:

Похожие вопросы: