Файловая система Linux рассматривает все как файл. От текстовых/медийных/бинарных файлов и каталогов до аппаратных устройств, подключенных физически, — все в Linux является файлом. Если это не файл, то это должен быть процесс. В Linux файлы образуют древовидную структуру для управления данными. Существует очень много способов создать файл в linux, поэтому давайте рассмотрим несколько традиционных способов сделать это.
Правила существования файлов в файловой системе Linux
- Файлы *чувствительны к регистру* (в отличие от Windows). Так,
temp.txt
,Temp.txt
иTEMP.txt
— это разные файлы. - У пользователей должны быть разрешения на создание файла в родительской папке.
- Проверьте разрешение с помощью команды
ls -al
. - Убедитесь, что вы являетесь пользователем или входите в группу.
- Проверьте разрешение с помощью команды
- Вы можете использовать другие специальные символы, такие как пробел, но их трудно использовать, и лучше их избегать.
- Имена файлов могут содержать любые символы, кроме
/
, который зарезервирован как разделитель между файлами и каталогами в имени пути. Вы не можете использовать нулевой символ. - Для идентификации файлов используйте расширение имени файла, основанное на точке. Например:
- .sh = файл оболочки
- .tar.gz = сжатый архив
- Большинство современных Linux и UNIX ограничивают имена файлов 255 символами (255 байт). Однако некоторые старые версии системы UNIX ограничивают имена файлов только 14 символами.
- Имя файла должно быть уникальным в пределах своего каталога. Например, внутри каталога
/root
нельзя создать файлfile.txt
и имя каталогаfile.txt
. - Избегайте включения этих символов в имена файлов
/><|:&
. - Заключайте имя файла в одинарные кавычки
'file.txt'
.
Небольшой фрагмент эксперимента с созданием файлов в Linux:
root@aaf52077a089:/# cd /root
root@aaf52077a089:~# touch '!@#$%^&*(()_+-{}[]":></?><'
touch: cannot touch '!@#$%^&*(()_+-{}[]":></?><': No such file or directory
root@aaf52077a089:~# touch '!@#$%^&*(()_+-'
root@aaf52077a089:~# touch file.txt
root@aaf52077a089:~# touch File.txt
root@aaf52077a089:~# mkdir file.txt
mkdir: cannot create directory 'file.txt': File exists
root@aaf52077a089:~# ls -al
total 16
-rw-r--r-- 1 root root 0 Jul 16 11:19 '!@#$%^&*(()_+-'
drwx------ 1 root root 4096 Jul 16 11:20 .
drwxr-xr-x 1 root root 4096 Jul 16 11:17 ..
-rw-r--r-- 1 root root 3106 Oct 15 2021 .bashrc
-rw-r--r-- 1 root root 161 Jul 9 2019 .profile
-rw-r--r-- 1 root root 0 Jul 16 11:20 File.txt
-rw-r--r-- 1 root root 0 Jul 16 11:20 file.txt
Традиционные способы создания файлов в Linux
Мы можем легко создавать файлы с помощью стандартного файлового менеджера (GUI). Но в этом нет ничего интересного. Давайте рассмотрим несколько интересных способов создания файлов с помощью командной строки.
-
- Метод для всех —
touch file.txt
. - Расширенное использование.
- Метод для всех —
# Create a new empty file(s) or
# change the times for existing file(s) to the current time:
touch path/to/file
# Set the times on a file to a specific date and time:
touch -t YYYYMMDDHHMM.SS path/to/file
# Set the time on a file to one hour in the past:
touch -d "-1 hour" path/to/file
# Use the times from a file to set the times on a second file:
touch -r path/to/file1 path/to/file2
# Create multiple files:
touch path/to/file{1,2,3}.txt
Credit: cheat.sh
- Текстовые редакторы —
nano
,vim
,vi
,neovim
.- Они будут создавать файлы в текущих временных метках.
- Синтаксис:
text_editor path/to/file.txt
.
- Используя
cat
,echo
или любую другую команду с оператором>
или>>
. Мы можем использовать STDOUT для создания/дополнения файла.- Вы можете использовать простые трюки bash, чтобы использовать
cat
/bat
для создания файлов. - Синтаксис:
cat > file.txt
,cat >> file.txt
.
- Вы можете использовать простые трюки bash, чтобы использовать
root@aaf52077a089:~/dir_test# cat file.txt
cat: file.txt: No such file or directory
root@aaf52077a089:~/dir_test# cat > file.txt
Creating and writing a file with cat command is so cool.
Writing on 2nd line
^C
root@aaf52077a089:~/dir_test# cat file.txt
Creating and writing a file with cat command is so cool.
Writing on 2nd line
root@aaf52077a089:~/dir_test# cat >> file.txt
Writing on 3rd line
^C
root@aaf52077a089:~/dir_test# cat file.txt
Creating and writing a file with cat command is so cool.
Writing on 2nd line
Writing on 3rd line
root@aaf52077a089:~/dir_test# ls -al
total 12
drwxr-xr-x 2 root root 4096 Jul 16 11:55 .
drwx------ 1 root root 4096 Jul 16 11:55 ..
-rw-r--r-- 1 root root 97 Jul 16 11:57 file.txt
Классные непрактичные методы
- Вставьте аппаратное устройство в устройство Linux. Будет создан файл.
- Создавайте файлы фиксированного размера. (10 МБ)
fallocate -l $((10*1024*1024)) file.txt
# This option doesn't use input/output overhead, the space will be allocated immediately.
truncate -s 10M file.txt
# This creates a file full of null bytes.
dd if=/dev/urandom of=ostechnix.txt bs=10MB count=1
# This command will create a non-sparse file full of null bytes.
head -c 10MB /dev/urandom > file.txt
# This command will create a non-sparse file full of null bytes.
Большое спасибо, что прочитали эту статью. Следуйте за мной, чтобы узнать больше!