Терминал

Работата с УСУ (а и с всяка друга модерна Линукс дистрибуция) обикновено протича изцяло в графичен режим. При него се извършват действия като цъкане с мишката, посочване и взаимодействие с различни елементи, влачене, пускане и много други, без тези действия да изискват някаква кой знае каква предварителна подготовка или знания, освен някаква основна компютърна грамотност. В този начин на работа няма нищо лошо, дори напротив - именно леснотата му е го е направила повсеместен и препочитан.

Въпреки това, вие по всяко време може да разчитате на още един, традиционен за Линукс начин на взаимодействие, а именно т.нар. команден интерфейс. При него за да извърши компютъра някакво действие, вие трябва да му напишете команда. Този подход изисква да имате по-сериозни познания, тъй като все пак трябва да запомните определени команди и начина им на използване. Негово предимство е, че с правилните команди, често този начин на работа е по-бърз от работата с графичен интерфейс. Друго предимство е, че можете да го използвате в случаи когато поради системна грешка или срив, нямате достъп до графичния интерфейс. Още едно полезно приложение, е проследяването на грешки в различните програми.

Това ръководство ще ви предложи само най-необходимата основа за работата с команден интерфейс, като ви даде неголям брой практични примери.

- Стартиране на терминал

Най-лесният начин да преминете в команден режим на работа е да пуснете Терминал от Програми - Помощни програми. Ще видите сходен прозорец:
Още тук разполагате с информация, представена от реда svetli@nc8430:~$
svetli - Името текущия потребител, в примера - svetli;
nc8430 - host името на системата, т.е. това под което сe вижда в локалната мрежа;
~ - Папката, в която е отворен терминала. В примера това е домашната папка на потребителя. Това е и стандартната начална папка за работа, при всяко стартиране на терминала. Ако по-късно промените папката, напр. на Документи, тук ще се покаже:

    svetli@nc8430:~/Документи$

$ - Подсказва ви, че имате права на обикновен потребител. Прието е този тип потребител да се обозначава със знака $, а потребителят с пълни права (наричан още root или super user) - с #. По-късно в това ръководство ще видите как да преминавате между тези два типа потребители. Това е важно, защото някои от командите се изпълняват предимно от потребител с пълни права, а за други това не е желателно.
Това не е единствения начин да преминете в команден режим. По всяко време можете да натиснете Ctrl+Alt + F1 (или F2 до F6), което ще активира този режим. При преминаването текущата ви графична среда ще изчезне, но не се тревожете - тя не е спряна. Докато сте в този режим целия екран е черен, с изключение на командния ред, който очаква вашите команди:
С клавишите F1 до F6 можете да отваряте до 6 такива екрана. На всеки от тях можете да изпълнявате различни команди и дори да се впишете като различен потребител. Ако сте отворили няколко екрана, превключването между тях става чрез натискането на Ctrl+Alt + съответния функционален клавиш от 1 до 6. За да се върнете обратно към графичната среда натиснете Alt+F7.
Друга ситуация, при която можете да се сблъскате с командния интерфейс, е при срив на системата, когато тя се стартира в безопасен режим или при възникнала сериозна грешка на твърдия диск, която изисква вашата намеса. Независимо от начина, принципа на работа, описан по-долу в това ръковоство един същ.

- Въвеждане и изпълнение на команди

Това е същинската част от работата. Начините за изпълняване на команди са много:

- Изпълняване на единична команда - Въвеждате само една команда без допълнителни аргументи или опции. Пример за такава команда е:

    svetli@nc8430:~$ls

Горната команда ще покаже всички файлове и папки (без тези, започващи с точка, т.е. скрити) в текущата папка.

- Изпълняване на единична команда с аргумент - Пример за такава команда е:

    svetli@nc8430:~$ ls ~/Изображения/

Горната команда ще покаже всички файлове и папки (без скритите) в папката Изображения.

- Изпълняване на единична команда с опция - Към командата добавяте специфична опция, която допълнително дефинира извършваното действие. Пример:

    svetli@nc8430:~$ ls -a

Горната команда ще покаже всички файлове в текущата папка, включително скритите. Към командите могат да се добавят и множество опции и аргументи, стига те да не са противоречащи една на друга.

- Изпълняване на поредица от команди - Можете да въведете две или повече команди с различни аргументи и опции, които да се изпълняват една след друга. Пример за такава команда е:

    svetli@nc8430:~$ sudo apt-get update && apt-get upgrade

