Вячеслав Вячеславович Ткачев

BASH. Справочное пособие


Скачать книгу

(unset) each OPTNAME

      $shopt -s extglob

      $ man shopt

      Нет справочной страницы для shopt

      ?(шаблон) Совпадение с нулевым или единичным

      количеством экземпляров заданного шаблона.

      *(шаблон) Совпадение с нулевым или большим

      количеством экземпляров заданного шаблона.

      +(шаблон)Совпадение с единичным или большим

      количеством экземпляров заданного шаблона.

      @(шаблон) Точное совпадение с одним экземпляром

      заданного шаблона.

      ! (шаблон) Совпадение с любыми символьными

      строками не совпадающими с заданным шаблоном

      Пример 1 Создадим файл из одной строки

      $ cat >fs2.txt

      Hello

      ^d

      $ rm fs?(2).txt; cat fs2.txt

      cat: fs2.txt: Нет такого файла или каталога

      Пример 2

      $ cat >fs01.txt

      Allo

      $ rm fs*(01).txt; cat fs01.txt

      cat: fs01.txt: Нет такого файла или каталога

      Пример 3

      $ cat >fs_lin.txt

      Hello friend

      $ rm fs@(_lin).txt; cat fs_lin.txt

      cat: fs_lin.txt: Нет такого файла или каталога

      Пример 4

      $ cat >fs_lin.txt

      Hello friend

      $ rm fs!(lin).txt; cat fs_lin.txt

      rm: невозможно удалить 'fs!(lin).txt': Нет такого файла или каталога

      cat: fs_lin.txt: Нет такого файла или каталога

      2.4 Совпадение с классами символов.

      Класс Совпадающие символы

      alnum Буквенно-цифровые

      alpha Буквенные

      ascii Символы в коде ACII

      blank Пробелы и знаки табуляции

      cntrl Управляющие

      digit Десятичные цифры

      graph Непробельные

      lower Строчные буквы

      print Печатаемые

      punct Знаки препинания

      space Пробельные

      upper Прописные буквы

      word То же что и alnum

      xdigit Шестнадцатиричные цифры

      Пример

      Эквивалентом выражения "[a-zA-Z_0-9]" является выражение "[[:alnum:]]"

      Выражению "[0-9]" эквивалентно выражение "[[:digit:]]"

      Выражению "[a-Z]" эквивалентно регулярное выражение "[[:alpha:]

      [01[:alpha:]%] совпадает с 0 ,1 ,любым алфавитным символом или %.

      2.5 Раскрытие скобок.

      Раскрытие скобок выполняется прежде других видов раскрытия выражений, {} не должны заключаться в кавычки. Подстановка команд при раскрытии скобок игнорируется оболочкой BASH.

      Пример 1

      $ echo hi{BBB,AAA}there

      hiBBBthere,hiAAAthere

      Пример2

      $ echo a{d,c,b}e

      ade ace abe

      Пример 3

      $ echo 1 to 5 is {1..5}

      1 to 5 is 1 2 3 4 5

      $ echo 1 to 8 by 2 {1..8}

      1 to 8 by 2 1 2 3 4 5 6 7 8

      Использование скобок ( ) показано на следующем примере – выполнение группы команд.

      $ (date; w;) Результат

      Чт 22 июл 2021 08:31:12 MSK

      08:31:12 up 3:00, 1 user, load average: 0,02, 0,14, 0,18

      USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

      max tty2 tty2 05:31 2:59m 0.11s 0.10s /usr/libexec/gn

      Использование скобок [ ] и (( )) показано на примере простого скрипта.

      $ cat >skobki.sh

      #!/bin/bash

      X=1

      while [ $X -lt 5 ]

      do

      echo "–> $X <–"

      X=$(( $X+1 ))

      done

      exit 0

      $ chmod +x skobki.sh

      $ ./skobki.sh

      –-> 1 <–

      –-> 2 <–

      –-> 3 <–

      –-> 4 <–

      2.6 Управляющие последовательности символов.

      Распознаются и интерпретируются в следующих контекстах. Символьная строка в форме $ '…'

      Аргументы в командах echo -e , printf %b

      (Подставить