Было бы хорошо если бы изучая Ленкцию можно было скачать файлы, используемые для тренировки в терминале. (lesson6_st.txt и т.п.) |
Командные оболочки. Занятие первое
Ход занятия
1. В мире Linux и Unix работа на компьютере неразрывно связана с понятием командная оболочка (shell) – программа, позволяющая пользователю взаимодействовать с системой посредством ввода и выполнения команд. Тем не менее, командная оболочка является обычной программой. Доказать это можно, установив в качестве оболочки по умолчанию в файле passwd для пользователя другую программу. Но для того, чтобы система знала ее как оболочку, необходимо добавить абсолютное имя файла в /etc/shells .
В составе Linux идет несколько командных оболочек, их состав может меняться в зависимости от дистрибутива, но всегда вы сможете обнаружить:
Bourne Shell (sh) – самая старая и самая распространенная командная оболочка для Unix-систем. Нет ни одной системы Unix, где она бы не применялась.
Bourne Again Shell (bash) – расширенная Bourne Shell . Обладает массой приятных преимуществ, поэтому стала так популярна в последнее время. Является оболочкой "по умолчанию" практически для всех дистрибутивов Linux.
Также популярными оболочками являются:
csh – оболочка, система команд которой близка к языку программирования C
tcsh – оболочка, система команд которой близка к языку программирования Tcl.
zsh – оболочка, обладающая, наверное, самыми широкими возможностями. Является расширением sh (bourne shell).
Поскольку в Linux "по умолчанию" используется bash , то о ней мы и поговорим.
2. Командная оболочка bash изначально являлась свободно-распространяемым аналогом Bourne Shell. В последствии, когда ее возможности выросли, тогда ее стали считать самостоятельным продуктом. Основными возможностями bash можно назвать следующие:
С перенаправлением ввода-вывода и каналами мы познакомимся позднее, на 8-м занятии. Поэтому этот пункт мы опустим. А вот об особенностях работы в bash, о предоставляемых им преимуществах поговорим подробнее.
Bash автоматически записывает все команды, набранные пользователем в файл ~/.bash_history . Для управления этим файлом служит команда history. history - это встроенная команда bash . То есть, исполняемого файла, соответствующего этой команде не существует. Сама командная оболочка выполняет все действия. Введенная без параметров, она просто выводит список всех команд, сохраненных в этом файле и идентична команде cat ~/.bash_history .
История команд существует для упрощения набора часто используемых команд. Историю команд можно перебирать по списку клавишами <вверх> и <вниз> .
Другой способ – набрать в командной строке ! и начало команды и нажать <Enter> . Последняя команда из истории, первые буквы которой совпадают с набранными, будет выполнена. Например:
Пример1:
[gserg@WebMedia gserg]$ !/usr /usr/bin/perl ./ptest.pl OK [gserg@WebMedia gserg]$ !xfonts bash: !xfonts: event not found [gserg@WebMedia gserg]$
Но как ускорить ввод, если в истории еще нет необходимой нам команды? В этом случае нам поможет клавиша <Tab> . Набрав несколько первых букв команды (или пути к файлу), нажмите <Tab> и Bash автоматически дополнит вашу команду (или элемент пути). В случае, когда подходит несколько файлов или ни один файл не подходит, система выдаст звуковой сигнал. Если кнопку <Tab> нажать повторно, то когда подходит несколько файлов – система выведет список, а когда ни одного – повторит звуковой сигнал
3. С первого занятия вы должны были помнить, что Linux – многозадачная среда. Однако, до сих пор Вы еще так и не смогли воспользоваться его многозадачностью. На первый взгляд кажется, что консоль не позволяет использовать возможности многозадачности системы, и только в графической среде можно запустить одновременно две или более программы. Но это не так! Консоль тоже многозадачная.
Во-первых, вы можете открыть несколько консолей, открыв в каждой из них по программе. Переключение между консолями будет производиться с помощью клавиш Ctrl+ <Alt+Fx> , где x – номер консоли.
И даже в одной консоли с помощью команд управления заданиями Вы можете в полной мере использовать все преимущества многозадачной системы.
<Ctrl+Z> – комбинация клавиш, посылающая процессу неперехватываемый сигнал sigstop . Позволяет остановить выполнение процесса для передачи управления командной строке.
команда & – символ & после команды позволяет запустить ее в фоновом режиме.
jobs – выводит список текущих заданий командного интерпретатора.
bg <#j> – переводит задание #j в фоновый режим. Перед этим задание должно быть остановлено комбинацией клавиш <Ctrl+z> . Если на данный момент у интерпретатора есть только одно задание, то номер можно не указывать.
fg <#j> – переводит задание #j в режим выполнения на переднем плане. Задание должно быть остановлено комбинацией клавиш <Ctrl+Z> или находиться в фоновом режиме. Если на данный момент у интерпретатора есть только одно задание, то номер можно не указывать.
Пример2:
[gserg@WebMedia gserg]$ man bash ^Z [1]+ Stopped man bash [gserg@WebMedia gserg]$ vim ^Z vim [2]+ Stopped vim [gserg@WebMedia gserg]$ bg 1 [1]+ man bash & [gserg@WebMedia gserg]$ jobs [1]+ Stopped man bash [2]+ Stopped vim [gserg@WebMedia gserg]$ fg 2 [2]+ vim [gserg@WebMedia gserg]$ fg [1]+ man bash [gserg@WebMedia gserg]$
4. Переменные среды – системная информация, указывающая Ваши предпочтения, такие как текстовый редактор по умолчанию, пути поиска исполняемых файлов и т.п., а также идентификационные данные пользователя, системы и командной оболочки, такие как имя пользователя, версия Linux и прочее, используемая командным интерпретатором и другими программами.
Часто используемые пользователем переменные это:
PATH – переменная содержит пути, в которых системе следует искать исполняемые файлы, если в командной строке не набирается полный или относительный путь к ним.
PWD – переменная содержит полное имя текущей директории.
HOME – переменная содержит полный путь домашнего каталога пользователя.
HOSTNAME – переменная содержит имя компьютера.
LOGNAME – содержит имя пользователя, сеанс которого открыт сейчас.
SHELL – содержит имя командной оболочки, запущенной в текущем сеансе.
USER - содержит имя пользователя, сеанс которого открыт сейчас.
Список переменных, установленных в системе можно увидеть с помощью команды export , введенной без параметров.
Командный интерпретатор bash имеет и свои переменные. Чтобы локальные переменные стали системными их необходимо экспортировать с помощью все той же команды export.Например:
Пример3:
[gserg@WebMedia gserg]$ export declare -x HOME="/home/gserg" declare -x HOSTNAME="WebMedia" declare -x LANG="ru_RU.KOI8-R" declare -x LOGNAME="gserg" declare -x PATH="/bin:/usr/bin:/usr/local/bin:/home/gserg/bin" declare -x PWD="/home/gserg" declare -x SHELL="/bin/bash" declare -x TERM="Eterm" declare -x USER="gserg" [gserg@WebMedia gserg]$ EDITOR=/bin/vim [gserg@WebMedia gserg]$ export EDITOR [gserg@WebMedia gserg]$ export declare -x EDITOR="/bin/vim" declare -x HOME="/home/gserg" declare -x HOSTNAME="WebMedia" declare -x LANG="ru_RU.KOI8-R" declare -x LOGNAME="gserg" declare -x PATH="/bin:/usr/bin:/usr/local/bin:/home/gserg/bin:" declare -x PWD="/home/gserg" declare -x SHELL="/bin/bash" declare -x TERM="Eterm" declare -x USER="gserg" [gserg@WebMedia gserg]$
Команда unset удаляет системную переменную. Например:
Пример4:
[gserg@WebMedia gserg]$ unset EDITOR [gserg@WebMedia gserg]$ export declare -x HOME="/home/gserg" declare -x HOSTNAME="WebMedia" declare -x LANG="ru_RU.KOI8-R" declare -x LOGNAME="gserg" declare -x PATH="/bin:/usr/bin:/usr/local/bin:/home/gserg/bin:" declare -x PWD="/home/gserg" declare -x SHELL="/bin/bash" declare -x TERM="Eterm" declare -x USER="gserg" [gserg@WebMedia gserg]$
5. На сегодняшнем занятии мы познакомимся с вами с еще одной, немного нестандартной, командной оболочкой Midnight commander . Это не командная оболочка в обычном понимании. Это текстовый файловый менеджер – аналог Norton Commander или Far . Midnight commander запускается командой mc . Мы поговорим о его возможностях.
Экран Midnight commander'а разделен на две части. Практически все пространство экрана занимают две панели со списком каталогов и файлов. По умолчанию, вторая снизу экрана линия представляет собой командную строку, в которой Вы можете выполнять обычные команды оболочки, а на самой нижней линии изображены подсказки для функциональных клавиш ( F1-F10 ). Верхняя линия символов содержит меню, с помощью которого возможно выполнение множества функций. Для использования меню Вы можете кликнуть мышью в необходимый пункт или нажать клавишу F9 и с помощью клавиш управления курсором выбрать нужный пункт.
Панели Midnight commander обеспечивают просмотр одновременно двух каталогов. Одна из панелей является активной (в том смысле, что пользователь может выполнять те или иные действия с находящимися в ней файлами и каталогами). В активной панели подсвечено имя одного из файлов или каталога, а также выделен цветом заголовок панели в верхней строке. Имя заголовка совпадает с названием каталога, отображаемого в данный момент. Почти все операции выполняются в активной панели. Некоторые операции, такие как перенос или копирование файлов используют пассивную панель в качестве места, куда производится копирование, перенос и т.д.
Теперь поговорим об основных сочетаниях клавиш, которые помогут Вам работать с Midnight commander'ом .
для смены активной панели применяются клавиши <TAB> или <Ctrl>+<I>
для того, чтобы отметить файл, нажмите <Insert> или <Ctrl>+<T>
нажмите <F1> для получения справки
<F3> вызовет просмотрщик файлов
с помощью <F4> вы отредактируете файл
<F5> позволит Вам скопировать файл.
<F6> перенести или переименовать файл
<F7> создать каталог
Клавиша <F8> позволит удалить файл и/или каталог
<F9> , как уже говорилось, открывает доступ к меню.
<F10> – позволит выйти из Midnight commander .
<Home> переведет указатель в начало списка файлов,
<End> - напротив – в конец списка.
<PageUp> и <PageDown> изменят положение показателя на страницу вверх и вниз соответственно.
Клавиша <*> на дополнительной клавиатуре позволит инвертировать выделение файлов (она не действует на каталоги)
Клавиша <+> на дополнительной клавиатуре позволит отметить файлы по маске, а <-> снять отметку с файлов по маске.
<Ctrl>+<R> - обновить содержание директории (перечитав с диска или из сети)
<Ctrl>+<U> - поменять местами правую и левую панели.
<Ctrl>+<O> - убрать/вернуть панели.
Хотя сочетания быстрых клавиш являются оптимальным инструментом для того, чтобы сделать работу с Midnight commander'ом максимально быстрой и удобной, новичкам довольно тяжело выучить их сразу все. Чтобы восполнить этот пробел и добавить другие возможности, для которых отсутствуют комбинации клавиш, Midnight commander имеет меню (вызываемое по F9 ).
Меню состоит из пунктов: "Левая панель", "Файл", "Команда", "Настройки", "Правая панель" .
"Левая/правая панель" - эти пункты меню совершенно одинаковые. Различия между ними заключаются только в том, что выполняемые действия будут адресованы в левую или правую панель.
"Формат списка" - открывает диалоговое окно, в котором можно выбрать вид, в котором будет отображаться список файлов/каталогов. На выбор предлагается стандартный, укороченный и расширенный форматы. Однако пользователь в этом окне может и сам определить вид панели таким, какой его будет устраивать, выбрав переключателем "Определенный пользователем".
"Быстрый просмотр" - переводит панель в режим автоматического просмотра файлов, выбираемых на соседней панели. Фокус автоматически переключается на противоположную панель.
"Информация" - переводит панель в режим просмотра информации о файле, подсвеченном в соседней панели, такой как положение, права доступа и владелец, файловая система и устройство, на котором он расположен, количестве жестких ссылок, связанных с этим файлом, а также информации об устройстве, на котором расположен файл,
"Дерево" - переводит Midnight commander в режим, похожий на режим работы Проводника из OC Windows. В панели, к которой применена команда "Дерево" , строится дерево каталогов, по которому можно перемещаться с помощью стрелок управления курсором, клавиш PageUp, PageDown, Home, End . В соседней панели высвечивается содержимое каталога, подсвеченного в дереве.
"Порядок сортировки" - открывает диалоговое окно, в котором вы можете выбрать атрибут, по которому будет производиться сортировка файлов и каталогов в списке из таких как имя, расширение, время правки, время доступа, время изменения атрибутов, размер, узел (на котором расположен файл). Также можно оставить файлы без сортировки, сортировать с учетом регистра или в обратном порядке.
"Фильтр" - позволяет выбрать имена файлов, которые будут отображаться в панели с помощью регулярного выражения, введенного в диалоговом окне.
"FTP-соединение" - с помощью этой команды Вы можете установить соединение с удаленным (или даже локальным) компьютером по протоколу ftp . Если введен только адрес удаленного сервера, то Midnight commander попытается установить анонимное соединение. Полная же строка, с помощью которой задается узел такова:
ftp:имя_пользователя:пароль@адрес_сервера:порт/каталог_на_сервере
После установки соединения, работа с удаленной файловой системой происходит аналогично работе с локальной ФС.
"Shell-соединение" - позволяет открыть сетевое соединение по протоколу FISH ( FIle transfer over SHell – передача файлов посредством оболочки). FISH использует протоколы RSH (Remote SHell – удаленная оболочка) или SSH (Secure SHell – защищенная оболочка, аналог RSH , но с поддержкой шифрования передаваемых данных). Полная строка, с помощью которой пользователь может задать удаленный узел такова:
sh:имя_пользователя@адрес_сервера:опции/каталог_на_сервере
Параметр имя_пользователя , опции и каталог_на_сервере не обязательны. Если имя пользователя не указано, то Midnight commander будет пытаться зарегистрироваться на удаленной системе с именем пользователя, используемым на локальном компьютере.
"Пересмотреть" - аналог комбинации клавиш <Ctrl>+<R> - вызывает обновление списка файлов и каталогов в текущей панели, перечитав их с диска или по сети.
"Файл" - раздел меню, пункты которого обеспечивают основные функции обработки файлов и каталогов, такие как:
"Меню пользователя" - позволяет вызвать меню, которое устанавливает сам пользователь. Также вызывается клавишей <F2> .
"Просмотр файла" - аналог функции, выполняемой по нажатию <F3>. Позволяет просмотреть подсвеченный файл (или зайти в каталог). Поддерживает множество форматов, таких как текстовые форматы, архива, Winword DOC, исполняемые файлы Linux и т.д.
"Просмотр файла..." - то же, что и предыдущий пункт, но действует не на подсвеченный файл, а на тот, имя и путь к которому будет введен в диалоговом окне.
"Просмотр команды" - позволяет выполнить команду и просмотреть ее стандартный вывод в режиме просмотра файла.
"Редактирование" - открывает файл для правки. Простой встроенный текстовый редактор имеет достаточный набор встроенных функций для редактирования файлов конфигурации, исходных текстов программ и т.д., а встроенная автоматическая подсветка синтаксиса делает редактирование более удобным, а редактируемые тексты более удобочитаемыми.
"Копирование" - копирует файл из активной панели в пассивную. Аналог функции, вызываемой по <F5> . По умолчанию, копируемым считается подсвеченный в активной панели файл (или группа файлов), а местом назначения- каталог, открытый в пассивной панели. Это можно изменить, поправив значения полей, в открывающемся после вызова этой команды, диалоге.
"Права доступа" - позволяет изменить права доступа к файлу (или группе файлов) в диалоговом окне.
"Жесткая ссылка" - создает жесткую ссылку для файла, подсвеченного в активной панели. Путь к ссылке необходимо указать в диалоговом окне.
"Символич. ссылка" - создает символическую ссылку. По умолчанию за адресуемый принимается файл, подсвеченный в активной панели, а создаваемая ссылка будет иметь то же имя и располагаться в каталоге, открытом в пассивной панели. Пользователь может изменить это в открывающемся диалоговом окне.
"Права ссылки" - команда позволяет изменить права доступа к символической ссылке (а не адресуемому ею файлу).
"Владелец/группа" - изменяет владельца и/или группу, к которой принадлежит файл/каталог.
"Права (расширенные)" - позволяет изменять одновременно права доступа к файлу и его владельца и/или группу. Права доступа представлены в виде трех последовательностей rwx для владельца, группы и всех пользователей.
"Переименование" - позволяет переименовать/переместить файл. Аналог функции, вызываемой по <F6> . По умолчанию, перемещаемым/переименуемым считается подсвеченный в активной панели файл (или группа файлов), а местом назначения- каталог, открытый в пассивной панели. Это можно изменить, поправив значения полей, в открывающемся после вызова этой команды, диалоге.
"Создание каталога" - создает каталог. Аналог функции, вызываемой по <F7> . По умолчанию, каталог создается в каталоге, открытом в активной панели. Это можно изменить, если в открывшемся диалоге указать полный путь к создаваемому каталогу.
"Удаление" - удаляет файл/группу файлов/каталог. Аналог функции, вызываемой по <F8> .
"Смена каталога" - меняет текущий каталог. Аналогична команде cd командного интерпретатора Bash . Необходимый каталог вводится в диалоговом окне.
"Отметить группу" - Отмечает группу файлов по маске в каталоге, открытом в активной панели. Аналог функции, вызываемой с помощью <+> на дополнительной клавиатуре.
"uNselect group" - Снимает отметку с группы файлов по маске в каталоге, открытом в активной панели. Аналог функции, вызываемой с помощью <-> на дополнительной клавиатуре.
"Инвертировать отметку" - Изменяет значение отметки для всех файлов в каталоге, открытом в активной панели. Аналог функции, вызываемой с помощью <*> на дополнительной клавиатуре.
"Выход" - завершает работу Midnight commander'а . Аналог функции, вызываемой по <F10> .
"Команда" - раздел меню, пункты которого вызывает дополнения и расширения Midnight commander'а, такие как:
"Дерево каталогов" - выводит на экран диалоговое окно с построенным деревом каталогов файловой системы. Выбрав каталог в дереве и нажав <Enter> Вы сможете сменить каталог в активной панели на выбранный.
"Поиск файла" - выводит на экран диалог, в котором можно указать параметры искомого файла:
От каталога - в каком каталоге искать файлы. Каталог можно ввести вручную или выбрать из дерева с помощью кнопки "Дерево".
Шаблон имени - в этой строке задается регулярное выражение, описывающее имя искомого файла.
Содержит текст – в эту строку вписывается последовательность символов, которая содержится внутри искомого файла. Установив галочку "Учет регистра" , Вы сможете учитывать регистр букв для введенного Вами значения.
После нажатия на <Enter> или кнопку "Дальше" начнется поиск файлов. Во время поиска и после его окончания Вы можете приостановить/продолжить или отменить поиск, просмотреть, отредактировать найденные файлы, вывести их в отдельную панель или перейти в каталог, содержащий подсвеченный файл.
"Переставить панели" - команда меняет местами правую и левую панели. Аналог функции, выполняемой по <Ctrl> + <U> .
"Отключить панели" - команда убирает/возвращает панели, показывая или скрывая экран shell.Аналог функции, выполняемой по <Ctrl> + <O> .
"Сравнить каталоги" - команда вызывает диалоговое окно. Скорее всего она не доработана разработчиками, и в существующей версии выполняет только выделение всех файлов в обоих панелях для того, чтобы увидеть их общий размер.
"Критерий панелизации" - этот пункт меню было бы правильнее назвать "перенаправление вывода на панель" позволяет Вам выполнить программу и отобразить вывод этой программы в активной панели. Например, если вы хотите отобразить в панели только символические ссылки, то Вы можете использовать пункт "Критерий панелизации" с командой find . -type l -print . На панели в результате поиска окажутся только символические ссылки. Проще говоря, это расширенный инструмент фильтра и поиска файлов.
"Размеры каталогов" - функция, позволяющая увидеть размеры каталогов (включая подкаталоги и входящие в них файлы). Функция довольно требовательная к ресурсам системы и занимающая относительно долгое время. После смены каталога информация о его размере потеряется.
"Burn to CD this dir" - записывает на CD текущий каталог.
"История команд" - выводит в диалоговом окне историю команд пользователя. Выбранная команда будет автоматически помещена в командную строку.
"Справочник каталогов" - служит для вывода списка условных меток для наиболее часто используемых каталогов. Этот список можно использовать для быстрого перехода в каталог. Пользуясь диалоговым окном, Вы также можете добавить, удалить или отредактировать метку. С помощью комбинации клавиш <Ctrl>+<x> <h> вы можете быстро добавить текущий каталог в список.
"Список активных ВФС" - показывает список открытых в данный момент виртуальных файловых систем ( FTP, NFS, Arhive и т.д.).
"Освободить ВФС сейчас" - завершить работу со всеми активными на текущий момент ВФС.
"Фоновые задания" - открывает диалоговое окно, с помощью которого пользователь может управлять (остановить, возобновить, снять) фоновыми заданиями.
"Восстановление файлов" - эта команда позволяет восстановить удаленные ранее файлы, но только в том случае если Вы используете файловую систему Ext2 с установленными свойствами по восстановлению файлов.
"Файл расширений" - позволяет просмотреть и отредактировать действия, выполняемые Midnight commander'ом при выборе и активации файла в зависимости от его расширения.
"Файл меню" - позволяет редактировать меню пользователя, вызываемое по нажатию <F2> .
"Правка меню редактора" - редактирование функционального меню встроенного редактора.
"Файл синтаксиса" - позволяет редактировать файл, отвечающий за подсветку синтаксиса в редактируемом файле.
"Настройки" - раздел меню, с помощью которого Вы сможете изменить поведение Midnight commander'а , задав соответствующие настройки.
"Конфигурация" - Данный пункт меню позволяет изменить наиболее важные, основные параметры работы программы, такие как основные параметры панелей, выполнения программ и др.
"CD Burning config" - настройки записи на CD, такие как скорость записи, поддержка мультисессий, используемая ФС.
"Внешний вид" - позволяет настроить внешний вид панелей, меню, строки подсказки, статуса, подсветку файлов в зависимости от типа и т.д.
"Подтверждение" - выводит диалог, в котором пользователь может задать, на какое действие выводить окно запроса подтверждения, а на какое – нет.
"Биты символов" - позволяет выбрать кодировку, используемую для вывода символов, и также разрядность (7 или 8 бит) для таблицы символов.
"Распознавание клавиш" - позволяет определить, какая escape-последовательность для вашего терминала какой клавише соответствует.
"Виртуальные ФС" - настройка параметров виртуальных файловых систем, таких как таймауты, прокси и т.д.
"Сохранить настройки" - сохраняет сделанные вами изменения в настройках в файле конфигурации, для того чтобы все они остались в действии при следующем запуске программы.