|
Поиск по сайту:
Главная
О проекте
Web-мастеру
HTML & JavaScript
SSI
Perl
PHP
XML & XSLT
Unix Shell
MySQL
Безопасность
Хостинг
Другое
|
|
12.1. Базовые команды
Первая команда, с
которой сталкиваются новички
- ls
-
Команда вывода "списка" файлов. Многие
недооценивают всю мощь этой скромной команды. Например,
с ключом -R, рекурсивный обход
дерева каталогов, командв ls выводит содержимое каталогов в
виде древовидной структуры. Вот еще ряд любопытных
ключей (опций) команды ls: -S --
сортировка по размеру файлов, -t -- сортировка по времени последней
модификации файла и -i --
выводит список файлов с их inode (см. Пример 12-4).
Пример 12-1. Создание оглавления диска для
записи CDR, с помощью
команды ls
#!/bin/bash
# burn-cd.sh
# Сценарий, автоматизирующий процесс прожигания CDR.
SPEED=2 # Если ваше "железо" поддерживает более высокую скорость записи -- можете увеличить этот параметр
IMAGEFILE=cdimage.iso
CONTENTSFILE=contents
DEFAULTDIR=/opt # В этом каталоге находятся файлы, которые будут записаны на CD.
# Каталог должен существовать.
# Используется пакет "cdrecord" от Joerg Schilling.
# (http://www.fokus.gmd.de/nthp/employees/schilling/cdrecord.html)
# Если этот сценарий предполагается запускать с правами обычного пользователя,
#+ то необходимо установить флаг suid на cdrecord
#+ (chmod u+s /usr/bin/cdrecord, эта команда должна быть выполнена root-ом).
if [ -z "$1" ]
then
IMAGE_DIRECTORY=$DEFAULTDIR
# Каталог по-умолчанию, если иной каталог не задан из командной строки.
else
IMAGE_DIRECTORY=$1
fi
# Создать файл "table of contents".
ls -lRF $IMAGE_DIRECTORY > $IMAGE_DIRECTORY/$CONTENTSFILE
# Ключ "l" -- "расширенный" формат вывода списка файлов.
# Ключ "R" -- рекурсивный обход дерева каталогов.
# Ключ "F" -- добавляет дополнительные метки к именам файлов (к именам каталогов добавдяет оконечный символ /).
echo "Создано оглавление."
# Создать iso-образ.
mkisofs -r -o $IMAGFILE $IMAGE_DIRECTORY
echo "Создан iso-образ файловой системы ISO9660 ($IMAGEFILE)."
# "Прожигание" CDR.
cdrecord -v -isosize speed=$SPEED dev=0,0 $IMAGEFILE
echo "Запись диска."
echo "Наберитесь терпения, это может потребовать некоторого времени."
exit 0
- cat, tac
-
cat -- это акроним
от concatenate, выводит
содержимое списка файлов на stdout. Для объединения файлов в один
файл может использоваться в комбинации с операциями
перенаправления (> или
>>).
# Порядок работы с 'cat'
cat filename # Вывод содержимого файла.
cat file.1 file.2 file.3 > file.123 # Объединение содержимого 3-х файлов в одном.
Ключ -n, команды
cat, вставляет порядковые номера строк в
выходном файле. Ключ -b --
нумерут только не пустые строки. Ключ -v выводит непечатаемые символы в нотации
с символом ^. Ключ
-s заменяет несколько пустых
строк, идущих подряд, одной пустой строкой.
см. также Пример 12-24 and
Пример 12-20.
tac -- выводит
содержимое файлов в обратном порядке, от последней
строки к первой.
- rev
-
выводит все строки файла задом наперед на stdout. Это не то же самое, что
tac. Команда
rev сохраняет порядок
следования строк, но переворачивает каждую строку задом
наперед.
bash$ cat file1.txt
Это строка 1.
Это строка 2.
bash$ tac file1.txt
Это строка 2.
Это строка 1.
bash$ rev file1.txt
.1 акортс отЭ
.2 акортс отЭ
- cp
-
Команда копирования файлов. cp file1 file2
скопирует file1 в file2, перезаписав file2 если он уже существовал (см.
Пример 12-6).
|
С флагами -a и
-r, или -R выполняет копирование дерева
каталогов.
|
- mv
-
Команда перемещения файла. Эквивалентна
комбинации команд cp и
rm. Может
использоваться для перемещения большого количества
файлов или для переименования каталогов. Примеры
использования команды mv вы найдете в Пример 9-17 и Пример A-3.
|
При использовании в неинтерактивных
сценариях, команде mv следует передавать ключ
-f, чтобы подавить
запрос подтверждения на перемещение.
Если в качестве каталога назначения указан
существующий каталог, то перемещаемый каталог
становится подкаталогом каталога
назначения..
bash$ mv source_directory target_directory
bash$ ls -lF target_directory
total 1
drwxrwxr-x 2 bozo bozo 1024 May 28 19:20 source_directory/
|
- rm
-
Удаляет (remove) файл(ы). Ключ -f позволяет удалять даже файлы
ТОЛЬКО-ДЛЯ-ЧТЕНИЯ и подавляет запрос подтверждения на
удаление.
|
При попытке удаления файлов, чьи имена
начинаются с символа "-" (дефис),
команда rm
будет давать сообщение об ошибке.
bash$ rm -badname
rm: invalid option -- b
Try `rm --help' for more information.
Как вариант можно предложить предварять
имена таких файлов точкой-со-слэшем --
"./" (путь к файлу в текущем
каталоге, прим. перев.) .
bash$ rm ./-badname
|
|
С ключом -r, удалит
все файлы в подкаталогах, начиная с
текущего.
|
- rmdir
-
Удаляет каталог. Удаляемый каталог не должен
содержать файлов, включая
"скрытые файлы",
иначе каталог не будет
удален.
- mkdir
-
Создает новый каталог, например: mkdir -p
project/programs/December создает каталог
с заданным именем в требуемом каталоге. Ключ -p позволяет создавать
промежуточные родительские каталоги.
- chmod
-
Изменяет атрибуты существующего файла (см. Пример 11-11).
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
-
Создает ссылку на существующий файл. Позволяет
задавать несколько имен одному и тому же файлу и
представляет из себя превосходную альтернативу
"псевдонимам" (алиасам) (см. Пример 4-6).
Размер файла-ссылки, создаваемого командой
ln, имеет длину всего
в несколько байт.
Чаще всего команда ln используется с ключом -s, который служит для создания
символической (symbolic), или "мягкой"
("soft") ссылки.
Без этого флага, команда создает полноценную копию
имени файла. С ключом -- только ссылку, указывающую на
заданный файл. Дополнительное преимущество ключа
-s состоит в том, что он
позволяет создавать ссылки на файлы, расположенные в
других файловых системах.
Синтаксис команды достаточно прост. Например,
команда: ln -s oldfile
newfile создаст ссылку, с именем
newfile, на существующий файл
oldfile,
|
Если файл с именем newfile уже существует, то он
будет удален командой ln.
|
Ссылки дают возможность запускать одну и ту же
программу или сценарий, использую различные имена. В
этом случае программист может предусмотреть свой
вариант развития событий для каждого из имен.
Пример 12-2. Здравствуй или
Прощай
#!/bin/bash
# hello.sh: Говорит "hello" или "goodbye"
#+ в зависимости от того под каким именем был вызван сценарий.
# Создайте ссылку на этот сценарий:
# ln -s hello.sh goodbye
# И попробуйте вызвать его под разными именами:
# ./hello.sh
# ./goodbye
HELLO_CALL=65
GOODBYE_CALL=66
if [ $0 = "./goodbye" ]
then
echo "Пока!"
# Можете вставить свой вариант прощания.
exit $GOODBYE_CALL
fi
echo "Привет!"
# Можете вставить свой вариант приветствия.
exit $HELLO_CALL
- man, info
-
Команды доступа к справочным и информационным
страницам по системным командам и установленным
программам и утилитам. Как правило, страницы
info содержат более подробную
информацию, чем man.
Назад | Вперед
Содержание (общее) | Содержание раздела | Содержание подраздела
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|
|
|