Как создать файл определенного размера в linux
Перейти к содержимому

Как создать файл определенного размера в linux

Как создать файл в Linux: 12 способов

Эти способы тестировались на дистрибутиве Ubuntu, но будут работать на любой системе Linux.

Создание пустого файла при помощи touch

Пояснение: Команда touch предназначена для того, чтобы поменять дату изменения файла на текущую. Однако ее также часто используют для создания файлов.

Создание сразу нескольких пустых файлов при помощи touch

Создание пустого файла при помощи echo

Пояснение: Команда echo предназначена для вывода на экран строки, которая в нее передается. Символ > перенаправляет вывод в файл. Соответственно мы перенаправили пустоту в файл.

Трюк для создания пустых файлов

Пояснение: символ > перенаправляет вывод, а мы ничего не выводим, просто перенаправляем пустоту в файл. Это самый короткий способ создать пустой файл.

Или лучше такой пример:

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

Создание файла с содержимым

Пояснение: Выводим строку 123 и перенаправляем этот вывод в файл. Файл будет содержать строку 123

Создание файла путем объединения других файлов с помощью cat

Пояснение: Команда cat выводит на экран содержимое на экран, однако мы перенаправляем этот вывод в файл. Соответственно мы создали файл big_file в котором находится содержимое из трех других файлов.

Создание файла с помощью любой команды и символа >

Мы можем создать файл, с помощью команд, которые выводят что-то на экран, записав этот вывод в файл. Например ps aux выводит информацию о текущих процессах в системе. Мы просто можно записать весь вывод этой команды в файл file.txt и потом его проанализировать.

Записываем в файл справку по команде man :

Записываем в файл календарь на 2021 год

Создание фала при помощи редактора nano

Этот редактор чуть более привычный простому пользователю, чем Vim, однако он должен быть установлен в вашей системе.

Иначе вы получите ошибку о несуществующей команде Command ‘nano’ not found .

Проверить установлен ли nano в вашей системе можно с помощью следующей команды:

Результатом будет информация об установленном редакторе:

Либо сообщение об ошибке: Command ‘nano’ not found

Создание файла при помощи текстового редактора Vim

Если вы никогда не работали с этим редактором, то этот способ вам не подойдет, т.к. без пары часов за документацией Vim не освоить.

На всякий случай скажу вам способ выйти из этого редактора, т.к. даже это совершенно не очевидно: нажмите Esc , затем : затем введите q! затем нажмите Enter — это способ выхода без сохранения. Для сохранения нужно набрать x! вместо q

Создание файла определенного размера c помощью fallocate

Таким образом вы создали файл hello.txt размером 10 мегабайт.

Создание файла определенного размера с помощью dd

Создание файла-сокета c помощью команды mkfifo

После создания вам нужно установить на него права, чтобы нужные программы могли им пользоваться

Создание файла при помощи HEREDOC

Пояснение: мы сначала пишем cat << EOF > file.txt причем вместо EOF может быть любая строка, которой нет в тексте, который мы собираемся написать. Затем когда мы завершили заполнение многострочного файла, просто переходим на следующую строку и вводим EOF. В итоге содержимое нашего файла будет:

Спасибо за внимание! Если вы знаете какой-нибудь интересный и полезный способ создания фалов — напишите его в комментариях.

Linux: создание файла определённого размера

Вот несколько примеров.

С помощью утилиты dd :

$ dd of=file bs=1 count=0 seek=10M
0+0 записей считано
0+0 записей написано
скопировано 0 байт (0 B), 2,204e-05 c, 0,0 kB/c

$ ls -lh | grep file
-rw-rw-r– 1 setevoy setevoy 10M Мар 30 13:10 file

Другой способ – при помощи утилиты truncate , которая и предназначена именно для таких манипуляций с файлами:

$ touch file2
$ truncate -s 10240 file2
$ ls -lh | grep file3
-rw-rw-r– 1 setevoy setevoy 10K Мар 30 13:15 file3

С её же помощью можно и изменить размер уже созданного файла:

$ truncate -s 1024 file3
$ ls -lh | grep file3
-rw-rw-r– 1 setevoy setevoy 1,0K Мар 30 13:17 file3

Ещё один вариант при помощи dd :

$ dd if=/dev/zero of=file4 bs=1M count=10
10+0 записей считано
10+0 записей написано
скопировано 10485760 байт (10 MB), 0,0247056 c, 424 MB/c

$ ls -lh | grep file4
-rw-rw-r– 1 setevoy setevoy 10M Мар 30 13:17 file4

Файлы в Linux

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

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

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. То есть этот файл может принимать и показывать символы

drwxr-xr-x. 118 root root 8192 Jun 13 16:17 /etc

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

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

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

brw-rw—-. 1 root disk 8, 0 Jun 13 16:17 /dev/sda brw-rw—-. 1 root disk 8, 1 Jun 13 16:17 /dev/sda1 brw-rw—-. 1 root disk 8, 2 Jun 13 16:17 /dev/sda2

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

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

brw-rw—-. 1 root disk 8, 1 Jun 13 16:17 /dev/sda1 brw-rw—-. 1 root disk 8, 2 Jun 13 16:17 /dev/sda2

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

brw-rw—-. 1 root disk 8, 1 Jun 13 16:17 /dev/sda1 brw-rw—-. 1 root disk 8, 2 Jun 13 16:17 /dev/sda2

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

ls -l /etc/system-release

lrwxrwxrwx. 1 root root Jun 13 16:17 /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 Jun 13 16:17 /etc/redhat-release -> centos-release lrwxrwxrwx. 1 root root Jun 13 16:17 /etc/system-release -> centos-release

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

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

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

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)

Чтобы скопировать файл в интерактивном режиме воспользуйтесь командой 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 Jun 13 16:17 file1 -rw-rw-r—. 1 andrei andrei 0 Jun 13 16:17 file2 -rw-rw-r—. 1 andrei andrei 0 Jun 13 16:17 file3 -rw-rw-r—. 1 andrei andrei 0 Jun 13 16:17 file4 -rw-rw-r—. 1 andrei andrei 0 Jun 13 16:17 file5

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

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

total 0 -rw-rw-r—. 1 andrei andrei 0 Jun 13 16:17 file1 -rw-rw-r—. 1 andrei andrei 0 Jun 13 16:17 file2 -rw-rw-r—. 1 andrei andrei 0 Jun 13 16:17 file3 -rw-rw-r—. 1 andrei andrei 0 Jun 13 16:17 file4 -rw-rw-r—. 1 andrei andrei 0 Jun 13 16:17 file5

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

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

sudo yum install tree

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *