Делаем первые шаги в файловой структуре Linux используя оболочку терминала. Научимся создавать папки и копировать информацию из файлов.
Первые шаги в командной строке
Для взаимодействия с файловой средой компьютера мы будем использовать командный интерпретатор. Открыв терминал на линуксе вы откроете оболочку shell.
При открытии мы можем увидеть различную информацию: имя пользователя, имя компьютера в сети, текущую рабочую дирректорию, но всегда в конце строки будет символ $, который призывает нас ввести команду.
Оглядываемся
>> Знакомимся с системой.
Для того чтобы узнать в какой операционной системе мы находимся на данный момент, введите команду.
uname
Добавив флаг -v мы получим более развёрнутую информацию о текущей системе.
uname -v
Ubuntu
Ещё одна полезная команда, которая покажет вам, какое имя ваш компьютер имеет в сети
hostname
Но зачастую удобнее работать с цифровый ip-адрестом, чтобы узнать ip вашего компьютера в локальной сети используйте флаг -i вместе с командой hostname.
hostname -i
>> Про память
Файловая система в Linux имеет иерархическую структуру и она очень удобна в использовании. Всегда присутствует основной корень системы в котором располагаются следующие папки.
Папка | Хранит |
---|---|
/etc | локальные настройки программ |
/home | каталог пользователя |
/bin | базовые утилиты |
/sbin | сервисные утилиты |
/usr | общая часть программ |
/var | изменяемые файлы (логи, очереди, базы, кэши) |
/dev | специальные файлы устройств ввода-вывода. |
/lib | библиотеки |
Специальные файлы(такие как из папки /dev) делятся на два типа
- Блочные (файлы диска)
- Символьные (файлы принтера, модема)
В файловой системе Linux абсолютно всё является файлом. Модем, папка, принтер — это всё файл.
Папка — представяет из себя файл со списком файлов.
Метка | Тип | Описание |
---|---|---|
— | Обычный файл | Обычный пользовательский файл, например текстовый документ или исполняемая программа |
b | Блочное устройство | Драйвер(управляющая программа) носителя (диск) |
c | Символьное устройство | Драйвер аппаратного устройства, предназначенного для передачи данных (модем, принтер) |
d | Каталог | |
l | Ссылка | Мягкая или жёсткая |
Каждое имя файа в системе ссылается на, так называемый, inode (индекс узел), который хранит в себе метаданные о файле.
Inode — индексный дескриптор. Специальная сущность размером 64байта в которой хранится мета информация о файле, такая как..
- Права RWX
- Ссылки на области данных
- Размер
- Владелец
- Даты модификации
- Ctime — Изменение метаданных
- Atime — Изменение прав доступа
- Mtime — Изменение содержимого
Место под i-node резервируется при создании файловой системы. Для xfs иноды создаются динамически. Эволюция файловой системы.
Для того чтобы получить информацию о доступной информации на диске достаточно ввести команду.
df
К недостатку вывода такой команды можно отнести не совсем читаемые результат. Его неудобно воспринимать, поскольку на экран выводится информация не в Gb или Tb, а в блоках, на которые поделена файлновая система. Чаще всего в Linux системах размер одного блока составляет 1Kb но встречаются и блоки другого размера, например, 512b.
Чтобы получить информацию в более читабельнов виде, используйте флаг -h (human readable)
df -h
Если вы хотите посмотреть выборку по i-node, поставьте флаг -i
df -i
Вывести inode какого-нибудь файла на экран
stat Music
Ещё одна команда, которая позволит вам получить информацию о состоянии оперативной памяти. Не забывайте про флаг -h
free
>> Пора в путь
Команды, которые следует изучить в первую очередь.
ls - list files
pwd - print working directory
cd - change directory
Путешествуем по папкам системы.
В текущем каталоге создем папку «users»
mkdir users
в папке «users» создать текстовый файлы user1
nano user1
Впишите туда Ron. Сохраните и закройте файл. скопировать файл user1 в user2
cp user1 user2
Изменить содержимое файла user2
cat > user2
Harry
открыть файл user1, отредактировать его и сохранить в user3. Добавьте Malfoy.
nano user1
Вывести на экран сконкатенированное значение всех трех файлов
cat file1 file2 file3
Записать результат работы команды в файл
cat file1 file2 file3 > users
Сначала отсортировать данные, а затем записать
cat file1 file2 file3 | sort > users
Когда пользователь дает оболочке команду cat | sort, то оболочка создает канал и соединяет стандартный вывод первого процесса (cat) со входом второго канала, а стандартный ввод второго процесса (sort) с выходом первого. Чтобы создать канал, применяется системный вызов pipe, возвращающий два файловых дескриптора: один для чтения, другой для записи в него. Обычно после этого делается вызов fork, и родительский процесс закрывает дескриптор для чтения, а дочерний процесс — дескриптор для записи(или наоборот), чтобы один процесс мог писать в канал, а другой — читать из него.
Добавление информации в конец файла
date >> users
при перемещении файла users на уровень выше, мы получим конфликт имён, поскольку на уровне выше находится папка users.
Переименовать файл users в data.
mv users data
переместить data на уровень выше
mv data ..
переместиться на каталог выше и распечатать текущую директорию.
cd .. ; pwd
Попробовать удалить каталог users используя команду rmdir.
После того как не получилось, воспользоваться rm
rm -r users
Будьте предельно осторожны используя подобный синтаксис, поскольку никаких предупреждений о удалении система выводить не будет, а просто удалит все файлы и вложенные каталоги.
На первых этапах лучше используйте флаги -i -r -v вместе
rm -irv users
В таком случае система будет запрашивать разрешение на удаление(флаг -i), поcле чего будет выводить в терминал каждый удаляемый файл (флаг -v).
чтобы узнать все возможные параметры команд введите
command --help или man command или info command
введите команду history и вы увидите список введённых значений. Если вы хотите выполнить команду из истории нажмите Ctrl+r и начните набирать текст.
Задача
- Соберите информацию о той среде в которой вы находитесь(тип системы, версия ядра, имя пользователя) и запишите её в файл.
— расширение
- Запрашивайте у пользователя информацию, например, имя, и после производить запись в файл вместе с информацией о системе. В конце файла должна стоять отметка о времени, когда была создана запись. Новая запись не должна удалять предыдущие, а должна добавляться в файл. Между записями должна быть пустая строка.
Вам также может пригодиться
- эволюция файловой системы
- Список директорий в линуксе
- ls — команда вывода содержимого текущей директории
- rm — команда для удаления файлов или папок