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

12

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

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

harisibrahimkv
источник
Вы можете сделать сценарии, если это то, что вы хотите?
Алвар

Ответы:

19

Да - создайте файл с именем 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или выйдите из системы и войдите, и это должно работать :-)

Ник
источник
3

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

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

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

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

sudo apt-get -y install

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

Basscal
источник
1

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

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

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

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

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

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

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

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

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

Джо
источник