среда, 28 января 2009 г.

Консоль для новичка

Для того, что бы попасть в консоль можно нажать Ctrl+Alt+F1, а что бы вернуться обратно в свою графическую среду - Alt+F7. Либо просто воспользоваться предложенным графически решением в вашем главном меню.

И так дорогой читатель - ты вошел в консоль. Первым делом, что бы чувствовать себя уютнее надо оглядеться, для этого мы выполним команду pwd:
vir@home:~$ pwd
/home/vir

Этой командой мы определили в какой директории мы сейчас находимся (т.е. какая директория в данный момент рабочая). В моем случае - это моя домашняя директория. Кстати, pwd, если мне не изменяет память расшифровывается именно как - print work directory (распечатать/вывести на экран рабочую директорию)

Далее было бы не плохо узнать, а что у нас в ней есть? Для этого воспользуемся утилитой ls:
vir@home:~$ ls
Images Other Work Рабочий стол

После выполнения команды ls, мы видим список файлов и директорий находящихся в той самой (/home/vir) рабочей директории. А называется команда ls, от сокращеного list (список)
Наверное, именно здесь стоит заметить, что большинство команд может использоваться с ключами (опциями) и параметрами. Опять же давайте разберемся на примере:
vir@home:~$ ls -l
total 0
drwxr-xr-x 3 vir vir 80 2008-07-06 11:30 Images
drwxr-xr-x 3 vir vir 72 2008-07-06 14:30 Other
drwxr-xr-x 3 vir vir 80 2008-07-06 11:59 Work
drwxr-xr-x 2 vir vir 48 2008-07-15 11:41 Рабочий стол

Здесь я использовал ключ -l, который дал знать утилите ls, что я хочу развернутого ответа, т.е. в данном случае помимо списка директорий я так же получил такие данные как: аттрибуты прав, владельца, дату последнего изменения и прочее. Теперь попробуем передать команде ls параметр:
vir@home:~$ ls /var/
backups cache crash games lib local lock log mail opt run spool tmp

В виде параметра я передал директорию /var/. Т.е. результатом команды было отображение всех директорий и файлов, которые находяться в директории /var. Таким образом можно заметить, что не обязательно находиться в конкретной директории, что бы просмотреть ее содержимое.

Теперь не отходя далеко от команды ls, можно рассказать и о путях к файлам и директориям в Linux'e. Пути в Linux'e могу быть относительными и абсолютными. Корнем (родителем) всего дерева директорий, является директория "/". Именно от нее все и начинается (например /home/vir). Теперь на примере:
vir@home:~$ ls
Images Other Work Рабочий стол
vir@home:~$ ls Images/
Wallpapers
vir@home:~$ ls /home/vir/Images/
Wallpapers

Первой командой я опять просматриваю список директорий и файлов, которые находяться в моей домашней директории, одна из них - директория Images. Второй раз я просматриваю список файлов и директорий для Images пользуясь относительным путем, путь который начинается от моей рабочей директории (pwd). То есть находясь в директории /home/vir/ я могу указать относительный путь для Images. А в третьем примере я указываю полный (абсолютный) путь от корня (/home/vir/Images), который не зависит от моей рабочей директории.

Что бы сменить свою рабочую директорию, будем пользоваться командой cd. Пример:
vir@home:~$ cd Images/
vir@home:~/Images$ pwd
/home/vir/Images
vir@home:~/Images$ cd /var
vir@home:/var$ pwd
/var

Думаю здесь все понятно, единственное, что стоит сказать - это то, что бы подняться на одну директорию выше, нам не обязательно указывать ее жесткий путь, мы свободно можем воспользоваться двумя точками "..". Пример:
vir@home:~/Images$ pwd
/home/vir/Images
vir@home:~/Images$ cd ..
vir@home:~$ pwd
/home/vir


После того, как вы уверенно можете разгуливать по просторам файловой системы с помощью консоли, необходимо узнать собственно о её формировании. Предположим, что Вам понадобилось создать директорию, в этом случае воспользуйтесь командой mkdir.
vir@home:~$ mkdir Test
vir@home:~$ ls
Images Other Test Work Рабочий стол

В этом примере мы создали директорию тест, находясь в рабочей директории /home/vir. Однако, как я уже говорил многим утилитам можно передавать параметр, поэтому попробуем создать директорию указав для нее полный путь:
vir@home:~$ mkdir /tmp/Test

Здесь с помощью переданного параметра мы указали утилите, что бы она создала директорию Test в директории /tmp. Опять же вспомнив о ключах (опциях), которые можно передавать утилитам, и еще раз убедимся, что это крайне полезная возможность, например Вам необходимо создать директорию /tmp/Test/One/More, в данном случае у нас уже существуют директории /tmp и /tmp/Test, остается создать /tmp/Test/One и /tmp/Test/One/More. Пробуем:
vir@home:~$ mkdir /tmp/Test/One/More
mkdir: cannot create directory `/tmp/Test/One/More': No such file or directory

Не получилось. Но не переживайте. Не получилось потому, что мы пытаемся создать директорию /tmp/Test/One/More, в то время, как директории /tmp/Test/One не существует. Можно конечно создать их по очереди, но зачем когда есть ключи? Воспользуемся ключем -p:
vir@home:~$ mkdir -p /tmp/Test/One/More

С помощью этого ключа мы создаем все недостающии в пути директории, если это необходимо. Да, кстати, не будет вредным информация о том, что mkdir сокращение от Make Directory (создание директории).

С созданием директорий разобрались, теперь попробуем создать файл:
vir@home:/tmp/Test$ touch file
vir@home:/tmp/Test$ ls -l
total 4
-rw-r--r-- 1 vir vir 0 2008-07-15 21:41 file
drwxr-xr-x 3 vir vir 4096 2008-07-15 21:38 One

И так, с помощью команды touch мы создали в файл с именем file. Файл этот пустой, не занимает место на жестком диске. Вы спросите: "А как же понимать по выводу команды ls, где файл, а где директория?". Все очень просто, во первых во всех современных дистрибутивах команда ls является алиасом на команду ls --color=auto, а это значит, что директории и файлы подсвечиваются разными цветами (правда в разных дистрибутивах по разному). Второй способ это определить по выводу команды ls -l:
vir@home:/tmp/Test$ ls -l
total 4
-rw-r--r-- 1 vir vir 0 2008-07-15 21:41 file
drwxr-xr-x 3 vir vir 4096 2008-07-15 21:38 One

Обратите внимание на букву "d", которую в примере я выделил красным цветом, она то и показывает нам, что One является директорией, а file с пустым аттрибутом (с черточкой).

Перейдем к перемещению файлов и директорий. Для перемещения служит команда mv (сокращение от move (двигать)). Пример:
vir@home:/tmp/Test$ mv file One/
vir@home:/tmp/Test$ ls One/
file More

И так, мы переместили файл file из директории /tmp/Test в директорию /tmp/Test/One. Тут все просто. Если хотите переместить файл, и одновременно дать ему другое имя, то это необходимо четко указать:
vir@home:/tmp/Test$ mv One/file ../moved_file
vir@home:/tmp/Test$ ls
moved_file One

Здесь помимо того, что мы переместили файл file обратно в директорию /tmp/Test, так еще и задали ему новое имя moved_file.
Ну и для окончательного понимания работы команды mv, покажу, что она может использоваться и просто для переименования файла (без перемещения):
vir@home:/tmp/Test$ ls
moved_file One
vir@home:/tmp/Test$ mv moved_file new_name
vir@home:/tmp/Test$ ls
new_name One
vir@home:/tmp/Test$

Пойдем дальше... к копированию. Копировать файлы так же просто, как и перемещать. Принцип абсолютно такой же:
vir@home:/tmp/Test$ cp new_name second_file
vir@home:/tmp/Test$ ls -l
total 4
-rw-r--r-- 1 vir vir 0 2008-07-15 21:41 new_name
drwxr-xr-x 3 vir vir 4096 2008-07-15 21:54 One
-rw-r--r-- 1 vir vir 0 2008-07-15 21:59 second_file

Думаю здесь все абсолютно понятно. И наверное вы уже догадались, что cp это сокращение от copy (копия).
В ходе обучения мы с вами понасоздавали много ненужного (учебного) мусора. Что ж, пришло время все это подчистить. Начинали мы с Вами с домашней директории, туда и отправимся:
vir@home:/$ cd ~
vir@home:~$ ls
Images Other Test Work Рабочий стол
vir@home:~$

Здесь мы перешли в домашнюю директорию и просмотрели, какой же мусор у нас там лежит. Да, кстати, для того, что бы быстро перейти в в свою домашнюю директорию (/home/имя_пользователя) достаточно воспользоваться алиасом "~".
И так мы видим следы от наших проб - это директория Test, которая нам уже не нужна, и мы ее удаляем:
vir@home:~$ rm -rf ~/Test

Здесь я еще раз пользуюсь возможностью "~", это равносильно указанию абсолютного пути /home/vir/Test. Значит для удаления мы используем утилиту rm (сокращение от remove (удаление)). Ключи -rf - это моя привычка. А именно ключ -r означает - рекурсивно, то есть удалять все, что в этой директории включая ее саму. Если бы мы не использовали бы этот ключ при удалении директории Test, мы получили бы ошибку:
vir@home:~$ rm -f Test
rm: cannot remove `Test': Is a directory

А ключ -f говорит нам о том, что нет необходимости каждый раз спрашивать нас о том, уверены ли мы, что хотим что-то удалить. Поэтому я привык использовать rm -rf, хотя не поощраю такое использование утилиты rm. Думаю теперь вы понимаете, что не следует слушать советы различных "гуру", говорящих вам, о том, что "rm -rf /" лечит от всех бед. Догадаться о значение этой строки теперь Вам не сложно.

И еще, помните мы создавали тестовые директории и файлы в директории /tmp? Удалим их тоже:
vir@home:~$ rm -rf /tm[Tab]p/T est/

Что за странные " " спросите Вы? Я отвечу, таким образом я отобразил нажатие кнопки Tab, на вашей клавиатуре. То есть, я набрал rm -rf /tm затем нажал Tab, и о чудо! Остальные символы p/ добавились сами, затем я набрал просто большую букву T и снова нажал Tab, опять чудо! Символы est/ добавились сами! А все потому что в консоли кнопка Tab является незаменимым помощником-автодополнителем. Конечно в моем примере использование этой кнопки не очень сокращает время, но вы представьте, что у Вас существует директория fotografii-moey-lyubimoy-devushki. Что длиновато? Вот тут Вам и поможет Tab. Набираете foto, жмете Tab и все остальное дополняется само. А что если у Вас две дериктории или два файла, которые начинаются на "foto"? Тогда консоль Вам отобразит оба варианта, пока написаное выражение не будет совпадать только с одним. Пример:
vir@home:~$ mkdir foto-moey-devushki
vir@home:~$ mkdir foto-brata-Olega
vir@home:~$ rm -rf foto-
foto-brata-Olega/ foto-moey-devushki/

Выдается два варианта, четко дав понять, что директорий начинающихся на "foto-" две. Дополнять пока между ними не будет разницы придеться вручную :). Ну про Tab я Вам объяснил, теперь удалим-ка ненужные директории:
vir@home:~$ rm -rf foto*

И опять фокусы, в виде каких-то звездочек (*). А это ничто иное как понятие регулярных выражений. Регулярные выражения тема довольно-таки сложная и мы в нее вдаваться не будем, а вот самостоятельно почитать о них, вам не помешает. Я же Вам объясню про звездочку - так как мы имели две директории со схожим началом "foto" мы можем удалить их одновременно указав только начало. Потому что звездочка (*) подразумевает под собой любое количество, любых символов. То есть дословно:
vir@home:~$ rm -rf foto*
Удалить все, что начинается на foto

Еще пример со зведочкой, предположим у Вас в директории 10 файлов с расширением mp3, и 20 файлов с расширением ogg! Да, мы не любим пропиетарщину, поэтому удалим все mp3 файлы. Но по отдельности это сделать трудоемко, указывая название каждого файла, поэтому воспользуемся магической звездой:
vir@home:~$ rm -rf *.mp3

Думаю суть звезды теперь Вам понятна.

Еще я бы хотел Вам рассказать о великой утилите man. man (сокращение от man (руководство)) позволяет читать руководство по утилитам, различным конфигурационным файлам и прочих вещей. Пользуемся ей так:
vir@home:~$ man rm

И у Вас появится руководство по утилите rm. Это незамения утилита, которая должна сопровождать Вас всю вашу сознательную жизнь в Linux'e.

На сегодня пожалуй хватит. После этой лекции Вы можете не только ходить по просторам файловой системы (ФС), но и формировать её собственноручно. Помимо этого не забывайте фокусы с ~, *, .., Tab.

Получение справки о командах

man
Описание команды или файла конфигурации. Синоним info. Описание листается стрелками, выход клавишей q.
Пример: man fstab
apropos
Поиск по описаниям man.
Пример: apropos iso

Команды работы с файлами

cd
Смена текущего каталога. cd ~ или просто cd всегда переходит в домашний каталог текущего пользователя.
Пример: cd /etc
ls
Выводит список файлов и каталогов. В отличие от dir подсвечивает файлы по типу. С параметром -l выводить дополнительную информацию о файлах: права, владельца, дату создания и т.д.
ls без параметров выводит содержимое текущего каталога.
ls /proc выводит все работающие процессы.
mv
Перенос файла.
cp
Копирование.
rm
Удаление файла.
mkdir
Создание каталога.
rmdir
Удаление непустого каталога.

