Файлы в Linux

Содержание
Введение: Типы файлов в Linux
Семь типов файлов
-c character
-d directory
-b block
Узнать версию системы
Узнать расположение файла
Переместить файлы, но не директории
Создать несколько файлов
rm: Удаление файла
Узнать количество строк
cat, echo: Объединение файлов
truncate: Создать файл определённого размера
Узнать кодировку файла
Изменить кодировку файла
diff: Сравнить файлы
find: Поиск файлов

Типы файлов в Linux

В Linux всё является файлами и tty терминалы не исключение.

Выполните

ls -l $(tty)

Или аналогичную команду

ls -l /dev/pts/1

crw--w----. 1 andrei tty 136, 1 Nov 19 12:43 /dev/pts/1

Первый символ - это тип файла.

Доступно семь типов файлов: обычные, директории, символьные, блоки, сокеты, именованые каналы, символьные ссылки

- : regular file
d : directory
c : character device file
b : block device file
s : local socket file
p : named pipe
l : symbolic link

Тип c означает character. То есть этот файл может принимать и показывать символы

Если выполнить

ls -ld /etc

drwxr-xr-x. 118 root root 8192 Nov 19 11:02 /etc

Видно, что тип файла d. То есть directory

Для просмотра дисков/блоков выполните

lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 8G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 7G 0 part ├─centos-root 253:0 0 6.2G 0 lvm / └─centos-swap 253:1 0 820M 0 lvm [SWAP] sr0 11:0 1 57.7M 0 rom /run/media/andrei/VBox_GAs_6.1.10

Если выполнить

ls -l /dev/sda*

brw-rw----. 1 root disk 8, 0 Nov 19 11:02 /dev/sda brw-rw----. 1 root disk 8, 1 Nov 19 11:02 /dev/sda1 brw-rw----. 1 root disk 8, 2 Nov 19 11:02 /dev/sda2

Можно убедитсья, что тип файлов b. То есть block

? означает что должен быть один любой символ.

ls -l /dev/sda?

brw-rw----. 1 root disk 8, 1 Nov 19 11:02 /dev/sda1 brw-rw----. 1 root disk 8, 2 Nov 19 11:02 /dev/sda2

[12] означает что должен быть либо символ 1 либо символ 2

ls -l /dev/sda[12]

brw-rw----. 1 root disk 8, 1 Nov 19 11:02 /dev/sda1 brw-rw----. 1 root disk 8, 2 Nov 19 11:02 /dev/sda2

Когда вы хотите узнать версию системы вы можете выполнить

ls -l /etc/system-release

lrwxrwxrwx. 1 root root 14 Nov 17 13:44 /etc/system-release -> centos-release

Тип файла l означает link то есть это не настоящий файл, а ссылка

Выполните

ls -l /etc/system-release /etc/centos-release /etc/redhat-release

-rw-r--r--. 1 root root 37 Oct 23 17:53 /etc/centos-release lrwxrwxrwx. 1 root root 14 Nov 17 13:44 /etc/redhat-release -> centos-release lrwxrwxrwx. 1 root root 14 Nov 17 13:44 /etc/system-release -> centos-release

/etc/centos-release - это настоящий (regular) файл а остальные - ссылки на него.

Если бы вы пользовались redhat то настоящим был бы redhat-release

Ещё один способ получить информацию о версии - выполнить lsb_release -d где -d означает description

lsb_release -d

Description: CentOS Linux release 7.9.2009 (Core)

Узнать расположение файла

Узнать где находится файл lsb_release можно командой which lsb_release. Чтобы сразу получить дополнительную информацию выполните

ls -lF $(which lsb_release)

-rwxr-xr-x. 1 root root 15929 Mar 27 2015 /usr/bin/lsb_release*

Опция -F означает показать тип файлов. Поэтому нам удалось увидеть * после lsb_release. * означает, что файл исполняемый.

Чтобы узнать откуда взялся файл можно воспользоваться командой rpm с опциями q (query) и f (file)

rpm -qf $(which lsb_release)

redhat-lsb-core-4.1-27.el7.centos.1.x86_64

Чтобы скопировать файл в интерактивном режиме воспользуйтесь командой cp с опцией i (interactive)

interactive означает, что если файл с таким имененм существует, вас спросят прежде чем затирать его

cp -i /etc/hosts .
cp -i /etc/hosts .

cp: overwrite ‘./hosts’?

Чтобы создать директорию сразу же с поддиректорией внутри воспользуйтесь командлой mkdir с опцией p (parent)

mkdir -p sites/heiheiru
ls -l sites

