From 65dfb21ce4bfd6c9b3d1628adeee0acfc423b2b5 Mon Sep 17 00:00:00 2001 From: Yaroslav Date: Sun, 12 Apr 2020 03:44:50 +0300 Subject: migrated all posts from 2018 --- .../2018-11-05_intro-to-linux-and-bash/index.ru.md | 271 +++++++++++++++++++++ 1 file changed, 271 insertions(+) create mode 100644 content/weblog/2018-11-05_intro-to-linux-and-bash/index.ru.md (limited to 'content/weblog/2018-11-05_intro-to-linux-and-bash/index.ru.md') diff --git a/content/weblog/2018-11-05_intro-to-linux-and-bash/index.ru.md b/content/weblog/2018-11-05_intro-to-linux-and-bash/index.ru.md new file mode 100644 index 0000000..e9ba17d --- /dev/null +++ b/content/weblog/2018-11-05_intro-to-linux-and-bash/index.ru.md @@ -0,0 +1,271 @@ ++++ +title = "Intro to Linux and the Bash command line" +date = 2018-11-05T23:53:00Z ++++ + +Недавно я решил познакомить друга с великолепным миром Линукса, и как например, +человек переезжает в совсем новый город, его нужно познакомить с городом, как +передвигаться по городу, где все нужные заведения и т.д. В принципе и также +когда человек переходит на новую ОС, ему нужно привыкнуть к новой среде, +создавать новые привычки, особенно когда это касается мира линукса. Собственно +этот туториал я пишу для моего друга и любого другого человека который +заинтересован Линуксом, но хотят научится использовать его более эффективно, +т.е. высше уровня рядового пользователя. + + + +Скорее всего вам уже известно, но Линукс на самом деле сам по себе не ОС, а ядро +которое используется совместно с набором комонентов и программ 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 +``` + +Но вы можете перейти к этой папке используя символ ~. Например, если в консоле +вы введете + +```sh +$ cd ~ +``` + +То это комманда вас переместит в вашую домашнюю папку (например, /home/user). + +## Терминал - Bash + +Самая полезная программа в линуксе, это скорее всего терминал. Да, рядовой +пользователь может и без нее жить, но это довольно гибкий и полезный инструмент. +Очень часто задачу на самом деле проще и быстрее реализовать в текстовой среде +чем в графической. Очевидно быстрее научится пользоватся графической средой, но +после того как вы научитесь пользоватся текстовой средой (терминал), вы сможете +работать более эффективно. + +Пример того как может выглядить ваша коммандная строка + +```sh +user@host:~$ +``` + +Первая часть - пользователь через которого вы зашли в систему. Вторая после +символа "@" - hostname, или название вашего устройства в сети. + +Вслед за ":" - директория в котором вы находитесь в данный момент. В этом случае +символ "~" указывает что мы находемся в домашнем каталоге нашего пользователя. +Чтобы посмотреть абсолютный путь, мы можем ввести комманду "pwd". + +```sh +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/, то мы можем просто ввести + +```sh +user@host:~$ cd Documents +user@host:~/Documents$ +``` + +А если бы нам надо было перейти на эту же папку с совершено другого каталога, то +нам бы пришлось ввести + +```sh +user@host:/var$ cd /home/user/Documents +user@host:~/Documents$ +``` + +Чтобы перейти на корневого каталога данной директории мы используем две точки +"..". Например + +```sh +user@host:~/Documents$ cd .. +user@host:~$ +``` + +".." означает корневой каталог данной директории. А также есть "." который +означает данная директория. + +Есть еще одна комманда, которая поможет вам при навигации в коммандой строке - +ls. Это комманда позволяет увидет содержимое данной директорий + +```sh +user@host:~/Documents$ ls +Books todo.txt picture.png +``` + +Она также принимает параметры и аргументы, например, чтобы увидеть скрытые +файлы, добавьте параметр "-a" + +```sh +user@host:~/Documents$ ls -a +Books .secret todo.txt picture.png +``` + +Скрытые файлы и каталоги в Линуксе начинаются с точкой (например, скрытый +каталог ".secret"). + +Также есть параметр "-l" который показывает содержимое в списке с +допольнительной информация, такой как разрещения (больше о них в следующей +части), количество файлов в каталоге, владелец файла (пользователь и группа), +размер, дата создания/модификации, и название самого файла. Например + +```sh +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 +``` + +Также параметры можно совмещать + +```sh +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 +``` + +Можно смотреть содержимое другого каталога не переходя на него, передавая его +название/путь в качестве последнего аргумента, например + +```sh +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/". + +Если будут несколько возможных вариантов автодополнения, то при одном нажатии +ничего не получится. Это значит, что либо нет такого каталога, либо есть +несколько возможных вариантов для автозаполнение. Во втором случае можно два +раза подряд нажать на клавишу "Таб" и баш вам покажет все возможные варианты, +например + +```sh +user@host:~$ cd Do +Documents/ Downloads/ +user@host:~$ cd Do +``` + +В таком случае мы, например, можем допечатать "cd Doc" и снова нажать на "Таб" и +у нас получится "cd Documents/". Однако, если при двойном нажатие ничего не +выводится, значит что вариантов для автозаполнения. + +В начале может показаться немного не понятно как система автозаполнения +работает, поэтому следует самому попробовать воспользоватся ей на практике +самому. + +На этом пока все, в следующей части расскажу побольше о работе в терминале. -- cgit v1.2.3