В 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 | Создает ссылки на файлы вместо копирования; смотрите ниже |
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.
Ссылки на файлы
Одна притягательная возможность файловой системы 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