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

на главную

Жанры

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

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

Шрифт:

Этот сценарий является модификацией Пример 12-15.

#! /bin/bash

#

# Очень простая утилита для переименования файлов

#

# Утилита "ren", автор Vladimir Lanin ([email protected]),

#+ выполняет эти же действия много лучше.

ARGS=2

E_BADARGS=65

ONE=1 # Единственное или множественное число (см. ниже).

if [ $# -ne "$ARGS" ]

then

echo "Порядок использования: `basename $0` старый_шаблон

новый_шаблон"

# Например: "rn gif jpg", поменяет расширения всех файлов в текущем каталоге с gif на jpg.

exit $E_BADARGS

fi

number=0 # Количество переименованных файлов.

for filename in *$1* # Проход по списку файлов в текущем каталоге.

do

if [ -f "$filename" ]

then

fname=`basename $filename` # Удалить путь к файлу из имени.

n=`echo $fname | sed -e "s/$1/$2/"` # Поменять старое имя на новое.

mv $fname $n # Переименовать.

let "number += 1"

fi

done

if [ "$number" -eq "$ONE" ] # Соблюдение правил грамматики.

then

echo "$number файл переименован."

else

echo "Переименовано файлов: $number."

fi

exit 0

# Упражнения:

# ----------

# С какими типами файлов этот сценарий не будет работать?

# Как это исправить?

#

# Переделайте сценарий таким образом, чтобы он мог обрабатывать все файлы в каталоге,

#+ в именах которых содержатся пробелы, заменяя пробелы символом подчеркивания.

Пример A-4. blank-rename: переименование файлов, чьи имена содержат пробелы

Это даже более простая версия предыдущего примера.

#! /bin/bash

# blank-rename.sh

#

# Заменяет пробелы символом подчеркивания в именах файлов в текущем каталоге.

ONE=1 # единственное или множественное число (см. ниже).

number=0 # Количество переименованных файлов.

FOUND=0 # Код завершения в случае успеха.

for filename in * # Перебор всех файлов в текущем каталоге.

do

echo "$filename" | grep -q " " # Проверить -- содержит ли имя файла

if [ $?
– eq $FOUND ] #+ пробелы.

then

fname=$filename # Удалить путь из имени файла.

n=`echo $fname | sed -e "s/ /_/g"` # Заменить пробелы символом подчеркивания.

mv "$fname" "$n" # Переименование.

let "number += 1"

fi

done

if [ "$number" -eq "$ONE" ]

then

echo "$number файл переименован."

else

echo "Переименовано файлов: $number"

fi

exit 0

Пример A-5. encryptedpw:

Передача файла на ftp-сервер, с использованием пароля

#!/bin/bash

# Модификация примера "ex72.sh", добавлено шифрование пароля.

# Обратите внимание: этот вариант все еще нельзя считать безопасным,

#+ поскольку в сеть пароль уходит в незашифрованном виде.

# Используйте "ssh", если вас это беспокоит.

E_BADARGS=65

if [ -z "$1" ]

then

echo "Порядок использования: `basename $0` имя_файла"

exit $E_BADARGS

fi

Username=bozo # Измените на свой.

pword=/home/bozo/secret/password_encrypted.file

# Файл, содержащий пароль в зашифрованном виде.

Filename=`basename $1` # Удалить путь из имени файла

Server="XXX"

Directory="YYY" # Подставьте фактические имя сервера и каталога.

Password=`cruft <$pword` # Расшифровка.

# Используется авторская программа "cruft",

#+ основанная на алгоритме "onetime pad",

#+ ее можно скачать с :

#+ Primary-site: ftp://ibiblio.org/pub/Linux/utils/file

#+ cruft-0.2.tar.gz [16k]

ftp -n $Server <<End-Of-Session

user $Username $Password

binary

bell

cd $Directory

put $Filename

bye

End-Of-Session

# ключ -n, команды "ftp", запрещает автоматический вход.

# "bell" -- звонок (звуковой сигнал) после передачи каждого файла.

exit 0

Пример A-6. copy-cd: Копирование компакт-дисков с данными

#!/bin/bash

# copy-cd.sh: copying a data CD

CDROM=/dev/cdrom # устройство CD ROM

OF=/home/bozo/projects/cdimage.iso # промежуточный файл

# /xxxx/xxxxxxx/ измените для своей системы.

BLOCKSIZE=2048

SPEED=2 # Можно задать более высокую скорость, если поддерживается.

echo; echo "Вставьте исходный CD, но *НЕ* монтируйте его."

echo "Нажмите ENTER, когда будете готовы. "

read ready # Ожидание.

echo; echo "Создается промежуточный файл $OF."

echo "Это может занять какое-то время. Пожалуйста подождите."

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

Как я строил магическую империю 4

Зубов Константин
4. Как я строил магическую империю
Фантастика:
боевая фантастика
постапокалипсис
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 4

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Попаданка 3

Ахминеева Нина
3. Двойная звезда
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Попаданка 3

Муж на сдачу

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Муж на сдачу

Призыватель нулевого ранга. Том 3

Дубов Дмитрий
3. Эпоха Гардара
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Призыватель нулевого ранга. Том 3

На границе империй. Том 10. Часть 5

INDIGO
23. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 5

Адвокат

Константинов Андрей Дмитриевич
1. Бандитский Петербург
Детективы:
боевики
8.00
рейтинг книги
Адвокат

На границе империй. Том 7

INDIGO
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
6.75
рейтинг книги
На границе империй. Том 7

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

О, Путник!

Арбеков Александр Анатольевич
1. Квинтет. Миры
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
О, Путник!

Чужбина

Седой Василий
2. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужбина

Бестужев. Служба Государевой Безопасности. Книга четвертая

Измайлов Сергей
4. Граф Бестужев
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга четвертая

Локки 5. Потомок бога

Решетов Евгений Валерьевич
5. Локки
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Локки 5. Потомок бога

На границе империй. Том 10. Часть 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 4