Фундаментальные основы Linux для начинающих. Linux основы


Фундаментальные основы Linux для начинающих

Linux – операционная система, созданная студентом университета Линусом Торвальдсом в октябре 1991 года. Linux – это обобщенное название всех UNIX-систем, работающих на одноименном ядре. В начале своей истории Linux была довольно требовательной к знаниям пользователя. Нужны были глубокие понимания основ Linux, но в процессе эволюции операционной системы появилось множество дистрибутивов, упрощающих работу в ней.

Отличия Linux от Windows

Основа работы в Linux с графической средой не отличается от Windows. Но для корректной работы Linux нужно настроить.

Самые существенные отличия:

  1. Linux предназначен для продвинутых пользователей, Windows - "система для всех".
  2. Linux превосходит Windows в обработке потоков и данных.
  3. При использовании Linux можно не бояться нарушить какое-нибудь лицензионное соглашение.
  4. Любое приложение имеет собственное адресное пространство, независимое от адресного пространства ядра, что позволяет с легкостью создавать встроенные системы на основе Linux.

И это далеко неполный список преимуществ.

Преимущества Linux

Сегодня множество программистов Linux совершенствуют систему, разрабатывая новые версии и ее разновидности. Среди преимуществ можно выделить:

  1. Бесплатность – сама операционная система и большинство программ для нее полностью бесплатны и полностью функциональны.
  2. Отсутствие вирусов – сама конфигурация ядра операционной системы исключает работу вредных программ. Это позволяет обходиться без антивирусов, которые замедляют компьютер.
  3. Открытый исходный код – что позволяет использовать и модифицировать код как угодно. Также благодаря этому создается огромное количество встраиваемых систем на основе Linux .

Дистрибутивы Linux

В своем исходном виде Linux не предоставляет таких привычных вещей, как графический интерфейс, установка и удаление программ.

Дистрибутив – форма распространения ПО. Они нужны, чтобы добавить ядру ОС дополнительные компоненты, что позволит пользователям легко установить, настроить, операционную систему.

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

Список лучших дистрибутивов:

  1. Debian – стабильный и нетребовательный к ресурсам. Имеет огромное количество пакетов для установки. Абсолютно бесплатный.
  2. Ubuntu – менее консервативный вариант Debian. Считается одним из лучших для домашнего использования.

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

Установка и настройка Ubuntu

Существует две различные версии дистрибутивов Ubuntu: LTS и Regular. Главное отличие LTS – стабильность и длительная поддержка. Такая версия выходит раз в пять лет.

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

На момент написания статьи последней LTS версией является 18.04 Bionic Beaver.

Установка не вызовет никаких затруднений. От пользователя лишь требуется нажимать кнопку "Далее" в нужные моменты.

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

Основы Linux

На рабочем столе Ubuntu расположены: панель управления, dock-панель, а также меню приложений.

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

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

В меню приложений отображаются все установленные приложения.

Вместе с дистрибутивом Ubuntu поставляется файловый менеджер Nautilus. Этот файловый менеджер позволяет легко управлять файлами и каталогами.

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

Названия файлов и каталогов в Linux должны соответствовать некоторым правилам. Тем, кто активно пользуется другими операционными системами (поскольку может быть несколько отличий), представлены правила наименований файлов и каталогов:

  1. Название не должно превышать 255 символов.
  2. Linux является чувствительной к регистру системой, следовательно, "example.txt" и "Example.txt" являются разными файлами даже несмотря на то что они могут находиться в одном каталоге.
  3. Если название файла или каталога начинается с "." - такой файл или каталог будет помечен системой как скрытый.
  4. Поскольку основа Linux – UNIX, то он полностью поддерживает кодировку UTF-8, допускается использование национальной раскладки.

Терминалы в Linux

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

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

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

Установка и удаление программ с помощью Synaptic

Synaptic – программа с графическим интерфейсом, использующаяся в дистрибутивах Debian и Ubuntu, и предназначенная для поиска, установки и удаления программ.

Synaptic позволяет осуществлять поиск программ с помощью специальных фильтров. Они находятся в левом нижнем углу и разделены на критерии. Также в верхнем углу расположено поле быстрого поиска, введенный текст будет искаться в названии программы.

После того как нужная программа найдена, можно выполнить ее установку. Для этого нажмите на название программы правой кнопкой мыши и выберите пункт "Установка". Аналогично выполняется удаление и обновление программ.

fb.ru

Основы Linux

Linux вдохновлена операционной системой Unix, которая появилась в 1969 году и до сих пор используется и развивается. Многое из внутреннего устройства UNIX существует и в Linux, что является ключем к пониманию основы системы.

Unix ориентировалась, прежде всего, на интерфейс командной строки, это же досталось Linux в наследство. Таким образом, графический пользовательский интерфейс с его окнами, изображениями и меню надстроен над основным интерфейсом — командной строкой. Кроме того, это означает, что, и файловая система Linux построена так, чтобы быть легко управляемой и доступной из командной строки.

Каталоги и файловая система

Файловые системы в Linux и Unix организованы по принципу иерархической, древовидной структуры. Верхний уровень файловой системы — / или корневой каталог. Это означает что все другие файлы и каталоги (включая также другие диски и разделы) находятся внутри корневого каталога. В UNIX и Linux файлом считается все — включая жесткие диски, их разделы и съемные носители.

Например, /home/jebediah/cheeses.odt показывает полный путь к файлу cheeses.odt. Файл находится в каталоге jebediah, которая находится в каталоге home, который в свою очередь, находится в корневом каталоге (/).

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

  • /bin — необходимые системные приложения

  • /boot — конфигурационные файлы, управляющие процессом загрузки

  • /dev — файлы устройств

  • /etc — конфигурационные файлы, скрипты загрузки и т. д.

  • /home — здесь распологаются домашние каталоги пользователей

  • /lib — системные библиотеки

  • /lost+found — обеспечивает систему «потерянного+найденного» для файлов, существующих в корневом (/) каталоге

  • /media — установленные съемные носители, такие как CD-диски, цифровые камеры ...

  • /mnt — подключенные файловые системы

  • /opt — каталог для установки дополнительного програмного обеспечения

  • /proc - специальный каталог, в котором содержатся динамические данные о системе, включая список запущенных процессов

  • /root — рабочий каталог пользователя root, произносится как «слэш-рут»

  • /sbin — необходимые системные приложения

  • /sys — системные файлы

  • /tmp — каталог для временных фалов

  • /usr — приложения и файлы, большинство которых доступны для всех пользователей системы

  • /var — каталог для динамических данных, таких как журналы событий и базы данных

Права доступа

Все файлы в Linux имеют права доступа, которые разрешают или запрещают читать, изменять или выполнять их. Супер пользователь «root» имеет доступ к любому файлу в системе.

Каждый файл имеет следующие три набора доступа, в порядке их значимости:

  • владелец

    относится к пользователю, который является владельцем файла

  • группа

    относится к группе, связанной с файлом

  • прочие

    относится ко всем остальным пользователям системы

Каждый из трех наборов определяет права доступа. Права, а также способы их применения к различным файлам и каталогам, приведены ниже:

  • чтение

    файлы могут быть отображены и открыты для чтения

    содержимое каталогов доступно для просмотра

  • запись

    файлы могут быть изменены или удалены

    содержимое калогов доступно для изменений

  • выполнение

    исполняемые файлы могут быть запущены как программы

    каталоги могут быть открыты

