Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)






Команды Unix и запуск программ



Общий синтаксис команд в Unix-подобных ОС выглядит следующим образом:

имя_команды [ключи ...] [параметры ...]

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

ls -l -a /home

состоит из:

- имени команды «ls», выводящей список файлов в заданном каталоге;

- ключа (модификатора) «l», указывающего, что нужно вывести подробный листинг;

- ключа «a», указывающего, что нужно выводить все файлы, включая служебные («дот файлы»);

- параметра «/home», задающего путь к каталогу.

В командах ОС Unix, их ключах и параметрах регистр букв (строчные или заглавные) различается. Для большей части команд характерна запись строчными буквами. Ключи во многих случаях могут объединяться в одну группу. Например, команда

ls -la /home

полностью эквивалентна рассмотренной выше. Команды разделяются на внутренние, которые выполняются командным процессором, и внешние. Внутренних команд обычно немного, а их состав и синтаксис могут зависеть от используемой командной оболочки. При использовании bash полный список и краткий синтаксис внутренних команд можно получить, набрав после приглашения команду «help». Внешние команды представляют собой запуск программ, независимых от оболочки. Для запуска программы простым указанием ее имени необходимо, чтобы путь к этой программе был указан в переменной среды PATH (аналог одноименной переменной среды в MSDOS). Если программа не найдена в каталогах, перечисленных в PATH, перед именем программы должен быть явно указан путь, даже если программа находится в текущем каталоге (хотя в современных Unix системах это уже не требуется). Например, запуск программы hello из текущего каталога может выглядеть так:

$ ./hello

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

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

$ echo $PATH

выражение $PATH будет заменено командным интерпретатором на содержимое переменной PATH. Учитывая, что действие команды echo заключается в выводе в стандартный поток вывода своего аргумента, то на экран попадет именно содержимое переменной среды PATH.



Изменение пароля

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

$ passwd

Changing password for alex

Old password:

New password:

Re-type new password:

$ _

Для выбора паролей существуют определенные правила. Основное требование состоит в том, что пароль не должен быть угадываемым. Не надо писать свое имя в обратном порядке, не следует составлять пароль из одинаковых или ряда соседних на клавиатуре букв и т. п. Пароль должен содержать минимум шесть-семь символов и включать необычные сочетания букв, цифр, дефисов и подчеркиваний. В современных системах предпочтительно использование длинных паролей из 12-ти и более символов. Многие реализации команды passwdпытаются определить пригодность нового пароля и выводят предупреждающие сообщения, если пароль неудачен. Типичным случаем, когда passwdможет проявить «недовольство» – ввод пароля только из строчных букв. Не следует думать, что вышеуказанные правила чрезмерны. Даже личный домашний компьютер при входе в сеть Internet через модемное соединение может стать видимым другим людям, которые могут попытаться поменять пароль или узнать пароль соединения с провайдером. Поэтому простой пароль может существенно упростить задачу злоумышленников и стоить «нерадивому» пользователю очень дорого.



Получение справочной информации

Системы Unix, как правило, поставляются с огромным количеством справочной информации в электронном виде. Справочная информация разбита на разделы по тематике. Нумерация разделов в разных системах может быть разной. Пожалуй, самая часто используемая информация содержится в разделе 1, где рассматриваются команды и прикладные программы, доступные рядовым пользователям системы. В пределах раздела справочные материалы организованы по так называемым «страницам» (manual page). Каждая такая страница содержит документацию по конкретной команде, функции, интерфейсу, протоколу и т. п. и в реальности может быть многостраничным документом. Для получения справочной информации можно использовать команду

man [раздел] [ключ]

Для получения справки по использованию команды или программы аргумент «ключ» должен быть именем соответствующей команды или программы. Параметр «раздел» может представлять собой цифру (или букву) номера раздела справочных руководств, в котором находится нужная страница документации. Отметим, что номер раздела указывать необязательно, т. к. при его отсутствии будет найден первый подходящий раздел, где встречена нужная тема. Чтобы получить справку об использовании самой команды man, проще всего ввести

$ man man

Существуют и другие полезные команды для работы со справочными руководствами. В частности, команда apropos [ключ] позволяет найти и вывести перечень тех страниц руководств, которые содержат в строке краткого пояснения заданное ключевое слово ключ. Справочная информация manдоступна только для внешних команд. Для получения подсказки по внутренним командам оболочки необходимо использовать команду help, например

$ help cd

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

Команда изменения текущего каталога:

cd [имя каталога]

Если команда cd вызвана без аргументов, текущим каталогом станет домашний каталог пользователя. Чтобы вывести на экран полное имя текущего каталога, нужно использовать команду pwd без аргументов. Команда

ls [имя_каталога]

позволяет получить листинг указанного каталога. Если имя каталога не указано, то будет выведен листинг текущего каталога. У команды lsесть несколько полезных ключей

l – вывести полную информацию о каждом файле;

a – вывести листинг всех файлов, включая такие, имена которых начинаются с символа точки.

Команды mkdirи rmdirпозволяют, соответственно, создать или удалить указанный каталог

mkdir [имя каталога]

rmdir [имя каталога]

Команда просмотра файлов lessпозволяет просматривать файлы произвольного размера и перемещаться по их содержимому с помощью клавиш управления курсором (для выхода используется клавиша «q»)

less [имя файла]

Команда копирования файлов

