Создавайте свои собственные скрипты с помощью bash

Изучение Linux

Независимо от того, какой дистрибутив Linux мы используем, «несомненно, что мне больше всего нравится Ubuntu», как только мы начнем использовать эту систему, определенные потребности автоматизации. То есть: создать наш собственные команды которые выполняют определенные команды индивидуально. Такая необходимость может быть вызвана определенными причинами:

  • Упростите синтаксис команд, которые мы обычно выполняем.
  • Предпринимайте действия, которые охватывают любые потребность, которая не предусмотрена в системе оперативный.
  • Последовательность заказов что мы усердно повторяем.

Хотя сценарий bash можно запускать в / из любого каталога, обычно он создать каталог для размещения этих скриптов. В моем случае:

$ mkdir /home/pedro/.bin

Я верю в это каталог (скрывается точкой перед именем) чтобы хранить там все скрипты, которые я использую. То, что имя каталога скрыто, не имеет другого значения, кроме - если явно не указано иное - не будет отображаться при просмотре / home / pedro из программы просмотра файлов в графическом режиме.

Теперь тебе нужно сообщить Linux, что он также должен искать там (/home/pedro/.bin) заказы, которые выполняются с терминала.

$ PATH=$PATH;/home/pedro/.bin

Таким образом система будет искать там наши заказы пока мы не закроем сессию. Чтобы сделать это объединение постоянным:

$ sudo nano /etc/environment

и мы добавляем

:/home/pedro/.bin

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

Наш первый пошаговый сценарий

Создаем наш файл, как в моем случае:

$ touch ~/.bin/donde

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

$ gedit ~/.bin/donde &

И добавляем следующий контент:

#!/usr/bin/env bash

if [ $# -lt 1 ];
then
    echo "Necesitas pasar un parámetro"
else
    whereis $1
fi

Анализ скрипта

Наша первая телефонная линия «притон»(#! / Usr / bin / env bash) попросить Linux сообщить где находится оболочка bash и что последующее выполняется в соответствии с требованиями bash. Эта мера предосторожности удобно убедиться, что наши скрипты работают на любой установке. Другой возможный притон он посмеялся:

#!/bin/bash

Разница между ними может быть очень причудливой, и я объясню это. В этом последнем Я предполагаю, что в нашей системе оболочка bash находится по адресу / bin / bash. Однако там, где я предлагаю в сценарии Я думаю, я не знаю где это интерпретатор bash. Я прошу систему предоставить этот адрес.

Третья строка: Как видите, вторая строка - это if. Для bash символы «$#« содержат количество параметров, которые мы передаем из командной строки. Следовательно, »if [$ # -lt 1];» буквально означает "если количество параметров меньше 1".

Четвертая строка: Затем (дословно перевод с английского: then), здесь указано, что будет дальше будет выполнено, когда оценка состояния if будь настоящим: другими словами, количество параметров меньше 1, то есть ноль.

Пятая строка: Если мы выполним наш скрипт без каких-либо параметров, мы покажем в терминале «Вам нужно передать параметр».

Шестая линия: Указывает, что будет выполнено следующее когда заявленное нами условие не верно.

Седьмая строка: Se запустите команду «где« сопровождается контентом, который мы передали как первый параметр.

Восьмая строка: с «fi»Указывает, что блок заканчивается if.

Тестирование нашего скрипта

Важно добавить разрешения на запись к сценарию:

$ chmod -x ~/.bin/donde

Без этого появится сообщение об ошибке «В разрешении отказано».. После этого мы можем запустить наш скрипт.

$ donde php

Он должен показать нам расположение двоичных файлов php, их исходных файлов и страниц руководства. Что-то такое:

php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php 
/usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache 
/usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz

Резюме

  • Мы даем возможность каталог ".bin" для размещения наших скриптов.
  • Мы предоставляем информация для Linux, чтобы включить этот каталог в поиски команд.
  • Создаем свой скрипт.
  • Разница между другой притон.
  • Использование количество параметров, переданных с помощью $ #.
  • Использование первый параметр con $1.

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


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

4 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Мигель сказал

    Очень хорошо и хорошо объяснено, но к чему относится параметр?

    1.    Изображение местозаполнителя для Pedro Ruiz Hidalgo сказал

      Спасибо, Мигель!

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

      В команде linux для копирования файла a.txt в файл b.txt мы бы написали следующее:

      $ cp a.txt b.txt

      Программа cp здесь получает два параметра, которые являются именами двух файлов: первый (должен существовать) a.txt и второй b.txt.

      Другой пример: если вы отправляете на печать с консоли с помощью команды

      $ lp file.pdf

      В этом случае "file.pdf" является параметром программы lp.

      Надеюсь, я развеял ваши сомнения.

      привет

  2.   Мигель сказал

    Мои комментарии не появляются, это неуважение, я не возвращаюсь на этот форум.

    1.    Изображение местозаполнителя для Pedro Ruiz Hidalgo сказал

      Я не знаю, что произошло, во всяком случае, это опубликовано.

      Привет.