четверг, 14 октября 2010 г.

Пара слов про Человечную консоль. Часть 3

Как выяснилось совсем недавно, на втором месте по популярности в моём личном хит-параде, расположилась команда cd. Рассказывать о ней в отрыве от родственных ей rm, cp, mv, pwd и ls будет неправильно. Но ещё более неправильным будет рассказывать обо всех этих программах, не осветив для начала устройство файловой системы в линуксе. Как показала личная практика и мониторинг форумов, очень часто люди после переезда с Виндоус на Линукс (на Убунту, в частности), долго не могут привыкнуть к некоторым особенностям. И, как следствие, путаются в элементарных вещах.

§1. Что следует знать начинающему убунтоводу-линуксоиду?

  1. Для начала необходимо чётко усвоить: в мире линукс нет такого понятия как «диск С» или «диск D». Всё гораздо проще. Есть полностью виртуальная файловая система, с корневой папкой, в которой содержатся все остальные папки и файлы. Корневая директория называется просто и незамысловато: «/». Корневая папка, или иначе — «корень», располагается на одном из физических жёстких дисков. Все остальные устройства ввода/вывода подключаются к корню как обычные директории или файлы. В Убунту, например, флэшки, CD- и DVD-приводы, всякие другие накопители, монтируются в директорию /media.

    Обратите внимание, как я написал название директории: я начал его с «/», то есть указал абсолютный путь к папке. Это значит, что папка /media хранится именно в корневой директории. Если бы я написал просто «media», это означало бы что речь идёт о какой-то папке с именем «media», которая хранится неизвестно где.

  2. Разделители в пути к файлу, выглядят так же, как и обозначение корня — «/», в отличие от принятого в мире Виндоус и ДОС — «\». Для примера, вот путь к исполняемому файлу моего любимого браузера: «/usr/bin/opera».
  3. Каждый пользователь живёт строго в своей папке, которую называют домашней. На винте, обычно, название папки совпадает с именем (логином) пользователя. Лежит домашняя папка — где бы вы думали? — в разделе /home. Пример: если юзер кличет себя Megahacker, то путь к его домашней папке выглядит так: /home/Megahacker.

    Обратите внимание: не /hOme/megahacker и не /HomE/MegaHacker, а именно /home/Megahacker — линукс очень чувствителен к регистру в именах файлов и папок.

  4. В домашней папке, помимо всяких документов и картинок, находятся настройки всех программ, которыми пользуется юзер. В-принципе, та же песня и в Винде, но есть нюанс: традиционно, в линуксовых операционных системах все пользовательские файлы и папки лежат в домашней директории. А новые программы, практически всегда, устанавливаются в папку /usr/bin. Конечно, никто не мешает пользователю создать свою любимую папку Порно в корне, но так не принято. Помимо этого, по-умолчанию, консоль стартует именно с домашней папки текущего пользователя, как бы намекая...

§2. Работа с файлами и папками в консоли Убунту Линукс.

В этом разделе, коротко расскажу о командах, а в следующих — будут подробности.

cd. Сокращение от Change Directory. Применение команды прозрачно: — переходим в папку /usr/bin.

cp. Сокращение от CoPy. Применяется так: — копируем файл girl.jpg из текущей папки, в папку girls, которая расположена в папке pictures, которая в свою очередь, расположена в текущей папке.

rm. Сокращение от ReMove. Применение: — стираем файл. Точка.

mv. Сокращение от MoVe. Пример: Если cp просто копирует файл (или папку) из одной директории в другую, оставляя оргинал на месте, то mv копирует файл и стирает оригинал. Можно сделать тоже самое двумя командами:

pwd. Сокращение от Print name of current/Working Directory. Просто показывает название текущей директории. То есть, той директории, в которой находится пользователь. По большому счёту, в Убунту её применение врятли оправдано. Почему — расскажу ниже.

ls. Сокращение от LiSt directory contents. Ну, тут всё почти также просто, как и с pwd. Показывает файлы и папки содержащиеся в текущей директории.

