Файлы в Linux

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

Типы файлов в 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 May 18 12:35 /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 May 18 12:35 /dev/sda brw-rw----. 1 root disk 8, 1 May 18 12:35 /dev/sda1 brw-rw----. 1 root disk 8, 2 May 18 12:35 /dev/sda2

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

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

ls -l /dev/sda?

brw-rw----. 1 root disk 8, 1 May 18 12:35 /dev/sda1 brw-rw----. 1 root disk 8, 2 May 18 12:35 /dev/sda2

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

ls -l /dev/sda[12]

brw-rw----. 1 root disk 8, 1 May 18 12:35 /dev/sda1 brw-rw----. 1 root disk 8, 2 May 18 12:35 /dev/sda2

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

ls -l /etc/system-release

lrwxrwxrwx. 1 root root May 18 12:35 /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 May 18 12:35 /etc/redhat-release -> centos-release lrwxrwxrwx. 1 root root May 18 12:35 /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 one two three

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

Этим способом можно создать много файлов одной короткой командой.

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

-rw-rw-r--. 1 andrei andrei 0 May 18 12:35 file1 -rw-rw-r--. 1 andrei andrei 0 May 18 12:35 file2 -rw-rw-r--. 1 andrei andrei 0 May 18 12:35 file3 -rw-rw-r--. 1 andrei andrei 0 May 18 12:35 file4 -rw-rw-r--. 1 andrei andrei 0 May 18 12:35 file5

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

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

total 0 -rw-rw-r--. 1 andrei andrei 0 May 18 12:35 file1 -rw-rw-r--. 1 andrei andrei 0 May 18 12:35 file2 -rw-rw-r--. 1 andrei andrei 0 May 18 12:35 file3 -rw-rw-r--. 1 andrei andrei 0 May 18 12:35 file4 -rw-rw-r--. 1 andrei andrei 0 May 18 12:35 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: Book24

two

Best hotels: Booking.com

three

Official Samsung Store: Samsung

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

cat one two three

Cool bookstore: Book24
Best hotels: Booking.com
Official Samsung Store: Samsung

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

cat one two three > big
vi big

Cool bookstore: Book24 Best hotels: Booking.com Official Samsung Store: Samsung

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

cat big one

Cool bookstore: Book24
Best hotels: Booking.com
Official Samsung Store: Samsung
Cool bookstore: Book24

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

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

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

В статье /dev/urandom можно узнать о том как создать файл со случайным именем

Обрезать mp3

ffmpeg -i original.mp3 -vn -acodec copy -ss 00:00:00 -to 00:30:00 part_01.mp3

Похожие статьи
Файлы
Linux
Bash
Директории
Ссылки
Изучить свободное место на диске
Объединить файлы
Объединить .pdf файлы
diff: сравнение файлов
find: поиск файлов
wget: скачивание файлов
rename: переименовать файлы
SCP: обмен файлами;
Архивация/Распаковка
tree: просмотр директорий

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

IT

Образование

Актуально сейчас

Разное

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: