В Linux файловая система — это способ организации, управления, структурирования и хранения данных, что-то вроде карты, с помощью которой система ориентируется в файлах, сохраненных на физическом носителе. Все файловые системы с открытым исходным кодом относятся к категории файловых систем Linux. Ключевое отличие в том, что Linux абсолютно все компоненты обнаруживает как файл, даже сам по себе жесткий диск, Linux посчитает данными! Поэтому в линуксах, в отличии от Windows, нет никаких «диск E» или «диск С». Но в Linux есть домашний каталог, аналог «моего компьютера» из виндоуз, там хранятся все рабочие файлы. Внутри домашнего каталога или, как еще говорят, корневой директории, пользователи могут создавать файлы с помощью команд терминала или оболочки.

Создание файлов в Linux с помощью команд терминала

Создание файла на машине с Линуксом – это как демонстрация силы, как показать кто тут главный. И для этого есть множество способов, но, прежде чем приступить, давайте коснемся основ файловой системы Linux. Смотрите, внутри корневого каталога лежат папки с файлами: bin, boot, dev, home, lib, opt, usr, srv и т. д.  Не пугайтесь мы не будем досконально изучать ВСЮ файловую систему, только основы, совсем чуть-чуть.

В этом посте мы узнаем о функциональных возможностях файловой системы Linux и о том, как создавать файлы в Linux с помощью команд терминала. Помимо этого, мы также увидим различные способы создания файлов определенного размера в Linux.

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

· Для Ubuntu

sudo apt install tree

· Для Red Hat Type

sudo dnf install tree

· Для openSUSE

sudo zypper install tree

· Для Arch-подобных дистрибутивов

sudo pacman -S tree

Теперь, если вы наберете в терминале команду tree, как показано ниже, система покажет вам диаграмму со всеми вашими файлами, папками и каталогами в корневой директории.

tree /

Если вы не хотите видеть перегруженную информацией диаграмму, вы можете просмотреть только основные каталоги с помощью этой команды

tree -L 1/

1. Команда cat

Команда concatenate или cat используется для создания одного или нескольких файлов. Это позволяет пользователям вместе создавать цепочки или серии файлов. Команда сat может создавать или отображать файлы из локального каталога. Она может просматривать один или несколько файлов. А также может сортировать файлы в зависимости от содержимого нескольких файлов.

Что бы использовать команду cat, или любую другую, для начала стоит открыть терминал. Поищите его с помощью вашего Linux Launcher, или используйте шорткат: Ctrl + Alt + T. Обычно терминал лежит в корневой директории, и файлы, созданные описанным здесь способом, будут сохраняться, соответственно, в корневую директорию. Что бы убедиться в этом, воспользуйтесь командой pwd, она выведет путь к текущей директории.

Предположим, что вы хотите создать файл .doc с именем newfile101, все, что вам нужно сделать, это просто набрать команду, указанную ниже, в вашем терминале. После того, как файл создан, вы сможете проверить, создан он или нет с помощью следующей команды.

cat > newfile101.doc
ls -lh newfile101.doc

Здесь этот знак «>» (больше) известен как знак перенаправления; скоро я расскажу о нем более подробно.

(Зануда моуд от переводчика, который можно не читать, если ты сам не зануда: технически, команда cat ничего не создает, она выводит содержимое файла в поток, или, если вы захотите, она может последовательно вывести в поток содержимое нескольких файлов и слепить их в один. Операнд «>» записывает вывод, т.е. результат, команды в указанный файл, если указанный файл не существует, он его создаст. Таким образом, набранная в терминале команда cat > newfile101.doc действительно создаст файл с именем newfile101.doc, но сама по себе команда cat тут почти не причём)

2. Команда touch

В Linux команда touch используется для создания файлов, где отметка времени является жизненно важной точкой. Если вы дата-инженер и имеете опыт работы с CSV-файлами, я уверен, что вы знаете, насколько важно поддерживать временную метку в файлах. С помощью команды touch вы можете изменять и манипулировать отметкой времени файлов.

Чтобы создать файл с помощью touch, наберите в терминале следующее:

touch newfile102.doc

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

3. Символ «>», известный как математическое больше или редирект (перенаправление)

Если вы системный администратор, вам может потребоваться каждый день создавать тонны файлов для обновления журналов. А что, если вы сможете создавать файлы из терминала, используя только знак «>» ? Обычно в Linux каждый файл связан с другим файлом, и эта связь отображается с помощью знака «>». Но в терминале, если вы поместите символ перенаправления перед именем несуществующего файла вместе с его расширением, он создаст пустой файл в локальном каталоге.

Чтобы создать файл, используя символ перенаправления, просто введите символ «>» в терминале и напишите имя файла. Вот и все! Вы получили свой желанный файл. Как и прежде, проверить наличие файла вы можете с помощью команды ls.

>newfile103.txt ls -lh newfile103.txt

4. Команда echo

В Linux echo используется для помещения любого оператора или аргумента в любой файл. Если ранее был создан пустой текстовый файл, вы можете записать в него строку с помощью команды echo. Предположим, ранее я создал документ с именем newfile101.doc. Теперь я хочу записать в него строку «hello world».

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

echo "hello world" > newfile101.doc
cat newfile101.doc

5. Vim

Если вы программист и привыкли писать код в IDE, я уверен, что вы не раз слышали название Vim. Vim - текстовый редактор, используемый в интерфейсе командной строки, который, в том числе, пригоден для создания файлов. Чтобы создать файл с помощью vim, просто введите следующую строку в терминале.

Допустим, вы захотите создать файл с именем newfile106.txt, тогда все, что вам нужно для этого - ввод этой команды в терминал.

vi newfile106.txt

(Зануда моуд от переводчика: строго говоря команда откроет текстовый редактор vim, а в нем файл с указанным именем, если такого файла нет, она его создаст. И, вместо распространенных в интернете шуток типа «дед: ищет выход из vim», я вам лучше в двух словах расскажу, как файл сохранить и выйти. Воспользуйтесь командой :wq, она сохранит файл и выйдет из редактора. Ну и, если вы хотите подробный, четкий и весёлый гайд по vimу, вы там намекните как-нибудь в комментариях.)

Чтобы убедиться в том, что все сработало как надо - юзайте как и прежде ls lh.

ls -lh newfile106.txt

6. Nano

Nano — это популярный текстовый редактор «Что видишь, то и получаешь» (WYSIWYG - What You See Is What You Get) в Linux. В кодировке UTF-8 Nano — это текстовый редактор обычного типа, также известный как GNU nano. Он весьма эффективен и полезен и может ускорить процесс написания кода. А чтобы создать файл с помощью nano, вам нужно продублировать командную строку, приведенную ниже.

nano newfile107.txt

(Зануда моуд: опять же, этой командой вы откроете этот файл в редакторе, если файл не существовал до сих пор, он будет создан. Что бы сохранить файл воспользуйтесь шорткатом: Ctrl+O, что бы выйти: Ctrl+X)

После создания файла вы можете просмотреть файл, используя команду ls или команду cat.

ls -lh newfile107.txt
cat newfile107.txt

7. Команда printf

Все программисты по всему миру знают функцию printf. Чтобы создать текстовый файл с помощью команды printf, вам нужно использовать следующую запись в терминале.

(Зануда моуд: это команда, используется для форматирования данных, в качестве аргументов принимает методы форматирования и список элементов для форматирования. В конечном счете, команда, приведенная ниже, сработает, но напрашивается сравнение про гвозди и микроскопы.)

printf "Printf command line check attempt 01 " > printf.txt

Для просмотра типа файла и содержимого файла из терминала ls и cat вам в помощь:

ls -l printf.txt
cat printf.txt

8. Команда head

Для вывода начальной части больших файлов, программисты часто используют команду head.

Предположим, что я хочу открыть некий файл логов. Для этого я могу открыть список файлов из терминала. А затем использовать команду head для вывода первых 10 строк этого файла. 10 строк – это дефолтный параметр и его легко поменять с помощью соответствующего аргумента.

cd /var/log
ls
head fontconfig.log

9. Команда tail

Команда tail аналогична команде head. Единственное отличие заключается в том, что команда tail выводит последние 10 строк файла, вместо первых. Эта команда обычно используется для просмотра последнего вывода данных в датасете, например.

Например, если вы захотите вывести в поток последние 10 строк файла fontconfig.log.

cd /var/log
ls
tail fontconfig.log

10. Команда truncate

В Linux команда truncate используется для уменьшения или увеличения размера файла. Давайте сначала создадим текстовый файл с помощью touch, а затем посмотрим, как увеличить размер этого файла с помощью truncate.

В примере ниже я создаю файл newfile112.txt. Затем с помощью команды truncate я задаю ему размер 1024 Кб (1 Мб). Еще ниже, используя ту же команду, я снова меняю размер файла до 1.5 Мб.