§3. Команда cd.

  1. Из любого места на вашем компьютере попасть в домашнюю директорию можно просто набрав команду:

    Или так:

    «cd» и «cd ~» — это две равнозначные команды.
  2. Знак «~» служит для обозначения домашней директории. Можно применять этот знак во всех случаях, где требуется указать путь к файлу или папке живущим в домашнем каталоге.

    ~/pictures/girls = /home/Megahacker/pictures/girls

  3. Быстрый возврат к предыдущему каталогу делается так: . Смысл команды аналогичен кнопке в любом файловом менеджере, будь то nautilus или Explorer.
  4. Перейти на каталог выше можно вот так: . Точка, в линуксе, обозначает текущую директорию. Две точки подряд — символизируют каталог находящийся уровнем выше текущего. На примере:

    Из папки picture мы перешли в папку Megahacker, которая выше уровнем.
  5. Символическое обозначение предыдущего каталога — «..», можно и нужно использовать в консольных командах. Например, имеем вот такие каталоги в папке /home/Megahacker:
    /
    |
    home
    |
    Megahacker
    |----
    |   |
    |   --picture
    |
    --films
    И находимся мы в папке picture, а надо бы попасть в папку films. Можно сделать так:

    Но проще будет сделать так:

    Мы дали команду операционной системе подняться на один каталог выше, и оттуда перейти в папку films. Конструкцию «..» можо применять неограниченное число раз:

    Всё равно выше корня не прыгнете :)

§4. Команды cp, mv, rm.

  1. Попробуйте скопировать какой-нибудь каталог командой cp. Не получилось? Правильно. В окне терминала вы должны увидеть следующее:

    Записываем: чтобы скопировать один каталог (с содержимым) в другой, надо после команды cp указать ключ -r:

  2. Скопировать много файлов, объединённых каким-нибудь признаком, можно так:

    В данном случае, копируются файлы с одинаковым расширением и любым именем. «*» в имени файла означает любое количество любых символов. Также можно использовать «?», если требуется указать один какой-нибудь символ:

    Или «[]», если небезразлично, какой символ будет. Между скобками нужно указывать отдельные символы или диапазоны символов: [123] — будут выбираться файлы, в кторых имеется хотя бы одна цифра из перечисленных, [г-н] — выбираются файлы в которых есть буква из перечисленного диапазона. Можно комбинировать: [АДтfG3-8].Пример:

    Будут копироваться файлы, имя которых начинается с «girl», продолжается одной какой-нибудь цифрой, после которой следует один любой символ.
Всё перечисленное выше, касается также команд rm и mv.

§5. Команды pwd и ls.

Быстро объясняю, почему практически нет резона использовать pwd в командной строке, и двигаемся дальше, к ls.

В программе терминал, как и в консоли Убунты, текущий каталог, в котором находится пользователь, отображается прямо в приглашении командной строки:

А, раз уже и так понятно, где мы находимся, так нафига переспрашивать???

Искренне надеюсь, что тут всем всё ясно, и перехожу к разбору ls

  1. ls по-умолчанию выводит сортированный по алфавиту список файлов и папок. Причём, разницы между папкой и файлом нет никакой:

    Чтобы хоть как-то упорядочить список, вытащив каталоги наверх, надо к ls добавить опцию -X:

    Опция -X заставляет программу ls сортировать файлы по расширению. Так как у каталогов расширения нет, они выводятся первыми. На самом деле, в линуксе расширений может не быть и у файлов — операционная система распознаёт тип файла по его содержимому. Чтобы узнать наверняка, что из перечисленного файл, а что каталог, можно:
    • использовать опцию -F — она маркирует каталоги символом «/», исполнимые файлы символом «*», а простые файлы никак не маркирует:

      Можно сочетать две и более опций:

      Стоит отметить ещё один момент — можно заметить, что файлы с расширением .jpg, промаркировались как исполнимые, хотя таковыми на самом деле не являются. Дело в том, что при попытке запустить файл с указанным расширением, автоматически запустится программа-просмотрщик. По сути, запускает её операционная система, но по факту, инициатором такого запуска, является файл с раширением .jpg. Поэтому он исполнимый.
    • использовать опцию -l — она выводит помимо имён файлов, информацию о типе и правах, количестве ссылок, имени владельца и его группе, размере файла в байтах и времени его последнего изменения. В конце строки печатается имя файла и раширение:

      Для каталогов, указывается тип «d» в начале строки. Можно комбинировать эту опцию с предыдущими двумя:

    И надо отдельно отметить, что стандартная программа Терминал, по-умолчанию расцвечивает различные типы файлов и папки. У меня, к примеру, папки выделяются синим цветом.
  2. Посмотреть размер файлов можно ещё с помощью опции -s. Но она показывает размер в каких-то там полукибибайтах, которые неподготовленному человеку понять сложно. Чтобы очеловечить цифири выдаваемые опцией -s, нужно добавить к ней опцию -h: .
  3. Скрытые файлы и папки в линуксовой консоли можно посмотреть командой ls -a. От видимых, они отличаются наличием точки перед именем: .Порно — так скрытая папка, а так нет: Порно

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

Удачной навигации по файлам и папкам!


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

2 комментария: