Обучение

Обучение

Life-Hack

Командная строка Linux. Часть 1.

После того, как ты успешно установил Linux, потыкал мышкой, попробовал на вкус GUI (Graphic User Interface), настало время познакомится с консолью. Консоль, я скажу, это великая вещь... Множество операций можно выполнить, не хватаясь за мышку, и затрачивая гораздо меньше времени. И вообще — работа в линуксе ориентированно на CLI (Command Line Interface). Изначально. А уж мышки, окна, десктопы, и прочие фенички это второстепенные «удобства». Именно в кавычках... Потому что, стоит тебе хоть немного освоится в консоли, как ты поймешь все ее прелести и преимущества. Да и к тому же... Проникнув удаленно в чужую систему, и не растерятся можно только при хороших навыках работы именно с консолью.

В этой статье мы рассмотрим основные комманды, которые просто жизненно необходимы для работы в терминале. И так, поехали!


Оболочки

Начнем с того, что в современных никсовых системах зачастую используются несколько схожих друг с другом оболочек... Их выбор зависит от предпочтений пользователей, но в основном их команды идентичны, и разницу заметит разве что опытный пользователь. Чаще всего, в современных дистрибутивах идут несколько оболочек, а дефолтной ставится оболочка с названием bash, что означает Born Again Shell. Это модернизированная оболочка Борна (sh). Используемая в данный момент оболочка записанна в переменную $SHELL. Соответственно, что бы вывести значение на экран требуется определенная комманда. Например «echo». Сразу договоримся, что символ «$», который стоит перед каждой моей коммандой в листинге это приглашение коммандной строки. И его перепечатывать не нужно. Приглашение коммандной строки, это состояние, когда оболочка освобожденна от задач и так сказать «слушает пользователя», или ждет от него ввода комманды. Собственно, введя в терминале:


$ echo $SHELL

/bin/bash


мы получили имя оболочки в которой мы сейчас работаем (у тебя, конечно это может быть другая оболочка). Что бы посмотреть какие оболочки вообще доступны в системе нужно выполнить не хитрую комманду:

$ cat /etc/shells

/bin/csh

/bin/sh

/usr/bin/es

/usr/bin/ksh

/bin/ksh

/usr/bin/rc

/usr/bin/tcsh

/bin/tcsh

/usr/bin/esh

/bin/dash

/bin/bash

/bin/rbash

/usr/bin/screen


Комманда «cat» просто выводит на экран содержимое какого-то файла. Хотя, конечно, с ее помощью решаются и другие задачи, но об этом позже. Все оболочки установленные в системе содержаться в файле /etc/shells. Таким образом мы его смогли просмотреть. У вас, скорее всего набор будет немного другой. Это варьируется от дистрибутива к дистрибутиву.


Прогулка по каталогам

Корневым каталогом в юниксоподобных системах по умолчанию считается «/». То есть это самое начало. Выше уже некуда. По умолчанию, после запуска терминала, мы попадаем в наш домашний каталог. Каталог пользователя. Чтобы посмотреть, где мы находимся, нужно набрать команду «pwd»:

$ pwd

/home/fen


Так и есть. Мы находимся в моем домашнем каталоге. Давай попробуем переместится в корень файловой системы. Для таких целей существует комманда «cd» от английского смена директории (change directory). Основным и единственным ее аргументом является директория, в которую мы хотим переместится. Введя «$ cd /», мы окажемся в искомом месте.

Что бы оглядется вокруг, и увидеть какие еще дирректории есть в корне, мы воспользуемся коммандой «ls»:

$ ls

bin    dev  initrd      lost+found  opt  sbin  tmp  vmlinuz

boot  etc  initrd.img  media      proc  srv  usr 

cdrom  home  lib        mnt        root  sys  var


В ответ оболочка нам выдала все директории, которые есть в корне. Среди них можно увидеть и знакомую нам директорию «home», откуда мы собственно сюда и пришли. Комманде «ls» также можно задавать аргумент в виде директории, чтобы взглянуть что находится внутри нее, не заходя. Например:

$ ls /home

fen


Нам высветятся домашние каталоги всех пользователей, зарегистрированных в системе. В моем случае, это я один. Можно копнуть и глубже, сразу заглянув именно в мою папку:

$ ls /home/fen


Таким образом мы увидели все документы и папки, хранящиеся в моем домашнем каталоге. Сами мы при этом даже не покидали корневой каталог, о чем свидетельствует «/» слева от знака «$». У комманды «ls» есть ключи, которые существенно расширяют ее возможность. Например ключ -a позволяет видеть скрытые файлы. Ключ вставляется сразу после комманды, перед ее аргументом: «ls -a /home/fen». Все файлы начинающиеся с точки, являются скрытыми. Список всех ключей практически любой комманды можно получить с помощью ключа « - help», «ls - help». Существует еще один полезный ключ - «-l». Он позволяет увидеть более расширенную информацию о файлах. Попробуем посмотреть расширенную информацию о файлах, хранящихся в каталоге «etc» - «ls -l /etc»:

$ ls -l /etc

total 1244

[b]drwxr-xr-x  8 root root    4096 2008-07-02 16:28 acpi[/b]


Сначала нам вывели общее количество файлов в каталоге «total 1244», и затем длинный список самих файлов. Для наглядности я отобразил только один. 


На первом месте идут права доступа к файлу: «drwxr-xr-x». Их может быть три «r» - право на чтение файла, «w» - на запись, и «x» - на выполнение (например программ или скриптов). Весь первый аттрибут я разбил условно на несколько «d rwx r-x r-x». Первый символ «d» обозначает что это дирректория. Первые три символа определяют права на файл его владельца: «rwx» - значит владелец файла может его и читать, и писать в него, и запускать. Вторыми идут права на файл у группы, к которой принадлежит владелец, и третьими — прочие пользователи. Во втором и третьем случае права одинаковые «r-x». То есть можно читать файл и запускать. Изменять его никто кроме владельца не может. Второй колонкой идет количество путей, по которым можно к этому файлу обратится. Затем идет имя владельца и название его группы, в нашем случае это все «root». И следом — размер, дата создания файла и его имя.


Теперь можно вернутся в свой домашний каталог («cd /home/fen» или «cd ~». Тильда указывает на текущй домашний каталог) и потренироваться в создании папок. Для этих целей служит комманда «mkdir» от английского make directory. Например комманда:

$ mkdir hello


Создаст каталог hello в нашей домашней папке. Убедится в этом можно, набрав «ls». Среди прочих файлов уже появилась и наша папочка. Мы можем попробовать заглянуть в нее несколькими путями. Это или «$ ls /home/fen/hello», или «$ ls ~/hello» (как я сказал выше, «тильда» в данном случае есть путь к нашему домашнему каталогу «/home/fen», стало быть «/home/fen/hello» = «~/hello»), или просто написав «ls hello». Так как впереди не стоит знака «/», указывающего на то, что путь идет из корня, то программа просто будет смотреть папку в текущем каталоге. В любом случае, ничего не отобразится, ведь он пуст. Давай в него перейдем «$ cd hello». Теперь, набрав «pwd» мы можем убедится, что находимся именно в той папке. О чем нам также говорит путь, который указывается перед «$».


Предположим, что нам надо каким либо образом вернутся назад. То есть в нашу домашнюю папку. Сразу на ум приходят комманды «cd ~», «cd /home/fen», но есть решение элегантней. В линуксе, текущая директория обозначается точкой, а родительская (предыдущая) двумя точками «..». Это можно увидеть, набрав «ls -a» в любой из папок. Стало быть «шаг назад» делается коммандой «cd ..». Все просто!

Вернемся обратно в каталог «hello» и продолжим изучение комманды mkdir. Мы забыли упомянуть, что она позволяет создавать несколько каталогов одновременно. Просто, разделяя их пробелом. Если мы введем «$ mkdir one two three», то в папке hello у нас появятся три каталога. 

Также комманда позволяет создавать вложенные друг в друга папки. Но для этого нужно воспользоваться ключом -p. Например:

$ mkdir -p 111/222/333


Чтобы удалить файлы или директории, существует комманда «rm». Ее использование довольно нехитро: «rm имя_файла». Если мы хотим удалить директорию, то следует подставить ключ «-d». Но директорию у нас получится удалить только в том случае, если она не пуста. Иначе консоль будет ругаться. Что бы этого не было, нужно использовать дополнительный ключ «-r». То есть «rm -d -r 111» удалит нашу папку «111» и две других, которые в нее вложены.


Очень проста комманда перемещения файлов: «mv» (move). У нее всего два аргумента. Имя файла который нужно переместить, и путь, Куда нужно переместить. Например комманда «$ mv /etc/myfile /home/fen/myfile» переместит файл из каталога /etc в мой домашний каталог.

Команда копирования «cp» очень с ней схожа, разве что она просто создает копию файла, не затирая исходный.


Основы ввода-вывода

И на последок вспомним комманду «cat». Мы ее использовали, для вывода содержимого файла на экран. Но ее возможности довольно велики, если использовать технологию перенаправления вывода. Ее мы сейчас и рассмотрим.

Переадресация вывода позволяет направить вывод одной комманды на ввод другой. И служит для этого знак «>» (больше). Например введя комманду:

$ echo Hello World!


Мы увидим только то, что в консоли отобразилось фраза «Hello World!», ведь echo и служит просто напросто для вывода чего-то на экран. Но если применить конструкцию:

$ echo Hello World! > myfile


Вместо того, что бы вывести содержимое на экран, конструкция «>» подхватит его, и запихнет в файл «myfile». Теперь взгляните с помощью комманды «ls» - в текущем каталоге появился файл с таким именем. Попробуем его прочитать («$ cat myfile»):

$ cat myfile

Hello World!


Все верно. Это наше содержимое... Знак «>» в этом случае записал значение коорое было слева в файл который расположен справа. Если мы захотим еще что-то написать в этот файл и снова применим конструкцию например «$ echo I am Hacker > myfile», то файл просто перезапишется. Что бы этого не случилось, мы должны просто использовать знак «>>». В таком случае содержимое файла не пострадает, а новые данные запишутся в конец файла:


$ echo I am Hacker >> myfile

$ cat myfile

Hello World!

I am Hacker


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

На последок список из нескольких полезных комманд:


free - предоставляет информацию о доступной и занятой оперативной памяти системы. Что бы отобразить в мегобайтах, используй ключ «-m».

top - на системах GNU/Linux выводит информацию об исполняемых процессах и ресурсах системы, включая использование процессора, памяти, раздела подкачки и общего числа исполняемых процессов. Для выхода из top, нажми q.

Uname - с ключем -a выведет всю информацию о системе.

Ifconfig - выводит сведения о сетевых интерфейсах системы.


И еще! Юзайте встроенный справочник «man» (manual). Он должен стать вашим незаменимым помошником. Используется, что бы получить информацию о какой либо комманде. Например: «$ man ls». Для выхода обратно в оболочку, из мана служит клавиша «q».


Report Page