To view and edit the permissions on files and directories, open the → → and right-click on a file or directory. Then select . The permissions exist under the Permissions tab and allow for the editing of all permission levels, if you are the owner of the file.

To learn more about file permissions in Linux, read the file permissions page in the Ubuntu Wiki.

Working at the command line is not as daunting a task as you would think. There is no special knowledge needed to know how to use the command line. It is a program like everything else. Most things in Linux can be done using the command line, although there are graphical tools for most programs. Sometimes they are just not enough. This is where the command line comes in handy.

The Terminal is located in → . The terminal is often called the command prompt or the shell. In days gone by, this was the way the user interacted with the computer. However, Linux users have found that the use of the shell can be quicker than a graphical method and still holds some merit today. Here you will learn how to use the terminal.

Изначально терминал использовали для управления файлами, и действительно он все еще используется как обозреватель файлов, если графическая среда не работает. Вы можете использовать терминал как обозреватель, чтобы управлять файлами и отменять изменения, которые были сделаны.

Основные команды
Просмотр содержимого каталогов: ls

Команда ls показывает список файлов разными цветами с полным форматированием текста

Создание каталогов: mkdir (имя каталога)

Команда mkdir создает новый каталог.

Перейти в каталог: cd (/адрес/каталога)

Команда cd позволяет перейти в любой указанный вами каталог.

Копирование файла или каталога: cp (что — имя файла или каталога) (куда — имя каталога или файла)

Команда cp копирует любой выбранный файл. Команда cp -r копирует любой выбранный каталог со всем содержимым.

Удаление файлов или каталогов: rm (имя файла или папки)

Команда rm удаляет любой выбранный файл. Команда rm -rf удаляет любой выбранный каталог со всем содержимым.

Переименовать файл или каталог: mv (имя файла или каталога)

Команда mv переименовывает или перемещает выбранный файл или каталог.

Поиск каталогов и файлов: locate (имя каталога или файла)

Команда locate позволяет найти заданный файл на вашем компьютере. Для ускорения работы используется индексация файлов. Для того чтобы обновить индекс, введите команду updatedb. Она запускается автоматически каждый день, если компьютер включен. Для запуска этой команды требуются права супер пользователя (см. «Пользователь root и командна sudo»).

Вы также можете использовать маски, чтобы указать более одного файла, такие как «*» (совпадение со всеми символами) или «?» (совпадение с одним символом).

For a more thorough introduction to the Linux command line, please read the command line introduction on the Ubuntu wiki.

Редактирование текста

All of the configurations and settings in Linux are saved in text files. Even though you most often can edit configurations through the graphical interface, you may occasionally have to edit them by hand. Mousepad is the default Xubuntu text editor, which you can launch by clicking → → on the desktop menu system.

Иногда, Mousepad запускается из командной строки с помощью приложения gksudo, которое запускает Mousepad с административными привилегиями, что позволяет изменять файлы конфигурации.

Если вам необходим текстовый редактор в командной строке, можете использовать nano — простой в использовании текстовый редактор. При запуске из командной строки всегда используйте следующую команду, чтобы отключить автоматический перенос слов:

nano -w

For more information about how to use nano, refer to the guide on the wiki.

There are also quite a few other terminal-based editors available in Ubuntu. Popular ones include VIM and Emacs (the pros and cons of each are cause for much friendly debate within the Linux community). These are often more complex to use than nano, but are also more powerful.

Пользователь root и командна sudo

The root user in GNU/Linux is the user which has administrative access to your system. Normal users do not have this access for security reasons. However, Ubuntu does not enable the root user. Instead, administrative access is given to individual users, who may use the "sudo" application to perform administrative tasks. The first user account you created on your system during installation will, by default, have access to sudo. You can restrict and enable sudo access to users with the Users and Groups application (see «Управление пользователями и группами» for more information).

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

Чтобы использовать sudo в командной строке, просто наберите «sudo» перед командой, которую необходимо выполнить. После этого потребуется ввести ваш пароль.

Sudo will remember your password for 15 minutes (by default). This feature was designed to allow users to perform multiple administrative tasks without being asked for a password each time.

Be careful when doing administrative tasks - you might damage your system!

Some other tips for using sudo include:

  • Чтобы использовать терминал с правами супер пользователя (root), наберите «sudo -i» в командной строке

  • The entire suite of default graphical configuration tools in Ubuntu already use sudo, so they will prompt you for your password if needed.

  • При запуске графических приложений вместо «sudo» используется «gksudo». Это позволяет запрашивать пароль у пользователя в небольшом графическом окне. Команда «gksudo» удобна, если вы хотите установить кнопку запуска Synaptic на вашу панель или что-то подобное.

  • For more information on the sudo program and the absence of a root user in Ubuntu, read the sudo page on the Ubuntu wiki.

www.linuxcookbook.ru

BASH, основы навигации / Хабр

Предисловие

Об этом руководстве

Добро пожаловать в первую из четырех частей обучающего руководства по основам Linux, разработанного чтобы подготовить вас к сдаче экзамена Linux Professional Institute 101. В нем вы познакомитесь с bash (стандартной оболочкой командного интерпретатора в Linux), узнаете о большинстве возможностей таких стандартных команд Linux, как ls, cp и mv, разберетесь в инодах, жестких и символьных ссылках, и многом другом. К концу этого руководства у вас сформируется некий фундамент знаний, и вы будете готовы к изучению основ администрирования Linux. К концу всего курса (8 частей), у вас будет достаточно навыков, чтобы стать системным администратором Linux и пройти сертификацию LPIC Level 1 от Linux Professional Institute, если конечно захотите.

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

Тем, кто изучал первую версию этого руководства с целью, отличной от подготовки к экзамену LPI, возможно, что вам не нужно его перечитывать. Однако, тем же, кто планирует сдавать экзамены, стоит обязательно просмотреть данную исправленную версию.

Введение в bash

Оболочка

Если вы уже использовали Linux ранее, то наверняка знаете, что после входа в систему вас приветствует приглашение, которое выглядит примерно так:

$

На практике приглашение, которое вы видите, может немного отличаться. Например, оно может содержать имя хоста, имя текущей рабочей директории, или все вместе. Не зависимо от того, как выглядит ваше приглашение, есть одна несомненная вещь: программа, которая выводит это приглашение, называется оболочка интерпретатора команд (от англ. shell — оболочка, он же командная строка или терминал — прим. пер.), и, вероятнее всего, вашей командной оболочкой будет 'bash'.

А у вас запущен bash?

Вы можете убедиться, что используете bash, набрав:

$ echo $SHELL /bin/bash

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

О bash

Bash — это акроним от Bourne-again-shell, от англ. «ещё-одна-командная-оболочка-Борна» или «рождённая-вновь-командная оболочка» (тут игра слов Bourne/born — прим. пер.), и является оболочкой по умолчанию для большинства Linux-систем. Задача оболочки получать от вас команды, через которые вы взаимодействуете с Linux-системой. После того, как вы закончили ввод команд, вы можете выйти из оболочки (exit) или закончить сеанс (logout), в этом случае вы увидите приглашение входа в систему.

Кстати, вы также можете выйти из оболочки bash нажав control-D в приглашении.

Использование «cd»

Вы, возможно, уже обнаружили, что пялиться на приглашение bash — не самое впечатляющее занятие в мире. Ну что ж, давайте узнаем как путешествовать по нашей файловой системе. В приглашении введите пожалуйста следующую команду (без $):

$ cd /

Вы только что сообщили bash, что хотите работать в директории /, также известной, как корневая; все директории в системе имеют форму дерева, и / является его вершиной, т.е. корнем (в информатике деревья растут наоборот, корень вверху, а ветки спускаются вниз — прим. пер.). cd устанавливает директорию, в которой вы в данный момент работаете, также известную как «текущая рабочая директория».

Пути

Чтобы узнать текущую рабочую директорию в bash нужно набрать:

$ pwd /

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

Абсолютные пути

Ниже несколько из них:

/dev /usr /usr/bin /usr/local/bin

Как можно заметить, у всех абсолютных путей есть одна общая черта, они начинаются с /. Указывая, допустим, /usr/local/bin в качестве аргумента для cd, мы сообщаем, что хотим попасть в / директорию, затем в usr директорию внутри нее, и так далее в local и bin, вниз по дереву. Абсолютные пути всегда отсчитываются начиная от / сперва.

Относительные пути

Другой тип пути называется «относительный путь». bash, cd, и другие команды всегда интерпретируют их относительно текущей директории. Относительные пути НИКОГДА не начинаются с /. Так, если мы сначала переместимся в /usr:

$ cd /usr

То, затем мы можем использовать относительный путь local/bin, чтобы попасть в директорию /usr/local/bin:

$ cd local/bin $ pwd /usr/local/bin

Использование ..

Относительные пути могут также содержать одну или более ".." директории. Директория ".." специальная; она указывает на родительскую директорию. Так, продолжая с примера выше:

$ pwd /usr/local/bin $ cd .. $ pwd /usr/local

Как видно, наша текущая директория теперь /usr/local. Мы смогли переместиться «назад» на одну директорию относительно текущей, где были до того.

Кроме того, мы также можем использовать ".." в существующем относительном пути, позволяющем нам переместиться в директорию «рядом» с той, в которой находимся:

$ pwd /usr/local $ cd ../share $ pwd /usr/share

Примеры относительных путей

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

$ cd /bin $ cd ../usr/share/zoneinfo

$ cd /usr/X11R6/bin $ cd ../lib/X11

$ cd /usr/bin $ cd ../bin/../bin

А теперь наберите их и проверьте свои предположения. ;)

Понимание .

Перед тем как мы закончим изучение cd, есть несколько моментов, которые необходимо прояснить. Во-первых, есть еще одна специальная директория ".", которая означает «текущая директория». Хотя она и не используется с командой cd, но часто используется для выполнения программы из текущей директории, как в следующем примере:

$ ./myprog

В данном случае будет запущена исполняемая программа myprog, находящаяся в текущей рабочей директории.

cd и домашняя директория

Если бы мы хотели переместиться в нашу домашнюю директорию, то могли бы набрать:

$ cd

Без каких либо аргументов cd переместит в вашу домашнюю директорию, которая будет /root для суперпользователя, или обычно /home/username (где username — имя пользователя в системе — прим.пер.) для любого другого пользователя. Но, что если мы хотим указать файл в нашей домашней директории? Может быть мы хотим передать путь к файлу в качестве аргумента нашей программе myprog. Если файл расположен в нашей домашней директории, мы можем набрать:

$ ./myprog /home/drobbins/myfile.txt

Однако, использования абсолютного пути вроде этого, не всегда удобно. К счастью, мы можем использовать символ ~ (тильда), чтобы проделать то же самое:

$ ./myprog ~/myfile.txt

Другие домашние директории пользователей

Bash воспримет одиночную ~ как указатель на вашу домашнюю директорию, но вы также можете использовать её для указания на домашние директории других пользователей. Например, если мы хотели сослаться на файл под названием fredsfile.txt в домашней директории пользователя fred, то могли бы набрать:

$ ./myprog ~fred/fredsfile.txt

Продолжение...

Об авторах

Daniel Robbins

Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.

Chris Houser

Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.

Aron Griffis

Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа HP ePrint. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».

habr.com

Основы Linux

Самые большие сложности для пользователей продукции Microsoft, пытающихся перейти на операционную систему Linux, связаны с файлами, их именами и структурой файловой системы. Здесь неискушенному в программировании пользователю приходится столкнуться с рядом непонятных терминов, с весьма затейливым сленгом и постоянными упоминаниями об отличии Linux от Windows. На самом деле все не так страшно. Обе операционные системы имеют общие «корни». Ниже предлагается «перевод» понятий Linux на язык «домохозяек» (именно для них была разработана ОС Windows). Причем знание MS DOS облегчит вам понимание смысла команд Linux.

Файловые системы

Любой компьютер обрабатывает информацию, которая хранится в его памяти в виде файлов. Файлы могут быть очень короткие — всего несколько байт (даже у файла нулевого размера заголовок или имязанимает место в оперативной памяти или на винчестере). Иногда файл занимает несколько сотен мегабайт, если это, например, полнометражный видеофильм. Но, независимо от размеров, все файлы хранятся в одной и той же файловой системе, которая всегда организована так, чтобы пользователь мог легко в ней ориентироваться и получать возможность работать с нужными файлами. Обычно, говоря о файловой системе, рассматривают проблему хранения файлов на винчестере, на котором информация хранится в виде небольших блоков — кластеров. Файловая система выделяет каждому файлу необходимое количество блоков и заносит его имя в список файлов, который в рассматриваемых нами системах организован в виде «дерева» каталогов. Вот с этого момента и начинаются различия между файловыми структурами MS DOS и Linux. Начиная с данного уровня эти файловые системы несовместимы, хотя информация хранится в одних и rex же физических блоках. Если для MS DOS/Windows наиболее распространенными являются файловые системы FAT12, FAT16 и FAT32 (Windows NT, 2000 и ХР использует NTFS), то для современных версий операционной системы Linux используется ext2 и ext3 (возможны варианты использования других файловых систем, например Raiser, а также и MS DOS).

Файловая система ext2 (Second Extended, вторая расширенная) разработана на основе файловой системы MINIX (мини-Unix), которая применяется сейчас только для гибких дисков, так как позволяет экономить место. Правда, размер файла в ней не может превосходить 64 Мбайт, а длина имени файла — 30 символов (раньше — 14 символов). Много это или мало? «Вчера» можно было сказать однозначно — для гибкого диска это много, но уже сегодня сменные носители имеют емкость, исчисляющуюся сотнями мегабайт. Файловая система ext3 — это усовершенствованная ext2, в которой введена служба журналирования, как в NTFS. Помимо перечисленных файловых систем, существует множество других. Например, для компакт-дисков используется файловая система iso9660. Все наиболее популярные файловые системы поддерживаются Linux. Это означает, что вы можете получить доступ к информации, хранящейся в этих файловых системах, например, когда на винчестере установлено несколько операционных систем. Правда, для ряда файловых систем (в частности, для NTFS) возможен только режим чтения.

linux9.narod.ru

Основы линукс: Введение в bash

О чем статья

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

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

Введение в bash

Shell

Если вы используете линукс, то знаете что после логина вас приветствует приглашение командного интерпретатора. Например такое:

\$

