Основы Linux. Изучение структуры и базовых команд Linux
Цель: Первичное знакомство с командным интерпретатором. Изучение базовых команд операционной системы Linux.
Теоретическая часть:
При работе с ОС необходимо знать то, как она работает, в каком виде хранятся файлы, и какие команды существуют для управления системой. Такой подход позволяет разрабатывать различные системы, в том числе для экологического и метеорологического мониторинга, с соблюдением стандартов качества и организацией их бесперебойной работы
При работе ОС активно использует устройства хранения данных, в том числе жесткие или твердотельные диски. Чтобы на каждом разделе этих дисков можно было работать с файлами и каталогами, необходимо наличие файловой системы. Кроме записи содержимого файлов на диск нужно еще хранить данные о папках, имена файлов, их размер, адрес на жестком диске, атрибуты доступа. Всем этим занимается файловая система.
Файловая система (ФС) - предоставляет пользователям (и процессам) ресурсы долговременной памяти компьютера. Операционная система Windows может быть установлена на файловую систему NTFS, поэтому обычно у пользователей не возникает вопросов какую ФС лучше использовать. ОС Linux имеет значительные отличия. Так, в ядро системы встроены и могут использоваться несколько файловых систем, каждая из которых оптимизирована для решения определенных задач.
От файловой системы зависит очень многое: скорость работы с файлами, скорость записи и даже размер файлов. Также от стабильности файловой системы будет зависеть сохранность файлов. Файловые системы в Linux используются не только для работы с файлами на диске, но и для хранения данных в оперативной памяти или доступа к конфигурации ядра во время работы системы. В каждом дистрибутиве Linux есть возможность использовать одну из следующих файловых систем: Ext2, Ext3, Ext4, JFS, ReiserFS, XFS, Btrfs, ZFS. Все они включены в ядро и могут использоваться в качестве корневой файловой системы.
Иерархия файловой системы в Linux
Для каждого дистрибутива Linux существуют свои различия в иерархиях файловых систем. - / - Корневая директория, структуры директорий всех систем Linux начинаются с корневой директории. Все файлы, которые существуют в вашей системе Linux, находится ниже данной корневой директории в дереве директорий. Ниже приведено содержимое этой корневой директории.
debia@debian:~$ ls /
bin home lib32 media root sys vmlinuz
boot initrd.img lib64 mnt run tmp vmlinuz.old
dev initrd.img.old libx32 opt sbin usr
etc lib lost+found proc srv var
- /boot - директория, которая содержит все файлы, необходимые для загрузки компьютера. Эти файлы не изменяются очень часто.
- /etc - директория, где хранятся, все специфичные для машины конфигурационные файлы. Во многих случаях имена конфигурационных файлов совпадают с именами приложений или протоколов, а в качестве расширений этих файлов используется строка .conf.
debia@debian:~$ ls /etc/*.conf
/etc/adduser.conf /etc/host.conf /etc/reportbug.conf
/etc/apg.conf /etc/kernel-img.conf /etc/resolv.conf
/etc/appstream.conf /etc/ld.so.conf /etc/rygel.conf
/etc/ca-certificates.conf /etc/libao.conf /etc/sensors3.conf
/etc/debconf.conf /etc/libaudit.conf /etc/sudo.conf
/etc/deluser.conf /etc/logrotate.conf /etc/sudo_logsrvd.conf
/etc/discover-modprobe.conf /etc/mke2fs.conf /etc/sysctl.conf
/etc/e2scrub.conf /etc/nftables.conf /etc/ucf.conf
/etc/fuse.conf /etc/nsswitch.conf /etc/usb_modeswitch.conf
/etc/gai.conf /etc/pam.conf /etc/xattr.conf
- /proc - (proccess) информация о процессах. Это тоже необычная файловая система, а подсистема, динамически создаваемая ядром. Здесь содержится вся информация о запущенных процессах в реальном времени. По сути это псевдофайловая система, содержащая подробную информацию о каждом процессе, его PID, имени исполняемого файла, параметрах запуска, доступе к оперативной памяти и так далее. Также в этом каталоге можно найти информацию об использовании системных ресурсов, например, /proc/cpuinfo, /proc/meminfo или /proc/uptime
- /home - пользователи могут хранить персональные данные и данные проектов в данной директории. Обычно имя домашней директории пользователя устанавливается в соответствии с полным именем пользователя в формате /home/$имя_пользователя. Например:
debia@debian:~$ ls /home
geert annik sandra paul tom
- /root - стандартная директория для хранения персональных данных и данных профиля пользователя root.
- /mnt (mount) - монтирование в каталог. В данный каталог можно подключать внешние или дополнительные файловые системы.
- /media - данная директория служит точкой монтирования для таких устройств для работы со съемными носителями, как приводы CD-ROM, цифровые камеры, а также различные устройства, подключаемые по шине USB. Большинство дистрибутивов Linux на сегодняшний день монтирует все съемные носители в директорию /media.
debia@debian:~$ ls /media/
cdrom cdrom0 usbdisk
- /dev - файлы устройств из директории /dev выглядят как обычные файлы, но на самом деле не являются обычными файлами, размещенными на жестком диске. Директория /dev заполняется файлами в процессе определения устройств средствами ядра операционной системы. Стандартные устройства, такие, как жесткие диски, представлены файлами устройств в директории /dev.
debia@debian:~$ ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdb1 /dev/sdb2
- /tmp (temp) - временные файлы. В этом каталоге содержатся временные файлы, созданные системой, любыми программами или пользователями. Все пользователи имеют право записи в эту директорию. Файлы удаляются при каждой перезагрузке.
- /var - директория для изменяемых данных, файлы заранее неизвестного размера, такие, как файлы журналов, файлы кэша и файлы очереди печати.
- /var/log - файлы логов (файлы журналов). В этой директории содержится большинство файлов логов всех программ, установленных в операционной системе.
- /var/lib - базы данных В этой директории находятся файлы баз данных, пакеты, сохраненные пакетным менеджером и т д
- /usr - (user applications) программы пользователя. Каталог с большим количеством функций. Здесь находятся исполняемые файлы, исходники программ, различные ресурсы приложений и документация.
- /srv (server) - сервер. В этом каталоге содержатся файлы серверов и сервисов. Например, могут содержаться файлы веб-сервера apache.
Файлы и ничего кроме файлов
Среди всех элементов операционной системы Linux самым важным, является командная строка (Терминал). Оболочка во многом определяет богатые возможности и гибкость операционной системы Linux. Все, с чем Вы встретитесь в операционной системе Linux, - это файлы. Очевидно, что текстовый документ - это файл. Изображения, аудиоданные в формате МР3 и видеофрагменты - это несомненно файлы. Каталоги - это тоже файлы, содержащие информацию о других файлах. Дисковые устройства - это большие файлы. Сетевые соединения тоже файлы. Даже исполняемый процесс - это файл. С точки зрения операционной системы Linux файл представляет собой поток битов или байтов. Система не интересуется тем, что означает каждый байт. Это забота конкретных программ, выполняющихся в операционной системе Linux. Для операционной системы Linux и документ, и сетевое соединение всего лишь файлы. Как обрабатывать текстовый документ, знает редактор, а сетевое приложение умеет работать с сетевым соединением.
В отличие от Windows и МасOS в операционной системе Linux имена файлов чувствительны к регистру символов. В частности, Вы можете встретить в одном каталоге все три файла которые приведены ниже в качестве примера:
Sit.txt
sIt.txt
SIT.txt
С точки зрения файловой операционной системы Linux - это различные имена файлов. Если вы попытаетесь создать файлы с этими же именами в Windows или МасOS, то вероятнее всего попытка увенчается провалом, и система предложит Вам выбрать другое имя для файла.
Чувствительность к регистру символов также означает, что при вводе команд они должны в точности совпадать с именами файлов, поддерживающих их. Так, например, удаляя файл с помощью команды rm, нельзя вводить RM, Rm или rM. Надо также следить за написанием имен, задаваемых в качестве параметров. Если вы захотите удалить файл «SIT.txt», а укажете имя Sit.txt, вы лишитесь совсем не того файла, с которым предполагали расстаться.
Список специальных символов которые не рекомендуется использовать в названиях файлов:
/ - Нельзя использовать ни при каких обстоятельствах
\ - Должен быть предварен таким же символом. Применять не рекомендуется
- - Нельзя использовать в начале имени файла или каталога
[] - Каждый из этих символов должен быть предварен обратной косой чертой. Применять не рекомендуется
{} - Каждый из этих символов должен быть предварен обратной косой чертой. Применять не рекомендуется
* - Должен быть предварен обратной косой чертой. Применять не рекомендуется
? - Должен быть предварен обратной косой чертой. Применять не рекомендуется
' - Должен быть предварен обратной косой чертой. Применять не рекомендуется
" - Должен быть предварен обратной косой чертой. Применять не рекомендуется
Групповые операции:
Предположим, что в одном из каталогов на вашем компьютере содержатся сто файлов с изображениями и два текстовых файла. Ваша задача удалить все файлы с изображениями за исключением двух текстовых файлов. Удалять файлы по одному - это утомительное занятие. В операционных системах Linux для автоматизации данного процесса можно применять символы групповых операций. Групповые операции задаются посредством звездочки (*), знака вопроса (?) и квадратных скобок ( [\ ] ).
Пример использования групповых операций:
Групповая операция с применение "*" - отмечает любое (в том числе нулевое) количество любых символов.
rm sit1*.* # Удаляться файлы : sit1.txt, sit1.jpg, sit11.jpg, sit123123.txt
rm sit*.jpg # Удаляться файлы : sit1.jpg, sit11.jpg
rm *txt # Удаляться файлы : sit1.txt, sit123123.txt
rm sit* # Удаляться файлы : sit1.txt, sit1.jpg, sit11.jpg, sit123123.txt
rm * # Удалятся все файлы в каталоге
Групповая операция с применение "?". Символ » ? » - соответствует одному произвольному символу.
rm sit1?.jpg # Удалится файл: sit11.jpg, но не sit1.txt, sit1.jpg, sit123123.txt
rm sit?.jpg # Удалится файл: sit1.jpg, но не sit1.txt, sit11.jpg, sit123123.txt
rm sit?.* # Удаляться файлы: sit1.txt, sit1.jpg, но не sit11.jpg, sit123123.txt
Групповая операция с применение "[ ]" . Квадратные скобки позволяют задавать один символ из набора или символ, принадлежащий определенному диапазону.
rm sit[0-1].txt # Удалится файл: sit1.txt, но не sit1.jpg, sit11.jpg, sit123123.txt
rm sit1[0-2].jpg # Удалится файл: sit11.jpg, но не sit1.jpg, sit123123.txt sit1.jpg
Основные консольные команды:
pwd — определить текущий каталог
cd [имя каталога] — осуществить переход в заданный каталог.
ls [имя каталога] — просмотреть список файлов и подкаталогов.
mkdir [имя каталога] — создать каталог с заданным именем.
cp <имя файла 1> <имя файла 2> — скопировать файл «имя файла 1» в файл «имя файла 2», например: cp first.txt copy1.txt.
mv <имя файла 1> <имя файла 2> — переименовать файл «имя файла 1» в файл «имя файла 2», например: mv first.txt orig.txt.
ln «имя файла» «имя ссылки» — создать жёсткую ссылку «имя ссылки» на файл «имя файла». Пример: ln orig.txt copy2.txt.
ln -s «имя файла» «имя ссылки» — создать символическую ссылку «имя ссылки» на файл «имя файла». Пример: ln -s orig.txt copy2.txt.
rm <имя файла> — удалить файл.
touch <имя файла> — создание файла.
man <название команды> — получение справочной документации о выбранной команде.
Изучение базовых команд Linux
Ниже приводится краткий обзор большинства стандартных команд, используемых при работе с файлами и директориями. Эти команды доступны при работе с любой системой Linux.
Кроме того, в данной главе обсуждаются понятия абсолютных и относительных путей, а также описывается методика использования механизма завершения путей командной оболочки bash.
Команда man
Вы можете ввести команду man с последующим именем интересующей команды (для которой вам хотелось бы получить справочную информацию) и начать чтение страницы руководства. Нажмите q для выхода из режима чтения страницы руководства
debia@debian:~$ man passwd # открывает первую найденную страницу руководства
Команда whatis
Для ознакомления с описанием страницы руководства следует использовать команду whatis с именем интересующей страницы руководства.
debia@debian:~$ whatis route
route (8) - show / manipulate the IP routing table
Команда pwd
С помощью команды pwd (расшифровывается как Print Working Directory - вывести информацию о рабочей директории) может быть получена информация о вашем текущем местонахождении в рамках файловой системы.
debia@debian:~$ pwd
/home/paul
Команда cd
Вы можете изменить вашу текущую директорию с помощью команды cd (расшифровывается как Change Directory - изменить директорию).
debia@debian:/$ cd /etc/
debia@debian:/etc$ pwd
/etc
debia@debian:/etc$ cd /bin
debia@debian:/bin$ pwd
/bin
debia@debian:/bin$ cd /home
debia@debian:/home$ pwd
/home
cdилиcd ~для быстрого перехода назад в вашу домашнюю директорию (/home/$<ваша_директория>)cd ..для перехода в директорию, которая находится над вашей текущей директорией
В Linux существуют абсолютные и относительные пути в рамках дерева директорий файловой системы. Если вы вводите путь, начинающийся с символа слэша (/), подразумевается, что путь будет указан относительно корневой директории файловой системы. Если же вы не начинаете ввод пути с символа слэша, подразумевается, что точкой отсчета будет текущая директория. В примере ниже показано, что текущей директорией является директория /home/paul. Для перехода из этой директории в директорию /home вам придется ввести команду cd /home вместо команды cd home.
debia@debian:~$ pwd
/home/paul
debia@debian:~$ cd home
bash: cd: home: Нет такого файла или каталога
debia@debian:~$ cd /home
debia@debian:~$ pwd
/home
При нахождении в директории /home вам придется ввести команду cd paul вместо команды cd /paul для перехода в поддиректорию paul текущей директории /home.
paul@debian8$ pwd
/home
paul@debian8$ cd /paul
bash: cd: /paul: Нет такого файла или каталога
paul@debian8$ cd paul
paul@debian8$ pwd
/home/paul
Утилита ls
Вы можете вывести список содержимого директории с помощью утилиты ls.
debia@debian:~$ ls
allfiles.txt dmesg.txt services stuff summer.txt
ls -a- часто используемым параметром утилиты ls является параметр -a, который предназначен для вывода информации обо всех файлах. Под выводом информации обо всех файлах подразумевается вывод информации в том числе и о скрытых файлах.
debia@debian:~$ ls
allfiles.txt dmesg.txt services stuff summer.txt
debia@debian:~$ ls -a
. allfiles.txt .bash_profile dmesg.txt .lesshst stuff
.. .bash_history .bashrc services .ssh summer.txt
ls -l- (в качестве параметра использована строчная буква L, а не число 1) позволяет получить более подробный список файлов.
debia@debian:~$ ls -l
итого 17296
-rw-r--r-- 1 paul paul 17584442 сен 17 00:03 allfiles.txt
-rw-r--r-- 1 paul paul 96650 сен 17 00:03 dmesg.txt
-rw-r--r-- 1 paul paul 19558 сен 17 00:04 services
drwxr-xr-x 2 paul paul 4096 сен 17 00:04 stuff
-rw-r--r-- 1 paul paul 0 сен 17 00:04 summer.txt
ls -lh- позволяет выводить числовые значения (соответствующие размерам файлов) в формате, лучше читаемом человеком.
debia@debian:~$ ls -l -h
итого 17M
-rw-r--r-- 1 paul paul 17M сен 17 00:03 allfiles.txt
-rw-r--r-- 1 paul paul 95K сен 17 00:03 dmesg.txt
-rw-r--r-- 1 paul paul 20K сен 17 00:04 services
drwxr-xr-x 2 paul paul 4.0K сен 17 00:04 stuff
-rw-r--r-- 1 paul paul 0 сен 17 00:04 summer.txt
Утилита mkdir
Обход дерева директорий файловой системы Unix является интересным занятием, но еще больший интерес представляет создание ваших собственных директорий с помощью утилиты mkdir. Вам придется передавать как минимум один параметр утилите mkdir, а именно, имя новой директории, которая должна быть создана. При этом следует серьезно задумываться перед использованием начального символа / в именах директорий.
debia@debian:~/NewFolder$ ls -a
. ..
debia@debian:~/NewFolder$ mkdir NewPapka
debia@debian:~/NewFolder$ ls -a
. .. NewPapka
mkdir -p- в случае использования параметра -p утилиты mkdir при необходимости будут создаваться родительские директории.
Утилита rmdir
В том случае, если директория пуста, вы можете использовать утилиту rmdir для удаления этой директории.
Утилита touch
Один из простых способов создания пустого файла заключается в использовании утилиты touch.
Данный пример начинается с открытия пустой директории, в которой с помощью утилиты touch создаются два файла, после чего выводится список созданных файлов.
debia@debian:~$ ls -l
итого 0
debia@debian:~$ touch file42
debia@debian:~$ touch file33
debia@debian:~$ ls -l
итого 0
-rw-r--r-- 1 paul paul 0 окт 15 08:57 file33
-rw-r--r-- 1 paul paul 0 окт 15 08:56 file42
Утилита rm
В том случае, если вам больше не нужен файл, следует использовать утилиту rm для его удаления. В отличие от некоторых графических пользовательских интерфейсов, интерфейс командной строки системы не предполагает использования таких хранилищ файлов, как корзина, предназначенных для последующего восстановления удаленных файлов. Если вы удалили файл с помощью утилиты rm, этот файл будет удален навсегда.
debia@debian:~$ ls
BigBattle.txt file33 file42 SinkoDeMayo
debia@debian:~$ rm BigBattle.txt
debia@debian:~$ ls
file33 file42 SinkoDeMayo
rm -i- для того, чтобы застраховаться от случайного удаления файла, вы можете использовать команду rm -i.rm -r- по умолчанию с помощью команды rm -r невозможно удалить непустые директории. Однако, утилита rm принимает параметры, которые позволят вам удалять любую директорию.rm -rf- позволяет удалять все элементы файловой системы (конечно же, в том случае, если вы имеете достаточные права для выполнения этой операции). Параметр f расшифровывается как force (принудительное выполнение операции), а параметр r - как recursive (рекурсивный обход директорий)
Утилита cp
Для копирования файлов и директорий следует использовать утилиту cp с аргументами, представленными путями к исходному и целевому файлам/папкам.
debia@debian:~$ ls
file42 SinkoDeMayo
debia@debian:~$ cp file42 file42.copy
debia@debian:~$ ls
file42 file42.copy SinkoDeMayo
cp -r- для копирования директорий целиком (параметр -r позволяет осуществлять рекурсивное копирование всех файлов из всех поддиректорий).cp -i- для предотвращения перезаписи существующих файлов в ходе использования утилиты cp следует использовать параметр -i (для активации интерактивного режима копирования).
Утилита mv
Утилита mv используется для переименования файлов или для перемещения файлов в другие директории.
debia@debian:~$ ls
dir33 dir42 file42 file42.copy SinkoDeMayo
debia@debian:~$ mv file42 file33
debia@debian:~$ ls
dir33 dir42 file33 file42.copy SinkoDeMayo
В том случае, если вам необходимо переименовать один файл, утилита mv является предпочтительным инструментом. Эта же утилита mv может быть использована и для переименования директорий.
debia@debian:~$ ls -l
итого 8
drwxr-xr-x 2 paul paul 4096 окт 15 09:36 dir33
drwxr-xr-x 2 paul paul 4096 окт 15 09:36 dir42
-rw-r--r-- 1 paul paul 0 окт 15 09:38 file33
-rw-r--r-- 1 paul paul 0 окт 15 09:16 file42.copy
-rw-r--r-- 1 paul paul 0 май 5 2005 SinkoDeMayo
debia@debian:~$ mv dir33 backup
debia@debian:~$ ls -l
итого 8
drwxr-xr-x 2 paul paul 4096 окт 15 09:36 backup
drwxr-xr-x 2 paul paul 4096 окт 15 09:36 dir42
-rw-r--r-- 1 paul paul 0 окт 15 09:38 file33
-rw-r--r-- 1 paul paul 0 окт 15 09:16 file42.copy
-rw-r--r-- 1 paul paul 0 май 5 2005 SinkoDeMayo
mv -i- утилита mv поддерживает параметр -i по аналогии с утилитами cp и rm.
Задание
- Откройте терминал.
- Ознакомьтесь с возможностями команды pwd c помощью команды man:
- Определите текущий каталог, в котором вы находитесь командой pwd:
- Ознакомьтесь с возможностями команды cd c помощью команды man:
- Перейдите в корневой каталог командой cd
- Ознакомьтесь с возможностями команды ls c помощью команды man:
- Просмотрите содержимое корневого каталога командой ls:
- Сделайте копию экрана для использования в отчете.
- Вернитесь в домашний каталог, используя команду cd без параметров:
- Ознакомьтесь с возможностями команды mkdir c помощью команды man:
- Создайте каталог «test», используя команду mkdir:
- Перейдите в каталог «test», используя команду cd:
- Просмотрите содержимое каталога, используя команду ls:
- Создайте каталог «test2», используя команду mkdir:
- Ознакомьтесь с возможностями команды touch c помощью команды man:
- Создайте файл «text» в каталоге «test2» используя команду touch:
- Ознакомьтесь с возможностями команды mv c помощью команды man:
- Переименуйте файл «text» в «textSIT» используя команду mv
- Ознакомьтесь с возможностями команды cp c помощью команды man:
- Скопируйте файл «textSIT» в каталог «test2» под именем «copy.txt», используя команду cp:
- Ознакомьтесь с возможностями команды ln c помощью команды man:
- Создайте жесткую ссылку «link» на файл «copy.txt» используя команду ln:
- Создайте символическую ссылку «simlink» на файл «copy.txt» используя команду ln:
- Просмотрите результаты в текущем каталоге при помощи команды ls с аргументами la:
- Удалите созданные вами файлы и ссылки используя команду rm