Чтение онлайн

на главную - закладки

Жанры

Искусство программирования на языке сценариев командной оболочки

Купер Мендель

Шрифт:

# поскольку "*" возвращает имена, не содержащие "/".

do n=`echo "$filename/" | tr '[:upper:]' '[:lower:]'`

# символьные классы POSIX.

# Завершающий слэш добавлен для того, чтобы символ перевода строки

# не был удален при подстановке команды.

# Подстановка переменной:

n=${n%/} # Удаление завершающего слэша, добавленного выше.

[[ $filename == $n ]] || mv "$filename" "$n"

#

Проверка -- действительно ли изменилось имя файла.

done

exit 0

Пример 12-16. du: Преобразование текстового файла из формата DOS в формат UNIX.

#!/bin/bash

# du.sh: Преобразование текстового файла из формата DOS в формат UNIX.

E_WRONGARGS=65

if [ -z "$1" ]

then

echo "Порядок использования: `basename $0` filename-to-convert"

exit $E_WRONGARGS

fi

NEWFILENAME=$1.unx

CR='\015' # Возврат каретки.

# Строки в текстовых файлах DOS завершаются комбинацией символов CR-LF.

tr -d $CR < $1 > $NEWFILENAME

# Удалить символы CR и записать в новый файл.

echo "Исходный текстовый файл: \"$1\"."

echo "Преобразованный файл: \"$NEWFILENAME\"."

exit 0

Пример 12-17. rot13: Сверхслабое шифрование по алгоритму rot13.

#!/bin/bash

# rot13.sh: Классический алгоритм шифрования rot13,

# который способен "расколоть" даже 3-х летний ребенок.

# Порядок использования: ./rot13.sh filename

# или ./rot13.sh <filename

# или ./rot13.sh и ввести текст с клавиатуры (stdin)

cat "$@" | tr 'a-zA-Z' 'n-za-mN-ZA-M' # "a" заменяется на "n", "b" на "o", и т.д.

# Конструкция 'cat "$@"'

#+ позволяет вводить

данные как со stdin, так и из файла.

exit 0

Пример 12-18. Более "сложный" шифр

#!/bin/bash

# crypto-quote.sh: Ограниченное шифрование

# Шифрование ограничивается простой заменой одних алфавитных символов другими.

# Результат очень похож на шифры-загадки

key=ETAOINSHRDLUBCFGJMQPVWZYXK

# Здесь, "key" -- ни что иное, как "перемешанный" алфавит.

# Изменение ключа "key" приведет к изменению шифра.

# Конструкция 'cat "$@"' позволяет вводить данные как со stdin, так и из файла.

# Если используется stdin, то ввод должен завершаться комбинацией Control-D.

# Иначе, в командной строке, сценарию должно быть передано имя файла.

cat "$@" | tr "a-z" "A-Z" | tr "A-Z" "$key"

# | в верхний регистр | шифрование

# Такой прием позволяет шифровать как символы в верхнем регистре, так и в нижнем.

# Неалфавитные символы остаются без изменений.

# Попробуйте зашифровать какой либо текст, например

# "Nothing so needs reforming as other people's habits."

# --Mark Twain

#

# Результат будет:

# "CFPHRCS QF CIIOQ MINFMBRCS EQ FPHIM GIFGUI'Q HETRPQ."

# --BEML PZERC

# Для дешифрации можно использовать следующую комбинацию:

# cat "$@" | tr "$key" "A-Z"

# Этот нехитрый шифр может быть "взломан" 12-ти летним ребенком

#+ с помощью карандаша и бумаги.

exit 0

Различные версии tr

Утилита tr имеет две, исторически сложившиеся, версии. BSD-версия не использует квадратные скобки (tr a-z A-Z), в то время как SysV-версия использует их (tr '[a-z]' '[A-Z]'). GNU-версия утилиты tr напоминает версию BSD, но диапазоны символов обязательно должны заключаться в квадратные скобки.

Поделиться:
Популярные книги

Барон играет по своим правилам

Ренгач Евгений
5. Закон сильного
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Барон играет по своим правилам

Сердце Дракона. нейросеть в мире боевых искусств (главы 1-650)

Клеванский Кирилл Сергеевич
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.51
рейтинг книги
Сердце Дракона. нейросеть в мире боевых искусств (главы 1-650)

Герцогиня в ссылке

Нова Юлия
2. Магия стихий
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Герцогиня в ссылке

Ну привет, заучка...

Зайцева Мария
Любовные романы:
эро литература
короткие любовные романы
8.30
рейтинг книги
Ну привет, заучка...

На Ларэде

Кронос Александр
3. Лэрн
Фантастика:
фэнтези
героическая фантастика
стимпанк
5.00
рейтинг книги
На Ларэде

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12

Истинная поневоле, или Сирота в Академии Драконов

Найт Алекс
3. Академия Драконов, или Девушки с секретом
Любовные романы:
любовно-фантастические романы
6.37
рейтинг книги
Истинная поневоле, или Сирота в Академии Драконов

Кодекс Охотника. Книга VI

Винокуров Юрий
6. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга VI

Гардемарин Ее Величества. Инкарнация

Уленгов Юрий
1. Гардемарин ее величества
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
фантастика: прочее
5.00
рейтинг книги
Гардемарин Ее Величества. Инкарнация

Сама себе хозяйка

Красовская Марианна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Сама себе хозяйка

Душелов. Том 3

Faded Emory
3. Внутренние демоны
Фантастика:
альтернативная история
аниме
фэнтези
ранобэ
хентай
5.00
рейтинг книги
Душелов. Том 3

Газлайтер. Том 10

Володин Григорий
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Газлайтер. Том 10

Стеллар. Заклинатель

Прокофьев Роман Юрьевич
3. Стеллар
Фантастика:
боевая фантастика
8.40
рейтинг книги
Стеллар. Заклинатель

Возвышение Меркурия. Книга 5

Кронос Александр
5. Меркурий
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 5