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