total 0
drwxrwxr-x. 2 andrei andrei 6 Nov 19 13:40 heiheiru

Создать сразу несколько файлов

Чтобы создать одновременно несколько файлов с именами идущими по порядку выполните touch с {}

touch files/file{1..5}
ls -l files

-rw-rw-r--. 1 andrei andrei 0 Nov 19 13:46 file1 -rw-rw-r--. 1 andrei andrei 0 Nov 19 13:46 file2 -rw-rw-r--. 1 andrei andrei 0 Nov 19 13:46 file3 -rw-rw-r--. 1 andrei andrei 0 Nov 19 13:46 file4 -rw-rw-r--. 1 andrei andrei 0 Nov 19 13:46 file5

Чтобы скопировать директорию files в директорию sites со всем содержимым выполните

cp -R files sites
ls -l sites/files/

total 0 -rw-rw-r--. 1 andrei andrei 0 Nov 19 13:49 file1 -rw-rw-r--. 1 andrei andrei 0 Nov 19 13:49 file2 -rw-rw-r--. 1 andrei andrei 0 Nov 19 13:49 file3 -rw-rw-r--. 1 andrei andrei 0 Nov 19 13:49 file4 -rw-rw-r--. 1 andrei andrei 0 Nov 19 13:49 file5

Директория files была скопирована в директорию sites, то есть теперь у sites есть поддиректория files.

Если у вас установлен модуль tree вы можете наглядно изучить вложенность. Если нет - выполните сперва sudo yum install tree

tree sites

sites └── files ├── file1 ├── file2 ├── file3 ├── file4 └── file5 1 directory, 5 files

Создать ссылку можно командой ln, символьную ссылку ln -s

Как очистить файл в linux

Чтобы удалить содержимое файла используйте

: > имя_файла

Как удалить файл в linux

rm имя_файла

Как подсчитать количество строк в файле linux

Чтобы подсчитать сколько всего строк в файле today.log используйте

wc -l today.log

282608 today.log

Объединение файлов

Для объединения файла one с файлом two достаточно выполнить

cat one two

Объединить можно сразу несклько файлов.

Рассмотрим три файла one , two , three следующего содержания

one

Cool bookstore:

two

Best hotels:

three

Official Samsung Store: Samsung

Объединим их и проверим результат - он появится в консоли как и в случае двух файлов

cat one two three

Cool bookstore:
Best hotels:
Official Samsung Store: Samsung

Теперь объедими файлы в один новый файл big

cat one two three > big
vi big

Cool bookstore: Best hotels: Official Samsung Store: Samsung

К новому файлу big мы можем дописать в конец файл one

cat big one

Cool bookstore:
Best hotels:
Official Samsung Store: Samsung
Cool bookstore:

echo

Те же действия можно выполнить с помощью команды echo

Создать файл определённого размера

Создадим файл 10M.txt размером в 10 Mb

truncate -s 10M /usr/share/10M.txt

Узнать кодировку файла

Предположим вы только что создали файл one.txt

touch one.txt

Чтобы узнать его кодировку выполните

file -i one.txt

one.txt: inode/x-empty; charset=binary

Напишите, что-то в файле и снова проверьте кодировку

echo heihei.ru < one.txt
file -i one.txt

one.txt: text/plain; charset=us-ascii

Убедитесь, что команда file -i опеределила разные кодировки binary и us-ascii

У вас может быть не us-ascii а другой вариант

Добавим в файл кириллические символы

echo добро << one.txt
file -i one.txt

one.txt: text/plain; charset=utf-8

Смена кодировки

Предположим у вас есть файл файл.html в неправильной кодировке.

Менять кодировку файлов можно следующим способом:

iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile

Пример:

cat файл.html | iconv -f cp1251 -t utf-8 > новый.html

В одну сторону. Потом открываем, редактируем, закрываем.

cat новый.html | iconv -f utf-8 -t cp1251 > файл.html

Как вариант можно использовать convmv

Если у вас возникли проблемы с кодировкой на сайте советую прочитать статью «Сайт в неверной кодировке»

Разделы про поиск и сравнение файлов теперь в отдельных статьях.

Похожие статьи
Linux
Debian
Ubuntu
CentOS
Rocky
Bash
Настройка сети
Файлы
Объединить .pdf файлы
diff: сравнение файлов
find: поиск файлов
kill: завершить процесс
rename: переименовать файлы
make
signal: системные сигналы
env: переменные окружения
localectl: язык
systemctl: Список активных сервисов
Firewall
SCP: обмен файлами;
SSH: удалённый доступ
cron: задания по расписанию
sudo
Мониторинг ресурсов
C
C++
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: