02 января 2013

Терминальные команды в Linux

Введение в терминал

Среди всех элементов системы Linux самым важным, пожалуй, является командная строка (bash-Bourne Again Shell) или Терминал:



Начинающим пользователям кажется, что они ни когда не прибегнут к помощи командной строки, а некоторые её просто боятся. Однако чем больший опыт они приобретают, тем чаще обращаются к терминалу.
С помощью командной строки можно выполнять действия, которые были бы не мыслимы при работе с графическим пользовательским интерфейсом. Оказывается, что многие действия гораздо быстрее и эффективнее выполнять, пользуясь командной строкой.
Командная строка используется во всех OS: Windows, MacOS X и Linux.
Многие начинающие пользователи могут возразить: "Так ведь в Windows мы не пользуемся командной строкой". И будут не правы, т.к. все действия по установке/удалению программ или другие системные изменения незримо протекают в терминале, не говоря уже о системных администраторах, которые очень часто прибегают к услугам командной строки.
Изначально окно терминала было отображено в первых мониторах компьютеров, ещё до того, как появились графические программы (GUI) и пока в обозримом будущем не видно чтобы его могло заменить что-то другое.

Терминальные команды

В системе Linux используются тысячи команд, которые совсем не обязательно знать простому пользователю, но иметь общее представление и знать некоторые, часто используемые, просто необходимо, т.к. волей - неволей вы с ними столкнётесь при настройке системы или установке нужной программы, отсутствующей в Центре приложений и т.д.
Я использую системы Ubuntu/Linux Mint и на их основе будут задействованы примеры, но думаю, что кроме команды sudo, остальное  применительно и к другим системам Linux.
В Ubuntu/Linux Mint окно терминала открывается нажатием клавиш Ctrl+Alt+T.

Обновление программ

Многие пользователи, наверное, выполняли не раз такие команды в терминале:

sudo apt-get update
sudo apt-get upgrade

Давайте разберём их более детально, чтобы понять что они собой представляют.
Прежде всего хотелось бы заметить, что  все команды написаны на английском языке и не просто "от фонаря", а в каждой заложен определённый смысл для её применения. И то что командная строка Linux очень чувствительна к регистру. Иными словами, данные команды написаны в нижнем регистре (строчными буквами), но если вы введёте идентичную команду, но в верхнем регистре (прописными буквами), то выполнить её не получится. Это нужно запомнить.

Команда sudo, это по сути аббривеатура, состоящая из следующих слов: super user do, что в переводе с английского буквально означает следующее:  super user - суперпользователь (администратор), do - делает. Т.е. когда данная команда присутствует в общей команде, то командной строке даётся понять, что выполнять её может суперпользователь (администратор), тот пользователь, который при установке системы был зарегистрирован и ввёл свой пароль:



Команда apt-get, которая следует после  sudo и пробела, состоит из двух слов через чёрточку, которая объединяет эти два слова в одну команду и буквально означает в переводе: склонен-выполнить.

Команда update, в переводе - обновление.

Итак  sudo apt-get update в преводе буквально - суперпользователь склонен-выполнить обновление.

После ввода данной команды и нажатия клавиши Enter, терминал запрашивает пароль. После ввода пароля и вновь нажатия Enter, начнётся процесс обновления списка пакетов.

Примечание. У терминала есть особенности после ввода команды с sudo, а именно когда вы вводите пароль, то он не отображается ни буквами, ни символами, поэтому нужно всегда обращать внимание на раскладку клавиатуры, в которой вы вводите пароль и другая, это после выполнения первой команды с присутствием sudo, последующие команды (даже если в них есть sudo), больше не требует ввода пароля в течении определённого времени (сохраняет открытой sudo-сессию) в этом же окне терминала, т.е подразумевая, что терминалом продолжает пользоваться суперпользователь (администратор).

Команда sudo apt-get upgrade очень похожа на предыдущую команду, где upgrade - модернизировать, усовершенствовать (систему). Данная команда, как правило выполняется после команды обновления. После того как команда выполнена, она выдаёт в терминале возможные пакеты для установки, т.е. модернизации, усовершенствования системы. Пользователю остаётся согласиться или нет с установкой данных пакетов.

Установка, удаление программ

Далее мы рассмотрим команды на установку и удаления программ (пример):

sudo apt-get install chromium-browser

sudo apt-get remove chromium-browser

Как видно команды очень похожи между собой, за исключением одного слова выделенного красным. В первой команде install - установить chromium-browser, а во второй remove - удалить chromium-browser

Таким образом устанавливаются и удаляются приложения (программы) и др. файлы в системе.
Если вы нашли на одном из сайтов похожую команду на установку программы и установили её, но программа вам не подошла и вы хотите удалить, достаточно в команде на установку изменить  install на remove и выполнить в терминале, как программа удалится.

Установка программ из стороннего репозитория

Теперь рассмотрим команды на установку и удаление программ с добавлением стороннего репозитория (пример):

sudo add-apt-repository ppa:upubuntu-com/gtk+3.6
sudo apt-get update
sudo apt-get install flatstudiodark-gtk

Прежде всего давайте выясним зачем подключать сторонний репозиторий? Репозиторий, это хранилище файлов на сайте разработчика. В данном случае, третьей командой мы хотим установить тему оформления, но её нет в Центре приложений, а значит нам нужно прежде подключить хранилище (репозиторий) с темой (первая команда), где add - добавить, ppa:upubuntu-com/gtk+3.6 - название репозитория, затем второй командой обновить список пакетов и уже третьей - установить сам пакет с темой.

Если данное приложение (в конкретном случае тема оформления) вам не понравилось и вы решили удалить его, то вы можете изменить команды на установку, чтобы они выглядели командами на удаление:

sudo apt-get remove flatstudiodark-gtk
sudo add-apt-repository --remove ppa:upubuntu-com/gtk+3.6
sudo apt-get update

Прежде нужно выполнить команду на удаление пакета с программой, где меняем install на remove, затем удаляем хранилище (репозиторий), добавив в команду --remove - удалить, т.к. хранилище теперь без надобности и обновляем систему последней командой.

Запуск графических программ с правами администратора.

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

gksudo nautilus

или

gksu nautilus

Где ввод пароля, в данном случае, будет происходить в графическом окне, а не в терминале.

Но вы можете указать дополнительно необходимый путь в команде, непосредственно к нужной папке:

gksu nautilus /usr/share/themes

В данной команде косой чертой (/) - слешем указывается терминалу, что нужно перейти в следующую за ним папку.

Запуск программ из терминала командой

В системе Linux вы можете запустить любую программу из терминала установленную в вашей системе, главное знать её правильное название. Многие программы состоят из одного слова-названия, а некоторые из двух или трёх слов. Например: Nautilus; Ubuntu Tweak; Gnome Tweak Tool. Если мы введём в терминал название команд так, как они написаны, то не сможем открыть ни одно из приложений. Ещё раз повторюсь, что терминал очень чувствителен к регистру, т.е. команду нужно вводить только в нижнем регистре (строчными буквами) и обязательно монолитной, через чёрточку, если она состоит из нескольких слов (примеры):

nautilus

ubuntu-tweak

gnome-tweak-tool

Таким образом вы сможете открыть приложения, но если вы закроете терминал, то закроется и программа вместе с ним. Чтобы этого не происходило, необходимо дописать команду exit на закрытие терминала после открытия программы через пробелы и разделительный знак &:

nautilus & exit

ubuntu-tweak & exit

gnome-tweak-tool & exit

Через разделительный знак & можно включать несколько команд на выполнение (открытие), объединив их в одну команду:

nautilus & ubuntu-tweak & gnome-tweak-tool & exit

Создание каталогов (папок) и размещение в них файлов

Многие из вас устанавливали флажки для отображения в трее  раскладки клавиатуры посредством терминальных команд:

mkdir ~/.icons

mkdir ~/.icons/flags

cd ~/.icons/flags

wget http://suservice.net/icons/flags2/{ru,us}.png

Теперь давайте детально разберём каждую из приведённых команд.

Команда mkdir ~/.icons - создаёт скрытый каталог (папку) в Домашней папке под названием icons.

mk - сокращённо от make - сделать, создать. dir - сокращённо directoria - каталог, папка. ~ - знак тильда всегда обозначает Домашнюю папку пользователя. / - обозначение папки. .icons - обозначает название создаваемой папки, а точка впереди всегда указывает на то, что данная папка скрытая.

Команда mkdir ~/.icons/flags также создаёт папку под названием /flags в скрытой папке /.icons и Домашней папке - ~.

Команда cd ~/.icons/flags делает переход в папку /flags, которая в свою очередь находится в Домашней папке - ~ и в скрытой папке /.icons.
cd - c - обозначение перехода, d - directoria - каталог (папка).

Команда wget http://suservice.net/icons/flags2/{ru,us}.png загружает файлы флажков в папку /flags, в которую мы перешли на предыдущем этапе.
wget - сокращённо от wweb - сеть, get - получать, т.е получить файлы из сети и ставится всегда перед URL адресом через пробел. В данном случае перед http://suservice.net/icons/flags2/{ru,us}.png, с которого и загружаются файлы с флажками.

Убить процесс командой

Прежде всего давайте выясним, что такое процесс?

При запуске системы запускается множество процессов, о которых пользователь зачастую даже и не подозревает. Но многие процессы мы видим на экране монитора, сами их запускаем и управляем ими, это открытые программы. Лучше всего нам об этом раскажет программа top, запущенная в терминале:



Иногда так случается, что какой-то процесс в системе дал сбой или попросту "зависла" какая-то программа и кнопка закрытия не реагирует, либо кнонопка закрытия отсутствует вовсе (виджет conky). На этот случай в Linux есть очень хорошая команда - "убийца":

pkill

p - сокращённо от process (процесс), kill - убивать.
Но сама по себе эта команда не работает, ей нужен аргумент, т.е. либо номер процесса, который отображён в колонке PID (см. снимок терминала) после выполнения команды top, либо название процесса в колонке COMMAND. Не переживайте, команда не убьёт саму программу, она только остановит процесс выполнения. Если это графическая программа, то она просто закроется. Для эксперимента я выбрал самый безобидный процесс, который при закрытии ни чему не повредит. Итак выполните следующую команду:

pkill gnome-terminal

Окно терминала исчезло, т.е. был "убит" (остановлен) процесс, отображающий программу на экране монитора.

xkill - убивает видимый процесс и работает сама по себе, т.е. после выполнения команды кликните образовавшимся крестиком вместо курсора на любой видимой программе (окне), как оно закроется.

Заключение

Мною были подобраны команды для разбора, с которыми обычно сталкивается простой пользователь при настройке системы.
Если кто-то хочет глубже узнать о терминальных командах, я вам рекомендую скачать бесплатный справочник Скотта Граннемана "Linux. Карманный справочник". Просто наберите в Google Скотт Граннеман и дайте поиск.


Удачи.

45 комментариев :

  1. Владимир! Сделайте, пожалуйста, это отдельным разделом на сайте, чтобы новички не блуждали среди 100500 сосен. Где Вы были в апреле?..

    ОтветитьУдалить
    Ответы
    1. Как понять: "Где Вы были в апреле?"

      Удалить
    2. Да конечно же это не предъява, а просто вопль вспотевшего человека... Я тогда только пересел на Убунту (семерка достала) - что, откуда и куда растет непонятно... Толковых руководств мало... Рулил как мог без штурмана. Сейчас поставил Минт 14. Доволен больше, чем Убунту. По крайней мере появилась возможность настраивать тачпад (в Убунте эта закладка в настройках у меня так и не появилась 11.04, 11.10, 12.04, 12.10). Да и с иконками приложений проблемы исчезли (в менюшках Убунты иконки имели свойство пропадать). И вообще все стало проще...
      Спасибо за подсказки. Без Вашего сайта была б совсем тоска. Маны курить? А вдруг зависимость появится?

      Удалить
  2. бесплатный справочник Скотта Граннемана "Linux. Карманный справочник"
    Отличная книга.Давно уже пользую

    ОтветитьУдалить
    Ответы
    1. Ну вот не видел ссылок на нее... Скачал. Буду изучать. 6.22 попроще была... а уж CP/M... плачу два раза на дню, когда вспоминаю.

      Удалить
  3. Спасибо за справочник - книги лучший друзья.

    ОтветитьУдалить
  4. А у меня вопрос...почему вы предлагаете apt-get a не aptitude,ведь она лучше работает с зависимостями.

    ОтветитьУдалить
    Ответы
    1. Потому что apt-get работает по умолчанию, а aptitude устанавливается по желанию.

      Удалить
  5. Подписаться по электронной почте (Комментарии будут отправлены по адресу)Спасибо!
    Отправка другу сообщения по электронной почте: compizomania Спасибо!
    Подписаться на Сообщения (iGoogle,netvibes,newsgator,yahoo,atom)Спасибо!
    Просьба
    Для подписки на новости сайта введите свой E-mail:(При добавлении нового материала на вашем сайте, мне проходило письмо)

    ОтветитьУдалить
  6. Спасибо за статью.

    ОтветитьУдалить
  7. Скажите, пожалуйста. возможно ли в ubuntu добраться до файловой системы из терминала? Я только начинаю изучать работу в терминале. Команды, например ls, не видят двойного названия - Файловая система. Это в ubuntu по умолчанию, или только на локализованной системе? Или как-то возможно увидеть папки bin, boot и так далее?

    ОтветитьУдалить
    Ответы
    1. Выполни вот эту команду в терминале: man ls. Она тебе расскажет многое. а если хочешь узнать о терминальных командах подробнее, рекомендую скачать бесплатный справочник Скотта Граннемана "Linux. Карманный справочник". Он на русском языке. И там всё о терминальных командах.

      Удалить
    2. Спасибо! Как раз с этим справочником и работаю! Видимо что-то я не понял! Может папку Файловая система переименовать в наутилусе обратно на английский язык, но я пробовал - не получается.

      Удалить
    3. Извините дурака! Это просто ls /

      Удалить
  8. Админушка, благодарю тебя!

    ОтветитьУдалить
  9. Спасибо!!! Я, как бы, все это знаю, но читал с удовольсвием. Как всегда: немногословно, понятно и последовательно.
    За Скотта Граннемана отдельная благодарность.

    ОтветитьУдалить
  10. Шикарная статья! Удобно и доступно :) Себе в PDF переделаю ;)
    Спасибо.

    ОтветитьУдалить
  11. Дюже полезная статья для новичка! Бааальшущий респект автору! Помогло решить некоторые проблемы.

    ОтветитьУдалить
  12. господа, а подскажите: точно помню что есть команда, которая позволяет выполнить команду полсе неё и вернутся работать в терминал дальше, но саму команду вспомнить не могу.
    т.е.: " sudo fslint" запускает fslint, а терминал паралельно выдаёт приглашение на новой строке

    подскажите что за команда, а?

    ОтветитьУдалить
    Ответы
    1. "есть команда, которая позволяет выполнить команду полсе неё и вернутся работать в терминал дальше". Расшифруй чего хочешь, а то получается: масло масленное, потому что это масло.

      Удалить
  13. Пользователям андроида вот такая программка в помощь http://yadi.sk/d/GqRhBSP-Aqrsf

    ОтветитьУдалить
    Ответы
    1. Спасибо. Но было бы неплохо добавить и краткое описание - справочник команд Линукс с примерами :)

      Удалить
  14. Где вводить эти команды, где взять этот терминал ? Ничего не понял, филькина грамота

    ОтветитьУдалить
    Ответы
    1. Нажми на клавиатуре Ctrl+Alt+T и увидишь терминал.

      Удалить
  15. отличная статья, отличный сайт. сам недавно пересел на убунту и пересадил свое семейство) основная проблема была настроить торрент-тв, но благодаря сайту все получилось. СПАСИБО, так держать!

    ОтветитьУдалить
  16. Именно с этой статьи мои знания об этой системе обрели как говорится,-"и вкус и цвет",стали более понятными действия как системы, так и себя в ней.Хотя начинал глазеть на Линукс еще с Убунту 10.04,но пришлось отьехать на Win.7 из-за проблем перегрева ноута ACER 5315 (не запускался кулер обдува на Линуксе).Решил проблему обдува подключением ограничительного резистора на питающую шину кулера для принудительного обдува Ц.П.В общем в итоге влился в ваши крепкие,несгибаемые ряды,а так-же "влил" жену, детей и сослуживцев,хотя и не без проблем с последними! В заключении своей первой статьи в Компизомании хочу выразить признательность создателям этого,бесспорно очень нужного сайта ,-вашими усилиями мы обретаем свободу!!! -))) (-Во загнул!)

    ОтветитьУдалить
  17. Владимир, добрый день! Помоги, пожалуйста! У меня Ubuntu Studio 12.04 LTS. Сегодня перестал загружаться Центр приложений. Всё перепробовал, что нашел на этом сайте, но ничего не помогло. Попробовал выйти из системы и попробовать в других окружениях открыть Центр приложений. Не получилось. На свою беду увидел вариант загрузки в режиме восстановления системы. Во весь экран появился терминал. И я теперь не могу вообще войти в систему. Можно ли завершить сеанс через этот терминал, чтобы войти в систему как раньше?

    ОтветитьУдалить
    Ответы
    1. Сделай его переустановку командой в терминале:

      sudo apt-get install --reinstall software-center

      Потом попробуй запустить.

      Удалить
    2. Проблема в том, что я не могу войти в систему. Передо мной огромный терминал во весь экран. Можно ли через этот терминал выйти из системы и потом перейти в другое окружение стола?

      Удалить
    3. 1. Введи в терминале: sudo reboot и нажми Enter
      2. Компьютер перезагрузится и после загрузки поменяй окружение.

      Удалить
    4. Пробовал. После перезагрузки опять этот терминал. Он является, как бы, одним из окружений, которые предлагаются, когда завершаешь сеанс. А вот как попасть на эту рамку из моего положения?

      Удалить
    5. Что-то я не припомню такого окружения, как "терминальное". Где-то ты поймал косяк или сам его создал. Попробуй выполнить команду в Alt+ F2 чтобы перейти в Unity, если оно у тебя есть:

      unity --replace

      Удалить
    6. Почитай об этом здесь: http://compizomania.blogspot.com/2012/02/ubuntu-1110_4169.html

      Удалить
    7. Наконец-то! вышел из этого дурацкого терминала! Помогла команда "gnome-shell --replace". А называется эта штука Recovery Сonsole. Теперь буду пытаться восстановить Центр Приложений. Спасибо, Владимир! Но чувствую, что очень скоро еще раз обращусь с вопросами...

      Удалить
    8. Михаил, выполни в терминале команду для определения окружений, которые у тебя установлены: cd /usr/share/xsessions/ && ls
      А затем выбери одно из них без .desktop и выполни в Alt+F2 команду типа:

      unity --replace

      или

      cinnamon --replace

      И тому подобное.

      Удалить
    9. Я не Михаил, просто скачал Ubuntu переделанную в Mint 15-16. (не определено). Шикарно.Впечатляет.Есть повод задуматься..У меня и так всё красиво и работоспособно.Версия не "та".Работает на "ура".Но если "ubuntu"работает без пролблем. Только "за"

      Удалить
  18. ".....просто скачал Ubuntu переделанную в Mint 15-16"
    это самосборка-со всеми втекающими и вытекающими-В своё время было очень много сборок ХР виндовс-так и эта -типа того....

    ОтветитьУдалить
    Ответы
    1. P.S. к примеру-от автора этой самосборки-
      "Хотя в этой сборке проверялись команды upgrade и dist-upgrade и они не нанесли замеченного вреда при обновлении , но настоятельно рекомендуется воздержатся от их использования без реальной необходимости обновится"

      Удалить
  19. как создать новую учетную запись в консоли-терминале?

    ОтветитьУдалить
  20. Вот я открыл сайт какой нибудь программы. Например sunflower (http://sunflower-fm.org/). А как найти название репозитория на этом сайте?

    ОтветитьУдалить
    Ответы
    1. На странице программы упоминания о репозитории может и не быть. Но разве это проблема?
      http://bit.ly/1GtvZjg

      Удалить
    2. ==А как найти название репозитория на этом сайте? == Как правильно ответил Максим, репозитрия может и не быть, если его не создал разработчик, но всегда присутствует Source code на установку, т.к. программа может быть кроссплатформенная, т.е. для Linux, Windows и MacOS. Но деже если разработчик программу создал только для Linux, то в нём существует несколько пакетных баз (deb, rpm и т.д.), а репозиторий создаётся для кнкретной базы, например, Debian/Ubuntu. Опять же репозиторий не обязательно создаёт разработчик, его может создать кто угодно, в том числе и Вы.
      https://ru.wikipedia.org/wiki/Репозиторий

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

      Абсолютно верно. Разработчик программы вообще не обязан разбираться в нюансах сборки пакетов под конкретные дистрибутивы, его дело - писать саму программу. Репозиториями обычно занимаются другие люди - «майнтейнеры» (от английского maintain - поддерживать, сохранять, содержать). Они сами ничего не разрабатывают, а занимаются сборкой пакетов в соответствии с определенными требованиями (которые для разных дистрибутивов разные). Причем каждый майнтейнер может поддерживать не одну программу, а сразу много, освобождая, таким образом, целую кучу программистов от лишних хлопот.

      Удалить