План перехода с Windows на Linux: Часть 2. Работа в консоли

Краткое введение в консоль Linux

e-business архитектор IBM Крис Волден, ваш гид по всей серии developerWorks, поможет перенести навыки работы с Windows в Linux. Он охватит все от входа в систему до компиляции пакетов из исходника. В этой части описаны оболочки и важнейшие команды Linux.

Крис Волден, e-business архитектор, IBM

Крис Волден (Chris Walden) -- e-business архитектор в IBM Developer Relations Technical Consulting, Остин, штат Техас, он занимается образовательской деятельностью, внедрением и консультированием среди бизнес-партнеров IBM. Он -- официальный местный фанатик Linux и распространяет хорошие новости среди тех, кто их слушает. Помимо исполнения обязанностей архитектора он управляет всеми Linux-серверами инфраструктуры, которые содержат файловые сервисы, сервисы печати и другие прикладные сервисы в кроссплатформенном пользовательском окружении. Имеет десятилетний опыт работы в компьютерной отрасли от осуществления поддержки до разработки Web-приложений и консалтинга.



02.04.2007

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

Подключение консоли

Если ваша система загружается в текстовом режиме (обычная конфигурация для серверов, чтобы получать на консоль вывод сообщений основных процессов), то вы уже в консоли при входе в систему. Обычно в системе Linux можно попасть на дополнительные консоли, нажав клавиши Ctrl + Alt + (F1 – F6). Каждая консоль -- это совершенно отдельная сессия в системе и может использоваться разными пользователями в одно и то же время.

Такое "многоконсольное" поведение отличается от "многодесктопового" в Windows. В Linux каждая консоль может контролироваться совершенно разными пользователями. Например, можно войти пользователем root на первую консоль, и пользователем joeuser на вторую. Обе консоли запускают разные программы в пространстве своего пользователя. В том же духе, разные пользователи могут удаленно входить в систему Windows. В этом случае Linux дает возможности скорее как мэйнфрейм, нежели простой сервер или рабочая станция.

Если же вы работаете в графическом режиме, то можете открыть терминал, чтобы получить доступ к окну с консолью. Обычно на панели задач рабочего стола есть кнопка терминала либо его можно найти в меню Program в System Tools. Терминал также можно открыть из контекстного меню (появляется по щелчку правой кнопкой мыши на рабочем столе).


Команды

Из консоли доступно много дополнительных команд. Некоторые из них действительно полезны только при написании скриптов. Здесь приведены некоторые из тех, которые вероятно вам потребуются. Не забывайте, что все команды и ключи чувствительны к регистру. -R не то же самое, что -r и, скорее всего, приведет к другому результату. Консольные команды почти всегда пишутся в нижнем регистре.

cd
Для перемещения по каталогам используется знакомая команда cd. Главное -- запомнить, что там, где вы привыкли к обратному слэшу (\), в системе Linux используется прямой (/). Обратный слэш тоже встречается, но по другому поводу -- он указывает, что команда будет продолжена на следующей строке. Это иногда делается для лучшей читаемости при наборе очень длинных команд.

ls
Список файлов в каталоге вызывается командой ls. Есть несколько ключей, с помощью которых можно менять вид списка:

Вывод списка файлов
ls -lПоказывает расширенный вывод, включающий в себя размеры файлов, дату и время последнего изменения и атрибуты
ls -tСортирует файлы по времени
ls -SСортирует файлы по размеру
ls -rПри использовании вместе с одним из ключей для сортировки изменяет порядок вывода. ls -lt показывает самые новые файлы в самом верху списка. ls -lrt показывает самые новые файлы в самом низу.
ls -hУдобочитаемый. Использует дружественные индикаторы k, M и G, которые показывают размер файла в понятных человеку единицах, а не отображают его в байтах.
ls -aПоказывает все файлы в каталоге, даже скрытые

cp
Копируются файлы с помощью команды cp. Она работает точно так же, как и copy в DOS. Основные ключи:

Копирование файлов
cp -RКопирует файлы рекурсивно; используется при копировании каталога со всем его содержимым
cp -fКопирует и перезаписывает существующие файлы без запроса подтверждения
cp -lСоздает ссылки на файлы вместо копирования; смотрите ниже

Создание ссылок с помощью команды копирования

С помощью команды cp можно быстро устанавливать жесткие ссылки на файл или целую файловую структуру. При создании ссылок используйте ключ -l. Все каталоги будут созданы как каталоги, а все файлы будут установлены как жесткие ссылки.

cp -lR /data/accounting/payroll /data/management/hr

Такая команда скопирует полную структуру каталога /data/accounting/payroll в /data/management/hr/payroll. Все файлы в структуре будут ссылками. Это может пригодиться, чтобы обеспечить разные представления одних и тех же файлов внутри одной файловой системы. Кроме того, это полезная безопасная технология, позволяющая доступ к файлам из другого каталога с другим контролем доступа.

mv
С помощью команды mv перемещают и переименовывают файлы. Команда работает абсолютно так же, как и DOS'овская move, за тем исключением, что она переместит полностью и каталоги, и файлы.

