Как сделать свою команду linux
Как создать и использовать Alias команды в Linux
Пользователям Linux часто приходится использовать одну команду снова и снова.
Ввод или копирование одной и той же команды снова и снова снижает вашу производительность и отвлекает вас от того, что вы на самом деле делаете.
Вы можете сэкономить некоторое время, создав псевдонимы для наиболее часто используемых команд.
Псевдонимы (alias) похожи на пользовательские ярлыки, используемые для представления команды (или набора команд), выполненной с использованием или без специальных параметров.
Скорее всего, вы уже используете псевдонимы в своей Linux-системе.
Список в настоящее время определенных псевдонимов в Linux
Вы можете просмотреть список определенных псевдонимов в своем профиле, просто выполнив команду alias.
Здесь вы можете увидеть псевдонимы по умолчанию, определенные для вашего пользователя в Ubuntu 18.04.
Как видите, выполняется таким образом
Это эквивалентно запуску:
Вы можете создать псевдоним с одним символом, который будет эквивалентен команде по вашему выбору.
Как создать псевдонимы в Linux
Создание псевдонимов относительно легко и быстро. Вы можете создать два типа псевдонимов – временных и постоянных.
Мы рассмотрим оба типа.
Создание временных псевдонимов
Что вам нужно сделать, это ввести псевдоним слова, а затем использовать имя, которое вы хотите использовать для выполнения команды, а затем знак «=» и указать команду, которую вы хотите использовать для псевдонимов.
Синтаксис выглядит следующим образом:
Затем вы можете использовать ярлык «wr», чтобы перейти в каталог webroot.
Проблема с этим псевдонимом заключается в том, что он будет доступен только для вашего текущего сеанса терминала.
Если вы откроете новый сеанс терминала, псевдоним больше не будет доступен.
Если вы хотите сохранить свои псевдонимы во всех сеансах, вам понадобится постоянный псевдоним.
Создание постоянных псевдонимов
Чтобы сохранить псевдонимы между сеансами, вы можете сохранить их в файле профиля конфигурации вашего пользователя. Это может быть:
Синтаксис, который вы должны использовать, практически совпадает с созданием временного псевдонима.
Единственное различие заключается в том, что на этот раз вы сохраните его в файле.
Найдите место в файле, где вы хотите сохранить псевдонимы.
Например, вы можете добавить их в конец файла.
В организационных целях вы можете оставить комментарий перед своими псевдонимами примерно так:
Сохраните файл. Файл будет автоматически загружен в следующем сеансе.
Если вы хотите использовать новый псевдоним в текущем сеансе, выполните следующую команду:
Чтобы удалить псевдоним, добавленный через командную строку:
Вывод
Это был краткий пример того, как создать свой собственный псевдоним и выполнять часто используемые команды, не вводя каждую команду снова и снова.
Теперь вы можете подумать о командах, которые вы используете больше всего, и создавать ярлыки для них в своей оболочке.
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Учимся писать базовые скрипты в Unix и Linux
Если вы еще не умеете писать скрипты в системах Unix и Linux, эта статья познакомит с основами написания скриптов.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Идентификация оболочки.
Вы также можете определить свою основную оболочку, просмотрев файл /etc/passwd :
На выводе видно, что доступно всего девять оболочек.
Выбор оболочки
Чтобы определить, какая из доступных оболочек будет выполнять команды вашего скрипта, в первой строке вашего скрипта пропишите одну из строчек, приведенных ниже:
Когда первая строка вашего скрипта идентифицирует оболочку, которая будет использоваться, эта оболочка будет выполнять команды в скрипте. Если вы не определите оболочку в первой строке в скрипте, то оболочка, которую вы используете при вызове сценария, будет той, которая его запускает.
Выполнение команд
Чтобы запустить этот скрипт, выполните команду:
Добавление комментариев
Делаем файл исполняемым
Чтобы сделать скрипт исполняемым, используйте команду chmod и убедитесь, что предполагаемые пользователи могут его запустить. Например:
Использование команды if
Команда if позволяет вам проверять условия или переменные. В примере ниже мы проверяем, запускается ли скрипт в пятницу.
Понятие переменных
Запрос пользователя на ввод данных
Человек, запускающий сценарий, увидит приглашение и введет ответ :
Использование аргументов командной строки
Чтобы проверить правильность количества предоставленных аргументов, вы можете использовать синтаксис, подобный приведенному ниже, который проверяет, были ли предоставлены по крайней мере два аргумента, и, в противном случае, напоминает пользователю, что требуется как количество строк, так и имя файла:
Различные способы создания циклов
Использование оператора case
Операторы case позволяют вашим скриптам реагировать по-разному в зависимости от того, какие значения проверяются. В приведенном ниже скрипте используются разные команды для извлечения содержимого файла, предоставленного в качестве аргумента, путем определения типа файла.
Обратите внимание, что этот сценарий также запрашивает имя файла, если оно не было предоставлено, а затем проверяет, действительно ли указанный файл существует. Только после этого выполняется извлечение.
Реакция на ошибки
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Как создать пользовательские команды в Linux
Главное меню » Операционная система Linux » Как создать пользовательские команды в Linux
Это дает нам следующий результат:
Все идет нормально. Но что, если вы хотите часто использовать эту команду? Трудно запомнить это письмо для письма, его нелегко напечатать, и он слишком длительный. Теперь добавьте десятки других команд с похожими (или большими) уровнями сложности, и легко увидеть, что нам нужно новое решение.
Шаг 1. Откройте файл в текстовом редакторе с помощью имени files
Предположим, мы хотим назвать нашу новую команду «files». Мы создаем новый файл с именем «files», используя текстовый редактор «vi», указав следующую команду:
Эта команда откроет базовый редактор, в котором вы можете ввести текст. По умолчанию он будет находиться в режиме «чтения», и вы не сможете добавить новый текст. Измените это, чтобы вставить режим, нажав клавишу «Вставить» на клавиатуре.
Теперь скопируйте и вставьте следующий текст. Вы можете быстро вставить его в терминал, щелкнув его правой кнопкой мыши.
Как вы можете видеть, это вставляется в vi, когда включен режим «INSERT»:
Это называется «скриптом», и он состоит из трех частей:
Теперь выйдите из режима «Вставки», нажав клавишу «Esc». Сохраните файл, нажав Shift + Z + Z (Удерживая клавишу shift, нажмите «z» два раза).
Теперь файл сохранится в текущей папке. Вы можете отобразить его содержимое, введя:
Это дает следующий результат:
Шаг 2: Назначьте правильные разрешения для нашего скрипта
Если мы просто перечислим файлы в каталоге, вы увидите, что наш новый файл является одним из них.
Однако это обычный файл, а не тот, который может быть выполнен. Команда «ls» отображает исполняемые файлы зеленым цветом. Поэтому нам нужно сообщить Linux, что наш новый файл является исполняемым. Мы делаем это, введя следующее:
Это изменяет права доступа к файлам и делает их исполняемыми. Теперь «ls» показывает файл как зеленый:
Пришло время запустить нашу команду!
Шаг 3: Указание путей к нашему скрипту
К сожалению, мы не можем просто набрать «files» в текущем каталоге, чтобы запустить наш новый скрипт. Появляется сообщение об ошибке: “command not found”:
Итак, у нас есть три варианта:
Давайте посмотрим, как сделать все три:
Способ 1. Вручную укажите полное местоположение
Когда мы попытались просто набрать «files» ранее, мы получили сообщение об ошибке. Но мы можем указать текущий каталог для нашего файла сценария следующим образом:
И это работает, как вы можете видеть ниже:
К сожалению, это не сработает, если мы будем в другой папке. Мы должны указать полный путь, который является болью.
Способ 2. Добавить «Текущий каталог» в переменную PATH
Теперь просто набрав «файлы», как показано здесь:
Однако этот подход имеет две проблемы:
Как и раньше, мы можем использовать редактор vi:
Снова нажмите «Вставить», чтобы перейти в режим INSERT, и перейдите к строке с указанием переменной PATH, как показано ниже:
Теперь добавьте следующее в конец строки PATH:
Это двоеточие (:), за которым следует точка (.). Сохраните файл в vi, нажав «Esc» и Shift + z + z, как раньше. Однако изменения не вступят в силу до перезагрузки
/.bash_profile. Сделайте это, используя следующую команду:
Теперь изменение сохранится даже после завершения сеанса пользователя. Однако вы все равно не можете выполнить команду из любой папки. Для этого нам нужен метод 3.
На мой взгляд, это лучший способ добавить вашу пользовательскую команду, чтобы вы могли получить к ней доступ из любого места.
Каждое расположение папки разделяется двоеточием (:) Вы можете видеть на скриншоте выше, что папка /usr/local/bin является одним из путей.
И теперь мы можем изменить нашу рабочую папку и получить доступ к скрипту из любой точки!
Это правильный способ создания пользовательских команд в Linux. Это всего лишь верхушка айсберга, когда дело доходит до сценариев в Linux. Вы можете писать сложные логические контуры и выполнять условные операторы. Вы также можете использовать это для создания псевдонимов для существующих команд или объединить их вместе для автоматического выполнения! Если это ваш первый набег на Linux-скрипты, будьте готовы получить доступ к богатству мощности и функциональности в будущем.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Руководство по написанию скриптов в Linux Bash
Введение
Набор встроенных команд bash (и его аналогов sh, zsh, etc) совместим с любым POSIX-совместимым приложением в Linux, что позволяет встроить в ваш bash-скрипт любое совместимое приложение. Это дает очень большой набор возможностей в сфере автоматизации рутинных задач администрирования систем Linux, деплоя и сборки приложений, различных пакетных обработок, в том числе аудио и видео.
Командная строка — самый мощный пользовательский интерфейс из существующих на данный момент. Базовый уровень знаний получить достаточно просто. Рекомендуется изучить руководство bash. Это можно сделать, выполнив команду man bash.
Суть bash-скриптов — записать все ваши действия в один файл и выполнять их по необходимости.
В этой статье расскажем про написание bash-скриптов с нуля и получим представление, какую пользу можно из них извлечь. Рекомендуем держать под рукой bash-справочник, если вы планируете заняться этим всерьез.
Развертывание среды
Для выполнения скриптов, которые мы будем учиться писать, нужна среда. Если вы используете на своем компьютере систему Linux, вы можете делать все локально. Если Windows, — можете установить WSL/WSL2. Кроме того, вы можете создать виртуальный сервер и подключиться к нему по SSH. Так вы не навредите своему компьютеру если что-то пойдет не так.
Мы выбрали вариант создать виртуальную машину. Залогинимся в личном кабинете https://my.selectel.ru/, нажав на вкладку «Облачная платформа». Там вы сможете создать виртуальный сервер.
Необходимо выбрать зону размещения сервера исходя из его близости к пользователям. Чем дальше сервер, тем выше пинг.
Нажмем «Создать сервер».
В разделе «Источник» убеждаемся, что выбран образ Ubuntu 20.04.
Конфигурацию можно настроить по своим потребностям.
В разделе «Сеть» стоит выбрать «Подсеть — Плавающий IP-адрес».
В разделе «Доступ» загрузите SSH-ключ и не забудьте сохранить root-пароль. Подробнее об этом рассказано в этой статье
Теперь можно создать сервер кнопкой «Создать» в самом низу.
Будет отображена страница статуса сервера, надо дождаться индикации ACTIVE вверху справа.
Теперь на вкладке «Порты» можно посмотреть IP-адрес, присвоенный серверу.
Не копируйте чужой код
Выбор редактора
Вам потребуется удобный текстовый редактор. Если вы подключаетесь по SSH, то лучшим выбором будут 3 варианта:
Если вы делаете все локально, выбор полностью на вас. Обычный выбор под Linux — gedit. В этой инструкции мы пользовались nano через SSH на удаленном сервере.
Запуск “Hello, World!”
Первая программа, которую обычно пишут программисты это «Hello, World!» — простой вывод этой строки. Мы тоже с этого начнем. За вывод строки в консоль отвечает команда echo. Прямо в консоли вы можете напечатать echo «Hello, World!» и получить соответствующий вывод:
Сделаем это программой. Команда touch helloworld.sh создаст файл helloworld.sh. Команда nano helloworld.sh откроет этот файл для редактирования. Заполним файл нашей программой:
Для выхода с сохранением из nano надо нажать CTRL + O для сохранения (после чего нажать enter для перезаписи текущего открытого файла), а потом CTRL + X для выхода. Можно выходить без сохранения, при этом он спросит, точно ли вы хотите выйти без сохранения. Если да, надо нажать N для выхода без сохранения. Если вы нажмете Y, он спросит куда сохранить измененный файл, можно нажать enter для перезаписи редактируемого файла.
Разберем, что мы написали.
Первой строкой идет #!/bin/bash — фактически это указание на местоположение интерпретатора. Чтобы при запуске скрипта не требовалось указывать отдельно интерпретатор. Убедиться, что ваш bash интерпретатор лежит по этому пути можно через команду which bash:
Второй строкой идет непосредственно вся наша программа. Как она работает, мы разобрали выше, перейдем к выполнению.
Запустить ваш скрипт/команду можно двумя способами.
Способ №1: bash helloworld.sh. Вы вызываете интерпретатор и в аргументе передаете ему имя файла для исполнения.
Способ №2: Сначала надо разрешить системе исполнять скрипт: chmod +x helloworld.sh. Эта команда сделает файл исполняемым. Теперь вы можете запустить его как любой бинарный файл в linux: ./helloworld.sh.
Первая программа готова, она просто выводит строку в консоль.
Аргументы
Это параметры, которые вы можете передать программе при ее вызове. Например, программа ping принимает в качестве обязательного аргумента IP-адрес или DNS-имя, которое требуется пропинговать: ping selectel.ru. Это простой и удобный способ общения пользователя с программой.
Подробнее про циклы будет рассказано в следующих разделах.
Пример, создадим новый файл: touch hellousername.sh. Выдаем права на исполнение chmod +x hellousername.sh.
Открываем nano hellousername.sh
Код примера следующий:
Сохраняем, закрываем. Смотрим, что получилось.
Программа получилась маленькая, но она учит пользоваться (на самом базовом уровне) аргументами, которые мы в нее можем передать. В данном случае аргумент передается один, Vasya, мы сразу его используем, не делая никаких проверок.
При таком сценарии в нашей программе баг: она ни с кем не поздоровается. Чтобы исправить ситуацию, есть 2 способа: проверить число аргументов или проверить содержимое аргумента.
Способ №1
Способ №2
Здесь тоже используется конструкция if then [else] fi. Ключ -z в if используется для проверки переменной на пустую строку. Есть противоположный ключ -n, он проверяет что строка не пустая. Конечно, этот способ некорректно использовать для проверки входящих аргументов, но в теле самой программы он будет полезен. Например, чтобы проверить что выполненное в самой программе приложение что-то вернуло.
Управляющие конструкции
if-else
Написание программ на любом из языков длиннее нескольких строчек сложно представить без ветвления. В разных языках бывают разные варианты ветвления, но в большинстве случаев используется синтаксис if else. В bash это также присутствует.
Возьмем один из примеров выше.
Происходит проверка системной переменной $# на то, что она меньше, чем (lower than, -lt) 1. Если это выражение истинно, мы переходим в блок команд, открывающийся ключевым словом then. Весь блок, начинающийся с if, должен завершаться ключевым словом fi. Более сложная структура ветвления может выглядеть примерно так:
Выражение «$1» = «Vasya» проверяет строки на идентичность. Блок после else выполняется только если выше не найден более подходящий блок.
В предыдущей главе вы могли заметить, что я использовал 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 каждый раз.
Переменные в bash создаются присваиванием: x=»foo bar» или z=$1. Переменной x мы присвоили строку @foo bar«, а переменной z мы присвоили значение первого аргумента. Использовать именованные переменные гораздо удобнее, чем использовать $1, особенно когда надо использовать его значение во многих местах.
К тому же, аргументы могут идти в разном порядке. Осмысленные названия переменных очень важны, при разрастании программы это снизит неизбежную путаницу. Избегайте имен переменных (и функций) вроде «a», «b», «zzzz», etc.
Чтобы не вызывать 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, например.
В нашей программе есть небольшой баг. Модифицируем файл имен:
Запустим программу, получим вывод:
Как говорится, «Кто все эти люди?». Так получается, потому что у нас не задана переменная окружения IFS (Internal Field Separator), указывающая на разделители полей. Наш цикл использует пробелы и переносы строки как разделители. В начале скрипта (после #!/bin/bash) укажите использовать перенос строки как разделитель полей: IFS=$’\n’.
В итоге мы получим возможность работать со строками целиком. Это пригодится для парсинга CSV.
Обычно цикл for используется со счетчиком. В C-like стиле. Что-то вроде for (i=0;i
Как создать скрипт команды Linux
Вы можете просто запустить скрипт, чтобы легко получить вывод длинной и сложной команды.
Я уже выполняю несколько методов, чтобы запомнить команды Linux.
Мы можем вспомнить забытые команды с помощью команды apropos или закладки часто используемых команд или сохранить важные команды в вашем терминале, чтобы мы могли использовать их по требованию.
Существует много способов
Если вам интересно, как создать скрипт команды Linux, читайте дальше. Это не так сложно, как вы думаете.
Создание скрипта команды Linux
Скажем, мы запускаем следующую команду для сортировки в алфавитном порядке файла с именем ostechnix.txt и отображения вывода в одной строке:
Я не знаю как у вас, но у меня ужасная память.
Независимо от того, сколько раз я запускаю эту команду в день, я в конце концов забуду ее на следующий день или на следующий день после следующего дня.
Конечно, мы можем сделать обратный поиск и вывести эту команду из истории Bash или следовать любому из методов по поиску.
Но я также хотел бы изучить другие альтернативные методы. В
от почему я решил создать скрипт команды Linux.
Таким образом, я могу назвать сценарий по своему усмотрению и запустить его, не имея при этом цельной команды каждый раз.
Создайте файл script.sh и поместите в него свою команду.
Или вы можете сделать это как однострочный вариант, как показано ниже:
И затем сделайте скрипт исполняемым. Готово!
Например, я создал скрипт вышеупомянутой длинной команды, как показано ниже.
Сделайте исполняемый файл сценария:
Наконец, выполните следующую команду для выполнения вашей команды Linux:
Довольно легко, не так ли?
Вы можете выбрать легко запоминающееся имя по вашему сценарию.
Вариант использования может отличаться для вас.
Кроме того, вы можете переместить скрипт в свой PATH (пример. / Usr / bin / или любой ваш PATH), поэтому все пользователи могут использовать это без ввода исходного имени пути.
Как создать скрипт последней выполненной команды?
Помните, что мы используем «!!», чтобы повторить последнюю команду?
Следовательно, команда будет:
Помните, что при использовании «!!».
Дважды проверьте свою последнюю команду перед ее запуском.