15 July 2008

Консоль для новичка. Часть 2.

Configuring Linux
И так продолжаю вводить новичков в курс дела. Это уже вторая статья, первая находиться здесь.



После того, как вы уверенно можете разгуливать по просторам файловой системы с помощью консоли, необходимо узнать собственно о её формировании. Предположим, что Вам понадобилось создать директорию, в этом случае воспользуйтесь командой 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/Test/
Что за странные "" спросите Вы? Я отвечу, таким образом я отобразил нажатие кнопки 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.

Спасибо за внимание.

P.S. Решил не делать статью огромной и нагруженной. Лучше качественно и понемногу, что бы не переусердствовать.
Tags:linuxконсоль
Hubs: Configuring Linux
+4
128 20
Comments 29
Ads