Ubuntu.bg, Статии|21.10.2009 15:19 Прочетено 2 970 пъти

Linux – Bourne Again Shell(bash) команди или как да работим с конзолата?

Как да започна…? Добре, ще опитам така:

Поради големият интерес или по-скоро, поради големият страх от конзолата/терминала в Линукс, реших да напиша малко разяснения или въведение за читателите и бъдещи фенове, в това как да използват най-мощното средство в Линукс.


shellSkull

Но първо малко „бла-бла“ приказки, както винаги…


Историята – тип „Имало едно време…“

Bash или съкратеното от Bourne Again Shell е команден интерпретатор, използван за редица операции изпълнявани в конзолен режим или иначе казано в режим без графична среда. В системите, които са UNIX или Linux-базирани, командният интерпретатор изпълнява функцията на „преводач“ между потребителя и ядрото на операционната система, както и за много други неща. Един от първите такива интерпретатори е бил Bourne shell (sh), който се използва и до днес (ще покажа примерчета по-късно). Друг широко разпространен интерпретатор е C shell (csh) и т.н.

Да пристъпим към съществото на приказката, но преди това няколко уточнения… По-надолу в статията ще използвам думата shell (шел за по-бързо) за „обвивката“ на потребителите. Има два, а при някои системи и по няколко вида shell-ове – потребителски и root shell(root – това е най-пълноправният потребител в системата). Тези шелове имат специфични обозначения, като например потребителският шел изглежда така “ ventsi@debian:~$ “ (завършва с $), а root шела така – „root@debian:~#“ ( # накрая).

Всичко в Линукс е или файл или процес. Процеса е извикана програма/код, която се стартира с определен PID (идентификационно номерче). Файл е колекция или сбор от данни, които са написани от потребител използващ някакъв текстов редактор, компилатор и прочее. Всичко това се разпределя в директории, които съдържат информация за нещата в тях.

Цялата идея на горният абзац е да покаже, че в *nix(всичко, де що шава под Linux, Unix и други, ще съкращавам *nix) базираните системи използват така наречената „дървовидна структура“, т.е. всичко е на определени нива (директории и поддиректории, както е при DOS).

Отплеснах се малко от същината на статията, та затова ще започна направо с

Практиката.

Когато един потребител отвори дадено приложение, той просто извиква написан код, който се изпълнява посредством изпратена команда към командният интерпретатор и т.н.

Както казах по-горе, всичко е подредено в „дървовидна структура“.

Нека да започнем с едно примерче. Например искаме да видим какво съдържа текущата директория, посредством конзолен терминал:

Командата е ls (идващо от английското „list“ ).
shellCommands

На картинката се вижда резултата. Както казах по-нагоре, всяка команда е задачка за операционната система, която е предварително дефинирана в различни файлчета или пакети (можем да ги редактираме, защото са OpenSource в превод „Отворен Код“). Когато напишем ls, ние извикваме скрипт/код с предварително зададени възможни опции (буквичките „lsa“ след “ – „). Всяка команда си има така наречените „man pages“ (по-късно ще разкажа и за тях), чрез които можем да разберем повече за дадена команда, нейните опции, създатели и прочее.
В случая ls -lsa казваме на ls командата, да върне всички файлове, подредени в йерархия, като първо са директориите, след това файловете и т.н. Повече можете да прочетете на вашата ситема след като изпълните man ls (отваря manual pages за дадена команда – излизането от man става с натискане на клавиш Q).

shellCommands2

Върнатият резултат от командата е големина на файл, битове (дали е файл, кой може да го достъпва/права и други…), собственик, дата на създаване, час и име на файл с разширението му.

Както виждате има две директории (drwxr-xr-x, щом започва с d в първият символ, това значи, че е директория). Едната с име “ . “ е текущата директория. Другата с име “ .. “ е предишната в йерархията/дървовидната структура.

За да влезем в дадена директория с конзолата, правим така cd и името на директорията или пътят до нея (виж на картинката).

shellCommands3

За да се върнем назад, т.е. в предната директория правим така cd .. (виж снимката)

shellCommands4

Както се вижда на картинката, върнахме се от директория /home/ventsi/Desktop/nixCommands в предната/по-горната в йерархията, а в нашият случай това е /home/ventsi/Desktop .

Това до навигацията по директориите, останалото се учи в практиката, когато потрябва нещо по-сложно, например:

cd ~/Desktop/ && ls -lsah |grep nix*

shellCommands5

grep е приложение, което познава/търси даден текст или иначе казано нещо като много мощен филтър и не само (повече в описанието му – man grep).

Сега нека създадем малко файлчета в тази директория и да ги поманипулираме, какво ще кажете?

Създаване на файлче:

touch filename (това ще създаде файл с име filename), нека му зададем и разширение, просто за хубост touch filename.txt и да видим какво има в него посредством cat filename.txt
(виж снимката)

shellCommands6

cat filename.txt не върна нищо, което значи, че файлчето е празно – разбира се, нали не сме го напълнили с нито един байт…

Нека вкараме малко текст в този файл:
echo „Това тук е малко текст в този файл.“ > filename.txt

Ето го и резултата на снимка:
shellCommands7

Това е просто малко примерче на работа с файлове. Сега нека да „хванем“ няколко думички в даден файл:
(забележка: grep по подразбиране връща реда на който се намира даденият търсен символен низ…)

shellCommands8

Както забелязвате на картинката – grep върна само един ред, защото толкова има в даденият файл, който съдържа думата „Това“, а на следващият опит не върна нищо, защото не намира думата „това“.

Инструменти, които улесняват нашата работа с Shell-a.


Тук темата е малко по-обширна и много мога да пиша, но ще направя кратко въведение и описание на инструменти, които помагат за приятна и удобна работа с конзолата.

Файлов редактор vi/Vim

Vim е подобрената версия на vi – файлови редактори, които са мощни, поддържащи голям набор от екстри и улеснения за потребителите.

(снимка на vim и нашето файлче от по-горе)

shellCommands9

MidnightCommander (mc)

Файлов мениджър, който съдържа редица команди, които можем да напишем и на ръка, но определено е по-лесно да използваме интерфейс.

(снимка от mc )

shellCommands10

Lynx – конзолен web браузър.

Да, наистина съществува и такова животно, което се справя с повечето добре направени сайтове. Е, разбира се, не може да подкара флаш, поне аз не знам метод, ако е възможна такава гимнастика, но се съмнявам дълбоко.
Браузърчето е удобно, ако на отдалечен сървър няма монитор и се достъпва от разстояние – за конзолата е страхотно направено, но си е hardcore, определено.

(снимка от Lynx отворил google.bg)

shellCommands11

(снимка от Lynx отворил laptop.bg)

shellCommands12

Заключение.

Благодаря, че отделихте време да прочетете тази статия.
Надявам се да Ви е било интересно и полезно, това което написах по-горе. Не мога да обхвана всички неща, които може да ни предложи един shell като bash, затова написах фундаментални и много основни действия, които можем да извършим с всеки един шел. Скоро ще се разгърна в по-големи детайли и ще стане забавно. За ориентиране и книжки, които мога да предложа – повечето са безплатни, други не, но при женалие всичко може да се уреди.
За въпроси винаги съм отворен да отговоря и да помогна във форума на адрес.
За повече информация – скоро с разгърнати темички.

Венцислав Чочев

Още по темата:

  1. LINUX-BG : „Последната версия на Ubuntu 9.10 (Karmic Koala) вече е достъпна“
    Последната версия на Ubuntu 9.10 (Karmic Koala) вече е достъпна. Освен не малкият брой подобрения, както за десктоп, така и за сървъра, това издание включва...
  2. Portable програми за Linux
    Portable програмите не се нуждаят от инсталация, могат директно да бъдат стартирани от USB флаш устройство например. PortableApps.com е известен сайт с приложения за Windows,...
  3. Евтините Linux лаптопи ще ударят по OLPC
    С падането на цените на компонентите комерсиалните Linux лаптопи могат да затруднят усилията на инициативата „Лаптоп за всяко дете“ (OLPC), целяща да достави евтини компютри...

  • Сподели статията:
  • Facebook
  • Twitter
  • Delicious
  • Digg

Коментари през Facebook:

1 коментар

  • Простете, че съм невежа, но как да пусна от конзолата lynx и cm?

Напиши коментар