Если после логина загружается графическая оболочка, то чтобы добраться до командного интерпретатора нужно запустить эмулятор терминала (gnome-terminal, xfce4-terminal, konsole, xterm, rxvt...) или переключиться на один из виртуальных терминалов нажав Ctrl–Alt–F1 или Ctrl–Alt–F2 и т.д.

Приглашение командного интерпретатора на вашем компьютере может отличаться от того что показано в примере. Оно может содержать имя пользователя, имя компьютера и название текущей рабочей директории. Но несмотря на все эти различия, программа которая печатает это приглашение называется "shell" (оболочка), и скорее всего в роли вашей командной оболочки выступает программа которая называется bash.

У вас запущен bash?

Проверить запущен ли bash можно следующей командой:

\$ echo \$SHELL /bin/bash

Если в результате выполнения этой команды вы получили ошибку или её вывод отличается от того что в примере, то возможно в вашей системе в качестве командной оболочки используется не bash. Несмотря на это, большая часть материала будет актуальна, но все же рекомендуем вам переключиться на bash. Сделать это можно (если bash установлен в системе) командой:

\$ bash

Что такое bash

Bash (акроним от "Bourne-again SHell") это стандартный интерпретатор команд на большинстве линукс систем. В его обязанности входит обработка и исполнение команд с помощью которых пользователь управляет компьютером. После того как вы завершили работу, можно завершить процесс командного интерпретатора. После нажатия клавиш Ctrl–D, команд exit или logout процесс командного интерпретатора будет завершен и на экране снова появится приглашение ввести имя пользователя и пароль.

Использование "cd"

Давайте начнем использовать bash для навигации по файловой системе. Для начала напечатайте следующую команду:

$ cd /

Этой командой мы указали bash-у что хотим переместиться в корневую директорию — /. Все директории в системе организованы в древовидную структуру и / это её начало (или корень). Команда cd служит для изменения текущей рабочей директории.

Пути

Чтобы узнать в каком месте файловой системы в данный момент вы находитесь (текущую рабочую директорию) наберите:

\$ pwd /

В приведенном выше примере / — аргумент команды cd — называется путь. Это место файловой системы, куда мы хотим переместиться. В данном случае / — абсолютный путь, это значит что путь указан относительно корневой директории.

Абсолютные пути

Вот несколько примеров абсолютных путей

/dev /usr /usr/bin /usr/local/bin

Как вы уже могли заметить, все эти пути объединяет то, что они начинаются с /. Указывая путь /usr/local/bin в качестве аргумента команде cd мы говорим ей перейти в корневую директорию /, затем в директорию usr, потом в local и bin. Абсолютные пути всегда начинаются с /

Относительные пути

Второй вид путей называется относительными. Bash, команда cd и другие команды отсчитывают эти пути относительно текущей директории. Относительные пути никогда не начинаются с /. Например, если мы находимся в /usr

\$ cd /usr

Затем мы можем перейти в /usr/local/bin используя относительный путь

\$ cd local/bin \$ pwd /usr/local/bin

Использование ".."

Относительные пути могут содержать одну или несколько директорий "..". ".." указывает на родительскую директорию по отношению к нашей рабочей директории. Пример:

\$ pwd /usr/local/bin \$ cd .. \$ pwd /usr/local

Как вы видите, команда cd .. 'поднимает нас на уровень выше'.

Можно добавить .. к относительному пути. Это позволит переместиться в директорию, которая находится на одном уровне с той в которой мы находимся. Пример:

\$ pwd /usr/local \$ cd ../share \$ pwd /usr/share

Примеры с использованием относительных путей

Относительные пути могут быть довольно сложными. Вот несколько примеров. Результат выполнения команд не показан, попробуйте определить в какой директории вы окажетесь используя bash.

\$ cd /bin \$ cd ../usr/share/zoneinfo \$ cd /usr/X11R6/bin \$ cd ../lib/X11 \$ cd /usr/bin \$ cd ../bin/../bin

Рабочая директория "."

Перед тем как закончить разговор о команде cd, следует упомянуть еще несколько вещей. Во-первых, существует ещё одна специальная директория ".", которая указывает на текущую директорию. Эта директория используется для запуска исполняемых файлов, находящихся в текущей директории.

\$ ./myprog

В последнем примере myprog это исполняемый файл находящийся в текущей директории, который будет запущен на исполнение.

cd и домашняя директория пользователя

Для того чтобы перейти в домашнюю директорию, нужно набрать

\$ cd

Без аргумента cd переместит вас в домашнюю директорию. Для суперпользователя домашней обычно является директория /root, а для обычных пользователей — /home/username/. Но что если мы хотим указать конкретный файл, находящийся в домашней директории. Например, как аргумент к программе 'myprog'? Можно написать:

\$ ./myprog /home/user/myfile.txt

Однако, использовать абсолютные пути к файлам не всегда удобно. Эту же операцию можно сделать при помощи ~–тильды:

\$ ./myprog ~/myfile.txt

~ — специальное имя, указывающее в bash на домашнюю директорию пользователя.

Домашние директории других пользователей

Но что если нам нужно указать файл в домашней директории другого пользователя? Для этого после тильды нужно указать имя этого пользователя. Например, чтобы указать на файл fredsfile.txt находящийся в домашней директории пользователя fred:

\$ ./myprog ~fred/fredsfile.txt

Команды линукс

Введение в ls

Вероятно вы уже знакомы с командой ls, которая, вызванная без аргументов, выводит на экран список файлов хранящихся в рабочей директории:

\$ cd /usr \$ ls X11R6 doc i686-pc-linux-gnu lib man sbin ssl bin gentoo-x86 include libexec portage share tmp distfiles i686-linux info local portage.old src

Если указать опцию -a, можно будет увидеть все файлы, включая скрытые (имена которых начинаются с точки).

\$ ls -a . bin gentoo-x86 include libexec portage share tmp .. distfiles i686-linux info local portage.old src X11R6 doc i686-pc-linux-gnu lib man sbin ssl

Подробный список директорий

После самой команды ls в качестве ее аргумента можно указать один или более файлов или директорий. Если указать имя файла, то команда ls выведет информацию только об этом файле. А если указать название директории, ls покажет все ее содержимое. Опция '-l' команды ls бывает очень полезной если вы хотите кроме имен файлов узнать более подробную информацию о них (права на файл, имя владельца, время последнего изменения файла и его размер).

В следующем примере показано применение опции '-l' для вывода информации о файлах хранящихся в директории /usr

\$ ls -l /usr drwxr-xr-x 7 root root 168 Nov 24 14:02 X11R6 drwxr-xr-x 2 root root 14576 Dec 27 08:56 bin drwxr-xr-x 2 root root 8856 Dec 26 12:47 distfiles lrwxrwxrwx 1 root root 9 Dec 22 20:57 doc -> share/doc drwxr-xr-x 62 root root 1856 Dec 27 15:54 gentoo-x86 drwxr-xr-x 4 root root 152 Dec 12 23:10 i686-linux drwxr-xr-x 4 root root 96 Nov 24 13:17 i686-pc-linux-gnu drwxr-xr-x 54 root root 5992 Dec 24 22:30 include lrwxrwxrwx 1 root root 10 Dec 22 20:57 info -> share/info drwxr-xr-x 28 root root 13552 Dec 26 00:31 lib drwxr-xr-x 3 root root 72 Nov 25 00:34 libexec drwxr-xr-x 8 root root 240 Dec 22 20:57 local lrwxrwxrwx 1 root root 9 Dec 22 20:57 man -> share/man lrwxrwxrwx 1 root root 11 Dec 8 07:59 portage -> gentoo-x86/ drwxr-xr-x 60 root root 1864 Dec 8 07:55 portage.old drwxr-xr-x 3 root root 3096 Dec 22 20:57 sbin drwxr-xr-x 46 root root 1144 Dec 24 15:32 share drwxr-xr-x 8 root root 328 Dec 26 00:07 src drwxr-xr-x 6 root root 176 Nov 24 14:25 ssl lrwxrwxrwx 1 root root 10 Dec 22 20:57 tmp -> ../var/tmp

