- •Лабораторная работа № 2 : Знакомство с процессором командного языка ос семейства Linux. Командные файлы.
- •Что такое «консоль»
- •Как запустить консоль
- •Как работать в консоли
- •Подсказка (prompt)
- •Как устроена команда
- •Примеры простых команд
- •Текущий каталог и относительные пути
- •А где мой диск c:?
- •Автодополнение
- •Специальные символы и их экранирование
- •Вывод результата работы в файл
- •Ввод из файла
- •Последовательное выполнение команд (символ ;)
- •Получение справки по командам
- •Некоторые команды shell
- •Очистка экрана
- •Чтобы очистить экран терминала нужно применить команду clear.
- •Mkdir — создание каталога
- •Команда cat так же позволяет создать файл. Например:
- •Виды ссылок в Linux
- •Что такое индексный дескриптор?
- •Какие ссылки бывают жесткими?
- •Сколько имен у файла?
- •В чем "мягкость" мягких ссылок?
- •Ссылка – это не копия!
- •Создание ссылок в Linux
- •Управление пользователями в Linux
- •Разделение прав и о работе под рутом
- •Пользователи с точки зрения Linux
- •Создание новых пользователей
- •Удаление пользователей
- •Установка атрибутов пользователя
- •Группы пользователей
- •Виды прав доступа
- •Краткий справочник команд http://hpc.Icc.Ru/documentation/cmnds.Pdf
Автодополнение
Кроме того, в консоли существует такая вещь, как автодополнение. Она полезна в тех случаях, когда необходимо набрать длинную команду или написать имя файла, содержащее много символов, которые необходимо экранировать. Работает она очень просто. При наборе части команды необходимо нажать [TAB] один или два раза и консоль либо дополнит команду/имя файла, либо выдаст список для уточнения.
[20:41:52][alex][~]: cd /home/alex/Ра
[TAB]
[20:41:52][alex][~]: cd /home/alex/Рабочий\ стол/
Однократное нажатие [TAB] дополнит имя программы/файла в том случае, если его уже можно определить однозначно. Двойное нажатие выведет список возможных "продолжений" команды:
[20:41:52][alex][~]: ls /usr/share/ic
[TAB][TAB]
iceweasel/ icons/
Специальные символы и их экранирование
Ряд символов в командах являются специальными символами. Это значит, что они не передаются запускаемой программе или обработчику внутренней команды shell'а, а обрабатываются ДО ТОГО, как команда будет выполнена. То есть специальные символы управляют самим shell'ом. В число таких символов входят:
` ~ ! @ # $ % ^ & * ( ) _ — [ ] { } : ; ' " / \ > <
Если вы хотите, чтобы shell не обрабатывал по-особому специальный символ, а обрабатывал его как обычный символ, то его нужно экранировать. Есть три способа это сделать:
1. Поставить обратный слэш (\) перед специальным символом (по-английски этот метод называется escape). Сам обратный слэш, соответственно, тоже является специальным символом, и его можно так же экранировать (т.е. поставить два слэша: \\). Например:
grep lucky\*star my\ file #Ищем строку lucky*star в файле my file
Обратный слэш перед обычным, не специальным символом будет просто проигнорирован.
2. Заключить команду или часть команды со специальными символами в двойные кавычки ("). По-английски этот метод называется quote. Двойные кавычки экранируют большинство специальных символов, но не все. Остальные спец. символы внутри двойных кавычек можно экранировать обратным слэшем. Пример:
grep "lucky*star" "my file" #Аналогично предыдущей команде
Обратный слэш внутри двойных кавычек перед обычным символом или символом, который и без него экранируется в двойных кавычках, будет обработан как экранированный слэш. Но его можно и эксплицитно экранировать. Это значит, что команды echo "hello, \slash" и echo "hello, \\slash" выведут на экран одно и то же: hello, \slash.
3. Заключить команду или часть команды в одинарные кавычки (по-английски этот метод тоже называется quote). Они экранируют все специальные символы. Пример:
#Найти строку $1000 в файле my income
grep '$1000' "my income"
#Символ '$' не экранируется двойными кавычками, а одинарными — экранируется.
Обратный слэш внутри двойных кавычек всегда считается экранированным. Команда echo 'hello, \\slash' выведет на экран hello, \\slash.
Вывод результата работы в файл
Скорее всего, вам когда-нибудь придется записать весь вывод команды в файл. Сделать это просто: команда >имя файла
Например:
#Найти все строки, содержащие подстроку "loruser" в файле /etc/passwd
#и записать их в файл "myfile" в директории "Документы" в домашней директории.
grep loruser /etc/passwd >~/Документы/myfile
При этом учтите, что каждая программа имеет два потока вывода: стандартный поток вывода и поток ошибок. Программа сама определяет, какие сообщения в какой поток выводить. Если вы перенаправите только поток вывода, то ошибки не будут записаны в файл, а будут показаны на экране (и наоборот). Для перенаправления потока ошибок используйте такой синтаксис: команда 2>имя файла
Можно направить в файлы оба потока:
команда >файл_для_вывода 2>файл_для_ошибок
Пример:
grep loruser /etc/passwd >~/Документы/myfile 2>~/Документы/myerrors
При перенаправлении вывода или ошибок в файл файл будет полностью перезаписан (или создан, если его нет). Даже если ничего не будет выведено, файл будет перезаписан и заменен пустым.
Чтобы дописать вывод в конец файла, сохранив предыдущее содержимое, используйте двойной знак "больше" вместо одинарного. То есть:
команда >>файл #Для вывода
команда 2>>файл #Для ошибок