Введение в Linux и Bash

Published Nov 05, 2018 23:53 UTC on Yaroslav's weblog

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

Скорее всего вам уже известно, но Линукс на самом деле сам по себе не ОС, а ядро которое используется совместно с набором комонентов и программ GNU (вставьте здесь шутки и мемы про GNU/Linux (или GNU+Linux)), и есть несколько вариантов, или точнее - дистрибутивов, так называемого GNU/Linux.

Если только собираетесь установить Линукс и еще не решились какой дистрибутив выбрать, здесь маленткий, который может помочь вам выбрать:

  • Manjaro - Лично я пользуюсь этим дистрибутивом. У него есть несколько вариации с разными рабочими средами, например KDE или GNOME. Это дистрибутив "rolling release", что означает то, что у него будет более новые пакеты чем у классических дистро, в замен меньшей стабильности системы. Его довольно легко установить и использовать (если выбрать что-то вроде KDE или GNOME).
  • Ubuntu - Самый известный дистрибутив. Является один из самых легких в использовании. Более стабильный чем Manjaro (хоть и не всегда). Если вы просто хотите установить ОС в которой уже все настроена и не хотите выбирать рабочую среду (или вы не знаете что такое рабочая среда), скорее всего этот дистро для вас.
  • Debian - Один из самых стабильных дистро. Его не так легко установить как Ubuntu или Manjaro, но все же не сложно. Собственно Ubuntu разработан на основе Debian'а. Его скорее всего придется настроить под себя (лично меня не нравятся дефолтные настройки GNOME'а), но если вы хотите стабильный, провереный дистрибутив, то он для вас. Один минус для некоторых - поумолчанию не подключены репозитории с "несвободным" софтом, придется подключить самому если нуждаетесь в проприетарном софте.
  • Fedora - По стабильностью и сложности установки/пользования похож на Ubuntu (то есть довольный просто). У него такой же минус как и у Debian - отсуствия "несвобоного" софта в главном репозиторий.

Если при чтения списка вам словосочетание "рабочая среда" оказалась незнакомой, то грубо говоря, это набор программ которые предоставляют вам графический интерфейс для взаимодейстмия с системой. Как выглядит ОС не так сильно зависит от дистро, в основном оно зависит от рабочей среды.

Установили Линукс? Отлично, можем начать.

Файловая структура

Если вы привыкли работать с Windows, то есть некоторые моменты, то первое что вы заметите это то, что файловая структура выглядит немного иначе. Windows, из-за наследства MS-DOS, использует буквы для обозначения дисков, томов и файловых систем. В Линукс, как и в других Unix-подобных системах (например macOS, BSD) это немного иначе.

В Линуксе всё являтся файлом, в том числе и устройства подключенных к вашему компьютеру. От клавиатуры до накопителя. Папки (или директории) тоже файлы.

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

В Линуксе есть корневая папка

/

Внутри нее все файлы и поддиректории вашей системы.

В Линуксе, у каждого пользователя есть своя "домашняя папка". В вашей домашней папки будут размещаться ваши файлы, документы. Домашняя папка пользователя "user", например, будет распологатся здесь

/home/user

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

$ cd ~

То это комманда вас переместит в вашую домашнюю папку (например, /home/user).

Терминал - Bash

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

Пример того как может выглядить ваша коммандная строка

user@host:~$

Первая часть - пользователь через которого вы зашли в систему. Вторая после символа "@" - hostname, или название вашего устройства в сети.

Вслед за ":" - директория в котором вы находитесь в данный момент. В этом случае символ "~" указывает что мы находемся в домашнем каталоге нашего пользователя. Чтобы посмотреть абсолютный путь, мы можем ввести комманду "pwd".

user@host:~$ pwd
/home/user
user@host:~$

Символ "$" указывает на то что мы сейчас работаем через обычного пользователя. В Линуксе и во всех *nix системах, есть такая вещь как "супер пользователь", или root пользователь. У обычных пользователей нет полный доступ к важным файлам системы, или к файлам других пользователей. У root, доступ есть на всю систему. Когда вы авторизованные через root, символ "$" меняется на "#".

Но о правах и о root пользователе, попозже поговорим.

Чтобы открыть терминал, достаточно зайти в меню программ/приложений и нажать на его иконку или названия. Не могу объяснить подробнее где располагается ярлык терминала, поскольку оно будет отличатся в зависимо от дистрибутива.

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

Еще один момент, который стоит учесть при работе с Линуксом и *nix системами, это то, что реестр учитывается. Если в Windows'е файл README.TXT и readme.txt один и то же самый, то в Линуксе и Unix-подобных системах это разные файлы.