В первой колонке показана информация о правах доступа к каждому файлу в списке. (Немного позже я объясню какая буква что обозначает) Следующая колонка показывает количество ссылок на каждый элемент списка. Третья и четвертая колонки — владелец и группа файла соответственно. Пятая колонка — размер. Шестая — время последнего изменения файла ('last modified time' или mtime). Последняя колонка — имя файла или директории (Если это ссылка, то после знака '–>' стоит имя объекта на который она ссылается).

Как посмотреть только директории

Иногда возникает потребность посмотреть информацию только о директориях, а не о всем их содержимом. С этой задачей поможет справиться опция '-d', которая указывает команде выводить информацию только о директориях. Пример:

\$ ls -dl /usr /usr/bin /usr/X11R6/bin ../share drwxr-xr-x 4 root root 96 Dec 18 18:17 ../share drwxr-xr-x 17 root root 576 Dec 24 09:03 /usr drwxr-xr-x 2 root root 3192 Dec 26 12:52 /usr/X11R6/bin drwxr-xr-x 2 root root 14576 Dec 27 08:56 /usr/bin

Рекурсивный список и информация о инодах

Действие опции '-R' противоположно действию '-d'. Она позволяет выводить информацию о файлах находящихся в директории рекурсивно. Сначала показывается содержимое директории верхнего уровня, потом по очереди содержимое всех поддиректорий и так далее. Вывод этой команды может быть достаточно объемным, поэтому мы не приводим ее пример, но вы можете попробовать сделать это самостоятельно, набрав в командной строке 'ls -R' или 'ls -Rl'.

И, наконец, опция '-i' используется для вывода инодов каждого объекта файловой системы.

\$ ls -i /usr 1409 X11R6 314258 i686-linux 43090 libexec 13394 sbin 1417 bin 1513 i686-pc-linux-gnu 5120 local 13408 share 8316 distfiles 1517 include 776 man 23779 src 43 doc 1386 info 93892 portage 36737 ssl 70744 gentoo-x86 1585 lib 5132 portage.old 784 tmp

Что такое иноды?

Каждый объект файловой системы (файл, директория...) имеет свой уникальный номер, называемый инодом (inode number). Эта информация может показаться незначительной, но понимание функции инодов поможет вам разобраться во многих операциях над файловой системой. Например, посмотрим на "." и ".." как на ссылки, присутствующие в каждой директории. Чтобы понять что из себя представляет директория "..", узнаем инод директории /use/local

\$ ls -id /usr/local 5120 /usr/local

Как можем видеть, инод директории /usr/local — 5120. Теперь посмотрим какой инод у директории /usr/local/bin/..:

\$ ls -id /usr/local/bin/.. 5120 /usr/local/bin/..

Получается, что иноды директорий /usr/local и /usr/local/bin/.. совпадают! Это значит, что на инод 5120 ссылаются два имени: /usr/local и /usr/local/bin/.. То есть это два разных имени одной директории. Каждый инод указывает на определенное место на диске.

С каждым инодом может быть связано несколько имен объектов файловой системы. Количество 'синонимов' файла (объектов файловой системы, ссылающихся на один инод) показывает число во втором столбце вывода команды 'ls -l'.

\$ ls -dl /usr/local drwxr-xr-x 8 root root 240 Dec 22 20:57 /usr/local

На этом примере видно (второй столбец), что на директорию /usr/local ссылаются 8 разных объектов файловой системы. Вот их имена:

/usr/local /usr/local/. /usr/local/bin/.. /usr/local/games/.. /usr/local/lib/.. /usr/local/sbin/.. /usr/local/share/.. /usr/local/src/..

mkdir

Давайте рассмотрим команду mkdir. Она служит для создания новых директорий. В следующем примере демонстрируется создание трех новых директорий (tic, tac, toe) в директории /tmp

\$ cd /tmp $ mkdir tic tac toe

По умолчанию команда mkdir не может создать вложенной структуры директорий. Поэтому, если вам нужно создать несколько вложенных одна в другую директорий (won/der/ful), то вам придется три раза поочередно вызывать эту команду:

\$ mkdir won/der/ful mkdir: cannot create directory 'won/der/ful': No such file or directory \$ mkdir won \$ mkdir won/der \$ mkdir won/der/ful

Упростить эту операцию можно добавив опцию '-p' к команде mkdir. Эта опция позволяет создавать вложенную структуру директорий:

\$ mkdir -p easy/as/pie

Чтобы узнать о возможностях этой утилиты подробнее, прочитайте справку, которая вызывается командой man mkdir. Справки есть практически ко всем командам из этого руководства (например man ls), кроме cd, т.к. она встроена в bash (для таких команд справка вызывается так: help cd)

touch

Перейдем к изучению команд cp и mv, служащих для копирования, переименования и перемещения файлов и директорий. Но перед этим создадим пустой файл в директории /tmp при помощи команды touch:

\$ cd /tmp \$ touch copyme

Команда touch обновляет время последнего доступа к файлу (шестая колонка вывода команды ls -l) если он уже существует или создает новый пустой файл, если его ещё нету. После этой операции у нас должен появиться пустой файл /tmp/copyme.

echo

Теперь, когда у нас есть пустой файл, запишем в него текстовую строку при помощи команды echo, которая выводит переданный ей аргумент на стандартное устройство вывода (текстовый терминал в нашем случае).

\$ echo "firstfile" firstfile

Чтобы записать строку в наш файл, перенаправим в него вывод команды echo:

\$ echo "firstfile" > copyme

Знак > (больше) указывает командной оболочке что нужно перенаправить вывод команды стоящей слева в файл, имя которого находится справа. Если файла с таким именем не существует, он будет создан автоматически. А если такой файл уже есть, то он будет перезаписан (все его содержимое будет стерто перед записью нашей строки). Команда 'ls -l' покажет что размер нашего файла теперь равен 10 байтам — девять байт занимает слово 'firstfile' и один байт символ перевода строки.

\$ ls -l copyme -rw-r--r-- 1 root root 10 Dec 28 14:13 copyme

cat и cp

Для вывода содержимого файла на терминал используется команда cat:

\$ cat copyme firstfile

Теперь мы можем приступить к разбору базовой функциональности команды cp. Эта команда принимает два аргумента. Первый — имя уже существующего файла ('copyme'), второй — название новой копии, которую мы хотим сделать ('copiedme').

\$ cp copyme copiedme

Можем убедиться, что новая копия файла имеет другой номер инода (это значит что мы получили действительно новый отдельный файл, а не просто ссылку на старый)

\$ ls -i copyme copiedme 648284 copiedme 650704 copyme

mv

Теперь применим команду mv чтобы переименовать файл ("copiedme" –> "movedme"). Номер инода после этой операции не меняется, а изменяется только название файла.

