Команды управления файлами и папками в Linux

Поговорим о файловых системах Linux. Какие существуют типы и виды. Какие их основные различия: журналируемые и не журналируемые ФС.

Как открыть командную строку в Linux

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

Как получить доступ к командной строке в Ubuntu? Нет ничто проще. Чтобы открыть эмулятор терминала в Ubuntu, выберите на панели пункт «Приложения->Стандартные->Терминал». Опустится эмулятор терминала — Gnome terminal. Также эмулятор терминала Gnome terminal в Ubuntu возможно запустить из окна запуска приложений. Для этого нажмите Alt+F2 и введите в открывшемся окне заглавие программы — «gnome-terminal». Чтобы получить доступ к настоящей текстовой консоли, возможно воспользоваться комбинациями клавиш Ctrl+Alt+F1… Ctrl+Alt+F6. Ctrl+Alt+F7 — переход обратно в графичный режим.

Командная строка, оболочка, консоль — эти термины используются для обозначения взаимодействия человека-оператора с операторной системой с применением стандартных устройств ввода-вывода, обеспечивающих ввод команд и получение итогов их выполнения. В операционных системах семейства Linux подобное взаимодействие обеспечивается специальным программным провиантом — оболочкой ( shell ) . Наиболее распространенной из них, является оболочка проекта GNU bash ( Bourne Again SHell ). Bash строится на оболочке Bourne ( sh ) созданной Стефеном Борном и включает в себя свойства множества иных оболочек — C ( csh ) , Korn ( ksh ), tc ( tcsh ) . Bash была написана Брайаном Фоксом (Brian Fox ) и в истиннее время поддерживается Четом Рейми ( Chet Ramey ).

Аргументы командной строки

Из урока №3 мы уже знаем, что при компиляции и линкинге, компилятор создает исполняемый файл. Когда программа запускается, выполнение начинается с первой строки функции main(). До этого урока мы объявляли main() следующим образом:

int main()

1 int main()
Аргументы командной строки

Обратите внимание, в этой версии функции main() никаких параметров нет. Тем не менее, многие программы нуждаются в некоторых входных данных. Например, предположим, что вы пишете программу под названием Picture, которая принимает изображение в качестве входных данных, а затем делает из этого изображения миниатюру (уменьшенная версия изображения). Как функция picture() узнает, какое изображение нужно принять и обработать? Пользователь должен сообщить программе, какой файл следует открыть. Это можно сделать следующим образом:

Читайте также:  Apple выпустила iOS 12: стоит ли обновляться и что изменится

// Программа: Picture #include <iostream> #include <string> int main() { std::cout << «Enter name of image-file to create a thumbnail for: «; std::string filename; std::cin >> filename; // Открываем файл-изображение // Создаем миниатюру // Выводим миниатюру }

1234567891011121314 // Программа: Picture#include <iostream>#include <string> int main(){ std::cout << «Enter name of image-file to create a thumbnail for: «; std::string filename; std::cin >> filename; // Открываем файл-изображение // Создаем миниатюру // Выводим миниатюру }

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

Аргументы командной строки

Рассмотрим это детально. Например, вы хотите создать миниатюры для всех файлов-изображений, которые находятся в определенном каталоге. Как это сделать? Вы можете запускать эту программу столько раз, сколько есть изображений в каталоге, введя каждое имя файла вручную. Однако, если есть сотни изображений, такой подход будет, мягко говоря, не очень эффективным! Решением здесь будет написать программу, которая перебирала бы каждое имя файла в каталоге, вызывая каждый раз функцию picture() для каждого файла.

Теперь рассмотрим случай, когда у вас есть веб-сайт, и вы хотите, чтобы он создавал миниатюру каждый раз, когда пользователь загружает изображение на сайт. Эта программа не может принимать входные данные из Интернета и следует логический вопрос: «Как тогда вводить имя файла?». Выходом является вызов веб-сервером функции picture() автоматически каждый раз после загрузки файла.

В обоих случаях нам нужно, чтобы внешняя программа передавала имя файла в качестве входных данных в нашу программу при её запуске, вместо того, чтобы функция picture() сама дожидалась, пока пользователь вручную введет имя файла.

Аргументы командной строки

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

Что такое файловая система простыми словами

Термин «файловая система» можно понимать двояко. С одной стороны — это архитектура хранения битов на жестком диске, с другой — это организация каталогов в соответствии с идеологией Unix. В этой статье мы более подробно обсудим первую сторону.

Файловая система (сокращенно ФС, англ. «file system») — это архитектура хранения данных в системе, хранение данных в оперативной памяти и доступа к конфигурации ядра. ФС устанавливает физическую и логическую структуру файлов, правила их создания и управления ими.

В физическом смысле файловая система Linux/UNIX представляет собой пространство раздела диска разбитое на блоки фиксированного размера. Их размер кратен размеру сектора: 1024, 2048, 4096 или 8120 байт. Размер блока известен заранее.

Читайте также:  Все способы блокировать и ограничивать действия аккаунтов в Инстаграме

Как происходит обмен данными между ядром, приложениями и жестким диском? Для этого существуют 2 технологии:

  1. Виртуальная файловая система (VFS). Некий интерфейс, между ядром и файловой системой (ext2, ext4 и т.д.). Это позволяет взаимодействовать ядру и приложениям без особенностей работы конкретного типа ФС. Иногда VFS называют «виртуальным коммутатором файловых систем».
  2. Драйверы файловых систем. Специальные программы, которые устанавливают «мост» (интерфейс) взаимодействия между аппаратурой и программой.

Список поддерживаемых ядром файловых систем находится в файле /proc/filesystems:

[email protected]:~$ cat /proc/filesystems nodev sysfs nodev rootfs nodev ramfs nodev bdev nodev proc nodev cpuset nodev cgroup nodev cgroup2 nodev tmpfs nodev devtmpfs nodev debugfs nodev tracefs nodev securityfs nodev sockfs nodev bpf nodev pipefs nodev hugetlbfs nodev devpts ext3 ext2 ext4 squashfs vfat nodev ecryptfs fuseblk nodev fuse nodev fusectl nodev pstore nodev mqueue nodev autofsИерархия файловой системы

Как мы уже сказали выше, есть вторая сторона ФС, которая состоит в определении ее с точки зрения организации расположения файлов в Linux. В этом случае можно сказать, что: файловая система — это иерархическая структура, которая начинается с корневого каталога «/» (корневой каталог) и дальше ветвится в соответствие с работой системы.

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

  • Каталоги Linux — организация файловой системы

Команды Linux для управления файлами и папками

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

У Линукса много команд, предусмотренных на все случаи

Обратите внимание! Для освоения операционной системы Linux не обязательно анализировать записи на форумах или покупать учебники. Достаточно воспользоваться справочником кодов и опций терминала Линукс.

Команды Linux для управления файлами и папками

Как управлять директориями

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

Важно! Программы и инструменты доступны во всех версиях терминала Linux. Их не нужно загружать и устанавливать отдельно от ОС.

«Ls» для просмотра папок и их содержимого

Примеры команд:

  • «ls» — код, с помощью которого можно просматривать активные папки и их содержимое. Разработчики Linux добавили забавную фишку — нередко при быстрой печати пользователи ошибаются и вводят «-sl» вместо «-ls». В этом случае в терминале появится поезд «Steam Locomotive»;
  • «cat» показывает компоненты необходимого файла. Опция «-n» производит их нумерацию;
  • «cd» применяется для перехода из одной папки в другую. При нулевом вводе отправляет пользователя в корневой каталог;
  • «pwd» определяет активную директорию;
  • «mkdir» позволяет создать новую папку в активной директории;
  • «file» показывает свойства необходимого файла;
  • «cp» отвечает за копирование. С помощью этой команды можно копировать файлы и папки. Имеет опции -«r» (рекурсивное копирование) и «-a» (сохранение изменений);
  • «mv» применяется для переименовывания файлов и их дальнейшего перемещения;
  • «rm» отвечает за удаление компонентов. По умолчанию работает в режиме безвозвратного удаления. Включение опции «-r» позволяет отправить файл в корзину;
  • «ln» используется для создания ссылки на файл;
  • «chmod» подходит для систем с несколькими пользователями. Команда изменяет права допуска к файлу;
  • «chown» меняет владельца. Этой командой может воспользоваться только суперпользователь;
  • «find» и «locate» — команды, которые отвечают за поиск указанных файлов и программ. Их отличие состоит в том, что «locate» ищет в Updated (специальной утилите, которая производит сканирование операционной системы, обновляет список файлов Linux и баз данных). Для каждой команды существует гибкая система опций;
  • с помощью «help» Linux покажет всю информацию о встроенных командах;
  • «dd» — создание и преобразование копий компонентов системы;
  • «dir» для Linux позволяет посмотреть скрытые файлы и папки;
  • «mounth» включает систему;
  • «umounth» отключает систему;
  • «df» производит анализ жёстких дисков, выдавая отчёт о проделанной работе. Команда имеет большое количество опций, позволяющих структурировать и комбинировать полученные данные.
Команды Linux для управления файлами и папками

Важно! Две последние команды может использовать только суперпользователь.

Читайте также:  Проверка исправности работы диска в Ubuntu

Команда «Nano» позволяет войти в упрощённый режим консоли с подсказками внизу экрана

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

/dev/sda— Форматирование жесткого диска

Команда /dev/sda1 является простой для понимания:

— Создает новую файловую систему ext4 на следующем устройстве. /dev/sda1  — Задает первый раздел на первом жестком диске, который, вероятней всего используется под корневую файловую систему.

Если связать данную команду вместе, эта команда может быть эквивалентна запуску Format C: на Windows, что сотрет файлы на первом разделе и заменит их новой файловой системой.

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

Примечание: Остерегайтесь выполнения команд непосредственно для управления жестким дисками, которые начинаются с /dev/sd.

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

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

rm /etc/

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

rmdir backup

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

rmdir -p backup/one/two

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

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

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 !("")

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