cat
Просматривать файлы можно командой cat. В DOS'е ей соответствует type. Эта команда выдаст содержимое файла в другой файл или на экран, или на вход другой команды. cat -- это сокращение от "concatenate" (объединять), так что можно использовать ее для объединения нескольких файлов в один большего размера.

more
Командой more можно просматривать информацию постранично. Работает так же как DOS'овская more.

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

vi
Некоторые скажут, что vi аббревиатура от «virtually impossible» (практически невозможный). Использование этого текстового редактора является давней традицией в мире Unix. vi в самом деле не слишком интуитивно понятен, но зато доступен почти в любом UNIX-подобном окружении. Для версии, установленной в Linux, есть встроенный учебник, и однажды научившись, вы сможете делать некоторые поистине невероятные вещи нажатием всего нескольких кнопок. В самом деле, ни один редактор не заменит vi для редактирования файлов с паролями и конфигурациями.

man
Документацию по той или иной команде можно увидеть с помощью команды man. Man -- это сокращение от manual (справочник). Документация обычно полная. Узнать больше о команде man можно, напечатав:

man man

info
info похожа на man, за исключением поддержки гиперссылок, что делает перемещение по документации более простым.


Какой shell?

Одно серьезное отличие системы DOS/Windows от Linux -- это то, что оболочка командной строки представляет собой слой, отделенный от операционной системы. Окружение оболочки затрагивает такие возможности, как редактируемые командные строки и прокручиваемые истории. Оболочка также определяет синтаксис, который требуется для создания функций в скриптах. В DOS/Windows была только одна возможность для написания скриптов -- скромный файл .BAT. Он мог многое, но для выполнения более неординарных задач требовал немало изобретательности со стороны пишущего скрипт. В Linux скрипты могут содержать циклы и выполнять больше, чем просто условные операторы, включая многие вещи, которые вы ожидаете от языка программирования. Если вы хорошо писали .BAT файлы, то скрипты shell будут получаться блестяще.

Shell по умолчанию -- это свой параметр у каждого пользователя. Обычно в Linux это /bin/bash, но может быть и какой-нибудь другой. Документация man для каждого shell'а действительно очень хорошая, в ней детально рассмотрены shell'ы и как они работают. Чем пытаться рассказать все здесь, лучше выберите shell из списка, приведенного ниже, и посмотрите его справочную информацию (man page).

bash
Оболочка bash -- свободная версия Bourne shell, первой Unix оболочки, плюс множество дополнительных свойств. Bash имеет редактируемые командные строки, прокручиваемую историю команд и дописывание кнопкой tab, чтобы не приходилось набирать длинные названия файлов.

csh
C shell использует C-подобный синтаксис и заимствует много свойств из Bourne shell, однако использует другой набор внутренних shell команд.

ksh
Korn shell использует тот же синтаксис, что и Bourne shell, и включает в себя дружественность к пользователю от C shell. ksh используется во многих установочных скриптах, поэтому вероятно должен быть в системе, даже если не является основной оболочкой.

tcsh
TC shell -- улучшенная версия C shell и на 100% совместима с ней.

zsh
Z shell -- улучшенная версия Korn shell со многими свойствами bash shell.

Игра Shell

Вы можете сменить свою оболочку в любой момент просто запустив ее из консоли. Скрипт может определить, какой shell запустить, если в самом начале файла, указывающего на нужный shell написать специальный значок (#!). Скрипт будет выполняться в правильном shell'е, но пользовательскую оболочку не затронет. Далее приведен пример строки, которая запускает скрипт в C shell:

#!/bin/csh


Соедини меня, Скотти!

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

Жесткая ссылка может указывать на файлы только в той же файловой системе. Она обеспечивает связь с физическим индексом файла (иначе inode) в файловой системе. Жесткие ссылки не разрываются при перемещениях оригинала, поскольку они все указывают скорее на физические данные файла, нежели на его местонахождение в файловой структуре. Файл с жесткой ссылкой не требует от пользователя прав доступа к исходному файлу и не показывает его расположение, что дает некоторые преимущества по безопасности. Если вы удалите файл, к которому есть жесткие ссылки, он все равно останется до тех пор, пока не будут удалены и все ссылки на него.

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

Оба вида ссылок можно создать при помощи команды ln <source> <target>. По умолчанию ln создает жесткую ссылку, а с ключом -s -- символьную.

# Create a hard link from MyFile in the current
# directory to /YourDir/MyFile
ln MyFile /YourDir

# Create a symbolic (soft) link from MyFile in
# the current directory to /YourDir/YourFile
ln -s MyFile /YourDir/Yourfile

В приведенных выше примерах MyFile, /YourDir/MyFile и /YourDir/Yourfile рассматриваются как один и тот же файл.


Выход из оболочки

Умение работать из консоли –- это необходимый опыт для администрирования Linux. Существует инструментарий, позволяющий избежать общения с консолью, но с ним вы будете более ограничены в возможностях. Подключиться к консоли просто и получить документацию к командам тоже несложно с помощью команд man и info.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=206050
ArticleTitle=План перехода с Windows на Linux: Часть 2. Работа в консоли
publish-date=04022007