Каждый компьютер, на котором работает UNIX, предоставляет возможность зарегистрироваться и получить доступ к системе нескольким пользователям одновременно. Даже если в распоряжении всех пользователей есть только один монитор и одна системная клавиатура, эта возможность небесполезна: одновременная регистрация в системе нескольких пользователей позволяет работать по очереди без необходимости каждый раз завершать все начатые задачи и затем возобновлять их. Также можно зарегистрироваться в системе несколько раз под одним и тем же входным именем. Таким образом, можно получить доступ к одним и тем же ресурсам и организовать параллельную работу над несколькими задачами.
Характерный для современных версий UNIX способ организации параллельной работы пользователей – виртуальные консоли. Виртуальные консоли (virtual console) – это несколько параллельно выполняемых операционной системой программ, предоставляющих пользователю возможность зарегистрироваться в системе в текстовом режиме и получить доступ к командной строке (см. Рисунок 3.2, «Виртуальные и графические консоли»).
В операционной системе Linux переключение между виртуальными консолями в текстовом режиме производится с помощью комбинации клавиш Alt-F1, Alt-F2 и т.п. При этом каждая виртуальная консоль обозначается специальным именем: «tty1», «tty2» и т.д. С каждым сочетанием связана соответствующая по номеру виртуальная консоль. Каждая из таких консолей связано с собственным терминалом, который характеризуется файлом устройства с соответствующим именем (например, /dev/tty1).
Современные версии UNIX предоставляют пользователям графические пользовательские интерфейсы, которые также дают возможность работы в командной строке. Эта возможность достигается с помощью графических терминалов – специальных программ, которые эмулируют текстовый терминал в графическом окне.
Также существует возможность запуска нескольких графических подсистем, тогда переключение между ними будет осуществляться аналогично переключению между виртуальными консолями – комбинацией клавиш Ctrl-Alt-F1.
Рисунок 3.2. Виртуальные и графические консоли
Каждое устройство терминала имеет свои возможности по вводу и выводу информации. Примерами таких возможностей являются: число цветов отображения, способность перемещать курсор и изменять размер экрана, набор управляющих символов и т.п.. Терминалы разделяют по типам: набору возможностей, регламентированных в специальном конфигурационном файле. Примерами типов являются: tty (телетайп) или xterm (графический терминал). Тип терминала явно указан в имени устройства терминала (например, /dev/tty1). Все настройки типов терминалов находятся в директории /etc/termcap.
Формат командной строки
Приглашение
Командная строка состоит из приглашения и вводимой команды. Приглашение – это специальная последовательность символов, которая располагается в начале строки и задает начало области ввода команды. Рассмотрим пример выполнения команды:
Здесь приглашением является строка user@desktop ~ $, которая помимо символа начала ввода ($) содержит информацию об имени пользователя, имени компьютера и текущей директории.
Формат команды
Каждая команда UNIX состоит из следующих частей:
Имя команды
Идентификатор команды, совпадающий с именем программы, которая запускается для исполнения команды. Некоторые команды (такие как echo)являются встроенными для данной командной оболочки, и для их выполнения вызывается не программа, а внутренняя функция оболочки;
Параметры или ключи или флаги или опции
Команда может иметь один или несколько параметров, разделённых пробелом. Параметры могут состоять из одной буквы (-l ) или полнословными (например, --help). Однобуквенные параметры могут группироваться, например запуск команды ls -al эквивалентен запуску ls -a -l. Некоторые параметры состоят из имени и аргумента, например в команде grep -f access.log -n test имя файла access.log – часть параметра -f.
Аргументы
Некоторые команды могут иметь аргументы. Аргументом может являться текстовая строка, соответствующая имени файла или другого объекта. Аргументы также разделяются символом пробела, чтобы передать в качестве аргумента строку символов с пробелами, можно воспользоваться символами кавычек:
Стандартный ввод и вывод каждой команды может быть перенаправлен в файл. По умолчанию ввод и вывод команды связываются с пользовательским терминалом. Для указания источника ввода или назначения вывода (для обычной информации и для ошибок отдельно) используются специальные символы (<, > и >>).
Как правило, порядок данных частей команды должен быть именно таким, однако некоторые из них (кроме имени команды) могут отсутствовать.