И так дорогой читатель - ты вошел в консоль. Первым делом, что бы чувствовать себя уютнее надо оглядеться, для этого мы выполним команду 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.
Комментариев нет:
Отправить комментарий