Для перемещения по директориям, мы пришем в коммандой строке "cd <путь>". Путь может быть относительным или абсолютным.

Относительный путь, это, например, название папки которая находится внутри той директории где мы находимся. Или иными словами, путь относительно того где мы находимся.

Абсолютный путь, это путь относительно корневой директории (или root на английском).

Например, если мы хотим переместится в каталог "Documents" внутри /home/user/, и мы уже в /home/user/, то мы можем просто ввести

user@host:~$ cd Documents
user@host:~/Documents$

А если бы нам надо было перейти на эту же папку с совершено другого каталога, то нам бы пришлось ввести

user@host:/var$ cd /home/user/Documents
user@host:~/Documents$

Чтобы перейти на корневого каталога данной директории мы используем две точки "..". Например

user@host:~/Documents$ cd ..
user@host:~$

".." означает корневой каталог данной директории. А также есть "." который означает данная директория.

Есть еще одна комманда, которая поможет вам при навигации в коммандой строке - ls. Это комманда позволяет увидет содержимое данной директорий

user@host:~/Documents$ ls
Books       todo.txt    picture.png

Она также принимает параметры и аргументы, например, чтобы увидеть скрытые файлы, добавьте параметр "-a"

user@host:~/Documents$ ls -a
Books    .secret    todo.txt    picture.png

Скрытые файлы и каталоги в Линуксе начинаются с точкой (например, скрытый каталог ".secret").

Также есть параметр "-l" который показывает содержимое в списке с допольнительной информация, такой как разрещения (больше о них в следующей части), количество файлов в каталоге, владелец файла (пользователь и группа), размер, дата создания/модификации, и название самого файла. Например

user@host:~/Documents$ ls -l
drwxr-xr-x  2 user user 4.0K Jul  18 04:20 Books
-rw-r--r--  1 user user 350  Jul  18 04:20 todo.txt
-rw-r--r--  1 user user 1.2M Jul  18 04:20 picture.png

Также параметры можно совмещать

user@host:~/Documents$ ls -al
drwxr-xr-x  2 user user 4.0K Jul  18 04:20 Books
drwxr-xr-x  5 user user 4.0K Jul  18 04:20 .secret
-rw-r--r--  1 user user 350  Jul  18 04:20 todo.txt
-rw-r--r--  1 user user 1.2M Jul  18 04:20 picture.png

Можно смотреть содержимое другого каталога не переходя на него, передавая его название/путь в качестве последнего аргумента, например

user@host:~/Documents$ ls -l Books
drwxr-xr-x 12 user user 4.0K Jul  18 04:20 Lessons
-rw-r--r--  1 user user 2.3M Jul  18 04:20 Crime and Punishment.pdf

Шорткаты

Перед тем как завершить первую часть этого туториала, хотелось бы написать про несколько "шорткатов" при работе в bash'е.

Первое это перемещение по истории коммандов. Каждый раз когда вы вводите комманду в терминале, она сохраняется в истории. Вы можете перемещаться по истории комманд терминала используя стрелки вверх и вниз. Чтобы последнюю комманду повторить, вы можете один раз нажать на стрелку вверх, а затем можно ее дописать или переписать и нажать клавишу ввода. Чтобы повторить более старые комманды, вы можете несколько раз нажать на стрелку вверх до нужной комманды, а стрелку вниз если пропустили нужную комманду.

Еще есть очень полезная штука в баше - автозполнение. При нажатии на клавишу "Таб" баш попытается заполнить для вас комманду.

Например, допустим вы находитесь в корневом каталоге, и вы хотите перейти в путь "/home/user/". Вы можете начать печатать "cd h" нажать на "Таб" и у вас получится "cd home/" затем дописать букву "u" и снова нажать на клавишу "Таб" и в итоге у вас получится "cd home/user/".

Если будут несколько возможных вариантов автодополнения, то при одном нажатии ничего не получится. Это значит, что либо нет такого каталога, либо есть несколько возможных вариантов для автозаполнение. Во втором случае можно два раза подряд нажать на клавишу "Таб" и баш вам покажет все возможные варианты, например

user@host:~$ cd Do
Documents/ Downloads/
user@host:~$ cd Do

В таком случае мы, например, можем допечатать "cd Doc" и снова нажать на "Таб" и у нас получится "cd Documents/". Однако, если при двойном нажатие ничего не выводится, значит что вариантов для автозаполнения.

В начале может показаться немного не понятно как система автозаполнения работает, поэтому следует самому попробовать воспользоватся ей на практике самому.

На этом пока все, в следующей части расскажу побольше о работе в терминале.