\$ mv copiedme movedme \$ ls -i movedme 648284 movedme

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

Команда mv позволяет не только переименовывать файлы, но и перемещать их. Например, чтобы переместить файл /var/tmp/myfile.txt в директорию /home/user нужно дать команду:

\$ mv /var/tmp/myfile.txt /home/user

Файл будет перемещен в домашнюю директорию пользователя user даже если она находится в другой файловой системе (в этом случае файл будет скопирован в новое место после чего оригинал будет удален). Как вы могли уже догадаться, перемещение файла в другую файловую систему приводит к изменению его инода. Это происходит потому, что каждая файловая система имеет свой отдельный набор инодов.

Нужно заметить, существует вероятность, что новый присвоенный номер инода может совпасть со старым, но она чрезвычайно мала.

Чтобы переместить одновременно несколько файлов в одну директорию нужно написать:

\$ mv /var/tmp/myfile1.txt /var/tmp/myfile2.txt /home/user

или

\$ mv -t /home/user /var/tmp/myfile1.txt /var/tmp/myfile2.txt

Если добавить опцию '-v', на экран будет выведен отчет о проделанной операции:

\$ mv -vt /home/user /var/tmp/myfile1.txt /var/tmp/myfile2.txt '/var/tmp/myfile1.txt' -> '/home/user/myfile1.txt' '/var/tmp/myfile2.txt' -> '/home/user/myfile2.txt'

Жесткие ссылки

Я уже упоминал слово "ссылка" когда говорил о директориях и инодах. На самом деле в линуксе существует два вида ссылок. Первый вид называют жесткими ссылками. Каждый инод может иметь несколько связанных с ним жестких ссылок. Таким образом, получается что файл присутствует в системе под несколькими разными именами. Файл существует до тех пор, пока с его инодом связано хотя бы одно имя. Понятия «жёсткая ссылка на файл» и «имя файла» являются синонимами. Новые жесткие ссылки на файл можно сделать при помощи команды ln

\$ cd /tmp \$ touch firstlink \$ ln firstlink secondlink \$ ls -i firstlink secondlink 15782 firstlink 15782 secondlink

Как видно из примера, жесткие ссылки работают на уровне инодов, указывая на определенный файл. В линуксе у жестких ссылок есть несколько ограничений. Во-первых, вы можете создавать жесткие ссылки только на файлы, но не на директории. Вот именно, несмотря на то что в системе существуют жесткие ссылки на директории ('.' и '..'), даже суперпользователь не может создавать дополнительные жесткие ссылки на директории. Во-вторых, невозможно создать жесткую ссылку на файл находящийся в другой файловой системе, т.к. каждая файловая система имеет свой уникальный набор инодов.

Символические ссылки

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

Симлинки создаются командой ln с опцией '-s':

\$ ln -s secondlink thirdlink \$ ls -l firstlink secondlink thirdlink -rw-rw-r-- 2 agriffis agriffis 0 Dec 31 19:08 firstlink -rw-rw-r-- 2 agriffis agriffis 0 Dec 31 19:08 secondlink lrwxrwxrwx 1 agriffis agriffis 10 Dec 31 19:39 thirdlink -> secondlink

Символическую ссылку можно распознать по выводу команды ls -l: во-первых, в первой колонке у симлинков стоит буква 'l' (первая буква английского слова link–ссылка), во-вторых, размер симлинка равен количеству букв в имени файла на который он ссылается ('secondlink' в нашем случае), в-третьих, последняя колонка помимо имени ссылки содержит имя файла на который она ссылается после знака –>

Подробнее о симлинках

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

Рассмотрим ситуацию, когда мы хотим сделать симлинк который указывает на /usr/local/bin и находится в директории /tmp/. Мы можем написать:

\$ ln -s /usr/local/bin bin1 \$ ls -l bin1 lrwxrwxrwx 1 root root 14 Jan 1 15:42 bin1 -> /usr/local/bin

Или

\$ ln -s ../usr/local/bin bin2 \$ ls -l bin2 lrwxrwxrwx 1 root root 16 Jan 1 15:43 bin2 -> ../usr/local/bin

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

\$ ls -l bin2 lrwxrwxrwx 1 root root 16 Jan 1 15:43 bin2 -> ../usr/local/bin \$ mkdir mynewdir \$ mv bin2 mynewdir \$ cd mynewdir \$ cd bin2 bash: cd: bin2: No such file or directory

Так как не существует директории /tmp/usr/local/bin/, мы не сможем сменить рабочую директорию на bin2; другими словами, после перемещения ссылка перестала работать (стала 'битой').

По этой причине, иногда стоит избегать создания симлинков, используя относительные пути. Но иногда это бывает удобно. Рассмотрим такой случай: допустим мы хотим сделать ссылку на программу в /usr/bin (или другими словами присвоить этой программе альтернативное имя):

# ls -l /usr/bin/keychain -rwxr-xr-x 1 root root 10150 Dec 12 20:09 /usr/bin/keychain

Суперпользователь (root) может захотеть сделать ссылку на программу "keychain" с более коротким именем "kc". В этом примере у нас есть рутовый доступ к системе, о чем свидетельствует приглашение bash, изменившееся на "#". Нам нужны права суперпользователя потому, что обычные пользователи не могут создавать файлы в директории /usr/bin/. Теперь мы можем от имени рута создать альтернативное имя для нашей программы:

# cd /usr/bin # ln -s /usr/bin/keychain kc # ls -l keychain -rwxr-xr-x 1 root root 10150 Dec 12 20:09 /usr/bin/keychain # ls -l kc lrwxrwxrwx 1 root root 17 Mar 27 17:44 kc -> /usr/bin/keychain

В этом примере мы создали симлинк kc ссылающийся на файл /usr/bin/keychain.

Эта ссылка полностью рабочая, но она перестанет работать, если мы решим перенести оба файла 'keychain' и 'kc' из директории /usr/bin/ в /usr/local/bin/:

# mv /usr/bin/keychain /usr/bin/kc /usr/local/bin # ls -l /usr/local/bin/keychain -rwxr-xr-x 1 root root 10150 Dec 12 20:09 /usr/local/bin/keychain # ls -l /usr/local/bin/kc lrwxrwxrwx 1 root root 17 Mar 27 17:44 kc -> /usr/bin/keychain

Из-за того что мы использовали абсолютный путь при создании ссылки, она продолжает указывать на файл /usr/bin/keychain, которого больше нет. Но если бы мы использовали относительный путь при создании ссылки, она бы осталась рабочей.

Можно сделать вывод, что ссылки созданные с абсолютными и относительными путями имеют каждая свое применение. Поэтому при создании симлинка нужно выбрать способ, который будет уместнее в данной конкретной ситуации.

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

# cd /usr/bin # ln -s keychain kc # ls -l kc lrwxrwxrwx 1 root root 8 Jan 5 12:40 kc -> keychain # mv keychain kc /usr/local/bin # ls -l /usr/local/bin/keychain -rwxr-xr-x 1 root root 10150 Dec 12 20:09 /usr/local/bin/keychain # ls -l /usr/local/bin/kc lrwxrwxrwx 1 root root 17 Mar 27 17:44 kc -> keychain

Теперь мы можем запускать программу 'keychain', обратившись к ней по имени /usr/local/bin/kc

rm

Теперь когда мы знаем как работают команды cp, mv и ln пришло время узнать как удалять файлы. Обычно, удаление производится при помощи команды rm. Чтобы удалить несколько файлов, просто укажите их имена через пробел в командной строке как аргументы rm:

\$ cd /tmp \$ touch file1 file2 \$ ls -l file1 file2 -rw-r--r-- 1 root root 0 Jan 1 16:41 file1 -rw-r--r-- 1 root root 0 Jan 1 16:41 file2 \$ rm file1 file2 \$ ls -l file1 file2 ls: file1: No such file or directory ls: file2: No such file or directory

Помните, что удаленные файлы невозможно восстановить (хотя можно попробовать). Поэтому многие начинающие пользователи линукс используют опцию '-i' команды rm, которая требует запрашивать у пользователя подтверждение удаления каждого файла.

\$ rm -i file1 file2 rm: remove regular empty file `file1'? y rm: remove regular empty file `file2'? y

В последнем примере перед удалением каждого файла команда rm спрашивает: действительно ли пользователь хочет удалить файл? Чтобы подтвердить удаление, нудно нажать клавишу "y" на клавиатуре, а чтобы отказаться от удаления — клавишу "n".

Прервать выполнение любой команды (если что-то пошло не так как задумывалось) можно нажав комбинацию Ctrl–C.

Сделать так, чтобы команда rm запрашивала подтверждение на удаление каждого файла даже без опции '-i' можно добавив в файл ~/.bashrc с помощью любимого текстового редактора строку:

alias rm="rm -i"

rmdir

Есть два способа удаления директорий: можно поочередно удалить все содержимое директории, а потом использовать команду rmdir для удаления самой директории:

\$ mkdir mydir \$ touch mydir/file1 \$ rm mydir/file1 \$ rmdir mydir

Этот способ обычно называют "метод удаления директорий для неудачников". Намного удобнее использовать команду 'rm -rf' для удаления директории со всем ее содержимым.

\$ rm -rf mydir

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

Что такое wildcards

При повседневном использовании линукса часто возникают ситуации когда нужно выполнить одну простую операцию (например rm) над множеством файлов. В этом случае не очень то удобно перечислять все имена файлов в командной строке:

\$ rm file1 file2 file3 file4 file5 file6 file7 file8

Решить эту проблему можно при помощи шаблонов замены (wildcards). Командный интерпретатор линукс поддерживает возможность указания множества файлов используя шаблоны (по историческим причинам это еще называют "globbing"). Bash и другие команды линукс выбирают только те файлы, которые совпадают с шаблоном. Так, если вам нужно удалить файлы с file1 по file8, нужно написать:

\$ rm file[1-8]

А если нужно удалить все файлы имена которых начинаются со слова file и файл с именем file:

\$ rm file*

Шаблон * соответствует любому символу, последовательности символов или "отсутствию символа". Конечно, шаблоны можно применять не только для удаления файлов, как будет показано ниже.

Если совпадение не найдено

Если вы хотите вывести список файлов в директории /etc/ имена которых начинаются с буквы "g" и файл с именем "g" (если такой существует), нужно написать:

\$ ls -d /etc/g* /etc/gconf /etc/ggi /etc/gimp /etc/gnome /etc/gnome-vfs-mime-magic /etc/gpm /etc/group /etc/group-

Посмотрим что случится если вы укажете шаблон который не совпадает ни с одним именем файла:

\$ ls -d /usr/bin/asdf*jkl ls: /usr/bin/asdf*jkl: No such file or directory

В этом примере мы попытались вывести список файлов имена которых начинаются на "asdf" и заканчиваются на "jkl". Интерпретатор команд выдал сообщение что файлов с такими именами не найдено.

Синтаксис шаблона: * и ?

Мы посмотрели как работает глоббинг (подстановка имен файлов). А теперь рассмотрим подробнее синтаксис шаблонов:

* соответствует нулю или большему количеству символов:

  • /etc/g* — все файлы в директории /etc/ имена которых начинаются с "g" и файл с именем "g".
  • /tmp/my*1 — все файлы в директории /tmp имена которых начинаются с "my" и заканчиваются на "1" (включая файл с именем "my1")

? заменяет один любой символ:

  • myfile? — любой файл чье имя начинается со слова "myfile" за которым следует один любой символ.
  • /tmp/notes?txt — соответствует файлам с именами "/notes.txt" и "notes_txt" (если они существуют в /tmp/).

Квадратные скобки: []

Шаблон '[]' очень похож на '?' но позволяет явно указывать набор символов. Шаблон '[]' совпадает с одним символом из тех что указаны в скобках. Также в скобках можно указать диапазон символов (для этого используется символ –/дефис) или несколько диапазонов подряд, тогда шаблон будет совпадать с одним любым символом из этого диапазона:

  • myfile[12] — соответствует myfile1 и myfile2. Шаблон будет работать пока существует хотя бы один из этих двух файлов.
  • [Cc]hange[Ll]og — соответствует файлам с именами Changelog, ChangeLog, changeLog, и changelog. Как вы могли заметить, использование шаблона [] полезно при поиске имен отличающихся регистром букв.
  • ls /etc/[0-9]* — вывести список файлов в директории /etc/ имена которых начинаются с цифры.
  • ls /tmp/[A-Za-z]* — вывести список файлов в директории /tmp/ имена которых начинаются с буквы (заглавной или прописной)

Конструкция [[] похожа на [], за исключением того что она соответствует единичному символу, не упомянутому между [[ и ]. Например:

  • rm myfile[[9] — удалит все файлы, имена которых состоят из слова "myfile" и идущей за ним одной цифрой, кроме файла "myfile9".

Примеры использования

Вот несколько примеров использования шаблонов. Так как bash интерпретирует символы ?, [, ], * как шаблоны замены, необходимо принять меры предосторожности при использовании аргументов содержащих эти символы. Например, если вы хотите создать файл содержащий строку '[fo]*', то следующая команда сделает не то что вы хотите:

\$ echo [fo]* > /tmp/mynewfile.txt

Если в вашей рабочей директории найдется один или несколько файлов, имена которых попадают под шаблон '[fo]*', то вы обнаружите в /tmp/mynewfile.txt список их имен, а не строку '[fo]*'. Но как же добиться того чего мы хотели? Первый способ — это взять строку в одинарные кавычки. К строке в одинарных кавычках bash относится как к обычной текстовой строке и не раскрывает символы замены.

\$ echo '[fo]*' > /tmp/mynewfile.txt

После выполнения этой команды ваш файл будет содержать строку '[fo]*' как и ожидалось. Другой способ — заэкранировать спец.символы с помощью обратного слэша (\). Бэкслэш стоящий перед спец.символом сообщает интерпретатору, что этот символ нужно рассматривать как обычный текст а не как шаблон.

\$ echo \[fo\]\* > /tmp/mynewfile.txt

Оба предложенных метода (одинарные кавычки и экранирование) дают желаемый результат. Раз уж мы заговорили об экранировании при помощи обратного слэша, стоит сказать, что чтобы указать текстовый символ "\" можно заключить его в одинарные кавычки или написать "\\\" (эта комбинация будет воспринята интерпретатором как обычный одинарный бэкслэш "\")

Замечание: Двойные кавычки работаю почти так же как и одинарные, но позволяют bash-у интерпретировать некоторые спец.символы. Поэтому одинарные кавычки — лучший способ передать команде только текст. Для дополнительной информации о шаблонах читайте справку 'man 7 glob'. Для дополнительной информации об использовании кавычек, читайте раздел QUOTING справки 'man 8 glob'.

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

Смотри также

Оригинал статьи— http://www.funtoo.org/wiki/Linux_Fundamentals,_Part_1 (eng)

linuxgeeks.ru

основы | Рецепты Linux

mensh - ПТ, 10/03/2008 - 08:26

Администрирование пользователей в Linux позволяет: создавать, удалять пользователей, изменять пароли, создавать группы и добавлять и добавлять в их список участников.

mensh - СР, 10/01/2008 - 11:38

Программа fdisk выводит информацию о файловых системах разделов дисков и объеме свободного пространства. По выходным данным fdisk можно также выяснить тип файловой системы любого из разделов диска.

Вывод информации обо всех разделах на всех жестких дисках:

Вывод таблицы разделов для отдельного диска:

mensh - ПН, 09/15/2008 - 17:53

Нужно найти программу или утилиту для выполнения конкретной задачи (скажем, для подсчета слов в файле), но вы не знаете, где искать.

Следует провести поиск по ключевым словам командой apropos или man -k.

Выбор команды неважен.

Например, для поиска команды подсчета слов в файле вводим следующую строку:

mensh - ВС, 09/14/2008 - 11:23

С точки зрения Linux все man-страницы в системе являются частью единого руководства, состоящего из следующих разделов:

mensh - СБ, 09/13/2008 - 13:46

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

mensh - СБ, 05/10/2008 - 19:28

Linux — набор небольших команд и даже при работе с X Window — графическим интерфейсом Linux — работа ведется с набором простых команд. При помощи нескольких нажатий и „связующих элементов“ с помощью командной строки можно скомбинировать набор команд Linux в бесконечное множество операций с данными. Поэтому, для того, чтобы понять эту систему, необходимо изучить команды Linux.

mensh - ВТ, 11/22/2005 - 16:28

Разберемся, как разбивать под Linux выделенное ему свободное пространство диска. Предположим, что в  данный момент существуют 2 Windows-раздела: C: и D:. В ОС Linuxразделы называются по-другому.

mensh - ВТ, 11/22/2005 - 16:22

Современные жесткие диски объемом в десятки и сотни гигабайт принято разбивать на „логическе диски“ или разделы (partitions). Раздел — это множество последовательно расположенных секторов на диске, воспринимаемое операционной системой как отдельный независимый диск. При разбиении диска создается так называемая таблица разбиения диска — набор индексов или ссылок (адресов), определяющих размещение разделов на диске.

mensh - ВТ, 11/22/2005 - 16:14

Файловая система — это организация данных и метаданных на устройстве хранения. В Linux в отличие от Windows есть только одна файловая структура. Она начинается от корня (/), и все локальные файловые системы, все локальные устройства и все удаленные системы представлены в ней подкаталогами.

mensh - ВТ, 11/22/2005 - 15:40

Файловая структура Linux строится при инсталляции системы на основе информации из файла /etc/fstab. Разделам жесткого диска и другим устройствам хранения данных Linux определяет каталоги в корневой файловой структуре. Структуру иерархии можно полностью настраивать и менять на лету.

Страницы

www.linuxcookbook.ru

Основы Linux

Аннотация курса

Операционная система Linux, Являясь по своей природе открытой системой со свободно-распространяемыми исходными кодами,  стала de-facto основой вычислительной инфраструктуры подавляющего большинства университетов и вычислительных лабораторий во всем мире. Ее внедрение не требует никаких лицензионных отчислений кому бы то ни было. Поэтому, для современного ученого владение навыками работы в этой системе становятся жизненно необходимым, и важным конкурентным преимуществом на мировом рынке занятости. В данном практическом спецкурсе рассматриваются пользовательские приемы работы в ОС Linux, подробно изучается интерфейс командной строки, приемы автоматизации работы и пакетной обработки данных, верстки научных статей,  а также особенности разработки ПО с использованием встроенного инструментария. Также рассматривается система кросс-платформенного объектно-ориентированного программирования графического интерфейса QT, и дается краткое введение в мат. моделирование и математический пакет matlab. и издательский пакет Latex

Введение

Первая версия ядра операционной системы Linux была написана более 20 лет назад таким же студентом, как ты, в качестве курсовой работы по программированию на втором курсе. К тому моменту, как этот студент, Линус Торвальдс, окончил Хельсинский Политехнический институт, практически все ведущие производители оборудования и программного обеспечения уже заявили о своей поддержке этой ОС. Сегодня - Linux является основной платформой для научных вычислений, коммерческих серверных приложений, мобильных устройств, встраиваемых систем реального времени, а также стандартной основой рабочих мест во многих отраслях, будь то 3D-анимация, нефтеразведка, или обычный учебный класс в вузе или школе.

Причинами столь впечатляющего успеха являются не только следование общепринятым мировым стандартам в области ПО (POSIX), стремление к максимально возможной совместимости с существующим апаратным и программным обеспечением, но и беспрецендентая открытость процесса разработки. С момента первого сообщения о создании новой операционной системы, и по сегодняшний день любой желающий может принять участие в ее разработке и тестировании, и результат его труда увидят все остальные разработчики и пользователи. Благодаря этому, ОС Linux сегодня поддерживает рекордное количество аппаратных архитектур, устройств и файловых систем, и является ведущей площадкой для тестирования и внедрения последних инноваций в области IT.

Приобретаемые знания и умения

В результате обучающийся должен освоить приемы и навыки работы в ОС Linux, познакомиться с интерфейсом командной строки Linux, научиться использовать встроенных инструментарий для разработки ПО, и научиться писать программы с графическим интерфейсом, необходимые для написания курсовой работы.

Образовательные технологии

Курс имеет электронную версию для презентации. Лекции читаются с использованием современных мультимедийных возможностей и проекционного оборудования. Практические занятия проходят в компьютерном классе.

Программное обеспечение

  • OS Linux, gcc 4.3 и выше

Контроль успеваемости

  • Промежуточная аттестация проводится на 8 неделе, про итогам текущей успеваемости. Критерии формирования оценки – выполненные практические задания, подготовленные доклады и рефераты
  • Текущая аттестация проводится еженедельно. Критерии формирования оценки – посещаемость занятий, активность студентов на семинарах, уровень подготовки к семинарам, выполнение домашних заданий

Программа курса

3 семестр:

  • Устройство и архитектура ОС Linux
  • Использование консольного интефейса командной строки, автоматизация работы (скрипты bash)
  • Основные команды и утилиты командной строки (включая grep, sed, awk, ImageMagik, т.д.)
  • Консольные текстовые редакторы (vi, Emacs)
  • Управление удаленной системой (ssh, X11, VNC)
  • Консольные и графические инструменты разработки на С/С++ (gcc, make, cmake, gdb, ddd, eclipse, QTCreator)

 4 семестр:

  • Использование библиотеки QT для создания кроссплатформенных приложений с богатым графическим интерфесом,
  • Многопотоковое и сетевое программирование средствами QT
  • Основы компьютерной физики (мат. моделирование, анализ данных эксперимента)
  • Прикладные пакеты математического программирования  (octave, matlab)
  • Прикладные математические библиотеки C++ (Eigen), основы параллельного программирования (

engineering.phys.msu.ru