struct stat { dev_t st_dev; /* устройство*/ ino_t st_ino; /* node*/ mode_t st_mode; /* mode*/ nlink_t st_nlink; /* жесткая ссылка*/ uid_t st_uid; /* идентификатор пользователя */ gid_t st_gid; Идентификатор группы */ dev_t st_rdev /* Тип устройства */ off_t st_off; /* Количество байтов в файле*/ unsigned long st_blksize; /* Размер блока*/ unsigned long st_blocks; /* Количество блоков*/ time_t st_atime; /* Время последнего доступа*/ time_t st_mtime; / time_t st_ctime; /* Время последнего изменения (относительно атрибутов) */};Давайте узнаем об этих атрибутах один за другим. Если вам нужно просмотреть атрибуты определенного файла, используйте .
статистикаПросто введите команду, и она отобразит информацию в соответствии с приведенной выше структурой. кроме того,
лсКоманда также может отображать соответствующие атрибуты файла после определенных параметров, таких как
-лпараметр.
Типы файлов соответствуют указанным выше
st_modeСуществует много типов файлов, таких как обычные файлы, символические ссылки (жесткие ссылки, программные ссылки), файлы каналов, файлы устройств (символические устройства, блочные устройства), файлы сокетов и т. д. Различные типы файлов соответствуют различным функциям и ролям.
$ ls -ltotal 12drwxr-xr-x 2 root root 4096 07.12.2007 20:08 Directory_fileprw-r--r-- 1 root root 0 07.12.2007 20:18 fifo_pipebrw-r--r-- 1 корень корень 3, 1 07.12.2007 21:44 hda1_block_dev_filecrw-r--r-- 1 корень корень 1, 3 07-12-2007 21:43 null_char_dev_file-rw-r--r-- 2 корень корень 506 07-12-2007 21:55 Regular_file-rw -r--r-- 2 корень корень 506 2007-12-07 21:55 Regular_file_hard_linklrwxrwxrwx 1 root root 12 2007-12-07 20:15 Regular_file_soft_link -> Regular_file$ stat Directory_file/ Файл: `directory_file/' Размер: 4096 Блоков: 8 Блок ввода-вывода: 4096 DirectoryDevice: 301h/769d Inode: 521521 Ссылки: 2Доступ: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Доступ: 2007-12-07 20:08:18.000000000 +0800Modify: 2007- 12-07 20:08:18.000000000 +0800Изменение: 2007-12-07 20:08:18.000000000 +0800$ stat null_char_dev_file Файл: `null_char_dev_file' Размер: 0 Блоков: 0 Блок ввода-вывода: специальный файл из 4096 символовУстройство: 301h/769d Inode: 521240 Ссылки: 1 Тип устройства: 1,3Доступ: (0644/crw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Доступ: 07.12.2007 21 :43:38.000000000 +0800Изменить: 2007-12-07 21:43:38.000000000 +0800Изменить: 2007-12-07 21:43:38.000000000 +0800
Описание: Пройдено
лсВы можете видеть, что первые символы каждой строки результатов команды отличаются друг от друга, что как раз и отражает типы разных файлов.
дПредставляет каталог,
-Представляет собой обычный файл (или жесткую ссылку),
лПредставляет собой символическую ссылку,
пПредставляет файл конвейера,
би
сПредставляет блочные и символьные устройства соответственно (кроме того
свыражать
розеткадокумент). существовать
статистикаВ результате выполнения команды вы можете найти описание в конце второй строки. Как видно из приведенной выше операции,
файл_каталогаэто каталог,
статистикаИспользуется в результатах команд
каталогпредставляет собой и
null_char_dev_fileОн использует
Специальный файл персонажапроиллюстрировать.
Обычно используются только каталоги, обычные файлы и символические ссылки, а файлы других типов встречаются редко. Однако эти файлы по-прежнему имеют свое применение, если вы занимаетесь встраиваемой разработкой или взаимодействием процессов и т. д., файлы устройств, именованный канал. (ФИФО). Ниже приведена простая операция, отражающая разницу между ними (конкретные принципы будут представлены в следующем разделе «Файловая система парадигмы программирования оболочки». Если вам интересно, вы также можете заранее выйти в Интернет, чтобы узнать роль файлов устройств. , различия блочных и символьных устройств, а также способы написания соответствующих драйверов устройств в драйвере и т. д.).
Для обычных файлов: это набор символов, поэтому его можно читать, записывать и т. д.
$ echo hello, world > Regular_file$ cat Regular_filehello, World
В каталоге можно создавать новые файлы, поэтому каталог также называется: папка. Структура файла каталога будет проанализирована позже. В нем фактически хранятся имена каждого файла.
$ cd каталог_файл$ коснитесь файла1 файла2 файла3
Для именованных каналов операция более интересна: если вы хотите его прочитать, он будет заблокирован, если в него нет контента; если вы хотите записать в него, он будет заблокирован, пока кто-нибудь не придет его прочитать; Он обычно используется в процессе коммуникации. Два терминала могут быть открыты
терминал1и
терминал2, попробуйте:
терминал1$ cat fifo_pipe #Сначала он блокируется и не печатает тестовую строку до тех пор, пока не произойдет следующее действие записи терминал2$ echo test > fifo_pipe
Что касается блочных устройств, символьные устройства, файлы устройств соответствуют
/dev/hda1и
/dev/ноль, если вы использовали флешку или написали простой скрипт, вам следовало использовать этот метод раньше: :-)
$ mount hda1_block_dev_file /mnt #Смонтируем первый раздел жесткого диска в /mnt (принцип монтирования будет рассмотрен в следующем разделе) $ echo немногихfewfef > /dev/null #/dev/null похож на черную дыру, что-то вроде отсутствует Оказавшись внутри, все исчезает
Последние два файла
обычный_файлЖесткие ссылки и мягкие ссылки файлов, если вы их читаете и записываете, их содержимое одинаково, но если вы их удаляете, они не имеют никакого отношения друг к другу. В чем разница между жесткими ссылками и мягкими ссылками? Можно сказать, что первый является оригинальным файлом, а второй просто имеет такой
индексный дескриптор, но фактического места для хранения нет, рекомендуется использовать
статистикакоманду, чтобы увидеть различия между ними, включая их
Блоки,
индексный дескрипторЭквивалентно, вы также можете рассмотреть возможность использования
разницаСравните их размеры.
$ ls Regular_file*ls Regular_file* -l-rw-r--r-- 2 root root 204800 07.12.2007 22:30 Regular_file-rw-r--r-- 2 root root 204800 07.12.2007 22 :30 Regular_file_hard_linklrwxrwxrwx 1 корень корень 12 2007-12-07 20:15 Regular_file_soft_link -> Regular_file$ rm Regular_file # Удалить исходный файл $ cat Regular_file_hard_link # Жесткая ссылка все еще существует, и в ней все еще есть содержимое fefe$ cat Regular_file_soft_linkcat: Regular_file_soft_link: Нет такого файла или каталога
Хотя сам файл мягких ссылок все еще существует, он не может ничего прочитать, поскольку не хранит сам контент. В этом разница между мягкими ссылками и жесткими ссылками.
Следует отметить, что жесткие ссылки не могут пересекать файловые системы, а мягкие ссылки — могут. Кроме того, не допускается создание жестких ссылок на каталоги.
Типы файлов делятся на вышеуказанные типы с уровня файловой системы Linux, но обычные файлы все же можно разделить (в соответствии со «структурой данных» содержимого файла), например, обычные текстовые файлы, исполняемые файлы
ЭЛЬФдокумент,
страннодокумент,
jpgформат изображения,
менятьфайл раздела,
ЭЛЬФЕсли вас интересует принцип работы файла, рекомендуется прочитать ссылки и
ЭЛЬФСоответствующая часть файла имеет решающее значение для инженеров встраиваемых систем Linux.
Хотя различные типы обычных файлов имеют свои собственные инструменты управления, вы все равно можете читать и записывать их напрямую. Я сначала упомяну об этих инструментах, а подробности обсужу позже.
од: «Экспортировать» содержимое файла в восьмеричный или другой формат.
струны: прочитать символы в файле (печатные символы)
GCC,
БДБ,
ридельф,обдждамп
ждать:ЭЛЬФ
Инструменты анализа и обработки файлов (GCC
компилятор,БДБ
отладчик,ридельф
Анализ файлов ELF,инструмент декомпиляции objdump`)
Добавьте еще одну очень важную команду:
файл, эта команда используется для просмотра свойств файлов различных типов. и
статистикаПо сравнению с командой может дополнительно идентифицировать обычные файлы, а именно
статистикакоманда отображается
обычный файл. потому что
обычный файлМогут существовать самые разные структуры и, следовательно, по-разному интерпретироваться и выполняться разные действия при поддержке операционной системы. Хотя в Linux к файлам добавляются определенные суффиксы, чтобы пользователи могли легко определить тип файла, операционная система Linux идентифицирует различные типы файлов на основе заголовка файла, а не суффикса файла, что еще больше затрудняет интерпретацию файла. соответствующие файлы подвержены ошибкам. Ниже приводится краткое введение
файлИспользование команды.
$ file ././: файл каталога $ /etc/profile/etc/profile: английский текстовый $ файл ASCII /lib/libc-2.5.so/lib/libc-2.5.so: общий объект ELF 32-битный LSB, Intel 80386, версия 1 (SYSV), не удаленный файл$ /bin/test/bin/test: 32-битный исполняемый файл ELF LSB, Intel 80386, версия 1 (SYSV), динамически подключаемый (использует общие библиотеки), удаленный$ файл /dev/hda/dev/hda: специальный блок (3/0)$ файл /dev/console/dev/console: специальный символ (5/1) $ cp /etc/profile .$ tar zcf Profile.tar.gz Profile$ file Profile.tar.gzprofile.tar.gz: сжатые данные gzip из Unix, последнее изменение: вторник, 4 января 18:53:53 2000$ mkfifo fifo_test$ файл fifo_testfifo_test: fifo (именованный канал)
Посмотреть больше вариантов использования
файлРуководство по командованию, о
файлПринцип реализации команды см.
магиямануал (см.
/etc/файл/магияФайл, понять, что такое файл
магическое числождать).
Будучи многопользовательской системой, Linux обеспечивает большое удобство использования одной и той же системы несколькими пользователями. Например, для файлов в системе он различает разных пользователей по их владельцам, чтобы распределить их права на работу с разными файлами. Для упрощения управления владелец файла включает пользователя, которому принадлежит файл, и группу пользователей, которой принадлежит файл, поскольку пользователь может принадлежать к нескольким группам. Сначала давайте кратко представим управление пользователями и группами в Linux.
Linux предоставляет набор команд для управления пользователями и группами, например для создания пользователей.
добавить пользователяи
групповое добавление, используется для удаления пользователей
userdelи
группировка,кроме того,
парольКоманда используется для изменения пароля пользователя. Конечно, Linux также предоставляет две соответствующие конфигурации, а именно:
/etc/парольи
/etc/группа, кроме того, некоторые системы еще и помещают пароль отдельно в файл конфигурации
/etc/теньсередина. Пожалуйста, обратитесь к следующей информации для их подробного использования. Здесь не будут представлены только некоторые связи между файлами и пользователями.
$ chown имя пользователя:имя группы имя файла
Если вы хотите рекурсивно изменить владельцев всех файлов в каталоге, вы можете добавить
-Рпараметры.
Из файловой структуры, указанной в начале этого раздела, мы видим, что есть только пользовательские
ИДЕНТИФИКАТОРи группа
ИДЕНТИФИКАТОРинформация, но
лс -лВ результате отображается информация об имени пользователя и имени группы. Как это достигается? Давайте сначала посмотрим
-нРезультат:
$ ls -n Regular_file-rw-r--r-- 1 0 0 115 07.12.2007 23:45 Regular_file$ ls -l Regular_file-rw-r--r-- 1 корень корень 115 07.12.2007 23:45 обычный_файл
Как вы видете,
лс -нПоказаны пользователи
ИДЕНТИФИКАТОРи группа
ИДЕНТИФИКАТОР,и
лс -лИх имена показаны. Помните два файла конфигурации, упомянутые выше.
/etc/парольи
/etc/группаФайл? Они хранят пользователей соответственно
ИДЕНТИФИКАТОРи имя пользователя, группа
ИДЕНТИФИКАТОРсоответствующую связь с названием группы, поэтому легко придумать
лс -лКак команда проходит через файловую структуру при реализации
ИДЕНТИФИКАТОРИнформация находит соответствующую информацию об имени. Если ты хочешь быть правым
лс -лДля лучшего понимания реализации команды можно использовать
следОтследите, чтобы увидеть, читает ли он оба файла конфигурации.
$ strace -f -o strace.log ls -l Regular_file$ cat strace.log | egrep passwd|group|shadow2989 open(/etc/passwd, O_RDONLY) = 32989 open(/etc/group, O_RDONLY) = 3
проиллюстрировать:
следМожет использоваться для отслеживания системных вызовов и сигналов. как
БДБКак и другие мощные инструменты, он основан на системе
ptraceРеализация системного вызова.
На самом деле нехорошо вводить отдельно владельца и права доступа, потому что только их сочетание делает возможной многопользовательскую систему, иначе невозможно изолировать операции разных пользователей над определенным файлом, поэтому файловая операция разрешения представлены ниже.
от
лс -лВ последних 9 символах первого столбца результата команды можно увидеть информацию, подобную этой
rwxr-xr-x, которые соответствуют файловой структуре
st_modeчасть(
st_modeСодержит две части: информацию о типе файла и информацию о разрешениях файла). Этот тип информации можно разделить на три части, а именно:
шх,
прием,
прием, соответственно, соответствующие разрешениям пользователя, группы и других групп на файл, которому принадлежит файл, если таковой имеется.
шхЛюбой из них означает доступный для чтения, записи и выполнения, если
-Указывает, что такого разрешения нет. Соответственно, его можно представить в восьмеричном формате, например
rwxr-xr-xЕго можно выразить как двоичное число 111101101, а соответствующее восьмеричное число — 755. По этой причине существует множество способов изменить права доступа к файлам, и все они могут быть выполнены с помощью
chmodкоманда для изменения.
Например, положите
обычный_файлИзмените права доступа к файлам, чтобы они были доступны для чтения, записи и выполнения всем пользователям, т. е.
rwxrwxrwx, также можно выразить как 111111111, в переводе на восьмеричный формат это 777. Это разрешение можно изменить двумя способами.
$ chmod a+rwx Regular_file
или
$ chmod 777 обычный_файл
проиллюстрировать:
аОтносится к используемому пользователю. Если вы хотите предоставить пользователю только права на чтение, запись и выполнение, вы можете это сделать.
аЗаменить на
ты;и
+Просто добавьте разрешения. Если вы хотите удалить определенное разрешение, используйте .
-,и
шхОн соответствует читаемому, записываемому и исполняемому. Посмотреть больше вариантов использования
chmodКомандная помощь.
Фактически, помимо этих разрешений, есть еще два разрешения, связанных с безопасностью, а именно:
setuid/setgidи управление только для чтения и т. д.
Если файл (программа или команда) установлен
setuid/setgidразрешения, то пользователь сможет
кореньСледовательно, это может создать угрозу безопасности; если установлены разрешения только на чтение файла, у пользователя будут только права на чтение файла, что позволяет избежать таких ситуаций, как
РМ -РФ«Отвратительная» операция приносит определенные блага.
По умолчанию система не позволяет обычным пользователям выполнять
паролькомандуй, проходи
setuid/setgid, обычные пользователи могут быть авторизованы для его выполнения.
$ ls -l /usr/bin/passwd-rwx--x--x 1 root root 36092 19.06.2007 14:59 /usr/bin/passwd$ su #Переключиться на пользователя root и добавить " Sticky bit" $ chmod +s /usr/bin/passwd$ ls -l /usr/bin/passwd-rws--s--x 1 root root 36092 19-06-2007 14:59 /usr/bin/passwd$ выход$ passwd #Обычные пользователи могут изменить свои пароли, выполнив эту команду.
проиллюстрировать:
setuidиsetgidBit позволяет обычным пользователямкореньРоль пользователя выполняется толькокореньПрограмма или команда, которую можно запустить только под учетной записью.
Хотя это в определенной степени обеспечивает удобство управления, например, описанная выше операция позволяет обычным пользователям модифицировать свои учетные записи вместо
кореньУчетная запись для выполнения этой работы для каждого пользователя. о
setuid/setgidДля более подробного объяснения обратитесь к последней рекомендованной информации.
Пример разрешения только для чтения: заблокируйте важные файлы (добавьте неизменяемый бит [immutable])) во избежание катастрофических последствий, вызванных различными неправильными операциями (например,
:``rm -rf)
$ Chattr +i Regular_file$ lsattr Regular_file----i-------- Regular_file$ rm Regular_file #После добавления неизменяемого бита вы не можете выполнять какие-либо «разрушительные» действия над файлом rm: удалить защиту от записи. обычный файл `regular_file'? yrm: невозможно удалить `regular_file': Операция не разрешена$chattr -i Regular_file #Если вы хотите выполнять с ним обычные операции, вы можете удалить этот бит$ rm Regular_file
проиллюстрировать:
чаттрМожет использоваться для установки специальных разрешений для файлов. Подробнее об использовании см.
чаттрпомощь.
Для обычных файлов размер файла равен размеру содержимого файла. В качестве специального файла в каталоге хранится различная информация о файлах, организованная в структуру каталогов. Поэтому размер каталога обычно фиксирован. имеет верхний предел, то есть его размер, разделенный на длину имени файла. «Размер файла» файла устройства соответствует старшему и младшему номерам устройства, а размер известного файла канала всегда равен 0 из-за его особых свойств чтения и записи. Жесткая ссылка (файлы каталогов не могут создавать жесткие ссылки) по сути является полной копией исходного файла, поэтому ее размер равен размеру исходного файла. Мягкая ссылка — это просто
индексный дескриптор, хранит указатель на исходный файл, поэтому его размер равен только количеству байтов исходного имени файла. Далее увеличиваем память посредством демонстрации.
Примеры размеров исходных файлов и связанных файлов:
$ echo -n abcde > Regular_file #Записать 5 байт в регулярный_файл $ ls -l Regular_file*-rw-r--r-- 2 root root 5 2007-12-08 15:28 Regular_file-rw-r--r -- 2 корень корень 5 08.12.2007 15:28 Regular_file_hard_filerwxrwxrwx 1 корень root 12 07.12.2007 20:15 Regular_file_soft_link -> Regular_filerwxrwxrwx 1 корень root 22 08.12.2007 15:21 Regular_file_soft_link_link -> Regular_file_soft_link$ i=regular_file$ j=regular_file_soft_link$ echo ${#i} ${# j} #Мягкие ссылки хранят ровно то количество байтов имени исходного файла, на которое они указывают 12 22Размер файла, соответствующий номеру устройства: основной и младший номер устройства.
$ ls -l hda1_block_dev_filebrw-r--r-- 1 корневой корень 3, 1 2007-12-07 21:44 hda1_block_dev_file$ ls -l null_char_dev_filecrw-r--r-- 1 корневой корень 1, 3 2007-12-07 21:43 null_char_dev_file
Дополнение: основное
(основное), раз(Младший) номер устройства имеет различные функции. Когда файл устройства открыт, ядро определяет основной номер устройства (
главное число), чтобы найти драйвер, зарегистрированный под основным номером устройства в ядре (вы можете
кот /proc/устройстваПроверьте соответствие зарегистрированного номера драйвера основному номеру устройства), а также младшему номеру устройства (
младшее число) передается самому драйверу через ядро (см. главу 10 «Основы Linux»). Таким образом, для ядра можно найти соответствующий драйвер для идентификации устройства по основному номеру устройства, а для драйвера — для более сложного доступа к устройству, например, для доступа к различным частям устройства (например, аппаратное обеспечение разделено на разные части через разделы) часть, появляется
hda1,
hda2,
hda3и т. д.), например, генерация случайных чисел с различными требованиями (например,
/dev/случайныйи
/dev/urandomждать).
Размер файла каталога, почему он такой? Посмотрите на размер структуры каталогов ниже. Блок файла каталога хранит записи для всех имен файлов в каталоге.
$ ls -ld файл_каталога/drwxr-xr-x 2 root root 4096 07.12.2007 23:14 файл_каталога/
Структура каталога следующая:
struct dirent { long d_ino; off_t d_off; unsigned short d_reclen; char d_name[NAME_MAX+1]; /* имя файла*/}Атрибут времени файла может записывать информацию об операциях пользователя с файлом и предоставлять администратору ссылку на управление системой, определение информации о версии файла и т. д. Поэтому при чтении документов рекомендуется использовать
котПодождите, пока появятся инструменты чтения, не используйте инструменты редактирования.
вимПрочтите, потому что даже если не было выполнено никаких операций по изменению, после выполнения команды сохранения информация о временной метке файла будет изменена.
Имя файла хранится не в файловой структуре, а в структуре каталогов, в которой он расположен. Поэтому имена файлов должны быть уникальными в пределах одного уровня каталога.
Для файлов общие операции включают создание, удаление, изменение, чтение, запись и т. д. «Закулисные действия», соответствующие различным операциям, будут подробно проанализированы в следующей главе «Операции с файловой системой парадигмы программирования оболочки».
розеткаФайл — это особый тип файла, который можно создать с помощью языка C. Он не будет здесь представлен (неизвестно, можно ли его создать непосредственно с помощью команд). Другие файлы будут создаваться с помощью команд.
$ touch Regular_file #Создать обычный файл $ mkdir Directory_file #Создать файл каталога, который может содержать больше файлов $ ln Regular_file Regular_file_hard_link #Жесткая ссылка, полная копия исходного файла $ ln -s Regular_file Regular_file_soft_link #Аналогично указателю файла, указывая на исходный файл $ mkfifo fifo_pipe # или созданный с помощью mknod fifo_pipe p, FIFO соответствует характеристикам «первым пришел — первым вышел» $ mknod hda1_block_dev_file b 3 1 #Блокировать устройство $ mknod null_char_dev_file c 1 3 #Символьное устройство
Создание файла фактически добавляет узел в файловую систему (
inode), информация об узлах будет сохранена в таблице узлов файловой системы. Говоря более наглядно, это означает, что на дереве вырастает новый лист (файл) или ветка (файл-каталог, тот, на котором растут листья). Это могут быть.дерево
команда илиКоманда ls` представлена визуально. С точки зрения повседневного использования файловую систему можно рассматривать как перевернутое дерево, поскольку они очень похожи и их легко запомнить.
$tree текущий каталог
или
$ ls текущий каталог
Самое прямое впечатление от удаления файла заключается в том, что файл больше не существует. Этого также можно добиться следующим образом.
лсили
деревоКоманда представлена как срезанная ветка дерева или сорванный лист. На самом деле, после удаления эти файлы не исчезают сразу, а лишь помечаются для удаления. Поэтому, если нет соответствующих операций записи на диск для "закрытия" соответствующего дискового пространства после удаления, их в принципе можно восстановить (Хотя. , такая работа часто бывает затруднительной, поэтому дважды подумайте, прежде чем удалять некоторые важные данные, например, выполнять задание резервного копирования. Соответствующий метод см. в следующей информации.
Конкретные команды для удаления файлов:
РМ, если вы хотите удалить пустые каталоги, вы можете использовать
rmdirЗаказ. Например:
$ rm обычный_файл$ rmdir файл_каталога$ rm -r файл_каталог_не_пустой
РМЕсть два очень важных параметра, один из них
-ф, эта команда очень «варварская» и, вероятно, причиняет боль многим пользователям Linux.
-я, эта команда очень «мягкая» и, вероятно, вызывает раздражение у многих пользователей. Какой из них вы используете, зависит от вашего «настроения». Если вы выполнили адекватную резервную работу или предприняли какие-то эффективные действия, чтобы избежать катастрофических последствий, вы можете чувствовать себя более комфортно при выполнении этих задач.
Копирование файла обычно означает «временную» копию содержимого файла. Из введения в начале этого раздела мы должны понять, что жесткие и программные ссылки файлов также в некотором смысле являются «копированием файлов». Первые копируют содержимое файла синхронно, а вторые «копируют» синхронно. случай чтения и записи «Содержимое файла. Например:
использовать
КПкоманда для обычного копирования файлов (для копирования каталогов требуется
-рпараметры)
$ cp регулярный_файл обычный_файл_копия$ cp -r файл_каталога_файл_каталога_копия_файла
Создать жесткую ссылку (
связьи
копироватьРазница в том, что последний обновляется синхронно, а первый нет. После копирования оба уже не актуальны)
$ ln Regular_file Regular_file_hard_link
Создать мягкую ссылку
$ ln -s обычный_файл regluar_file_soft_link
Изменение имени файла фактически изменяет только идентификатор имени файла. может пройти
МВкоманда для изменения имени файла (т. е. переименования).
$ mv Regular_file регулярное_имя_файла_новое_имя
Редактирование файла фактически представляет собой манипулирование содержимым файла, что соответствует редактированию обычных текстовых файлов. В основном это включает в себя чтение, запись, добавление, удаление и т. д. содержимого файла. Эти задачи обычно выполняются с помощью специализированных редакторов, например редакторов командной строки.
вим,
эмакси графический интерфейс
Гедит, Кедитждать. Если это какие-то конкретные файлы, будут специальные инструменты редактирования и обработки, такие как программное обеспечение для обработки изображений.
канитель, программное обеспечение для редактирования документов
OpenOfficeждать. Эти инструменты обычно имеют специальные учебные пособия.
Ниже приводится краткое введение в эти распространенные операции редактирования файлов посредством перенаправления в Linux.
Создай файл и напиши
abcde
$ echo abcde > новый_регулярный_файл
Добавьте еще одну строку в приведенный выше файл
abcde
$ echo abcde >> новый_регулярный_файл
Читать файл построчно
$ при чтении LINE; do echo $LINE Done < test.sh;
Совет: Если вы хотите выполнить строковую переменную, содержащую перенаправление, в качестве команды, используйте
оцениватькоманда, иначе перенаправление невозможно интерпретировать. Например,
$ redirect=echo abcde >test_redirect_file$ $redirect #Here > будет напечатан как символ > вместо того, чтобы интерпретироваться как перенаправление abcde >test_redirect_file$ eval $redirect #Это будет интерпретироваться > как перенаправление$ cat test_redirect_fileabcde
Сжатие и распаковка файлов призваны в определенном смысле облегчить передачу содержимого файла, но могут также иметь некоторые специфические применения, например, файлы изображений ядра и файловой системы и т. д. (Для получения более подробной информации обратитесь к последующим материалам).
Вот лишь несколько распространенных методов сжатия и распаковки:
смола
$ tar -cf file.tar file #Сжать $ tar -xf file.tar #Распаковать
гз
$ gzip -9 файл $ Gunzip файл
tar.gz
$ tar -zcf file.tar.gz файл$ tar -zxf file.tar.gz
бз2
$ файл bzip2 $ файл Bunzip2
tar.bz2
$ tar -jcf file.tar.bz2 файл$ tar -jxf file.tar.bz2
Из приведенной выше демонстрации должно быть очень ясно
смола,
бзип2,банзип2,
gzip,застегнуть молнию
Это роль командования? Если еще не ясно, сделайте больше и сравните некоторые из приведенных выше команд и проверьте их руководства:чувак, дерьмо...
Поиск файлов означает поиск местоположения файлов с определенными атрибутами в файловой системе в определенной иерархии каталогов. Если это местоположение распространяется на всю сеть, его можно выразить как
URL-адресАдрес для локального адреса может быть выражен как
файл://+локальный путь. Локальный путь в системе Linux начинается с
/Для начала, например, домашний каталог каждого пользователя можно представить как:
файл:///домашняя/. Ниже представлены только некоторые методы локального поиска файлов.
находитьКоманда обеспечивает метод поиска «точно в срок». На основании запроса пользователя она просматривает все файлы в указанной иерархии каталогов, пока не будет найден требуемый файл. и
обновленоb+найтиОбеспечивает «быструю» стратегию поиска,
обновленоbОбновите и создайте локальную базу данных файлов, одновременно
найтиВыполните поиск в этой базе данных по имени файла, чтобы быстро найти соответствующий файл. Первый поддерживает поиск по различным атрибутам файлов и предоставляет интерфейс (
-исполнительныйопция) используется для обработки искомых файлов. Таким образом, это обеспечивает большое удобство для любителей сценариев «одной команды», но для поиска по именам файлов
обновленоb+найтиЭтот метод значительно повысит эффективность поиска. Ниже приводится краткое введение в эти два метода:
находитьДемонстрация использования основных команд
$ find ./ -name *.c -o -name *.h #Найти все файлы языка C, -o или $ find ./ ( -name *.c -o -name *.h ) - exec mv '{}' ./c_files/ ;# Переместить найденные файлы в c_files. Такое использование очень интересно.Вышеупомянутое использование может быть использовано
xargsзамена команды
$ find ./ -name *.c -o -name *.h команда, например, мне нужно исправить
Измените все суффиксы имен файлов на прописные.
$ find ./ -name *.c -o -name *.h | xargs -i ./toupper.sh '{}' ./c_files/toupper.shЭто файл обработки, который нам нужно реализовать для преобразования нижнего регистра в верхний. Конкретная реализация выглядит следующим образом:
$ cat toupper.sh#!/bin/bash# {} будет расширен до текущей строки и станет первым аргументом этого скриптаFROM=$1BASENAME=${FROM##*/}BASE=${BASENAME%.* }SUFFIX=${BASENAME##*.}TOSUFFIX=$(echo $SUFFIX | tr '[az]' '[AZ]')TO=$2/$BASE.$TOSUFFIXCOM=mv $FROM $TOecho $COMeval $COMобновленоb+найтиДемонстрация базового использования
$ updateb #Обновить библиотеку $local find*.gz #Найти все сжатые gz пакеты, содержащие строку поиска
На самом деле, помимо двух вышеперечисленных команд, в Linux существуют еще инструменты поиска команд:
которыйи
где, первый используется для возврата полного пути к определенной команде, а второй — для возврата определенной команды, исходного файла,
Путь к файлу man. Например, найдитеАбсолютный путь для команды find:
$ that find/usr/bin/find$ где находится findfind: /usr/bin/find /usr/X11R6/bin/find /usr/bin/X11/find /usr/X11/bin/find /usr/man/man1/ find.1.gz /usr/share/man/man1/find.1.gz /usr/X11/man/man1/find.1.gz
Следует отметить, что если вы хотите искать файл по его содержимому, то
находитьи
обновленоb+найтиа также
который,
гдеМы ничего не можем сделать, альтернатива
греп,
СЭДДождитесь команды, первая добавлена
-рВ дальнейшем параметр можно использовать для поиска указанного содержимого файла в файлах в указанном каталоге, а затем использовать
-яПосле передачи параметров содержимое файла можно заменить. Их основное использование было подробно описано в предыдущих главах и здесь повторяться не будет.
Стоит подчеркнуть, что эти команды очень важны для операций с файлами. Они в определенной степени абстрагируют структуру файловой системы, упрощая работу всей файловой системы до работы с одним файлом. Если отдельный файл учитывает только текстовую часть, он в конечном итоге преобразуется в предыдущую строковую операцию. то, что обсуждалось в предыдущем разделе. Чтобы иметь более четкое представление об организационной структуре файлов и связях между файлами, файловая система будет подробно рассмотрена в следующем разделе.
Просмотр виртуальной файловой системы Linux из файлового ввода-вывода
Анализ файловой системы Linux
«Linux Core», глава 9. Файловая система.
Драйверы устройств Linux, 3-е издание
Советы: несколько советов по перенаправлению ввода-вывода в Linux.
Загрузка, анализ и пример анализа динамической ссылки файла ELF в Linux на платформе Intel:
часть1,
часть 2
Технология отладки шелл-скриптов
Краткое описание формата файла ELF и процесса выполнения загрузки программы
Программирование на языке C под Linux — файловые операции
Часть операций с файлами при программировании на языке C под Linux
Стандарт иерархии файловой системы
Научитесь восстанавливать удаленные файлы Ext3 в системе Linux.
Используйте mc для восстановления удаленных файлов
Принцип случайного удаления и восстановления Linux ext3
Полный список методов сжатия/распаковки Linux.
Все это байт
Учитывая важность файлов и файловых систем, они будут представлены в трех подразделах: файлы, файловые системы, программы и процессы. В разделе «Файл» мы в основном знакомим с основными атрибутами и регулярными операциями с файлами. В разделе «Файловая система» мы подробно обсудим различные части файловой системы Linux (включая структуру файловой системы Linux и ее структуру). общая структура конкретной файловой системы. Анализ, принцип работы базового драйвера), в разделе «Программы и процессы» будет конкретно рассмотрено соответствующее содержимое исполняемых файлов (включая различные типы программ, процессы загрузки и выполнения, взаимодействие между различными процессы [командные каналы и безымянные каналы, сигнальная связь], управление процессами и т. д.)
Необходимо четко обсудить значение размера каталога. Кроме того, лучше всего принять во внимание все обычные файловые операции, включая чтение, запись, выполнение, удаление, изменение, копирование, сжатие/распаковку и т. д.
Я только что вернулся из Шанхая днем. и обнаружил, что Шанхай - красивый город. Когда я вернулся, я начал разобраться в этом блоге, который я пропустил в течение двух недель из -за соревнований.
15 декабря добавьте часть поиска файлов