Читать книгу Cуперкомпьютеры: администрирование - Сергей Анатольевич Жуматий - Страница 30
Глава 4. UNIX и Linux – основы
Команды для работы с файлами
Оглавление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
, в каталог одного уровня с рабочим.
Во всех операциях объекты, выступающие в качестве источника, исчезают: меняют имя или расположение.
cp [опции] источник назначение
– копирование файлов и каталогов.
Опции:
-i
– интерактивное копирование (с требованием подтверждения, если объект назначение уже существует );
-f
– без выдачи сообщений;
-r
– рекурсивное копирование каталогов вместе с содержимым;
-p
– копирование с сохранением атрибутов файлов (прав доступа, времени модификации).
Примеры:
cp file1 file2
– будет создана копия файла file1
в файле с именем file2
;
cp file1 dir2
– будет создана копия файла file1
в каталоге dir2
(т. е. с именем dir2/file1
);
cp -r dir1 dir2
– будет создана копия каталога dir1
в каталоге dir2
;
cp file1 file2 file3 /tmp
– копирует файлы с именами file1
, file2
, file3
в подкаталог tmp
корневого каталога. Это можно выполнить командой:
Команда cat
объединяет файлы и выдаёт их на стандартный поток вывода. Если аргумент файл отсутствует, то команда cat
будет принимать входной поток из стандартного файла ввода (клавиатуры). Поскольку команда работает со стандартным файлом вывода (терминалом), то чаще всего она используется для просмотра на экране содержимого файла. Не рекомендуется выдавать на экран бинарные файлы.
cat ls.txt
– выводит содержимое файла с именем ls.txt
на терминал;
cat ls1.txt ls2.txt ls3.txt
– по очереди выводит на терминал содержимое файлов ls1.txt, ls2.txt, ls3.txt
;
cat ls1.txt ls2.txt ls3.txt > lsall.txt
– объединяет три файла в один. При этом старые файлы сохраняются. Если файл lsall.txt
уже существовал, то он затрётся новым содержимым. Можно дописать в конец файла, если использовать для перенаправления знак >>
(два знака «больше»).
Команду cat
можно использовать для создания файла:
cat > ls.txt
– все набранное на клавиатуре будет записано в файл ls.txt
. Оборвать ввод можно сочетанием клавиш Ctrl-D
.
Команда cat
выдаёт все содержимое на экран. Если файл большой, то на экране можно будет увидеть только последние строки.
Для просмотра текстовых файлов порциями можно напрямую использовать команды:
• more file.txt
• less file.txt
Команда less
содержит большой набор внутренних команд для перемещения по файлу, поиска контекста и даже редактирования:
Таблица 10: некоторые клавиатурные команды less
tail [опции] файл —
просмотр конца файла. По умолчанию выдаётся 10 последних строк. С помощью опций можно начать просмотр с любой позиции.
Опции:
-n number
– сколько выдавать строк;
-r number
– отображение в обратном порядке;
-f
– непрерывная выдача файла по мере его заполнения.
Прерывание интерактивной выдачи комбинацией Ctrl-С
.
grep [опции] строка [файл][файл]…
– поиск контекста «строка» в указанных файлах.
Опции:
-i
– поиск без учёта регистра;
-n
– отображать номера строк, содержащих контекст;
-v
– отображать строки, не содержащие контекста.
find [опции] каталог выражение
– рекурсивный поиск файлов в указанном каталоге по различным атрибутам, таким как имя, размер, время модификации, права доступа.
Выражения:
-name filename
– поиск файла с именем filename
. Возможно использование шаблонов, но тогда надо брать их в кавычки 'test*
' либо экранировать символы шаблона test\*
;
-size [+|-]number
– поиск файлов с заданным размером, превышающим его (+) или меньшим (−). Размер указывается в блоках по 512 байт;
-atime number
– поиск файлов, к которым происходил доступ number суток назад;
-mtime number
– поиск файлов, которые были модифицированы number суток назад;
-exec command \{\} \;
– выполнить команду command
над списком файлов, найденных командой find
. Здесь выражение «{}
» будет заменяться именем найденного файла, а ';' означает конец команды. Так как эти символы обрабатываются оболочкой, то их надо экранировать, например:
– рекурсивно удалить все core-файлы, начиная с текущего каталога.
Следует отметить, что многие действия из перечисленных выше и связанных с манипуляциями с каталогами и файлами можно выполнять с помощью специальной программы – файлового менеджера Midnight Commander. Он не требует графической оболочки, вызывается в терминальном окне командой:
С помощью этой программы можно перемещаться по дереву каталогов, просматривать содержимое каталогов и файлов, создавать каталоги (но не файлы), удалять, копировать, перемещать каталоги и файлы, вести поиск файлов. Для многих пользователей текстовый редактор Midnight Commander является очень хорошим выбором. Его можно вызвать отдельно командой mcedit
.
Редактирование файлов – отдельная важная тема. Существует большое число редакторов, работающих как в текстовом, так и в графическом режимах. Нас как администраторов в первую очередь будет интересовать редактор, который может работать в самых сложных условиях – без графического интерфейса, возможно, по сети, когда функциональные клавиши недоступны или работают неверно. Таких редакторов существует несколько, например gnu nano
. Но, на наш взгляд, самый гарантированно работающий вариант, который, ко всему прочему установлен на 99% Linux-систем, – это редактор vi
.
Его интерфейс на первый взгляд совсем не дружественен и не логичен, на деле же большинство его команд продуманы и удобны. Главное его преимущество – возможность работы практически в любых условиях и быстрое выполнение массовых операций (поиск, замена и т. п.). Он имеет два режима работы – командный и режим вставки. Изначально файл открывается в командном режиме. Для перемещения по тексту используйте клавиши курсора, если же они не работают, – клавиши 'h,j,k,l
' (посмотрите на клавиатуру и поймёте, почему такой странный набор). Клавиши w
и b
перемещают вперёд и назад на слово. И конечно, «главная» команда – выход с сохранением: ':wq
' или просто 'ZZ
' (заглавными буквами). Выйти без сохранения можно командой ':q!
'.
Полезные команды:
Таблица 11: некоторые клавиатурные команды vi
Режим вставки позволяет вписывать текст в нужную позицию. Выйти из него можно клавишей <ESC>
. Перед любой командой можно набрать число, тогда команда будет повторена это число раз. Например, '10dd
' удалит 10 строк (и поместит их вместе в буфер, потом можно будет их вставить в другом месте командой 'p
'). Повтор команды вставки или замены повторит и ввод, например ввод 'cwNEW_WORD<ESC>
' приведёт в замене слова после курсора на 'NEW_WORD
', а если потом переместить курсор на начало другого слова и нажать '.', то оно также будет заменено на 'NEW_WORD
'.
Из расширенных команд особенно удобна команда массовой замены 's
'. Её синтаксис взят из команды sed
. Перед командой можно указать через запятую диапазон строк, на которые она будет действовать, при этом '.' обозначает текущую строку, $
– последнюю, а знак +
указывает на то, что номер дан относительно текущей строки.
Например, заменить адрес old-cluster на new-supercomputer в 10 строках после текущей включительно можно, набрав:
Очень непривычно, но очень эффективно. Обязательно почитайте учебник по vi
и попробуйте использовать его для редактирования. Такие возможности, как быстрая замена слов и предложений, исправление переставленных местами букв, моментальная навигация, поддержка работы с файлами огромных объёмов делают его исключительно эффективным для редактирования файлов конфигурации, журналов и многих других.