В Linux всего 7 типов файлов.
| Тип файла | Описание |
| Обычные файлы(-) regular file | Сюда относятся все файлы с данными. Linux все-равно текстовый перед ним файл, исполняемый или картинка. В любом случае это будет обычный (regular) файл. Все они обозначаются знаком минус "-". Остальные типы файлов считаются специальными (special). |
| Каталоги(d) directory | В Linux каталог представляет собой такой тип файла, данными которого является список имен других файлов и каталогов, вложенных в данный каталог. |
| Символьные ссылки(l) symlink | Символьная ссылка – это файл, в данных которого содержится адрес другого файла по его имени (а не индексному дескриптору). Выполнение символьной ссылки приводит к открытию файла, на который она указывает. Если удалить исходный файл, то символьная ссылка продолжит существовать. Она по-прежнему будет указывать на файл, которого уже нет. Символьные ссылки не содержат атрибутов файлов, на которые они указывают. У них есть собственные атрибуты (свое время создания, размер, права доступа). |
| Сокеты(s) socket | Файлы сокетов. Создают прямую связь между процессами в системе. Передают данные между процессами, которые запущены в различных средах либо даже на различных машинах. Означает это следующее: посредством сокетов программы могут осуществлять обмен информацией даже по сети. Работа сокета похожа на работу туннеля, но в обе стороны. ls -l /dev/ | grep "^s" |
| Каналы (p)named pipe | Туннели/именованные туннели. Обеспечивают настройку связи между 2-мя процессами в системе, перенаправляя вывод одного на вход другого. Туннели именованного типа тоже применяются для связи между 2-мя процессами и функционируют, как и обыкновенные туннели. ls -l /dev/ | grep "^p" |
| Блочные устройства (b) block special file | Файлы устройств, обеспечивающие буферный доступ к аппаратным компонентам. В процессе записи информации на жёсткий диск либо съёмный носитель данные не записываются сразу — это нерационально с точки зрения расходования ресурсов. Поэтому данные сначала собираются в буфере, для чего и используются блочные файлы. Они способны передавать большие блоки информации за один раз, и с их помощью файловая система и прочие утилиты получают возможность взаимодействовать с драйверами аппаратных устройств. ls -l /dev/ | grep "^b" |
| Символьные (c) и сharacter special file | С их помощью обеспечивается небуферизованный доступ к ядру и аппаратным компонентам. Это значит, что они могут передавать за раз лишь один символ. В остальном, это те же файлы устройств. Для символьных файлов предусмотрена буква c (character) ls -l /dev/ | grep "^c" |
Жесткая ссылка (hard link) в Linux не является отдельным типом файла, а представляет собой лишь дополнительное имя (запись в директории) для уже существующего файла, указывающее на тот же inode. Оригинал и хардлинк — это один и тот же файл, разделяющий одни данные, права и время, а понятие «оригинал» отсутствует.
Команда file используется в Linux для определения типа содержимого файла. Она не полагается на расширение файла, а анализирует его содержимое (магические числа, сигнатуры и др.).
file example.txt
file file1 file2 /bin/ls
file *
file /bin/bash
echo "Hello" | file -
Информация об исполняемом файле
Можно редактировать заголовок исполняемого файла
| Опция | Описание |
| -b | Показывает только тип без имени файла |
| -i | Показывает MIME-тип (например, `text/plain; charset=us-ascii`) |
| -z | Анализирует содержимое сжатых файлов |
| -f <имя> | Читает список файлов из текстового файла |
| –mime-type | Показывает только MIME-тип (без кодировки) |
file -b myfile.pdf
file -i index.html
file -z archive.gz
| Команда | |
| touch | Команда для создания пустых файлов и обновления временных меток существующих файлов. Если файла нет, то будет создан пустой файл. Если есть, то будет изменена метки времени доступа и изменения файла. |
| touch -c | Не создавать файл |
| touch -m docu.txt | Обновить только метку времени изменения существующего файла с именем docu.txt. |
| touch -- -p | создание с именем "-p", -- говорят, что дальше опций нет. |
| cat > sample.txt | Создание sample.txt. Содержимое можно вводить с консоли и потом нажать Ctrl+C |
| echo > sample.txt | Создание пустого файла |
| >1.txt | Создание файла 1.txt |
| ln -s /etc/passwd /root/pass | создание символьной ссылки /root/pass указывающую на /etc/passwd |
| touch -d "1990/11/25" /etc/shells | Установка даты изменения файла на 25 ноября 1990 года |
| watch -n1 -d ls -l | Зайти в другой терминал и запустить команду, тогда видно, какие файлы touch изменил |
| Команда | |
| touch file1.txt file2.txt file3.txt | Создание нескольких файлов file1.txt, file2.txt, file3.txt |
| touch file{1..5}.txt | Создать 5 файлов c именами file1.txt file2.txt и т.д. |
| touch file{1..5..2}.txt | Создать файлы с шагом 2 c именами file1.txt file3.txt и т.д. |
| touch test{1,2,3,4,5} |
| for i in {1..99}; do touch file$(printf "%02d" $i); done | printf "%02d" добивает число 0, если оно меньше 10 |
| Команда | |
| seq 100 | Заполнение цифрами от 1-100 |
| for fn in {0..9} {A..Z} {a..z}; do printf "$fn%.0s" {1..100}; printf "\n"; done >myfile.txt |
| strings /dev/urandom | head -n2700000 | tr '\n' ' ' >> bgn.txt | grep -oE '\w*a\w*' bgn.txt | tr '\n' ' ' > fnh.txt |
| Команда | Описание |
| truncate -s 5M test.txt | Создание файла размером 5 мегабайт. Можно обрезать логи этой командой |
| fallocate -l 5242880 test.txt | Создание файла размером 5 Mb, но нужно точно указывать размер |
| fallocate -l $((5*1024*1024)) test.txt | Создание файла размером 5 Мб, но так размер указывать легче |
| head -c 5MB /dev/urandom > test.txt | Создать файл 5Мб и заполнить его случайными символами |
| head -c 5MB /dev/zero > test.txt | Создать файл 5Мб и заполнить его нулями |
| dd if=/dev/urandom of=test.txt bs=5MB count=1 |
| dd if=/dev/zero of=test.txt bs=5MB count=1 |
| Команда | Описание |
| cp -v /bin/{bash,touch,ls,rm} $chr/bin | Копирование вложенных файлов в папку /bin |
| mkdir -p /tmp/test/one/non-exist/backup/dir && cp $HOME/.vimrc $_/myVimrc | Создание папки и в случае успеха копирование файла в папку $_. $_ разворачивает последний аргумент последней запущенной команды. |
| cp {,originals/}my_file_name | Копирование файла в другую папку |
| cp my_file_name originals/!#:1 | Копирование файла, !# текущая строка, :1 первый аргумент |
| cp my_file_name Ctrl+W Ctrl+Y originals/Ctrl+Y | Набираем команду копирования, после набора пути нажимаем Ctrl+W и копируем слово слева, затем набираем новый путь и вставляем Ctrl+Y где надо |
| mv file_name my_other_Ctrl+J | переименование файла, Ctrl+J копирует первый аргумент в строке |
| mv 2.txt{,.back} | переименование файла с новым расширением и сохранением имени |
| Команда | Описание |
| truncate -s 0 "имяфайла" | обнуление файла |
touch -t 200701310846.26 index.html
touch -d '2007-01-31 8:46:26' index.html
touch -d 'Jan 31 2007 8:46:26' index.html
| Команда | Описание |
| mkdir -p a/b/c | создание родительских папок при отсутствии |
| mkdir -p /mydir/{bin,lib,lib64} | Создание папок bin,lib,lib64 в mydir |
| mktemp mytempdir | создание временной папки mytempdir в /tmp/ |
| /run/user/1000/ | временная папка в оперативной памяти, при перезагрузке удаляется |
| mkdir -p \ project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a} | Создание вложенной структуры папок |
| mkdir -p a/b/c && cd $_ | Создать папки и перейти в папку после создания |
| Команда | Описание |
| cd | Переход в домашний каталог пользователя |
| cd .. | Переход на предыдущий уровень |
| cd - | Возврат к препоследней папке, до перехода |
| cd / | Переход к корневой папке |
| Команда | Описание |
| rm -rf | удаление |
| rm -rdf | удаление папки со всем содержимым внутри |
| rm -rf /root/test/.* | Удаление скрытых файлов, файлов и папок |
Удаление файлов младше
find /root/test -type f -newermt "2024-06-4 00:00:00" -delete
Удаление файлов старше
find /root/test -type f -not -newermt "2024-06-4 00:00:00" -delete
| Команда | Описание |
| ls | вывод содержимого каталога |
| ls -l | детальное отображение |
| ls -la | скрытые файлы и папки |
| ls -lah | размеры файла в KB/MB/GB |
| ls -lah --group-directories-first --color=auto | сортировка папок первыми |
| ls -lt | сортировка списка файлов по дате изменения |
| ls -lhS | сортировка списка только файлов по размеру, можно добавить r или R для порядка сортировки |
| ls -R | grep ':$' | sed -e 's/:$//;s/[^─][^\/]*\//──/g;s/^/ /;s/─/├/' | Просмотр дерева папки, как tree |
| tree | вывод дерева папок и файлов |
| ls -l | grep '^d'| tr -s " " | cut -d " " -f 9 | Вырезать папки из вывода ls |
| ls -l | grep '^d'| tr -s " " | cut -d " " -f9- | tr "\n" " " | Преобразовать к одной строке |
| ls -l /dev | tr -s ' '| cut -c 2-9| sort -uniq | Посчитать количество различных прав |
du -sh /tmp #Размер папки на диске
| Команда | Описание |
| find / -name ssh -type f 2>/dev/null | поиск файла |
| find . -mount -type f -size +1G 2>/dev/null | Поиск файлов и папок больше 1Gb |
| find . -mount -type f -size +512M -print 2>/dev/null | xargs -r -d '\n' ls -lh | sort -k5,5 -h -r | Поиск файлов и папок больше 512Mb с выводом подробной информации |
| find / -name '*.txt' | Поиск файлов в корне по маске *.txt |
| find . -size 0c | Поиск файлов нулевого размера в текущем каталоге |
| find . -empty | Поиск пустых файлов в текущем каталоге |
| find ~ -size +100M -size -150M | найти файлы размером от 100 до 150Мб в домашнем каталоге и подкаталогах |
| find / -name *.tmp -ok rm () \; | Найти все временные файлы и удалить их(для каждого найденного файла будет запущена команда rm и подтверждение) |
| find / -name *.tmp -exec rm () \; | Найти все временные файлы и удалить их(для каждого найденного файла будет запущена команда rm, но подтверждения запрошено не будет ) |
| find . -type f -exec chmod 0644 () \; | Найти все файлы -type f, а не каталоги, в текущем каталоге и установить для них права 644 |
| find / -user linda | Поиск файлов, где владелец пользователь linda |
| find / -group users | Поиск файлов, где владелец группа users |
| find ./files/ -name 'file*' -empty | xargs -t -I {} mv {} /tmp/files/ | Перенос файлов в tmp. -I {} значения на вход, передача значений в mv {} |
which sendmail - выведет полный путь к программе, если она встречается в PATH
locate sendmail будет искать быстрее, если демон located запущен.