Unix / Linux - Управление файлами
В этой главе мы подробно обсудим управление файлами в Unix. Все данные в Unix организованы в файлы. Все файлы организованы в каталоги. Эти каталоги организованы в древовидную структуру, называемую файловой системой.
Когда вы работаете с Unix, вы тем или иным образом проводите большую часть своего времени, работая с файлами. Это руководство поможет вам понять, как создавать и удалять файлы, копировать и переименовывать их, создавать ссылки на них и т. Д.
В Unix есть три основных типа файлов:
Ordinary Files- Обычный файл - это файл в системе, содержащий данные, текст или инструкции программы. В этом руководстве вы узнаете, как работать с обычными файлами.
Directories- В каталогах хранятся как специальные, так и обычные файлы. Для пользователей, знакомых с Windows или Mac OS, каталоги Unix эквивалентны папкам.
Special Files- Некоторые специальные файлы обеспечивают доступ к оборудованию, например жестким дискам, приводам компакт-дисков, модемам и адаптерам Ethernet. Другие специальные файлы похожи на псевдонимы или ярлыки и позволяют вам получить доступ к одному файлу, используя разные имена.
Листинг файлов
Чтобы вывести список файлов и каталогов, хранящихся в текущем каталоге, используйте следующую команду -
$ls
Вот пример вывода вышеуказанной команды -
$ls
bin hosts lib res.03
ch07 hw1 pub test_results
ch07.bak hw2 res.01 users
docs hw3 res.02 work
Команда ls поддерживает -l вариант, который поможет вам получить больше информации о перечисленных файлах -
$ls -l
total 1962188
drwxrwxr-x 2 amrood amrood 4096 Dec 25 09:59 uml
-rw-rw-r-- 1 amrood amrood 5341 Dec 25 08:38 uml.jpg
drwxr-xr-x 2 amrood amrood 4096 Feb 15 2006 univ
drwxr-xr-x 2 root root 4096 Dec 9 2007 urlspedia
-rw-r--r-- 1 root root 276480 Dec 9 2007 urlspedia.tar
drwxr-xr-x 8 root root 4096 Nov 25 2007 usr
drwxr-xr-x 2 200 300 4096 Nov 25 2007 webthumb-1.01
-rwxr-xr-x 1 root root 3192 Nov 25 2007 webthumb.php
-rw-rw-r-- 1 amrood amrood 20480 Nov 25 2007 webthumb.tar
-rw-rw-r-- 1 amrood amrood 5654 Aug 9 2007 yourfile.mid
-rw-rw-r-- 1 amrood amrood 166255 Aug 9 2007 yourfile.swf
drwxr-xr-x 11 amrood amrood 4096 May 29 2007 zlib-1.2.3
$
Вот информация обо всех перечисленных столбцах -
First Column- Представляет тип файла и разрешение, данное для файла. Ниже приводится описание всех типов файлов.
Second Column - Представляет количество блоков памяти, занятых файлом или каталогом.
Third Column- представляет владельца файла. Это пользователь Unix, создавший этот файл.
Fourth Column- представляет группу владельца. У каждого пользователя Unix будет своя группа.
Fifth Column - Представляет размер файла в байтах.
Sixth Column - Представляет дату и время, когда этот файл был создан или изменен в последний раз.
Seventh Column - Представляет имя файла или каталога.
в ls -l В приведенном примере каждая строка файла начинается с d, -, или же l. Эти символы указывают на тип файла в списке.
Sr. No. | Префикс и описание |
---|---|
1 | - Обычный файл, например текстовый файл ASCII, двоичный исполняемый файл или жесткая ссылка. |
2 | b Заблокировать специальный файл. Блокировать файл устройства ввода / вывода, например, физический жесткий диск. |
3 | c Специальный файл символов. Необработанный файл устройства ввода / вывода, например, физический жесткий диск. |
4 | d Файл каталога, содержащий список других файлов и каталогов. |
5 | l Файл символьной ссылки. Ссылки на любой обычный файл. |
6 | p Именованная труба. Механизм межпроцессного взаимодействия. |
7 | s Сокет, используемый для межпроцессного взаимодействия. |
Метасимволы
В Unix метасимволы имеют особое значение. Например,* и ?являются метасимволами. Мы используем* для соответствия 0 или более символов знак вопроса (?) соответствует одному символу.
Например -
$ls ch*.doc
Отображает все файлы, имена которых начинаются с ch и закончить .doc -
ch01-1.doc ch010.doc ch02.doc ch03-2.doc
ch04-1.doc ch040.doc ch05.doc ch06-2.doc
ch01-2.doc ch02-1.doc c
Вот, *работает как метасимвол, соответствующий любому символу. Если вы хотите отобразить все файлы, заканчивающиеся только на.doc, то вы можете использовать следующую команду -
$ls *.doc
Скрытые файлы
Невидимый файл - это файл, первым символом которого является точка или символ точки (.). Программы Unix (включая оболочку) используют большинство этих файлов для хранения информации о конфигурации.
Некоторые распространенные примеры скрытых файлов включают файлы -
.profile - Скрипт инициализации оболочки Bourne (sh)
.kshrc - Скрипт инициализации оболочки Korn (ksh)
.cshrc - Сценарий инициализации оболочки C (csh)
.rhosts - Файл конфигурации удаленной оболочки
Чтобы перечислить невидимые файлы, укажите -a возможность ls -
$ ls -a
. .profile docs lib test_results
.. .rhosts hosts pub users
.emacs bin hw1 res.01 work
.exrc ch07 hw2 res.02
.kshrc ch07.bak hw3 res.03
$
Single dot (.) - Представляет текущий каталог.
Double dot (..) - Это родительский каталог.
Создание файлов
Вы можете использовать viредактор для создания обычных файлов в любой системе Unix. Вам просто нужно дать следующую команду -
$ vi filename
Приведенная выше команда откроет файл с указанным именем файла. Теперь нажмите клавишуiперейти в режим редактирования. Как только вы перейдете в режим редактирования, вы можете начать писать свой контент в файл, как в следующей программе:
This is unix file....I created it for the first time.....
I'm going to save this content in this file.
Когда вы закончите работу с программой, выполните следующие действия:
Нажмите кнопку esc выйти из режима редактирования.
Нажмите две клавиши Shift + ZZ вместе, чтобы полностью выйти из файла.
Теперь у вас будет файл, созданный с помощью filename в текущем каталоге.
$ vi filename
$
Редактирование файлов
Вы можете редактировать существующий файл, используя viредактор. Мы вкратце обсудим, как открыть существующий файл -
$ vi filename
После открытия файла вы можете перейти в режим редактирования, нажав клавишу iа затем вы можете продолжить редактирование файла. Если вы хотите перемещаться туда-сюда внутри файла, то сначала вам нужно выйти из режима редактирования, нажав клавишуEsc. После этого вы можете использовать следующие клавиши для перемещения внутри файла:
l ключ для перехода в правую сторону.
h ключ для перехода в левую сторону.
k ключ для перемещения вверх по файлу.
j клавиша для перемещения вниз по файлу.
Таким образом, используя указанные выше клавиши, вы можете разместить курсор в любом месте, где хотите редактировать. После того, как вы разместились, вы можете использоватьiклавиша перехода в режим редактирования. Когда вы закончите редактирование своего файла, нажмитеEsc и наконец два ключа Shift + ZZ вместе, чтобы полностью выйти из файла.
Отображение содержимого файла
Вы можете использовать catкоманда, чтобы увидеть содержимое файла. Ниже приведен простой пример, чтобы увидеть содержимое созданного выше файла.
$ cat filename
This is unix file....I created it for the first time.....
I'm going to save this content in this file.
$
Вы можете отобразить номера строк, используя -b вариант вместе с cat команда следующим образом -
$ cat -b filename
1 This is unix file....I created it for the first time.....
2 I'm going to save this content in this file.
$
Подсчет слов в файле
Вы можете использовать wcкоманда для подсчета общего количества строк, слов и символов, содержащихся в файле. Ниже приведен простой пример, чтобы увидеть информацию о файле, созданном выше.
$ wc filename
2 19 103 filename
$
Вот детали всех четырех столбцов -
First Column - Представляет общее количество строк в файле.
Second Column - Представляет общее количество слов в файле.
Third Column- Представляет общее количество байтов в файле. Это фактический размер файла.
Fourth Column - представляет имя файла.
Вы можете передать несколько файлов и получить информацию об этих файлах одновременно. Ниже приводится простой синтаксис -
$ wc filename1 filename2 filename3
Копирование файлов
Чтобы сделать копию файла, используйте cpкоманда. Основной синтаксис команды -
$ cp source_file destination_file
Ниже приведен пример создания копии существующего файла. filename.
$ cp filename copyfile
$
Теперь вы найдете еще один файл copyfileв вашем текущем каталоге. Этот файл будет точно таким же, как исходный файлfilename.
Переименование файлов
Чтобы изменить имя файла, используйте mvкоманда. Ниже приведен основной синтаксис -
$ mv old_file new_file
Следующая программа переименует существующий файл filename к newfile.
$ mv filename newfile
$
В mvкоманда полностью переместит существующий файл в новый файл. В этом случае вы найдете толькоnewfile в вашем текущем каталоге.
Удаление файлов
Чтобы удалить существующий файл, используйте rmкоманда. Ниже приведен основной синтаксис -
$ rm filename
Caution- Файл может содержать полезную информацию. Всегда рекомендуется соблюдать осторожность при использовании этогоDeleteкоманда. Лучше использовать-i вариант вместе с rm команда.
Ниже приведен пример, показывающий, как полностью удалить существующий файл. filename.
$ rm filename
$
Вы можете удалить несколько файлов за раз с помощью команды, приведенной ниже -
$ rm filename1 filename2 filename3
$
Стандартные потоки Unix
В нормальных условиях каждая программа Unix имеет три потока (файла), открытых для нее при запуске:
stdin- Это называется стандартным вводом, и связанный дескриптор файла равен 0. Он также представлен как STDIN. Программа Unix будет читать ввод по умолчанию из STDIN.
stdout- Это называется стандартным выводом, а связанный дескриптор файла - 1. Он также представлен как STDOUT. Программа Unix запишет вывод по умолчанию в STDOUT.
stderr- Это называется стандартной ошибкой, и соответствующий дескриптор файла - 2. Он также представлен как STDERR. Программа Unix будет записывать все сообщения об ошибках в STDERR.