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

Мне было интересно, смогу ли я сделать свои собственные команды, как если бы я набирал 'music' в командной строке, мой vlc должен открыться и начать воспроизведение моего плейлиста. VLC вещь только пример, но вопрос остается.

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

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

3 ответа

Да - создают файл, названный музыка , и помещают следующую внутреннюю часть это:

#!/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_aliases в корневом каталоге:

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

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

19
ответ дан 4 May 2012 в 13:33

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

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

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

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

sudo apt-get -y install

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

3
ответ дан 4 May 2012 в 13:33

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

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

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

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

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

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

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

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

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

1
ответ дан 4 May 2012 в 13:33

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

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