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

Тут можно читать онлайн Мендель Купер - Искусство программирования на языке сценариев командной оболочки - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Искусство программирования на языке сценариев командной оболочки
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3.7/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Искусство программирования на языке сценариев командной оболочки - описание и краткое содержание, автор Мендель Купер, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток, постепенно, шаг за шагом раскрывая мудрость и красоту UNIX. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к изучению языка сценариев -- это написание сценариев.

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

Искусство программирования на языке сценариев командной оболочки - читать книгу онлайн бесплатно, автор Мендель Купер
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

mkdir

Создает новый каталог. mkdir -p project/programs/Decemberсоздает каталог с заданным именем в требуемом каталоге. Ключ -p позволяет создавать промежуточные родительские каталоги.

chmod

Изменяет атрибуты существующего файла (см. Пример 11-10).

chmod +x filename

# Делает файл "filename" доступным для исполнения всем пользователям.

chmod u+s filename

# Устанавливается бит "suid" для "filename".

# В результате, любой пользователь сможет запустить "filename" с привилегиями владельца файла.

# (Это не относится к файлам-сценариям на языке командной оболочки.)

chmod 644 filename

# Выдает право на запись/чтение владельцу файла "filename", и право на чтение

# всем остальным

# (восьмеричное число).

chmod 1777 directory-name

# Выдает право на чтение, запись и исполнение файлов в каталоге,

# дополнительно устанавливает "sticky bit".

# Это означает, что удалять файлы в этом каталоге могут только владельцы файлов,

# владелец каталога и, само собой разумеется, root.

chattr

Изменяет атрибуты файла. Эта команда подобна команде chmod, за исключением синтаксиса вызова, и работает исключительно в файловой системе ext2 .

ln

Создает ссылку на существующий файл. Чаще всего используется с ключом -s , что означает символическую, или "мягкую" (symbolic или "soft") ссылку. Позволяет задавать несколько имен одному и тому же файлу и превосходная альтернатива "псевдонимам" (алиасам) (см. Пример 4-6).

ln -s oldfile newfileсоздает ссылку, с именем newfile , на существующий файл oldfile , .

man, info

Команды доступа к справочным и информационным страницам по системным командам и установленным программам и утилитам. Как правило, страницы info содержат более подробную информацию, чем man .

12.2. Более сложные команды

Команды для более опытных пользователей

find

-exec COMMAND \;

Для каждого найденного файла, соответствующего заданному шаблону поиска, выполняет команду COMMAND . Командная строка должна завершаться последовательностью символов \; (здесь символ ";" экранирован обратным слэшем, чтобы информировать командную оболочку о том, что символ ";" должен быть передан команде findкак обычный символ). Если COMMAND содержит {}, то findподставляет полное имя найденного файла вместо "{}".

bash$ find ~/ -name '*.txt'

/home/bozo/.kde/share/apps/karm/karmdata.txt

/home/bozo/misc/irmeyc.txt

/home/bozo/test-scripts/1.txt

find /home/bozo/projects -mtime 1

# Найти все файлы в каталоге /home/bozo/projects и вложенных подкаталогах,

#+ которые изменялись в течение последних суток.

#

# mtime = время последнего изменения файла

# ctime = время последнего изменения атрибутов файла (через 'chmod' или как-то иначе)

# atime = время последнего обращения к файлу

DIR=/home/bozo/junk_files

find "$DIR" -type f -atime +5 -exec rm {} \;

# Удалить все файлы в каталоге "/home/bozo/junk_files"

#+ к которым не было обращений в течение последних 5 дней.

#

# "-type filetype", где

# f = обычный файл

# d = каталог, и т.п.

# (Полный список ключей вы найдете в 'man find'.)

find /etc -exec grep '[0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*' {} \;

# Поиск всех IP-адресов (xxx.xxx.xxx.xxx) в файлах каталога /etc.

# Однако эта команда выводит не только IP-адреса, как этого избежать?

