Чи можу я скласти власні команди?


12

Мені було цікаво, чи можу я робити власні команди, як якщо б я набрав "музику" в командному рядку, мій vlc повинен відкритися і почати відтворювати свій список відтворення. Річ vlc - лише приклад, але питання залишається.

Чи можу я скласти власні команди? Якщо так, то як?


ви можете робити сценарії, якщо це те, що ви хочете?
Алвар

Відповіді:


19

Так - створіть файл з назвою музика і помістіть всередину:

#!/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

Однак ці команди не працюватимуть ніде поза терміналом.


1

Будь-який виконуваний файл у каталозі на вашому шляху може бути "командою". Це може бути сценарій, як пропонується в інших відповідях, але він також може бути складеною програмою на будь-якій підтримуваній вами мові.

Псевдоніми також працюватимуть, але обмежені, оскільки вони є "однолінійними", так що робити все, що складно з ними, швидко створює код, який дуже важко читати. Крім того, оскільки вони виконуються в тій же області змінної, що і оболонка, в яку ви вводите їх, вони можуть легко мати небажані побічні ефекти, такі як залишення вас в іншому каталозі або залишення визначених змінних, які потрібні лише тому завдання, яке виконує псевдонім. (Звичайно, іноді ви можете використовувати псевдонім саме тому, що він має бажані побічні ефекти.)

Якщо ви помістите нові команди в каталог на своєму шляху, вони можуть бути знайдені оболонкою та виконані. Найпоширеніше місце для їх розміщення - у $ HOME / bin. Якщо цей каталог існує, він часто буде автоматично доданий у ваш шлях.

Дві речі, які слід пам’ятати при налаштуванні, це: 1) Зазвичай найкраще використовувати унікальні імена для своїх команд, які не відповідають жодним, які вже визначені у вашій системі. З цього приводу багато дискусій, але головне в тому, що знайомі команди не повинні мати несподіваних результатів, якщо хтось інший використовує вашу систему, і що звикнення до загальної команди, яка робить щось особливе, може привести до неприємностей під час роботи в іншій системі де це не визначено таким чином.

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

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

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

Щоб уникнути всього цього (за рахунок трохи додаткового набору тексту), ви також можете помістити свою команду в каталог, який не знаходиться на вашому шляху, так що вона майже ніколи не буде запущена ненавмисно, оскільки вам доведеться ввести це повне ім'я шляху запустити його.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.