Страница 16 из 20
Например, 'ls *.{cxx,h,la}' превратится в ls *.cxx *.h *.la. Более интересный приём – 'cp config{,.bak}', который превратится в cp config config.bak. Второй файл не существует, он явно задан шаблоном.
Если задан шаблон символами '*', '?' или '[]', но под него не попадает ни один файл, то команде будет передан сам шаблон. Например, если каталог пуст, а мы выполняем в нём команду 'ls *.abc', то выполнится команда 'ls *.abc', т. е. текст шаблона будет дан команде в качестве аргумента. Будьте осторожны со случайно или намеренно созданными файлами, начинающимися с тире, так как их имена после раскрытия шаблона могут быть восприняты командой как имя управляющего ключа команды!
Чтобы отменить действие спецсимвола, достаточно поставить перед ним обратную косую черту '' или заключить весь аргумент в одинарные кавычки. Например, если мы хотим удалить файл с именем «--rf *.?», то можно использовать команду:
rm – –rf *.?
или
rm – '–rf *.?'
Обратите внимание на первый аргумент '--' – он нередко используется в командах Linux и обозначает «здесь закончились ключи, далее только имена файлов». В данном случае он не обязателен, но, к примеру, если потребуется удалить файл с именем '-f', то команда 'rm -f' не сработает, так как '-f' – это ключ команды rm. Сработает команда 'rm – -f'.
Команды для работы с деревом каталогов
pwd – напечатать полное имя текущего каталога.
cd [ dirname ] – перейти в указанный каталог (в домашний каталог, если dirname не задано); dirname здесь – имя каталога, которое может состоять из собственно имени и пути к нему. Путь может быть абсолютным, если он начинается с символа /, и относительным, если начинается с любого другого символа.
Примеры перемещения по дереву каталогов:
сd /export/home/user1 – переход в домашний каталог пользователя user1;
cd / – переход в корневой каталог файловой системы;
cd prog/cc – переход из текущего каталога в каталог cc, находящийся в каталоге prog;
cd ../gosha/bin – возврат на шаг назад и переход в каталог bin пользователя gosha;
cd – переход в свой домашний каталог.
Специальные имена каталогов:
. (точка) – текущий каталог;
.. (две точки) – родительский каталог по отношению к текущему.
В bash или zsh можно использовать спецсимволы, которые shell преобразует в имена каталогов:
~ (тильда) – домашний каталог;
~name – домашний каталог пользователя name;
– (тире) – возврат в предыдущий каталог (опция встроенной команды cd).
Команды для работы с каталогами
mkdir [опции] имя_каталога … – создать новые каталоги.
Опции:
-m mode – задать права доступа;
-p – создавать при необходимости родительские каталоги.
rmdir имя_каталога … – удалить каталоги (каталоги должны быть пустыми).
ls [опции/имена] – выводит содержимое каталога или атрибутов файлов.
имена – это имена каталогов или файлов. Если имена не указаны, то выводится содержание текущего каталога.
Наиболее часто используются опции:
-a – вывести все файлы (даже если имена начинаются с точки);
-l – вывести подробную информацию о файлах и папках (права доступа, имя владельца и группы, размер в блоках по 512 байт, время последней модификации, имя файла или каталога);
-t – имена файлов сортируются не по алфавиту, а по времени последнего изменения;
-R – рекурсивно пройти по всем подкаталогам, выводя по ним информацию.
Команды для работы с файлами
touch [опции] имя_файла – создать файл, если он не существовал, или изменить время последнего изменения файла.
rm [опции] имя_файла … — удаление файлов
опции
-i – интерактивное удаление (с требованием подтверждения);
-f – без выдачи сообщений;
-r – рекурсивное удаление каталогов вместе с содержимым.
Примеры:
Для задания списка файлов можно использовать шаблоны, но пользоваться ими следует крайне осторожно. Команда
rm test* удалит все файлы с именами, начинающимися на test;
rm test * (после test стоит пробел) удалит вообще все файлы в каталоге (кроме начинающихся на точку).
mv [опции] источник назначение – перемещение файлов и каталогов.
Опции:
-i – интерактивное перемещение (с требованием подтверждения);
-f – без выдачи сообщений.
Команда mv выполняет множество функций в зависимости от типа аргументов.
1) Переименовывает файлы и каталоги, если оба аргумента являются либо файлами, либо каталогами:
mv file1 file2 – в рабочем каталоге файл file1 получит имя file2;
mv dir1 dir2 – если dir2 не существовал в рабочем каталоге, то каталог dir1 получит имя dir2; если dir2 существовал, то каталог dir1 будет перемещён в него.
2) Перемещает файл или каталог в другой каталог с тем же именем или другим:
mv file1 dir2 – перемещает file1 из рабочего каталога в каталог dir2 с тем же именем;
mv file1 dir2/file2 – перемещает file1 из рабочего каталога в каталог dir2 с именем file2.
Если источником является список файлов, а назначением – каталог, то можно использовать шаблоны:
mv file* ../dir2 – перемещает все файлы, имена которых начинаются со строки file, в каталог одного уровня с рабочим.