4.4 Управление файлами из командной строки (Managing Files from the Command Line)¶
Помимо управления каталогами файловой системы, нередко возникает необходимость управлять и файлами, которые в них хранятся. В этой части главы вы научитесь выполнять следующие задачи:
- Создание файлов
- Просмотр содержимого файлов
- Удаление файлов
- Копирование и перемещение файлов
- Определение типа файла
Начнём с рассмотрения того, как создавать новые файлы в файловой системе.
Создание новых файлов (Creating New Files)¶
Время от времени вам потребуется создавать новые файлы в файловой системе Linux. Создать новый файл можно с помощью команды touch из приглашения командной строки. Чтобы воспользоваться touch, введите touch с последующим именем файла, который нужно создать. В следующем примере команда touch myfile.txt была выполнена из домашнего каталога пользователя rtracy:
rtracy@ openSUSE:~> touch myfile.txt
rtracy@ openSUSE:~> ls -l my*
-rw-r--r-- 1 rtracy users 0 2011-02-01 11:36 myfile.txt
После выполнения touch была введена команда ls. Как видно, в каталоге /home/rtracy был создан файл myfile.txt размером 0 байт. Если нужно создать файл в другом месте файловой системы, следует указать абсолютный путь вместе с именем файла.
Просмотр содержимого файлов (Viewing File Contents)¶
Как было рассмотрено ранее, система Linux и работающие на ней службы настраиваются с помощью простых текстовых файлов, хранящихся (как правило) в каталоге /etc файловой системы. Кроме того, многие файлы системного журнала сохраняются в виде текстовых файлов. Поскольку Linux использует текстовые файлы для настройки и управления практически всем, вам часто потребуется просматривать содержимое файлов.
В предыдущей главе вы научились открывать файлы для просмотра и редактирования с помощью текстовых редакторов. Это вполне удобно. Однако нередко нужно просто быстро посмотреть текстовый файл на экране без необходимости загружать текстовый редактор. Linux предоставляет ряд инструментов командной строки для этой цели. К ним относятся следующие:
-
cat— командаcat имя_файлавыведет указанный текстовый файл на экран. Например, чтобы просмотреть конфигурационный файл/etc/xinetd.conf, нужно ввестиcat /etc/xinetd.confв приглашении командной строки.Совет
Команда
catне делает паузы в выводе, поэтому при просмотре длинного файла может потребоваться передать вывод через конвейер программеmore(| more), чтобы останавливать вывод постранично. -
less— командаless имя_файлатакже позволяет отображать указанный текстовый файл на экране, как иcat. Однако командаlessавтоматически делает паузы при выводе длинного файла — по одной странице за раз. Для навигации по выводу можно использовать клавиши пробела, Page Up, Page Down и стрелки. -
head— командаhead имя_файлаиспользуется для отображения первых нескольких строк текстового файла на экране. -
tail— командаtail имя_файлаиспользуется для отображения последних нескольких строк текстового файла на экране. Командаtailособенно полезна при просмотре файла журнала. При работе с журналом, как правило, нужно видеть только конец файла — записи, сделанные несколько дней или недель назад, обычно не представляют интереса. С помощьюtailможно просмотреть лишь последние несколько записей в конце файла.
Команда tail также имеет параметр -f, который очень удобен. С его помощью можно отслеживать файл, указанный в команде. Если в конец файла добавляется новое содержимое (например, в файл журнала), новые строки будут отображаться на экране. На рис. 4-7 была выполнена команда tail -f /var/log/messages для отслеживания файла на предмет новых записей.

Рис. 4-7. Использование tail с параметром -f для отслеживания файла журнала
Использование -f совместно с командой tail может быть весьма полезным при диагностике неисправной службы или проблемы с конфигурацией системы. Закончив, можно прервать выполнение tail, нажав Ctrl+C.
Помимо создания и просмотра файлов, необходимо также уметь удалять существующие файлы. Рассмотрим, как это делается.
Удаление файлов (Deleting Files)¶
Как и в случае с каталогами, иногда возникает необходимость удалить существующий файл из файловой системы Linux. Удаление файлов выполняется с помощью команды rm. Это та же команда, которую мы использовали ранее для удаления каталогов. Утилита rm является мощным инструментом удаления, позволяющим удалять как файлы, так и заполненные каталоги. Чтобы удалить файл, достаточно ввести rm имя_файла. В следующем примере файл myfile.txt удаляется с помощью команды rm:
При использовании утилиты rm необходимо проявлять особую осторожность! Как видно из приведённого примера, она не запрашивает подтверждение операции удаления. Предполагается, что вы действительно намерены удалить файл или каталог, — и выполняет это немедленно. Кроме того, удалённый файл не перемещается в корзину. Если вы удалите файл или каталог с помощью rm — он исчезнет навсегда! Если нужно, чтобы rm запрашивал подтверждение перед удалением файла или каталога, следует использовать параметр -i.
Рассмотрим далее, как копировать и перемещать файлы из приглашения командной строки.
Копирование и перемещение файлов (Copying and Moving Files)¶
Помимо создания и удаления файлов в файловой системе Linux, можно также копировать или перемещать их. Для этого используются те же утилиты, что и при управлении каталогами:
-
cp— эта утилита используется для копирования файлов из одного места файловой системы в другое. Например, чтобы скопировать файл/tmp/schedule.txtв домашний каталог, нужно ввестиcp /tmp/schedule.txt ~. Следует помнить, чтоcpсоздаёт копию файла, оставляя исходный файл нетронутым. Для рекурсивного копирования файлов можно использовать параметр-R. -
mv— командаmvкопирует файл в новое место файловой системы, а затем удаляет оригинал. Например, чтобы переместить файлmylog.txtиз/tmpв/var/log, нужно ввестиmv /tmp/mylog.txt /var/log.
Как и в случае с каталогами, команду mv можно также использовать для переименования файлов. Достаточно ввести mv с именем переименовываемого файла и затем новое имя. Например, чтобы переименовать schedule.txt в schedule.old, нужно ввести mv schedule.txt schedule.old.
Определение типа файла (Determining the File Type)¶
Для определения типа файла можно использовать команду file из приглашения командной строки. Важно понимать, что в Linux расширения файлов (например, .txt) не обязательны. Поэтому по имени файла не всегда можно сразу определить, что это за файл.
Команду file можно использовать в приглашении командной строки для получения информации о файле. Вывод команды не только сообщит общий тип файла (например, каталог, именованный канал, ссылка и так далее), но и предоставит подробные сведения о файле. Для этого команда сравнивает указанный файл с сигнатурами файлов, содержащимися в /usr/share/misc/magic, /usr/share/misc/magic.mgc и /etc/magic.
В следующем примере команда file определила, что файл words в домашнем каталоге является текстовым файлом ASCII, а файл resources — документом OpenOffice.org:
rtracy@openSUSE:~> ls
bin Downloads MyFiles public_html Templates Videos
Desktop hs_err_pid7458.log Pictures resources test2.txt words
Documents Music Public temp test.txt yourfile.txt
rtracy@fs2:~> file words
words: ASCII text
rtracy@fs2:~> file resources
resources: OpenDocument Text
До сих пор мы работали главным образом с файлами, каталогами и псевдонимами в файловой системе Linux. Однако существует и четвёртый тип файлов Linux, который широко используется и с которым необходимо быть знакомым. Эти файлы называются ссылками. Рассмотрим, как они работают, далее.