Статьи Shell-кодинг

Discussion in 'Статьи' started by OptimaPrime, 15 Aug 2007.

  1. OptimaPrime

    OptimaPrime Banned

    Joined:
    30 Mar 2007
    Messages:
    307
    Likes Received:
    588
    Reputations:
    -61
    [Пролог]
    Вот сижу я тут в 2-23,и думаю о чем бы статейку написать,поюзал поиск ачата что было,А чего не было,и оказывается что шелл кодинга не было,или я так искал,ну да не об этом щас...я ведь завтра уеду,а это важно,а вы без мну не сможете,ну я и решил оставить о себе память,хорошую\плохую,эт уже второй вопрос,но она будети это главное,полазил по форумам,и наткнулся на название шелл-коддинг,что -то чертовски знакомое подумал я и меня осенило...
    Сразу скажи скажу что статья написана мною на 60%,коментировал и все остальное делал,я но коды брал готовые:)эт так чтоб не говорили что копирайтов нету,если что)
    Вобщем в пару словах
    Shell-програмирование-это Умение создавать скрипты на входных языках командных интерпретаторов
    [Общие положения]
    Комментарии начинаются с символа #,за исключением первой строки.
    Первой строкой сценария является путь к интерпретатору,начинающийся
    с #! с помошью которого будет запущен данный скрипт.Например:
    #
    [Переменные,ввод и вывод данных]
    Для задания переменных используется оператор присваевания "=".Синтаксис
    следующий:

    <переменная>=<значение>

    Замечу,что в отличие от языков perl и php,между знаком "=" и остальными
    параметрами нельзя ставить пробел.В этом случае интерпретатор выдаст
    ошибку.Чтобы обратится к заданной переменной ,надо вызвать её поставив
    перед ней знак $.Удалить переменную можно с помощью оператора unset.

    Оператор Echo просто выводит строку(или переменную), идущую после него:
    В данный пример также можно добавить одинарные или двойные кавычки,
    от этого результат работы программы не изменится.Но не стоит
    использовать обратные кавычки,т.к.эти символы используются для
    выполнения команд:
    Оператор read присваевает значение переменной.Вот пример,который
    просит ввести переменную var,считывает её а затем выводит.
    [Агрументы командной строки]
    Как и во всех консольных программах, в shell-сценарий можно передавать
    аргументы из командной строки.Переменные $1..$9 соответствуют параметрам,
    переданным из командной строки сценарию.Переменная $0 содержит имя
    интерпретируемого файла.$#-содержит количество переданных аргументов.
    $* и $@ содержат все аргументы,но в $@ все аргументы выделены кавычками.
    Напишем скрипт,который выводит 2 аргумента командной строки и имя
    исполняемого файла.Запуск скрипта: ./script.sh 1 2
    [Арифметические операции]
    Арифметические операции производятся с использованием оператора let.
    Операции:
    * - умножение
    / - деление
    + - сложение
    - - вычитание
    % - деление с остатком
    Синтаксис:

    let <значение> <оператор> <значение>


    Пример:

    [Оператор test или []]
    Данные операторы предназначены для выполнения сравнений двух значений.
    Если сравнение успешно-оператор возвращает 0,иначе 1.Код завершения
    последней выполненной команды хранится в специальной переменной $?.
    Синтаксис:

    test <значение> -опция <значение>

    или

    [<значение> -опция <значение>]
    Пример:

    Ниже приведены все опции оператора test(или []):

    Сравнение целых чисел:

    -gt больше чем
    -lt меньше чем
    -ge больше чем либо равно
    -le меньше чем либо равно
    -eq равно
    -ne не равно
    Сравнение строк:

    -z проверка на наличие пустой строки
    -n проверка на наличие строки-значения
    = равенство
    != неравенство
    str проверка на наличие строки,состоящей из нулей

    Логические операции:

    -a И
    -o ИЛИ
    ! НЕ

    Проверка файлов:

    -f установка факта существования файла и его регулярности
    -s проверка,не является-ли файл пустым
    -r проверка возможности считывания файла
    -w проверка возможности записи файла
    -x проверка исполняемости файла
    -d проверка,является-ли файл каталогом
    -h проверка,является-ли файл ссылкой
    -c проверка,является-ли файл байт-ориентированным устройством
    -d проверка,является-ли файл блок-ориентированным устройством
    [Условия]
    Ниже описан синтаксис всех условных операторов,с примерами.

    1)if <команда> then
    <команда>
    fi

    Пример:
    Результат работы,при переданном параметре равном 10:
    2)if <команда> then
    <команда>
    else
    <команда>
    fi

    Пример:

    Результат работы,при переданном параметре равном 10:

    Результат работы,при переданном параметре равном 7:

    )if <команда> then
    <команда>
    elif
    <команда>
    else
    <команда>
    fi

    Пример:

    Результат работы,при переданном параметре равном 10:

    Результат работы,при переданном параметре равном 9:
    Результат работы,при переданном параметре равном 8:

    4)case <строка> in
    <шаблон>)
    <команды>
    ;;
    *)
    <команды>
    ;;
    esac

    Case-конструкция позволяет выбирать один из нескольких альтернативных
    вариантов.

    Результат работы,при переданном параметре равном 1:

    Результат работы,при переданном параметре равном 2:

    Результат работы,при переданном параметре равном 10:

    [Циклы]
    1)while <условие>
    do
    <команды>
    done

    Выполняет команды пока условие истино.

    Пример:
    2)until <условие>
    do
    <команды>
    done

    Выполняет команды пока условие ложно.

    Пример:

    ВОт собственно и фсе...)сильно не бить(
     
    #1 OptimaPrime, 15 Aug 2007
    Last edited: 15 Aug 2007
    2 people like this.
  2. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    http://www.kodsweb.ru/texts/sh-coding.txt
    Автор, а ты спросил разрешения у команды KODSWEB?

    Резюме: Замена чужих комментов к примерам чужого кода на свои - это не статья! Статья скорее всего будет перенесена или удалена, так как не соответсвует правилам раздела...
     
    #2 -=lebed=-, 15 Aug 2007
    Last edited: 15 Aug 2007