cp [источник] [приемник]

Команда перемещения или переименования файлов

mv [источник] [приемник]

Команда удаления файлов

rm [имя файла]

С командами cp и rm может использоваться ключ «r», позволяющий копировать, перемещать или удалять каталоги со всем их содержимым рекурсивно. Для полной информации о перечисленных командах, их аргументах и вариантах их использования можно обратиться к страницам руководства пользователя (команда man).

Стандартные потоки ввода-вывода

С каждой программой, запускаемой из командной строки Unix, связаны три стандартных потока данных:

- стандартный поток ввода (stdin);

- стандартный поток вывода (stdout);

- стандартный поток ошибок (stderr).

Программы, требующие входных данных, обычно читают информацию из стандартного потока ввода. Например, команда wcподсчитывает количество строк, слов и символов во входных данных. Если запустить эту команду без аргументов, то wcбудет ожидать входных данных с терминала (чтобы закончить ввод данных, нужно нажать комбинацию клавиш Ctrl-D):

$ wc

two words

<Ctrl-D>

1 2 10

В данном примере программа wc прочитала введенный пользователем текст из стандартного потока ввода (куда пользователь ввел текст «two words»). По умолчанию этот поток соединен с терминалом (с клавиатурой) пользователя, но допускается его перенаправление. Чтобы связать данные стандартного входного потока с произвольным файлом, можно использовать операцию перенаправления «<», например:

$ wc < /etc/passwd

28 37 1052

В данном случае команда wcуже не требует ввода с клавиатуры, т. к. она уже получила входные данные из файла /etc/passwd. Заметим, что данная команда может иметь практическое применение – первая цифра означает количество строк в файле /etc/passwd, что соответствует количеству пользователей, зарегистрированных в системе. Стандартный поток вывода – это поток, куда программы записывают выходные данные. В предыдущем примере команда wcвыводила результат (три числа) именно в этот поток. Так же работают и большинство других неинтерактивных команд (включая echo, pwdи ls, рассмотренные выше). Подобно стандартному потоку ввода выходной поток изначально связан с терминалом и также допускает перенаправление. Для связывания стандартного потока вывода с файлом используется операция «>», например:

$ ls > filelist.txt

В этом примере команда ls, вместо того, чтобы вывести список файлов на экран, записала его в файл с именем «filelist.txt». При этом, если файл с таким именем не существовал, он будет создан, в противном случае его старое содержимое будет потеряно. Существует и другая возможность перенаправления вывода, когда новые выходные данные будут дописаны в конец существующего файла. Для этого используется операция «>>». В следующем примере текущие дата и время будут дописаны в конец файла с именем «dates.txt»:

$ date >> dates.txt

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

$ ls -l /home/ftp/bin/

ls: /home/ftp/bin/: Access denied

В данном случае команда ls вывела сообщение в поток стандартной ошибки. Чтобы перенаправить его в указанный файл, можно использовать операции «2>» и «2>>» (по аналогии с «>» и «>>», только цифра 2 говорит о том, что нужно перенаправить поток ошибок), например:

$ ls -l /home/ftp/bin/ 2> last-error.txt

Операции перенаправления ввода-вывода можно комбинировать, например:

$ wc < /etc/passwd 2>> errors.txt > result.txt

Существует другой полезный способ перенаправления ввода- вывода – конвейеры команд. Операция «|» (знак вертикальной черты) позволяет перенаправить стандартный поток вывода одной команды на стандартный входной поток другой команды:

$ ls -l /etc | less

В этом примере команда lsвыводит длинный список файлов в каталоге /etc, эти данные попадают на вход программы less, которая позволяет пролистывать текст с помощью клавиш управления курсором. Так осуществляется «объединение» двух независимых команд в один «конвейер». Рассмотрим более сложный пример формирования конвейера команд. Пусть нам требуется получить в файле «bash-users.txt»отсортированный список пользователей в системе, пользующихся командной оболочкой bash. Этого можно было бы добиться использованием нескольких команд, сохраняя промежуточные данные во временных файлах (комментарии к командам оболочки приведенные после знака #)

$ grep 'bash' /etc/passwd > list1.tmp

# Поиск по заданному шаблону «bash» в файле /etc/passwd

$ sort < list1.tmp > list2.tmp

# Сортировка по алфавиту данных из файла list1.tmp и запись в list2.tmp

$ cut -f1 -d: < list2.tmp > bash-users.txt

#Выделение первых полей строк по разделителю :

# и запись в файл bash-users.txt

$ rm list1.tmp list2.tmp

# Удаление временных файлов

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

$ grep 'bash' /etc/passwd | sort | cut -f1 -d: > bash-users.txt

Заметим, что команды типа sort или cut часто называют фильтрами. Фильтры получают данные из стандартного входного потока, преобразовывают их и выводят в стандартный поток вывода.

Завершение работы с Unix

Каждый сеанс работы с ОС Unix должен заканчиваться вводом команды logout. Также можно использовать комбинацию клавиш Ctrl- D, которая позволяет выполнить команду завершения работы с командной оболочкой, после чего система переходит в режим ожидания регистрации следующего пользователя. Если сеанс работы производился с удаленной машины с использованием протоколов telnet или ssh, то завершение работы командной оболочки вызывает разрыв соединения.


Эта страница нарушает авторские права

allrefrs.ru - 2018 год. Все права принадлежат их авторам!