# Примерно так:

find /etc -type f -exec cat '{}' \; | tr -c '.[:digit:]' '\n' \

| grep '^[^.][^.]*\.[^.][^.]*\.[^.][^.]*\.[^.][^.]*$'

# [:digit:] -- один из символьных классов

# введен в стандарт POSIX 1003.2.

# Спасибо S.C.

картинка 78Не следует путать опцию -exec команды findс внутренней командой Bash -- exec.

Пример 12-2. Badname, удаление файлов в текущем каталоге, имена которых содержат недопустимые символы и пробелы.

#!/bin/bash

# Удаление файлов в текущем каталоге, чьи имена содержат недопустимые символы.

for filename in *

do

badname=`echo "$filename" | sed -n /[\+\{\;\"\\\=\?~\(\)\<\>\&\*\|\$]/p`

# Недопустимые символы в именах файлов: + { ; " \ = ? ~ ( ) < > & * | $

rm $badname 2>/dev/null # Сообщения об ошибках "выстреливаются" в никуда.

done

# Теперь "позаботимся" о файлах, чьи имена содержат пробельные символы.

find . -name "* *" -exec rm -f {} \;

# На место "{}", find подставит полное имя файла.

# Символ '\' указывает на то, что ';' интерпретируется как обычный символ, а не как конец команды.

exit 0

#---------------------------------------------------------------------

# Строки, приведенные ниже, не будут выполнены, т.к. выше стоит команда "exit".

# Альтернативный вариант сценария:

find . -name '*[+{;"\\=?~()<>&*|$ ]*' -exec rm -f '{}' \;

exit 0

# (Спасибо S.C.)

Пример 12-3. Удаление файла по его номеру inode

#!/bin/bash

# idelete.sh: Удаление файла по номеру inode.

# Этот прием используется в тех случаях, когда имя файла начинается с недопустимого символа,

#+ например, ? или -.

ARGCOUNT=1 # Имя файла должно быть передано в сценарий.

E_WRONGARGS=70

E_FILE_NOT_EXIST=71

E_CHANGED_MIND=72

if [ $# -ne "$ARGCOUNT" ]

then

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

exit $E_WRONGARGS

fi

if [ ! -e "$1" ]

then

echo "Файл \""$1"\" не найден."

exit $E_FILE_NOT_EXIST

fi

inum=`ls -i | grep "$1" | awk '{print $1}'`

# inum = номер inode (index node) файла

# Каждый файл имеет свой inode, где хранится информация о физическом расположении файла.

echo; echo -n "Вы совершенно уверены в том, что желаете удалить \"$1\" (y/n)? "

# Ключ '-v' в команде 'rm' тоже заставит команду вывести подобный запрос.

read answer

case "$answer" in

[nN]) echo "Передумали?"

exit $E_CHANGED_MIND

;;

*) echo "Удаление файла \"$1\".";;

esac

find . -inum $inum -exec rm {} \;

echo "Файл "\"$1"\" удален!"

exit 0

Дополнительные примеры по использованию команды findвы найдете в Пример 12-22, Пример 3-4 и Пример 10-9. В страницах справочного ркуоводства (man find) вы найдете более подробную информацию об этой достаточно сложной и мощной команде.

xargs

Команда передачи аргументов указанной команде. Она разбивает поток аргументов на отдельные составляющие и поочередно передает их заданной команде для обработки. Эта команда может рассматриваться как мощная замена обратным одиничным кавычкам. Зачастую, когда команды, заключенные в обратные одиночные кавычки, завершаются с ошибкой too many arguments (слишком много аргументов), использование xargsпозволяет обойти это ограничение. Обычно, xargsсчитывает список аргументов со стандартного устройства ввода stdin или из канала (конвейера), но может считывать информацию и из файла.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Мендель Купер читать все книги автора по порядку

Мендель Купер - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Искусство программирования на языке сценариев командной оболочки, автор: Мендель Купер. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x