cat в Linux – всё что нужно знать

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

АТРИБУТ НЕИЗМЕНЯЕМЫЙ

Для того чтобы сделать файл неизменяемым вы установить атрибут неизменяемый. Например защитим от записи файл /etc/passwd:

 sudo chattr +i /etc/passwd

Заметьте, нужно иметь права суперпользователя для установки и удаления атрибутов. Теперь проверим установился ли атрибут:

 lsattr /etc/passwd

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

АТРИБУТ НЕИЗМЕНЯЕМЫЙ

Для отключения неизменяемости используйте следующую команду:

 sudo chattr -i /etc/passwd

Если вы хотите сделать все файлы в каталоге неизменяемыми используйте опцию -R:

 sudo chattr -R +i /etc

Работа с файлами

При запуске редактора командой «emacs .&» на экране появляется окно Emacs с информацией о содержимом текущего каталога (символ & в конце команды обеспечивает запуск приложения в фоновом режиме). В этом случае он играет роль файлового менеджера.

Перемещение по каталогам

Первые две строки окна файлового менеджера Emacs справа содержат точку (.) и две точки (..). Строка с точкой соответствует текущей директории. Для перемещения к родительскому каталогу (т. е.

на уровень вверх по файловому дереву) служит строка с двумя точками.

Если вы хотите зайти в какую-нибудь поддиректорию текущей директории, то нужно установить курсор на строку с ее именем и нажать клавишу Enter.

Для обращения к требуемому файлу или каталогу служит команда C-x C-f. В окне минибуфера появится строка Find File, в которой указан путь до текущей директории.

Редактируя ее, укажите путь до нужного вам каталога в соответствии с синтаксисом операционной системы Linux. После ввода имени директории или файла следует нажать клавишу Enter.

Если указано имя файла, то будет открыт или создан соответствующий файл.

Читайте также:  iOS 14: ошибки обновления, их решение и ответы на вопросы

Пример

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

Если вы хотите зайти в какую-то поддиректорию текущей директории, то нужно указать имя требуемой директории. Для перемещения в домашнюю директорию пользователя используется символ ~, в корневую директорию — /. Введенный вами фрагмент может выглядеть следующим образом: ../..

/Work/text, что означает перемещение на два уровня вверх, далее в директорию Work и поддиректорию text.

Создание директории

Для создания директории служит команда +. В минибуфере появится сообщение Create directory, после которого нужно ввести имя создаваемой директории.

Копирование файла или группы файлов

Для копирования файла нужно установить курсор на имя файла и нажать клавишу C. После чего в окне минибуфера появится строка Copy to, в которой нужно указать путь к директории, в которую нужно скопировать данный файл.

Если вы хотите скопировать группу файлов, то перед копированием нужно предварительно отметить каждый файл нажатием на клавишу m, после чего в крайней левой позиции строки с именем файла появляется символ отметки *.

Переименование (перемещение) файлов и каталогов

Для переименования файла нужно установить курсор на данном файле и нажать клавишу R. В минибуфере появляется строка с именем файла (каталога) и указывается полный путь к нему. Для переименования файла достаточно указать новое имя, а для перемещения — путь к новому каталогу.

Изменение прав доступа к файлам или директориям

Для изменения прав доступа к файлу или директории нужно выделить объекты, права доступа к которым вы хотите изменить, и применить команду M.

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

Цифры получаются в результате двоичного кодирования прав доступа и перевода их затем в 8-ичную систему счисления.

Символьное обозначение rwx rw- r-x r— -wx -w- —x
2-ное представление 111 110 101 100 011 010 001 000
8-ное представление 7 6 5 4 3 2 1

В приведенной выше таблице буквы означают соответственно r — read (чтение), w — write (запись), x — execute (выполнение для файлов и возможность входа для каталогов), причем наличие соответствующего права кодируется 1, а отсутствие — 0.

Удаление файлов или каталогов

Для удаления группы файлов следует сначала отметить их, как удаляемые, нажатием клавиши d (в крайней левой позиции при этом появляется метка D).

После отметки всех файлов нажать клавишу x и на экране появится список удаляемых файлов, а в окне минибуфера запрос подтверждения удаления. Нажмите y в случае согласия или n для отмены операции.

Удаление одного файла или группы файлов, отмеченных нажатием на клавишу m, можно выполнить и с помощью команды D. Удаление каталогов происходит точно так же, как и удаление файлов, но удаляемые директории должны быть пустыми.

Читайте также:  Astra Linux – отечественная операционная система

Отметим некоторые другие полезные команды редактора.

КомандаНазначение
v Просмотр содержимого файла
e Редактирование содержимого файла
u Снятие пометки файла
g Обновление содержимого директории

Просмотр файлов с помощью cat в Linux

Для просмотра файла просто наберите:#cat

[[email protected] ~]# cat new_file это новый файл

1234 [hc@host~]# cat new_fileэтоновыйфайл

Можно вывести с номерами строк:

[[email protected] ~]# cat -n new_file 1 это 2 новый 3 файл

1234 [hc@host~]# cat -n new_file 1 это 2 новый 3 файл

Можно просмотреть содержимое нескольких файлов.

[[email protected] ~]# cat -n new_file old_file 1 это 2 новый 3 файл 4 Это старый файл

12345 [hc@host~]# cat -n new_file old_file 1 это 2 новый 3 файл 4 Этостарыйфайл

Обратите внимание, что содержимое выводится единым массивом данных, что хорошо видно по тому, что содержание второго файла вывелось строкой под номером 4 – нумерация не началась заново при выводе этого файла. Т.е. cat, как это и заложено в ее названии, склеила файлы.

Заключение, несколько советов

Мы рассмотрели основные команды Linux с примерами, надеемся, что они окажутся вам полезными. Напоследок приведем несколько советов по использованию терминала одной строкой.

Двойной символ & (амперсанд)

Предназначен для выполнения нескольких команд последовательно:

команда1 && команда2 && команда3

Вертикальная черта | (pipe)

Вводит результат первой команды в последующую. Например, следующая команда добавит таблицу процессов к команде поиска:

ps axu | grep имя_процесса

Стрелки вверх и вниз на клавиатуре

Помогают осуществлять навигацию по последним командам. Стрелка вверх — предыдущая выполненная команда, стрелка вниз — следующая.

history — история

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

Новая вкладка bash

Не всегда удобно иметь несколько окон. Терминал, как браузер, дает возможность открыть несколько вкладок сочетанием клавиш Ctrl+Shift+T.

Копирование и вставка, прерывание команды

Пробовали ли вы копировать текст и вставлять в терминал? Пробовали Ctrl+C? Ctrl+C прервет выполнение текущей команды, например таблицы процессов, сбросит текст, введенный в строку. Скопировать текст из bash — Ctrl+Shift+C. Вставить текст в bash — Ctrl+Shift+V.

Удаление файлов и папок

Обычное удаление файла:

rm /etc/

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

rmdir backup

Добавляем атрибут -p для удаление пустых папок по всему пути. Будут удалены все три папки указанные ниже, если они не содержат файлов:

rmdir -p backup/one/two

Ошибка папки при удалении в Linux

Иногда при удалении папки в Linux пишется ошибка:

Читайте также:  Как включить вкладки в терминале Ubuntu

rmdir: не удалось удалить «название_папки»: Нет такого файла или каталога

При этом зайти в неё тоже не удаётся, пишется ровно противоположное:

-bash: cd: /название_папки: Нет такого файла или каталога

Также встречаются ошибки:

rm: невозможно удалить «/home/admin/web/public_html»: Это каталогrmdir: не удалось удалить «/home/admin/web/public_html»: Каталог не пуст

Удалить эту капризную папку (без предупреждений) поможет следующая команда:

rm -rf backup

или так:

rm -rf /home/admin/web/public_html

где -r – команда пройтись по всем папкам и файлам и попытаться удалить каждую из них -f – удалить без подтверждения

Удалить всё внутри папки

Зайти внутрь папки:

cd folder

Удалить все в этой папке:

sudo rm -rf ./*

Удаление файлов из директории Linux без удаления самой папки

Удаляем всё содержимое из папки files, которая находится по этому пути – /home/user/files/. Специальные ключи в команде ускоряют удаление содержимого с минимальной нагрузкой на сервер.

find /home/user/files/ -mindepth 1 -a -print0 | xargs -n 100 -0 rm -rf

Удалить все файлы кроме одного конкретного файла

rm -v !("")

Удалит все файлы, кроме одного. Эта команда не удаляет папки.

Мониторинг и отладка

  • отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)

    top

  • отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)

    ps -eafw

  • вывести PID’ы и процессы в виде дерева

    ps -e -o pid,args —forest

  • отобразить дерево процессов

    pstree

  • «убить» процесс с PID 98989 «на смерть» (без соблюдения целостности данных)

    kill -9 98989 или kill -KILL 98989

  • корректно завершить процесс с PID 98989

    kill -TERM 98989

  • заставить процесс с PID 98989 перепрочитать файл конфигурации

    kill -1 98989 или kill -HUP 98989

  • отобразить список файлов, открытых процессом с PID 98989

    lsof -p 98989

  • отобразить список открытых файлов из директории /home/user1

    lsof /home/user1

  • вывести список системных вызовов, созданных и полученных процессом ls

    strace -c ls >/dev/null

  • вывести вызовы бибилотек

    strace -f -e open ls >/dev/null

  • отображать прерывания в режиме реального времени

    watch -n1 ‘cat /proc/interrupts’

  • отобразить историю перезагрузок системы

    last reboot

  • отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней

    last user1

  • вывести загруженные модули ядра

    lsmod

  • показать состояние оперативной памяти в мегабайтах

    free -m

  • контроль состояния жёсткого диска /dev/hda через SMART

    smartctl -A /dev/hda

  • проверить доступность SMART на жёстком диске /dev/hda

    smartctl -i /dev/hda

  • вывести десять последних записей из журнала загрузки ядра

    tail /var/log/dmesg

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

    tail /var/log/messages