touch newfile112.txt
truncate -s 1024K newfile112.txt
ls -lh newfile112.txt
-rw-r--r-- 1 jahid jahid 1.0M Mar 26 21:49 newfile112.txt
truncate -s +500K newfile112.txt
ls -lh newfile112.txt
-rw-r--r-- 1 jahid jahid 1.5M Mar 26 21:50 newfile112.txt

Создание файлов определенного размера в Linux

Иногда админам нужны файлы конкретного размера, чтобы проверить возможности хранения, скорость сети или производительность системы. Такие файлы – что-то вроде заглушки или типографской рыбы, просто тест для проверки работы базы данных. Вот зачем стоит уметь создавать файлы определенного размера. Ниже мы рассмотрим некоторые методы создания таких тестовых файлов.

1. И снова truncate.

Выше мы только что узнали, как увеличить размер файла с помощью команды truncate. Помимо увеличения размеров файлов, вы можете создавать файлы точного размера с помощью этой команды. Здесь я собираюсь показать, как создать файл размером 25M с помощью этой команды. Откройте терминал и введите команду, приведенную ниже.

truncate -s 25M OmgUbuntu.txt

2. Команда fallocate

Fallocate позволяет пользователям создавать файлы маленького или очень маленького размера. Используя команду fallocate, вы можете контролировать размер создаваемых файлов вплоть до байта. Впрочем, создание большого файла точного размера с помощью этой команды тоже возможно, но придется немного поумножать.

Допустим, вы хотите создать файл размером 20 КБ. Для этого вам следует произвести вот такое нехитрое математическое действие 20 * 1024 = 20480 КБ.

fallocate -l 20480 tinyfile.txt

(А режим зануды и мануал команды говорят нам, что за аргументами офсета и длинны файла может следовать мультипликативный суффикс. KiB (=1024), MiB (=1024*1024) и далее по тексту. И еще, к слову, окончание «iB» опционально, просто K будет значить ровно тоже самое, что и KiB, вуаля, и не надо в математику.)

3. Еще раз про head

Из первой части этой статьи мы уже знаем, что команда head может вывести 10 первых строк логфайла или текста. А сейчас я покажу вам, как вы можете использовать команду head для создания файлов заданного размера. Здесь следует отметить, что каждый файл имеет некоторую системную зарезервированную часть. Вот почему, если вы создадите файл размером 100 МБ, он не будет содержать сто мегабайт данных, из-за системного резервирования.

head -c 100MB /dev/zero > newfile.txt
ls -lh newfile.txt

(благодаря нашей постоянной рубрике «зануда моуд», вы уже и сами догадываетесь какая часть приведенной команды отвечает за создание файла, да?)

4. Perl

Perl — высокоуровневый интерпретируемый динамический язык программирования общего назначения. Название языка официально расшифровывается как Practical Extraction and Report Language («практический язык для извлечения данных и составления отчётов») Он сочетает в себе некоторые из лучших функций sed, awk и sh, что делает его привычным и простым в использовании для пользователей Unix, чтобы быстро находить решения назойливых проблем.

Теперь я собираюсь показать, как создать файл определенного размера с помощью команды perl. Я выделяю размер файла до 1К.

perl -e 'print "a" x 1024' > newfile90.txtls -lh newfile90.txt

(«Ну, вы понели», - говорит зануда моуд – это все еще операнд > создает вам необходимый файл, без него команда perl -e'print "a" x 1024' выведет на экран строку «а» в 1024 бита весом. Да, это работает, вопрос только в общем КПД такого действия.)

5. Команда xfs_mkfile

Команда xfs_mkfile — это быстрая команда для создания файла определенного размера в Linux. Здесь термин xfs — это краткая форма высокопроизводительной файловой системы журналирования, а mkfile — это синтаксис Linux, который позволяет пользователям задавать размер файла в байтах, килобайтах, мегабайтах или гигабайтах.

xfs_mkfile 1M newfile95.txt1 ls -lh daygeek5.txt

Последние мысли

Изучение файловой системы Linux помогает нам понять иерархию слоев или файловой системы. Создание файлов с помощью шелл-команд— это первый урок изучения файловой системы Linux. Терминальные команды помогают пользователям взаимодействовать с основными файлами. В этом посте описано несколько полезных команд, с помощью которых можно создавать файлы. Для лучшего понимания каждая команда поясняется краткой заметкой и примером. Все эти команды очень просты, и, если вы системный администратор, вам стоит изучить их все.