Как создать мои собственные команды терминала [duplicate]

У этого вопроса уже есть ответ здесь: Как запускать скрипты без ввода полного пути? 9 ответов

Я знаю, как создавать свои пользовательские команды терминала, и это было бы очень полезно для меня при компиляции всех моих классов Java в папке. Я также вижу, что для этого люди обычно создают папку ~ / bin и помещают файлы .sh с строками, которые они хотят запустить, но я не мог понять это хорошо, я создаю compile.sh с некоторыми строками, например [!d6 ]

-gcc file -o file
-gcc file1 -o file1

, но по мере того, как я читал, мне также нужно добавить строку в файл с именем .bashrc, который скрыт в моей домашней папке, и я не знаю, как это сделать, есть ли способ редактирования этот файл? После этого моя пользовательская команда будет именем файла .sh (компиляция)?

1
задан 21 June 2016 в 06:15

2 ответа

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

Возьмем, например, определение функции ниже

compile()
{
  gcc "$1" -o "${1%%.*}" && printf "<<< Compiled successfully\n"
}

Поместив его в ваш файл .bashrc (а затем запустив source ~/.bashrc или открыв новую вкладку терминала), вы можете запустить эту команду из любого места, не добавив ~/bin к своей переменной PATH и укажите имя файла как аргумент командной строки, например

compile somecode.c

. На боковой ноте вы можете отредактировать этот файл, просто позвонив gedit ~/.bashrc из командной строки

. Для тех из вас, кто задавался вопросом что "$1" и "${1%%.*}", "$1" относится к первому параметру командной строки (в данном случае "somecode.c"), как и для "${1%%.*}" - это расширение параметра, особенно то, что делает удаление суффикса, и будет выбросьте что-нибудь после точки. Другими словами, это превращает somecode.c в somecode. Для получения дополнительной информации прочитайте раздел справочной страницы bash о расширении параметра

4
ответ дан 23 May 2018 в 09:04
  • 1
    ~/bin по умолчанию находится в $PATH. См. здесь . – wjandrea 21 June 2016 в 19:42
  • 2
    1. ~/bin есть по умолчанию, потому что .bashrc источники .profile; это не по умолчанию, если вы или ваш sysadmin решили использовать другую оболочку и 2. Это не главное. Дело в том, что запись функций оболочки поверх скриптов имеет некоторые преимущества – Sergiy Kolodyazhnyy 21 June 2016 в 20:34
  • 3
    Я немного ленив, чтобы выучить bash сейчас, не могли бы вы сказать мне, что мне нужно было запустить команду после компиляции @Serg? – Vitor Costa 23 June 2016 в 01:24
  • 4
    Что вы имеете в виду ? – Sergiy Kolodyazhnyy 23 June 2016 в 01:27

Прежде чем вникать в это, я хотел уточнить, что вы не создаете новые команды, вы создаете скрипты, которые можно запускать как исполняемые файлы.

Если у вас нет папки в домашней папке с именем «bin», создайте ее.

Теперь откройте окно терминала и введите nano ~/.bashrc.

Это откроет редактор. В нижней части этого файла добавьте новую строку, которая говорит PATH="$HOME/bin:$PATH".

Теперь сохраните файл, нажав CTRL + O (буква o, а не ноль), затем нажмите ENTER. Выйдите из редактора с помощью CTRL + X. Если вы не вступили в силу, перезагрузите компьютер или перезагрузите компьютер, если это не сработает.

Теперь любые скрипты, созданные в папке bin, будут доступны в любом месте в окне терминала.

Вы можете создавать эти скрипты с помощью nano или gedit (графического текстового редактора Ubuntu) или любого текстового редактора, который вы хотите. Не забудьте сохранить ваш скрипт в папке ~ / bin и сделать файл исполняемым. Есть два способа сделать это:

GUI: щелкните правой кнопкой мыши файл и перейдите на вкладку «Разрешения» и установите флажок «Разрешить выполнение как программу».

TERMINAL: chmod +x /location/of/your/file

2
ответ дан 23 May 2018 в 09:04
  • 1
    Это хороший совет, но исполняемые скрипты - это новые команды. – alexis 21 June 2016 в 03:58
  • 2
    @alexis Я не согласен. Скрипт - это скрипт. Сценарий запускает команды. У Bash есть набор команд, которые можно запускать с использованием языка программирования в виде скрипта. – Dorian 21 June 2016 в 06:23
  • 3
    Некоторые из этих команд (которые не предоставлены bash, но в среде Unix) сами являются скриптами оболочки :-) Вы недавно просмотрели /usr/bin? Назовите их, как хотите, но не исправьте OP для вызова их команд. – alexis 21 June 2016 в 11:52

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

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