Создать свою команду linux

Обновлено: 06.07.2024

В этой статье мы поговорим о том, как создавать новые группы в Linux, используя команду groupadd .

Синтаксис команды groupadd

Общий синтаксис команды groupadd следующий:

Только root или пользователь с привилегиями sudo могут создавать новые группы.

При вызове groupadd создает новую группу, используя параметры, указанные в командной строке, плюс значения по умолчанию, указанные в файле /etc/login.defs .

Создание группы в Linux

Чтобы создать новую группу, введите groupadd за которым следует имя новой группы.

Например, чтобы создать новую группу с именем mygroup вы должны запустить:

Команда добавляет запись для новой группы в файлы /etc/group и /etc/gshadow .

После создания группы вы можете начать добавлять пользователей в группу .

Создание группы с определенным GID

В Linux и Unix-подобных операционных системах группы идентифицируются по имени и уникальному GID (положительное целое число).

По умолчанию, когда создается новая группа, система назначает следующий доступный GID из диапазона идентификаторов групп, указанных в файле login.defs .

Используйте параметр -g ( --gid ), чтобы создать группу с определенным GID.

Например, чтобы создать группу с именем mygroup с GID 1010 , введите:

Вы можете проверить GID группы, перечислив все группы и отфильтровав результат с помощью grep :

Если группа с данным GID уже существует, вы получите следующую ошибку:

При использовании с параметром -o ( --non-unique ) команда groupadd позволяет создать группу с неуникальным GID:

Создание системной группы

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

GID системных групп выбираются из диапазона login.defs системных групп, указанного в файле login.defs , который отличается от диапазона, используемого для обычных групп.

Используйте параметр -r ( --system ), чтобы создать системную группу. Например, чтобы создать новую системную группу с именем mysystemgroup вы должны запустить:

Переопределение значений /etc/login.defs по умолчанию

Параметр -K ( --key ), за которым следует KEY=VAL позволяет переопределить значения по умолчанию, указанные в файле /etc/login.defs .

Допустим, вы хотите создать новую группу с GID в диапазоне от 1200 до 1500. Для этого укажите минимальные / максимальные значения, как показано ниже:

Создание системной группы с паролем

Добавление пароля в группу не имеет практического смысла и может вызвать проблемы с безопасностью, поскольку пароль потребуется знать нескольким пользователям.

Параметр -p ( --password ), за которым следует пароль, позволяет вам установить пароль для новой группы:

Выводы

В Linux вы можете создавать новые группы с помощью команды groupadd .

Те же инструкции применимы для любого дистрибутива Linux, включая Ubuntu, CentOS, RHEL, Debian, Fedora и Arch Linux.

Командная строка Linux: обои

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

Процедура создания программы или команды требует следующие шаги:

  1. Напишите код нашего инструмента. Если вы уже знаете, что вам нужно или чего вы хотите, напишите исходный код вашего инструмента, каким бы он ни был и на каком бы языке вы ни выбрали. Например, вы можете сделать это на C, Python, Perl или как скрипт для Bash.
  2. Скомпилируйте наш исходный код для создания исполняемого файла. Например, если он написан на C или C ++ и т. Д., Вы можете легко сделать это с помощью компилятора gcc. Если это интерпретируемый язык, такой как Python, Perl, Ruby и т. Д., Нам нужно будет установить его интерпретатор и сделать файл с исходным кодом исполняемым. Это также относится к сценарию для Bash, в этом случае интерпретатором является сам Bash, и чтобы сделать его исполняемым, мы можем использовать: chmod + x script_name.sh
  3. После компиляции или у нас есть исполняемый файл, копируем или перемещаем в маршрут включен в переменную окружения $ PATH, например / usr / bin. Вы можете увидеть пути с помощью echo $ PATH. При этом мы можем выполнить его, просто введя его имя, и нам не нужно будет указывать абсолютный путь.

Как только это будет сделано, наша команда будет готова к выполнению . вы можете написать ее имя, и она будет выполнена.

Например, чтобы вы поняли, я поставлю практический пример:

  • Шаг 1: мы собираемся написать код, в данном случае простой сценарий bash, для этого откройте любимый текстовый редактор и напишите следующий код (или код вашего сценария):
  • Шаг 2: сохраняем текстовый файл, и в моем случае я назову его "привет". И теперь я делаю его исполняемым;:
  • Шаг 3: теперь пришло время переместить его по известному пути, чтобы он не всегда находился в каталоге, в котором он размещен, или указать абсолютный путь для его выполнения .

И теперь мы можем запустить его с помощью простого:

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Любители Linux » GNU / Linux » Системное администрирование » Как: как создать свою собственную команду в Linux


Вы можете просто запустить скрипт, чтобы легко получить вывод длинной и сложной команды.

Я уже выполняю несколько методов, чтобы запомнить команды Linux.

Мы можем вспомнить забытые команды с помощью команды apropos или закладки часто используемых команд или сохранить важные команды в вашем терминале, чтобы мы могли использовать их по требованию.

Существует много способов

Если вам интересно, как создать скрипт команды Linux, читайте дальше. Это не так сложно, как вы думаете.

Создание скрипта команды Linux

Скажем, мы запускаем следующую команду для сортировки в алфавитном порядке файла с именем ostechnix.txt и отображения вывода в одной строке:

Я не знаю как у вас, но у меня ужасная память.

Независимо от того, сколько раз я запускаю эту команду в день, я в конце концов забуду ее на следующий день или на следующий день после следующего дня.

Конечно, мы можем сделать обратный поиск и вывести эту команду из истории Bash или следовать любому из методов по поиску.

Но я также хотел бы изучить другие альтернативные методы. В

от почему я решил создать скрипт команды Linux.

Таким образом, я могу назвать сценарий по своему усмотрению и запустить его, не имея при этом цельной команды каждый раз.

Создайте файл script.sh и поместите в него свою команду.

Или вы можете сделать это как однострочный вариант, как показано ниже:

И затем сделайте скрипт исполняемым. Готово!

Например, я создал скрипт вышеупомянутой длинной команды, как показано ниже.

Сделайте исполняемый файл сценария:

Наконец, выполните следующую команду для выполнения вашей команды Linux:

Довольно легко, не так ли?

Вы можете выбрать легко запоминающееся имя по вашему сценарию.

Вариант использования может отличаться для вас.

Кроме того, вы можете переместить скрипт в свой PATH (пример. / Usr / bin / или любой ваш PATH), поэтому все пользователи могут использовать это без ввода исходного имени пути.

Набор встроенных команд bash (и его аналогов sh, zsh, etc) совместим с любым POSIX-совместимым приложением в Linux, что позволяет встроить в ваш bash-скрипт любое совместимое приложение. Это дает очень большой набор возможностей в сфере автоматизации рутинных задач администрирования систем Linux, деплоя и сборки приложений, различных пакетных обработок, в том числе аудио и видео.

Командная строка — самый мощный пользовательский интерфейс из существующих на данный момент. Базовый уровень знаний получить достаточно просто. Рекомендуется изучить руководство bash. Это можно сделать, выполнив команду man bash.

Суть bash-скриптов — записать все ваши действия в один файл и выполнять их по необходимости.

В этой статье расскажем про написание bash-скриптов с нуля и получим представление, какую пользу можно из них извлечь. Рекомендуем держать под рукой bash-справочник, если вы планируете заняться этим всерьез.

Развертывание среды

Для выполнения скриптов, которые мы будем учиться писать, нужна среда. Если вы используете на своем компьютере систему Linux, вы можете делать все локально. Если Windows, — можете установить WSL/WSL2. Кроме того, вы можете создать виртуальный сервер и подключиться к нему по SSH. Так вы не навредите своему компьютеру если что-то пойдет не так.

Необходимо выбрать зону размещения сервера исходя из его близости к пользователям. Чем дальше сервер, тем выше пинг.

Нажмем «Создать сервер».

В разделе «Источник» убеждаемся, что выбран образ Ubuntu 20.04.

Конфигурацию можно настроить по своим потребностям.

В разделе «Доступ» загрузите SSH-ключ и не забудьте сохранить root-пароль. Подробнее об этом рассказано в этой статье

Теперь можно создать сервер кнопкой «Создать» в самом низу.

Будет отображена страница статуса сервера, надо дождаться индикации ACTIVE вверху справа.

Теперь на вкладке «Порты» можно посмотреть IP-адрес, присвоенный серверу.

Не копируйте чужой код

Копирование чужого кода на свой компьютер/сервер опасно. Ранее существовал «патч Бармина», представляющий из себя команду rm -rf /*. Ее очень любили давать новичкам Linux на некоторых конференциях в качестве универсального средства от всех проблем. Суть команды — рекурсивное удаление всех каталогов внутри корневого каталога, т. е. всех системных и пользовательских файлов. Сейчас эта команда не сработает во всех актуальных версиях Linux, но раньше она служила злой шуткой и наказанием тем, кто копировал чужие скрипты на свои серверы и выполнял их. Способов навредить серверу/компьютеру все еще достаточно, но они не столь очевидны.

Выбор редактора

Вам потребуется удобный текстовый редактор. Если вы подключаетесь по SSH, то лучшим выбором будут 3 варианта:

  • * vim (если умеете из него выходить)
  • * nano (прост, удобен и надежен)
  • * mcedit (входит в пакет mc, классический двухпанельный консольный файловый менеджер)

Если вы делаете все локально, выбор полностью на вас. Обычный выбор под Linux — gedit. В этой инструкции мы пользовались nano через SSH на удаленном сервере.

Запуск “Hello, World!”

Сделаем это программой. Команда touch helloworld.sh создаст файл helloworld.sh. Команда nano helloworld.sh откроет этот файл для редактирования. Заполним файл нашей программой:

Для выхода с сохранением из nano надо нажать CTRL + O для сохранения (после чего нажать enter для перезаписи текущего открытого файла), а потом CTRL + X для выхода. Можно выходить без сохранения, при этом он спросит, точно ли вы хотите выйти без сохранения. Если да, надо нажать N для выхода без сохранения. Если вы нажмете Y, он спросит куда сохранить измененный файл, можно нажать enter для перезаписи редактируемого файла.

Разберем, что мы написали.

Второй строкой идет непосредственно вся наша программа. Как она работает, мы разобрали выше, перейдем к выполнению.

Запустить ваш скрипт/команду можно двумя способами.

Способ №1: bash helloworld.sh. Вы вызываете интерпретатор и в аргументе передаете ему имя файла для исполнения.

Способ №2: Сначала надо разрешить системе исполнять скрипт: chmod +x helloworld.sh. Эта команда сделает файл исполняемым. Теперь вы можете запустить его как любой бинарный файл в linux: ./helloworld.sh.

Первая программа готова, она просто выводит строку в консоль.

Аргументы

Давайте научим нашу программу принимать аргументы и работать с ними. Доступ к аргументам осуществляется через служебную команду $X где X это число. $0 — всегда имя исполняемого скрипта. $1 — первый аргумент, $2 — второй и так далее. Конечно, если вы планируете передавать пару десятков аргументов вашему приложению, это может быть несколько утомительно, так что вам понадобится что-то вроде этого цикла, чтобы перебрать все поступившие аргументы:

Подробнее про циклы будет рассказано в следующих разделах.

Пример, создадим новый файл: touch hellousername.sh. Выдаем права на исполнение chmod +x hellousername.sh.

Открываем nano hellousername.sh

Код примера следующий:

Сохраняем, закрываем. Смотрим, что получилось.

Программа получилась маленькая, но она учит пользоваться (на самом базовом уровне) аргументами, которые мы в нее можем передать. В данном случае аргумент передается один, Vasya, мы сразу его используем, не делая никаких проверок.

Способ №1

Способ №2

Здесь тоже используется конструкция if then [else] fi. Ключ -z в if используется для проверки переменной на пустую строку. Есть противоположный ключ -n, он проверяет что строка не пустая. Конечно, этот способ некорректно использовать для проверки входящих аргументов, но в теле самой программы он будет полезен. Например, чтобы проверить что выполненное в самой программе приложение что-то вернуло.

Управляющие конструкции

if-else

Написание программ на любом из языков длиннее нескольких строчек сложно представить без ветвления. В разных языках бывают разные варианты ветвления, но в большинстве случаев используется синтаксис if else. В bash это также присутствует.

Возьмем один из примеров выше.

В предыдущей главе вы могли заметить, что я использовал exit 1 для завершения работы программы в случае неуспешной проверки аргумента. Это означает, что программа завершилась с ошибкой. В bash есть операторы && и ||, которые используются для создания цепочек команд. Каждая цепочка зависит от результата выполнения предыдущей программы.

Пример 1: command1 && command2. В этом случае command2 выполнится, только если command1 завершится с кодом 0 (exit 0, по умолчанию).

Пример 2: command1 || command2. В этом случае command2 выполнится, только если command1 завершится с кодом отличным от 0.

Пример 3: command1 && command2 || command3. Если command1 завершится с кодом 0, то будет выполнен command2, иначе command3.

Переменные

Как гласит один из основных принципов программирования — Do Not Repeat Yourself (DRY). Вот и мы не будем повторять себя и перепишем предыдущий пример с использованием переменных, чтобы не вызывать echo каждый раз.

Чтобы не вызывать echo в каждом варианте с разными строками, разобьем строку на части. Первая часть будет приветствием. Вторая — именем. Третья — завершающим знаком препинания. Его можно не выносить в переменную.

В этом примере мы создаем переменные greetString и nameString, которым присваиваем значения по умолчанию. В конце программа выводит значения этих двух переменных с помощью echo и форматированной строки (в двойных кавычках переменные раскрываются). Между этими действиями программа определяет, надо ли присваивать переменным другие значения.

Switch case

Использование if-else конструкции в нашем примере не является оптимальным вариантом. Мы всего лишь сверяем значение переменной с определенным набором значений. В такой ситуации лучшим выбором будет switch-case-конструкция.

Перепишем нашу программу приветствий с использованием switch-case:

Циклы

Как и любой полноценный язык программирования, bash поддерживает циклы. Цикл for и цикл while. Циклы нужны, чтобы выполнять какой-то код заданное число раз. Например, при парсинге CSV перебирать построчно и каждую строку рассматривать отдельно.

Цикл for

Вот пример структуры цикла for:

Простой реальный пример:

Программа просто перебирает все имена, разделенные пробелом, и выводит их с помощью echo.

Попробуем немного усложнить пример:

Создадим файл с именами touch names и запишем в него список имен для приветствия:

Обратите внимание на ^C. Это символ прерывания выполнения программы. В нашем случае мы вызвали программу без аргумента, и она вошла в вечный цикл. Можно сказать, зависла. Пришлось завершить ее принудительно. Не забывайте делать проверки входных данных в реальных программах. Как это делать, можете посмотреть в главах if-else и switch case, например.

В нашей программе есть небольшой баг. Модифицируем файл имен:

Запустим программу, получим вывод:

В итоге мы получим возможность работать со строками целиком. Это пригодится для парсинга CSV.

Обычно цикл for используется со счетчиком. В C-like стиле. Что-то вроде for (i=0;i<10;i++)<>. В bash тоже так можно.

Цикл while

Схема организации цикла while:

Простой способ сделать бесконечную петлю (бесконечный цикл):

Это может пригодится, например, когда вам нужно вызывать что-то чаще, чем позволяет cron (например, раз в минуту). Или когда вам просто надо проверять какое-то значение постоянно. Областей применения у бесконечных циклов много.

Здесь используются те же самые выражения, что и в if:

Из цикла можно выйти с помощью команды break (работает также и для for):

Заключение

Несмотря на огромную конкуренцию в сфере автоматизации рутины со стороны python, ruby, perl bash не сдает позиции. Он прост в освоении и использовании, гибок и так или иначе присутствует в абсолютном большинстве дистрибутивов Linux.

В этой статье были приведены только основы написания программ на bash. Надеемся, вы нашли их полезными для себя.

Читайте также: