Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
07.06.2015
Размер:
326.14 Кб
Скачать
      1. Автодополнение

Кроме того, в консоли существует такая вещь, как автодополнение. Она полезна в тех случаях, когда необходимо набрать длинную команду или написать имя файла, содержащее много символов, которые необходимо экранировать. Работает она очень просто. При наборе части команды необходимо нажать [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/

      1. Специальные символы и их экранирование

Ряд символов в командах являются специальными символами. Это значит, что они не передаются запускаемой программе или обработчику внутренней команды 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.

        1. Вывод результата работы в файл

Скорее всего, вам когда-нибудь придется записать весь вывод команды в файл. Сделать это просто: команда >имя файла

Например:

#Найти все строки, содержащие подстроку "loruser" в файле /etc/passwd

#и записать их в файл "myfile" в директории "Документы" в домашней директории.

grep loruser /etc/passwd >~/Документы/myfile

При этом учтите, что каждая программа имеет два потока вывода: стандартный поток вывода и поток ошибок. Программа сама определяет, какие сообщения в какой поток выводить. Если вы перенаправите только поток вывода, то ошибки не будут записаны в файл, а будут показаны на экране (и наоборот). Для перенаправления потока ошибок используйте такой синтаксис: команда 2>имя файла

Можно направить в файлы оба потока:

команда >файл_для_вывода 2>файл_для_ошибок

Пример:

grep loruser /etc/passwd >~/Документы/myfile 2>~/Документы/myerrors

При перенаправлении вывода или ошибок в файл файл будет полностью перезаписан (или создан, если его нет). Даже если ничего не будет выведено, файл будет перезаписан и заменен пустым.

Чтобы дописать вывод в конец файла, сохранив предыдущее содержимое, используйте двойной знак "больше" вместо одинарного. То есть:

команда >>файл #Для вывода

команда 2>>файл #Для ошибок

Соседние файлы в папке 2курсИБ(ОС)