Горните команди ще презаредят информацията за налични обновления, след което евентуалните обновления ще бъдат приложени незабавно.
Обърнете внимание на &&. Когато тези два знака се изпишат така, те указват, че втората команда ще се изпълни само ако първата е завършила успешно.
Когато трябва да се изпълнят последователно команди, незивисимо от това дали предходната е изпълнена успешно, командите се разделят със знака ;.
Пример:

    svetli@nc8430:~$ sudo apt-get upgrade ; apt-get autoremove

Горните команди ще обновят софтуера на системата, след което непотребните пакети ще бъдат премахнати.
Възможно е и да се подаде изпълнението на дадена команда, само ако предходната е завършила с неуспех. В такива случаи командите се разделят с || (две вертикални черти).
Пример:

    svetli@nc8430:~$ sudo apt-get upgrade || apt-get -f install

При горните команди, ако обновяването на системата е невъзможно поради възникнала грешка по време на процеса, ще се изпълни втора команда, която ще се опита да поправи грешката от първата.

- Получаване на помощ за командите

Тъй като командите са неизброимо много, не е реалистично да се очаква, че можете да запомните името, начина на използване и синтаксиса на всяка една от тях. За щастие можете много лесно да получите помощ по няколко начина.
На първо място, съществува лесен начин, с който системата ще се опита да ви помогне, когато не помните името на цялата команда. За целта е необходимо само да напишете част от командата, след което да натиснете еднократно клавиша Tab. Ако с изписаните букви съществува само една команда, тя ще бъде дописана автоматично. Ако след еднократното натискане не се случва нищо, натиснете Tab повторно, за да се покаже списък с възможните команди.
Пример:

    svetli@nc8430:~$ ex
    ex                             expand
    exchange-connector-setup-2.28  expect
    exe                            expiry
    exec                           export
    exifautotran                   expr
    exiftool                       extlinux
    exiftran                       extractkmdr
    exit                           extractor
    exiv2                          extresso

Друг механизъм за помощ, е когато напишете командата грешно и системата ви подскаже вероятни варианти.
Пример:

    svetli@nc8430:~$ lesss --help
    No command 'lesss' found, did you mean:
    Command 'less' from package 'less' (main)
    lesss: command not found

В случая системата ви подсказва, че най-вероятно сте допуснали грешка в изписването и командата, която сте искали да изпълните всъщност е less, а не lesss.
Друг начин да научите повече за дадена команда, е да въведете името ѝ, последвано от опцията --help.
Пример:

    svetli@nc8430:~$ gzip --help
    Usage: gzip [OPTION]... [FILE]...
    Compress or uncompress FILEs (by default, compress FILES in-place).

    Mandatory arguments to long options are mandatory for short options too.
      -c, --stdout      write on standard output, keep original files unchanged
      -d, --decompress  decompress
      -f, --force       force overwrite of output file and compress links
      -h, --help        give this help
      -l, --list        list compressed file contents
      -L, --license     display software license
      -n, --no-name     do not save or restore the original name and time stamp
      -N, --name        save or restore the original name and time stamp
      -q, --quiet       suppress all warnings
      -r, --recursive   operate recursively on directories
      -S, --suffix=SUF  use suffix SUF on compressed files
      -t, --test        test compressed file integrity
      -v, --verbose     verbose mode
      -V, --version     display version number
      -1, --fast        compress faster
      -9, --best        compress better
        --rsyncable   Make rsync-friendly archive
    With no FILE, or when FILE is -, read standard input.

    Report bugs to <bug-gzip@gnu.org>.

Не на последно място по важност, е възможността да погледнете във вградената документация, идваща със всяка Линукс дистрибуция. В терминала тя се извиква, като изпълните командата:
man <име-на-командата>
Това ще ви отвори своеобразно подробно ръководство, където ще можете да прочете по-подробно интересуващата ви команда.
Пример:
svetli@nc8430:~$ man xrandr
Горната команда ще запълни екрана с информация за xrandr:
Можете да прелиствате съдържанието страница по страница, като използвате клавишите PageUp/PageDown или ред по ред с помощта на горна/долна стрелка. Когато приключите с четенето натиснете клавиша Q,за да затворите документа.

- Кратък списък с команди

По-долу ще бъдат изброени някои често срещани, полезни и интересни команди, които можете да опитате.

- Работа с папки и файлове

- pwd - Показва в коя папка се намирате в момента.

- ls - Показва съдържанието на текущата папка. В зависимост от подадените ѝ опции, може да дава различен изглед. Например ls -l ще даде пълен списък на папките в текущата папка, файловете и правата им за достъп; ls -a ще покаже цялото съдържание на текущата папка, включително скритото. В командата е възможно да се укаже и съдържанието на коя папка да се покаже, например ls -a /etc/apt/.

- cd - Смяна на активната папка. Например cd /usr/share/skel ще превключи към тази папка. Възможни са и други варианти: cd~ ви връща в домашната папка; с cd.. отивате една папка по-нагоре в йерархията.

- cp - Копира файл от една папка в друга. Например cp /home/svetli/Плот/me.jpeg /home/svetli/Изображения/ ще копира файла me.jpeg от работния плот на потребителя svetli в папката Изображения. Ако желаете да копирате цяла папка трябва да укажете това с опцията -r (рекурсивно) след командата. Например cp -r /home/svetli/Плот/test/ /home/svetli/Плот/test1 ще копира цялата папка test и на копието ще сложи име test1.

- mv - работи като cp, само че не копира, а направо премества указания файл на ново място. Например mv /home/svetli/Плот/me.jpeg /home/svetli/Изображения/ ще премести файла me.jpeg от работния плот на потребителя svetli в папката му с изображения. Ако желаете да преместите цяла папка, след използвайте mv -r <име-на-папката>. Ако оригиналното и новото местоположение съвпадат, то командата mv прави преименуване на файла/папката.

- rm - Изтрива указания файл. При тази командна е особено важно да се уверите, че правилно сте задали пътя за достъп до посочения обект за изтриване. В противен случай можете да изтриетете съдържание, което всъщност ви трябва.
- rmdir - Изтрива указана папка, ако е празна. За да изтриете папка и цялото и съдържание, използвайте rmdir -r <име-на-папката>.
- mkdir - Създава нова папка на посоченото местоположение. Например mkdir /home/svetli/Музика/GOA ще създаде нова папка с име GOA в папката Музика на потребителя svetli.
- mc - стартира предварително инсталиран в УСУ двупанелен файлов мениджър.

- Търсене на файлове и папки

- locate - Една от най-лесните за изпълнение команди. Например locate index.html ще ви покаже незабавно списък с местоположенията на всички файлове с това име. Ако показаният брой е голям, можете да използвате опцията | less ето така - locate index.html | less. По този начин резултатите ще показват на групи на екрана. При търсенето е възможно да използвате и маски. Например, ако сте сигурни, че търсите PDF файл в папката home, не помните името му, трябва да изпълните командата locate /home *.pdf | less. Тя ще ви покаже на порции всички PDF файлове в тази папка. С тази команда се търси светкавично, но тя има и недостатъци. Един от тях е, че програмата всъщност разчита на ежедневно опресняваща се база данни. Поради това, ако са настъпили промени между двете обновявания на базата данни, те няма да са сред върнатите резултати от locate.
- find - С тази команда търсенето става в момента на изпълнението ѝ, т.е. не разчитате на база данни. Най-простото ѝ приложение е да изпълните find <път-за-достъп> -name <име-на-файл>, например find /usr/share -name screensaver.png. По този начин ще се покажат всички файлове с име screensaver.png, които се намират в папката /usr/share. Възможно е и да прецизирате търсенето си, например като посочите и точно какво търсите - файл, папка или символна връзка. Това става като към командата се добави опцията -type, последвана от f за файл, d за папка и l за символна връзка. Пример за такава команда е find / -type d -name alsa. Така ще се направи търсене в главната папка (и всичките ѝ подпапки) за папка на име alsa. Друг полезна опция към командата е -size, последвана от -<размер-на-файла> или +<размер-на-файла>. Ето един пример: find /home/svetli/Музика -size +100M -name *mp3. Така ще се извърши търсене в папката Музика на потребителя svetli за всички файлове в MP3 формат които надвишават 100 мегабайта. Ако се използва минус пред стойността, съответно ще се търсят файлове по-малки от 100 мегабайта. Може да използате и буквата к след размера, за да определите големината в килобайти.
- grep - Много полезна команда в случаите, в които знаете част от съдържанието на файла, но не знаете точното му име и местоположението. Пример за такава команда е grep "snd-hda-intel" /etc -r. Така се прави рексурсивно търсене във всички подпапки на папката /etc за файлове, които в съдържанието си имат израза snd-hda-intel.

- Получаване на системна информация

- uname - Показва най-обща информация за системата, като име на системата, име на ядрото, версия на ядрото и някои други. Възможно е да се изпълнява с различни опции. Например uname -a ще даде цялата обща информация, а uname -r ще покаже коя версия на ядрото използвате в момента.
- uptime - Показва от колко време е пусната системата, както и друга сбита информация.
- hwinfo - Служи за извеждане на списък с всичкия засечен хардуер на системата. Изпълнена без никаква допълнителна опция, командата извежда подробен списък. По-кратък списък можете да получите ако изпълните hwinfo --short. За по удобно преглеждане на показаната информация, можете да я запишете в прост текстов файл с командата hwinfo --short > hwinfo-results. Тя ще покаже системната информация, след което щея изнесе в текстов файл с име hwinfo-results.
- lsusb - Предоставя списък с всички засечени USB устройства.
- lspci - Предоставя списък с всички засечени PCI устойства.
- lspcmcia - Предоставя списък с всички засечени PCMCIA устройства.
- lshw - Подобно на hwinfo и тази команда може да служи за извеждане на подробна системна информация.
- du - Показва заеманото дисково пространство на даден дял или папка. Добре е да се използва с опциите -s -h, тъй като те дават най-сбита и четима информация Пример: du -s -h /home. В този случай папката /home ще бъде сканирана и резултатът ще бъде показан - например 8,1G /home.
- df - Подобна на горната команда, с тази разлика, че показва заетото дисково пространство на всички монтирани дялове. Най-добре е да се използва във вида df -h, за най-кратко и ясно предстваяне на информацията.
- top - показва списък с активните процеси и натоварването на системата. Самата команда е гъвкава и позволява множество конфигурации. Ето типичният ѝ изглед:

Сред полезните ѝ възможности са например следене натоварването само на един процес - top -p <идентификатор-на-процеса>. Идентификатора на процеса се показва в колоната PID. Ако използваме примерния екран по-горе, изпълнението на командата top -p 5383 ще ни показва динамично как се променя натоварването на системата, предизвикано от уеб четеца Firefox. Друга възможност е да се показва натоварването, предизвикано от конкретен потребител. Това става с командата top -u <име-на-потребителя>. Например top -u svetli ще показва само процесите, стартирани от потребителя svetli.

- Управление на потребителски права и групи

- sudo - Eдна от най-често използваните команди, когато става дума за системни настройки. С нея се изпълняват една или повече команда с права на супер потребител (наричан още root). Синтаксисът ѝ е sudo <име-на-команда>. След изпълнението на sudo и преди да се пристъпи към реалното изпълнение на командите след нея, ще бъдете подканени да въведете администраторската си парола. Това е паролата, която сте определили при инсталирането на системата (в случай, че не сте я сменили след това).

- su - Последвана от името на потребител, служи да превключване към изпълнение на команди от негово име. Например su svetli ще превключи терминала да изпълнява команди от името на потребителя svetli.
- passwd - Служи за смяна на паролата на текущия потребител. Изпълнена със sudo passwd <име-на-потребител>, се използва за смяна паролата на друг потребител от системата. Последното може да е полезно когато имате пълни права върху система, в която даден потребител си е забравил паролата.
- adduser - Изпълнението ѝ е винаги предхождано от sudo и служи за създаване на нов потребител на системата. След изпълнението на командата, конзолен съветник ще ви преведе през няколко стъпки за задаване на парола и данни за новия потребител. Например sudo useradd lokster ще създаде нов потребител на системата с име lokster.
- deluser - Команда с обратното действие на горната - служи за изтриване на потребители.
- chown - Изпълнява се със sudo. С нейна помощ се променя собственика на даден файл или папка. Използва се формата sudo chown -R <потребител><група> <име-на-файл>. Ето един пример за такава команда: sudo chown svetli.svetli -R /Public. В него цялата папка/Public и прилежащите ѝ подпапки и файлове (заради това е -R) ще станат собственост на потребителя svetli от групата svetli.

- Управление на софтуера

Забележка: всички команди по-долу се изпълняват винаги със sudo.

- apt-get - Конзолно приложение, отговарящо за управлението на софтуера. Обикновено след него се изписват допълнителни команди и опции, които допълнително определят какво да се изпълни. По-често използваните са:

- apt-get update - Обновява базата данни с наличния софтуер, като изтегля информация за последните версии от настроените софтуерни хранилища в /etc/apt/sources.list. На същите хранилища разчита и графичния мениджър на пакети Synaptic.
- apt-get upgrade - Надгражда всички съществуващи приложения, за които има нова версия. Ако има нова версия на дадено приложение, която изисква да бъдат инсталирани/премахвани пакети, приложението се запазва в настоящата си версия и не се обновява.
- apt-get dist-upgrade - Подобна на предходната, с тази разлика, че ако новите версии на приложенията изискват да се махат/слагат допълнителни пакети, тези действия се извършват.
- apt-get install <име-на-пакета> - Използва се за инсталиране на едно или повече приложения (отделени с интервал). Пример: apt-get install firefox
- apt-get remove <име-на-пакета> - Извършва премахване на едно или повече приложения.
- apt-get purge <име-на-пакета> - Подобна на горната, но при нея се изтриват всякакви остатъци и конфигурационни файлове, свързани с дадения пакет.
- apt-get clean - Изчиства кеша с изтеглените пакети, намиращ се във /var/cache/apt. Това може да освободи много място, особено на отдавна инсталирани системи.
- apt-get autoclean - Подобна на горната команда, с тази разлика, че от кеша се изтриват само вече остарелите и ненужни пакети.
- apt-get autoremove - Тази команда премахва всички пакети, които вече не са необходими на системата, не са част от никакви зависимости и генерално са безполезни.
- apt-get -f install - Използва се в ситуации, когато по време на надграждането на дадени пакети се е появила грешка, пречеща на обновяването да продължи.

- dpkg - Друго приложение с голям набор от команди. Някои от тях са:

- dpkg --install <име-на-deb-файл> - Служи да ръчно инсталиране на предварително свален пакет в DEB формат (стандратния формат за инсталиране в УСУ, Убунту, Debian и много др. Линукс дистрибуции). С помощта на маска може да се укаже и инсталиране на множество файлове в deb формат. Например изпълнението на sudo dpkg --install /home/svetli/Свалени/*.deb ще инсталира всички deb файлове, намиращи се в указаната папка;
- dpkg-reconfigure <име-на-инсталиран-пакет> - Тази команда служи за преконфигуриране на по-рано инсталиран пакет. Подобна процедура може да се наложи, ако потребителя се съмнява, че дадено приложение не работи коректно и иска да го инсталира отново, така, както го е направил при първоначалното инсталиране;

- Мрежови инструменти

- ping - Позволява ви да направите мрежова заява към отдалечен компютър (посочен с IP адрес или хост име) или уеб сайт и връща статистика за получени/изгубени пакети. Пример: ping www.google.bg;
- ifconfig - Показва информация за всички или даден мрежови интерфейс и позволява конфигурирането му. Изпълнението на командата дава информация за всички мрежови интерфейси. С помощта на допълнителни опции са възможни още действия:

- ifconfig <мрежови-интерфейс> <IP-адрес> - Служи за ръчно задаване на IP адрес на указания мрежови интерфейс. Пример: ifconfig eth0 192.168.0.5;
- ifconfig <мрежови-интерфейс> netmask <маска> - Променя мрежовата маска на даден мрежови интерфейс. Пример: ifconfig eth0 netmask 255.255.255.0;

- ifup - Следвана от името на мрежови интерфейс, командата служи за активирането му.
- ifdown - Обратна на горната команда;
- pppoeconf - Стартира конзолен помощник за настройка на PPPoE свързване;

- Управление на звука

- alsamixer - Стартира конзолно приложение, даващо достъп до настройките на засечената звукова карта;
- alsactl - Позволява да се изпращат различни настройки към звуковата карта някои възможните са:

- alsactl strore - Съхранява текущите настройки на звуковата карта;

- alsactl init - Възстановява първоначалните стандартни настройки на звуковата карта;

- speaker-test - Използва се за тест на настройката на отделните канали при конфигурации с различен брой канали 2, 4, 5.1 и др. По-долу ще бъдат показани няколко примера, как да проверите дали каналите ви са настроени правилно ако имате дву-, четири- и 5.1 канална система. При всеки от тях запис на човешки глас ще бъде пуснат последователно на различните канали.

- speaker-test -c2 -l1 -twav - Тест на двуканална конфигурация;
- speaker-test -c4 -l1 -twav - Тест на четириканална конфигурация;
- speaker-test -c6 -l1 -twav - Тест на 5.1 канална конфигурация;

- Други команди

- date - Показва текущата дата;
- cal - Показва месечен календар. Изпълнението на cal -y показва годишен календар;

Текстовото съдържание е достъпно при условията на Лиценза за свободна документация на ГНУ, версия 1.2 или коя да е следваща, публикувана от Фондацията за свободен софтуер; без непроменяеми раздели, без предни и задни корици.