Права доступа к файлам и каталогам

chown
Смена владельца.
chgrp
Смена группы владельца.
chmod
Смена прав.
Пример: сhmod -R 777 /var/www дает доступ всем ко всем файлам и каталогам ниже /var/www.

Команды работы с драйверами устройств (модулями ядра Linux)

lsmod
Список всех загруженных модулей ядра Linux.
insmod
rmmod
modprobe имя-модуля [параметры]
Установка модуля, настройка его автозагрузки. Результат можно посмотреть в системном логе.
Пример: modprobe radio-aztech io=0x350.
modinfo имя-модуля
Информация о модуле, в том числе и список параметров.
modconf
Удобная программа для просмотра всех модулей по категориям, включения и отключения модулей. По умолчанию как правило не установлена, в Debian, Ubuntu и Kubuntu устанавливается с помощью одноименного пакейджа командой apt-get install modconf.

Редактирование файлов

nano и pico — наиболее вменяемые редакторы, работающие в текстовом режиме прямо в терминале. Чтоб изменить файл /etc/fstab, например, надо набрать nano /etc/fstab. Выход из редактора CTRL+X. Редакторы vi и vim предназначены для работы слепым десятипальцевым методом и неудобны обычным пользователям.

Другие полезные консольные программы и команды Linux

hdparm
Управление жесткими дисками и приводами компакт-дисков.
Пример: hdparm -E8 /dev/cdrom снижение скорости вращения CDROM.
watch
Периодическое выполнение команды.
Пример: watch -n 60 hdparm -E8 /dev/cdrom раз в минуту тормозить диск чтобы привод не разгонял его и не шумел во время просмотра DVD.
pppconfig
Простая и надёжная программа настройки Dial-Up выхода в Интернет по модему. pon, poff и plog — команды установления, разрыва и просмотра лога соединения соответственно.
pppoeconf
Аналогично, настройка выхода в Интернет через ADSL-модем.

Суперпользователь root

Обладает неограниченными правами. Использование прав суперпользователя необходимо при установке драйверов, смене важных параметров Linux. Пароль пользователя root обычно запрашивается при установке дистрибутива. Тогда сразу после установки в систему можно войти с указанным паролем и логином root.

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

Однако такие дистрибутивы как Ubuntu и Kubuntu не создают суперпользователя при установке. Войти под пользователем root или использовать su не удастся. Права суперпользователя в этих дистрибутивах можно получить командой sudo. Ее необходимо писать перед каждой командой, для которой требуются права суперпользователя. Например sudo nano /etc/fstab. После первой команды sudo необходимо ввести пароль текущего пользователя. Использовать sudo могут пользователи, состоящие в группе sudo или admin (в зависимости от дистрибутива Linux), что для первого пользователя Ubuntu и Kubuntu выполняется автоматически при установке дистрибутива.

Особенности работы терминалов Linux

Записанные в файл команды выполняются командой sh имя_файла.

Стандартные команды в Linux отличаются от команд DOS и Windows -- обычно они короче. При работе с командной строкой как обычно мигающий курсор обозначает позицию ввода текста, командная строка начинается с текущего пути и имени компьютера, за которым следует символ $, % или #. Последний означает, что команды будут выполняться от имени суперпользователя root. Символ ~ означает путь к текущей домашней директории пользователя.

Большинство команд в Linux, не требующих вывода информации пользователю, в случае успешного завершения вообще ничего не выводят на экран. Выводятся только ошибки и предупреждения в случае нарушения нормального выполнения команды. Т.е. в Linux действует общий принцип "молчит, значит работает".

В любом терминале Linux стрелками вверх/вниз на клавиатуре можно листать историю команд, которая сохраняется между сеансами работы и различается для разных пользователей и хостов (в случае подключения из командной строки к другому компьютеру по ssh). Набранное частично команда или имя файла или каталога в текущей директории может быть автоматически дописано клавишей TAB. Если найдено более одного варианта и однозначно продолжить команду по TAB невозможно, то выводятся все подходящие варианты.

При работе в графической среде удобны эмуляторы терминала. Как правило они поддерживают закладки -- несколько терминалов в одном окне, поддерживают цветовые схемы. Наиболее распространены эмуляторы терминала Gnome Terminal, Konsole, XFCE Terminal.

Комментариев нет:

Отправить комментарий